飞机订票系统程序设计课程设计-毕设论文.doc
《飞机订票系统程序设计课程设计-毕设论文.doc》由会员分享,可在线阅读,更多相关《飞机订票系统程序设计课程设计-毕设论文.doc(24页珍藏版)》请在咨信网上搜索。
山东工商学院 信电学院 高级语言程序设计课程设计报告 高级语言程序设计 课程设计报告 题目: 飞机订票系统程序设计 专 业 : 班 级 : 学 号 : 姓 名 : 指导教师 : 日 期: 山东工商学院信电学院 山东工商学院 信电学院 高级语言程序设计课程设计报告 1、程序基本功能要求 本程序首先输入用户名、密码进入系统;从菜单中选择可以输入机票信息对机票信息进行浏览、修改、查询、退订票等功能并可以通过其内部各类方 式或菜单内选项了解航班更细的信息。 (1)航班信息用文件保存,因而要提供文件的输入输出操作。 (2)航班信息的录入,其中包括了航班信息中的航班号、起始站、终点站、预售机票数 、已售机票数。 (3)航班信息浏览功能且提供显示操作。 (4)可以查询航线,查询方式有按航班号查询、按起点站查询、按终点站查询按航线查询、按飞行时间查询五种,可从各个方面进行查询,方便快捷。 (5)承办订票和退票业务,可显示剩余票数和已买票数。当票数被订或被退时票数会随之变化,统计较为灵活。 (6)提供键盘式选择菜单以实现功能选择。 2、总体设计. 编写一个飞机订票系统的程序使该系统能够实现对航班信息的录入、浏览、修改、查询以及订票、退票的功能。根据课程设计要求和本组人员的增补,首先要通过一个用户登录界面进入系统,其次要制作一个主菜单显示出各个操作的提示可供用户选择进而一步步地深入操作。根据主菜单的内容再进一步编制具体操作的函数,各个功能均用专门编制的函数来完成。因为飞机订票系统含有各航班的各项信息如航班号、航线、飞行时间、机票数目等必要信息所以就决定用刚学不久的结构体数组来存放航班的各项信息,这就是看到题目后的最初的思路。 在整个程序中,含有多种类型的头文件,包括了标准输入、输出头文件、字符串函数处理头文件、动态存储与释放函数头文件;在结构体数组中也对不同类型的数组进行不同的定义,例如: int flightno、int totalticket、char start[10]等;在各类信息的显示操作中,本系统在执行浏览、查询和退订票是充分利用函数的调用,利用switch()语句进行,简便实用;在此系统中,函数相互嵌套,形成了一个完整的系统。 本次设计需要编制初始化、建立数据文件、数据文件保存、增加航班信息、订票、退票业务等内容。首先需要设立一个初始化函数来得到航班信息。具体设计是第一次运行程序时自动生成保存航班信息的文件,并输入初始航班信息,待第二次开始就可以直接读取该文件获得已有的航班信息并可直接使用。运用了access函数判断文件是否存在。系统初始化后,没有寻找到数据文件则进行新建数据文件。此函数的作用就是进行新建文件数据的录入,运用到了文件指针的定义FILE *fp文件的打开fopen和关闭fclose、成块读写函数中的fwrite运用for循环进行各组数据的输入,用m++记录下输入的航班数量并运用if语句判断是否输入下一条航班信息,若不继续则返回主界面。系统初始化之后若原始数据文件存在则进行文件内航班信息的读取以供接下来程序中的各个函数来使用。在该函数中同样运用到了文件指针FILE *fp、文件的打开fopen和关闭fclose、成块读写函数中的fread、文件结束检测函数feof同时配合while语句控制文件的读取,m++记录下读取到的航班数量等。因为在飞机订票系统中涉及到飞机的订票和退票业务还有按航班号的排序功能,所以我就定义了这个保存函数来保存下每次运行系统后对整个订票系统涉及到的资料的修改。为了简便程序我就准备将此函数放在整个系统得推出选项中,这样就只在每次退出系统的时候进行一次保存将此次对文件修改的所有新信息都一次保存下来。这样就实现了整个系统运行时进行一次读取,推出时一次保存的设计大大简便了文件的调用和读取。保存函数运用到的知识点与读取函数大致相同。在这个函数中首先调用了search函数查找需要订票的航班。运用if语句实现订票时的多种情况,订票数输入不正确、飞机票数不足等情况。订票成功时运用s[i].totalticket=s[i].totalticket-n,s[i].sellticket=s[i].sellticket+n将已被订的机票数减去以显示新的即时航班信息。与订票函数相类似s[i].totalticket=s[i].totalticket+n,s[i].sellticket=s[i].sellticket-n。 只做稍稍修改就行退票成功是用.。 将航班的剩余票数加上去以显示即时航班信息。 模块分工: 进入系统菜单 、输出航班信息、订票信息由刘妍负责 输入航班信息、保存航班信息、读取航班信息由龚媛负责 查询航班信息、退票信息、修改信息部分由郭勇艳负责 3、详细设计 系统程序结构(流程图) 建立新数据文件 开始 系统初始化 修改 航班 信息 航班信息浏览 查找航班信息 订票业务 退票业务 退出并保存 从已有的数据文件读取 按航班号、起始站、时间、航线查找 输入的各类信息 录入信息系统流程图 利用fread(&s[i],sizeof(flight),1,fp)读取信息 fread(&s[i],sizeof(flight),1,fp); 文件打开否 输入信息 是否继续 将信息输出到磁盘 结束 开始 输出错误信息 航班信息浏览函数:[流程图]显示信息 开始 文件打开 查找航班信息 是否查找到 输入信息 是否继续 结束 输出错误信息 删除操作 查询模块:[流程图] .. 路线 终点站 起点站 开始 文件打开 查询方式 是否继续 结束 输出错误信息 航班号 飞行时间 4、程序运行结果(截图) 登陆系统时需输入用户信息 图1 进入系统后出现菜单供选择,选择需要进入的窗口 图2 航班信息的录入 图3 浏览航班信息 图4 航班信息的修改 图5 查询菜单 图6 通过航班号和时间进行查询 图7 系统订票 图8 退票系统 图9 退出系统 图10 5、源程序代码(代码中注明每段代码的完成人) /*用户名:dianke 密码:12345*/ #include<stdio.h> //标准输入、输出头文件 #include<string.h> //包含字符串函数处理头文件 #include<stdlib.h> //包含动态存储与释放函数头文件 #include<conio.h> //包含字符串的输入、输出头文件 #define N 10000 struct flight //定义结构体数组 { int flightno; char start[10]; char end[10]; char day[10]; int totalticket; int sellticket; } s[N]; int i; int m=0; #define PRINT "%-d%14s%13s%12s%12d%16d\n",s[i].flightno,s[i].start,s[i].end,s[i].day,s[i].totalticket,s[i].sellticket //定义输出格式 void menu(); //进入系统菜单 void print(); //输出航班信息 void booking(); //订票信息 void input(); //输入航班信息 void save(); //保存航班信息 void read(); //读取航班信息 void search(); //查询航班信息 void back(); //退票信息 void correct(); //修改信息 void menu() { int j; printf(" 欢迎进入飞机订票管理系统!\n"); printf("======================================================================\n"); do { printf(" 1.录入航班信息 \n"); printf(" 2.浏览航班信息 \n"); printf(" 3.修改航班信息 \n"); printf(" 4.查询航班信息 \n"); printf(" 5.订票信息 \n"); printf(" 6.退票信息 \n"); printf(" 0.退出航班信息管理系统 \n"); printf("======================================================================\n"); printf("请在0-6中选择以回车键结束:\n"); scanf("%d",&j); switch(j) { case 1: input(); //调用输入模块 break; case 2:print(); //调用打印模块 break; case 3:correct(); //调用修改模块 break; case 4:search(); //调用查询模块 break; case 5:booking(); //调用订票模块 break; case 6:back(); //调用退票模块 break; case 0:; break; } }while(j!=0); //判断结束 printf("谢谢使用,再见!\n"); } //主函数结束 void main() //打印主函数程序信息 { int i,k,part1,part2; char name[10]="dianke",password[10]={"\0"}; char person[10], c[10]="12345"; printf ("\t\t ********** 欢迎进入飞机订票管理系统!**********\n\n"); //打印提示信息 printf ("\t\t ~本系统由 、 、 编写完成~ \n\n"); printf ("\t\t ~(*^__^*)~ \n\n"); printf ("\t\t\t 用 户 登 录\n\n"); for(k=0;k!=3;) //打开文件并判断 { printf("\t\t\t\t 用户名:"); //打印用户名 gets(person); part1=strcmp(person,name); printf("\t\t\t\t 密码:"); //打印密码 for(i=0;i<5;i++) { c[i]=getch(); printf("*"); } gets(c); part2=strcmp(c,password); if(part1==0 && part2==0) { printf("\t\t\t\t 登陆成功!\n\n"); menu(); break; } else { printf ("\t\t\t 用户名或密码错误!\n\n"); printf ("\t\t\t 请注意:您还剩%d次机会!\n\n",2-k); k++; } } if (k=3) printf ("对不起,由于您输入的用户名或密码3次有误,已被强制退出。\n"); } void input() //打印模块程序 { int y; printf("请依次输入航班信息:\n"); //打印提示信息 printf("完成输入信息请键入w以回车键结束\n"); printf("--------------------------------------------------------------------------\n"); for(i=0;i<N;i++) { printf("请输入航班号:\n"); scanf("%d",&s[i].flightno); //读取航班号 printf("请输入起始站:\n"); scanf("%s",s[i].start); //读取起始站 printf("请输入终点站:\n"); scanf("%s",s[i].end); //读取终点站 printf("请输入时间:\n"); scanf("%s",s[i].day); //读取时间 printf("请输入预售票总数:\n"); scanf("%d",&s[i].totalticket); //读取预售票数 printf("请输入已售票总数:\n",m); scanf("%d",&s[i].sellticket); //读取已售票总数 m++; printf("第%d个信息已经输完是否继续?按任意数字键继续,按0结束",m); scanf("%d",&y); if(y==0) { save(); //将结构体信息存盘 print(); //输出输入的航班信息 break; } } } void save() //保存模块程序 { FILE *fp,*fp1; //定义文件指针 if((fp=fopen("chen.dat","wb"))==NULL) //打开文件并判断是否出错 { printf("创建文件失败!\n\n"); //打印出错提示 getchar(); return; } if((fp1=fopen("hao.dat","wb"))==NULL) //打开文件并判断是否出错 { printf("创建文件失败!\n\n"); //打印出错提示 getchar(); return; } for(i=0;i<m;i++) if(fwrite(&s[i],sizeof(struct flight),1,fp)==0) //向文件写入数据,并判断是否出错 printf("向文件输入数据失败!\n\n"); fprintf(fp1,"%d",m); fclose(fp); //关闭文件 fclose(fp1); //关闭文件 } void read() //从文件读取信息模块 { FILE *fp,*fp1; //定义文件指针 if((fp=fopen("chen.dat","rb"))==NULL) //打开文件,并判断是否出错 { printf("出错,请检查文件是否存在,按任意键返回住菜单");//打印出错提示 getchar(); } if((fp1=fopen("hao.dat","rb"))==NULL) //打开文件并判断是否出错 { printf("创建文件失败!\n\n"); //打印出错提示 getchar(); return; } fscanf(fp1,"%d",&m); fclose(fp1); //关闭文件 for(i=0;i<m;i++) { fread(&s[i],sizeof(flight),1,fp); //从文件中读取信息 } fclose(fp); //关闭文件 } void print() //打印模块 { char w[10]; read(); //调用读取文件函数 printf("航班号 起始站 终点站 时间 预售票总数 已售票总数\n"); for(i=0;i<m;i++) { printf(PRINT); //打印信息 } printf("请按任意键回车键结束返回上层菜单以:\n"); scanf("%s",w); } void search() //查询模块 { char startname[10]; char endname[10]; char day[10]; char p[10]; int n,no; do { printf("请选择查询方式:\n"); //打印查询方式菜单 printf("1.按航班号查询\n"); printf("2.按起点站查询\n"); printf("3.按终点站查询\n"); printf("4.按航线查询\n"); printf("5.按飞行时间查询\n"); printf("0.返回\n"); printf("请在0-5中选择:\n"); printf("按其他键以回车键结束返回主菜单:\n"); scanf("%d",&n); //读取查找方式 if(n==0) break; switch(n) { case 1: printf("请输入航班号:\n"); scanf("%d",&no); //航班号 break; case 2: printf("请输入起点站名称:\n"); scanf("%s",&startname); break; case 3: printf("请输入终点站名称:\n"); scanf("%s",endname); //读取终点站 break; case 4: printf("请输入起始站名称:\n"); scanf("%s",startname); //读取起始站 printf("请输入终点站名称:\n"); scanf("%s",endname); //终点站 break; case 5: printf("请输入飞行时间:\n"); scanf("%s",&day); break; } read(); //调用读取函数 for(i=0;i<m;i++) { if(strcmp(s[i].end,startname)==0||strcmp(s[i].end,endname)==0)//按终点站起始站判断输出条件 { printf("\n查询航班信息成功!\n"); printf("航班号 起始站 终点站 时间 预售票总数 已售票总数\n"); printf(PRINT); //打印信息 break; } if(s[i].flightno==no) //按航班号判断输出条件 { printf("\n查询航班信息成功!\n"); printf("航班号 起始站 终点站 时间 预售票总数 已售票总数\n"); printf(PRINT); //打印信息 break; } if(strcmp(s[i].day,day)==0) { printf("\n查询航班信息成功!"); printf("\n航班号 起始站 终点站 时间 剩余机票数 预售机票数\n"); printf(PRINT);//打印信息 break; } } no=0; //将航班号赋值为0 printf("没有您需要的信息或查找完毕:\n\n" "是否继续查找?请键入yes或no以回车键结束\n"); scanf("%s",p); }while(strcmp(p,"yes")==0); //判断结束 } void booking() //订票模块 { int n; char f[10]; do { search(); //调用查询模块 printf("请输入您要订的机票数以回车键结束:\n"); scanf("%d",&n); //读取所订机票数 if(n<0) { printf("请输入有效的机票数!\n"); //判断机票数是否出错 break; } if(s[i].totalticket!=0&&s[i].totalticket>=n) //判断是否出错 { s[i].totalticket=s[i].totalticket-n; s[i].sellticket=s[i].sellticket+n; save(); //调用保存函数 printf("订票成功!\n\n"); break; } if(s[i].totalticket<n) //判断是否出错 { printf("请输入有效的机票数:\n"); break; } printf("是否继续? 请输入yes或no以回车键结束:\n"); //判断是否继续订票 scanf("%s",f); }while(!strcmp(f,"yes")); //判断结束 } void back() //退票模块 { int n; char f[10]; do { search(); //调用查询模块 printf("请输入您要退的机票数目:\n"); scanf("%d",&n); //输入所退票数 if(n<0) //判断票数是否有效 printf("请输入有效的机票数!\n"); s[i].totalticket=s[i].totalticket+n; s[i].sellticket=s[i].sellticket-n; save(); //调用保存模块 printf("退票成功!\n\n"); printf("是否继续? 请键入yes或no以回车键结束:\n\n");//判断是否继续退票 scanf("%s",f); }while(!strcmp(f,"yes")); //判断并跳出循环 getchar(); } void correct() //修改模块 { struct cor //定义结构体 { int no; char startname[10]; char endname[10]; char day[10]; int totalticket; int sellticket; }x[1]; char j[10]; int n; { read(); //调用读取模块 do { printf( "请选择修改方式:\n"); printf( "*1,按航班号修改:\n"); printf( "*2,按航线修改: \n"); printf("请在1---2中修改以回车键结束:\n"); scanf("%d",&n); //读取修改方式 switch(n) { case 1:printf("请输入航班号:\n"); scanf("%d",&x[0].no); //读取航班号 break; case 2:printf("请输入起始站:\n"); scanf("%s",x[0].startname); //读取起始站 printf("请输入终点站:\n"); scanf("%s",x[0].endname); //读取终点站 break; } for(i=0;i<m;i++) { if(strcmp(s[i].end,x[0].startname)==0&&strcmp(s[i].end,x[0].endname)==0) //判断输出条件 { printf("航班号 起始站 终点站 时间 预售票总数 已售票总数\n"); printf(PRINT); break; } if(s[i].flightno==x[0].no) //判断输出条件 { printf("航班号- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 飞机 订票 系统 程序设计 课程设计 论文
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文