1、因为在飞机订票系统中涉及到飞机的订票和退票业务还有按航班号的排序功能,所以我就定义了这个保存函数来保存下每次运行系统后对整个订票系统涉及到的资料的修改。为了简便程序 我就准备将此函数放在整个系统得推出选项中,这样就只在每次退出系统的时候进行一次保存将此次对文件修改的所有新信息都一次保存下来。这样就实现了整个系统运行时进行一次读取,推出时一次保存的设计大大简便了文件的调用和读取。保存函数运用到的知识点与读取函数大致相同。在这个函数中首先调用了search函数查找需要订票的航班。运用if语句实现订票时的多种情况,订票数输入不正确、飞机票数不足等情况。订票成功时运用si.totalticket=si
2、.totalticket-n,si.sellticket=si.sellticket+n将已被订的机票数减去以显示新的即时航班信息。与订票函数相类似si.totalticket=si.totalticket+n,si.sellticket=si.sellticket-n。只做稍稍修改就行退票成功是用.。将航班的剩余票数加上去以显示即时航班信息。模块分工:进入系统菜单 、输出航班信息、订票信息由刘妍负责输入航班信息、保存航班信息、读取航班信息由龚媛负责查询航班信息、退票信息、修改信息部分由郭勇艳负责3、详细设计系统程序结构(流程图)录入信息系统流程图利用fread(&si,sizeof(flig
3、ht),1,fp)读取信息fread(&si,sizeof(flight),1,fp);航班信息浏览函数:流程图显示信息查询模块:流程图.4、程序运行结果(截图)登陆系统时需输入用户信息图1进入系统后出现菜单供选择,选择需要进入的窗口图2航班信息的录入图3浏览航班信息图4航班信息的修改图5查询菜单图6通过航班号和时间进行查询图7系统订票图8退票系统图9退出系统图105、源程序代码(代码中注明每段代码的完成人)/*用户名:dianke 密码:12345*/#include /标准输入、输出头文件string.h /包含字符串函数处理头文件stdlib.h /包含动态存储与释放函数头文件conio
4、.h /包含字符串的输入、输出头文件#define N 10000 struct flight /定义结构体数组 int flightno; char start10; char end10; char day10; int totalticket; int sellticket;sN;int i;int m=0;#define PRINT %-d%14s%13s%12s%12d%16dn,si.flightno,si.start,si.end,si.day,si.totalticket,si.sellticket /定义输出格式void menu(); /进入系统菜单void print()
5、; /输出航班信息 void booking(); /订票信息void input(); /输入航班信息void save(); /保存航班信息 void read(); /读取航班信息void search(); /查询航班信息void back(); /退票信息 void correct(); /修改信息void menu() int j; printf( 欢迎进入飞机订票管理系统!n);=n do 1.录入航班信息 n 2.浏览航班信息 n 3.修改航班信息 n 4.查询航班信息 n 5.订票信息 n 6.退票信息 n 0.退出航班信息管理系统 n请在0-6中选择以回车键结束: scan
6、f(%d,&j); switch(j) case 1: input(); /调用输入模块 break; case 2:print(); /调用打印模块 case 3:correct(); /调用修改模块 case 4:search(); /调用查询模块 case 5:booking(); /调用订票模块 break; case 6:back(); /调用退票模块 case 0:; while(j!=0); /判断结束谢谢使用,再见! /主函数结束void main() /打印主函数程序信息 int i,k,part1,part2; char name10=dianke,password10=0
7、; char person10, c10=12345printf (tt * 欢迎进入飞机订票管理系统!*nn /打印提示信息 printf (tt 本系统由 、 、 编写完成 nntt (*_*) nnttt 用 户 登 录nn for(k=0;k!=3;) /打开文件并判断 printf(tttt 用户名: /打印用户名 gets(person); part1=strcmp(person,name);tttt 密码: /打印密码 for(i=0;i5;i+) ci=getch();* gets(c); part2=strcmp(c,password); if(part1=0 & part2
8、=0) tttt 登陆成功!nn menu(); elsettt 用户名或密码错误! printf (ttt 请注意:您还剩%d次机会!,2-k); k+; if (k=3)对不起,由于您输入的用户名或密码3次有误,已被强制退出。void input() /打印模块程序 int y;请依次输入航班信息:完成输入信息请键入w以回车键结束n-nN;i+)请输入航班号:si.flightno); /读取航班号请输入起始站:%s,si.start); /读取起始站请输入终点站:,si.end); /读取终点站请输入时间:,si.day); /读取时间请输入预售票总数:si.totalticket);
9、/读取预售票数 printf(请输入已售票总数:,m); scanf(si.sellticket); /读取已售票总数 m+;第%d个信息已经输完是否继续?按任意数字键继续,按0结束y); if(y=0) save(); /将结构体信息存盘 print(); /输出输入的航班信息 void save() /保存模块程序 FILE *fp,*fp1; /定义文件指针 if(fp=fopen(chen.dat,wb)=NULL) /打开文件并判断是否出错 创建文件失败! /打印出错提示 getchar(); return; if(fp1=fopen(hao.datm; if(fwrite(&si,
10、sizeof(struct flight),1,fp)=0) /向文件写入数据,并判断是否出错向文件输入数据失败! fprintf(fp1, fclose(fp); /关闭文件 fclose(fp1);void read() /从文件读取信息模块rb)=NULL) /打开文件,并判断是否出错出错,请检查文件是否存在,按任意键返回住菜单/打印出错提示 fscanf(fp1,m); fread(& /从文件中读取信息void print() /打印模块 char w10; read(); /调用读取文件函数航班号 起始站 终点站 时间 预售票总数 已售票总数n printf(PRINT); /打印
11、信息请按任意键回车键结束返回上层菜单以:,w);void search() /查询模块 char startname10; char endname10; char p10; int n,no;请选择查询方式: /打印查询方式菜单1.按航班号查询n2.按起点站查询n3.按终点站查询n4.按航线查询n5.按飞行时间查询n0.返回n请在0-5中选择:按其他键以回车键结束返回主菜单:n); /读取查找方式 if(n=0) switch(n)请输入航班号:no); /航班号 case 2: printf(请输入起点站名称: scanf(startname); break;请输入终点站名称:,endna
12、me);请输入起始站名称:,startname); /终点站 case 5:请输入飞行时间:day); /调用读取函数 if(strcmp(si.end,startname)=0|strcmp(si.end,endname)=0)/按终点站起始站判断输出条件n查询航班信息成功! if(si.flightno=no) /按航班号判断输出条件 if(strcmp(si.day,day)=0)n航班号 起始站 终点站 时间 剩余机票数 预售机票数n/打印信息 no=0; /将航班号赋值为0没有您需要的信息或查找完毕: 是否继续查找?请键入yes或no以回车键结束n,p); while(strcmp(
13、p,yes)=0);void booking() /订票模块 int n; char f10; search();请输入您要订的机票数以回车键结束: /读取所订机票数 if(n=n) /判断是否出错 si.totalticket=si.totalticket-n; si.sellticket=si.sellticket+n; /调用保存函数订票成功! if(si.totalticketn) /判断是否出错请输入有效的机票数:是否继续? 请输入yes或no以回车键结束: /判断是否继续订票,f); while(!strcmp(f,);void back() /退票模块请输入您要退的机票数目: /
14、输入所退票数0) /判断票数是否有效 si.totalticket=si.totalticket+n; si.sellticket=si.sellticket-n; /调用保存模块退票成功! 请键入yes或no以回车键结束:/判断是否继续退票 /判断并跳出循环void correct() /修改模块 struct cor /定义结构体 int no; int sellticket; x1; char j10; /调用读取模块 printf( 请选择修改方式:*1,按航班号修改:*2,按航线修改: n请在1-2中修改以回车键结束: /读取修改方式printf(x0.no);请输入起始站:,x0.startname);请输入终点站:,x0.endname); if(strcmp(si.end,x0.startname)=0&strcmp(si.end,x0.endname)=0) /判断输出条件 if(si.flightno=x0.no) /判断输出条件
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1