飞机订票系统课程设计报告

上传人:开心****21 文档编号:48398660 上传时间:2022-01-04 格式:DOCX 页数:25 大小:53.92KB
返回 下载 相关 举报
飞机订票系统课程设计报告_第1页
第1页 / 共25页
飞机订票系统课程设计报告_第2页
第2页 / 共25页
飞机订票系统课程设计报告_第3页
第3页 / 共25页
点击查看更多>>
资源描述
飞机订票系统课程设计报告指导老师:班 级:学生姓名:学 号:完成日期:计算机科学与技术系飞机订票系统课程设计报告一、系统分析。1.1 根据飞机订票系统的设计目的, 设计内容和设计要求。本团队对飞机订票系统这一基础管理系统的业务进行了细致的分析讨论。最终我们决定将整个系统分成 7个主要模块。采用结构体这一数据结构来存放教师的信息。首先是信息录入模块,接下来输出模块,即浏览,查询,排序信息三个模块,最后是订票,退票模块。为降低操作难度,以及出错率,决定使用全局数组及变量进行操作。1.2 飞机订票系统简易图飞机订票系统/(一 上1.1dI 一 上10,退出.1.添加航 2.浏览航3.查询航 4,航班信 5.订票业 6,退票业班信国班信息,班信息评息排序 务, 务卡L |J喻入航班号.输入航班号蛉入褊轿却I .输入航班号,限人航班数11 .按航班从输入机票数力 小到大排列订票成功2 一从大到小排如输入起点站查询结果口输入终点站输入票价”L输入机票数.二、系统设计2.1 总体设计(主要功能)本程序包含六大主要模块添加信息模块; 浏览信息模块;信息查询模块;信息排序模块;订票模块;退票模块。整体程序采用全局数组fj (飞机)进行存储,全局变量pd (判断)作为标识变量。宏定义输出格式。采用 Y, N 的方式进行操作回退或继续操作的选择。航班信息包括:航班号,起点,终点,票价,数量及订票标志量(隐藏信息) 。输入模块,使用分条输入,以减少错误率并方便操作。浏览,查询及排序模块,组合成输出模块。多方式输出更便于观察并方便记录,同时为后续模块的执行提供操作基础。订,退票模块调用查询模块实现其功能。2.2 软件、硬件环境软件环境 VC2009硬件环境处理器 Intel(R) Core(TM) i5-3210M CPU 2.50GHz2.50 GHz;显卡 GTX65Q内 存 4.0GB操作系统 Windows 72.51 主要数据结构和程序的关系说明主要数据结构是结构体/ 定义结构体数组,航班信息struct hbxx2.4int hbh;char qd20;char zd20;float pj;int sl;int dcp;fjN;界面设计/定义航班号/起点站/终点站/票价/机票数量/订票标志量本程序开始运行的界面,共7个选项,简洁而大方。双迎使用飞机订票系自心自心自心 e厘号r: 班班班息务务 业票西壬 添浏查航工退12 3 4 5 6 0请在gf中选择以回主键结束:接下来是添加信息的界面。采用分条添加,清晰而明朗欢迎使用飞机可零系统息息息序期W1郎寿务诿浏查航膏青一苴站S班点.快d终挈机毕入人人人人完请荏明台中选择以回车键结束::清葆次输流舞淘ta 版舞息以回车犍结束):1s4 * = r.r. "1 -i m -, - UK"-一一- 一 - =. - 1 -.i/r. 一- -* - - - - -" - * - ”.Fr- -加 工山西二北素120 t 240否继续添加?清橇2或者n以回车施结束工浏览信息的界面,将所有航班信息显示在屏幕上。B心自心班珊班息热发 二国一加一死三一口上LJI JMJ- 4班票曲田添浏查航苴退12 3 4 5 6 0区在斤6中选择以回车键结束m前巷们有如下航班,价格机票数24D翩再起始站终点站12312342山西龙京I按回车犍返回上层菜单查询航班信息界面,根据用户输入的航班号,显示其航班信息。便于用户使用,查找。息息S.序: 班班班息务务班票西田 添浏查肮蔡退产在*6中选择以回车本束:3 卜ft入航班号.|uU山西询完毕,按回车键继续.终点站 北京票价机票数240航班排序界面,将所有航班根据航班号进行排序,可由用户选择是由大到小,还是由小到大息息息序 喑喧后<: 班班班息务务H1 - « 班票西田一一 禽查航订逼退一一12 3 4 5 6 0 -二 二 二 二 二 二 二 二 二二 二 二 二 二 二 二 二 二 二 二 二 二二 二 二 二 二 二 二 二 二 二 二机票数 240格比价12站占景终北站盟 为起山息=e 1,/TI:.一一束航 一一结的 一一键后号睛按回车健返回上层菜单订票界面,由用户输入需要订票的航班号,在进行订票操作一一息息息序F信崔国耶: -班班班息务务业业, X 班票西茁 一一添浏查航订退退 ! -1234560青在回f中选择以回车键结束:5靖输入航班号:2躁找的航班鹿遍终点站票价机票数山西北京120.SB240 .按国车键继续退票界面。12 3 4 5 6 0息息息信喧后<: 班班班息务务 ,冗几、见士 - 口也也班票西田 添浏查航订退退请在日f中选择以回车键结束:E请输入航班号:2终点站票价山西北乐1200机票数220完今询输票查M最. .何车键继虢要X的机票数目:12京礴续号请键入照加以回车犍结束2.5函数模块设计(函数功能说明和入口参数的说明)void xxtj();/信息添加的函数void xianshi();/显示航班信息void chazhao();/查找航班信息void dingpiao();/订票业务void tuipiao();/退票业务void duqu();/读取文件void baocun();/保存义件void scgs();/输出格式函数void paixu();/航班排序void chushihua();/系统初始化void jianli();/建立数据文件void paixu1();/按航班号从小到大排void paixu2();/从大到小三、系统实现主要代码/ 飞机订票系统/ 头文件#include<stdio.h>#include<string.h>#include<process.h>#define N 9999/ 标准输入,输出函数/ 包含字符串处理的头文件/ 包含 access 的头文件,用于系统初始化/ 定义最大航班数PRINTstruct hbxxint hbh;char qd20;char zd20;float pj;int sl;int dcp;fjN;#define"%dtt%stt%stt%.2ftt%dn",fji.hbh,fji.qd,fji.zd,fji.pj ,fji.sl/宏定义输出格式上/ 定义结构体数组 , 航班信息/ 定义航班号/ 起点站/ 终点站/ 票价/ 机票数量/ 订票标志量int i,m=0;char pd10="y"/ 函数声明void xxtj();void xianshi();void chazhao();void dingpiao();void tuipiao();void duqu();void baocun();void scgs();void paixu();void chushihua();void jianli();void paixu1();void paixu2();/ 主函数void main()int j;chushihua();/ 定义全局变量/ 信息添加的函数芦杰/ 显示航班信息祁海鹏/ 查找航班信息祁海鹏/ 订票业务李平/ 退票业务李平/ 读取文件蔡晓宏/ 保存文件蔡晓宏/ 输出格式函数祁海鹏/ 航班排序李平/ 系统初始化芦杰/ 建立数据文件芦杰/ 按航班号从小到大排蔡晓宏/ 从大到小蔡晓宏/ 主函数李平/ 系统初始化判断是否存在原始的数据文件printf("欢迎使用飞机订票系统n");/ 打印出系统主界面do(printf("= =n""ttt1.添加航班信息。n""ttt2.浏览航班信息。n""ttt3.查询航班信息。n""ttt4.航班信息排序。n""ttt5.订票业务。n""ttt6.退票业务。n""ttt0.退出。n"II =n");printf(" 请在0-6中选择以回车键结束:");scanf("%d",&j);switch(j)(case 1:xxtj();break; /调用信息添加函数case 2:xianshi();break;/调用显示模块case 3:chazhao();break;/调用查找模块case 4:paixu();break;/调用排序函数case 5:dingpiao();break;/调用订票模块case 6:tuipiao();break;/调用退票模块case 0:baocun();printf(" 谢谢使用,再见! n"); break;default:printf("输入有误! n");break;while(j!=0);/判断是否调用其他函数void chushihua()if(access("fjdpxt.dat",0)jianli();/定义系统初始化函数卢杰 elseduqu();void jianli()/ 定义建立数据文件函数卢杰FILE *fp;if(fp=fopen("fjdpxt.dat","wb")=NULL)/ 打印文件判断是否出错printf(" 创建文件失败! ");/ 打印出错提示getchar();return;printf(" 请依次输出航班信息( 以回车键结束):n");/ 打印提示信息printf("n");for(i=0;i<N;i+) printf(" 请输入航班号: ");scanf("%d",&fji.hbh);printf("请输入起始站:");scanf("%s",fji.qd);printf("请输入终点站:");scanf("%s",fji.zd);printf(" 请输入票价: ");scanf("%f",&fji.pj);printf(" 请输入机票数: ");scanf("%d",&fji.sl);fwrite(&fji,sizeof(struct hbxx),1,fp);m+;printf(" 添加完毕,是否继续添加?请键入y 或 n 以回车键结束: ");scanf("%s",pd); if(strcmp(pd,"y")!=0)/ 判断是否继续添加航班信息 fclose(fp);/ 关闭文件return;void duqu()/ 定义读取文件函数蔡晓宏FILE *fp;if(fp=fopen("fjdpxt.dat","r")=NULL) printf(" 创建文件失败! ");getchar();return;i=0;/ 逐块读取数据while(!feof(fp) / 判断是否遇到文件结束,fread(&fji,sizeof(struct hbxx),1,fp);i+;m+;/ 计算存在的航班数m-;fclose(fp);void baocun() / 定义保存函数蔡晓宏FILE *fp;if(fp=fopen("fjdpxt.dat","wb")=NULL)printf(" 创建文件失败! ");getchar();return;for(i=0;i<m;i+)/ 逐块保存数据fwrite(&fji,sizeof(struct hbxx),1,fp); fclose(fp);void xxtj()/ 定义添加航班信息函数卢杰doprintf(" 请依次输入您要添加的航班信息 ( 以回车键结束):n");/ 打印提示信息printf("n);printf(" 请输入航班号:");scanf("%d",&fjm.hbh);printf("请输入起点站:");scanf("%s",fjm.qd);printf("请输入终点站:");scanf("%s",fjm.zd);printf(" 请输入票价: ");scanf("%f",&fjm.pj);printf(" 请输入机票数: ");scanf("%d",&fjm.sl);m+;printf("添加完毕,是否继续添加?请键入y或者n以回车键结束:");scanf("%s",pd);while(!strcmp(pd,"y");/ 判断是否继续添加void scgs()/ 定义输出格式祁海鹏printf(" 航班号 tt 起始站 tt 终点站 tt 价格 tt 机票数 n");/信息标题for(i=0;i<m;i+) printf(PRINT);/ 打印出信息void xianshi()/ 定义显示航班信息函数祁海鹏printf("n 目前我们有如下航班: n");scgs();/ 调用输出格式函数printf("n 请按回车键返回上层菜单");getchar(); getchar();void chazhao()/ 定义查询函数祁海鹏int n;doprintf("n 请输入航班号:");scanf("%d",&n);/ 输入查询的航班号for(i=0;i<m;i+)if(fji.hbh=n) / 按航班号判定输出条件printf("n 您所查找的航班信息为 :n");printf(" 航班号 tt 起始站 tt 终点站 tt 票价 tt 机票数 nn");printf(PRINT); / 显示信息strcpy(pd,"y");printf("n 查询完毕,按回车键继续 ");getchar();getchar(); return;printf("n 对不起,没有您需要的信息! n");printf(" 是否重新查找?请键入y 或 n 以回车键结束: ");scanf("%s",pd);while(!strcmp(pd,"y"); / 判断是否重新查找void dingpiao()/ 定义订票业务函数李平char a10="y" dochazhao(); / 调用查询模块 if(strcmp(pd,"y") printf(" 对不起!没有找到您所需要的航班,所以不能订票。 n");printf("n 请按回车键返回上层菜单");getchar();getchar();strcpy(pd,"y");break; doprintf(" 请输入您要订的机票数(以回车结束) : ");scanf("%d",&fji.dcp);/ 输入所定机票数if(fji.dcp<=0)/ 判断机票数是否出错 printf(" 输入错误!至少需订1 张机票。 n");else if(fji.sl=0) /判断机票是否手售完printf(" 对不起,你所选择的航班的机票已售完! n"); break;else if(fji.sl!=0&&fji.sl>=fji.dcp) /判断机票数是否大于等于订票数fji.sl=fji.sl-fji.dcp; printf(" 订票成功! "); break;else if(fji.sl<fji.dcp)/ 判断机票数是否小于订票数printf(" 对 不 起 , 您 所 选 择 的 航 班 只 剩 %d 张 机 票 n",fji.sl);printf("是否需要重新输入机票数?请输入 y或n以回车键结束:");/ 判断是否重新输入订票数scanf("%s",a);while(!strcmp(a,"y");printf(" 是否需要订其他航班的机票?请输入y 或 n 以回车键结束:");scanf("%s",a);while(!strcmp(a,"y");/ 判断是否继续订票void tuipiao()/ 定义退票函数李平char a10;doint n=0;chazhao(); / 调用查找函数if(strcmp(pd,"y")printf(" 对不起!没有找到你所需要的航班,所以不能退票。 n");printf("n 请按回车键返回上层菜单");getchar();getchar();strcpy(pd,"n");break;printf(" 请输入您要退的机票数目: ");scanf("%d",&n);/ 输入所退票数if(n<=0)/ 判断票数是否有效printf(" 输入错误!至少需退1 张机票。 n");else if(n>=fji.dcp)printf(" 输入错误,退票量大于售出量。 n");elsefji.sl=fji.sl+n;printf(" 退票成功! ");printf(" 是否继续?请键入y 或 n 以回车键结束: ");/ 判断 是否继续退票scanf("%s",a);while(!strcmp(a,"y");/ 判定并跳出循环 void paixu() int n;/ 定义排序函数李平printf("n*n");printf("1.按航班号从小到大排序n"*"2. 按航班号从大到小排序n");printf("I* *");printf(" 请在 1-2 中选择以回车键结束: ");scanf("%d",&n);/ 输入排序方式switch(n)case 1:paixu1();break;/ 调用从小到大排序函数case 2:paixu2();break;/ 调用从大到小排序函数default:printf(" 输入有误!按默认输出。 n");printf(" 排序后的航班信息为: n");scgs();/ 显示排序后的航班信息printf("n 请按回车键返回上层菜单");getchar();getchar(); void paixu1() / 定义从小到大排序函数int k,j;struct hbxx t;for(i=0;j<m;i+)k=1;for(j=1;j<m;j+)if(fjk.hbh>fjj.hbh)k=j;if(i!=k)t=fjk;fjk=fji;fji=t;void paixu2() / 定义从大到小排序函数int k,j;struct hbxx t;for(i=0;j<m;i+)k=1;for(j=1;j<m;j+)if(fjk.hbh<fjj.hbh)k=j;if(i!=k)t=fjk;fjk=fji;fji=t;四、程序调试结果,测试过程中遇到的主要问题及采取的解决措施拿到课题,我们感觉不知该从那一步开始,制定了好多方案,想使用链表实现系统功能, 查询资料自学链表知识, 但是总是一知半解无法实现功能。然后我们决定使用指针,并且成功编完了程序,但是错误太多,经过修改仍无法完成调试。讨论决定果断放弃,采用全局结构体数组。这一决定,大幅度降低了编程的难度,我们完成了调试。但是运行中总是执行中断。查找资料,说可能是系统空间的问题,使用文件存储可以解决。但是文件方面的知识掌握得很不扎实,只能一手拿书一手查资料,展开工作。并且成功完成了调试运行,进行测试中发现有好多的BUG比如订票系统首次使用会报错,退票系统可退比订票量还多得票等等。 我们一 条一条修复。最终完成程序。五、总结经过本次程序设计,暴露出本团对的很多问题,首先是知识掌握 水平不一,作为组长因自身英语水平不高,果断决定所有变量及函数 名采用拼音缩写。然后是队员编出的程序无法完美兼容, 显示出我们 沟通的缺乏。同时也表现出我们知识的欠缺,对于链表,指针及文件的使用, 掌握的是在有限,仍需要不断学习,书本上的东西跟本无法完成一个 程序。每次报错我们需要根据错误修改,改不了的就上网查找原因。 还有好多好多的瑕疵。但是不得不承认,经过本次课题设计,也表现出队员们的很多优 点,思维缜密,查漏补缺,集体的力量是伟大,通过大家的讨论,总 能得到一个好的解决方案。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!