欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    数据结构课程设计航空客运订票系统.doc

    • 资源ID:2853761       资源大小:517.50KB        全文页数:41页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构课程设计航空客运订票系统.doc

    湖南工业大学课 程 设 计资 料 袋 计算机与通信 学院(系、部) 2009 2010 学年第 二 学期 课程名称 数据结构 指导教师 职称 教授 学生姓名 专业班级 学号 题 目 航空客运订票系统 成 绩 起止日期 2010年6 月 28日 2010年 7 月 日目 录 清 单序号材 料 名 称资料数量备 注1课程设计任务书12课程设计说明书13课程设计图纸1张456 湖南工业大学课程设计任务书2009 2010 学年第 二 学期 计算机与通信 学院(系、部) 专业 班级课程名称: 数据结构 设计题目: 航空客运订票系统 完成期限:自 2010 年 6 月 28日至 2010 年7 月 日共 1 周内容及任务一、设计的主要技术参数使用队列让预定客户排队等候已定客户退票后再实现买票功能二、设计任务使用C语言实现各个模块的功能.三、设计工作量 本人独自完成这些基本要求,完成了航班信息的输入,查询航线的功能以及订票和退票等功能的实现!进度安排起止日期工作内容2010-6-27设计本程序思路2010-6-28实现子程序模块函数2010-6-29将子程序和主程序构建成完整的C源程序,并且进行相关编译调试2010-6-30数据测试、形成文档主要参考资料<<面向对象C语言程序设计>><<数据结构(C语言版)>><<图算法>><<Windows系统编程-第三版>>指导教师(签字): 年 月 日系(教研室)主任(签字): 年 月 日数据结构设计说明书数据结构课程设计航空客运订票系统起止日期: 2010 年 6 月 28日 至 2010年 7 月 日学生姓名班级学号成绩指导教师(签字)计算机与通信学院(部)年 月 日湖南工业大学课程设计情况分析表课程设计名称数据结构设计周数17周学院(部)计算机与通信学院系(教研室)通信工程系指导教师文志诚学生专业、班级通信工程0903选题航空客运订票系统成绩分布优良中及格不及格学生数百分比学生课程设计存在的主要问题改进措施及建议指导教师(签字): 年 月 日系(教研室)主任(签字): 年 月 日备注:本表在课程设计完成后由指导教师填写,与课程设计资料一起存档。 目录1. 题目及需求分析 VI2. 概要设计 VII3. 详细设计 X4. 调试分析 XIX5. 用户手册 XXI6. 测试结果 XXIII7. 附录 程序清单 XXV题目:航空客运订票系统扩展:增加了运行面板的颜色;增加添加了进入要密码输入功能;显示功能比要求的多了些,意在增加程序的智能化一 . 需求分析( 1 ) 以线性表存储航班信息,以队列存储预定客户的名单。( 2 ) 设计交互界面 , 用户只需输入选择就可做想做的事情.( 3 ) 用户可以自己输入航班信息的多少 , 然后由程序自动打印出航班信息.( 4 ) 一切操作都有向导.二 . 概要设计1. 设定线性表的抽象数据类型定义 :ADT List 数据对象 : D=ai|aiint, i = 0,1,2n , n0数据关系 : R1= <ai-1,ai> | 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> | ai-1,ai D,i=2,n 基本操作 :InitQueue(&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) 队列模块-实现队列抽象数据类型各模块之间的调用如下: 主函数模块主程序模块队列模块线性表模块 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.h"typedef 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 feixingzhouri;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(!insertlinklist(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->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->next=L->next;L->next=p;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->zhongdianzhan-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(piao<=p->yupiaoliang)h=p->yiding;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 <=3)h->dingpiaoliang=piao;h->next1 =h1->next1 ;h1->next1 =h;p->yupiaoliang=p->yupiaoliang -piao;printf("订票成功!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("有人预定,是否预定?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 <1)printf("没有这等窗位等级!n");break;printf("n");q1->next2 =NULL;q.rear ->next2 =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("请输入你的名字:"); scanf("%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: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 );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->hangbanhao);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号最近一天的航班信息如下所示:nn",i);dop=p->next ;j=p->feixingzhouri -i;if(fabs(j)<=1)printf("t航班信息%d如下:n",k);printf("t航班号:%dn",p->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)printf("还没有订票!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->hangbanhao);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->yupiaoliang =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->dingpiaoliang =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("为客户预定票成功!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. 本次作业有点难度 , 特别是后期在原来的程序上做了些扩展, 如生成底色,添加密码功能,还有过多的提示更显得智能,刚开始很难做好,经过调试终于做好了。2. 在退票功能区域中,开始时用h->dingpiaoliang piao=0时不管有没有人入队列,总是提示没有人如队列,后来调试用h->dingpiaoliang =piao后就行了,因为后面的需要不能改变h->dingpiaoliang3. 在调试过程中使用scanf(“%dn”,&n);总是不能得出想要的结果,后来老师调试后才知道是scanf(“%d”,&n);所以编程时要持着严谨的态度,不断调试。4. 程序源代码中仍有部分重复代码,可以模块化,实现代码重用.5. 在运行时屏幕不能拉动,这是个缺陷。五.用户手册1.本程序的运行环境为 DOS 操作系统, 执行文件为hangkongxitong.exe.2.进入演示程序后 , 即显示文本方式的用户界面:要是连续三次没有输入正确的密码就显示出如下界面:3. 输入正确的密码后显示出主界面的提示信息.如下图:4. 进入 “航班信息” 命令后, 程序 立即显示如下图:5.进入 “订票业务” 命令后, 程序进入如下界面:6.进入“查询功能”后,程序进入如下界面:7.进入“退票功能”后进入如下界面:六. 测试结果1. 输入不正确时会分别显示如下信息:2. 输入如下正确数据:3. 查询航线的几种方法:4. 订票业务:5. 退票业务:6. 推出界面:七 附录 程序清单:#include "stdafx.h"#include "malloc.h"#include "math.h"#include "stdio.h"#include "stdlib.h"#include "string.h"#include "conio.h"#include "process.h"typedef 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 feixingzhouri;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;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("飞机号n");scanf("%d",&p->feijihao);printf("终点站n");scanf("%d",&p->zhongdianzhan);printf("飞行周日n");scanf("%d",&p->feixingzhouri);pr

    注意事项

    本文(数据结构课程设计航空客运订票系统.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开