實(shí)驗(yàn)二 結(jié)構(gòu)化分析與設(shè)計(jì)
這個(gè)作業(yè)屬于哪個(gè)課程: https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/
這個(gè)作業(yè)要求在哪里: https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/homework/11540
姓名:馬智強(qiáng) 學(xué)號(hào):3190704202
這個(gè)作業(yè)的目標(biāo) :
(1)掌握結(jié)構(gòu)化的需求分析方法;
(2)掌握分層數(shù)據(jù)流圖的繪制、數(shù)據(jù)字典和加工說明的編制;
(3)掌握數(shù)據(jù)流圖映射為軟件結(jié)構(gòu)圖的方法;
(4)掌握需求說明書和設(shè)計(jì)說明。書的主要內(nèi)容,學(xué)習(xí)軟件需求說明書和設(shè)計(jì)說明書的編寫;
(5)掌握測(cè)試的基本方法。
二.實(shí)驗(yàn)內(nèi)容
(1)參考一個(gè)熟悉的系統(tǒng),如,機(jī)票預(yù)訂系統(tǒng)/教材訂購系統(tǒng)/ATM自動(dòng)取款機(jī),討論其用戶需求、系統(tǒng)需求和業(yè)務(wù)需求;
(2)繪制系統(tǒng)的分層數(shù)據(jù)流圖,并給出數(shù)據(jù)字典;
(3)將系統(tǒng)的分層數(shù)據(jù)流圖映射為軟件結(jié)構(gòu)圖,繪制軟件結(jié)構(gòu)圖;
(4)為關(guān)鍵模塊進(jìn)行詳細(xì)設(shè)計(jì),如繪制關(guān)鍵模塊的流程圖;
(5)實(shí)現(xiàn)系統(tǒng)部分功能并測(cè)試。
【實(shí)例1】機(jī)票預(yù)訂系統(tǒng)
參考:
(1)攜程網(wǎng):https://flights.ctrip.com/international/search/domestic
(2)去哪兒:https://www.qunar.com/?ex_track=auto_4e0d874a
為了方便旅客,某航空公司擬開發(fā)一個(gè)機(jī)票預(yù)定系統(tǒng)。旅行社把預(yù)定機(jī)票的旅客信息(姓名、性別、工作單位、身份證號(hào)碼、旅行
時(shí)間、旅行目的地等)輸入該系統(tǒng),系統(tǒng)為旅客安排航班,旅客在飛機(jī)起飛前一天憑取票通知和賬單交款取票,系統(tǒng)核對(duì)無誤即印出
機(jī)票給顧客
分層數(shù)據(jù)流圖:

數(shù)據(jù)流狀態(tài)轉(zhuǎn)換圖:

數(shù)據(jù)字典:

軟件結(jié)構(gòu)圖:

程序設(shè)計(jì)功能實(shí)現(xiàn)
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 修改航班時(shí)間---3 \n\n");
printf("\t\t**\n\n");
printf("\t\t請(qǐng)選擇:");
a=getch();
顧客訂票界面:
else if(a'2')
{
printf("\t\t請(qǐng)輸入起飛城市:");
scanf("%s",start_place);
printf("\t\t請(qǐng)輸入抵達(dá)城市:");
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","訂單號(hào)","姓名","證件號(hào)","航班號(hào)","訂票數(shù)量");
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抱歉,沒有訂單號(hào)為%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","訂單號(hào)","姓名","證件號(hào)","航班號(hào)","訂票數(shù)量");
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 修改航班時(shí)間---3 \n\n");
printf("\t\t****\n\n");
printf("\t\t請(qǐng)選擇:");
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請(qǐng)輸入要修改的航班的航班號(hào):");
scanf("%s",flight_num);
if(flight_num_check(p,flight_num)1)
{
printf("\t\t請(qǐng)輸入修改后的起飛時(shí)間:");
scanf("%s",start_time);
printf("\t\t請(qǐng)輸入修改后的抵達(dá)時(shí)間:");
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時(shí)間修改成功!\n",flight_num);
}
}
}
else
return;
}
四.思考題
(1)簡(jiǎn)述需求說明書,概要設(shè)計(jì),詳細(xì)設(shè)計(jì)說明書的主要內(nèi)容
1.需求說明書是為了使用戶和軟件開發(fā)者雙方對(duì)該軟件的初始規(guī)定有一個(gè)共同的理解,使之成為整個(gè)開發(fā)工作的基礎(chǔ)而編制的,其主要包括了細(xì)化到適當(dāng)層次的數(shù)據(jù)流圖、數(shù)據(jù)字典和
黑盒形式的算法描述等內(nèi)容;
2.概要設(shè)計(jì)的主要任務(wù)是把需求分析得到的系統(tǒng)擴(kuò)展用例圖轉(zhuǎn)換為軟件結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。
3.詳細(xì)設(shè)計(jì)說明書的關(guān)鍵任務(wù)是確定怎樣具體地實(shí)現(xiàn)用戶需要的軟件系統(tǒng),也就是要設(shè)計(jì)出程序的“藍(lán)圖”。除了保證軟件的可靠性之外,使將來編寫的程序可讀性好、易于理解、易
于測(cè)試、易于修改和維護(hù),是詳細(xì)設(shè)計(jì)階段最重要的目標(biāo)。
(2)結(jié)構(gòu)化分析方法與面向?qū)ο蠓治龇椒ㄓ袩o本質(zhì)上的不同?
面向過程分析的實(shí)質(zhì)是分析出解決問題所需要的步驟,然后使用函數(shù)實(shí)現(xiàn)這些步驟,最后調(diào)用這些函數(shù)來解決這個(gè)問題;
而在面向?qū)ο笾胁皇菍⒊绦蚩闯梢幌盗羞^程或函數(shù)的集合,而是把程序看做是互相協(xié)作而又彼此獨(dú)立的對(duì)象的集合,每個(gè)對(duì)象就像一個(gè)微型程序,有自己的數(shù)據(jù)、操作、功能和目的;
而建立對(duì)象的目的不是為了完成一個(gè)步驟,而是為了描述整個(gè)事物在整個(gè)解決問題的步驟中的行為。
(3)對(duì)數(shù)據(jù)流圖進(jìn)行審查有何意義
1、便于用戶表達(dá)功能需求和數(shù)據(jù)需求及其聯(lián)系;
2、便于兩類人員共同理解現(xiàn)行系統(tǒng)和規(guī)劃系統(tǒng)的框架;
3、清晰表達(dá)數(shù)據(jù)流的情況;
4、有利于系統(tǒng)建模。
(4)給出一次完整的會(huì)議討論紀(jì)要,包括議題,最終結(jié)果。
這次雖然成果一般,但真切地感受到團(tuán)隊(duì)的重要性,眾人拾柴火焰高,當(dāng)幾個(gè)人全程配合認(rèn)真完成一個(gè)任務(wù)時(shí),真的可以學(xué)到很多。
posted on 2020-12-07 19:06 馬智強(qiáng) 閱讀(230) 評(píng)論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)