1、机票管理系统1.设计的目的在一年的C语言的学习中,使得我掌握了许多的C语言的专业知识,为了能够提高自己的调试运行程序的能力,巩固自己知识,我设计了一个小型的程序,来给他人带来更多的方便。从而也增强了我的综合运用理论知识来分析和解决实际问题的能力,使我受到很大的帮助。我的选题是飞机订票系统的设置,在如今快速发展的时代,我们的交通工具也越来越趋向高速化,方便化,而飞机奔走两地又是十分的快捷的,随着更多的人的乘坐,我们就应该更方便的为客户服务,下面设置一个简单的飞机订票系统的C语言程序,可运用于小的管理软件。软件运用菜单实现交互式 管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可
2、以很好的满足用户的需要。2设计方案论证2.1设计思路 通过建立一个函数1,确定航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额,完成飞机订票系统。主函数可以调用子函数2,分别完成输入信息,保存信息,读取信息,输出信息,排序,查找信息,订票命令。在主函数中可以设置调用子函数3,分别按相应的数字键,则分别可以执行某个功能模。主要功能模块即如图1所示: 图1 飞机订票系统主要功能模块22设计方法根据所构想的功能及模块设计出与之相对算法并建立函数来实现功能4。 数据结构体的定义:将一个货物的信息作为一个结构体,由于利用链表所以在结构体中别忘记指向后继结点的指针。如下int
3、 count;p1; read(); for(j=0;j(m-1);j+)for(i=0;i(m-(1+j);i+) 通过主函数进行程序调用及连接以下函数5:read ():读取航班信息功能函数,运用if,for,scanf,printf,scanf等进行课程名称信息查询;paixu():按航班信息输出功能函数,运用if,for,scanf,printf,scanf,printf等进行航班名称信息查询;search():按航班号查询信息功能函数,运用if,for,scanf,printf,scanf,printf等进行航班名称信息查询;dingpiao()订票功能函数,运用if,for,sca
4、nf,printf,scanf,printf等进行航班名称信息查询。 (1)读取航班信息图2 读取航班信息流程图(2)输出航班信息 图3 输出航班信息流程图(3)查询航班信息图4 查找航班信息流程图(4)订票图4 订票流程图2.3 源程序#include /标准输入、:输出头文件 #include /包含字符串函数处理头文件 #include /包含动态存储与释放函数头文件 #define N 1000struct air /定义结构体数组 int num; char start20; char over20; char time10; int count; sN; int i; int m=
5、0; #define PRINT “%-d%12s%12s%10s%12dn”,si.num,si.start,si.over,si.time,si.count /定义输出格式 void input(); /输入航班信息 void print(); /输出航班信息 void save(); /保存航班信息 void read(); /读取航班信息void paixu(); / 对所有航班按航班号排序void search(); /查找航班信息 void dingpiao(); /订票信息 void main() int j; printf(“ -您好,欢迎进入自动化飞机订票系统!-n”); p
6、rintf(“=n”); do printf(“ *- - 1.输入航班信息 - -*nn” “ *- - 2. 浏 览 航 班 信 息 - -*nn” “ *- 3. 查 找 航 班 信 息 - -*nn” “ *- - 4.对航班按航班号排序-*nn” “ *- - 5. 订 票 信 息- -*nn” “ *- - 0.退出 - -*nn” “ *- - - -*nn” “ *- - - -*nn” “ *- - - -*nn”); printf(“=n”); printf(“请在0-5中选择以回车键结束:nn”); scanf(“%d”,&j); switch(j) case 1: in
7、put();/调用输入模块 break; case 2:print();/调用打印模块 break; case 3:search();/调用查找模块 break; case 4:paixu();/调用排序模块 break; case 5:dingpiao();/调用订票模块 break; case 0:; break; while(j!=0); /判断结束 printf(“谢谢使用,再见!n”); /主函数结束 void input()/打印模块程序 printf(“请依次输入航班信息(航班号,起始站,终点站,起飞时间,机票数):nn”);/打印提示信息 printf(“-n”); for(i
8、=0;iN;i+) int y;printf(“请输入航班号:n”); scanf(“%d”,&si.num); /读取航班号 printf(“请输入起始站:n”); scanf(“%s”,si.start);/读取起始站 printf(“请输入终点站:n”); scanf(“%s”,si.over);/读取终点站 printf(“请输入时间:n”); scanf(“%s”,si.time);/读取时间 printf(“请输入机票数(机票数为0结束输入):n”,m); scanf(“%d”,&si.count);/读取机票数 m+; printf(“第%d个信息已经输完是否继续?按1-9任意数
9、字继续,按0结束”,m); scanf(“%d”,&y); if(y=0) save();/将结构体信息存盘 print();/输出输入的航班信息 break; void save()/保存模块程序 FILE *fp,*fp1;/定义文件指针 if(fp=fopen(“chen.dat”,”wb”)=NULL)/打开文件并判断是否出错 printf(“创建文件失败!nn”);/打印出错提示 getchar(); return; if(fp1=fopen(“hao.dat”,”wb”)=NULL)/打开文件并判断是否出错 printf(“创建文件失败!nn”);/打印出错提示 getchar()
10、; return; for(i=0;im;i+) if(fwrite(&si,sizeof(struct air),1,fp)=0)/向文件写入数据,并判断是否出错 printf(“向文件输入数据失败!nn”); fprintf(fp1,”%d”,m); fclose(fp);/关闭文件 fclose(fp1);/关闭文件 void read()/从文件读取信息模块 FILE *fp,*fp1;/定义文件指针 if(fp=fopen(“chen.dat”,”rb”)=NULL)/打开文件,并判断是否出错 printf(“出错,请检查文件是否存在,按任意键返回住菜单”);/打印出错提示getch
11、ar(); if(fp1=fopen(“hao.dat”,”rb”)=NULL)/打开文件并判断是否出错 printf(“创建文件失败!nn”);/打印出错提示 getchar(); return; fscanf(fp1,”%d”,&m); fclose(fp1);/关闭文件 for(i=0;im;i+) fread(&si,sizeof(struct air),1,fp);/从文件中读取信息 fclose(fp);/关闭文件 void print()/打印模块 char w10; read();/调用读取文件函数 printf(“航班号 起始站 终点站 时间 机票数n”); for(i=0;
12、im;i+) printf(PRINT);/打印信息 printf(“请按任意键回车键结束返回上层菜单:n”); scanf(“%s”,w); void paixu()/对所有航班按航班号排序 int j;struct paiint no;char name120;char name220;char time20;int count;p1;read();for(j=0;j(m-1);j+)for(i=0;isi+1.num) p0.no=si.num;/替换航班号 strcpy(p0.name1,si.start);/替换其始站 strcpy(p0.name2,si.over);/替换终点站
13、strcpy(p0.time,si.time);/替换时间 p0.count=si.count;/替换机票数si=si+1;si+1.num=p0.no;/替换航班号 strcpy(si+1.start,p0.name1);/替换其始站 strcpy(si+1.over,p0.name2);/替换终点站 strcpy(si+1.time,p0.time);/替换时间 si+1.count=p0.count;/替换机票数 save();print();void search()/查询模块 char ii10; int no; do printf(“请输入你要找的航班号:nn”);/打印查询方式菜
14、单 scanf(“%d”,&no);/航班号 read();/调用读取函数for(i=0;im;i+) if(si.num=no)/按航班号判断输出条件 printf(“n查找航班信息成功!n”); printf(“航班号 起始站 终点站 时间 机票数n”); printf(PRINT);/打印信息 break; no=0;/将航班号赋值为0 printf(“没有您需要的信息或查找完毕:nn” “是否继续查找?请键入yes或no以回车键结束n”); scanf(“%s”,ii); while(strcmp(ii,”yes”)=0);/判断结束 void dingpiao()/订票模块 int
15、n; char a10; do search();/调用查询模块 printf(“请输入您要订的机票数以回车键结束:n”); scanf(“%d”,&n);/读取所订机票数 if(n=n)/判断是否出错 si.count=si.count-n; save();/调用保存函数 printf(“订票成功!nn”); break; if(si.countn)/判断是否出错 printf(“请输入有效的机票数:n”); break; printf(“是否继续? 请输入yes或no以回车键结束:n”);/判断是否继续订票 scanf(“%s”,a); while(!strcmp(a,”yes”);/判断
16、结束 3.设计结果与分析 在Microsoft Visual C+ 6.0环境中输入源程序,在没有提示错误的情况下编译,生执行文件.在输入1键回车后提示输入飞机的航班号、起始点、终止点、时间、票数,用户可以把要输入的信息按要求进行输入。图5 运行程序进入主菜单界面运行主函数时,进行airfile()文件的读取,该函数是一个菜单函数,用Switch语句来读取飞机的航班的个信息。根据用户的选择数据,分别调用其他自定义函数,实现了函数的调用。 在输入2回车后提示输入飞机的航班号、起始点、终止点、时间、票数,用户可以把要输入的信息按要求进行输入。图6输入飞机航班界面是调用函数add()的结果,再add
17、()函数中,首先用scanf函数接收用户输入并用prinf输出输入的航班信息. ,用fopen函数进行打来文件判断是否出错,用fclose关闭文件,用fread进行读取文件。 在输入3按回车键,输入航班的航班号,起始站,终点站,时间,票数,再按0键结束程序,此时程序会显示出输入的所有的航班信息。图7结束输入指定的航班信息界面是调用函数add()的结果,再add()函数中,首先用scanf函数接收用户输入的航班信息,当输入的信息完成时,就输入0按回车键,就不再输入飞机的订票情况,此时会显示所有输入进去的信息按任意键返回上层菜单,并且输入3查找航班信息 ,输入你要查找的飞机的航班号,就会显示你要找
18、的飞机的信息。图8查找航班信息先用int no 定义输入的航班号,然后用printf输入你要找的航班号,再用read()读取函数来查找航班用search()查找航班信息,用for循环来进行飞机航班的查询,当查找信息完毕后,继续进行下一项。 当系统完成上一个功能,显示是否要继续查找时,输入no,就要再次返回上层菜单,这时你输入5按回车键,输入你要订的飞机航班号,就会查找并显示订票成功。图9 进行订票用dingpiao()函数完成订票功能,用先调用search输入航班的票数,用scanf读取所订票数,再输入有效票数,用save()调用保存函数,看是否订票成功,再继续进行。4.设计体会我这次在C语言
19、程序设计课程中,我做的设计的题目是“飞机订票系统”。通过近一周的上机操作,我充分的应用了所学的C语言的知识,粗略设计出并成功的运行起该系统。这说明我这次的课程设计是比较成功的,但更为重要的是我又进一步了解了C语言,加深了对C语言的认识,充分的将课本知识进行梳理、整合之后应用到了实际的工作需要中。以实现学以致用,学有所用。同时也增加了我对C语言的兴趣,激起了学习的热情。当然,由于学艺不精,在课程设计的过程也碰到的一些问题。其中,不乏一些简单的基础性的错误,如经常输入错误的字母,使程序无法运行,但通过这次专业性的练习,相信在以后会有所减少。而关键性问题经常出现在一些函数的使用上,由于对一些函数调用
20、的正确使用不够熟悉,往往也会造成程序无法运行,出现错误。如:主函数void main()的用法,C语言的一些标准库函数的应用。然而这一切,在运行程序时也都得到解决了。我发现乐书很重要,但我们更应学会将书本知识应用到实际的工作中。实践中才会发现错误,也才能改进,才能达到学习的最终目的。这些就是我在这个设计中所得到的体会。5.参考文献1 谭浩强. C语言程序设计(第三版)M, 北京:清华大学出版社,2005.7:30-422孙家启,王永国,张孟资等. C语言程序设计教程M.合肥:安徽大学出版社,2006.2: 51-1123梁翎,李爱齐.C语言程序设计实用技巧与程序实例M. 上海:上海科普出版社,1996.5: 36-594朱三元,计算机应用与软件J. 北京:科学爱好出版社,2004,7(02):2-565 赵立伟, 信息与电脑J. 天津:雨乐出版社,2003,12(8):24-78.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1