C语言课程设计报告飞机订票系统

上传人:1666****666 文档编号:39482840 上传时间:2021-11-11 格式:DOC 页数:21 大小:250.50KB
返回 下载 相关 举报
C语言课程设计报告飞机订票系统_第1页
第1页 / 共21页
C语言课程设计报告飞机订票系统_第2页
第2页 / 共21页
C语言课程设计报告飞机订票系统_第3页
第3页 / 共21页
点击查看更多>>
资源描述
C语言程序设计 课程设计题目: 飞机订票系统 院(系): 专业班级: 学 号: 学生姓名: 指导教师: 教师职称: 起止时间: 课程设计(报告)任务及评语 学 号学生姓名专业班级程序设计(报告)题目飞机订票系统程序设计(报告)任务程序设计的任务与要求:(1)掌握C语言编程的基础知识。(2)较熟练地编写C语言应用程序。(3)了解C语言的常用标准函数、编程技巧、异常处理。(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。指导教师评语及成绩成绩: 指导教师签字: 年 月 日目 录第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参考资料 18第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. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告第2章 课程设计内容2.1程序功能介绍本程序首先输入机票信息,管理员在保存功能中通过密码验证输入机票信息,可以对机票信息进行查询;修改;删除等功能。一般用户可以使用订票;显示;退票等功能,在订票时用户输入密码在退票时通过验证后成功退票。假定民航机场共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额。设计一个飞机订票系统,使之能提供下列服务:1、航班信息录入功能(航班信息用文件保存) 包括航班号、起始站、重点站、机票数等;2、航班信息浏览功能3、按航班号排序4、查询航线:按航班号查询5、承办订票和退票业务(可选项)2.2程序整体设计说明编写一个飞机订票系统的程序,使该系统能够实现对航班信息的录入、浏览、排序、查询以及订票、退票的功能。根据题目要求,首先要制作一个主菜单显示出各个操作的提示可供用户选择,进而一步步地深入操作。根据主菜单的内容再进一步编制具体操作的函数,各个功能均用专门编制的函数来完成。因为飞机订票系统含有各航班的各项信息,如航班号、航线、飞行时间、机票数目等必要信息,所以就决定用刚学不久的结构体数组来存放航班的各项信息,这就是看到题目后的最初的思路。2.2.1设计思路本次设计需要编制初始化、建立数据文件、数据文件保存、增加航班信息、订票、退票业务等内容。首先需要设立一个初始化函数来得到航班信息。具体设计是第一次运行程序时自动生成保存航班信息的文件,并输入初始航班信息,待第二次开始就可以直接读取该文件获得已有的航班信息并可直接使用。运用了access函数判断文件是否存在。系统初始化后,没有寻找到数据文件,则进行新建数据文件,此函数的作用就是进行新建文件数据的录入。运用到了文件指针的定义FILE *fp,文件的打开fopen和关闭fclose、成块读写函数中的fwrite;运用for循环进行各组数据的输入,用m+记录下输入的航班数量,并运用if语句判断是否输入下一条航班信息,若不继续则返回主界面。系统初始化之后,若原始数据文件存在,则进行文件内航班信息的读取,以供接下来程序中的各个函数来使用。在该函数中同样运用到了文件指针FILE *fp、文件的打开fopen和关闭fclose、成块读写函数中的fread、文件结束检测函数feof同时配合while语句控制文件的读取;m+记录下读取到的航班数量等。因为在飞机订票系统中涉及到飞机的订票和退票业务,还有按航班号的排序功能,所以我就定义了这个保存函数来保存下每次运行系统后对整个订票系统涉及到的资料的修改。为了简便程序,我就准备将此函数放在整个系统得推出选项中,这样就只在每次退出系统的时候进行一次保存,将此次对文件修改的所有新信息都一次保存下来。这样就实现了整个系统运行时进行一次读取,推出时一次保存的设计,大大简便了文件的调用和读取。保存函数运用到的知识点与读取函数大致相同。在这个函数中首先调用了search函数查找需要订票的航班。运用if语句实现订票时的多种情况:订票数输入不正确、飞机票数不足等情况。订票成功时运用si.count=si.count-n;将已被订的机票数减去,以显示新的即时航班信息。与订票函数相类似,只做稍稍修改就行退票成功是用si.count=si.count+n; 将航班的剩余票数加上去以显示即时航班信息。2.2.2数据结构设计及用法说明 数据结构设计:因为飞机订票系统含有各航班的各项信息,如航班号、航线、飞行时间、机票数目等必要信息,所以就决定用刚学不久的结构体数组来存放航班的各项信息,根据题目要求定义如下结构体类型:#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 start20; /航班起始站/char over20; /终点站/char time10; /飞行时间/int count; /机票数量/sN;int i,m=0; /定义全局变量,记录下航班信息的数量/char i10; /*用来选择是否继续的变量*/用法说明:1、首先进入程序欢迎界面(对系统的说明,及程序分组名单)停留15s。再由程序主界面(按数字1-5 再回车)进入其他功能。2、输入密码(第一次设置密码)机票信息管理,并选1进入机票信息录入,选2浏览航班信息。选3进行查询航班记录。定票时应查询所有的航班信息。3、输入正确的航班号,并且输入正确的个人信息。进入退票系统是否查询所有机票信息。选择输入信息输入的方式并输入。退票时的信息显示然后确定。2.2.3程序结构(流程图)建立新数据文件开始系统初始化增加航班信息航班信息浏览查找航班信息航班排序订票业务退票业务退出并保存从已有的数据文件读取按航班号查找由小到大或由大到小2.2.4各模块的功能及程序说明1、保存模块:含有机票信息的管理,对机票信息输入,查询,修改,删除。2、订票模块:当有机票信息后可以订票,订票时输入航班号(进入时有可以查询所有机票信息)出现航班信息,确定订票后输入个人信息:姓名,性别,证件号,联系电话,密码(退票时用)。出现您的个人信息,确定后回车订票结束。3、显示模块:含全部;航班号;出发地;目的地等方式查询所有机票信息。4、退票模块:当输入姓名或证件号后会显示您定的航班信息,再要求输入密码,当密码正确时会显示您的个人信息,回车再是否确定退票。5 查询模块:(输入管理密码)输入航班号,显示航班信息 和所有乘客个人信息。6 排序模块:当输入航班信息时,会自动的按航班号从大到小排序。2.2.5程序结果 第一次运行程序(输入初始数据) 图表 1主菜单界面 第二次运行程序(进行航班信息的浏览) 图表 2显示航班信息 查询航班信息图表 3查询航班信息 航班排序 图表 4航班排序 订票业务 图表 5订票业务1 票数不足情况2.3程序源代码及注释#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 start20; /航班起始站/char over20; /终点站/char time10; /飞行时间/int count; /机票数量/sN;int i,m=0; /定义全局变量/char i 10;void add(); /函数声明增加航班信息函数/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; 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(); /调用显示模块/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() /定义建立数据文件函数/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); /输入终点站/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,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);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+;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() /定义查询函数/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(!strcmp(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.count-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(); /调用查询函数/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);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请按回车键返回上层菜单 );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章 课程设计总结经过此次的课程设计,可以很明确的了解到自己哪些知识点掌握的比较好,哪些知识点运用的还不够熟练。通过此次课程设计也学会综合运用理论知识来分析和解决实际问题的能力、养成严谨的科学态度和良好的程序设计习惯,实现由知识向智能的初步转化;学会遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,并能够完成设计、编写、调试和测试应用程序及编写文档的任务程序整体上运行与题目要求很吻合,算法大多比较通用,各个函数模块的正确性、完备性、对输入的容错能力以及算法的进一步改进在设计中都有表述,这道题使我熟悉了文件的输入输出操作,真切的感受到了fprintf和fwrite函数的区别!回顾起此次课程设计,至今我仍感慨颇多,从理论到实践,在整整半个月的日子里,我学到很多很多的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的内容。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。在设计的过程遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计,把以前所学过的知识重新温故,巩固了所学的知识。在编写程序的过程中受到了其他同学的指点,也许在某些程序方面会和有的同学想类似,但是老师在我编程序过程中也起到了很大的作用,我们在C语言这门课上还会继续走下去,以后还会经常碰到,我会努力的。参考资料1 刘成.C语言程序设计实验指导与习题集.北京:中国铁道出版社,20062 詹红霞.visual c+6.0 程序设计.西安:西安电子科技大学出版社,20093 郑影.网络设备与管理实用实训教程.北京:清华大学出版社,20024 郝与明.多媒体电脑计算机网络设备与管理实训教程.北京:清华大学出版社,20025 萨师煊,王珊.数据库系统概论(第三版).北京:高等教育出版社,20006 黄明等.C语言程序设计.大连:大连理工大学出版社,20057 李成付.C语言程序设计基础.北京: 科学出版社,20108 李国昌.C语言程序设计基础.北京: 科学出版社,20099 李大友.C语言程序设计基础.北京: 清华大学出版社, 199910 钱启平.C语言程序设计基础.北京: 中国铁道出版社, 200011 辛再甫. 新电脑课堂网络设备与管理篇.吉林: 电子工业出版社,200012 Simon Robinson, K.Scott Allen等.C#高级编程.北京:清华大学出版社,200813 英夏普. Visual C# 2005从入门到精通.北京:清华大学出版社,200614 刘基诚. C+精髓.北京:中国电力出版社, 200115 萨师煊,王珊.数据库系统概论(第三版).北京:高等教育出版社,200016 郑阿齐,刘启芬等. SQL Server2000实用教程.北京:电子工业出版社, 200917 刘浩,陈曙东主编. C#编程实例与技巧.北京:清华大学出版社,200918 谭桂华,魏亮等主编. Visual C# 高级编程范例.北京:清华大学出版社,2004:18
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸下载 > CAD图纸下载


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!