《数据结构B》课程设计报告基于飞机订票系统和全国交通模拟系统.doc

上传人:laozhun 文档编号:2396485 上传时间:2023-02-17 格式:DOC 页数:73 大小:456.50KB
返回 下载 相关 举报
《数据结构B》课程设计报告基于飞机订票系统和全国交通模拟系统.doc_第1页
第1页 / 共73页
《数据结构B》课程设计报告基于飞机订票系统和全国交通模拟系统.doc_第2页
第2页 / 共73页
《数据结构B》课程设计报告基于飞机订票系统和全国交通模拟系统.doc_第3页
第3页 / 共73页
《数据结构B》课程设计报告基于飞机订票系统和全国交通模拟系统.doc_第4页
第4页 / 共73页
《数据结构B》课程设计报告基于飞机订票系统和全国交通模拟系统.doc_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《《数据结构B》课程设计报告基于飞机订票系统和全国交通模拟系统.doc》由会员分享,可在线阅读,更多相关《《数据结构B》课程设计报告基于飞机订票系统和全国交通模拟系统.doc(73页珍藏版)》请在三一办公上搜索。

1、数据结构B课程设计报告系 别: 计算机与电子系 专业班级: 电子0901 学生姓名: 指导教师: (课程设计时间2011年12月12至2011年12月24) 华中科技大学武昌分校课程设计报告撰写内容、格式与成绩评定一、课程设计报告的撰写内容与要求1.课程设计总结报告应包括:前言、基本原理或理论、设计计算书或实验报告、结论、图纸(框图、流程图)、参考资料等;或调查、访谈报告、调查问卷、调查提纲等。2.课程设计总结报告应书写工整,文句通顺、精炼、逻辑性强,图纸和曲线的绘制应符合规范。3.调查型课程设计应根据调查结果撰写调查报告。调查报告内容包括:题目、参加时间、地点、方式、过程、调查对象一般情况、

2、调查内容、发现的问题、调查结果和调查分析及体会等。调查报告要求语言简练、准确;叙述清楚、明白;数据、资料可靠;结论有理、有据。4.图纸应布局合理,比例恰当,线条分明,字体工整,符合国家制图标准。5.课程设计报告字数要求:理工、艺术类不少于2000字,其他专业不少于3000字。二、课程设计成绩评定1.学生的课程设计成绩由平时成绩、业务考核成绩两部分组成,均为百分制记分,其中平时成绩占总成绩的30%,业务考核成绩占70%。业务考核含设计报告(计算说明书、调查提纲、调查问卷等)、绘制的图纸、编制的软件、制作的模型、撰写的论文或问卷统计、调查分析等的完成及质量情况;平时成绩含设计表现、到课率等。2.

3、教师按学生实际成绩(百分制,含平时成绩和业务考核成绩两部分)登记并录入教务MIS系统,由系统自动转化为“优秀(90100分)、良好(8089分)、中等(7079分)、及格(6069分)和不及格(60分以下)”五等。 目 录1.课程设计目的12.课程设计题目描述和要求12.1航空订票系统描述与要求12.2全国交通咨询模拟系统描述与要求:23课程设计报告内容23.1航空订票系统课程设计报告内容23.1.1设计思路23.1.2主要功能函数的设计33.1.3调试分析:33.1.4源程序代码:43.1.5运行测试123.2全国交通模拟小系统课程设计报告内容143.2.1设计思路:143.2.2主要功能函

4、数的设计:153.2.3调试分析:173.2.4参考源程序:183.2.5运行测试644总结68参考文献691.课程设计目的1) 培养自己运用算法与数据结构的基本知识解决实际编程中的数据结构设计和算法设计问题。2) 培养自己独立设计程序与解决问题的能力,培养学生团队协作集成程序模块及调试能力。3) 培养自己初步的软件设计及软件测试的能力。4)培养自己分析问题,解决问题的能力。2.课程设计题目描述和要求2.1航空订票系统描述与要求【问题描述】 航空客运订票的业务活动包括;查询航线、客票预订和办理退票等。试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。【基本要求】(1)每条航线所涉及

5、的信息有:终点站名、航班名、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);(2)作为示意系统,全部数据可以只放在内存中;(3)系统能实现的操作和功能如下:a.查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;b.承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补;c.承办退票业务:根据客户提供的情况(日期

6、、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足客户的要求,则为客户办理订票手续,否则依次询问其他排队候补的客户2.2全国交通咨询模拟系统描述与要求:【问题描述】出于不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的旅客则期望旅费尽可能省,而老年旅客则要求中转次数最少。编制一个全国城市间的交通咨询程序,为旅客提供两种或三种最优先决策的交通咨询。【基本要求】(1)提供对城市信息进行编辑(如:添加或删除)的功能。(2)城市之间有两种交通工具:火车和飞机。提供对列车时刻表和飞机航班进行编辑(增设或删除

7、)的功能。(3)提供两种最优决策:最快到达或最省钱到达。全程只考虑一种交通工具。(4)旅途中耗费的总时间应该包括中转站的等候时间。(5)咨询以用户和计算机的对话方式进行。由用户输入起始站、终点站、最优决策原则和交通工具,输出信息:最快需要多长时间才能到达或者最少需要多少旅费才能到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。3课程设计报告内容3.1航空订票系统课程设计报告内容3.1.1设计思路1)主程序伪代码:int main() 界面初始化; 输入操作命令; While(“命令” != “退出”) 接受命令(用户输入要实现功能); 进入各个处理命令函数;2)主程序的流程以及各程序

8、模块之间的调用关系:退票模块航线信息列表Main()函数订票模块查询客户信息初始化航线信息3.1.2主要功能函数的设计(1)显示已初始化的航线信息void display(struct airline *info);打印每条航线的基本信息(2)航班查询业务void search():根据客户提出的终点站名输出航线struct airline *find();根据系统提示的航班号查询并以指针形势返回。(3)航班订票业务void order():班里航班订票业务,根据客户提供的航班号查询,如为空,退出该模块;如客户订票数量乘员订票总量,则退出;若未超出乘员订票总量,则订票成功并登记信息。(4)航班

9、退票业务void return_tkt();办理退票业务,调用查询函数 ,根据客户提供的航线进行搜索,再根据客户的姓名到订票客户名单域进行查询,若信息查询成功,删除订票客户名单域的信息,若未找到,则退出该模块。(5)其他航班线路查询业务void oher_search();客户订票时,剩余票量不满足时,调用该函数模块,根据客户提供的航班目的地,显示出所有能到达目的地的航班。3.1.3调试分析:调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析,在调试的过程中碰到了一下问题:a. 引用形参应用不当;b. 有关指针参数和操作不熟悉,通过查参考资料数据结构实验指导和同学讨论最终解决(2

10、) 算法的时空分析:基本操作时间复杂度空间复杂度menu_select()O(1)O(1)void display()O(1)O(1)void search()O(n)O(1)void order()O(n)O(n)void return_tkt()O(n)O(n)void list()O(1)O(1)void pritlink()O(n)O(1)3.1.4源程序代码:#include#include#include#include#define maxsize 15#define air_maxnum 200typedef struct wat_ros char name20;/姓名 int

11、 req_amt;/订票量 struct wat_ros *next;qnode,*qptr;typedef struct pqueue qptr front; qptr rear;linkqueue;typedef struct ord_ros char name20;/客户信息 int ord_amt;/顶票量 int grade;/舱位等级 struct ord_ros *next;linklist; struct airline char ter_name20;/终点站名 char air_num20;/航班号 char plane_num20;/飞机号 char day7;/飞行日期

12、 int tkt_amt;/乘员定额 int tkt_sur;/余票数量 linklist *order;/乘员名单域 linkqueue wait;/等候客户名单域lineinfo;struct airline *start;void display(struct airline *info)/打印航线基本信息printf(%8st%3st%6st%6st%7dt%8dn,info-ter_name,info-air_num,info-plane_num,info-day,info-tkt_amt,info-tkt_sur);void list()/打印全部航线信息 struct airli

13、ne *info; int i=0; info=start; printf( 终点站 航班号 飞机号 飞行日期 乘员定额余票额数n); while(imaxsize) display(info); info+; i+; printf(nn);void search()/根据客户提供的终点站名输出航线信息 struct airline *info,*find(); char name20; int i=0; info=start; printf(请输入终点站名:); scanf(%s,name); while(iter_name) break; info+; i+; if(i=maxsize)p

14、rintf(对不起没有航班); else printf( 终点站 航班号 飞机号 飞行日期 乘员定额余票额数n); display(info); void Oher_search()/订票要求不满足时提供其他航班线路 struct airline *info,*find(); char name20; int i=0,j=0; int amount; info=start; printf(请输入终点站名:); scanf(%s,name); printf(请您输入想要订的票量:); scanf(%d,&amount); while(iter_name) printf( 终点站 航班号 飞机号

15、飞行日期 乘员定额余票额数n); display(info); info+; i+; if(i=maxsize) printf(没有航班); struct airline *find()/根据系统提供的航班号查询 struct airline *info; char number10; int i=0; info=start; printf(请输入航班班次:); scanf(%s,number); while(iair_num) return info;info+;i+; printf(对不起没有航班); return NULL;void prtlink()/打印订票乘员名单域的客户名单信息

16、linklist *p; struct airline *info; info=find(); p=info-order; if(p!=NULL) printf(客户名字 机票号 座位号n);while(p) printf(%stt%dt%dn,p-name,p-ord_amt,p-grade); p=p-next; else printf(航班没有乘客信息);linklist *insertlink(linklist *head,int amount,char name,int grade)/增加订票乘员名单域的客户信息 linklist *p1,*ne; p1=head; ne=(link

17、list*)malloc(sizeof(linklist); if(!ne) printf(钱不足!n);return NULL; strcpy(ne-name,name); ne-ord_amt=amount; ne-grade=grade; ne-next=NULL; if(head=NULL) head=ne;ne-next=NULL; else head=ne; ne-next=p1; return head;linkqueue appendqueue(linkqueue q,char name,int amount)/增加排队等候的客户名单域 qptr ne; ne=(qptr)ma

18、lloc(sizeof(qnode); strcpy(ne-name,name); ne-req_amt=amount; ne-next=NULL; if(q.front=NULL) q.front=ne; else q.rear-next=ne;q.rear=ne;return q;void order()/办理订票业务 struct airline *info; int amount,grade; char name20; info=start; if(!(info=find() return; printf(请您输入想要订的票量:); scanf(%d,&amount); if(amou

19、ntinfo-tkt_amt) printf(n对不起,您输入的票的数量已经超过乘员定额!);return; if(amounttkt_sur) int i;printf(请输入您的名字:);scanf(%s,name);printf(请订票,请付款.n您要的舱位等级);scanf(%d,&grade);info-order=insertlink(info-order,amount,name,grade);for(i=0;itkt_amt-info-tkt_sur+i+1);info-tkt_sur-=amount;printf(n 祝您旅途愉快!n); else char r; printf

20、(n没有多余的票了,您需要排队等候吗?(Y/N)); r=getch(); printf(%c,r); if(r=Y|r=y) printf(n请输入您的名字:); scanf(%s,name); info-wait=appendqueue(info-wait,name,amount); printf(n注册成功!n); else printf(n欢迎下次订购!n); void return_tkt()/办理退票业务 struct airline *info; qnode *t,*back,*f,*r; int grade; linklist *p1,*p2,*head; char cusna

21、me20; if(!(info=find() return; head=info-order; p1=head; printf(输入您的名字); scanf(%s,cusname); while(p1!=NULL) if(!strcmp(cusname,p1-name)break;p2=p1;p1=p1-next; if(p1=NULL) printf(对不起,您没有订票!n);return; else if(p1=head) head=p1-next; else p2-next=p1-next;info-tkt_sur+=p1-ord_amt;grade=p1-grade;printf(%s

22、 退票成功!n,p1-name);free(p1); info-order=head; f=(info-wait).front; r=(info-wait).rear; t=f; while(t) if(info-tkt_sur=info-wait.front-req_amt) int i; info-wait.front=t-next; printf(%s 购票成功!n,t-name); for(i=0;ireq_amt;i+) printf(%s 的座位号是:%dn,t-name,(info-tkt_sur)-i); info-tkt_sur-=t-req_amt; info-order=

23、insertlink(info-order,t-req_amt,t-name,grade); free(t); break;back=t;t=t-next;if(info-tkt_sur)=(t-req_amt)&t!=NULL) int i; back-next=t-next; printf(% 订票成功!n,t-name); for(i=0;ireq_amt;i+) printf(的座位号是:%dn,t-name,(info-tkt_sur)-i); info-tkt_sur-=t-req_amt; info-order=insertlink(info-order,t-req_amt,t-

24、name,grade); free(t); break; if(f=r)break; int menu_select()/菜单界面 int c; char s20;printf(*n); printf(* 欢迎进入武汉航空旅客服务系统 *n);printf(* 1.显示航班信息 *n);printf(* 2.打印订票乘客信息 *n);printf(* 3.航班查询业务 *n);printf(* 4.航班订票业务 *n);printf(* 5.航班退票业务 *n); printf(* 6.其他航班路线情况 *n);printf(* 7.退出系统 *n);printf(*);printf(*);

25、do printf( 请选择您需要的业务:); scanf(%s,s); c=atoi(s); while(c7); return c;int main(void) printf(*n); printf(* 制作信息简介 *n); printf(* 学院:计算机与电子系 *n); printf(* 专业:电子科学与技术 *n); printf(* 班级:电子 *n); printf(* 姓名:高傲 *n); printf(* 学号: *n); printf(* 指导老师:徐琴 *n); printf(* 未完待续. *n); printf(*n); printf(*n); printf(请按任

26、何键以继续); getchar(); struct airline airmaxsize= beijing,1,B8571,SUN,air_maxnum,air_maxnum, tianjing,2,S4652,MON,air_maxnum,air_maxnum, nanjing,3,H8600,TUS,air_maxnum,air_maxnum, shanghai,4,T5201,WES,air_maxnum,air_maxnum, hongkong,5,B1314,FRI,air_maxnum,air_maxnum, beijing,6,K2930,SUN,air_maxnum,air_m

27、axnum, Londou,7,B8478,SAT,air_maxnum,air_maxnum, Englang,8,T4782,FIR,air_maxnum,air_maxnum, London,9,K4717,SUN,air_maxnum,air_maxnum, xiamen,10,B2787,WES,air_maxnum,air_maxnum, guangzhou,11,B5300,SAT,air_maxnum,air_maxnum, shanghai,12,N9768,TUS,air_maxnum,air_maxnum, hongkong,13,B6547,FRI,air_maxnum

28、,air_maxnum, tanwan,14,K4727,SUN,air_maxnum,air_maxnum, Englang,15,W4712,FIR,air_maxnum,air_maxnum,; system(cls); start=air; for(;) switch(menu_select() case 1:system(cls);list();break; case 2:system(cls);prtlink();break; case 3:system(cls);search();break; case 4:system(cls);order();break; case 5:sy

29、stem(cls);return_tkt();break; case 6:system(cls);Oher_search();break; case 7:printf(n欢迎再次进入系统,再见!n); exit(0); printf(n 请按任意键继续!n); getch(); return(0);3.1.5运行测试1)制作信息界面2)界面显示3)航班信息显示4)订票流程界面5)订票客户信息6)航班查询业务7)退票业务8)票量不足时排队注册界面9)票量不满足时其他航线查询3.2全国交通模拟小系统课程设计报告内容 3.2.1设计思路:主程序的流程以及各程序模块之间的调用关系:退出显示交通系统Pr

30、intGraph用户咨询UserDemand管理员管理Administer主函数main() 返回上一级菜单列车车次编辑Administer飞机航班编辑Administer城市编辑cityedit管理员管理Administer初始化交通系统initgraph返回上一级菜单最少中转次数TransferDispose最少旅行时间TimeDispose用户咨询UserDemand最少旅行费用ExpenditureDisposeUserDemand显示城市显示飞机航班显示列车车次返回上一级菜单显示交通系统PrintGraph删除城市新增城市城市编辑cityedit删除航班新增航班飞机航班编辑plane

31、edit删除车次新增车次火车列次编辑trainedit3.2.2主要功能函数的设计:1)void Administer(ALGraph *G);管理员模式2)void cityedit(ALGraph *G);城市编辑3)void CopyTimeTree(TimeTree p,TimeTree q);航班列车时间编辑4)void createcityfile();创建城市信息文件5)void CreateGraph(ALGraph *G);建立全国交通图6)void createplanefile();创建航班信息文件7)voidCreateTimeTree(TimeTreep,inti,i

32、nt j,LinkQueue *Q,infolist (*arcs)MAX_VERTEX_NUM);时间编辑8)void createtrainfile();创建列车信息文件,9)int DeleteplaneArc(ALGraph *G);删除航班信息10)void DeleteQueue(LinkQueue *Q,int *x);队列存储方式删除11)int DeletetrainArc(ALGraph *G);删除列车车次12)void DeleteVertex(ALGraph *G);图中删除节点信息13)void DemandDispose(int n,ALGraph G); 交通咨

33、询14)void DestoryTimeTree(TimeTree p);删除时间信息15)void EnterplaneArc(ALGraph *G);增加航班信息16)void EnterQueue(LinkQueue *Q,int x);队列存储方式增加17)void EntertrainArc(ALGraph *G);增加图中列车节点18)void EnterVertex(ALGraph *G); 增加图中航班节点19)voidExpenditureDispose(intk,infolist(*arcs)MAX_VERTEX_NUM,ALGraph G,int v0,int v1,fl

34、oat *M,int *final);旅行花费,根据目的地计算旅程所需总的费用。20)void flightedit(ALGraph *G);图中航班节点信息编辑21)void initgraph(ALGraph *G);初始化交通系统(图)22)void InitQueue(LinkQueue *Q); 初始化交通系统(单链表)23)int IsEmpty(LinkQueue *Q);判队空24)int LocateVertex(ALGraph *G,char *v);25)void MinExpenditure(infolist arcs,float *expenditure,int *r

35、oute);根据提供的路径计算最小花费。26)void MinTime(infolist arcs,int *time,int *route); 根据提供的路径计算最少耗时。27)void PrintGraph(ALGraph *G);显示交通系统28)int save(ALGraph *G);保存图中的节点信息29)void TimeDispose(int k,infolist (*arcs)MAX_VERTEX_NUM,ALGraph G,int v0,int v1,int (*T)2,int *final);中转时间(图)30)void TimeTreeDispose(Node *head,infolist (*arcs)MAX_VERTEX_NUM);根据算法计算最少中转时间31void trainedit(ALGraph *G);图中列车节点信息编辑32)void TransferDispose(int k,infolist (*arcs)MAX_VERTEX_NUM,ALGraph G,int v0,int v1);最少中转次数模块函数

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号