zoukankan      html  css  js  c++  java
  • 结构化分析与设计(Visio)

    1. 作业信息

    这个作业属于哪个课程 软件工程
    这个作业要求在哪里 作业要求
    学号 3180701312

    2.实验目的

    (1)掌握结构化的需求分析方法;

    (2)掌握分层数据流图的绘制、数据字典和加工说明的编制;

    (3)掌握数据流图映射为软件结构图的方法;

    (4)掌握需求说明书和设计说明。书的主要内容,学习软件需求说明书和设计说明书的编写;

    (5)掌握测试的基本方法。

    3.实验内容

    (1)参考一个熟悉的系统,如,机票预订系统/教材订购系统/ATM自动取款机,讨论其用户需求、系统需求和业务需求;

    (2)绘制系统的分层数据流图,并给出数据字典;

    (3)将系统的分层数据流图映射为软件结构图,绘制软件结构图;

    (4)为关键模块进行详细设计,如绘制关键模块的流程图;

    (5)实现系统部分功能并测试。

    【实例】机票预订系统

    为了方便旅客,某航空公司拟开发一个机票预定系统。旅行社把预定机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入该系统,系统为旅客安排航班,旅客在飞机起飞前一天凭取票通知和账单交款取票,系统核对无误即印出机票给顾客

    4.实验步骤

    (1)复习结构化的分析与设计方法的主要过程;

    答:分析当前的情况,做出反映当前物理模型的 DFD;推导出等价的逻辑模型的 DFD;设计新的逻辑系统,生成数据字典和基元描述;建立人机接口,提出可供选择的目标系统物理模型的 DFD;确定各种方案的成本和风险等级,据此对各种方案进行分析;选择一种方案;建立完整的需求规约。

    (2)讨论系统存在的用户角色、工作流等;

    答:用户角色:旅行社旅客
    工作流:1.查询;2.订票;3.取票;4.退票

    (3)对关键功能绘制数据流图,给出数据字典,并反复讨论数据流的合理性;

    数据字典:
    取退票信息:姓名+性别+目的地+出发地+时间+航班+座次号
    来源:系统出票文件

    登录信息:姓名+密码
    来源:旅客旅行社

    订退票信息:身份证号+姓名+性别+出发地+目的地+时间
    来源:旅客旅行社

    航班信息:航班号+出发地+目的地+价格+剩余票数+时间
    来源:系统航班文件

    (4)对应数据流图,设计系统的功能结构图,关键模块的流程图;

    (5)选择对应的结构化程序设计语言,实现并测试部分功能模块

    源代码:实现查询功能,可以用航班号查询或目的地查询或出发地查询
    查询功能模块

    int find(struct airplane *a)
    {
    	int i;
    	char c;
    	while(1)
    	{
    		printf("*    请选择查询方式:   *
    ");
    		printf("   1.已知航班号查询;   
    ");
    		printf("   2.已知出发地查询;   
    ");
    		printf("   3.已知目的地查询;   
    ");
    		printf("   4.返回主菜单         
    ");
    		printf("请输入选项:");
    		scanf("%d",&i);
    		c=getchar();
    		switch(i)
    		{
    			case 1:
    				findair(a);
    				break;
    			case 2:
    				findstart(a);
    				break;
    			case 3:
    				findend(a);
    				break;
    			case 4:
    				return 0;
    			default:
    				printf("输入选项不存在,请重新输入!
    ");
    				break;
    		} 
    	}	
    }
    

    查询功能调用子程序

    //按航班号查询//
    int findair(struct airplane *a)
    {
    	int i,t;
    	struct airplane *r=NULL;
    	char s[8];
    	char c;
    	while(1)
    	{
    		r=a->front;
    		printf("请输入已知航班号:");
    		gets(s);
    		t=0;
    		while(r!=NULL)
    		{
    			if(strcmp(r->air,s)==0)
    			{
    				t=1;
    				printf("航班号	起点	终点	飞行日	起飞时间	到达时间	机型	价格	乘员定额	余票量
    ");
    				printf("%s	%s	%s	%s	%s		%s		%s	%d	%d		%d
    ",r->air,r->start,r->end,r->sche,r->time1,r->time2,r->mode,r->price,r->full,r->remain);
    				break;
    			}
    			else
    				r=r->front;
    		}
    		if(t==0)
    			printf("没有查询到此航班的信息!
    ");
    		printf("请选择  1.继续查询;2.退出;
    ");
    		printf("请输入选项(点击任意键,继续查询):");
    		scanf("%d",&i);
    		c=getchar();
    		switch(i)
    		{
    			case 2:
    				return 0;
    			default :
    				break;
    		}
    	}
    	
    }
    
    //按出发城市查询//
    int findstart(struct airplane *a)
    {
    	int i,t;
    	struct airplane *r=NULL;
    	char s[6];
    	char c;
    	while(1)
    	{	
    		r=a->front;
    		printf("请输入出发城市:");
    		gets(s);
    		t=0;
    		while(r!=NULL)
    		{
    			if(strcmp(r->start,s)==0)
    			{
    				if(t==0)
    				{
    					printf("航班号	起点	终点	飞行日	起飞时间	到达时间	机型	价格	乘员定额	余票量
    ");
    					t=1;
    				}	
    				printf("%s	%s	%s	%s	%s	%s	%s	%d	%d	%d
    ",r->air,r->start,r->end,r->sche,r->time1,r->time2,r->mode,r->price,r->full,r->remain);
    				r=r->front;
    			}
    			else
    				r=r->front;
    		}
    		if(t==0)
    			printf("没有查询到此航班的信息!
    ");
    		printf("请选择  1.继续查询;2.退出;
    ");
    		printf("请输入选项(点击任意键,继续查询):");
    		scanf("%d",&i);
    		c=getchar();
    		switch(i)
    		{
    			case 2:
    				return 0;
    			default :
    				break;
    		}
    	}
    }
    
    //按终点城市查询// 
    int findend(struct airplane *a)
    {
    	int i,t;
    	struct airplane *r=NULL;
    	char s[6];
    	char c;
    	while(1)
    	{
    		r=a->front;
    		printf("请输入终点城市:");
    		gets(s);
    		t=0;
    		while(r!=NULL)
    		{
    			if(strcmp(r->end,s)==0)
    			{
    				if(t==0)
    				{
    					printf("航班号	起点	终点	飞行日	起飞时间	到达时间	机型	价格	乘员定额	余票量
    ");
    					t=1;
    				}	
    				printf("%s	%s	%s	%s	%s	%s	%s	%d	%d	%d
    ",r->air,r->start,r->end,r->sche,r->time1,r->time2,r->mode,r->price,r->full,r->remain);
    				r=r->front;
    			}
    			else
    				r=r->front;
    		}
    		if(t==0)
    			printf("没有查询到此航班的信息!
    ");
    		printf("请选择  1.继续查询;2.退出;
    ");
    		printf("请输入选项(点击任意键,继续查询):");
    		scanf("%d",&i);
    		c=getchar();
    		switch(i)
    		{
    			case 2:
    				return 0;
    			default :
    				break;
    		}
    	}
    }
    

    运行截图:

    5.思考题

    (1)简述需求说明书,概要设计,详细设计说明书的主要内容。

    答:1、需求说明书是指在研究用户要求的基础上,完成可行性分析和投资效益分析以后,由软件工程师或分析员编写的说明书。它详细定义了信息流和界面,功能需求,设计要求和限制,测试准则和质量保证要求。它的作用是作为用户和软件开发人员达成的技术协议书,作为着手进行设计工作的基础和依据,系统开发完成以后,为产品的验收提供了依据
    2、概要设计说明书又可称系统设计说明书,这里所说的系统是指程序系统。编制的目的是说明对程序 系统的设计考虑,包括程序系统的基本处理流程、程序系统的组织结构、模块划分、功能分配、接口设计、运行设计、安全设计、数据结构设计和出错处理设计等,为程序的详细设计提供基础。
    3、详细设计说明书又可称程序设计说明书。编制目的是说明一个软件系统各个层次中的每一个程序 (每个模块或子程序)的设计考虑,如果一个软件系统比较简单,层次很少,本文件可以不单独编写,有关 内容合并入概要设计说明书。

    (2)结构化分析方法与面向对象分析方法有无本质上的不同?

    答:结构化分析方法注重于步骤,先分析出解决问题所需要的步骤,然后一步一步的去解决。而面向对象分析法则是将系统分为多个不同的对象,它们之间各种独立又相互牵引,每个对象负责实现自己的功能,然后相互之间进行信息传递,方法调用等来支撑起整个系统。综上:结构化是面向过程的方法,本质上不同于面向对象分析方法。

    (3)对数据流图进行审查有何意义?

    答:检查图中是否存在错误或不合理(不理想)的部分确保两大特性
    一致性:分层DFD中不存在矛盾和冲突。
    完整性:是否有遗漏的数据流、加工等。

    (4)给出一次完整的会议讨论纪要,包括议题,最终结果。

    讨论了飞机订票系统的工作流:最终结果如上图工作流。

  • 相关阅读:
    【七款炫酷的页面特效】
    【PHP环境-WampServer踩坑】
    【Elasticsearch在winodws系统启动报could not find java+闪退】
    【Vue-入门笔记-7】
    关于ios的光标和键盘回弹问题
    AES加密然后ajax传输数据
    文件进行MD5计算
    jqGrid 常用 总结 -2
    关于页面传参,decodeURI和decodeURIComponent
    js防抖和节流
  • 原文地址:https://www.cnblogs.com/Jean1225/p/14061666.html
Copyright © 2011-2022 走看看