




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上目 录设计目的1总体设计1详细设计3调试与测试4源程序代码4程序运行截图16仍存在的问题18心得体会18设计进度表19参考文献20一、 正文(一) 设计目的:假定民航机场共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额。设计一飞机订票系统,使之能提供下列服务:1、航班信息录入功能(航班信息用文件保存) 包括航班号、起始站、终点站、机票总数、已售机票数;2、航班信息浏览功能3、查询航线:按航班号查询、按终点站查询、按航线查询4、承办订票和退票业务(可选项)5、修改航班信息6、删除航班信息(二) 总体设计:编写一个飞
2、机订票系统的程序,使该系统能够实现对航班信息的录入、浏览、查询、修改、删除以及订票、退票的功能。根据题目要求,首先要制作一个主菜单显示出各个操作的提示可供用户选择,进而一步步地深入操作。根据主菜单的内容再进一步编制具体操作的函数,各个功能均用专门编制的函数来完成。这就是看到题目后的最初的思路。因为飞机票管理系统含有各航班的各项信息,如航班号、航线、飞行时间、机票数目等必要信息,综合考虑决定用结构体数组比较合适,根据题目要求定义如下结构体类型:头文件包含、全局变量定义和结构体定义源代码:#include<stdio.h>/标准输入、输出头文件#include<string.h&
3、gt;/包含字符串函数处理头文件#include<stdlib.h>#define N 1000 /定义最多的航班数#define PRT "%-d%12s %12s %10s %12d %12dn",si.num,si.start,si.over,si.time,si.count,si.selled /定义输出格式#define LB " 航班号 起始站 终点站 时 间 机票总数 已售票数 n"/定义打印列表格式struct airint num;char start20;char over20;char time10;int count;
4、/机票总数int selled;/已预定机票总数sN;int i,m=0;/定义全局变量,记录下航班信息的数量char ii10;/用来选择是否继续的变量大概思路就是这样!详细设计(定义的每个函数均作介绍):1) 初始化界面函数(face函数) 在程序开始执行时调用该函数,在屏幕上打印出初始界面!并选择要执行的操作!2)信息输入函数(input函数) 该函数里面调用for循环控制,该函数中用到一个全局变量k,用来控制该函数被再次调用时可以在已存放信息结构体后面继续输入数据,每当一个完整的航班信息输入完毕后,会提示是否输入下一个信息!按"0"j结束输入!然后调用下面要介绍的信
5、息保存函数(save函数)!保存完毕后退回到主菜单!3) 信息保存函数(save函数)由于本程序设计时当输入机票总数不是正数时就会结束保存航班信息,所以进入save函数时首先判断机票总数是否大于0,大于0时候开始进入主体部分执行!主要过程是先打开文件,文件打开成功后调用文件格式输出函数(fprinf函数)将信息保存到文件中区!4) 文件读取函数(read函数)该函数首先打开保存飞机票信息的文件,然后将保存的信息写到飞机信息的结构体数组里面去(调用格式输入函数fscanf),并将航班信息输出到屏幕上!输入完毕后关闭文件!5) 信息打印函数(print函数)该函数只是负责把调用read函数,并打印
6、出航班信息输出事的一些辅助信息! 6)航班信息查找函数本函数用do.while 循环控制结构,进入函数后选择查询方式(可以按航班号、终点站、航线查询),方式选择后用switch语句飞机的航班号(或者起始站、终点站)!从switch语句出来后,首先调用文件读取函数(read函数),输出所有航班信息到屏幕上,然后在if语句中判断刚才所输入飞机的航班号(或者起始站、终点站)与数组中那个航班信息符合,找到后打印出来!循环结束后,输入“yes”(“no”),while判断输入的条件继续(终止查找)!选择终止查找后返回主菜单! 7)航班信息删除函数(Delete)航班删除模块与查找函数类似,也是用的do.
7、while 循环控制结构,不同时要先输入密码才能进入函数!进入函数后要选择删除方式(按航班号、航线)删除,输入要删除的航班号(航线)后,比如说选择按航班号删除,找到要删除的航班数组下标i后,用for(int j=i;j<m;j+) sj=sj+1; 方式实现删除,删除完毕后打印出删除过的航班信息列表,然后选择“no”结束该函数,返回到主菜单!8) 订票函数(Book函数)首先调用查询函数(search函数),找到要预订机票的航班,然后输入要顶的机票数目,根据输入的机票书修改已售机票书数值!然后保存信息!9) 退票函数(Refund()函数与订票函数类似,首先调用查询函数(search函数
8、),找到要预订机票的航班,然后输入要退的机票数目,根据输入的机票书修改已售机票书数值!然后保存信息!10) 修改函数(Modify函数)该函数与输入函数类似,把数组里面的信息重新输入一遍达到修改航班信息的功能!11) main函数输入密码后进入main函数,然后main函数负责调用以上程序就行了!源程序代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#define N 200struct airint num;char start20;char over20;char time10;int co
9、unt;/机票总数int selled;/已预定机票总数sN;#define PRT "%-d%12s %12s %10s %12d %12dn",si.num,si.start,si.over,si.time,si.count,si.selled /定义输出格式#define LB " 航班号 起始站 终点站 时 间 机票总数 已售票数 n"/定义打印列表格式void face();void input();void print();void search();void Delete();void Booking();void Modify();voi
10、d Refund();void save();void read();int i,m=0,k=0;void face()system("color 0E");puts(" "); puts(" * 飞机票管理系统欢迎您 *"); puts(" *"); puts(" * 你可以选择下面的操作: *"); puts(" * 1.输入航班信息 *"); puts(" * 2.浏览航班信息 *"); puts(" * 3.查询航班信息 *")
11、;puts(" * 4.删除航班信息 *"); puts(" * 5.订票信息 *");puts(" * 6.修改信息 *"); puts(" * 7.退票信息 *"); puts(" * 0.退出 *"); puts(" *");puts(" * 制作人:# 学号:1 *");puts(" ");void main()/delay(1000);system("color a0");/设置背景和字体颜色/system
12、("color 100");/yanseint j;char f="" /设置密码 int y; printf(" 飞 机 票 管 理 系 统nn"); while(1) printf(" 请 输 入 密 码 进 入 系 统:n "); scanf("%s",f); /读取密码 if(strcmp(f,"")=0) while(1) system("cls"); face(); printf("请在0-7中选择以回车键结束: "); s
13、canf("%d",&j); system("cls");switch(j) case 1: input();/调用输入模块 break; case 2:print();/调用打印模块 break; case 3:search();/调用查询模块 break; case 4:Delete();/调用删除模块 break; case 5:Booking();/调用订票模块 break; case 6:Modify();/调用修改模块 break; case 7:Refund();/调用退票模块 break; case 0:goto end; pri
14、ntf("n按任意键继续."); else int yy; printf(" 输入密码错误!请检查您的密码是否正确! nn"); printf(" 是否继续输密码?按任意键继续,0结束!n",m); scanf("%d",&y);/在此需输入任意一个整数值数值,程序才能继续执行 if(y=0) break; end:printf(" (= =) 欢 迎 再 次 回 来 (= =)n"); printf(" 任意键退出系统!n"); int hp2; scanf(&qu
15、ot;%d",&hp2); void input()system("color 8f");printf("请依次输入航班信息(机票总数为0结束输入): " "完成输入信息请键入w以回车键结束 n"); /打印提示信息 printf("- n"); int y; for(i=k;i<N;i+) printf("请输入航班号: "); scanf("%d",&si.num); /读取航班号 printf("请输入起始站: ");
16、 scanf("%s",si.start);/读取起始站 printf("请输入终点站: "); scanf("%s",si.over);/读取终点站 printf("请输入时间(星期): "); scanf("%s",si.time);/读取时间 printf("请输入总机票数(0结束): "); scanf("%d",&si.count);/读取机票数printf("请输入已售机票数: "); scanf("%d&
17、quot;,&si.selled);/读取机票数 m+;/飞机信息录入计数 k+; printf(" 第%d个信息已经输完是否继续?按任意键继续(0结束)n",m); scanf("%d",&y);/在此需输入任意一个整数值数值,程序才能继续执行 if(y=0) save();/保持输入数据 break; void save()/保存模块程序 if(s0.count>0)system("color 78"); FILE *fp;/定义文件指针 if(fp=fopen("D:飞机票系统数据保存.txt&q
18、uot;,"w+")=NULL)/打开文件并判断是否出错 printf("文件打开失败! ");/打印出错提示 else fprintf( fp,LB); fprintf( fp,"=n "); for(i=0;i<m&&si.count>0;i+) fprintf(fp,PRT); fclose(fp);/关闭文件 int hp; printf(" 信息保存到文件成功!任意键返回主菜单!nn"); scanf("%d",&hp);elseint k;prin
19、tf("飞机票总数为零!输入结束!n"); printf(" 任意键返回主菜单!nn"); scanf("%d",&k);void read()/从文件读取信息模块system("color E0"); FILE *fp;/定义文件指针 if(fp=fopen("D:/飞机票系统数据保存.txt","r")=NULL)/打开文件,并判断是否出错 printf("创建文件失败! ");/打印出错提示 else for(i=0;i<m;i+) f
20、scanf(fp,"%-d%12s%12s%10s%12d%12dn ",&si.num,si.start,si.over,si.time,&si.count,&si.selled ); printf(PRT); fclose(fp);/关闭文件void print()/打印模块system("color 97"); char w10; printf("n 所有航班信息如下n"); printf(LB); read();/调用读取文件函数 printf("nn 按任意键回车键结束返回上层菜单: nn&
21、quot;); scanf("%s",w);void search()/查询模块system("color 5E"); char name120; char name220; char ii10; int n,no,flag=0;do printf("请选择查找方式:n ");/打印查询方式菜单 printf("1.按航班号查找n " "2.按终点站查找n " "3.按航线查找 n" " 0.返回 n"); printf("请在0-3中选择:n
22、" "nn 按其他键以回车键结束返回主菜单:n "); scanf("%d",&n);/读取查找方式 if(n=0) break; switch(n) case 1: printf("请输入航班号: "); scanf("%d",&no);/航班号 break; case 2: printf("请输入终点站名称: "); scanf("%s",name2);/读取终点站 break; case 3: printf("请输入起始站名称: &q
23、uot;); scanf("%s",name1);/读取起始站 printf("请输入终点站名称: "); scanf("%s",name2);/终点站 break; default: break; printf("n 已经存在的航班如下nn"); printf(LB); read();/调用读取函数 for(i=0;i<m;i+) if(strcmp(si.over,name1)=0&&strcmp(si.over,name2)=0)/按终点站起始站判断输出条件 /printf("
24、n 查找航班信息成功!nn");printf("n 下面是你要查找的航班信息nn "); flag=1; printf(LB); printf(PRT);/打印信息 break; if(strcmp(si.over,name2)=0) printf("n 下面是你要查找的航班信息nn "); flag=1; printf(LB); printf(PRT);/打印信息 break; if(si.num=no)/按航班号判断输出条件 printf("n 下面是你要查找的航班信息nn "); flag=1; printf(LB);
25、 printf(PRT);/打印信息 break; no=0;/将航班号赋值为0 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);/判断结束whil
26、e(strcmp(ii,"no")=0)break;void Delete()/删除模块system("color 1E"); char name120; char name220; char ii10; char f=""/设置密码 int no,n,flag=0; printf("请输入密码并以回车键结束: n"); scanf("%s",f);/读取密码 if(strcmp(f,"")=0) /判断密码是否正确 do printf("请选择删除以方式回车键结束
27、:n ");/打印删除方式菜单 printf("*1.按航班号删除 n" " *2.按航线删除n " "*0.返回n "); printf("nn 请在0-2中选择以回车键结束: n"); scanf("%d",&n);/读取删除方式 if(n=0) break; /跳出循环 switch(n) case 1: printf("请输入航班号: "); scanf("%d",&no);/读取航班号 printf("n 已经
28、存在的航班如下nn"); read();/调用读取函数 break;/跳出循环 case 2: printf("请输入起始站 名称: "); scanf("%s",name1);/读取起始站 printf("请输入终点站名称: "); scanf("%s",name2);/读取终点站 printf("n 已经存在的航班如下nn"); read();/调用读取函数 break;/跳出循环 printf("n 删除后的航班如下nn");/ for(i=0;i<m;
29、i+) if(si.num=no)/按航班号删除 printf(LB); flag=1; for(int j=i;j<m;j+) sj=sj+1; m-; for(int i=0;i<m;i+) printf(PRT); if(strcmp(si.start,name1)=0&&strcmp(si.over,name2)=0) flag=1; printf(LB); for(int k=i;k<m;k+) sk=sk+1; m-; for(int i=0;i<m;i+) printf(PRT); if(flag) printf("n 您需要的信
30、息查找完毕: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; else printf("n 对不起密码错误!您不是
31、管理员,不能使用此项功能!n "); int q; scanf("%d",&q); void Booking()/订票模块system("color 0E"); int n; char a10; do search();/调用查询模块 printf("请输入您要订的机票数以回车键结束:n "); scanf("%d",&n);/读取所订机票数 if(n<0|si.count<n) printf("请输入有效的机票数! ");/判断机票数是否出错 if(si.
32、count!=0&&si.count>=n)/判断是否出错 si.selled=si.selled+n; save();/调用保存函数 printf("订票成功!nn "); printf(" 是否继续? 请输入yes或no以回车键结束: n");/判断是否继续订票 scanf("%s",a); while(!strcmp(a,"yes");/判断结束while(!strcmp(a,"no")break;/判断结束 void Refund()/退票模块 system(&qu
33、ot;color F0"); int n; char a10; do search();/调用查询模块 printf("请输入您要退的机票数目: "); scanf("%d",&n);/输入所退票数 if(n<0) /判断票数是否有效 printf("请输入有效的机票数! ");else si.selled=si.selled-n; save(); /调用保存模块 printf("退票成功! "); printf("是否继续? 请键入yes或no以回车键结束: ");/判
34、断是否继续退票 scanf("%s",a); while(!strcmp(a,"yes");/判断并跳出循环void Modify() /修改模块system("color 4E"); struct modify /定义结构体 int mo; char start120; char over120; char time120; int count1; int selled1; M1; char j10; char f=""/设置密码 int n; printf("请输入密码并以回车键结束: ")
35、; scanf("%s",f);/读取密码 if(strcmp(f,"")=0)/判断是否出错 printf(LB); read();/调用读取模块 do printf( "请选择修改方式:n " "*1:按航班号修改: n" " *2:按航线修改:n "); printf("请在1-2中修改以回车键结束: n"); scanf("%d",&n);/读取修改方式 switch(n) case 1:printf("请输入航班号: "
36、;); scanf("%d",&M0.mo);/读取航班号 break; case 2:printf("请输入起始站: "); scanf("%s",M0.start1);/读取起始站 printf("请输入终点站: "); scanf("%s",M0.over1);/读取终点站 break; for(int i=0;i<m;i+) if(strcmp(si.start,M0.start1)=0&&strcmp(si.over,M0.over1)=0)/判断输出条件
37、 printf(" 航班号 起始站 终点站 时 间 机票总数 已售票数 n"); printf(PRT); break; if(si.num=M0.mo)/判断输出条件 printf(" 航班号 起始站 终点站 时 间 机票总数 已售票数 n"); printf(PRT); break; M0.mo=0; /将结构体中的号为零 printf("n 请输入新航班号、起始站、终点站、时间(星期几)、机票总数、已售票数:n "); printf(" 航班号 起始站 终点站 时 间 机票总数 已售票数 n"); scanf
38、("%dt%st%st%st%d%d",&M0.mo,M0.start1,M0.over1,M0.time1,&M0.count1,&M0.selled1); /定义输入格式 si.num=M0.mo;/替换航班号 strcpy(si.start,M0.start1);/替换其始站 strcpy(si.over,M0.over1);/替换终点站 strcpy(si.time,M0.time1);/替换时间 si.count=M0.count1;/替换机票数si.selled=M0.selled1;/替换机票数 save();/调用保存模块 printf("是否继续?请键入yes或no以回车键结束:n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年双方委托担保合同范本
- 2025年企业员工停薪留职合同
- 2025年仓储租赁合同范本与签订策划流程
- 2025年合同管理流程重塑
- 2025年材料购买合同模板
- 2025年长期物流储存合同
- 2025年中国土地交易合同
- 2025年业务代表合同格式
- 2025年重新签订商业秘密策划保护合同
- 2025年加盟连锁业务合同范本
- GB/T 12723-2024单位产品能源消耗限额编制通则
- 海洋工程装备保险研究
- 2024年广东省深圳市中考英语试题含解析
- GB/T 16288-2024塑料制品的标志
- 麻风病防治知识课件
- 北师大版《书法练习指导》五年级下册教案、教学内容、教学计划、学情分析
- 3素炒圆白菜 教案
- 透析患者营养不良护理
- 学生消防安全常识问卷及答案
- 中小型无人驾驶航空器垂直起降场技术要求
- 2025年公务员考试时政专项测验100题及答案
评论
0/150
提交评论