版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.PAGE.目录设计目的………1总体设计………1详细设计………3调试与测试……………………4源程序代码……………4程序运行截图…………16仍存在的问题…………18心得体会………18设计进度表……………………19参考文献………20正文设计目的:假定民航机场共有n个航班,每个航班有一航班号、确定的航线〔起始站、终点站、确定的飞行时间〔星期几和一定的成员订额。设计一飞机订票系统,使之能提供下列服务:1、航班信息录入功能<航班信息用文件保存>包括航班号、起始站、终点站、机票总数、已售机票数;2、航班信息浏览功能3、查询航线:按航班号查询、按终点站查询、按航线查询4、承办订票和退票业务<可选项>5、修改航班信息6、删除航班信息总体设计:编写一个飞机订票系统的程序,使该系统能够实现对航班信息的录入、浏览、查询、修改、删除以及订票、退票的功能。根据题目要求,首先要制作一个主菜单显示出各个操作的提示可供用户选择,进而一步步地深入操作。根据主菜单的内容再进一步编制具体操作的函数,各个功能均用专门编制的函数来完成。这就是看到题目后的最初的思路。因为飞机票管理系统含有各航班的各项信息,如航班号、航线、飞行时间、机票数目等必要信息,综合考虑决定用结构体数组比较合适,根据题目要求定义如下结构体类型:头文件包含、全局变量定义和结构体定义源代码:#include<stdio.h>//标准输入、输出头文件#include<string.h>//包含字符串函数处理头文件#include<stdlib.h>#defineN1000 //定义最多的航班数 #definePRT"%-d%12s%12s%10s%12d%12d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count,s[i].selled//定义输出格式#defineLB"航班号起始站终点站时间机票总数已售票数\n"//定义打印列表格式structair{intnum;charstart[20];charover[20];chartime[10];intcount;//机票总数intselled;//已预定机票总数}s[N];inti,m=0; //定义全局变量,记录下航班信息的数量charii[10]; //用来选择是否继续的变量大概思路就是这样!详细设计〔定义的每个函数均作介绍:初始化界面函数〔face函数在程序开始执行时调用该函数,在屏幕上打印出初始界面!并选择要执行的操作!2信息输入函数〔input函数该函数里面调用for循环控制,该函数中用到一个全局变量k,用来控制该函数被再次调用时可以在已存放信息结构体后面继续输入数据,每当一个完整的航班信息输入完毕后,会提示是否输入下一个信息!按"0"j结束输入!然后调用下面要介绍的信息保存函数〔save函数!保存完毕后退回到主菜单!信息保存函数〔save函数由于本程序设计时当输入机票总数不是正数时就会结束保存航班信息,所以进入save函数时首先判断机票总数是否大于0,大于0时候开始进入主体部分执行!主要过程是先打开文件,文件打开成功后调用文件格式输出函数〔fprinf函数将信息保存到文件中区!文件读取函数〔read函数该函数首先打开保存飞机票信息的文件,然后将保存的信息写到飞机信息的结构体数组里面去〔调用格式输入函数fscanf,并将航班信息输出到屏幕上!输入完毕后关闭文件!信息打印函数〔print函数该函数只是负责把调用read函数,并打印出航班信息输出事的一些辅助信息!6>航班信息查找函数本函数用dowhile循环控制结构,进入函数后选择查询方式〔可以按航班号、终点站、航线查询,方式选择后用switch语句飞机的航班号〔或者起始站、终点站!从switch语句出来后,首先调用文件读取函数〔read函数,输出所有航班信息到屏幕上,然后在if语句中判断刚才所输入飞机的航班号〔或者起始站、终点站与数组中那个航班信息符合,找到后打印出来!循环结束后,输入"yes"〔"no",while判断输入的条件继续〔终止查找!选择终止查找后返回主菜单!7航班信息删除函数〔Delete航班删除模块与查找函数类似,也是用的dowhile循环控制结构,不同时要先输入密码才能进入函数!进入函数后要选择删除方式〔按航班号、航线删除,输入要删除的航班号〔航线后,比如说选择按航班号删除,找到要删除的航班数组下标i后,用for<intj=i;j<m;j++>{s[j]=s[j+1];}方式实现删除,删除完毕后打印出删除过的航班信息列表,然后选择"no"结束该函数,返回到主菜单!订票函数〔Book函数首先调用查询函数〔search函数,找到要预订机票的航班,然后输入要顶的机票数目,根据输入的机票书修改已售机票书数值!然后保存信息!退票函数〔Refund<>函数与订票函数类似,首先调用查询函数〔search函数,找到要预订机票的航班,然后输入要退的机票数目,根据输入的机票书修改已售机票书数值!然后保存信息!修改函数〔Modify函数该函数与输入函数类似,把数组里面的信息重新输入一遍达到修改航班信息的功能!main函数输入密码后进入main函数,然后main函数负责调用以上程序就行了!源程序代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#defineN200structair{intnum;charstart[20];charover[20];chartime[10];intcount;//机票总数intselled;//已预定机票总数}s[N];#definePRT"%-d%12s%12s%10s%12d%12d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count,s[i].selled//定义输出格式#defineLB"航班号起始站终点站时间机票总数已售票数\n"//定义打印列表格式voidface<>;voidinput<>;voidprint<>;voidsearch<>;voidDelete<>;voidBooking<>;voidModify<>;voidRefund<>;voidsave<>;voidread<>;inti,m=0,k=0;voidface<>{system<"color0E">; puts<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★">;puts<"★*飞机票管理系统欢迎您*★">;puts<"★********************************************************★">;puts<"★*你可以选择下面的操作:*★">;puts<"★*1.输入航班信息*★">;puts<"★*2.浏览航班信息*★">;puts<"★*3.查询航班信息*★">; puts<"★*4.删除航班信息*★">;puts<"★*5.订票信息*★">; puts<"★*6.修改信息*★">;puts<"★*7.退票信息*★">;puts<"★*0.退出*★">;puts<"★********************************************************★">; puts<"★*制作人:#####__*★">; puts<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★">;}voidmain<>{ //delay<1000>; system<"colora0">;//设置背景和字体颜色//system<"color100">;//yanse intj; charf[]="1111111111";//设置密码inty;printf<"飞机票管理系统\n\n">;while<1>{printf<"请输入密码进入系统:\n">;scanf<"%s",f>;//读取密码if<strcmp<f,"1111111111">==0>{while<1> { system<"cls">; face<>; printf<"请在0-7中选择以回车键结束:">; scanf<"%d",&j>;system<"cls">; switch<j>{case1:input<>;//调用输入模块break;case2:print<>;//调用打印模块break;case3:search<>;//调用查询模块break;case4:Delete<>;//调用删除模块break;case5:Booking<>;//调用订票模块break;case6:Modify<>;//调用修改模块break;case7:Refund<>;//调用退票模块break;case0:gotoend;} printf<"\n按任意键继续">;}}else{ intyy;printf<"输入密码错误!请检查您的密码是否正确!\n\n">;printf<"是否继续输密码?按任意键继续,0结束!\n",m>;scanf<"%d",&y>;//在此需输入任意一个整数值数值,程序才能继续执行if<y==0>break;}}end:printf<"<=^^=>欢迎再次回来<=^^=>\n">; printf<"任意键退出系统!\n">; inthp2; scanf<"%d",&hp2>;}voidinput<>{system<"color8f">; printf<"请依次输入航班信息〔机票总数为0结束输入:""完成输入信息请键入w以回车键结束\n">;//打印提示信息printf<"\n">;inty;for<i=k;i<N;i++>{printf<"请输入航班号:">;scanf<"%d",&s[i].num>;//读取航班号printf<"请输入起始站:">;scanf<"%s",s[i].start>;//读取起始站printf<"请输入终点站:">;scanf<"%s",s[i].over>;//读取终点站printf<"请输入时间<星期>:">;scanf<"%s",s[i].time>;//读取时间printf<"请输入总机票数〔0结束:">;scanf<"%d",&s[i].count>;//读取机票数printf<"请输入已售机票数:">;scanf<"%d",&s[i].selled>;//读取机票数m++;//飞机信息录入计数k++;printf<"第%d个信息已经输完是否继续?按任意键继续<0结束>\n",m>;scanf<"%d",&y>;//在此需输入任意一个整数值数值,程序才能继续执行if<y==0>{ save<>;//保持输入数据break;}}}voidsave<>//保存模块程序{ if<s[0].count>0> { system<"color78">;FILE*fp;//定义文件指针if<<fp=fopen<"D:\\飞机票系统数据保存.txt","w+">>==NULL>//打开文件并判断是否出错{printf<"文件打开失败!">;//打印出错提示}else{fprintf<fp,LB>;fprintf<fp,"============================================================\n">;for<i=0;i<m&&s[i].count>0;i++>{fprintf<fp,PRT>;}}fclose<fp>;//关闭文件inthp;printf<"信息保存到文件成功!任意键返回主菜单!\n\n">;scanf<"%d",&hp>; } else { intk; printf<"飞机票总数为零!输入结束!\n">;printf<"任意键返回主菜单!\n\n">;scanf<"%d",&k>; }}voidread<>//从文件读取信息模块{ system<"colorE0">;FILE*fp;//定义文件指针if<<fp=fopen<"D://飞机票系统数据保存.txt","r">>==NULL>//打开文件,并判断是否出错printf<"创建文件失败!">;//打印出错提示elsefor<i=0;i<m;i++>{fscanf<fp,"%-d%12s%12s%10s%12d%12d\n",&s[i].num,s[i].start,s[i].over,s[i].time,&s[i].count,&s[i].selled>;printf<PRT>;}fclose<fp>;//关闭文件}voidprint<>//打印模块{ system<"color97">;charw[10];printf<"\n所有航班信息如下\n">;printf<LB>;read<>;//调用读取文件函数printf<"\n\n按任意键回车键结束返回上层菜单:\n\n">;scanf<"%s",w>;}voidsearch<>//查询模块{ system<"color5E">;charname1[20];charname2[20];charii[10];intn,no,flag=0;do{printf<"请选择查找方式:\n">;//打印查询方式菜单printf<"1.按航班号查找\n""2.按终点站查找\n""3.按航线查找\n""0.返回\n">;printf<"请在0-3中选择:\n""\n\n按其他键以回车键结束返回主菜单:\n">;scanf<"%d",&n>;//读取查找方式if<n==0>break;switch<n>{case1:printf<"请输入航班号:">;scanf<"%d",&no>;//航班号break;case2:printf<"请输入终点站名称:">;scanf<"%s",name2>;//读取终点站break;case3:printf<"请输入起始站名称:">;scanf<"%s",name1>;//读取起始站printf<"请输入终点站名称:">;scanf<"%s",name2>;//终点站break;default: break;}printf<"\n已经存在的航班如下\n\n">;printf<LB>;read<>;//调用读取函数for<i=0;i<m;i++>{if<strcmp<s[i].over,name1>==0&&strcmp<s[i].over,name2>==0>//按终点站起始站判断输出条件{//printf<"\n查找航班信息成功!\n\n">;printf<"\n下面是你要查找的航班信息\n\n">;flag=1;printf<LB>;printf<PRT>;//打印信息break;}if<strcmp<s[i].over,name2>==0>{printf<"\n下面是你要查找的航班信息\n\n">; flag=1;printf<LB>;printf<PRT>;//打印信息break;}if<s[i].num==no>//按航班号判断输出条件{printf<"\n下面是你要查找的航班信息\n\n">; flag=1;printf<LB>;printf<PRT>;//打印信息break;}}no=0;//将航班号赋值为0if<flag>{printf<"\n您需要的信息查找完毕:\n""是否继续查找?请键入yes或no以回车键结束\n">;scanf<"%s",ii>;}else{printf<"\n没有您需要的信息:\n""是否继续查找?请键入yes或no以回车键结束\n">;scanf<"%s",ii>;}}while<strcmp<ii,"yes">==0>;//判断结束while<strcmp<ii,"no">==0>break;}voidDelete<>//删除模块{ system<"color1E">;charname1[20];charname2[20];charii[10];charf[]="2010146104";//设置密码intno,n,flag=0;printf<"请输入密码并以回车键结束:\n">;scanf<"%s",f>;//读取密码if<strcmp<f,"2010146104">==0>//判断密码是否正确{do{printf<"请选择删除以方式回车键结束:\n">;//打印删除方式菜单printf<"*1.按航班号删除\n""*2.按航线删除\n""*0.返回\n">;printf<"\n\n请在0-2中选择以回车键结束:\n">;scanf<"%d",&n>;//读取删除方式if<n==0>break;//跳出循环switch<n>{case1:printf<"请输入航班号:">;scanf<"%d",&no>;//读取航班号 printf<"\n已经存在的航班如下\n\n">;read<>;//调用读取函数break;//跳出循环case2:printf<"请输入起始站名称:">;scanf<"%s",name1>;//读取起始站printf<"请输入终点站名称:">;scanf<"%s",name2>;//读取终点站printf<"\n已经存在的航班如下\n\n">;read<>;//调用读取函数break;//跳出循环} printf<"\n删除后的航班如下\n\n">;//for<i=0;i<m;i++>{if<s[i].num==no>//按航班号删除{printf<LB>;flag=1;for<intj=i;j<m;j++>{s[j]=s[j+1];}m--;for<inti=0;i<m;i++>{printf<PRT>;}}if<strcmp<s[i].start,name1>==0&&strcmp<s[i].over,name2>==0>{ flag=1;printf<LB>;for<intk=i;k<m;k++>{s[k]=s[k+1];}m--;for<inti=0;i<m;i++>{printf<PRT>;}}}if<flag>{printf<"\n您需要的信息查找完毕:\n""是否继续查找?请键入yes或no以回车键结束\n">;scanf<"%s",ii>;}else{printf<"\n没有您需要的信息:\n""是否继续查找?请键入yes或no以回车键结束\n">;scanf<"%s",ii>;}}while<strcmp<ii,"yes">==0>;//判断结束while<strcmp<ii,"no">==0>break;}elseprintf<"\n对不起密码错误!您不是管理员,不能使用此项功能!\n">;intq;scanf<"%d",&q>;}voidBooking<>//订票模块{ system<"color0E">;intn;chara[10];do{search<>;//调用查询模块printf<"请输入您要订的机票数以回车键结束:\n">;scanf<"%d",&n>;//读取所订机票数if<n<0||s[i].count<n>{printf<"请输入有效的机票数!">;//判断机票数是否出错}if<s[i].count!=0&&s[i].count>=n>//判断是否出错{s[i].selled=s[i].selled+n;save<>;//调用保存函数printf<"订票成功!\n\n">;}printf<"是否继续?请输入yes或no以回车键结束:\n">;//判断是否继续订票scanf<"%s",a>;}while<!strcmp<a,"yes">>;//判断结束while<!strcmp<a,"no">>break;//判断结束}voidRefund<>//退票模块{ system<"colorF0">;intn;chara[10];do{search<>;//调用查询模块printf<"请输入您要退的机票数目:">;scanf<"%d",&n>;//输入所退票数if<n<0>//判断票数是否有效printf<"请输入有效的机票数!">;else{s[i].selled=s[i].selled-n;save<>;//调用保存模块printf<"退票成功!">;}printf<"是否继续?请键入yes或no以回车键结束:">;//判断是否继续退票scanf<"%s",a>;}while<!strcmp<a,"yes">>;//判断并跳出循环}voidModify<>//修改模块{ system<"color4E">;structmodify//定义结构体{intmo;charstart1[20];charover1[20];chartime1[20];intcount1;intselled1;}M[1];charj[10];charf[]="2010146104";//设置密码intn;printf<"请输入密码并以回车键结束:">;scanf<"%s",f>;//读取密码if<strcmp<f,"2010146104">==0>//判断是否出错{printf<LB>;read<>;//调用读取模块do{printf<"请选择修改方式:\n""*1:按航班号修改:\n""*2:按航线修改:\n">;printf<"请在12中修改以回车键结束:\n">;scanf<"%d",&n>;//读取修改方式switch<n>{case1:printf<"请输入航班号:">;scanf<"%d",&M[0].mo>;//读取航班号break;case2:printf<"请输入起始站:">;scanf<"%s",M[0].start1>;//读取起始站printf<"请输入终点站:">;scanf<"%s",M[0].over1>;//读取终点站break;}for<inti=0;i<m;i++>{if<strcmp<s[i].start,M[0].start1>==0&&strcmp<s[i].over,M[0].over1>==0>//判断输出条件{printf<"航班号起始站终点站时间机票总数已售票数\n">;printf<PRT>;break;}if<s[i].num==M[0].mo>//判断输出条件{printf<"航班号起始站终点站时间机票总数已售票数\n">;printf<PRT>;break;}}M[0].mo=0;//将结构体中的号为零printf<"\n请输入新航班号、起始站、终点站、时间〔星期几、机票总数、已售票数:\n">;printf<"航班号起始站终点站时间机票总数已售票数\n">;scanf<"%d\t%s\t%s\t%s\t%d%d",&M[0].mo,M[0].start1,M[0].over1,M[0].time1,&M[0].count1,&M[0].selled1>;//定义输入格式s[i].num=M[0].mo;//替换航班号strcpy<s[i].start,M[0].start1>;//替换其始站strcpy<s[i].over,M[0].over1>;//替换终点站strcpy<s[i].time,M[0].time1>;//替换时间s[i].count=M[0].count1;//替换机票数s[i].selled=M[0].selled1;//替换机票数save
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中职(动物繁殖技术)畜禽人工授精实操阶段测试题及答案
- 2025年中职网络技术(网络设备进阶调试)试题及答案
- 禁毒安全教育课件
- 超高超限模板(盘扣式)安全专项施工方案
- 丹东全市消防安全工作会议
- 光伏开发培训
- 2026年自然资源部所属单位公开招聘634人备考题库(第一批)及完整答案详解一套
- 2026四川广安市华蓥市人力资源和社会保障局全市各见习基地招聘就业见习人员14人备考题库有答案详解
- 2026中央办公厅所属事业单位招聘13人备考题库及答案详解1套
- 建筑行业安全生产与文明施工指南(标准版)
- 2025天津市个人房屋租赁合同样本
- 中药热熨敷技术及操作流程图
- 鹤壁供热管理办法
- 01 华为采购管理架构(20P)
- 糖尿病逆转与综合管理案例分享
- 工行信息安全管理办法
- 娱乐场所安全管理规定与措施
- 化学●广西卷丨2024年广西普通高中学业水平选择性考试高考化学真题试卷及答案
- 人卫基础护理学第七版试题及答案
- 烟草物流寄递管理制度
- 被打和解协议书范本
评论
0/150
提交评论