数据结构课程设计航空客运订票系统_第1页
数据结构课程设计航空客运订票系统_第2页
数据结构课程设计航空客运订票系统_第3页
数据结构课程设计航空客运订票系统_第4页
数据结构课程设计航空客运订票系统_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 湖南工业大学课 程 设 计资 料 袋 计算机与通信 学院(系、部) 2009 2010 学年第 二 学期 课程名称 数据结构 指导教师 职称 教授 学生姓名 专业班级 学号 题 目 航空客运订票系统 成 绩 起止日期 2010年6 月 28日 2010年 7 月 日目 录 清 单序号材 料 名 称资料数量备 注1课程设计任务书12课程设计说明书13课程设计图纸1张456 湖南工业大学课程设计任务书2009 2010 学年第 二 学期 计算机与通信 学院(系、部) 专业 班级课程名称: 数据结构 设计题目: 航空客运订票系统 完成期限:自 2010 年 6 月 28日至 2010 年7 月 日

2、共 1 周内容及任务一、设计的主要技术参数使用队列让预定客户排队等候已定客户退票后再实现买票功能二、设计任务使用c语言实现各个模块的功能.三、设计工作量 本人独自完成这些基本要求,完成了航班信息的输入,查询航线的功能以及订票和退票等功能的实现!进度安排起止日期工作内容2010-6-27设计本程序思路2010-6-28实现子程序模块函数2010-6-29将子程序和主程序构建成完整的c源程序,并且进行相关编译调试2010-6-30数据测试、形成文档主要参考资料指导教师(签字): 年 月 日系(教研室)主任(签字): 年 月 日2数据结构设计说明书数据结构课程设计航空客运订票系统起止日期: 2010

3、 年 6 月 28日 至 2010年 7 月 日学生姓名班级学号成绩指导教师(签字)计算机与通信学院(部)年 月 日湖南工业大学课程设计情况分析表课程设计名称数据结构设计周数17周学院(部)计算机与通信学院系(教研室)通信工程系指导教师文志诚学生专业、班级通信工程0903选题航空客运订票系统成绩分布优良中及格不及格学生数百分比学生课程设计存在的主要问题改进措施及建议指导教师(签字): 年 月 日系(教研室)主任(签字): 年 月 日备注:本表在课程设计完成后由指导教师填写,与课程设计资料一起存档。 目录1. 题目及需求分析 vi2. 概要设计 vii3. 详细设计 x4. 调试分析 xix5.

4、 用户手册 xxi6. 测试结果 xxiii7. 附录 程序清单 xxv题目:航空客运订票系统扩展:增加了运行面板的颜色;增加添加了进入要密码输入功能;显示功能比要求的多了些,意在增加程序的智能化一 . 需求分析( 1 ) 以线性表存储航班信息,以队列存储预定客户的名单。( 2 ) 设计交互界面 , 用户只需输入选择就可做想做的事情.( 3 ) 用户可以自己输入航班信息的多少 , 然后由程序自动打印出航班信息.( 4 ) 一切操作都有向导.二 . 概要设计1. 设定线性表的抽象数据类型定义 :adt list 数据对象 : d=ai|aiint, i = 0,1,2n , n0数据关系 : r

5、1= | ai-1,ai d,i=2,n 基本操作 :initlist(&l)操作结果 : 构造一个空的线性表l.destroylist(&l)初始条件 : 线性表l已存在。操作结果 : 销毁线性表l。clearlist(&l)初始条件 : 线性表l已存在。操作结果 : 将l重新置为空表。listempty(l)初始条件 : 线性表l已存在。操作结果 : 判断线性表是否为空 adt list;2. 设定队列的抽象数据类型adt queue数据对象 : d=ai|aiint,i=1,2,3,4,,n,n=0数据关系 : r1= | ai-1,ai d,i=2,n 基本操作 :initqueue(

6、&q)操作结果: 构造一个空队列q.destoryqueue(&q)初始条件: 队列q已存在。操作结果: 队列q被摧毁,不再存在。clearempty(q)初始条件: 队列q已存在。操作结果: 将队列q清为空队列。enqueue(&q,e)初始条件: 队列q已存在。操作结果: 插入元素e为q的新的队尾元素。dequeue(&q,&e)初始条件: q为非空队列。操作结果: 删除q的队头元素,并用e返回其值。adt queue;3. 本程序包含3个模块1) 主程序模块:int main()主菜单函数, 实现主要操作界面.return 0;/主函数2) 线性表模块-实现线性表抽象数据类型3) 队列模

7、块-实现队列抽象数据类型各模块之间的调用如下: 主函数模块主程序模块队列模块线性表模块 4. 求解预定票实现的伪码算法:设定当前订票的情况;do若与票数足够,则则为客户订票;否则若客户愿意等候买票则办理预定票手术否则推出订票功能while (票数存在); 三. 详细设计工程文件视图: 类视图:-头文件设计(部分)-1.源程序头文件#include stdafx.h#include malloc.h#include math.h#include stdio.h#include stdlib.h#include string.h#include conio.h#include process.ht

8、ypedef struct yidingkehuint name;int dingpiaoliang;int chuangweidengji;struct yidingkehu *next1;yiding,*link;typedef struct denghoukehuint name;int piaoshu;int chuangweidengji;struct denghoukehu *next2;denghou,*qptr;typedef struct hangxianint zhongdianzhan;int hangbanhao;int feijihao;int feixingzhou

9、ri;int chengyuanzongshu;int yupiaoliang;struct hangxian *next;struct yidingkehu *yiding;struct denghoukehu *denghou;hangxian,*linklist;typedef structqptr front;qptr rear;linkqueue;struct hangxian *l=null;struct yidingkehu *h;linkqueue q;-实现文件(部分)-1. void hangbanxinxi()int i=1; while(i=1)if(!insertli

10、nklist(linklist) l) printf(不能再输入航班信息!n);exit(0);printf(是否输入航班信息?n);printf( 1:是n);printf( 2:否n);scanf(%d,&i);printf(n);2.int insertlinklist(linklist &l)linklist p;p=(linklist)malloc(sizeof(hangxian);if(!p) exit(0);printf(t请依次输入下面几项内容:nn);printf(航班号n);scanf(%d,&p-hangbanhao);printf(飞机号n);scanf(%d,&p-f

11、eijihao);printf(终点站n);scanf(%d,&p-zhongdianzhan);printf(飞行周日n);scanf(%d,&p-feixingzhouri);printf(乘客总数n);scanf(%d,&p-chengyuanzongshu);printf(余票数n);scanf(%d,&p-yupiaoliang);p-yiding=(yidingkehu*)malloc(sizeof(yidingkehu);p-denghou=q.front=q.rear=(qptr)malloc(sizeof(denghoukehu);p-next=l-next;l-next=p

12、;return 1;3. void dingpiaoyewu() linklist p=(linklist)malloc(sizeof(hangxian);p=l;yiding *h=h,*h1; linkqueue q=q;int i,j,k,piao,yudingpiao=0,yidingpiao=0;if(!p-next )printf(没有航班信息!n请输入航班信息!nn);elseprintf(请输入终点站:);scanf(%d,&i);printf(n);p=l-next;if(p)doif(!p)printf(对不起!没有你要查询的航班!nnn);break;j=p-zhongd

13、ianzhan-i;if(j=0)printf(t航班信息:n);printf(t航班号:%dn,p-hangbanhao);printf(t飞机号:%dn,p-feijihao);printf(t乘客总数:%dn,p-chengyuanzongshu);printf(t飞行时间:周%dn,p-feixingzhouri);printf(t余票量:%dn,p-yupiaoliang);elsep=p-next;while(j!=0);if(j=0)doprintf(n请输入你要定的票数:);scanf(%d,&piao);printf(n);if(piaoyupiaoliang)h=p-yid

14、ing;if(h)h1=h;h=h-next1;h=(yiding*)malloc(sizeof(yiding);printf(t请输入你的名字:);scanf(%d,&h-name);printf(n);printf(t你要的窗位等级:);scanf(%d,&h-chuangweidengji);printf(n);if(h-chuangweidengji =1)&(h-chuangweidengji dingpiaoliang=piao;h-next1 =h1-next1 ;h1-next1 =h;p-yupiaoliang=p-yupiaoliang -piao;printf(订票成功!

15、n);j=2;elseprintf(没有这等窗位!n);break;elseprintf(余票量:%dn,p-yupiaoliang);printf(余票量%d张不能满足你的订票量nnn,p-yupiaoliang );printf(是否要订票?);printf(1:需要2:不需要3:预定);scanf(%d,&j);printf(n);if(j=3)struct denghoukehu *q1;printf(航班的票已经售完!n);q.front =p-denghou;if(q.front =q.rear )printf(没有人预定,是否预定?n);elseprintf(有人预定,是否预定?

16、n);printf(1预定:2:不预定n);scanf(%d,&k);printf(n);if(k=1)q1=(qptr)malloc(sizeof(denghou);printf(请输入你的名字:);scanf(%d,&q1-name);printf(n);printf(请输入你要预定的票数:);scanf(%d,&q1-piaoshu);printf(n);printf(请输入你要预定的窗位等级:);scanf(%d,&q1-chuangweidengji);if(q1-chuangweidengji 3)|(q1-chuangweidengji next2 =null;q.rear -n

17、ext2 =q1;q.rear =q1;printf(预定成功!n);while(j=1); else if(!p) struct denghoukehu *q1; printf(航班的票已经售完!n); q.front =p-denghou; if(q.front =q.rear ) printf(没有人预定,是否预定?n); else printf(有人预定,是否预定?n); printf(1预定:2:不预定n); scanf(%d,&k); printf(n); if(k=1) q1=(qptr)malloc(sizeof(denghou); printf(请输入你的名字:); scan

18、f(%d,&q1-name); printf(n); printf(请输入你要预定的票数:); scanf(%d,&q1-piaoshu); printf(n); q1-next2 =null; q.rear -next2 =q1; q.rear =q1; printf(预定成功!n); 4. void chaxunhangxian()int i;printf(1:特定查询2:全部查询3:最近一天航班信息n);printf(请选择功能:);scanf(%d,&i);printf(n);switch(i)case 1:tdcx();break;case 2:qbcx();break;case 3

19、:zjyt();break;5. void tdcx()int i,j,k=1;linklist p=(linklist)malloc(sizeof(hangxian);p=l;if(p-next =null)printf(还没有航班信息!n请输入航班信息!nn);elseprintf(请输入终点站名字:);scanf(%d,&i);printf(n);dop=p-next ;if(p)j=p-zhongdianzhan-i;if(j=0)printf(t航班信息%d如下:n,k);printf(t航班号:%dn,p-hangbanhao);printf(t飞机号:%dn,p-feijihao

20、 );printf(t飞行周日:%dn,p-feixingzhouri );printf(t余票量:%dnn,p-yupiaoliang);k+;elseprintf(t没有你要查询的航班号!nn);break;while(j!=0);6.void qbcx()int k=1;linklist p=(linklist)malloc(sizeof(hangxian);p=l;if(p-next =null)printf(还没有航班信息!n请输入航班信息!nn);elsedop=p-next ;if(p)printf(t航班信息%d如下:n,k);printf(t航班号:%dn,p-hangban

21、hao);printf(t飞机号:%dn,p-feijihao );printf(t飞行周日:%dn,p-feixingzhouri );printf(t余票量:%dnn,p-yupiaoliang);k+;while(p);7.void zjyt()int i,j,k=1;linklist p=(linklist)malloc(sizeof(hangxian);p=l;if(p-next =null)printf(还没有航班信息!n请输入航班信息!nn);elseprintf(请输入特定某天的航班信息的日期!n);scanf(%d,&i);printf(t%d号最近一天的航班信息如下所示:n

22、n,i);dop=p-next ;j=p-feixingzhouri -i;if(fabs(j)hangbanhao);printf(t飞机号:%dn,p-feijihao );printf(t飞行周日:%dn,p-feixingzhouri );printf(t余票量:%dnn,p-yupiaoliang);k+;else if(p-next=null)printf(t没有航班信息!n);while(p-next );8. void tuipiaoyewu()linklist p=(linklist)malloc(sizeof(hangxian);p=l;if(p-next =null)pr

23、intf(还没有订票!nn);elseprintf(t按航班号查询n);hbh();9. void hbh()linklist p=(linklist)malloc(sizeof(hangxian);p=l;yiding *h=h,*h1,*h2;linkqueue q=q;int i,j,k,m,piao;printf(请输入航班号:);scanf(%d,&i);printf(n);if(p)doif(!p)printf(没有你要退票的飞机!n);break;j=p-hangbanhao -i;if(j=0)printf(t航班信息如下:n);printf(t航班号:%dn,p-hangba

24、nhao);printf(t飞机号:%dn,p-feijihao);printf(t飞行周日:周%dn,p-feixingzhouri);printf(t余票量:%dnnn,p-yupiaoliang);elsep=p-next ;while(j!=0);if(j=0)doh=p-yiding ;if(h)printf(请输入你的名字:);scanf(%d,&m );printf(n);printf(请输入你定的票数:);scanf(%d,&piao);printf(n);h1=h;h=h-next1 ;if(h-name -m=0)&(h-dingpiaoliang =piao)p-yupi

25、aoliang =p-yupiaoliang +h-dingpiaoliang ;h2=h;h1-next1 =h-next1 ;free(h2);printf(您退票成功!nn);struct denghoukehu *q1;q.front =p-denghou ;if(q.front =q.rear=null )printf(没有人预订票!nnn);break;if(p-yupiaoliang )=(q.front -next2 -piaoshu )h2=(yiding*)malloc(sizeof(yiding);h2-name =q.front -next2 -name ;h2-din

26、gpiaoliang =q.front -next2 -piaoshu ;k=p-yupiaoliang -q.front -next2 -piaoshu ;p-yupiaoliang =k;q1=q.front -next2 ;printf(%d号订到票了,离开队列!n,q1-name );printf(“%d号定的窗位等级是%dn,q1-name ,q1-chuangweidengji );q.front =q1-next2 ;if(q.rear =q1)q.rear =q.front ;free(q1);h2-next1 =h-next1 ;h-next1 =h2;printf(为客户预

27、定票成功!n);else printf(余票数不足,不能为客户提供订票服务!n);elseprintf(该航班没有人预订票或者是你没有定票!n);printf(是否重新查找?1:是2:否n);scanf(%d,&j);printf(n);while(j=1);10. linklist initlinklist()l=(linklist)malloc(sizeof(hangxian);if(!l)exit(0);l-next=null;return (l);四: 调试分析1. 本次作业有点难度 , 特别是后期在原来的程序上做了些扩展, 如生成底色,添加密码功能,还有过多的提示更显得智能,刚开始很

28、难做好,经过调试终于做好了。2. 在退票功能区域中,开始时用h-dingpiaoliang piao=0时不管有没有人入队列,总是提示没有人如队列,后来调试用h-dingpiaoliang =piao后就行了,因为后面的需要不能改变h-dingpiaoliang3. 在调试过程中使用scanf(“%dn”,&n);总是不能得出想要的结果,后来老师调试后才知道是scanf(“%d”,&n);所以编程时要持着严谨的态度,不断调试。4. 程序源代码中仍有部分重复代码,可以模块化,实现代码重用.5. 在运行时屏幕不能拉动,这是个缺陷。五.用户手册1.本程序的运行环境为 dos 操作系统, 执行文件为h

29、angkongxitong.exe.2.进入演示程序后 , 即显示文本方式的用户界面:要是连续三次没有输入正确的密码就显示出如下界面:3. 输入正确的密码后显示出主界面的提示信息.如下图:4. 进入 “航班信息” 命令后, 程序 立即显示如下图:5.进入 “订票业务” 命令后, 程序进入如下界面:6.进入“查询功能”后,程序进入如下界面:7.进入“退票功能”后进入如下界面:六. 测试结果1. 输入不正确时会分别显示如下信息:2. 输入如下正确数据:3. 查询航线的几种方法:4. 订票业务:5. 退票业务:6. 推出界面:七 附录 程序清单:#include stdafx.h#include m

30、alloc.h#include math.h#include stdio.h#include stdlib.h#include string.h#include conio.h#include process.htypedef struct yidingkehuint name;int dingpiaoliang;int chuangweidengji;struct yidingkehu *next1;yiding,*link;typedef struct denghoukehuint name;int piaoshu;int chuangweidengji;struct denghoukeh

31、u *next2;denghou,*qptr;typedef struct hangxianint zhongdianzhan;int hangbanhao;int feijihao;int feixingzhouri;int chengyuanzongshu;int yupiaoliang;struct hangxian *next;struct yidingkehu *yiding;struct denghoukehu *denghou;hangxian,*linklist;typedef structqptr front;qptr rear;linkqueue;struct hangxi

32、an *l=null;struct yidingkehu *h;linkqueue q;linklist initlinklist()l=(linklist)malloc(sizeof(hangxian);if(!l)exit(0);l-next=null;return (l);int insertlinklist(linklist &l)linklist p;p=(linklist)malloc(sizeof(hangxian);if(!p) exit(0);printf(t请依次输入下面几项内容:nn);printf(航班号n);scanf(%d,&p-hangbanhao);printf

33、(飞机号n);scanf(%d,&p-feijihao);printf(终点站n);scanf(%d,&p-zhongdianzhan);printf(飞行周日n);scanf(%d,&p-feixingzhouri);printf(乘客总数n);scanf(%d,&p-chengyuanzongshu);printf(余票数n);scanf(%d,&p-yupiaoliang);p-yiding=(yidingkehu*)malloc(sizeof(yidingkehu);p-denghou=q.front=q.rear=(qptr)malloc(sizeof(denghoukehu);p-

34、next=l-next;l-next=p;return 1;void tdcx()int i,j,k=1;linklist p=(linklist)malloc(sizeof(hangxian);p=l;if(p-next =null)printf(还没有航班信息!n请输入航班信息!nn);elseprintf(请输入终点站名字:);scanf(%d,&i);printf(n);dop=p-next ;if(p)j=p-zhongdianzhan-i;if(j=0)printf(t航班信息%d如下:n,k);printf(t航班号:%dn,p-hangbanhao);printf(t飞机号:%

35、dn,p-feijihao );printf(t飞行周日:%dn,p-feixingzhouri );printf(t余票量:%dnn,p-yupiaoliang);k+;elseprintf(t没有你要查询的航班号!nn);break;while(j!=0);void qbcx()int k=1;linklist p=(linklist)malloc(sizeof(hangxian);p=l;if(p-next =null)printf(还没有航班信息!n请输入航班信息!nn);elsedop=p-next ;if(p)printf(t航班信息%d如下:n,k);printf(t航班号:%d

36、n,p-hangbanhao);printf(t飞机号:%dn,p-feijihao );printf(t飞行周日:%dn,p-feixingzhouri );printf(t余票量:%dnn,p-yupiaoliang);k+;while(p);void zjyt()int i,j,k=1;linklist p=(linklist)malloc(sizeof(hangxian);p=l;if(p-next =null)printf(还没有航班信息!n请输入航班信息!nn);elseprintf(请输入特定某天的航班信息的日期!n);scanf(%d,&i);printf(t%d号最近一天的航

37、班信息如下所示:nn,i);dop=p-next ;j=p-feixingzhouri -i;if(fabs(j)hangbanhao);printf(t飞机号:%dn,p-feijihao );printf(t飞行周日:%dn,p-feixingzhouri );printf(t余票量:%dnn,p-yupiaoliang);k+;else if(p-next=null)printf(t没有航班信息!n);while(p-next );void chaxunhangxian()int i;printf(1:特定查询2:全部查询3:最近一天航班信息n);printf(请选择功能:);scanf

38、(%d,&i);printf(n);switch(i)case 1:tdcx();break;case 2:qbcx();break;case 3:zjyt();break;void dingpiaoyewu() linklist p=(linklist)malloc(sizeof(hangxian);p=l;yiding *h=h,*h1; linkqueue q=q;int i,j,k,piao,yudingpiao=0,yidingpiao=0;if(!p-next )printf(没有航班信息!n请输入航班信息!nn);elseprintf(请输入终点站:);scanf(%d,&i);printf(n);p=l-next;if(p)doif(!p)printf(对不起!没有你要查询的航班!nnn);break;j=p-z

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论