軟件課程設(shè)計(jì)C語(yǔ)言設(shè)計(jì)火車票訂票系統(tǒng)之源代碼模擬數(shù)據(jù)庫(kù)功能需求分析 可行性分析

上傳人:da****ge 文檔編號(hào):63028761 上傳時(shí)間:2022-03-16 格式:DOC 頁(yè)數(shù):25 大?。?01.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
軟件課程設(shè)計(jì)C語(yǔ)言設(shè)計(jì)火車票訂票系統(tǒng)之源代碼模擬數(shù)據(jù)庫(kù)功能需求分析 可行性分析_第1頁(yè)
第1頁(yè) / 共25頁(yè)
軟件課程設(shè)計(jì)C語(yǔ)言設(shè)計(jì)火車票訂票系統(tǒng)之源代碼模擬數(shù)據(jù)庫(kù)功能需求分析 可行性分析_第2頁(yè)
第2頁(yè) / 共25頁(yè)
軟件課程設(shè)計(jì)C語(yǔ)言設(shè)計(jì)火車票訂票系統(tǒng)之源代碼模擬數(shù)據(jù)庫(kù)功能需求分析 可行性分析_第3頁(yè)
第3頁(yè) / 共25頁(yè)

下載文檔到電腦,查找使用更方便

16 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《軟件課程設(shè)計(jì)C語(yǔ)言設(shè)計(jì)火車票訂票系統(tǒng)之源代碼模擬數(shù)據(jù)庫(kù)功能需求分析 可行性分析》由會(huì)員分享,可在線閱讀,更多相關(guān)《軟件課程設(shè)計(jì)C語(yǔ)言設(shè)計(jì)火車票訂票系統(tǒng)之源代碼模擬數(shù)據(jù)庫(kù)功能需求分析 可行性分析(25頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、軟件課程設(shè)計(jì)--C語(yǔ)言設(shè)計(jì)火車票訂票系統(tǒng)之源代碼(模擬數(shù)據(jù)庫(kù)功能)(需求分析+可行性分析) 設(shè)計(jì)題目:火車訂票系統(tǒng) 小組成員: 指導(dǎo)教師: 完成時(shí)間: 一.需求設(shè)計(jì): 1.每條線路所涉及的信息有:起點(diǎn)、終點(diǎn)、站名、車次、、票價(jià)、時(shí)間、座位號(hào)。 2.作為示意系統(tǒng),全部數(shù)據(jù)可以只放在內(nèi)存中。 3.系統(tǒng)能實(shí)現(xiàn)的功能和操作如下: ①.查詢路線:根據(jù)旅客提出的終點(diǎn)站名輸入下列信息:車次、車站名。 ? ②.承辦訂票業(yè)務(wù):根據(jù)客戶提出的要求查詢?cè)撥嚧纹鳖~的情況,若尚有余票,則為客戶辦理訂票手續(xù),輸出座位號(hào);若已滿員或余票額少于訂票額,則需重新查詢客戶要求,若需要可登記排隊(duì)候補(bǔ)。

2、 ? ③.承辦退票業(yè)務(wù):根據(jù)客戶提供的情況(車次、時(shí)間、座位號(hào))為客戶辦理退票手續(xù),然后查詢?cè)撥嚧问欠裼腥伺抨?duì)候補(bǔ),首先詢問排在第一的客戶,若所退票額能滿足他的要求,則為他辦理訂票手續(xù),否則依次詢問其他排隊(duì)候補(bǔ)的客戶。 ? ④登記旅客情況:包括旅客姓名,性別,年齡,家庭住址,聯(lián)系方式等。 ? ⑤統(tǒng)計(jì)功能:將每次車的訂票,退票結(jié)果統(tǒng)計(jì)出來。 ? ⑥管理功能:列車管理員可以通過調(diào)用函數(shù)來查看車票極其用戶情況. ? ⑦.查詢功能:用戶可以查詢自己需要的車輛信息. 二.總體設(shè)計(jì) ? 1.程序流程圖: 按1鍵 ? 按2鍵 ? 按3鍵 ? 按4鍵 ? 進(jìn)入in函數(shù)

3、 ? 進(jìn)入book函數(shù) ? 進(jìn)入inquire函數(shù) ? 進(jìn)入cancel函數(shù) ? 按5鍵 ? 進(jìn)入you函數(shù) 2.總體設(shè)計(jì)說明: ①.數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì): 程序=數(shù)據(jù)結(jié)構(gòu)+算法,一個(gè)好的程序必定有一個(gè)好的數(shù)據(jù)結(jié)構(gòu).本設(shè)計(jì)主要考慮車票信息和用戶信息的數(shù)據(jù)結(jié)構(gòu). 車票信息采用半十字鏈表.橫向鏈表中的每一個(gè)結(jié)點(diǎn)包含以下內(nèi)容:車次,起始站,發(fā)車時(shí)間,指向下一個(gè)結(jié)點(diǎn)的指針,指向中途站的指針.縱向鏈表中每一個(gè)結(jié)點(diǎn)包含以下內(nèi)容:從始發(fā)站開始的依次到站,票價(jià),到達(dá)時(shí)間,是否已被購(gòu)買標(biāo)識(shí),才用mark標(biāo)識(shí),當(dāng)mark為1時(shí)車票已售出,當(dāng)mark為0時(shí)車票還未售出.以及指向下一個(gè)結(jié)點(diǎn)的指針.

4、縱向鏈表采用循環(huán)鏈表,尾指針指向首指針. 未購(gòu)票用戶信息使用隊(duì)列來保存,因?yàn)榭紤]到用戶會(huì)預(yù)訂票,所以把用戶以來訂票的時(shí)間早晚排在隊(duì)中.先來先買,后來后買.隊(duì)列中的每個(gè)元素包含以下內(nèi)容:用戶姓名,身份證號(hào)碼,想要購(gòu)票的車次,起始站,要到的站,時(shí)間. 已經(jīng)購(gòu)票用戶信息使用一個(gè)單鏈表來保存,鏈表中的沒個(gè)結(jié)點(diǎn)包含以下內(nèi)容:用戶姓名,身份證號(hào)碼,已購(gòu)車票的車次,出發(fā)時(shí)間,到達(dá)時(shí)間. 車票信息鏈表示意圖: 車次 ? 起始站 ? 發(fā)車時(shí)間 ? downn ? next ? 下一站名 ? 到站時(shí)間 ? 票價(jià) ? mark ? next ? 座位號(hào) 未購(gòu)票用

5、戶信息隊(duì)列: 用戶姓名 ? 購(gòu)票的車次 ? 起始站 ? 要到的站 ? 達(dá)到時(shí)間 用戶姓名 ? 購(gòu)票的車次 ? 起始站 ? 要到的站 ? 達(dá)到時(shí)間 注:座位號(hào)包含在車次號(hào)中 已購(gòu)票用戶信息鏈表示意圖: 用戶姓名 ? 身份證號(hào)碼 ? 已購(gòu)車票的車次號(hào) ? 出發(fā)時(shí)間 ? 到達(dá)時(shí)間 注:座位號(hào)包含在車次號(hào)中 ②算法的設(shè)計(jì): 主函數(shù): ??????? 利用case語(yǔ)句實(shí)現(xiàn)用戶界面,用戶輸入需要的服務(wù)的數(shù)字代碼,程序就會(huì)轉(zhuǎn)到相應(yīng)的函數(shù),實(shí)現(xiàn)相應(yīng)的功能。在主函數(shù)開始處做下First標(biāo)識(shí),以便在其他函數(shù)中使用goto語(yǔ)句返回主函數(shù)的用戶界面

6、。 ? In()函數(shù): ?????????? In()函數(shù)負(fù)責(zé)輸入各種信息,鏈表中車票信息的初始值. ? Book()函數(shù): ??????????? Book()函數(shù)負(fù)責(zé)訂票功能.主要是遍歷整個(gè)鏈表,查找到需要訂票的結(jié)點(diǎn)后修改其mark值. ? Inquire()函數(shù): ?????????????? Inquire()函數(shù)主要負(fù)責(zé)查詢功能.主要是遍歷整個(gè)鏈表查找到需要的結(jié)點(diǎn),然后輸出. ? Cancel()函數(shù): ????????????? Cancel()函數(shù)主要負(fù)責(zé)退票功能.主要是遍歷整個(gè)鏈表查找到需要的結(jié)點(diǎn),然后修改mark的值. ? You()函數(shù): ??

7、??????????? You()函數(shù)主要負(fù)責(zé)輸入用戶信息,主要是創(chuàng)建一個(gè)單鏈表,將用戶信息放入.并提供管理人員的查詢功能. ? Find()函數(shù): ????????????? Find()函數(shù)主要負(fù)責(zé)查詢用戶信息,遍歷整個(gè)單鏈表后,輸出需要的信息. Total()函數(shù): ????????????? Total()函數(shù)主要負(fù)責(zé)統(tǒng)計(jì)整個(gè)訂票系統(tǒng)的情況. ? ? 三.詳細(xì)設(shè)計(jì): ? 1. 主函數(shù): ? ①程序代碼: ? Main() { int *t; int c; First:? printf(“welcome to our ticket system!\n”)

8、; printf(“1.intput the data.\n”);????? /*按1鍵輸入數(shù)據(jù)*/ printf(“2.book the ticket.\n”);????? /*按2鍵訂車票*/ printf(“3.inquire the ticket.\n”);?? /*按3鍵查詢車票*/ printf(“4.cancel the ticket.\n”);??? /*按4鍵退車票*/ printf(“5.input your own data.\n”);? /*按5鍵輸入個(gè)人信息*/ scanf(“%d”,&c); switch(c) {case ‘1’: t=in();

9、break; ???????? case ‘2’: book(); break; ???????? case ‘3’: inquire(); break; ???????? case ‘4’: cancel(); break; ???????? case? ‘5’: you()?? ; break; default?? : printf(“you enter an error number\n”);}} ? ②功能說明: 通過printf語(yǔ)句,輸出提示用戶選擇的信息.用戶看到后,按下自己需要功能的代號(hào).然后程序進(jìn)入實(shí)現(xiàn)該功能函數(shù)完成用戶所需要的功能. 2. In()函數(shù):

10、①程序流程圖: 建立橫向鏈表頭結(jié)點(diǎn) ? 輸入m,n的值 ? For循環(huán),m是否為0 ? 否 ? 建立結(jié)點(diǎn) ? 向結(jié)點(diǎn)輸入數(shù)據(jù) ? For循環(huán),n是否為0 ? 否 ? 建立縱向結(jié)點(diǎn) ? 向結(jié)點(diǎn)輸入數(shù)據(jù) ? 是 ? 返回頭指針 ? Goto到用戶界面 ②程序代碼: ?struct ticket *in()????????????? /*一個(gè)返回指針形的函數(shù)*/ ??? { ??? struct ticket *head;???????????? /*頭結(jié)點(diǎn)*/ struct ticket *p1,*p2; struct station

11、 *s1,*s2; int m,n; int i; p1=p2=(struct ticket *)malloc(len);? /*建立橫向鏈表的頭結(jié)點(diǎn)*/ scanf("%d",&m);???????????? /*輸入一共所需的車票信息總數(shù)*/ scanf(“%d”,&n);?????????? /*輸入從始發(fā)站到終點(diǎn)站共有幾站*/ head=null; for(i=0;i<=m;i++) { p2->next=p1; p2=p1; p1=(struct ticket )*malloc(len);?? s1=s2=(struct ticket )*malloc(le

12、n);? /*建立縱向鏈表的頭結(jié)點(diǎn)*/ head1=s1=s2; p1->down=s1=s2;??????????????????? /*指向縱向鏈表的頭結(jié)點(diǎn)*/ scanf("%d","%d","%d",&p1->num,&p1->num2, &p1->time);? /*輸入橫向鏈表的數(shù)據(jù)*/ for(i=0;i<=n,i++) { s2->next=s2; s2=s1; s1=(struct ticket )*malloc(len);??? /*建立縱向鏈表*/ scanf(“%s”,“%d”,“%d”,“%d”,“%d”,s1->name,&s1->time,&s1

13、->money,&s1->seat,&s1->mark); }???????????????? /*輸入縱向鏈表的數(shù)據(jù)*/ s1->next=head1;?? /*縱向鏈表為循環(huán)鏈表*/ } p2->next=null; return(head);???? /*返回頭指針*/ goto first;?????? /*返回頭指針*/ } ③功能說明: 通過用戶輸入的數(shù)值,建立所需的結(jié)點(diǎn)數(shù)量.再輸入每個(gè)結(jié)點(diǎn)的具體數(shù)據(jù).使橫向鏈表的尾指針指向空,縱向鏈表的的尾指針指向頭指針.最后返回頭指針,再回到用戶界面. 3.Book()函數(shù): ①程序流程圖: 輸入需要的車次號(hào) ? 輸

14、入需要到達(dá)的車站名 ? While循環(huán)是否需要的車次 ? 是 ? 橫向結(jié)點(diǎn)值給o ? While循環(huán)是否是需要的車站名 ? 是 ? 使mark的值為1 ? 縱向結(jié)點(diǎn)值給s ? 縱向鏈表移針 ? 橫向鏈表移針 ? 當(dāng)橫向鏈表下一個(gè)指針為空時(shí) ? 輸出 s點(diǎn)的數(shù)據(jù) ? 輸出 o點(diǎn)的數(shù)據(jù) ? Mark是否為1 ? 錯(cuò)誤 ? 否 ? 是 ②程序代碼: void book() ? { struct ticket *p; struct station *q; int t; int *o,*s; printf(“please e

15、nter the number:”); scanf(“%d”,&f);?????? /*輸入需要的車次*/ printf(“please enter the station:”);? scanf(“%d”,&h);?????? /*輸入需要到達(dá)的車站名*/ p=t;?????? /*初始化p的值*/ while(p=!null) { if(p->number==t) { q=p->down; ? o=p;???????????? /*把符合條件的橫向鏈表結(jié)點(diǎn)的數(shù)據(jù)給o*/ while(q->next=!head1) { ?if(q->name==h) { if (

16、q->mark=1) printf(“your ticket is unused”); else q->mark=1;????? /*修改mark標(biāo)記*/ s=q;??????????? /*把符合條件的縱向鏈表的數(shù)據(jù)給s*/ } q=q->next;????? /*縱向鏈表移針*/ }} p=p->next;???? /*橫向鏈表移針*/ } printf(“your ticket has already booked!”); printf("%d","%d","%d",o->num,o->num2, o->time);? /*輸出橫向鏈表的數(shù)據(jù)*/ printf(

17、“%s”,“%d”,“%d”,“%d”,“%d”,s->name,&s->time,&s->money,&s->seat,&s->mark);?? /*輸出縱向鏈表的數(shù)據(jù)*/ goto first; } ③功能說明: 本函數(shù)主要是先遍歷橫向鏈表找到符合條件的結(jié)點(diǎn)后,轉(zhuǎn)向該點(diǎn)的縱向鏈表,遍歷縱向鏈表找到符合條件的結(jié)點(diǎn),讀出需要的數(shù)據(jù).并且修改mark標(biāo)記,使其成為已定車票.如果mark已經(jīng)為1則輸出錯(cuò)誤信息. 3.inquire()函數(shù): ①程序流程圖: 輸入需要的車次號(hào) ? 輸入需要到達(dá)的車站名 ? While循環(huán)是否已到空 ? 否 ? 是否是需要的車次 ?

18、 是 ? While循環(huán)是否已到頭指針 ? 否 ? 是否是需要的車站名 ? 是 ? 輸出所需的信息 ? 是 ? 是 ? 錯(cuò)誤 ? 移動(dòng)指針 ? 否 ? 否 ? ②程序代碼: void inquire() ? { struct ticket *p; struct station *q; int t; int *o,*s; printf(“please enter the number:”); scanf(“%d”,&f);?????? /*輸入需要的車次*/ printf(“please enter the station:”);

19、? scanf(“%d”,&h);?????? /*輸入需要到達(dá)的車站名*/ p=t;?????? /*初始化p的值*/ while(p=!null) { if(p->number==t) { q=p->down; ? o=p;???????????? /*把符合條件的橫向鏈表結(jié)點(diǎn)的數(shù)據(jù)給o*/ while(q->next=!head1) { ?if(q->name==h) { s=q;??????????? /*把符合條件的縱向鏈表的數(shù)據(jù)給s*/ } q=q->next;????? /*縱向鏈表移針*/ } } p=p->next;???? /*橫向鏈表

20、移針*/ } printf("%d","%d","%d",o->num,o->num2, o->time);? /*輸出橫向鏈表的數(shù)據(jù)*/ printf(“%s”,“%d”,“%d”,“%d”,“%d”,s->name,&s->time,&s->money,&s->seat,&s->mark);?? /*輸出縱向鏈表的數(shù)據(jù)*/ ? goto first; } ③功能說明: 本函數(shù)主要提供查詢功能.用戶輸入需要查詢的車次和需要到 車站名,程序首先遍歷橫向鏈表查找到需要的數(shù)據(jù)后轉(zhuǎn)向縱向鏈表,接著遍歷縱向鏈表,查找到需要的車站名.最后輸出所有關(guān)于本車次的所有信息. 4.Cance

21、l()函數(shù): ①程序流程圖: 輸入需要的車次號(hào) ? 輸入需要到達(dá)的車站名 ? While循環(huán)是否需要的車次 ? 是 ? 橫向結(jié)點(diǎn)值給o ? While循環(huán)是否是需要的車站名 ? 是 ? 使mark的值為0 ? 縱向結(jié)點(diǎn)值給s ? 縱向鏈表移針 ? 橫向鏈表移針 ? 當(dāng)橫向鏈表下一個(gè)指針為空時(shí) ? 輸出 s點(diǎn)的數(shù)據(jù) ? 輸出 o點(diǎn)的數(shù)據(jù) ②程序代碼; ?void? cancel() { ?struct ticket *p; struct station *q; int t; int *o,*s; printf(“please

22、 enter the number:”); scanf(“%d”,&f);?????? /*輸入需要的車次*/ printf(“please enter the station:”);? scanf(“%d”,&h);?????? /*輸入需要到達(dá)的車站名*/ p=t;?????? /*初始化p的值*/ while(p=!null) { if(p->number=t) { q=p->down; ? o=p;???????????? /*把符合條件的橫向鏈表結(jié)點(diǎn)的數(shù)據(jù)給o*/ while(q->next=!head1) { ?if(q->name=h) { q->m

23、ark=0;????? /*修改mark標(biāo)記*/ s=q;??????????? /*把符合條件的縱向鏈表的數(shù)據(jù)給s*/ } q=q->next;????? /*縱向鏈表移針*/ }} p=p->next;???? /*橫向鏈表移針*/ } printf(“your ticket has already cancel!”); printf("%d","%d","%d",o->num,o->num2, o->time);? /*輸出橫向鏈表的數(shù)據(jù)*/ printf(“%s”,“%d”,“%d”,“%d”,“%d”,s->name,&s->time,&s->money,&s->

24、seat,&s->mark);?? /*輸出縱向鏈表的數(shù)據(jù)*/ goto first; } ③功能說明: ??????????? 本函數(shù)主要提供退票功能.用戶輸入需要退票的車次和需要到車站名,程序首先遍歷橫向鏈表查找到需要的數(shù)據(jù)后轉(zhuǎn)向縱向鏈表,接著遍歷縱向鏈表,查找到需要的車站名.修改其mark標(biāo)識(shí)是其為0.最后輸出所有關(guān)于本車次的所有信息. 5. You()函數(shù): ①程序代碼: void you() ??? { ??? struct you *head; struct you *p; p=(struct you *)malloc(len); scanf("%d",&p

25、->name,&p->num,&p->num1,&p->time,&p->time1); } goto First; } ?? ②用戶查詢代碼:?? (注:本函數(shù)用于管理人員查詢用戶) void find() { struct you *head; struct you *p; int u; scanf(“%d”,&u); while(p=!null) { if(p->num=u) {s=p;} p=p->next; } printf(“%s”,”%d”,”%d”,”%d”,”%d”,p->name,p->num,p->num1,p->time,p->tim

26、e1); } ③功能說明: ??????????? 本函數(shù)用于用戶輸入個(gè)人信息,以便管理人員管理.而管理函數(shù)只面對(duì)管理人員使用,因此未在用戶界面上顯示出來. ? 6.統(tǒng)計(jì)模塊: void total() { int *p,*q; int n; p=t; while(p=!null) { ?while(q->next=!head1) { if (mark=1) ????? {n=n+1;} q=q->next; } ????? p=p->next; } printf(“the number of the booked ticket are :”);

27、printf(“%d”,n); ????? } 6.所用變量聲明: ①橫向鏈表結(jié)點(diǎn)的結(jié)構(gòu)體: struct ticket { int num; int num1; ?? int time; ?? struct ticket *next; ?? struct station *down; }; ??? int t; ②縱向鏈表結(jié)點(diǎn)的結(jié)構(gòu)體: ? struct station ? { ?? int name; ?? int time; ?? int money; ?? int mark; ?? struct station *next; } ③用戶信息鏈

28、表結(jié)點(diǎn)的結(jié)構(gòu)體: ? struct? you ? { ?? int name; ?? int num; ?? int num1; ?? int time; ?? int time1; ?? struct you *next; ?? } 四.程序說明書: ?????? 本系統(tǒng)用于火車站的車票管理.主要方便用戶訂票,也可方便管理人員管理車票.當(dāng)用戶看到用戶界面時(shí),可以根據(jù)提示選擇自己想要的服務(wù),選擇后按下回車鍵,程序便會(huì)轉(zhuǎn)到相應(yīng)的函數(shù)進(jìn)行.完成后,程序會(huì)顯示您已經(jīng)成功的訂票或退票.完成后程序會(huì)自動(dòng)回到起始位置. ?????? 管理人員也可以很方便的調(diào)用本系統(tǒng)包含的查詢和統(tǒng)計(jì)

29、函數(shù),管理車票情況. ??? 具體說明: ????? 1.提示程序操作者輸入預(yù)設(shè)的數(shù)據(jù). ????? 2.提示用戶進(jìn)行訂票操作. 3.提示用戶進(jìn)行查詢自己需要的車票的操作. 4.提示用戶進(jìn)行退票操作. 5.提示用戶輸入自己的相關(guān)信息. 五.程序調(diào)試: ?????? 本程序分為多模塊,為的是方便小組合作.所以各個(gè)功能都由函數(shù)調(diào)用來實(shí)現(xiàn).組員在各自的編制和調(diào)試中基本都實(shí)現(xiàn)所需的功能.但在聯(lián)調(diào)的過程中,由于我們使用了大量的傳遞指針形的函數(shù),所以在數(shù)值的傳遞上問題很多.分步執(zhí)行的時(shí)候指針的位置很亂!所以讓我們遺憾的是聯(lián)調(diào)并沒有成功.我們也會(huì)吸取教訓(xùn),在函數(shù)編制時(shí)注意數(shù)值的傳遞. 六.

30、運(yùn)行結(jié)果: 輸入: 2 ????? 3 ????? K717,Beijing,11:00 ????? Yuci,12:00,10,0,56 ????? Yangyuan,1:00,20,0,56 ????? Shijiazhuang,2:00,30,56 ? 輸入:k717 ???? shijiazhuang ? 輸出:you have already booked the ticket! ???? K717,shijiazhuang,11:00,3:00,30,56 ? ? ? ? ? ? 七.程序源代碼: ??? #include

31、> #include #define null 0 #define len sizeof(struct ticket) struct ticket { int num; int num1; ?? int time; ?? struct ticket *next; ?? struct station *down; }; ??? int t; struct station???????????????????????? /*公共變量聲明*/ ? { ?? int name; ?? int time; ?? int money; ?? int

32、 mark; ?? struct station *next; struct? you ? { ?? int name; ?? int num; ?? int num1; ?? int time; ?? int time1; ?? struct you *next; ?? } ? struct ticket *in()????????????? /*一個(gè)返回指針形的函數(shù)*/ ??? { ??? struct ticket *head;???????????? /*頭結(jié)點(diǎn)*/ struct ticket *p1,*p2; struct station *s1,*s

33、2; int m,n; int i; p1=p2=(struct ticket *)malloc(len);? /*建立橫向鏈表的頭結(jié)點(diǎn)*/ scanf("%d",&m);???????????? /*輸入一共所需的車票信息總數(shù)*/ scanf(“%d”,&n);?????????? /*輸入從始發(fā)站到終點(diǎn)站共有幾站*/ head=null; for(i=0;i<=m;i++) { p2->next=p1; p2=p1; p1=(struct ticket )*malloc(len);?? s1=s2=(struct ticket )*malloc(len);? /*

34、建立縱向鏈表的頭結(jié)點(diǎn)*/ head1=s1=s2; p1->down=s1=s2;??????????????????? /*指向縱向鏈表的頭結(jié)點(diǎn)*/ scanf("%d","%d","%d",&p1->num,&p1->num2, &p1->time);? /*輸入橫向鏈表的數(shù)據(jù)*/ for(i=0;i<=n,i++) { s2->next=s2; s2=s1; s1=(struct ticket )*malloc(len);??? /*建立縱向鏈表*/ scanf(“%s”,“%d”,“%d”,“%d”,“%d”,s1->name,&s1->time,&s1->money

35、,&s1->seat,&s1->mark); }???????????????? /*輸入縱向鏈表的數(shù)據(jù)*/ s1->next=head1;?? /*縱向鏈表為循環(huán)鏈表*/ } p2->next=null; return(head);???? /*返回頭指針*/ goto first;?????? /*返回頭指針*/ } ? void book() ? { struct ticket *p; struct station *q; int t; int *o,*s; printf(“please enter the number:”); scanf(“%d”,&f

36、);?????? /*輸入需要的車次*/ printf(“please enter the station:”);? scanf(“%d”,&h);?????? /*輸入需要到達(dá)的車站名*/ p=t;?????? /*初始化p的值*/ while(p=!null) { if(p->number==t) { q=p->down; ? o=p;???????????? /*把符合條件的橫向鏈表結(jié)點(diǎn)的數(shù)據(jù)給o*/ while(q->next=!head1) { ?if(q->name==h) { if (q->mark=1) printf(“your ticket is

37、 unused”); else q->mark=1;????? /*修改mark標(biāo)記*/ s=q;??????????? /*把符合條件的縱向鏈表的數(shù)據(jù)給s*/ } q=q->next;????? /*縱向鏈表移針*/ }} p=p->next;???? /*橫向鏈表移針*/ } printf(“your ticket has already booked!”); printf("%d","%d","%d",o->num,o->num2, o->time);? /*輸出橫向鏈表的數(shù)據(jù)*/ printf(“%s”,“%d”,“%d”,“%d”,“%d”,s->name,&

38、s->time,&s->money,&s->seat,&s->mark);?? /*輸出縱向鏈表的數(shù)據(jù)*/ goto first; } ? ? void inquire() ? { struct ticket *p; struct station *q; int t; int *o,*s; printf(“please enter the number:”); scanf(“%d”,&f);?????? /*輸入需要的車次*/ printf(“please enter the station:”);? scanf(“%d”,&h);?????? /*輸入需要到達(dá)的車

39、站名*/ p=t;?????? /*初始化p的值*/ while(p=!null) { if(p->number==t) { q=p->down; ? o=p;???????????? /*把符合條件的橫向鏈表結(jié)點(diǎn)的數(shù)據(jù)給o*/ while(q->next=!head1) { ?if(q->name==h) { s=q;??????????? /*把符合條件的縱向鏈表的數(shù)據(jù)給s*/ } q=q->next;????? /*縱向鏈表移針*/ } } p=p->next;???? /*橫向鏈表移針*/ } printf("%d","%d","%d",o->n

40、um,o->num2, o->time);? /*輸出橫向鏈表的數(shù)據(jù)*/ printf(“%s”,“%d”,“%d”,“%d”,“%d”,s->name,&s->time,&s->money,&s->seat,&s->mark);?? /*輸出縱向鏈表的數(shù)據(jù)*/ ? goto first; } ? ? ? void? cancel() { ?struct ticket *p; struct station *q; int t; int *o,*s; printf(“please enter the number:”); scanf(“%d”,&f);?????? /

41、*輸入需要的車次*/ printf(“please enter the station:”);? scanf(“%d”,&h);?????? /*輸入需要到達(dá)的車站名*/ p=t;?????? /*初始化p的值*/ while(p=!null) { if(p->number=t) { q=p->down; ? o=p;???????????? /*把符合條件的橫向鏈表結(jié)點(diǎn)的數(shù)據(jù)給o*/ while(q->next=!head1) { ?if(q->name=h) { q->mark=0;????? /*修改mark標(biāo)記*/ s=q;??????????? /*把符

42、合條件的縱向鏈表的數(shù)據(jù)給s*/ } q=q->next;????? /*縱向鏈表移針*/ }} p=p->next;???? /*橫向鏈表移針*/ } printf(“your ticket has already cancel!”); printf("%d","%d","%d",o->num,o->num2, o->time);? /*輸出橫向鏈表的數(shù)據(jù)*/ printf(“%s”,“%d”,“%d”,“%d”,“%d”,s->name,&s->time,&s->money,&s->seat,&s->mark);?? /*輸出縱向鏈表的數(shù)據(jù)*/ goto first;

43、} ? void you() ??? { ??? struct you *head; struct you *p; p=(struct you *)malloc(len); scanf("%d",&p->name,&p->num,&p->num1,&p->time,&p->time1); } goto First; } ???? void find() { struct you *head; struct you *p; int u; scanf(“%d”,&u); while(p=!null) { if(p->num=u) {s=p;} p=p->

44、next; } printf(“%s”,”%d”,”%d”,”%d”,”%d”,p->name,p->num,p->num1,p->time,p->time1); } ????? void total() { int *p,*q; int n; p=t; while(p=!null) { ?while(q->next=!head1) { if (mark=1) ????? {n=n+1;} q=q->next; } ????? p=p->next; } printf(“the number of the booked ticket are :”);

45、 printf(“%d”,n); ????? } Main() { int *t; int c; First:? printf(“welcome to our ticket system!\n”); printf(“1.intput the data.\n”);????? /*按1鍵輸入數(shù)據(jù)*/ printf(“2.book the ticket.\n”);????? /*按2鍵訂車票*/ printf(“3.inquire the ticket.\n”);?? /*按3鍵查詢車票*/ printf(“4.cancel the ticket.\n”);??? /*按4鍵退車票

46、*/ printf(“5.input your own data.\n”);? /*按5鍵輸入個(gè)人信息*/ scanf(“%d”,&c); switch(c) {case ‘1’: t=in(); break; ???????? case ‘2’: book(); break; ???????? case ‘3’: inquire(); break; ???????? case ‘4’: cancel(); break; ???????? case? ‘5’: you()?? ; break; default?? : printf(“you enter an error number\n”); ??????? } ??????? }

展開閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!