




已阅读5页,还剩54页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件课程设计报告班级:光电0905班姓名:邵亚云学号:U200913045目录1、软件设计11.1、软件的概要设计11.1.1、总体11.1.2、子函数21.1.3、各子函数功能312、软件的设计思想61.2.1、航班信息的数组61.2.2、顾客飞机票信息的数组713、主函数及各子函数流程图82、软件测试142.1、主菜单142.2、初始化航班142.3、航班订票172.4、航班退票192.5、航班查询202.6、查询余票222.7、结束233、算法改进244、开发体会26附:源代码清单28参考文献 561、 软件设计1.1、软件的概要设计1.1.1、总体这个软件总体上分为六个部分,即:初始化航班、查询航班信息、航班订票、航班退票、查询机票、查询余票六个部分。其总体的结构图如下:查询余票查询机票航班订票航班退票查询航班信息初始化航班飞机票销售系统1、1.1.2、子函数为清楚地完成这样一个飞机票销售系统,采用了以下12个子函数:void menu(); void add(); void output(); void output1(); int savef();int savef1(); int readf(); void inquire(); void inquire1(); void book(); void refund(); void searchnum(); 1.1.3、各子函数功能下面将分别地来介绍12个子函数的功能。1、 void menu(),显示主菜单的函数这个函数的主要功能是显示一个欢迎字幕,并为顾客提供这个飞机票销售系统的所有功能和任务。即初始化航班、查询航班信息、航班订票、航班退票、查询机票、查询余票等服务,顾客在输入相应的数字之后按确认键即可进行相应的操作.2、void add(),航班初始化函数这个函数的主要功能是初始化航班信息(即添加航班信息),添加的信息包括航班号、起始站、终点站、起飞时间、航班容载量、机票折扣以及机票价格等。这样可以在缺少某项航班信息的情况下及时添加。初始化后文件以air.txt形式格式保存下来,以方便后续的试用。因此在第一次试用的时候要初始化,否则系统将没有任何的机票信息。3、void output(),航班输出函数本函数的作用是输出航班信息。在输入了初始化航班信息之后,此函数可以在文件中找到air.txt,并输出来。4、void output1(),机票信息输出函数本函数的作用是输出顾客机票信息。作用与上述类似,在成功订票之后,此函数可以在文件中找到people.txt,并输出来。5、int savef(),航班信息保存函数本函数的作用是保存输入的航班信息,以air.txt形式格式保存,可以在文件中查找到,并在后面要调用的时候及时调出来进行查询。6、int savef1(),机票信息保存函数本函数的作用是保存输入的顾客机票信息,以people.txt形式格式保存,可以在文件中查找到,并在后面要调用的时候及时调出来进行查询。7、int readf(),航班信息读取函数本函数的作用是读取航班信息,在后续订票操作中,需要用到初始化的航班信息,因此需要一个从内部文件中读取航班信息的操作。8、void inquire(),航班信息查询函数本函数的作用是查询航班信息,为了方便销售员或者顾客的查询,因此需要将内部文件中的航班信息表达出来,因此这个函数的作用是表达出航班信息。9、void inquire1(),机票信息查询函数本函数的作用是查询顾客机票信息。在顾客定好票之后,需要验证自己的票是否是正确的,或者查询一下飞机票的信息,此时需要一个飞机票的查询操作,此函数的作用即在此。10、void book(),机票预定函数本函数的作用是执行订票操作,订票操作中需要顾客将自己的信息完整地写入到系统中,考虑到只要身份证号码正确就可以显示顾客的大部分信息,因此没有将更多繁琐的信息要求加上去了。11、void refund(),退票函数本函数的作用是执行退票操作,由于是退票,考虑到实际情况,因此需要输入多个信息以确认机票与主人是对应的。12、void searchnum(),查询余票函数本函数的作用是查询剩余票数,在设计中使用了仅输入航班号即可查询航班信息的做法,方便操作。12软件的设计思想这次的飞机票销售系统由于数据量较大,且需要以不同的数据类型来分类,因此采用了两个类似的结构变量来实现上述的设计。详细如下:1.2.1、航班信息的数组struct int air_num; /航班号char Start15; /出发地char End15; /终点站char Time25; /起飞时间int total ; /总票数float H; /折扣int left ; /剩余票数int Price; /票价air; 1.2.2、顾客飞机票信息的数组struct int air_num; /航班号char Start15; /出发地char End15; /终点站int Price; /票价float H; /折扣char name8; /姓名char ID20; /身份证号int left ; /剩余票数int k ; /购买票数people;13、主函数及各子函数流程图main主函数main( )查询余票查询机票否否否否否否是是是是是是航班退票初始化航班航班订票查询航班信息765432menu1选择是结束否是否结束继续不保存是否保存至文件保存依次输入航班的各项信息添加航班信息否否否否否否否是是是是是是是输入错误,重新输入查询航班信息对不起,不存在要查询的航班信息显示所要查找的航班信息存在且正确按起始站和终点站查找按起飞时间查找按起始站查找按终点站查找按航班号查找654321选择查询航班信息航班订票否是结束继续订票订票成功,写入文件依次输入项目退票不成功退票成功否是否是退票不成功结束继续退票成功依次输入航班的各项信息航班退票正确是否显示余票信息否是错误结束继续输入航班号查询余票错误存在2、软件测试以下是这套软件系统的详细测试结果,并以截图的形式展现出来,当然只是展示了一部分有代表性的图。下面是详细介绍:2.1、主菜单运行程序,将出现这样一个欢迎的界面并提供以下7个选项2.2、初始化航班如果是第一次使用,则必须先初始化航班信息,否则系统内的数据将是空的,不能使用。选择“1”,则出现以下的界面,根据提示依次输入航班号、起始站、终点站、起飞时间、容载量、折扣和价格。若不保存,则会出现警告。若要正常写入信息,则保存,下面将有一个信息预览,按任意键继续输入。依次输入十个航班信息输入完成以后,将会有一个总体的预览2.3、航班订票初始化完毕后,此时,我们便可以在这个系统里订票了,按要求依次输入订票成功则显示这样的界面由于票数有限,因此当输入的购买票数超过总票数时,系统将无法完成售票操作然后依次买票,我在自己操作的时候,买了50次票。操作结束后,会出现以下清单以提示我买的所有机票信息。2.4、航班退票可以在航班退票中进行退票操作按要求依次输入顾客信息,如下 若信息正确则退票成功,若不正确则显示一下内容,表示输入有误。2.5、航班查询若需要查询航班信息,则选择查询航班信息,出现以下界面。选择以何种方式查询如选择以航班号查询选择以起始站查询,则为:依此类推2.6、查询余票选择查询余票,输入航班号,即可进行余票查询,如下:2.7、结束当完成所有的操作后,将会出现一个如下界面,表示顾客已经退出了此系统。此时按任意键可以回到欢迎界面。3、算法改进这次的软件课程设计采用的是数组的方式,这样调试起来比较简单,没有太多的难度。这个飞机票销售系统的主要亮点在于,抛弃了原本复杂的函数定义,使用了简洁的方式,使得程序更具有可读性。在界面的友好性方面也做了处理,使得界面更加具有观赏性,符合了飞机票销售系统的要求。如:printf(nttt请输入航班号: ); fflush(stdin); scanf(%d, &a_data.air_num); printf(ttt请输入起始站: ); fflush(stdin); scanf(%s, a_data.Start); printf(ttt请输入终点站: ); fflush(stdin); scanf(%s, a_data.End); printf(ttt请起飞输入时间(如:2010.01.01.01.00): ); fflush(stdin); scanf(%s, a_data.Time); printf(ttt请输入航班容载量: ); fflush(stdin); scanf(%d, &a_data.total); a_data.left = 0; printf(ttt请输入机票折扣); fflush(stdin); scanf(%f, &a_data.H); printf(ttt请输入机票价格: ); fflush(stdin); scanf(%d, &a_data.Price);这样一段使用了fflush(stdin),为了确保不影响后面的数据读取,在读完一个字符串后紧接着又要读取一个字符,此时应该先执行fflush(stdin)。尽管不是非常大的改动或者想法,但是为程序的可读性和可操作性提供了很大的支持。像这样的情况程序里还有一些,在这里就不赘述。这个程序还有很多可以改进的地方,但是由于时间有限,就没有在算法改进上花太多的时间。在以后的学习中还要仔细思考,进行改进。4、开发体会现在终于到写开发体会的时候了,心里的一根弦终于可以松一下了。在刚接到这样的一个任务的时候,我真是惊呆了,我们这样的水平能够完成这样的作业吗?因为当时想,对于一个只是对C语言有所了解的大二学生来说要做出一个飞机票销售系统,那绝对是非常难的,当时甚至觉得这是不可能的。但是这个障碍终究还是要跨过去,这是没有办法的,因为我知道三个星期后我一定要交上这样的一份完整(尽管不完美)的飞机票销售系统,因此,在想到了这些后,便开始了我自认为不可能完成的任务。后面发现,原来也没有我想象得那么难。由于我们有连续三个星期的不间断的上机时间,又有这么的老师和助教陪着我,在我有问题的时候及时帮我分析,帮我们解决。这使得我在前进的路上多了很多的帮助,使我最终能够走到这一步。因此在这里要感谢曾经给我帮助的老师和助教们,还有在我编程路上的帮助我的同学们,谢谢你们。当然,在编写的过程中,和想象中的一样,出现了许多的问题,甚至更难。其中也是犯了很多的错误,有些是莫名其妙的,有些是很小的低级错误,有些是根本性的想法错误,但是这些错误都使得我不得不一次一次地检查、纠正。通过这无数次的检查纠正再犯错再检查的过程,我明白了,在编程的路上,错误不分大小,我要时刻注意不能犯错误。即使犯错了,也不能放弃,因为可能就是在一个“;”之后,成功就在眼前了。这个系统终于出来了,这几个星期特别是后期阶段,真是可以用一句话来表达:“为伊消得人憔悴”。心里的兴奋真是无法表达。但是在兴奋之余,我还明白,这样的系统肯定是不能拿出去使用的,因为这个程序还有很多的不科学、很多的不合理、很多的问题。而我们在以后的学习甚至是工作中是一定要用到这样的一种软件开发的技术,那时我们的成果就一定要更加科学,更加具有实用性。因此,我现在就要继续前行,不能满足于一个只能拿来看的系统上。一句歌词:前面的路还很长,带着你的梦想,朝着成功的方向,鼓起勇气向前闯!改编歌词:软件的路还很长,带着我的VC, 朝着成功的系统,鼓起勇气向前闯!附:源代码清单#include #include #include #include #define LEN 180#define N 100#define PRINT printf(%-3d %-8s %-8s %-st%-dt%-d t%-3.1ft%4dn,datai.air_num,datai.Start,datai.End,datai.Time,datai.total,datai.left,datai.H,datai.Price)#define PUT puts (航班号 起飞站 终点站 起飞时间 总容量 售票数 折扣 票价/张)#define PRINT1 printf(%-3d %-8s %-8s %-6st%st %-3dt%-3.1ft%4dn,lj.air_num,lj.Start,lj.End,,lj.ID,lj.k,lj.H,lj.Price)#define PUT1 puts (航班号 起飞站 终点站 姓名 18位身份证号 定票数 折扣 票价/张)void menu(); /主程序void add(); /初始化航班int savef1();/客户信息文件保存void output(); /文件输出void output1(); /文件输出int savef(); /机票信息文件保存int readf(); /文件读取void inquire(); /查询机票信息void inquire1(); /查询客户信息void book(); /预定航班void refund(); /取消航班void searchnum(); /查询剩余票数typedef struct int air_num; /航班号char Start15; /出发地char End15; /终点站int Price; /票价float H; /折扣char name8; /姓名char ID20; /身份证号int left ; /剩余票数int k ; /购买票数people;people lLEN;typedef struct int air_num; /航班号char Start15; /出发地char End15; /终点站char Time25; /起飞时间int total ; /总票数float H; /折扣int left ; /剩余票数int Price; /票价air;air dataLEN;int RecNo = 0;int P=0;int main() char choice; do menu(); printf( 请输入选项并按回车键结束: ); if (readf() != 0) ) printf(n数据文件错误,系统将被退出.); exit(1); fflush(stdin); scanf(%c, &choice); switch (system(cls), choice) case 1: puts( - 初 始 化 航 班 数 据 库 - - 请输入相应的航班信息. -); add(); break; case 2: puts( - 航 班 查 询 - ); inquire(); break; case 3: puts(- 航 班 订 票 - ); book(); break; case 4: puts(- 航 班 退 票 - ); refund(); break; case 5: puts(- 查 询 机票 - ); output(); break; case 6: puts( - 查 询 余 票 - ); searchnum(); break; case 7: break;default: puts(请输入您的选择);break; while (choice != 7); puts(nnnnnnnnntttt非常感谢,祝您旅途愉快!); return 0;void menu() system(cls);system(color 37); puts(= - 欢迎来到华中大机场,请选择您需要的服务 - = n n * * * * * * * * n n 1、初始化航班 n 2、查询航班信息 n 3、航班订票 n 4、航班退票 n 5、查询机票 n 6、查询余票 n 7、退出售票系统 n n * * * * * * * * nnn = );void add() int i, j; char choice; air a_data; for (j = 1;RecNo LEN;j+) printf(nttt请输入航班号: ); fflush(stdin); scanf(%d, &a_data.air_num); printf(ttt请输入起始站: ); fflush(stdin); scanf(%s, a_data.Start); printf(ttt请输入终点站: ); fflush(stdin); scanf(%s, a_data.End); printf(ttt请起飞输入时间(如:2010.01.01.01.00): ); fflush(stdin); scanf(%s, a_data.Time); printf(ttt请输入航班容载量: ); fflush(stdin); scanf(%d, &a_data.total); a_data.left = 0; printf(ttt请输入机票折扣); fflush(stdin); scanf(%f, &a_data.H); printf(ttt请输入机票价格: ); fflush(stdin); scanf(%d, &a_data.Price); printf(注意:是否要保存信息? 若按任意键则(是) N(否) ); fflush(stdin); scanf(%c, &choice); if (choice = N | choice = n) printf(nttt!注意!数据未保存!); else for (i = 0;i RecNo;i+) if (datai.air_num = a_data.air_num) printf(n%d次航班已经被使用,请换其他班次.n, a_data.air_num); puts(n数据未保存.); PUT; PRINT; break; if (i = RecNo) dataRecNo = a_data; RecNo+; PUT; PRINT; savef(); printf(请问是否继续? 若按任意键则(是) N(否,退回主界面) ); fflush(stdin); scanf(%c, &choice); if (choice = N | choice = n) output(); break; int savef1() FILE *fp1; if (fp1 = fopen(people.txt, wb) = NULL) puts(n数据文件写入失败!请检查文件是否存在,按若按任意键则返回主菜单); getchar(); exit(1); fprintf(fp1, %d, P); if (fwrite(l, sizeof(people), P, fp1) = 0) puts(n向文件写入数据失败!); exit(1); puts(n数据写入成功.); fclose(fp1); return 0;int readf() FILE *fp; if (fp = fopen(air.txt, a+) = NULL) printf(n数据文件读取失败!请检查文件是否存在,按若按任意键则返回住菜单n); getchar(); exit(1); fscanf(fp, %d, &RecNo); fread(data, sizeof(air), RecNo, fp); fclose(fp); return 0;int savef() FILE *fp; if (fp = fopen(air.txt, wb) = NULL) puts(n数据文件写入失败!请检查文件是否存在,按若按任意键则返回主菜单); getchar(); exit(1); fprintf(fp, %d, RecNo); if (fwrite(data, sizeof(air), RecNo, fp) = 0) puts(n向文件写入数据失败!); exit(1); puts(n数据写入成功.); fclose(fp); return 0;void output() int i; PUT; for (i = 0;i RecNo;i+) PRINT; printf(n若按任意键则返回上级菜单. ); fflush(stdin); getchar();void output1() int j; PUT1; for (j = 0;j P;j+) PRINT1; printf(n若按任意键则返回上级菜单. ); fflush(stdin); getchar();void inquire1() char name8,ID20,choice; int j, flag=0; do readf(); flag=0 ; printf(请输入您的姓名: ); fflush(stdin); scanf(%s, name); printf(请输入您的18位身份证号:); scanf(%s, ID); for (j = 0;j P;j+) if (strcmp(, name) = 0)&(strcmp(lj.ID, ID) = 0) ) PUT1; PRINT1; flag=1; if (flag = 0) puts(n对不起,没有该客户信息); printf(n请问是否继续查找? 若按任意键则(是) N(否,退回主界面):); fflush(stdin); scanf(%c, &choice); while(choice != N)&( choice != n);void inquire() char choice; int i, flag=0; air s_data; do puts( n1、按航班号查找nn 2、按终点站查找nn 3、按起始站查找nn 4、按时间来查找nn 5、按起始站及终点站查找nn 6、返回到上级菜单n); printf(请输入选项并按回车键结束: ); fflush(stdin); scanf(%c, &choice); fflush(stdin); switch (choice) case 1: printf(请输入航班号:); fflush(stdin); scanf(%d, &s_data.air_num); PUT; for (i = 0;i RecNo;i+) if (datai.air_num = s_data.air_num) PRINT; flag+; break; case 2: printf(请输入终点站名称:); fflush(stdin); scanf(%s, s_data.End); for (i = 0;i RecNo;i+) if (strcmp(datai.End, s_data.End) = 0) PRINT; flag+; break; case 3: printf(请输入起始站名称:); fflush(stdin); scanf(%s, s_data.Start); for (i = 0;i RecNo;i+) if(strcmp(datai.Start, s_data.Start) = 0) PRINT; flag+; break; case 4: printf(请输入航班时间(日期):); fflush(stdin); scanf(%s, s_data.Time); for (i = 0;i RecNo;i+) if (strcmp(datai.Time, s_data.Time) = 0) PRINT; flag+; break; case 5: printf(请输入起始站名称:); fflush(stdin); scanf(%s, s_data.Start); printf(请输入终点站名称:); fflush(stdin); scanf(%s, s_data.End); for (i = 0;i RecNo;i+) if (strcmp(datai.End, s_data.End) = 0) & (strcmp(datai.Start, s_data.Start) = 0) ) PRINT; flag+; break; case 6: return ; default : printf(n输入错误,请重试.); continue; if (flag = 0) puts(n对不起,没有该航班信息.); printf(n请问是否继续查找? 若按任意键则(是) N(否,退回主界面):); fflush(stdin); scanf(%c, &choice); while(choice != n)&(choice != N);void book() int i,j,k,m,n,L=0,T=0; people
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省(温州)2026届九年级英语第一学期期末质量检测模拟试题含解析
- 新人培训计划
- 2026届内蒙古自治区兴安盟乌兰浩特市第十三中学英语九上期末预测试题含解析
- 2026届江苏省淮安市洪泽县九上化学期中达标检测模拟试题含解析
- 磁力泵转子培训
- 2026届湖南省耒阳市冠湘中学化学九上期中质量检测模拟试题含解析
- 2026届云南省保山市施甸县英语九上期末调研模拟试题含解析
- 2026届东营市重点中学九年级化学第一学期期中联考模拟试题含解析
- 学生德育工作总结
- 2026届甘肃省陇南市徽县九年级化学第一学期期中监测试题含解析
- GB/T 18690.3-2017农业灌溉设备微灌用过滤器第3部分:自动冲洗网式过滤器和叠片式过滤器
- 中医养生六大观念
- 人教版小学三年级美术上册全套课件
- 彩钢大棚钢结构施工组织设计
- 舞蹈鉴赏课件
- 学校体育学(第三版)课件第八章体育教学设计
- 中国海洋大学《海洋生物资源与环境调查实习报告》
- 《中外美术史》课件1中外美术史.1(原始社会)
- 刺梨产品之养生有维系列简介共26页课件
- MPA、公务员必修课《公共政策》课件: 政策制定
- 大学物理高斯定理课件-英文版
评论
0/150
提交评论