《最新C语言飞机订票系统课程设计.doc》由会员分享,可在线阅读,更多相关《最新C语言飞机订票系统课程设计.doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品资料C语言飞机订票系统课程设计. 课 程 设 计 报 告课程名称 C语言课程设计 课题名称 飞机订票系统 前 言C语言程序设计课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,课程设计的课题比平时的习题复杂得多,也更接近实际。课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。为了达到上述目
2、的,本课程设计安排了八个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。学生可任选其中一题进行设计,设计完毕写出课程设计报告,用A4纸打印成册;并将课程设计报告与源程序存盘。学习委员将课程设计报告与磁盘收齐后交指导老师。一、目的全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的
3、思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。二、设计要求掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。1. 设计正确,方案合理。2. 界面友好,使用方便。3. 程序精炼,结构清晰。4. 设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。5. 上机演示。6. 按学号顺序选课题号,并在规定的时间内独自完成相关课题的C源程序编写、调整和运行。源程序及编译生成各文件均保存在软盘中;7. 务书的要求,按附录的要求编写课程设计报告(Word文档格式)。并用
4、A4的复印纸打印并装订; 7. 在2011年1月10日之前,请各班学习委员收齐课程设计报告和源程序软盘交王颖老师 ,联系电话:13017328883。三、进度安排第二周 星期四: 课题讲解,查阅资料第三周星期一: 总体设计,详细设计星期二: 编程,上机调试、修改程序星期三: 上机调试、完善程序星期四: 完善程序星期五: 答辩星期六-星期天:撰写课程设计报告课程设计报告规范一、 需求析分1、程序的功能。2、输入输出的要求。二、概要设计1、程序由哪些模块组成以及一个模块之间的层次结构、模块的调用关系;每个模块的功能。2、课题的总体数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们
5、之间有什么关系等。三、详细设计1、采用C语言定义相关的数据类型。2、写出各模块的类C码算法。3、画出函数的调用关系图。四、调试分析以及设计体会1、测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果。2、程序调试中遇到的问题以及解决问题的方法。3、课程设计过程经验教训、心得体会。五、使用说明用户使用手册:说明如何使用你编写的程序,详细列出每一步的操作步骤。六、 附录1、参考书目2、源程序清单(带注释)附1:l 课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。 l 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗
6、,正文用小四号宋体;行距为22。l 正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。l 正文总字数要求在5000字以上(不含程序原代码)。目录一、绪论11.1项目背景描述11.2问题定义.11.3思考1二、需求分析22.1 问题描述:62.2 功能描述:72.3 算法提示:72.4、测试数据:72.5其它:7第三章 总体设计73.1 课程设计题目:73.2. 内容摘要:83.3. 关键字:83.4总体设计方案的选定:8四、详细设计54.
7、1采用C语言定义相关的数据类型.54.2 写出各模块的类C码算法.54.3机票信息录入void inputinfo()流程图74.4订票系统void bookticket()流程图84.5显示模块void display()流程图94.6退票系统void returnticket()流程图10五、测试.10六、使用说明115.1主界面115.2机票信息管理(保存)125.3订票系统使用155.4退票系统17七、课程设计总结196.1课程设计心得:196.2在程序设计中的问题和解决:19附录20源程序清单(带注释)201.机票信息录入(带注释):203.源程序清单:(附)31参考文献75第一章
8、绪论1.1:项目背景描述1、课程设计性质与目的: C语言程序设计是一门实践性很强的课程。C程序课程设计是学习C语言程序设计的非常重要的实践环节,通过本课程设计使学生进一步巩固课堂所学,全面熟悉,掌握C语言程序设计的基本方法和技巧,进一步提高编写程序、分析程序及上机操作、调试程序的能力,让学生加深理解书上所学的知识,提高动手操作能力及分析问题和解决问题的能力。2、课程设计包含的知识点:1掌握并熟练利用C语言的基本数据类型与各种表达式,程序的流程控制语句。2掌握数组的基本概念。掌握一维数组与二维数组的使用,掌握字符数组与字符串的关系。3熟练掌握指针、地址、指针类型的概念及其使用。掌握指针变量的定义
9、与初始化、指针的间接访问和表达式,掌握指针与数组、函数、字符串的联系4掌握函数的定义,函数的返回值,函数的调用,函数的声明,函数的形式参数和实际参数之间的关系,了解函数的作用区间。5掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示。结构体与指针、函数的关系。1.2:问题的定义假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。通过该系统来实现机票的订购问题。第二章 需求分析一、问题描述:假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。通过该系统来实现机票的订购问题。二、功能要求:1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括
10、:起飞地、目的地 航班号、座次号码、座次订出与否标记、订座者的姓名和订座者的身份证号码。2、本系统显示这样的菜单:(1) 输入航班信息(2) 输出航班信息(3) 查找航班信息a.显示空座的数量b.显示空座的信息c.显示已订座的信息d.起飞时间(4)订票预约(5)删除定票预约(6)退出系统1、 本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。2、 查找航班信息既可按线路查,也可按目的地查。4、在两次运行之间,数据被保存于一个文件里,当本程序重新开始的时候,它首先从该文件读入数据三、算法提示:1、数据结构:结构体类型数组2、数据库结构:下表构成该系统的基
11、本数据库。 航班号起飞时间目的地座次号座次订出与否的标记订票者姓名订票者身份证号码intcharcharintCharcharchar四、测试数据:每架飞机的座位N=12,M=5 五、其它:对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能。第三章 总体设计课程设计主文档3.1 课程设计题目:飞机订票系统3.2. 内容摘要:假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。通过该系统来实现机票的订购问题。3.3. 关键字:函数 数组 结构体 文件 循环语句 多分支结构3.4总体设计方案的选定:程序的功能要求:1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当
12、包括:起飞地、目的地 航班号、座次号码、座次订出与否标记、订座者的姓名和订座者的身份证号码。2、本系统显示这样的菜单:(4) 输入航班信息(5) 输出航班信息(6) 查找航班信息a.显示空座的数量b.显示空座的信息c.显示已订座的信息d.起飞时间(4)订票预约(5)删除定票预约(6)退出系统3、 本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。4、 查找航班信息既可按线路查,也可按目的地查。4、在两次运行之间,数据被保存于一个文件里,当本程序重新开始的时候,它首先从该文件读入数据 第四章 详细设计4.1采用C语言定义相关的数据类型 struct tr
13、avellerinfo/旅客信息结构char fightnum 10;/航班号char name 10; /姓名char sex 5; /性别char idnum 20;/证件号码char znum 12;/座次号码char flage 2;/座次定出与否标记char poto 12; /联系电话;struct fightinfo/机票信息结构体char fightnum 10;/航班号char start 8;/出发地char destination 8;/目的地unsigned int price;/价格unsigned int goyear;/出发时间 年unsigned int gom
14、oth;/月unsigned int goday;/日unsigned int gohour;/时unsigned int gominute;/分unsigned int arryear;/到达时间 年unsigned int arrmoth;/月unsigned int arrday;/日unsigned int arrhour;/时unsigned int arrminute;/分unsigned int allsticket;/总票数unsigned int surplusticket;/剩余票数;struct allfightinfo /机票全部结构struct travellerin
15、fo fight;/旅客信息结构struct fightinfo fight1;/机票信息结构体;4.2 写出各模块的类C码算法4.2系统总体结构 订票输入航班号查询所有航班输入旅客信息 全部显示 航班号 出发地飞机订票系统 目的地姓名 退票查询所有航班退证件号航班信息和旅客信息输入航班号密码查询 机票信息录入 查询所有机票保存 修改机票删除机票信息4.3机票信息录入void inputinfo()流程图打开文件读取数据输入航班号输入出发信息 无效重新输入 无效重新输入输入到达信息 折扣 无效重新输入 写入文件是否输入下一个信息结束4.4订票系统void bookticket()流程图在有航班
16、信息的情况下可以进行订票操作。开始打开文件1否读取文件1 是否打开文件2 是否读取文件2 是否查询所有 是否显示航班信息输入航班号显示航班信息确定订票否输入个人信息保存提示放弃结束4.5显示模块void display()流程图显示模块打开文件否 是读取数据 有无数据 否 是显示查询方式全部查询是 否输入查询信息显示航班信息返回4.6退票系统void returnticket()流程图开始打开文件1否读取文件1 是否打开文件2 是否读取文件2 是否显示信息输入方式 是输入方式及信息显示航班信息密码?否显示个人信息提示密码错误确定退票结束第五章 测试结束(1)menu()函数NYYY退出n=8N
17、Yw1=1w1=0输入新航班浏览航班操作订票退票保存载入清屏(cls)int n,w1NYn=3n=7n=5n=6n=4n=2n=1输出n(1-8)NYYYWhile(w=1)YYYYYYYYYYYYYYNYNYNYNYNYNYYYif n8输出n输出目录开始第七章 总结一周的C语言课程设计即将结束,现在回想起来真是五味俱全,从开始的懵懂无知到现在做出一本挺有厚度的资料,我不但实践了课本的知识,还制作出心算小程序,虽然很多人帮了我的忙,仍旧感觉自己对C语言有了深入的了解,还是有所成长,有所收获,在实践中,自己编程常会犯错误,并总结一些克服缺点的方法。深刻体会到程序设计中最重要的一部分不是编写源
18、程序,而是调试过程。只有经过调试程序,我们才能掌握正确的语法知识及把问题的解决方法用程序语言来表达。 其实这一周遇到了不少的挫折,第一次上机就有些不知所措,到底该从何下手呢?后来有朋友同学的鼓励,慢慢调整心态,开始动手操作,原来编程很有意思,有时遇到了一个错误怎么找也找不到原因所在,找了老半天结果却是一个函数放错了地方所致,有时一个功能不知道怎么实现找这个、找那个。有所编到最后一运行却告诉我错误,那真的很让人恼火。以前上课都是学一些最基本的东西,觉得很枯燥,而现在却可以将以前学的东西编出有实际价值的东西,这样自己非常的投入,其实什么事情只要自己用心了,就会有所感触,有所收获。真的觉得有味道,生
19、活都变充实了。此次程序设计主要用了函数的调用,if、else选择语句,switch语句,时间函数,标准输入输出、随机取整函数等基本知识点,结合课本知识加上自己的应用结果颇为令人满意 ,但是还有很多的缺陷与不足,这是我可以清醒认识到的。C语言是一项细致深入的工作,不仅要有严谨的思路,还要在实践中有耐心,要细心,如果无法沉着冷静,真的会看不到结果,毫无收获的 。 C语言又是一种系统开发语言。这一个学期对C语言的接触让我明白了自己的不足之处,对书上内容的理解不够透彻。 这一周的课程设计让我们有机会上机调试,我才发现我们的程序存在这么多的漏洞和错误。我经过了一个下午的时间,在老师的指导下,检查调试这程
20、序,终于让它能够运行了。但是课程设计并不是那么的简单,能运行的程序并不代表就是对的,我们还要按要求测试数据,一点一滴的把程序按要求做出来。 通过这次的课程设计,我受益匪浅。它让我了解了细心的重要性,程序中若有一丝一点的错误就会影响整个程序,而使其不能运行。当我第一次拿到课程设计的任务书的时候,我都非常的兴奋,因为这是我们一次很好的锻炼机会。我经过一周的C语言课程设计,我不但实践了课本的所学的知识,还亲自制作了自己的小程序,感觉自己对C语言有了更深入的了解。在实践过程中,自己编程的时候常常会犯错误,并总结了一些克服缺点的方法。而且更深刻体会到程序设计中最重要的一部分不是编写源程序,而是调试过程。
21、只有经过调试程序,我们才能掌握正确的语法知识及把问题的解决方法用程序语言来表达。在设计程序的同时也增长了翻阅有关文献的能力,加强了实践能力及自学能力,培养了分析问题 、编程和动手能力,掌握了程序设计基本技能。在调试过程中,特别让我印象深刻的是自己开始在程序调试的时候,开始并没有并没有看到预期的结果,最后我仔细检查了源程序代码,发现自己在申明函数的时候,出现了一个严重的语法问题,导致我整个程序都不能运行。我开始心理发慌起来,我开始放弃自己的先前做的 工作,觉得自己是第一次做设计,第一次看到这么长的程序代码,有理由放弃,但是,想着自己很辛苦的写了这么久,还是不想放弃,我开始慢慢去找我出的问题,我从
22、头到尾检查了一面,终于发现了问题之所在,我的心情顿时高兴起来,终于看到了希望!我越来越兴奋,我从新把源程序放入WIN-TC中进行调试,终于是 “柳岸花明又一村”。同时也让我真正体会到一句话:“胜利永远是属于永不放弃的人!”当然在本次课程设计的过程中遇到不止上面那一个困难,也有很多困难被我解决了。比如,有一个操作上的功能错误。我怎么找也找不到原因所在,找了老半天结果却是操作错误把一个函数放错了地方所致。有的时候一个功能不知道怎么实现找这个、找那个源代码都不行。当编译到最后一行运行却告诉我错误,那真的很烦人。以前上课都是学一些最基本的东西,觉得很枯燥,而现在却可以将以前学的东西编出有实际价值的东西
23、,这样自己非常的投入,有时候一编就是二三个小时坐在电脑前面,有时候连吃饭都忘了。但现在回过头来看,还是挺有成就感的。通过本次课程设计的学习,我体会到学好计算机一定要重视实践环节,不仅是在学习C语言, 还是其他计算机语言都是一样的重要。所以我以后在学习过程中更加重视实践环节的重要性。这样我相信自己的计算机水平一定会取得更好的进步!我总结了一下本次程序课程设计主要用了函数的调用,if、else选择语句,switch语句,时间函数,标准输入输出、随机取整函数等基本知识点,结合课本知识加上自己的应用最终取得圆满成功。C语言是一项细致深入的工作,不仅要有严谨的思路,还要在实践中有耐心,要细心。这一点我亲
24、身体会到了!以下是课程设计中的错误总结和分析:变量是程序中不可缺少的一部分,要谨记先定义后使用。输入输出类型要一致。“;”是C语言的语句结束语,不可省略。的互相匹配。调用函数必先声明。形式参数和实际参数必须个数相等,类型相同。最后,感谢在C语言学习及课程设计中对我指导的老师和同学!附1: 源代码#include #include #include #define N 1000typedef struct plane char ID10; /*航班代号*/ char BePlace10;/*飞机起飞地点*/ char EnPlace10;/*飞机降落终点*/ char data15;/*飞机起飞
25、时间*/ int max;/*飞机最大乘客人数*/ int price;/*飞机票价*/ int num;/*飞机已售票数*/PLANE;PLANE tiN;int n;/*当前的航班数目*/void menu();void menu1();void input(int i)printf(请输入航班代号:n);scanf(%s,tii.ID);printf(请输入起飞地点:n);scanf(%s,tii.BePlace);printf(请输入降落地点:n);scanf(%s,tii.EnPlace);printf(请输入起飞时间:n);scanf(%s,tii.data);printf(请输入
26、航班的最大载客人数:n);scanf(%d,&tii.max);printf(请输入航班的票价:n);scanf(%d,&tii.price);tii.num=0;void enter()int i; system( cls ); printf(请输入航班的数目(0-%d)?:,N);scanf(%d,&n); /*要输入的记录个数*/printf(n请输入数据nn);for(i=0;in;i+) printf(n请输入第 %d 航班记录.n,i+1); input(i); /*调用输入函数*/ getchar(); menu();void printf_one(int i) /*显示一个记录
27、的函数*/printf(%11s %6s %10s %6s %6d %6d %6d,tii.ID,tii.BePlace,tii.EnPlace,tii.data,tii.price,tii.max,tii.num);void browse()int i;system( cls ); puts(n-);printf(nt航班代号 起飞地点 降落地点 起飞时间 票价 最大乘客 已售票数n);for(i=0;in;i+)printf_one(i);printf(n);getchar();getchar();menu();void order() /*排序模块(按平均成绩)*/int i,j;str
28、uct plane s;system( cls ); for(i=0;in;i+) /*冒泡法排序*/for(j=i+1;j0)s=tii; tii=tij;tij=s; browse();void search_time()int i,m=0;struct plane s;system( cls ); printf(nnEnter the time:);scanf(%s,s.data); /*输入出发的时间*/puts(n-);printf(nt航班代号 起飞地点 降落地点 起飞时间 票价 最大乘客 已售票数n);for(i=0;in;i+)if(strcmp(s.data,tii.data
29、)=0)m+; if(m!=0)&(m%10=0) /*目的是分屏显示*/ printf(nnPress any key to contiune . . .);getchar();puts(nn); printf_one(i); printf(n);/*调用显示一个记录的函数*/puts(n-);getchar(); /*按任意健*/getchar(); menu1();void serch_end()int i,m=0;struct plane s;system( cls ); printf(nnEnter the end Place:);scanf(%s,s.EnPlace); /*输入要
30、到达的地方*/puts(n-);printf(nt航班代号 起飞地点 降落地点 起飞时间 票价 最大乘客 已售票数n);for(i=0;in;i+)if(strcmp(tii.EnPlace,s.EnPlace)=0)m+; if(m!=0)&(m%10=0) /*目的是分屏显示*/ printf(nnPress any key to contiune . . .);getchar();puts(nn); printf_one(i); printf(n);/*调用显示一个记录的函数*/puts(n-);getchar(); /*按任意健*/getchar(); menu1();void men
31、u1()int n,w1; do system( cls ); /*清屏*/ puts(tttt 飞机售票操作!nn); puts(tt*MENU*nn); puts(tttt1.按照时间排序); puts(tttt2.按照时间查找航班); puts(tttt3.按照地点查找航班); puts(tttt4.返回主菜单); puts(nntt*n); printf(Choice your number(1-4): bb); scanf(%d,&n); if(n4) /*对选择的数字作判断*/ w1=1; printf(your choice is not between 1 and 4,Plea
32、se input again:); getchar(); getchar(); else w1=0; while(w1=1); /*选择功能*/ switch(n) case 1:order();break; case 2:search_time();break; case 3:serch_end();break; case 4:menu();break; int search() /*查找模块*/int i,k;struct plane s;k=-1;system( cls ); printf(nn请输入要订票的起飞地点:);scanf(%s,s.BePlace); /*输入要到达的地方*/
33、printf(nn请输入要订票的降落地点:);scanf(%s,s.EnPlace); printf(nn请输入要订票的起飞时间:);scanf(%s,s.data); /*输入出发的时间*/for(i=0;i=tii.max)printf(n该趟航班票已售完!); elsetii.num+;printf(n订票成功!n);elseprintf(该航班不存在!n);getchar(); getchar(); /*按任意健*/menu();void back()int i,k=-1;struct plane s;system( cls ); printf(欢迎进入退票窗口!n);printf(nn输入航班代号:);scanf(%s,s.ID); /*输入要到达的地方*/ for(i=0;in;i+) /*查找要修改的数据*/if(strcmp(s.ID,tii.ID)=0)k=i; /*找到要修改的记录*/printf_one(k);break; /*调用显示一个记录的函数*/if(k=-1) printf(nnNO exist!);else tii.num-; printf(n退票成功!n);getchar(); /*按任意健*/getchar();