1、4)与订票函数相类似,只做稍稍修改就行退票成功是用pi.count=pi.count+n; 将航班的剩余票数加上去以显示即时航班信息。5)模块功能:设立一个初始化函数来得到航班信息。具体设计是第一次运行程序时自动生成保存航班信息的文件,并输入初始航班信息,待第二次开始就可以直接读取该文件获得已有的航班信息并可直接使用。运用了access函数判断文件是否存在。实验结果:实验源程序:#include /标准输入、输出头文件string.h /包含字符串函数处理头文件process.h /包含access函数的头文件#define M 1000 /定义最多的航班数#define E 1000stru
2、ct air /定义结构体数组 int num; /定义航班号 char start20; /航班起始站 char des20; /终点站 char time10; /飞行时间 int count; /机票数量 int price; /机票价格pM;struct client long id; /身份证 char name20; /客户姓名 int count ; /客户订票量 /航班号cE;int i,m=0,e=0; /定义全局变量char ii10;void add(); /函数声明增加航班信息函数void print(); /显示航班信息int search(); /查找航班信息voi
3、d dingpiao(); /订票业务void tuipiao(); /退票void read(); /读取文件 void save(); /保存文件void output(); /输出格式void chushihua(); /系统初始化void build(); /建立数据文件void del();void xiugai();void main() int j; / chushihua(); /系统初始化判断是否存在原始数据文件 printf( -您好,欢迎进入飞机订票系统!-n);=n do printf( - 1.增加航班信息 - nn - 2.浏览航班信息 - nn - 3.查找航班信
4、息 - nn - 4.订票业务 - nn - 5.退票业务 - nn - 6.修改航班信息 - nn - 0.退出 - nn=n请在0-6中选择以回车键结束:nn scanf(%d,&j); switch(j) case 1: add(); /调用增加航班函数 break; case 2:print(); /调用显示模块 case 3:search(); /调用查找模块 case 4:dingpiao(); /调用订票模块 case 5:tuipiao(); /调用退票模块 case 6:xiugai(); case 0: /退出系统 save(); printf(谢谢使用,再见! while
5、(j!=0); /判断是否调用其他函数void chushihua() /定义系统初始化函数 if( access(hangban.dat,0) build(); else read();void build() /定义建立数据文件函数 FILE *fp; /定义文件指针 if(fp=fopen(,wb)=NULL) /打开文件并判定是否出错 创建文件失败! /打印出错提示 getchar(); return;请依次输入航班信息(以回车键结束):n /打印提示信息- n for(i=0;iM;i+)请输入航班号: scanf(pi.num); /输入航班号请输入起始站:%s,pi.start)
6、; /输入起始站请输入终点站:,pi.des); /输入终点站请输入时间(星期几):,pi.time); /输入时间请输入机票数:pi.count); /输入机票数pi.price); fwrite(&pi,sizeof(struct air),1,fp); m+;添加完毕,是否继续添加?请键入y或n以回车键结束:,ii); if(strcmp(ii,y)!=0) /判断是否继续添加航班信息 fclose(fp); /关闭文件 return; void read() /定义读取文件函数r)=NULL) i=0; while(!feof(fp) fread(& /逐块读取数据 i+; /计算存在
7、航班数 m-; fclose(fp);void save() /定义保存函数)=NULL) m;i+) /逐块保存数据void add() /定义增加航班信息函数 do请依次输入您要增加的航班信息(以回车键结束): n printf( scanf(pm.num); /读取航班号,pm.start); /读取起始站,pm.des); /读取终点站请输入时间:,pm.time); /读取时间pm.count); /读取机票数 请输入价格:pm.price); /读取机票价格 m+; while(!strcmp(ii,); /判断是否继续添加void output() /定义输出格式函数航班号t起始
8、站t终点站tt 时间tt机票数tt价格n /信息标题 for(i=0;%dt %st %stt 星期%stt %dtt %dn,pi.num,pi.start,pi.des,pi.time,pi.count ,pi.price);/打印出信息 void print() /定义显示航班信息函数n目前我们有如下航班: output(); /调用输出格式函数n请按回车键返回上层菜单 getchar();int search() /定义查询函数 int h=0; char a20; char b20;n请输入航班起点站:,a); /输入查询的航班起点n请输入航班终点站:,b); if(strcmp(p
9、i.start,a)=0&strcmp(pi.des,b)=0) /按航班起点和终点站判定输出条件 n您所查找的航班信息为:n 航班号tt起始站tt终点站tt时间t机票数t机票价格 n%dtt%stt%stt星期%st%dt%dn /显示信息 n查询完毕,按回车键继续 h=1; getchar(); return h; n对不起,没有您需要的信息!是否重新查找?请键入y或n以回车键结束 /判定是否重新查找 void dingpiao() /定义订票业务函数 int h; int n; char a10=; h=search(); /调用查询模块 if(h=0)对不起!没有找到您所需要的航班,所
10、以不能订票。 /未查找到所需航班 getchar(); do请输入您要订的机票数(以回车键结束):n); /输入所订机票数 if(n=n) /判定机票数是否大于等于订票数请输入您的姓名: scanf(,ce.name);请输入您的身份证:ce.id); ce.num=pi.num; ce.count=n; n+; pi.count=pi.count-n;订票成功! else if(pi.countn)/判定机票数是否小于订票数对不起,你所选择的航班只剩 %d张机票n, pi.count);是否需要重新输入机票数?请输入y或n以回车键结束:/判定是否重新输入订票数 while(!strcmp(a
11、,是否需要订其他航班的机票? /判定是否继续订票void tuipiao() /定义退票函数 char a10; /调用查询函数没有找到您所需要的航班,所以不能退票。请输入您要退的机票数目: /输入所退票数 if(n=0) /判定票数是否有效至少需退1张机票。 else del(); pi.count=pi.count+n;退票成功! 是否继续? 请键入y或n以回车键结束: /判定是否继续退票 /判定并跳出循环 void del() int a,j,n;请输入您退票的航班号n for(a=0;ae;a+) if(ca.num=m) for(j=a;je-1; cj=cj+1;删除成功! e-;
12、void xiugai() int a,b,j,w,q; char h20,g20;请输入要修改的航班的航班号nb); if(pi.num=b)n请选择 ,1.修改城市,2修改时间,3价格,4,航班号,0退出na); if(a=1)请选择修改的是:1.起始站,2.终点站n if(j=1)请输入修改后的起始站:,h); strcpy(pi.start,h);修改成功 else if(j=2)请输入修改后的终点站: strcpy(pi.des,h); if(a=2)请输入修改后的时间n,g); strcpy(pi.time,g); if(a=3)请输入修改后的价格nw); pi.price=w;
13、if(a=4)请输入修改后的航班号nq);else if(a=0) save(); break;结果输出:心得体会:调试过程中曾经遇到过一些问题:订票或退票的时候不能将剩余的票数加上和减去。后来经过详细的检查与对照课本知识点找出了相应的错误点,经过修改加入票数加减语句,再经过与保存函数的配合后实现了题目要求的功能。调试成功。经过此次的课程设计,可以很明确的了解到自己哪些知识点掌握的比较好,哪些知识点运用的还不够熟练。通过此次课程设计也学会综合运用理论知识来分析和解决实际问题的能力、养成严谨的科学态度和良好的程序设计习惯,实现由知识向智能的初步转化;学会遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,完成设计、编写、调试和测试应用程序及编写文档的任务。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1