结构化分析与设计

这个作业属于哪个课程: https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/
这个作业要求在哪里: https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/homework/11540
姓名:宁海松
学号:3190704206
这个作业的目标 :
(1)掌握结构化的需求分析方法;
(2)掌握分层数据流图的绘制、数据字典和加工说明的编制;
(3)掌握数据流图映射为软件结构图的方法;
(4)掌握需求说明书和设计说明。书的主要内容,学习软件需求说明书和设计说明书的编写;
(5)掌握测试的基本方法。
二.实验内容

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

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

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

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

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

【实例1】机票预订系统

参考:

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

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

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

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

机票给顾客

分层数据流图:

数据流状态转换图:

数据字典:

软件结构图:

程序设计功能实现

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_numorder_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)简述需求说明书,概要设计,详细设计说明书的主要内容

1.需求说明书是为了使用户和软件开发者双方对该软件的初始规定有一个共同的理解,使之成为整个开发工作的基础而编制的,其主要包括了细化到适当层次的数据流图、数据字典和

黑盒形式的算法描述等内容;

2.概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。

3.详细设计说明书的关键任务是确定怎样具体地实现用户需要的软件系统,也就是要设计出程序的“蓝图”。除了保证软件的可靠性之外,使将来编写的程序可读性好、易于理解、易

于测试、易于修改和维护,是详细设计阶段最重要的目标。

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

面向过程分析的实质是分析出解决问题所需要的步骤,然后使用函数实现这些步骤,最后调用这些函数来解决这个问题;

而在面向对象中不是将程序看成一系列过程或函数的集合,而是把程序看做是互相协作而又彼此独立的对象的集合,每个对象就像一个微型程序,有自己的数据、操作、功能和目的;

而建立对象的目的不是为了完成一个步骤,而是为了描述整个事物在整个解决问题的步骤中的行为。

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

1、便于用户表达功能需求和数据需求及其联系;

2、便于两类人员共同理解现行系统和规划系统的框架;

3、清晰表达数据流的情况;

4、有利于系统建模。

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

这次虽然成果一般,但真切地感受到团队的重要性,众人拾柴火焰高,当几个人全程配合认真完成一个任务时,真的可以学到很多。

posted @ 2020-12-08 21:32  宁海松  阅读(139)  评论(0编辑  收藏  举报