




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计课程设计报告C语言程序设计课程设计评语:考勤(10)纪律(10)过程(40)设计报告(30)答辩(10)总成绩(100) 专 业: 电气工程及其自动化(卓越) 班 级: 电气1301 姓 名: 王思远 学 号: 指导教师: 王 黎 兰州交通大学自动化与电气工程学院2014年7月12日综合题3.1引言设计目的是解决如下实际问题:3.1.1问题描述: 假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。通过该系统来实现机票的订购问题。3.1.2功能要求: 本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:起飞地、目的地 航班号、座次号码、座次订出与否标记、订座者
2、的姓名和订座者的身份证号码。本系统显示这样的菜单: 1) 输入航班信息 2) 输出航班信息 3) 查找航班信息 a.显示空座的数量 b.显示空座的信息 c.显示已订座的信息 d.起飞时间 4) 订票预约 5) 删除定票预约 6) 退出系统 本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。查找航班信息既可按线路查,也可按目的地查。 在两次运行之间,数据被保存于一个文件里,当本程序重新开始的时候,它首先从该文件读入数据.3.1.3算法提示:数据结构:结构体类型数组数据库结构:下表构成该系统的基本数据库。航班号起飞时间目的地座次号座次订出与否的标记订票者姓
3、名订票者身份证号码intcharcharintCharcharchar3.1.4测试数据: 每架飞机的座位N=12,M=53.1.5其它: 对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能。选择的设计方法是使用C语言利用计算机解决问题。 3.2设计设计思路: 对于这种大型的程序,必须现有一个整体的规划,生成出一个流程图,流程图负责规划总体,而程序最主要的就是飞机航班订票各个功能,每个功能都作为一个模块,每一个模块划分任务,每个功能都作为一个模块,并且还得按照题目要求,将信息保存在文件中,而且信息都将被输入到事先定义的结构体数组中,实现在内存单元中的信息的分类存放,之后将其输出。
4、主函数流程图如5所示(合):图 5 输入信息函数流程图如图6所示:图 6 输出信息函数流程图如图7所示: 图 7查找航班信息的流程图如图8所示:图 8订票预约的流程图如图9所示:图 9删除订票预约的流程图如图10:图 10源代码:#include<stdio.h>#include<string.h>struct zuociint haoma;/座次数int biaoji;/座位订出的标记char xingming20;/订座者姓名char zhengjian30;/订座者的身份证号码;struct planeint no;/航班号char qidian30;/起飞地ch
5、ar zhongdian30;/目的地char time30;/起飞时间int left;/余票struct zuoci zuowei12;/座位订出信息 plane888;/888个航班容量int num=0,i,j,t;/定义外部变量(全局变量)void read()/读取文件的功能 FILE *fp; if(fp=fopen("file.dat","rb")=NULL) /rb打开二进制文件 printf("出错"); getchar(); i=0; while(!feof(fp)/文件是否结尾位置,不是结尾就继续 fread(
6、&planei,sizeof(struct plane),1,fp); /二进制读入 i+; num+; num-; fclose(fp); void save() /保存到文件的功能 FILE *fp; if(fp=fopen("file.dat","wb")=NULL) /第一次运行无指定,就会建立新文件file.dat printf("出错");getchar(); for(i=0;i<num;i+) fwrite(&planei,sizeof(struct plane),1,fp); /二进制输出 fcl
7、ose(fp);void shuru() /输入航班的功能 char c;printf("请输入您要增加的航班信息:n");printf("请输入航班号:n");scanf("%d",&planenum.no);printf("请输入起飞地n");scanf("%s",planenum.qidian);printf("请输入目的地n");scanf("%s",planenum.zhongdian);printf("请输入起飞时间n&quo
8、t;);scanf("%s",planenum.time);printf("请输入航班余量n");scanf("%d",&planenum.left);for(i=0;i<planenum.left;i+)/订出标记 planenum.zuoweii.biaoji=0; num+;getchar();/继续void shuchu() /输出航班信息的功能 printf("目前航班:n"); printf("航班号tt起飞地tt目的地tt起飞时间tt票数n"); for(i=0;i&
9、lt;num;i+)printf("%dtt%stt%stt%sttt%dn",planei.no,planei.qidian,planei.zhongdian,planei.time,planei.left);getchar();/继续void chazhao() /查找航班信息的功能printf("请输入您要查询的航班号:");scanf("%d",&t); for(i=0;i<num;i+)/先查找航班 if(t=planei.no) printf("航班的空座数量为:%dn",planei.l
10、eft); printf("空座号:"); for(j=0;j<12;j+) if(planei.zuoweij.biaoji!=1) printf("%d号 ",j+1); /输出航班号 printf("n"); printf("已订座位的信息:n"); for(j=0;j<12;j+) if(planei.zuoweij.biaoji=1) printf("座位号:%dn",j+1); printf("订座者姓名:");puts(planei.zuoweij.
11、xingming); printf("订座者身份证号码:");puts(planei.zuoweij.zhengjian); /12个座位查询范围 printf("航班起飞时间:");puts(planei.time); getchar();/继续void dingpiao() /订票的功能 int n; printf("请输入订票的航班号:n"); scanf("%d",&n); for(i=0;i<num;i+) if(planei.no=n) break; printf("余票:%dn
12、",planei.left); for(j=0;planei.zuoweij.biaoji=1;j+); printf("请输入姓名拼音:");scanf("%s",planei.zuoweij.xingming); printf("请输入身份证号码:");scanf("%s",planei.zuoweij.zhengjian); printf("分配给座位是:%d号n",j+1); planei.zuoweij.biaoji=1; planei.left-; getchar();/继
13、续void cancel() /删除订票的功能 int n,m; char judge; printf("请输入删除的订票航班号:"); scanf("%d",&n);for(i=0;i<num;i+) if(planei.no=n) break; printf("请输入删除的座位号:"); scanf("%d",&m); planei.zuoweim-1.biaoji=0; planei.left+; getchar();/继续void main()/主函数int menu;read();
14、/首先读入数据domenu=0;printf("欢迎使用飞机订票系统n");printf(" 请选择需要的功能 n");printf("| 1、输入航班信息 |n");printf("| 2、输出航班信息 |n");printf("| 3、查找航班信息 |n");printf("| 4、订 票 预 约 |n");printf("| 5、删除订票预约 |n");printf("| 6、退 出 系 统 |n");printf("&
15、gt;>>>>>>>>>>>>><<<<<<<<<<<<<n");printf("输入选择功能序号: ");scanf("%d",&menu);switch(menu)case 1: shuru();break;case 2: shuchu();break;case 3: chazhao();break;case 4: dingpiao();break;case 5: cancel(
16、);break;case 6: save();break; /如果没有符合的序号,则不执行,流转下一条getchar();/子函数配合输入继续 /循环体位置while(menu!=6); /判断条件实现注释:程序的要求进行了实现,在基础要求之外没有完成其他功能。3.3调试报告在读取二进制文件,没有创建,但在写入时,写入,保存了数据:在进行输出时,制表位与数据位不对齐,于是检查了制表符;因为定义的座位数组为12,所以只能查找12个座位的信息。3.4运行及结果测试如图11所示图11-1图11-2图 11-3图11-4图11-5图11-63.5总结本程序实现了题中飞机订票系统的所有功能,完成了题中所
17、给的要求。大程序的编写,让我们基本了解的程序软件的编写过程。在一开始,利用流程图,可以对程序规划,而使用功能模块,可以对程序进行任务的细分。在流程图的规划下,程序做的还是比较顺畅,一开始较好的规划,减少了不必要的错误的产生,在以前的C语言学习和实践中,只用到了运行数据从终端的输入输出和内存单元的存取,这个程序则需要实现内存的单元到硬盘文件的的输入输出,这是时下流行的软件都采用的方式。我认为这些应该就是实践和实习的意义。参考文献1谭浩强著. C程序设计(第四版). 北京:清华大学出版社,2010.附录源程序代码:#include<stdio.h>#include<string.
18、h>struct zuociint haoma;/座次数int biaoji;/座位订出的标记char xingming20;/订座者姓名char zhengjian30;/订座者的身份证号码;struct planeint no;/航班号char qidian30;/起飞地char zhongdian30;/目的地char time30;/起飞时间int left;/余票struct zuoci zuowei12;/座位订出信息 plane888;/888个航班容量int num=0,i,j,t;/定义外部变量(全局变量)void read()/读取文件的功能 FILE *fp; if
19、(fp=fopen("file.dat","rb")=NULL) /rb打开二进制文件 printf("出错"); getchar(); i=0; while(!feof(fp)/文件是否结尾位置,不是结尾就继续 fread(&planei,sizeof(struct plane),1,fp); /二进制读入 i+; num+; num-; fclose(fp); void save() /保存到文件的功能 FILE *fp; if(fp=fopen("file.dat","wb")=N
20、ULL) /第一次运行无指定,就会建立新文件file.dat printf("出错");getchar(); for(i=0;i<num;i+) fwrite(&planei,sizeof(struct plane),1,fp); /二进制输出 fclose(fp);void shuru() /输入航班的功能 char c;printf("请输入您要增加的航班信息:n");printf("请输入航班号:n");scanf("%d",&planenum.no);printf("请输入起
21、飞地n");scanf("%s",planenum.qidian);printf("请输入目的地n");scanf("%s",planenum.zhongdian);printf("请输入起飞时间n");scanf("%s",planenum.time);printf("请输入航班余量n");scanf("%d",&planenum.left);for(i=0;i<planenum.left;i+)/订出标记 planenum.zu
22、oweii.biaoji=0; num+;getchar();/继续void shuchu() /输出航班信息的功能 printf("目前航班:n"); printf("航班号tt起飞地tt目的地tt起飞时间tt票数n"); for(i=0;i<num;i+)printf("%dtt%stt%stt%sttt%dn",planei.no,planei.qidian,planei.zhongdian,planei.time,planei.left);getchar();/继续void chazhao() /查找航班信息的功能pri
23、ntf("请输入您要查询的航班号:");scanf("%d",&t); for(i=0;i<num;i+)/先查找航班 if(t=planei.no) printf("航班的空座数量为:%dn",planei.left); printf("空座号:"); for(j=0;j<12;j+) if(planei.zuoweij.biaoji!=1) printf("%d号 ",j+1); /输出航班号 printf("n"); printf("已订座
24、位的信息:n"); for(j=0;j<12;j+) if(planei.zuoweij.biaoji=1) printf("座位号:%dn",j+1); printf("订座者姓名:");puts(planei.zuoweij.xingming); printf("订座者身份证号码:");puts(planei.zuoweij.zhengjian); /12个座位查询范围 printf("航班起飞时间:");puts(planei.time); getchar();/继续void dingpiao
25、() /订票的功能 int n; printf("请输入订票的航班号:n"); scanf("%d",&n); for(i=0;i<num;i+) if(planei.no=n) break; printf("余票:%dn",planei.left); for(j=0;planei.zuoweij.biaoji=1;j+); printf("请输入姓名拼音:");scanf("%s",planei.zuoweij.xingming); printf("请输入身份证号码:");scanf("%s",planei.zuoweij.zhengjian); printf("分配给座位是:%d号n",j+1); planei.zuoweij.biaoji=1; planei.left-; getchar();/继续void cancel() /删除订票的功能 int n,m; char judge; printf("请输入删除的订票航班号:"); scanf("%d",&n);for(i=0;i<num;i+) if(plane
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《医院合作医疗》课件
- 《中华茶艺与文化》课件
- 课件:人格尊严的法律保护与实践教学指导
- 快乐的有效沟通技巧
- 薪资福利政策
- 2025年昌吉货运从业资格考题
- 营口理工学院《生物材料表界面工程》2023-2024学年第二学期期末试卷
- 辽宁地质工程职业学院《邮政快递软件设计》2023-2024学年第一学期期末试卷
- 玉溪农业职业技术学院《生化与分子生物学实验》2023-2024学年第二学期期末试卷
- 山西电力职业技术学院《实验诊断F》2023-2024学年第二学期期末试卷
- 工程师评审代办合同协议
- 小班健康活动:我会吃鱼
- 专利代理师考试题库含答案2024
- DB12 T1230-2023 政务信息资源共享 总体框架
- 管道拆除专项施工方案
- 广西壮族自治区马山县实验高中-双休背后:从“要我学”到“我要学”的转变-高三家长会【课件】
- GB/Z 27021.13-2025合格评定管理体系审核认证机构要求第13部分:合规管理体系审核与认证能力要求
- 湖南省长沙市四大名校2024-2025学年高三2月月考语文试题(原卷版+解析版)
- 《政府采购管理研究的国内外文献综述》5500字
- 糖尿病护理查房提出问题
- 2024年国网浙江省电力有限公司招聘考试真题
评论
0/150
提交评论