版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言飞机订票系统专业课程设计第一章绪论1.1:项目背景描述1、课程设计性质与目的:C语言程序设计是一门实践性很强的课程。C程序课程设计是学习C语言程序设计的非常重要的实践环节,通过本课程设计使学生进一步巩固课堂所学,全面熟悉,掌握C语言程序设计的基本方法和技巧,进一步提高编写程序、分析程序及上机操作、调试程序的能力,让学生加深理解,提高动手操作能力及分析问题和解决问题的能力。2、课程设计包含的知识点:1.掌握并熟练利用C语言的基本数据类型与各种表达式,程序的流程控制语句。2.掌握数组的基本概念。掌握一维数组与二维数组的使用,掌握字符数组与字符串的关系。3.熟练掌握指针、地址、指针类型的概念及其使用。掌握指针变量的定义与初始化、指针的间接访问和表达式,掌握指针与数组、函数、字符串的联系4.掌握函数的定义,函数的返回值,函数的调用,函数的声明,函数的形式参数和实际参数之间的关系,了解函数的作用区间。5.掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示。结构体与指针、函数的关系。
第二章可行性分析一、问题描述:假设某航空公司只有N架X个座位的飞机,每架飞机每天飞行一趟。通过该系统来实现机票的订购问题。二、功能要求:1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:起飞地、目的地航班号、航班定额。2、本系统显示这样的菜单:1.)录入:可以录入航班情况(数据可以存储在一个数据文件中)2.)浏览:航班信息浏览功能需要提供显示操作;查询:可提供按照航班号、起点站、终点站、飞行时间、查询,可以查询某个航线的情况(如,输入航班号,起飞抵达城市,确定航班是否满仓);另外要提供键盘式选择菜单以实现功能选择。输入航班信息输出航班信息查找航班信息(4)订票预约(5)删除定票预约(6)退出系统本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。查找航班信息既可按线路查,也可按目的地查。4、在两次运行之间,数据被保存于一个文件里,当本程序重新开始的时候,它首先从该文件读入数据三、算法提示:1、数据结构:结构体类型数组2、数据库结构:下表构成该系统的基本数据库。航班号起点终点起飞时间intcharcharchar四、测试数据:录入北京到上海的星期一起飞的航班,假设其定额为30,上海到南京的航班起飞时间为星期二。五、其它:在实现系统基本功能后,完善系统的其它功能。在测试数据是发现退票系统出现问题,退票数会超过定额,在加上一个限定条件后成功。基于本系统可以尝试输出所定票的的顾客的完整信息,包括姓名,身份证号等个人信息,由于时间有限,尚未添加。第三章总体设计3.1课程设计题目:航班订票系统3.2.内容摘要:假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。通过该系统来实现机票的订购问题。3.3.关键字:函数数组结构体文件循环语句多分支结构3.4.总体设计方案的选定:程序的功能要求:1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:起飞地、目的地航班号、座次号码、座次订出与否标记、订座者的姓名和订座者的身份证号码。2、本系统显示这样的菜单:输入航班信息输出航班信息查找航班信息a.显示空座的数量b.显示空座的信息c.显示已订座的信息d.起飞时间(4)订票预约(5)删除定票预约(6)退出系统本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。查找航班信息既可按航班号来实现。4、在两次运行之间,数据被保存于一个文件里,当本程序重新开始的时候,它首先从该文件读入数据第四章详细设计4.1采用自定向下,逐步细化的思想,将该系统分解成各个相对独立且可以运行的模块。在文件的开始定义出本系统中将会用到的所有的变量以及对各个模块的调用,将作为头文件使各个组员能够使用。如下所示:hangban.h#include<stdio.h> //标准输入、输出头文件#include<string.h> //包含字符串函数处理头文件#defineN9999 //定义最多的航班数#definePRINT"%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n",s[i].num,s[i].qidian,s[i].zhongdian,s[i].time,s[i].count//宏定义输出格式structair //定义结构体数组{ intnum; //定义航班号 charqidian[20]; //航班起始站 charzhongdian[20]; //终点站 chartime[10]; //飞行时间 intcount; //机票数量}s[N];inti,m=0; //定义全局变量charhangbanhao[10];voidadd(); //函数声明增加航班信息函数voidprint(); //显示航班信息voidsearch(); //查找航班信息voiddingpiao(); //订票业务voidtuipiao(); //退票voidread(); //读取文件 voidsave(); //保存文件voidoutput(); //输出格式voidpaixu(); //航班排序voidbuild(); //建立数据文件voidpaixu1(); //按航班号从小到大排序voidpaixu2(); //从大到小
4.2系统总体结构4.3航班信息录入流程图4.4订票系统流程图在有航班信息的情况下可以进行订票操作。开始开始查询所有是查询所有 否输入航班号输入航班号显示航班信息显示航班信息确定订票 否确定订票保存保存4.5查询结构代码voidsearch() //定义查询函数{ intn; do { printf("\n请输入航班号:"); scanf("%d",&n); //输入查询的航班号 for(i=0;i<m;i++) { if(s[i].num==n) //按航班号判定输出条件 { printf("\n您所查找的航班信息为:\n"); printf("航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n\n"); printf(PRINT); //显示信息 printf("\n查询完毕,按回车键继续"); getchar(); getchar(); return; } } printf("\n对不起,没有您需要的信息!\n"); printf("是否重新查找?请键入y或n以回车键结束"); scanf("%s",hangbanhao); }while(!strcmp(hangbanhao,"y"));//判定是否重新查找}4.6订票业务代码voiddingpiao() //定义订票业务函数{ intn; chara[10]="y"; do { search(); //调用查询模块 do { printf("请输入您要订的机票数(以回车键结束):"); scanf("%d",&n); //输入所订机票数 if(n<=0) //判定机票数是否出错 { printf("输入错误!至少需订1张机票。\n"); } elseif(s[i].count==0)//判定机票是否售完 { printf("对不起,你所选择的航班的机票已售完!\n"); break; } elseif(s[i].count!=0&&s[i].count>=n) //判定机票数是否大于等于订票数 { s[i].count=s[i].count-n; printf("订票成功!"); break; } elseif(s[i].count<n)//判定机票数是否小于订票数 { printf("对不起,你所选择的航班只剩%d张机票\n",s[i].count); printf("是否需要重新输入机票数?请输入y或n以回车键结束:");//判定是否重新输入订票数 scanf("%s",a); } }while(!strcmp(a,"y")); printf("是否需要订其他航班的机票?请输入y或n以回车键结束:"); scanf("%s",a); }while(!strcmp(a,"y")); //判定是否继续订票}4.7退票业务代码voidtuipiao() //定义退票函数{ intn; chara[10]; do { search(); //调用查询函数 printf("请输入您要退的机票数目:"); scanf("%d",&n); //输入所退票数 if(n<=0) //判定票数是否有效 printf("输入错误!至少需退1张机票。"); else { s[i].count=s[i].count+n; printf("退票成功!"); } printf("是否继续?请键入y或n以回车键结束:"); //判定是否继续退票 scanf("%s",a); }while(!strcmp(a,"y")); //判定并跳出循环}
第五章总结一周的C语言课程设计即将结束,通过此次课程设计也学会综合运用理论知识来分析和解决实际问题的能力、养成严谨的科学态度和良好的程序设计习惯实现由知识向智能的初步转化学会循软件开发过程的基本规范运用结构化程序设计的方法按照课程设计的题目要求并能够完成设计、编写、调试和测试应用程序及编写文档的任务程序整体上运行与题目要求很吻合算法大多比较通用各个函数模块的正确性、完备性、对输入的容错能力以及算法的进一步改进在设计中都有表述这道题使我熟悉了文件的输入输出操作真切的感受到了fprintf和fwrite函数的区别。回顾起此次课程设计至今我仍感慨颇多从理论到实践在整整半个月的日子里我学到很多很多的东西不仅巩固了以前所学过的知识而且学到了很多在书本上所没有学到过的内容。通过这次课程设计使我懂得了理论与实际相结合是很重要的只有理论知识是远远不够的只有把所学的理论知识与实践相结合起来从理论中得出结论才是真正的知识才能提高自己的实际动手能力和独立思考的能力。在设计的过程遇到了各种各样的问题同时在设计的过程中发现了自己的不足之处对以前所学过的知识理解得不够深刻掌握得不够牢固通过这次课程设计把以前所学过的知识重新温故巩固了所学的知识。在编写程序的过程中受到了其他同学的指点也许在某些程序方面会和有的同学想类似但是老师在我编程序过程中也起到了很大的作用我们在C语言这门课上还会继续走下去以后还会经常碰到我会努力。附1:源代码#include<stdio.h> //标准输入、输出头文件#include<string.h> //包含字符串函数处理头文件#defineN9999 //定义最多的航班数#definePRINT"%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n",s[i].num,s[i].qidian,s[i].zhongdian,s[i].time,s[i].count//宏定义输出格式structair //定义结构体数组{ intnum; //定义航班号 charqidian[20]; //航班起始站 charzhongdian[20]; //终点站 chartime[10]; //飞行时间 intcount; //机票数量}s[N];inti,m=0; //定义全局变量charhangbanhao[10];voidadd(); //函数声明增加航班信息函数voidprint(); //显示航班信息voidsearch(); //查找航班信息voiddingpiao(); //订票业务voidtuipiao(); //退票voidread(); //读取文件 voidsave(); //保存文件voidoutput(); //输出格式voidpaixu(); //航班排序voidbuild(); //建立数据文件voidpaixu1(); //按航班号从小到大排序voidpaixu2(); //从大到小voidmain() //主函数{ intj;read(); printf("\n\t\t欢迎使用航班订票系统!\n");printf("******************************************\n");printf("1.增加航班信息\n");printf("2.浏览航班信息\n");printf("3.查找航班信息\n");printf("4.航班排序(按航班号)\n");printf("5.办理订票业务\n");printf("6.办理退票业务\n");printf("0.退出系统(exit)\n");printf("*******************************************\n"); printf("请在0-6中选择以回车键结束:"); scanf("%d",&j); switch(j) { case1:add(); //调用增加航班函数 break; case2:print(); //调用显示模块 break; case3:search(); //调用查找模块 break; case4:paixu(); //调用排序函数 break; case5:dingpiao(); //调用订票模块 break; case6:tuipiao(); //调用退票模块 break; case0: save();//退出系统 printf("谢谢使用,再见!"); break; }}voidread() //定义读取文件函数{ FILE*fp; if((fp=fopen("hangban.dat","rb"))==NULL) { printf("创建文件失败!"); getchar(); return; } i=0; while(!feof(fp)) { fread(&s[i],sizeof(structair),1,fp); //逐块读取数据 i++; m++; //计算存在航班数 } m--; fclose(fp);}voidsave() //定义保存函数{ FILE*fp; if((fp=fopen("hangban.dat","wb"))==NULL) { printf("创建文件失败!"); getchar(); return; } for(i=0;i<m;i++) //逐块保存数据 fwrite(&s[i],sizeof(structair),1,fp); fclose(fp);}voidadd() //定义增加航班信息函数{ do{ printf("请依次输入您要增加的航班信息(以回车键结束):\n");//打印提示信息 printf("--------------------------------------------------------------------------\n"); printf("请输入航班号:"); scanf("%d",&s[m].num); //读取航班号 printf("请输入起始站:"); scanf("%s",s[m].qidian); //读取起始站 printf("请输入终点站:"); scanf("%s",s[m].zhongdian); //读取终点站 printf("请输入时间:"); scanf("%s",s[m].time); //读取时间 printf("请输入机票数:"); scanf("%d",&s[m].count); //读取机票数 m++; printf("添加完毕,是否继续添加?请键入y或n以回车键结束:"); scanf("%s",hangbanhao); }while(!strcmp(hangbanhao,"y")); //判断是否继续添加}voidoutput() //定义输出格式函数{ printf("航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n"); //信息标题 for(i=0;i<m;i++) printf(PRINT);//打印出信息 }voidprint() //定义显示航班信息函数{ printf("\n目前我们有如下航班:\n"); output(); //调用输出格式函数 printf("\n请按回车键返回上层菜单"); getchar(); getchar();}voidsearch() //定义查询函数{ intn; do { printf("\n请输入航班号:"); scanf("%d",&n); //输入查询的航班号 for(i=0;i<m;i++) { if(s[i].num==n) //按航班号判定输出条件 { printf("\n您所查找的航班信息为:\n"); printf("航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n\n"); printf(PRINT); //显示信息 printf("\n查询完毕,按回车键继续"); getchar(); getchar(); return; } } printf("\n对不起,没有您需要的信息!\n"); printf("是否重新查找?请键入y或n以回车键结束"); scanf("%s",hangbanhao); }while(!strcmp(hangbanhao,"y"));//判定是否重新查找}voiddingpiao() //定义订票业务函数{ intn; chara[10]="y"; do { printf("请输入您要订的机票数(以回车键结束):"); scanf("%d",&n); //输入所订机票数 if(n<=0) //判定机票数是否出错 { printf("输入错误!至少需订1张机票。\n"); } elseif(s[i].count==0)//判定机票是否售完 { printf("对不起,你所选择的航班的机票已售完!\n"); break; } elseif(s[i].count!=0&&s[i].count>=n) //判定机票数是否大于等于订票数 { s[i].count=s[i].count-n; printf("订票成功!"); break; } elseif(s[i].count<n)//判定机票数是否小于订票数 { printf("对不起,你所选择的航班只剩%d张机票\n",s[i].count); printf("是否需要重新输入机票数?请输入y或n以回车键结束:");//判定是否重新输入订票数 scanf("%s",a); } printf("是否需要订其他航班的机票?请输入y或n以回车键结束:"); scanf("%s",a); }while(!strcmp(a,"y")); //判定是否继续订票}voidtuipiao() //定义退票函数{ intn; chara[10]; do { search(); //调用查询函数 printf("请输入您要退的机票数目:"); scanf("%d",&n); //输入所退票数 if(n<=0) //判定票数是否有效 printf("输入错误!至少需退1张机票。"); else { s[i].count=s[i].count+n; printf("退票成功!"); } printf("是否继续?请键入y或n以回车键结束:"); //判定是否继续退票 scanf("%s",a); }while(!str
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化工添加剂生产工岗前规程考核试卷含答案
- 植保机械操作工岗位个人技能考核试卷含答案
- 云母制品工复试强化考核试卷含答案
- 井下采煤机司机岗中应急处理考核试卷含答案
- 2026年11月门店导购话术年终标准化培训计划
- 职业发展规划与工作展望
- 北城健康推广
- 2026年全球及中国钠电产业发展白皮书
- 农业数字化技术员个人实习总结
- 保利广场项目加固工程安全专项施工方案-实施方案
- 2026国企人力资源综合岗招聘考试参考题库(含完整答案解析)
- 2026年教师招聘考试小学语文学科专业知识真题
- 电力安全知识宣传
- 2024年云南省昆明市官渡区小升初数学试卷(含答案)
- 《PLC应用项目工单实践教程》课件 模块6 函数、函数块、数据块及应用
- 风力发电项目-强制性条文执行计划
- GB/T 44948-2024钢质模锻件金属流线取样要求及评定
- 备考2025高考物理“二级结论”精析与培优争分练讲义-01 共点力平衡(教师版)
- JBT 3341-2024 蓄电池托盘堆垛车(正式版)
- 涉密人员违规处罚
- SWITCH暗黑破坏神3超级金手指修改 版本号:2.7.6.90885
评论
0/150
提交评论