C语言数据结构航空售票系统设计报告.docx

上传人:时光煮雨 文档编号:11698153 上传时间:2021-08-31 格式:DOCX 页数:20 大小:135.79KB
返回 下载 相关 举报
C语言数据结构航空售票系统设计报告.docx_第1页
第1页 / 共20页
C语言数据结构航空售票系统设计报告.docx_第2页
第2页 / 共20页
C语言数据结构航空售票系统设计报告.docx_第3页
第3页 / 共20页
C语言数据结构航空售票系统设计报告.docx_第4页
第4页 / 共20页
C语言数据结构航空售票系统设计报告.docx_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《C语言数据结构航空售票系统设计报告.docx》由会员分享,可在线阅读,更多相关《C语言数据结构航空售票系统设计报告.docx(20页珍藏版)》请在三一文库上搜索。

1、女孝理N火孽EAST CHINA INSTITUTE OF TECHNOLOGY数据结构课程设计报告题目:航班订票系统学生姓名:温裕学 号: 2班 级:1521807指导教师:许志文2016 年 12 月 23目录第1章功能需求描述31.1 题目要求31.2 功能列表及说明1第2章设计描述42.1 任务分解说明42.2 数据结构设计说明4第4章开发过程描述154.1 编译过程错误分析154.2 调试错误分析154.3 3运行结果及说明15第5章设计心得体会17-2- / 18第1章功能需求描述4.4 题目要求任务:通过此系统可以实现如下功能:1)、录入:可以录入航班情况(数据可以存储在一个数据

2、文件中,数据结构、具体数据自定) 2)、查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起S抵达城市,航 班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3)、订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;4)、退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。5)、修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能; 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,

3、可以完成相关的 功能要求。存储结构:学生IH己根据系统功能要求自己设计。请在最后的上交资料中指明你 用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。 进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;4.5 功能列表及说明航班订票系统*1.航班录入3.修改航班信息5.退票2.航班查询4.订票6.查看客户信息7.退出系统*功能分别包括以下7个方面:(1)航班录入:每条航线所涉及的信息有:航班号、起飞时间、降落时 间、抵达城市、航班票价、票价折扣、航班满仓人数、剩余票数、飞行日期。(2)航线查询:把每条航班的信息详细输出。(3)修改航班

4、信息:先输入需要修改的航班号,然后把这个航班的信息 输出确认后,再重新输入航班号、起飞时间、降落时间、抵达城市、航班票 价、票价折扣、航班满仓人数、剩余票数、飞行日期进行修改。(4)订票业务:根据客户提出的要求(航班号、抵达城市、飞行日期) 查询该航班情况,若有余票,则为客户班里订票手续,并让客户输入姓名、 身份证号码、手机号码、选择的舱位等级信息进行储存;若已满或者余票少 于订票额,则需要重新询问客户要求。(5)退票业务:根据客户提供的情况(航班号、姓名),查询是否有相关 的订票信息,如有则输出客户的订票信息,客户确认无误后方可退票成功。(6)查看客户信息:把每个客户信息和相关订票信息输出。

5、(7)退出系统:退出程序。第2章设计描述4.6 任务分解说明(1)分析系统中两个链表的设计,用来记录航班信息和客户信息。(2)根据问题描述,设计链表;(3)完成系统中各个信息的定义;(4)完成系统的应用模块;(5)功能调试;(6)完成系统设计报告。4.7 数据结构设计说明(1)头文件#include#include#include(2)定义“客户”链表typedef struct customer /客户信息char name20, id20, telll; /客户姓名、身份证号码、手机号码3 / 18int level;舱位等级customer *next;customer, *Lcusto

6、mer;(3)定义“航班”链表typedef struct airline航线信息(char airlineNo20_, takeOffTime20, landTime20, landCity20;航班号、起飞时间、降落时间、抵达城市float price, discount; 航班票价,票价折扣 int total, left, day; 航班满仓人数、剩余票数、飞行日期 Lcustomer booked; 己定客户信息airline *next;airline, *Lairline;(4)主程序 void main ()(Lairline L;定义一个航班类型的对象InitList(L);

7、创建航班类型的头结点 menu (L); 调用菜单函数 )(5)航班录入函数void addAirline(Lairline &L)录入航班 (system(cls);int flag = 1, t;char no20;Lairline p, q; for (; flag;) printf (请输入航班号:n);scanf no);for (p = L; p-next; p = p-next)if (p-next&strcmp(p-next-airlineNo, no) = 0) printf (航班已存在,是否重新输入?是(1)返回主页面(0) 3 / 18n);scanf (%d,&t);

8、if (t=l)addAirline(L);elsemenu(L);)P = L;q = (Lairline)malloc(sizeof(airline);if (!q)(printf(申请内存失败! );system(pause);exit (0);)printf (该航班不存在,允许录入。n请输入航班号、起飞时间、降 落时间、抵达城市、航班票价、票价折扣、航班满仓人数、剩余票数、飞行日期: 、);scanf (,%s%s%s%s%f%f, &q-airlineNo, &q-takeOffTime, &q-landT ime, &Q-landCity, &q-price, &Q-discou

9、nt, &q-total, &q-left, &q-day);q-booked = NULL;q-next = p-next;p-next = q;printf(录入航班成功,是否继续录入?继续(1)返回主页面(0) 、);scanf (/d,&f lag);)menu (L);)(6)航班查询函数void inquery (Lairline &L) 查询航班信息system(cls);Lairline p = L-next;5 / 18printf (航班号起飞时间降落时间抵达城市航班票价票价折扣 航班满仓人数剩余票数飞行日期n);while (p!=NULL) printf C%s %s%

10、s%s %. 2f %. 2f%d%d%dn, p-airlineNo, p-takeOffTime,p-landTime, p-landCity, p-price, p-discount, p-total, p-left, p-day);p = p-next;)printf(请按任意键返回主菜单。n); system(pause);menu (L);)(7)修改航班信息函数void modify (Lairline &L) 修改航班信息 ( system(cls);char no20; int t;Lairline p=L-next;bool flag=false; for (; p; p

11、= p-next) printf (请输入您要修改的航班号:); scanf (,%s,, no);if (p&strcmp(p-airlineNo, no) = 0) (printf (己查找到航班“s”,航班信息如下:n, no);printf (航班号起飞时间降落时间抵达城市航班票价票价折 扣航班满仓人数剩余票数飞行日期n);printf C%s %s%s%s %. 2f %. 2f%d%d%dn, p-airlineNo, p-takeOffTime,5 / 18p-landTime, p-landCity, p-price, p-discount, p-total, p-left,

12、p-day);printf(请输入航班号、起飞时间、降落时间、抵达城市、航班票 价、票价折扣、航班满仓人数、剩余票数、飞行日期:n);scanf (,%s%s%s%s%f%f%d%d%d,/, &p-airl ineNo, &p-takeOffTime, &p-landT ime, &p-landCity, &p-price, &p-discount, &p-total, &p-left, &p-day);printf (修改成功!以下为更新后的数据:n航班号 起飞时间降 落时间抵达城市航班票价票价折扣航班满仓人数剩余票数飞行日期n);printf C%s %s%s%s %. 2f %. 2f

13、%d%d%dn, p-airl ineNo, p-takeOffTime,p-landTime, p-landCity, p-price, p-discount, p-total, p-left, p-day);break;)if (p&strcmp(p-airlineNo, no) != 0) (printf (航班不存在,是否重新输入?是(1)返回主页面(0)n); scanf;if (t=l) modify(L); elsemenu (L);) if(!p) ( printf (航班链表为空! );) ) printf(请按任意键返回主菜单。n); system( pause );men

14、u (L);)void booking (Lairline &L) 订票(system(cls); int i, t;int flag=0;Lairline p;Lcustomer c; for (;!flag;) printf (请输入查询航班的方式:n);printf (航班号(1),抵达城市(2),飞行日期(3) n);scanf (飞d, &i); switch(i) ( case 1:p=search_airlineNo (L) ;flag=l;break;case 2:p=search-landCity(L);flag=l;break;case 3:p=search_day(L);

15、flag=l;break;default:printf (操作错误,是否重新输入?是(1)返回主页面(0)n); scanf (/d,&t);if (t=l) booking (L);else menu (L);break;) if(P) printf (航班号起飞时间降落时间抵达城市航班票价票价折扣 航班满仓人数剩余票数飞行日期n);printfC%s %s%s%s %. 2f %. 2f%d%d/dn, p-airlineNo, p-takeOffTime,p-landTime, p-landCity, p-price, p-discount, p-total, p-left, p-day

16、);c=(Lcustomer)malloc(sizeof(customer);printf(请输入您的姓名、身份证号码、手机号码、选择的舱位等级 (1/2/3) :n);scanf (/z%s%s%s%dz/, c-name, c-id, c-tel, &c-level); printf (您输入的信息如下,请确认:n);printf (姓名 身份证号码 手机号码 选择的舱位等级n);printf (如 %s%s/dn,c-name, c-id, c-tel, c-level);if(p-left=l) ( c-next=p-booked; p-booked=c; p-left-; print

17、f (订票成功! n);) ) else printf (没有该航班n); system( pause );printf(请按任意键返回主菜单。n); menu (L);)(9)退票函数void refund (Lair 1 ine &L) 退票 ( system(cls); int flag;char name20;Lairline p; Lcustomer c;p=search_airlineNo(L);c=p-booked;if (!p)printf (没有该航班! n);system(pause);printf (请按任意键返回主菜单。n); menu(L);)printf(请输入您的

18、姓名:);scanf ,name);if (!p-booked-name)printf (对不起,没有找到您的信息nn);system(pause);printf(请按任意键返回主菜单。n); menu (L);)if(!strcmp(name, p-booked-name)(printf (退票信息:n姓名 身份证号码 航班号 终点站n);printf (z,%s %s%s%sn,p-booked-name, p-booked-id,p-airlineNo, p-landCity);printf (确认要退票?是(1)否(0) n);scanf (飞d, &flag);if (flag)(p

19、-booked=p-booked-next;p-left+;free (c);printf (退票成功! nn);else system(pause);printf(请按任意键返回主菜单。n); menu(L);)else(printf(对不起,没有找到您的信息! n);system(pause);printf(请按任意键返回主菜单。n); menu (L);)system(pause);menu (L);)(10)查看客户信息void customerinfo(Lairline &L)(system(cls);Lairline p=L-next;Lcustomer c;if (p-booke

20、d)(/for (;p-next;p=p-next)while(p-next)(c=p-booked;printf (姓名 身份证号码 手机号码 选择的舱位等级n); for(;c;c=c-next)printf (z,%s %s%s/dn,c-name, c-id, c-tel, c-level);p=p-next;elseprintf (暂时没有客户订票! nn);printf(请按任意键返回主菜单。n);system pause );menu(L);)(11)按航班号查找航班函数Lairline search_airlineNo (Lair 1 ine &L) 按航班号查找航班(char

21、 no20;Lairline p=L-next;printf (请输入航班号:);scanf no);for(;p;p=p-next)if(!strcmp(no,p-airlineNo) break;return p;)(12)按抵达城市查找航班函数Lairline search_landCity(Lairline &L)按抵达城市查找航班 (char landCity20;Lairline p=L-next;printf (请输入抵达城市:);scanf landCity);for (;p;p=p-next)if (!strcmp (landCity, p-landCity) break;r

22、eturn p;)(13)按飞行日期查找航班函数Lairline search_day (Lair 1 ine &L) 按飞行日期查找航班int day;Lairline p=L-next;printf (请输入飞行日期); scanf(%d,&day);for(;p;p=p-next)if (day=二p-day) break;return p;)(14)菜单函数void menu(Lairline &L)int select;system(cls);printf(n航班订票系统n);13 / 18printf(*n);2.航班查询n);4.订票n);6.查看客户信息n);printf (,

23、z 1.航班录入printf ( 3.修改航班信息printf ( 5.退票printf C 7.退出系统n);printf(*n);printf (请输入选择的数字:);scanf(/d, &select); switch (select)case 1: addAirline(L);break;case 2:inquery(L);break;case 3:modify(L);break;case 4:booking(L);break;case 5:refund(L); break;case 6:customerinfo(L);break;case 7:exit (0);default:res

24、elect(L);break;)第四章开发过程描述4.1编译过程错误分析在编程过程中,出现了很多次指针用法错误,暴露了我指针方面的缺憾,以 后要加强这方面的学习。4. 2调试错误分析在程序编写完成后,运行时遇到的错误类型主要是各种语法错误,如字母打 错,字母少打,字母大小写错误,符号错误,输入法半角全角类型错误等等。最 后在反复调试检查过程中,将错误找到并一一修改。4. 3运行结果及说明1、主菜单界面运行图航班订票系统:1: : : : : : : : : : : : : : *簿品息7.退出系统2.航班查询4. 订票6.查看客户信息-i* * A*- A* - A* -i* A*- A*.J

25、.工.J. .J. J* J* J*一*- - I - - -1 - - I - - 1 - - - - - -1 - - *-T*T * *T * *T * -T T -T -T -T - -T -馆输入选择的数字:2、显示所有航线界面运行图,在主菜单界面选择“1”进入航班录入请输入航班号I 该肮班不存在,允许录入。请输A航班号、起飞时间、降落时以 抵达城市、航班票价、票价折扣、航班满仓人数、轲余祟敖、飞行日期, 1 9:00 12:00 beljing 200 0.9 180 180 20161212录入航,班成功,是否继续录入?维续C1)诋回主页面(。)3、查询航线信息界面运行图,在主菜

26、单界面选择“2”进入该界面。一号出S 晅1潸洁格单. 矫菜 可壬 加回续 1BUO.建 一9:3时间抵达城市 12:00航班票价票 beijing折扣航班满仓人数兼赊票数200.000.901804、修改肮班信息,在主菜单界面选择“3”进入该界面孱崔噌心间降0后施&币航期票价票侨折扣航班满包人数和余票数飞行日期19:0012:00 beinng 200.000.9018018020161212弟氤人航班号、起飞时间、降落时间.抵达城市、航班票价、票价折扣、航班满仓人数、剩余票数.飞行E期,P 10:00 12:0Cnar.cha,200 0.9 180 180 20161212懿*明与需爨器娄

27、粒城市航期票价票椅折扣航班满仓人数杀除祟数飞行日期10:0012:00nanchang 200. 000.9018018020161212再次查询210:0012:00请按仕苴铤返回三菜单。 清技法盘键继续降落时间抵达城市加沏票价票价折扣肮班涡仓人赞和保票数nanchang200. 000.90201612125、订票业务界面运行图,选择查询航班方式,显示相应的航班信息,输入客 户个人的信息和舱位等级后即订票成功。在主菜单界面选择“4”进入该界面班号(1) , ffi,,飞行日期(3)号继班班键入省请骑人查询航明的万西,航班号,.抵京喊市(2),飞行日期(3)请输入航班号:2沉冰号起飞时间降落

28、时间抵达城市航班票价票价折扣航班满仓人敬聿馀票数飞行日踢210:0012:00 nanchang 200.000.90请输入您的姓名.身份证号码.手机号码、迦翰舱位等级(U2/3):/envu 65263654315 1151321354 1鸳卷入的花息如不,道确认fea月羽正号码 聿机号码 选串的舱位等级18018020161212zenyu 65263654315i工界成些!请按任宣键世号. . 11513213546、主界面选择“6”进入查看客户信息界面如下姓名 身份证号科 手机号制 选择的舱位等级7、退票业务界面运行图,主界面选择“5”进入退票界面,输入所退票的航班信息,确认是否退票。

29、A人起任 .招不按 - -5? = 一 I55 1释您的信息!屉及 身份证号码 航班号 终点站X.nanchangw 巳nyu65263654315确4要退票?是(1)否(0)1退票成功!第5章设计心得体会此课程设计完成了对航线查询、订票、退票等功能的设计操作,并且还包含 了清屏功能以及退出功能。对程序在运行时输入错误操作的修改,提供了一定的方便,基本上能安全的运行。使用单链表的操作,是此程序的最大优点,使航班、客户的的插入、删除等操作变得简单清晰。程序结构清晰,各个模块的分工和功15 / 18能明确。经过一周的课程设计,我认识到把课堂上老师讲的知识运用到实际操作中的 重要性。我这次课程设计的题目是航空订票系统,在开始阶段,根本无从下手,后 来通过查阅一些相关资料和老师的耐心讲解,最终成功完成整个程序的设计。通 过这次课设我对C语言中的相关知识有了进一步的理解,特别是对数据结构有课 更深刻的了解,对程序的开发思路有了一定的理解,我想这在以后的学习和工作 中都会有帮助的,更使我意识到了学习C语言的重要性。另外,对程序的不断调 试,使我的查错能力也有了很大的提高。16 / 18

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1