C语言课程设计报告飞机订票系统_第1页
C语言课程设计报告飞机订票系统_第2页
C语言课程设计报告飞机订票系统_第3页
C语言课程设计报告飞机订票系统_第4页
C语言课程设计报告飞机订票系统_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 c语言程序设计 课程设计题目: 飞机订票系统 院(系): 专业班级: 学 号: 学生姓名: 指导教师: 教师职称: 起止时间: 课程设计(报告)任务及评语 学 号学生姓名专业班级程序设计(报告)题目飞机订票系统程序设计(报告)任务程序设计的任务与要求:(1)掌握c语言编程的基础知识。(2)较熟练地编写c语言应用程序。(3)了解c语言的常用标准函数、编程技巧、异常处理。(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一

2、个积极的推动作用。课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。指导教师评语及成绩成绩: 指导教师签字: 年 月 日目 录第1章 课程设计的目的与要求11.1 课程设计目的11.2 课程设计的实验环境11.3 课程设计的预备知识11.4 课程设计要求1第2章 课程设计内容22.1程序功能介绍22.2程序整体设计说明22.2.1设计思路22.2.2数据结构设计及用法说明32.2.3程序结构(流程图)52.2.4各模块的功能及程序说明52.2.5程序结果62.3程序源代码及注释7第3章 课程设计总结17参考资料 1

3、8第1章 课程设计的目的与要求1.1 课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完程序设计语言(c)课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1. 巩固和加深学生对c语言课程的基本知识的理解和掌握 2. 掌握c语言编程和程序调试的基本技能 3. 利用c语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用c语言解决实际问题的能力1.2 课程设计的实验环境硬件要求能运行windows 2000/xp操作系统的微机系统。c语言程序设计及相应的开发环境。1.3 课程设计的预备知识熟悉c语言及c语言开发工具。1.4 课程设计要求1.

4、 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告第2章 课程设计内容2.1程序功能介绍本程序首先输入机票信息,管理员在保存功能中通过密码验证输入机票信息,可以对机票信息进行查询;修改;删除等功能。一般用户可以使用订票;显示;退票等功能,在订票时用户输入密码在退票时通过验证后成功退票。假定民航机场共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额。设计一个飞机订票系统,使之能提供下列服务:1、航班信息录入功能(航班信息用文件保存) 包括

5、航班号、起始站、重点站、机票数等;2、航班信息浏览功能3、按航班号排序4、查询航线:按航班号查询5、承办订票和退票业务(可选项)2.2程序整体设计说明编写一个飞机订票系统的程序,使该系统能够实现对航班信息的录入、浏览、排序、查询以及订票、退票的功能。根据题目要求,首先要制作一个主菜单显示出各个操作的提示可供用户选择,进而一步步地深入操作。根据主菜单的内容再进一步编制具体操作的函数,各个功能均用专门编制的函数来完成。因为飞机订票系统含有各航班的各项信息,如航班号、航线、飞行时间、机票数目等必要信息,所以就决定用刚学不久的结构体数组来存放航班的各项信息,这就是看到题目后的最初的思路。2.2.1设计

6、思路本次设计需要编制初始化、建立数据文件、数据文件保存、增加航班信息、订票、退票业务等内容。首先需要设立一个初始化函数来得到航班信息。具体设计是第一次运行程序时自动生成保存航班信息的文件,并输入初始航班信息,待第二次开始就可以直接读取该文件获得已有的航班信息并可直接使用。运用了access函数判断文件是否存在。系统初始化后,没有寻找到数据文件,则进行新建数据文件,此函数的作用就是进行新建文件数据的录入。运用到了文件指针的定义file *fp,文件的打开fopen和关闭fclose、成块读写函数中的fwrite;运用for循环进行各组数据的输入,用m+记录下输入的航班数量,并运用if语句判断是否

7、输入下一条航班信息,若不继续则返回主界面。系统初始化之后,若原始数据文件存在,则进行文件内航班信息的读取,以供接下来程序中的各个函数来使用。在该函数中同样运用到了文件指针file *fp、文件的打开fopen和关闭fclose、成块读写函数中的fread、文件结束检测函数feof同时配合while语句控制文件的读取;m+记录下读取到的航班数量等。因为在飞机订票系统中涉及到飞机的订票和退票业务,还有按航班号的排序功能,所以我就定义了这个保存函数来保存下每次运行系统后对整个订票系统涉及到的资料的修改。为了简便程序,我就准备将此函数放在整个系统得推出选项中,这样就只在每次退出系统的时候进行一次保存,

8、将此次对文件修改的所有新信息都一次保存下来。这样就实现了整个系统运行时进行一次读取,推出时一次保存的设计,大大简便了文件的调用和读取。保存函数运用到的知识点与读取函数大致相同。在这个函数中首先调用了search函数查找需要订票的航班。运用if语句实现订票时的多种情况:订票数输入不正确、飞机票数不足等情况。订票成功时运用si.count=si.count-n;将已被订的机票数减去,以显示新的即时航班信息。与订票函数相类似,只做稍稍修改就行退票成功是用si.count=si.count+n; 将航班的剩余票数加上去以显示即时航班信息。2.2.2数据结构设计及用法说明 数据结构设计:因为飞机订票系统

9、含有各航班的各项信息,如航班号、航线、飞行时间、机票数目等必要信息,所以就决定用刚学不久的结构体数组来存放航班的各项信息,根据题目要求定义如下结构体类型:#include /标准输入、输出头文件/#include /包含字符串函数处理头文件/#include /包含access函数的头文件/#define n 1000 /定义最多的航班数/#define print %dtt%stt%stt星期%stt%dn ,si.num,si.start,si.over,si.time,si.count /宏定义输出格式/struct air /定义结构体数组/int num; /定义航班号/char s

10、tart20; /航班起始站/char over20; /终点站/char time10; /飞行时间/int count; /机票数量/sn;int i,m=0; /定义全局变量,记录下航班信息的数量/char i10; /*用来选择是否继续的变量*/用法说明:1、首先进入程序欢迎界面(对系统的说明,及程序分组名单)停留15s。再由程序主界面(按数字1-5 再回车)进入其他功能。2、输入密码(第一次设置密码)机票信息管理,并选1进入机票信息录入,选2浏览航班信息。选3进行查询航班记录。定票时应查询所有的航班信息。3、输入正确的航班号,并且输入正确的个人信息。进入退票系统是否查询所有机票信息。

11、选择输入信息输入的方式并输入。退票时的信息显示然后确定。2.2.3程序结构(流程图)建立新数据文件开始系统初始化增加航班信息航班信息浏览查找航班信息航班排序订票业务退票业务退出并保存从已有的数据文件读取按航班号查找由小到大或由大到小2.2.4各模块的功能及程序说明1、保存模块:含有机票信息的管理,对机票信息输入,查询,修改,删除。2、订票模块:当有机票信息后可以订票,订票时输入航班号(进入时有可以查询所有机票信息)出现航班信息,确定订票后输入个人信息:姓名,性别,证件号,联系电话,密码(退票时用)。出现您的个人信息,确定后回车订票结束。3、显示模块:含全部;航班号;出发地;目的地等方式查询所有

12、机票信息。4、退票模块:当输入姓名或证件号后会显示您定的航班信息,再要求输入密码,当密码正确时会显示您的个人信息,回车再是否确定退票。5 查询模块:(输入管理密码)输入航班号,显示航班信息 和所有乘客个人信息。6 排序模块:当输入航班信息时,会自动的按航班号从大到小排序。2.2.5程序结果 第一次运行程序(输入初始数据) 图表 1主菜单界面 第二次运行程序(进行航班信息的浏览) 图表 2显示航班信息 查询航班信息图表 3查询航班信息 航班排序 图表 4航班排序 订票业务 图表 5订票业务1 票数不足情况2.3程序源代码及注释#include /标准输入、输出头文件/#include /包含字符

13、串函数处理头文件/#include /包含access函数的头文件/#define n 1000 /定义最多的航班数/#define print %dtt%stt%stt星期%stt%dn ,si.num,si.start,si.over,si.time,si.count /宏定义输出格式/struct air /定义结构体数组/int num; /定义航班号/char start20; /航班起始站/char over20; /终点站/char time10; /飞行时间/int count; /机票数量/sn;int i,m=0; /定义全局变量/char i 10;void add();

14、 /函数声明增加航班信息函数/void print(); /显示航班信息/void search(); /查找航班信息/void dingpiao(); /订票业务/void tuipiao(); /退票/void read(); /读取文件/void save(); /保存文件/void output(); /输出格式/void paixu(); /航班排序/void chushihua(); /系统初始化/void build(); /建立数据文件/void paixu1(); /按航班号从小到大排序/void paixu2(); /从大到小/void main() /主函数/int j;

15、 chushihua(); /系统初始化判断是否存在原始数据文件/printf( o(_)o欢迎使用天鑫飞机订票系统(*_*)n);/打印出系统主界面/doprintf(= ); printf(1.增加航班信息nt2.浏览航班信息ntt3.查找航班信息(按航班号)tt(_)nttt4.航班排序(按航班号)ntttt5.订票业务nto()ottt6.退票业务ntttttt0.退出n);printf(= ); printf(请在0-6中选择以回车键结束: );scanf(%d,&j);switch(j)case 1: add(); /调用增加航班函数/break;case 2:print(); /

16、调用显示模块/break;case 3:search(); /调用查找模块/break;case 4:paixu(); /调用排序函数/break;case 5:dingpiao(); /调用订票模块/break;case 6:tuipiao(); /调用退票模块/break; case 0: /退出系统/save();printf(谢谢使用,再见! );break;while(j!=0); /判断是否调用其他函数/void chushihua() /定义系统初始化函数/if(access(hangban.dat,0)build();elseread();void build() /定义建立数

17、据文件函数/file *fp; /定义文件指针/if(fp=fopen(hangban.dat,wb)=null) /打开文件并判定是否出错/ printf(创建文件失败! ); /打印出错提示/getchar();return;printf(请依次输入航班信息(以回车键结束):n); /打印提示信息/printf(- n);for(i=0;in;i+)printf(请输入航班号: ); scanf(%d,&si.num); /输入航班号/printf(请输入起始站: );scanf(%s,si.start); /输入起始站/printf(请输入终点站: );scanf(%s,si.over)

18、; /输入终点站/printf(请输入时间(星期几): );scanf(%s,si.time); /输入时间/printf(请输入机票数: );scanf(%d,&si.count); /输入机票数/fwrite(&si,sizeof(struct air),1,fp);m+;printf(添加完毕,是否继续添加?请键入y或n以回车键结束:);scanf(%s,ii);if(strcmp(ii,y)!=0) /判断是否继续添加航班信息/fclose(fp); /关闭文件/return;void read() /定义读取文件函数/file *fp;if(fp=fopen(hangban.dat,

19、r)=null)printf(创建文件失败! );getchar();return;i=0;while(!feof(fp)fread(&si,sizeof(struct air),1,fp); /逐块读取数据/i+;m+; /计算存在航班数/m-;fclose(fp);void save() /定义保存函数/file *fp;if(fp=fopen(hangban.dat,wb)=null) printf(创建文件失败! );getchar();return;for(i=0;im;i+) /逐块保存数据/fwrite(&si,sizeof(struct air),1,fp);fclose(fp

20、);void add() /定义增加航班信息函数/doprintf(请依次输入您要增加的航班信息(以回车键结束): n); /打印提示信息/printf(- n);printf(请输入航班号: ); scanf(%d,&sm.num); /读取航班号/printf(请输入起始站: );scanf(%s,sm.start); /读取起始站/printf(请输入终点站: );scanf(%s,sm.over); /读取终点站/printf(请输入时间: );scanf(%s,sm.time); /读取时间/printf(请输入机票数: );scanf(%d,&sm.count); /读取机票数/m

21、+;printf(添加完毕,是否继续添加?请键入y或n以回车键结束:);scanf(%s,ii);while(!strcmp(ii,y); /判断是否继续添加/void output() /定义输出格式函数/printf(航班号tt起始站tt终点站tt时间tt机票数n); /信息标题/for(i=0;im;i+)printf(print); /打印出信息/void print() /定义显示航班信息函数/printf(n目前我们有如下航班:n);output(); /调用输出格式函数/printf(n请按回车键返回上层菜单 );getchar();getchar();void search()

22、 /定义查询函数/int n;doprintf(n请输入航班号: );scanf(%d,&n); /输入查询的航班号/for(i=0;im;i+)if(si.num=n) /按航班号判定输出条件/printf(n您所查找的航班信息为:n );printf(航班号tt起始站tt终点站tt时间tt机票数 nn);printf(print); /显示信息/printf(n查询完毕,按回车键继续);getchar();getchar();return;printf(n对不起,没有您需要的信息!n );printf(是否重新查找?请键入y或n以回车键结束 );scanf(%s,ii);while(!st

23、rcmp(ii,y); /判定是否重新查找/void dingpiao() /定义订票业务函数/int n;char a10=y;dosearch(); /调用查询模块/if(!strcmp(ii,n)printf(对不起!没有找到您所需要的航班,所以不能订票。n); /未查找到所需航班/printf(n请按回车键返回上层菜单 );getchar();getchar();strcpy(ii,n);break;doprintf(请输入您要订的机票数(以回车键结束): );scanf(%d,&n); /输入所订机票数/if(n=n) /判定机票数是否大于等于订票数/si.count=si.coun

24、t-n;printf(订票成功! );break;else if(si.countn) /判定机票数是否小于订票数/printf(对不起,你所选择的航班只剩 %d张机票n, si.count);printf(是否需要重新输入机票数?请输入y或n以回车键结束: );/判定是否重新输入订票数/scanf(%s,a);while(!strcmp(a,y);printf(是否需要订其他航班的机票?请输入y或n以回车键结束: );scanf(%s,a);while(!strcmp(a,y); /判定是否继续订票/void tuipiao() /定义退票函数/int n;char a10;dosearch

25、(); /调用查询函数/if(!strcmp(ii,n)printf(对不起!没有找到您所需要的航班,所以不能退票。n);printf(n请按回车键返回上层菜单 );getchar();getchar();strcpy(ii,n);break;printf(请输入您要退的机票数目: );scanf(%d,&n); /输入所退票数/if(n=0) /判定票数是否有效/printf(输入错误!至少需退1张机票。 );else si.count=si.count+n;printf(退票成功! );printf(是否继续? 请键入y或n以回车键结束: ); /判定是否继续退票/scanf(%s,a);

26、while(!strcmp(a,y); /判定并跳出循环/ void paixu() /定义排序函数/int n;printf(n* ); printf(1.按航班号从小到大排序nt2.按航班号从大到小排序n);printf(* ); printf(请在1-2中选择以回车键结束: );scanf(%d,&n); /输入排序方式/switch(n)case 1:paixu1(); /调用从小到大排序函数/break;case 2:paixu2(); /调用从大到小排序函数/break;printf(排序后的航班信息为:n);output(); /显示排序后航班信息/printf(n请按回车键返回

27、上层菜单 );getchar();getchar();void paixu1() /定义从小到大排序函数/int k,j;struct air t;for(i=0;im;i+) /选择法排序/k=i;for(j=i+1;jsj.num)k=j;if(i!=k)t=sk;sk=si;si=t;void paixu2() /定义从大到小排序函数/int k,j;struct air t;for(i=0;im;i+)k=i;for(j=i+1;jm;j+)if(sk.numsj.num)k=j;if(i!=k)t=sk;sk=si;si=t;第3章 课程设计总结经过此次的课程设计,可以很明确的了解到

28、自己哪些知识点掌握的比较好,哪些知识点运用的还不够熟练。通过此次课程设计也学会综合运用理论知识来分析和解决实际问题的能力、养成严谨的科学态度和良好的程序设计习惯,实现由知识向智能的初步转化;学会遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,并能够完成设计、编写、调试和测试应用程序及编写文档的任务程序整体上运行与题目要求很吻合,算法大多比较通用,各个函数模块的正确性、完备性、对输入的容错能力以及算法的进一步改进在设计中都有表述,这道题使我熟悉了文件的输入输出操作,真切的感受到了fprintf和fwrite函数的区别!回顾起此次课程设计,至今我仍感慨颇多,从理论到实践,在整整半个月的日子里,我学到很多很多的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的内容。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论