Fork me on GitHub

实验二:结构化分析与设计

| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/ |

|----------------------- |------------------------------|

| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/homework/11540 |

| 这个作业的目标 | <(1)掌握结构化的需求分析方法;

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

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

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

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

| 学号 | <3190704106> |
二.实验内容

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

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

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

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

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

【实例1】机票预订系统

参考:

(1)携程网:https://flights.ctrip.com/international/search/domestic

(2)去哪儿:https://www.qunar.com/?ex_track=auto_4e0d874a

为了方便旅客,某航空公司拟开发一个机票预定系统。旅行社把预定机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行

时间、旅行目的地等)输入该系统,系统为旅客安排航班,旅客在飞机起飞前一天凭取票通知和账单交款取票,系统核对无误即印出

机票给顾客

分层数据流图:

E-R图:

数据流状态转换图:

数据字典:

软件结构图:

程序设计功能实现(C语言)
页首:

flightnode *p=h->next;
char flight_num[10],start_time[10],end_time[10];
char a;
printf("\t\t************航线信息修改*************\n\n");
printf("\t\t*************************************\n\n");
printf("\t\t* 增加航班-------1 *\n\n");
printf("\t\t* 删除航班-------2 *\n\n");
printf("\t\t* 修改航班时间---3 *\n\n");
printf("\t\t*************************************\n\n");
printf("\t\t请选择:");
a=getch();
顾客订票界面:

else if(a'2')
{
printf("\t\t请输入起飞城市:");
scanf("%s",start_place);
printf("\t\t请输入抵达城市:");
scanf("%s",end_place);
place_check(p,start_place,end_place);
}
查询界面:

int order_num_check(passengerList *PList,int order_num)
{
passengernode *p=PList->head->next;
printf("%-8s%-20s%-20s%-10s%-8s%\n","订单号","姓名","证件号","航班号","订票数量");
for(;p!=NULL;p=p->next)
{
if(p->order_num
order_num)
{
printf("%-8d%-20s%-20s%-10s%-8d%\n",p->order_num,p->name,p->ID_num, p->flight_num,p->ticket_num);
return 1;
}
}
printf("\t\t抱歉,没有订单号为%d的订单信息!\n",order_num);
return 0;
}
退票界面:

void check_all_passenger(passengerList *PList)
{
passengernode *p=PList->head->next;
int m=0;
printf("%-8s%-20s%-20s%-10s%-8s%\n","订单号","姓名","证件号","航班号","订票数量");
for(;p!=NULL;p=p->next)
{
printf("%-8d%-20s%-20s%-10s%-8d%\n",p->order_num,p->name,p->ID_num, p->flight_num,p->ticket_num);
m=1;
}
if(m==0)
printf("\t\t订单信息为空!\n");
}

航线增加(航空公司)

void modify_flight(flightnode &h,passengerList &PList)
{
flightnode p=h->next;
char flight_num[10],start_time[10],end_time[10];
char a;
printf("\t\t
航线信息修改\n\n");
printf("\t\t
\n\n");
printf("\t\t
增加航班-------1 \n\n");
printf("\t\t
删除航班-------2 \n\n");
printf("\t\t
修改航班时间---3 \n\n");
printf("\t\t
****\n\n");
printf("\t\t请选择:");
a=getch();
printf("%c\n",a);
if(a'1')
add_flight(h);
else if(a
'2')
delete_flight(h,PList);
else if(a'3')
{
printf("\t\t请输入要修改的航班的航班号:");
scanf("%s",flight_num);
if(flight_num_check(p,flight_num)
1)
{
printf("\t\t请输入修改后的起飞时间:");
scanf("%s",start_time);
printf("\t\t请输入修改后的抵达时间:");
scanf("%s",end_time);
for(;p!=NULL;p=p->next)
if(strcmp(flight_num,p->flight_num)==0)
{
strcpy(p->start_time,start_time);
strcpy(p->end_time,end_time);
printf("\t\t航班%s时间修改成功!\n",flight_num);
}
}
}
else
return;
}
四.思考题

(1)简述需求说明书,概要设计,详细设计说明书的主要内容。
需求说明书是为了使用户和软件开发者双方对该软件的初始规定有一个共同的理解,使之成为整个开发工作的基础而编制的,其主
要包括了细化到适当层次的数据流图、数据字典和黑盒形式的算法描述等内容;概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软
件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人
机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。显然,概要设计建立的是目标系统的逻辑模型,与计算
机无关;详细设计说明书的关键任务是确定怎样具体地实现用户需要的软件系统,也就是要设计出程序的“蓝图”。除了保证软件的可靠性之外,使
将来编写的程序可读性好、易于理解、易于测试、易于修改和维护,是详细设计阶段最重要的目标。
(2)结构化分析方法与面向对象分析方法有无本质上的不同?
两种方法不是对立的,有谁先进过时之说,在项日中结合使用恰当的解决题才是根本性的问题,在运用时应关运方法的成本和价,如果软目较小、
系统分析能力足高的,用结构化方好,如系需变化较,内部逻关系较复,用性要求较高,可采用离向象的方法
(3)对数据流图进行审查有何意义?
1、便于用户表达功能需求和数据需求及其联系;
2、便于两类人员共同理解现行系统和规划系统的框架;
3、清晰表达数据流的情况;
4、有利于系统建模。

posted @ 2020-12-07 17:22  serin  阅读(198)  评论(0)    收藏  举报