车票管理系统c语言程序设计报告(课程设计格式要求)_第1页
车票管理系统c语言程序设计报告(课程设计格式要求)_第2页
车票管理系统c语言程序设计报告(课程设计格式要求)_第3页
车票管理系统c语言程序设计报告(课程设计格式要求)_第4页
车票管理系统c语言程序设计报告(课程设计格式要求)_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、车票管理系统设计报告此页格式不要改,填上班级、姓名、学号即可c程序课程设计报告题目车票管理系统院别数学与计算机学院班级姓名学号指导教师邓永江 二一五年 六 月 8c语言课程设计报告目 录四号字,加粗1、设计目的和要求- 2 -2、总体设计- 2 -3、详细设计- 3 -4、程序测试分析- 5 -4.1 菜单界面- 5 -4.3查询所有班次界面- 6 -4.4 查询班次界面- 6 -4.5 增加班次界面- 7 -4.6 售票界面- 8 -4.7 退票界面- 9 -4.8 修改班次界面- 9 -4.9 删除班次界面- 10 -4.10 退出界面- 10 -5、 总结- 11 -附录- 12 -目录

2、及页码自动生成1、设计目的和要求一级标题,四号字,加粗,宋体任务:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。(3)查询路线(起点、终点):可按班次号查询 ,可按终点站查询(4)增加及修改班次和删除班次信息(5)售票和退票功能 当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数正文小四,宋体要求:1. 在处理每个题目时,要求从分析题目的需求入手,设计算法、编

3、制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。 2. 设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。3. 程序设计语言推荐使用c,程序书写规范,源程序需加必要的注释;4. 每组同学需提交可独立运行的程序;5. 每组同学需独立提交设计报告书(每组一份),要求编排格式统一、规范、内容充实,不少于8页(代码不算);6. 课程设计实践作为培养学生动手能力的一种手段,单独考核。目的:(1)进一步掌握和利用c语言进行程设计的能力; (2)进一步理解和

4、运用结构化程序设计的思想和方法;(3)初步掌握开发一个小型实用系统的基本方法;(4)学会调试一个较长程序的基本方法;(5)学会利用流程图表示算法;(6)掌握书写程序设计开发文档的能力。2、总体设计车票管理系统的功能:1. 录入班次2. 显示所有班次3. 查询班次4. 增加班每页有页眉和页脚页脚内是页码次 5. 售票 6. 退票 7. 修改班次 8. 删除班次 9. 退出车票管理系统录入班次所有班次显示查询班次增加班次售 票退 票修改班次删除班次退出显示主菜单,选择相应菜单项返回主菜单图2-1 总体设计流程3、详细设计车票管理系统软件的功能模块:(1)提供菜单界面,方便用户对程序个功能进行选择,

5、选择要实现的功能按enter键进入该功能。(2)接受用户输入的功能项,按enter键结束输入并将进入该系统,其需要的结果显示出来,方便用户查看。(3)完成每次功能,可保存用户的修改的信息,及时更新文件信息。下次查询时内容为最新信息。实时的信息更新对比等。一个名ticket的结构体进行定义:typedef struct ticket char num10; /车次编号char hour3; /时间,小时char min3; /分钟char from10; /起始站char to10; /终点站float hours; /车程实际时间int max; /最大车载容量int now; /已售票数cl

6、ass;包括num10 hour3; min3 from10; to10; hours max; now;等结构体成员。然后对调用函数进行定义。void newmessage() 新纪录录入函数void showtable1() void showtable2(int i) 线框调用1和2不用每次输void display() 显示所有函数void add() 增加记录void save() 保存函数void load() 读入信息函数void search() 查询函数void change() 修改函数void quit() 退出函数void ticketorder() 售票函数void

7、ticketdelete() 删除函数int menu_select() 菜单函数int whether(int) 判断时间是否超出函数void find(char s1,char s2) 查询函数/s1为班次/s2为终点站void deletemessage() 删除函数int findnum(char s1) 班次查询函数void get(int,int) 修改及增加班次char *menu 菜单数组。该系统将这些信息均放在文件d:车票管理系统中。最后定义main()函数,利用函数调用,实现程序的各种功能。将其放在系统文件d:车票管理系统0中。程序分为多个小模块,通过调用实现各种功能,增强

8、了程序的可建设性。程序把每种功能分开实现,更简单,实用程序更易理解。4、程序测试分析4.1 菜单界面运行界面截图图4-1 菜单界面图要编号如图4-1所示,该程序为用户提供菜单界面,用户可以对程序的各种功能进行选择,方便用户使用。选择1-9并按enter键进行操作。如选择出错,系统将提出警告,并提醒用户重新进行选择。4.2录入班次界面 图4-2 第一次输入时的界面图4-3 第二次输入时的界面 如图4-2、4-3所示,该功能实现录入班次信息。选择1按enter键进入该功能,程序提醒用户输入车次.发车时间.起始站.终点站.行车时间.额定载量.已售票数,输入完毕后按enter键将完成录入班次结果,同时

9、程序将再次提醒用户进行新的选择。而第二次输入时提醒已经输过,不能再加。4.3查询所有班次界面图4-4 字符串重新统计界面如图4-4所示,该功能实现显示所有班次。选择2按enter键进入该功能,程序提直接显示出信息,按enter键,程序进入菜单项,程序将再次提醒用户进行新的选择。4.4 查询班次界面二级标题小四,黑体图 4-5 查询班次界面 图4-6 选择查询方式的界面如4-5、4-6所示,该功能将实现程序运行班次的查询。选择3并按enter键将实现该功能。分班次和终点站两种方式查询。4.5 增加班次界面图4-7增加功能界面 图4-8增加前界面图4-9增加后界面如图4-7、4-8、4-9所示,该

10、功能将增加班次信息,帮助用户更新班次信息。选择4并按enter键将实现该功能,再按提示输入就行。按任意键返回主菜单。4.6 售票界面图4-10 选择售票功能界面图4-11 选择后的界面 图4-12 订票时的界面如图4-10、4-11、4-12所示,该功能将帮助人们选择买票。选择5按enter键实现该功能,按任意键关闭程序。买票程序可提示买票成功否,且自动判断是否可卖。4.7 退票界面 图4-13 退票时的界面如图4-13所示,该功能将帮助人们选择退票。选择6按enter键实现该功能,按任意键关闭程序。退票程序可提示退票成功否,且自动判断是否可退。 4.8 修改班次界面 图4-14 修改班次时的

11、界面如图4-14所示,该功能将帮助人们修改班次信息。选择7按enter键实现该功能,按任意键关闭程序。按提示操作修改班次。4.9 删除班次界面 图4-15删除班次时的界面如图4-15所示,该功能可删除班次信息。选择8按enter键实现该功能,按任意键关闭程序。按提示操作删除班次。 4.10 退出界面 图4-16 退出时的界面如图4-16所示,该功能可退出系统。选择9按enter键实现该功能。5、 总结经过一周的课程设计,我们学到了很多东西:巩固和加深了对结构体,指针的理解,提高综合运用所学知识的能力。培养了我们选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能

12、力。通过实践解决实际问题,学会很多实用的函数。通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。能够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。对c语言和课程设计的认识:课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才

13、能够使得这次课程设计顺利的进行下去,另外,在程序调试过程中,也得到很多同学的帮助,给我及时指出错误,提出许多宝贵意见。在此对老师和同学们表示感谢!经历这一周的锻炼,我也比较满意自己的表现。在这过程中我查阅了很多书,学到了很多课堂上没有的东西。很多知识我之前不知道的现在大部分都知道了,不过理解不够深透,导致在这一周里碰了不少壁!我觉得编程既是一项费时费力但也是有趣的。说它费时费力是因为它繁琐,而有趣是因为我很享受一段段的小程序编成功之后的喜悦,苦尽干来啊。我觉得编程是一件快乐的差事,我想我今后会加把时间学习它,把它学好。通过这次课程设计,使我们更加熟悉的掌握了c语言的运用。帮助我们熟悉了更多c语

14、言的功能,提高了我们的动手能力,学到了许多解决实际问题的宝贵经验同时也挖掘出了我们潜在的能力,使我们对自己更有自信,对编程也更有兴趣。我相信,只要努力、勤奋、坚持不懈,就没有什么做不到的事,不能还没开始就退缩,要勇于拼搏,敢于创新。附录四号字,加粗/源程序完整清单此为你运行的完整程序代码复制过来后适当排版。#include /宏定义函数#include /串操作及内存操作函数#include /调用系统函数#include /时间库函数 #include /输入输出函数#define n 1000 /宏定义多条记录typedef struct ticket /定义新结构体ticketchar

15、num10; /车次编号char hour3; /时间,小时char min3; /分钟char from10; /起始站char to10; /终点站float hours; /车程实际时间int max; /最大车载容量int now; /已售票数class;int class_num=0; /初始班次总数为0 class recordsn; / 多条记录int system_time(); /系统时间void newmessage(); /新纪录*录入函数*void showtable1(); /线框调用1,不用每次输 void showtable2(int i); /线框调用2,不用每

16、次输 void display(); /显示所有函数void add(); /增加记录void save(); / 保存函数void load(); / 按班次查询函数void search(); /查询函数void change(); /修改函数* void quit(); / /退出函数*void ticketorder(); / /*售票函数* void ticketdelete(); /删除函数*int menu_select(); /菜单函数*int whether(int); /判断时间是否超出函数*void find(char s1,char s2); /查询函数/s1为班次/s

17、2为终点站void deletemessage(); /删除函数int findnum(char s1); /班次查询函数void get(int,int); /修改及增加班次*char *menu=*欢迎使用车票管理系统*,n*menu功能菜单*,n 1. 录入班次 ,n 2. 显示所有班次 ,n 3. 查询班次 ,n 4. 增加班次 ,n 5. 售票 ,n 6. 退票 ,n 7. 修改班次 ,n 8. 删除班次 ,n 9. 退出 ; /*主函数*/void main()system(cls); /刷屏while(1) /菜单函数循环switch(menu_select() /菜单函数*ca

18、se 1: newmessage();break; /新纪录*录入函数*case 2: display();break; / /显示case 3: search();break; /查找函数*case 4: add();break; / /增加记录case 5: ticketorder();break; /*售票函数*case 6: ticketdelete();break; /删除函数*case 7: change();break; /修改函数*case 8: deletemessage();break; /选择调用删除函数case 9: quit();break; /退出函数*/*菜单函数

19、*/int menu_select() /菜单函数*char s5; /定义要输入的数字功能int c,i; system(cls); /清屏 system(color 07);/改变颜色 颜色属性由两个十六进制数字指定 /第一个为背景,第二个则为前景。每个数字可以为以下任何值之一: /0 = 黑色 8 = 灰色 1 = 蓝色 9 = 淡蓝色 2 = 绿色 a = 淡绿色 3 = 湖蓝色 b = 淡浅绿色 4 = 红色 c = 淡红色 5 = 紫色/d = 淡紫色 6 = 黄色 e = 淡黄色 7 = 白色 f = 亮白色for(i=0;i11;i+)printf(%s,menui); /输出

20、菜单各项) i=0; while(c9) /判断是否是1到9的命令printf(n); /输出换行 printf(*); printf(n请选择(1-9):);scanf(%s,s);c=atoi(s); /atoi将字符串转换成一个整数值 /输出菜单面return c; /返回请求 /*录入函数*/void newmessage() /*录入函数* int i=0,j=5,h; /char s5;file *fp; /定义文件型指针变量system(cls); /刷屏if(fp=fopen(d:车票管理系统0.dat,rb)!=null) /fopen打开文件 printf(车票信息已经存在

21、请选择增加功能!n);printf(任意输入则返回菜单n);scanf(%s,s);i=1; /通过是1if(i=0) system(cls); /刷屏printf(请输入要录入班次总数:n);scanf(%d,&class_num); /指向班次指针system(cls); /刷屏for(i=0;iclass_num;i+) system(cls); /刷屏printf(请输入第%d个班次信息:n,i+1);h=-1;for(;h!=i;) /循环输出printf(请输入班次:);scanf(%s,recordsi.num);for(h=0;hi;h+)if(strcmp(recordsh.

22、num,recordsi.num)=0) /判断字符串比较是否相等, 待比较的字符串 printf(输入错误!该班次已存在!n);break; /返回get(i,j); /修改及增加班次*j=5;save(); /调用保存函数/*显示所有函数*/void display() /显示所有函数int i,j;system(cls); /刷屏load(); / 调用按班次查询函数showtable1(); /线框调用1,不用每次输 for(i=0,j=0;iclass_num;i+,j+=2) /按班次顺序输出 printf(n|-|-|-|-|-|-|-|n);if(whether(i) /判断时

23、间是否超出函数*printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.hour,recordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);else printf(|%10s| 已发车 |%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);showtab

24、le2(j); /线框调用2printf(n按任意键继续.n);getch(); /从控制台读取一个字符,但不显示在屏幕上/*打印表头*/void showtable1() /线框调用1,不用每次输int i=2;system(cls); /刷屏printf(*message车程信息*n);printf(n|-|-|-|-|-|-|-|n); printf(n| 班次 | 发车时间 | 起点站 | 终点站 |行车时间|额定载量| 已售票 |n);/*打印表尾*/void showtable2(int i) /线框调用2。不用每次输。printf(n|-|-|-|-|-|-|-|n);/*查找函

25、数11*/void search() /查询调用int i;char s110=0,s210=0;system(cls); /刷屏printf(1. 按班次查询n);printf(2. 按终点站查询n);printf(3. 退出n);printf(请选择(1-3):n);scanf(%d,&i);load(); / 调用按班次查询函数switch(i) /多分枝选择语句 case 1: printf(请输入要查询的班次:); /s1为班次scanf(%s,s1);find(s1,s2); /调用查找函数222 2 break;case 2:printf(请输入要查询终点站:); /s2为终点站

26、scanf(%s,s2);find(s1,s2); /调用查找函数222 2 break; case 3: break;default : printf(输入错误!n);break;printf(按任意键继续.n);getch(); /从控制台读取一个字符,但不显示在屏幕上/*查询函数22*/void find(char s1,char s2)int i,h=0,m;showtable1(); /调用线框1if(s20=0)m=1; /1为无条件执行else m=0;for(i=0;iclass_num;i+)if(strcmp(s1,recordsi.num)=0|strcmp(s2,rec

27、ordsi.to)=0) /判断字符串比较是否相等, 待比较的字符串 printf(n|-|-|-|-|-|-|-|n);printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.hour,recordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);h+=2;if(m=1)break;showtable2(h); /调用线框2if(h=0)printf(要查找的班次不存在!n);/*增加函数*/void add()

28、 / /增加记录int i,j=5;load(); / 调用按班次查询函数system(cls); /刷屏printf(1. 增加班次);printf(2. 返回n);printf(请选择(1-2)n);scanf(%d,&i);if(i=1)system(cls); /刷屏printf(1. 请输入要增加的班次:);scanf(%s,recordsclass_num.num);for(i=0;iclass_num;i+)if(strcmp(recordsclass_num.num,recordsi.num)=0)/判断字符串比较是否相等, 待比较的字符串 判断车次没重复 printf(输入错

29、误!n);getch(); /从控制台读取一个字符,但不显示在屏幕上break;if(i=class_num) get(i,j); /修改及增加班次*class_num+; /使班次数加1save(); /调用保存函数/*售票函数*/void ticketorder() /*售票函数*int i;char num10;system(cls); /刷屏printf(1. 售票n);printf(2. 返回n);printf(请选择(1-2):n);scanf(%d,&i);if(i=1)load(); / 调用按班次查询函数search(); /查找函数*printf(请输入要订票的班次(若无请

30、输入0):);scanf(%s,num);for(i=0;irecordsi.now&whether(i)=1) /判断时间是否超出函数*并且*没超出最大客量recordsi.now+; /使已售的暑假1printf(通向%s班次为%s的票订票成功!n,recordsi.to,recordsi.num);save(); /调用保存函数getch(); /从控制台读取一个字符,但不显示在屏幕上break;elseprintf(该班次已满或已发出!n);getch(); /从控制台读取一个字符,但不显示在屏幕上/*退票删除函数*/void ticketdelete() /删除函数*int i;ch

31、ar num10;system(cls); /刷屏printf(1. 退票n);printf(2. 返回n);printf(请选择(1-2)n:);scanf(%d,&i);if(i=1)system(cls); /刷屏load(); / 调用按班次查询函数printf(请输入要退票的班次:n);scanf(%s,num);i=findnum(num); /调用班次查询函数if(strcmp(num,recordsi.num)=0) /判断字符串比较是否相等 待比较的字符串 if(whether(i) /判断时间是否超出函数*printf(确定(y/n)?);scanf(%s,num);if(

32、num0=y|num0=y) recordsi.now-; /使已售票加1printf(退票成功!n);save(); /调用保存函数getch(); /从控制台读取一个字符,但不显示在屏幕上elseprintf(该班车已发出,无法退票!n);getch(); /从控制台读取一个字符,但不显示在屏幕上if(i=class_num)printf(输入错误!n);getch(); /从控制台读取一个字符,但不显示在屏幕上/*修改函数*/void change() /修改函数*char num10,s10;int h=0,j=13,i;load(); / 调用按班次查询函数system(cls);

33、/刷屏printf(请输入要修改的班次:n);scanf(%s,num);i=findnum(num); /调用班次查询函数 if(i=class_num)printf(输入错误,无此班次!n);getch(); /从控制台读取一个字符,但不显示在屏幕上elseprintf(确定修改(y/n)?n);scanf(%s,s);if(s0=y|s0=y)get(i,j); /修改及增加班次*save(); /调用保存函数/*删除函数*/void deletemessage() /删除班次信息int i,h=0;char num10;system(cls); /刷屏printf(1. 删除班次n);

34、printf(2. 返回n);printf(请选择(1-2):n);scanf(%d,&i);if(i=1)system(cls); /刷屏printf(请输入要删除的班次:n);scanf(%s,num);i=findnum(num); /调用班次查询函数if(i=class_num)printf(输入错误,无此班次!n);getch(); /从控制台读取一个字符,但不显示在屏幕上elseprintf(确定?(y/n)n);scanf(%s,num);if(num0=y|num0=y)for(;iclass_num-1;i+) recordsi=recordsi+1;class_num-;

35、/班次总数减1save(); /调用保存函数printf(删除成功!n);getch();/*按班次查询函数*/int findnum(char s1) /查找班次 int i,h=0;showtable1(); /线框调用1,不用没次输 for(i=0;iclass_num;i+)if(strcmp(s1,recordsi.num)=0) /判断字符串比较是否相等,如果符合则输出车次等信息 printf(|-|-|-|-|-|-|-|n);printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.hour,rec

36、ordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);h+=2; /加2使输出的框架合适break;showtable2(h); /调用框架2return i;/*保存函数*/void save() /保存函数file *fp1,*fp2; /文件行指针if(fp1=fopen(d:车票管理系统.dat,wb)=null) /打开文件、为输出打开一个二进制文件printf(文件打开错误!n);exit(0);if(fp2=fopen(d:车票管理系统0.dat,wb)=null) /打开文件、为输出打开一个二进制文件printf(文件打开错误!n);exit(0);fwrite(&class_num,sizeof(i

温馨提示

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

评论

0/150

提交评论