车票管理系统c语言范文.doc

上传人:scccc 文档编号:12630497 上传时间:2021-12-05 格式:DOC 页数:30 大小:695.50KB
返回 下载 相关 举报
车票管理系统c语言范文.doc_第1页
第1页 / 共30页
车票管理系统c语言范文.doc_第2页
第2页 / 共30页
车票管理系统c语言范文.doc_第3页
第3页 / 共30页
车票管理系统c语言范文.doc_第4页
第4页 / 共30页
车票管理系统c语言范文.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《车票管理系统c语言范文.doc》由会员分享,可在线阅读,更多相关《车票管理系统c语言范文.doc(30页珍藏版)》请在三一文库上搜索。

1、山东交通学院课程设计报告随着计算机技术的发展,可视编程技术占有了越来越重要的作用。 Visual C+6.0 是 一种功能强大行之有效的可视化编程工具。因此此软件是在 Visual C+6.0 环境下编写 的。对于我们,随着学习的深入,已经大体掌握了 Visual C+6.0 环境下的程序开发。 为了将我们的编程能力提升到一个更高的水平, 深化面向对象的编程思维和解决问题的 能力,值此课程设计周期间,进行基于 Visual C+6.0 环境的软件开发,先以字符统计 软件作为开始,对 Visual C+6.0 环境和面向对象程序设计进行回忆和熟悉,使得在此 基础上的下一个员工培训系统软件的开发进

2、行的更加顺利。本文档详细叙述了基于 Visual C+6.0 环境下的车票管理系统的设计过程以及程序 源代码。本文档从概要设计,详细设计,参考源程序代码以及显示程序运行的截屏等方面详 尽的介绍了软件开发过程。此次车票管理系统的开发目的是使我们用面向对象的方式来思考和解决问题的能 力,并且可以掌握字符数组的使用、字符指针的使用、数据库的设计和文件使用以及 C本文档的安排如下:第一章主要介绍了对面向对象C语言以及Visual C+6.0编程环境。第二章主要的介绍说明了车票管理系统的编程思想和详细设计。第三章主要对车票管理系统进行调试, 运行程序并截图, 显示运行界面和结果第四章主要介绍了软件开发过

3、程中遇到的一些问题,对该软件进行的一个总结。程序在设计的过程中遇到的问题已及时更正,但由于编者的能力和水平有限,车票 管理系统和文档中不免会出现一些不期待的错误,望文档读者能够理解和体谅,并欢迎 提醒和纠正,在此表示感谢以及敬意。1课程设计概述1.车票管理系统功能概述(1)录入班次信息(信息用文件保存),可不定时地增加班次数据(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发 车时间,则显示“此班已发出”的提示信息)。(3)查询路线(起点、终点):可按班次号查询,可按终点站查询(4)增加及修改班次和删除班次信息(5)售票和退票功能当查询出已定票人数小于额定载量且当前

4、系统时间小于发车时间时才能售票,自动 更新已售票人数退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数1.2 Visual C+6.0 概述Visual C+是微软公司的重要产品之一,是一种功能强大行之有效的可视化编程工具。它提供了 MF类库,使用户可以方便的开发自己想实现的功能。Visual C+6.0的主要特点:(1)自动化和宏功能。(2)可以灵活地定制工具栏和菜单。(3)可以直接运行和调试程序,还可以使用宏语言来自动操作调试器。(4)支持In ternet连接。(5)一个新的便捷的项目系统可以允许一个工作区内包含多个不同的项目类型。(6)在工作区内可以包含多个并列的工程

5、文件。(7)可以在对话框中使用 WizardBar将程序同可视化元素联系起来。(8)Find in File 命令支持两个独立的输出窗格,可以保存上一次搜索的结果。 这些新特性可以更好地利用Visual C+开发工具进行Windows应用程序开发。2车票管理系统总体设计2.1车票管理系统总体设计思想车票管理系统的功能为1.录入班次2.显示所有班次3.查询班次4.增加班次5.售票6.退票7修改班次8.删除班次9.退出9.车票管理系统软件的功能模块有:(1) 提供菜单界面,方便用户对程序个功能进行选择,选择要实现的功能按enter 键进入该功能。(2)接受用户输入的功能项,按enter键结束输入并

6、将进入该系统,其需要的结果 显示出来,方便用户查看。(3) 完成每次功能,可保存用户的修改的信息,及时更新文件信息。下次查询时 内容为最新信息。实时的信息更新对比等。一个名 TICKET勺结构体进行定义,包括 num10 hour3; min3 from10;to10;hours max; now; 等结构体成员。然后对调用函数进行定义。 int system_time() 系统时间,void NewMessage() 新纪录录入函数,void ShowTable1() void ShowTable2(i nt i)线框调用1和2不用没次输,void Display()显示所有函数,void

7、add()增加记录,void save()保存函数,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为班次 s2 为终点站,void deletemessage() 删除函数,int findnum(char

8、 s1) 班次 查询函数,void get(int,int)修改及增加班次,char *menu菜单函数。该系统将这些信息均放在文件d:车票管理系统0中。最后定义main()函数,利用函数调用,实现程序的各种功能。将其放在系统文件d:车票管理系统0中。程序分为多个小模块,通过调用实现各种功能,增强了程序的可建设性。程序把每种功能分开实现,更简单,实用程序更易理解。17图2- 1-2 总体设计流程3车票管理系统软件详细设计一个名 TICKET勺结构体进行定义,包括 num10 hour3; min3 from10;to10;hours max; now; 等结构体成员。然后对调用函数进行定义。

9、int system_time() 系统时间,void NewMessage() 新纪录录入函数,void ShowTable1() void ShowTable2(i nt i)线框调用1和2不用没次输,void Display()显示所有函数,void add()增加记录,void save()保存函数,void save()保存函数,void load() 按班次查询函数,void search()查询函数,void change()修改函数,void quit() 退出函数,void Ticketorder()售票函数,void Ticketdelete()删除函数,int menu_

10、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:车票管理系统0中。最后定义main()函数,利用函数调用,实现程序的各种功能。将其放在系统文件d:车票管理系统0中。4程序测试、4.0菜单界面图3 0 1 采单界面如上图所示,该程序为用户提供菜单界面,用户可以

11、对程序的各种功能进行选择, 方便用户使用。选择1-9并按enter键进行操作。如选择出错,系统将提出警告,并提醒 用户重新进行选择。4.1录入班次界面图3- 1- 1第一次输入时的界面图3- 1- 2第二次输入时的界面如上图所示,该功能实现录入班次信息。选择1按enter键进入该功能,程序提醒用 户输入车次发车时间起始站.终点站.行车时间额定载量已售票数,输入完毕后按 enter键将完成录入班次结果,同时程序将再次提醒用户进行新的选择。而第二次输入 时提醒已经输过,不能在加。4.2查询所有班次界面图3-2 字符串重新统计界面如上图所示,该功能实现显示所有班次。选择 2按enter键进入该功能,

12、程序提直接 显示出信息,按enter键,程序进入菜单项,程序将再次提醒用户进行新的选择。4.3查询班次界面图3 3-1 查询班次界面图3 3- 2选择查询方式的界面如上图所示,该功能将实现程序运行班次的查询。选择3并按enter键将实现该功能。分班次和终点站两种方式查询。4.4 增加班次界面图3 4 1增加功能界面图3-4-2增加前界面图3-4-3增加后界面如上图所示,该功能将增加班次信息,帮助用户更新班次信息。选择4并按enter键将实现该功能,再按提示输入就行。按任意键返回主菜单。4.5 售票界面图3-5- 1选择售票功能界面图3 5 2选择后的界面图3-5-3订票时的界面如上图所示,该功

13、能将帮助人们选择买票。选择 5按enter键实现该功能,按任意键 关闭程序。买票程序可提示买票成功否,且自动判断是否可卖。4.6退票界面图3-6退票时的界面如上图所示,该功能将帮助人们选择退票。选择6按enter键实现该功能,按任意键关闭程序。退票程序可提示退票成功否,且自动判断是否可退。4.7修改班次界面田1 'C: Documents and. Set tingsAdbn ini str at or面 t 李盔河 '新建文件夹 chepi aoDebugchepiao. exe"图3 7修改班次时的界面如上图所示,该功能将帮助人们修改班次信息。选择7按enter键

14、实现该功能,按任意键关闭程序。按提示操作修改班次。4.8删除班次界面图38删除班次时的界面如上图所示,该功能可删除班次信息。选择8按enter键实现该功能,按任意键关闭程序。按提示操作删除班次。4. 9退出界面图3 9退出时的界面如上图所示,该功能可退出系统。选择 9按enter键实现该功能课程设计总结为了提高我们的实践能力和合作能力,让我们学以致用,能灵活运用所学的知识进 行再创造,学校特安排我们进行为期一周的 C语言课程设计实习,并安排了专门的指导 老师帮助辅导,让我们在规范化、严谨化、实用化上面有了很大进展。为今后的工作适 应环境。在此次车票管理系统开发过程中,有很多东西值得我们思考并总

15、结。开发过程大体可分为以下几个步骤:(1) 思考总体设计方案:总体结构和模块外部设计,功能分配。思考要实现整个 程序大体需要的几个模块和其中用到的 C语言基本操作符、语句格式等。(2) 画出总体设计方案流程图:用流程图的形式展现你的基本编程思想。(3) 流程图具体化:即将流程图中的几大模块的具体实现思考清楚,可以用流程 图的形式展现并想好实现的关键代码框架。(4 )编辑程序代码:这是一个至关重要复杂而且需要反复修改的环节,在此环节 中你将发现总体设计和模块思想会存在很多问题,需不断改进如何实现各函数功能, 达到预期效果也将是一项繁复的工作。(5) 代码的调试:在Visual C+6.0环境下输

16、入代码并进行调试和正确运行。在调 试过程中会遇到很多需要精化的地方,需要十足的耐心与细心,不断改进完善程序。(6) 最后修饰:程序可以正确运行之后,再不影响程序功能的情况下,运用各种 辅助性符号,使界面更加美观漂亮,操作更人性化增强程序的新意与可行性。通过这次课程设计,使我们更加熟悉的掌握了 C语言的运用。帮助我们熟悉了更多C 语言的功能,提高了我们的动手能力,学到了许多解决实际问题的宝贵经验同时也挖 掘出了我们潜在的能力,使我们对自己更有自信,对编程也更有兴趣。我相信,只要努 力、勤奋、坚持不懈,就没有什么做不到的事,不能还没开始就退缩,要勇于拼搏,敢 于创新。致谢最后,在这里郑重的感谢张老

17、师的帮助,让我得到了许多的收获。同时感谢学校提 供给我们这次宝贵的实践机会,让我们可以动手动脑,大大提高了个人的能力和素质。 非常的感谢!参考文献一:谭浩强C程序设计(第三版)北京清华大学出版社 2005.72009二:耿国华高级程序设计技术(C语言版)西安电子科技大学出版社三:谭浩强 C程序设计教程北京 高等教育出版社 1992四:C编写组编 常用C语言用法快速查询手册北京龙门书局1995附录源程序#i nclude<stdio.h> #i nclude<stri ng.h> #in clude<stdlib.h> #in clude<time.h&

18、gt; #in clude<c oni o.h> #defi ne N 1000 typedef struct TICKET char num10; char hour3; char min 3; char from10; char to10; float hours; int max; int now;CLASS; int class_ num=0; CLASS recordsN; int system_time(); II void NewMessage(); void ShowTable1(); void ShowTable2(int i); void Display();

19、void add(); void save(); void load(); void search(); void cha nge(); void quit();IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII宏定义函数串操作及内存操作函数 调用系统函数 时间库函数 输入输出函数 宏定义多条记录定义新结构体TICKET车次编号 时间,小时 分钟起始站终点站车程实际时间最大车载容量已售票数/IIIII系统时间II初始班次总数为0多条记录新纪录*录入函数*线框调用1,不用没次输 线框调用2,不用没次输 显示所有函数增加记录保存函数按班次查询函数查询函数修改函数*IIIIII

20、IIIIIIIIIIIIIIIIIIII IIvoid Ticketorder(); void Ticketdelete(); int menu _select(); int whether(i nt);II II*IIIIIIIIvoid fin d(char s1,char s2); void deletemessage(); int findnu m(char s1); void get( in t,i nt);IIchar *me nu ="* "n* MENU "n F1.退出函数*售票函数*删除函数*菜单函数*判断时间是否超出函数*查询函数 IIs1为

21、班次IIs2为终点站 删除函数班次查询函数修改及增加班次*欢迎使用车票查询系统 *"功能 菜单 *"录入班次IIIIII、",system("cls"); /while/switch(me nu _select()刷屏菜单函数循环/菜单函数case 1: NewMessage();break; Illicase 2: Display();break;II IIcase 3: search();break;IIcase 4: add();break;II IIcase 5: Ticketorder();break; IIII*case 6: Ti

22、cketdelete();break; II新纪录*录入函数*显示查找函数*增加记录售票函数*删除函数*case 7: cha nge();break;IIcase 8: deletemessage();break; IIIIII case 9: quit();break; IIIIII修改函数*选择调用删除函数退出函数*菜单函数int me nu_select() IIIIIIIII _char s5; IIIint c,i;system("cls"); II菜单函数*定义要输入的数字功能刷屏system("color 09");/ 改变颜色for(i

23、=0;i<11;i+)printf("%s",menui); II输出菜单各项)i=0;while(c<0|c>9)IIprin tf("n");III判断是否是1到9的命令输出换行"n 2.显示所有班次""n3.查询班次""n4.增加班次""n5.隹酋售票""n6.退票""n7.修改班次""n8.删除班次""n9.退出主函数 */void main()printf("*“pri

24、ntf("n请选择(1-9):");scan f("%s",s);c=atoi(s);/atoi/输出菜单面return c; /返回请求);将字符串转换成一个整数值void NewMessage()r/*录入函数*int i=0,j=5,h;/char s5;FILE *fp;/定义文件型指针变量system("cls");/刷屏if(fp=fope n("d:车票管理系统0.datTrb")!=NULL) /fopen*打开文件printf("车票信息已经存在请选择增加功能!n");prin

25、tf("任意输入则返回菜单n");scan f("%s",s);i=1;/ 通过是1if(i=0)system("cls"); / 刷屏printf("请输入要录入班次总数:n");scan f("%d",&class_num);/指向班次指针system("cls"); / 刷屏 for(i=0;i<class_ nu m;i+) _system("cls"); / 刷屏printf("请输入第c个班次信息:n",i+1

26、);h=-1;for(;h!=i;)/循环输出printf("请输入班次:n");sca nf("%s",recordsi. nu m); for(h=0;h<i;h+)if(strcmp(recordsh. nu m,recordsi. num)=0)/判断字符串比较是否相等,待比较的字符串printf("输入错误!该班次已存在!n");break; /返回山东交通学院课程设计报告j=5;save(); /修改及增加班次调用保存函数/显示所有函数/刷屏调用按班次查询函数/ 线框调用1,不用没次输void Display。int

27、 i,j; system("cls"); load(); /按班次顺序输出判断时间是否超出函数*ShowTable1();for(i=0,j=0;i<class_ nu m;i+,j+=2) /printf("n|11|n");if(whether(i)/prin tf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",recordsi. num,records i.hour,recordsi.m in,recordsi.from,recordsi.to,recordsi.hours,recor

28、dsi.max,recordsi. no w);elseprin tf("|%10s|已发|%10s|%10s|%8.1f|%8d|%8d|",recordsi. num,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.no w);ShowTable2(j);/线框调用 2printf("n按任意键继续.n");getch(); /从控制台读取一个字符,但不显示在屏幕上int i=2;19void ShowTable1() /线框调用1,不用没次输山东交通学院课程设计报告车 程

29、 信 息printf("n|111|n");prin tf("n|班次| 发车时间|已售票|n");起点站| 终点站|行车时间|额定载量打印表尾void ShowTable2(int i) printf("n|1-|n");/* void search() Illiint i;II线框调用2。不用没次输查找函数11查询调用*1system("cls");/刷屏printf(" I * MESSAGE*char s110='0',s210='0'system("cl

30、s");II刷屏printf("1.按班次查询n");printf("2.按终点站查询n");prin tf("3.退出 n");printf("请选择(1-3):n");scan f("%d",&i);load(); II调用按班次查询函数switch(i)II多分枝选择语句case 1: printf("请输入要查询的班次:n"); IIIIIIsl为班次scan f("%s",s1);find(s1,s2);IIIII调用查找函数

31、222 2break;case 2:printf(" 请输入要查询终点站:n"); IIIIIs2为终点站scan f("%s",s2);find(s1,s2);IIIII调用查找函数 222 2break;case 3: break;default : printf("输入错误!n");break;printf(”按任意键继续.n");getch(); III从控制台读取一个字符,但不显示在屏幕上22*/void fin d(char s1,char s2)int i,h=0,m;ShowTable1();Illi调用线框

32、 1if(s20='0')m=1; III1为无条件执行else m=0;for(i=0;i<class_ nu m;i+)if(strcmp(s1,recordsi. num)=0|strcmp(s2,recordsi.to)=0)Illi判断字符串比较是否相等,待比较的字符串prin tf("n|29|n");prin tf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",recordsi. num,recordsi.hour,recordsi.mi n,recordsi.from,recor

33、dsi.to,recordsi.hours,recordsi.max,recordsi.no w);h+=2;if(m=1)break;ShowTable2(h);IIII调用线框 2if(h=0)printf("要查找的班次不存在!n");增加函数void add() II II int i,j=5;load(); II system("cls");增加记录调用按班次查询函数II刷屏prin tf("1.增加班次 n");prin tf("2.返回 n");printf("请选择(1-2)n"

34、);scan f("%d",&i);if(i=1)system("cls");/刷屏printf("1.请输入要增加的班次:n");scan f("%s",recordsclass_ nu m. nu m);for(i=0;i<class_ nu m;i+)if(strcmp(recordsclass_ nu m. nu m,recordsi. num )=0)/判断字符串比较是否相等,待比较的字符串判断车次没重复printf("输入错误!n");从控制台读取一个字符,但不显示在屏

35、幕上getch(); / break;if(i=class_ num) _get(i,j); / class_ nu m+; save(); /修改及增加班次*/使班次数加1/*void Ticketorder()int i;char num10;system("cls");/*/售票 函数 */ 售票函数*刷屏调用保存函数prin tf("1.售票 n");prin tf("2.返回 n");printf("请选择(1-2):n");scan f("%d",&i);if(i=1)调用按

36、班次查询函数 查找函数*load(); /search(); /printf("请输入要订票的班次(若无请输入0):n"); sca nf("%s", nu m);for(i=0;i<class_ nu m;i+)判断字符串比较是否相等,待比if(strcmp( nu m,recordsi. num )=0)较的字符串if(recordsi.max>recordsi. now&&whether(i)=1)/判断时间是否超出函数*并且*没超出最大客量recordsi. now+;/使已售的暑假 1printf(" 通向

37、 %s 班次为 %s 的票订票成 功!n ",recordsi.to,recordsi. nu m);save(); /调用保存函数getch(); IIIII从控制台读取一个字符,但不显示在屏幕上break;else 该班次已满或已发出!n");IIIII从控制台读取一个字符,但不显示在屏幕上printf(" getch(); */void Ticketdelete() II删除函数 *int i;char num10;system("cls");II刷屏prin tf("1.退票 n");prin tf("2.

38、返回 n");printf("请选择(1-2)n:");scan f("%d",&i);if(i=1)system("cls");II刷屏load(); II调用按班次查询函数printf(" 请输入要退票的班次:n");sca nf("%s", nu m);i=findn um( num);/调用班次查询函数if(strcmp( num,recordsi. num)=0) II判断字符串比较是否相等 待比较的字符串if(whether(i) II判断时间是否超出函数*prin

39、 tf("确定(YIN)?");sca nf("%s", nu m);if(n um0='y'| nu m0='Y')recordsi. now-; II使已售票加 1printf("退票成功!n");save(); II调用保存函数getch(); II从控制台读取一个字符,但不显示在屏幕上elseprintf(" 该班车已发出,无法退票!n");getch(); /从控制台读取一个字符,但不显示在屏幕上if(i=class_ num) printf("输入错误!n&qu

40、ot;);getch(); /从控制台读取一个字符,但不显示在屏幕上修改函数void cha nge()/修改函数*char num10,s10;int h=0,j=13,i;load(); /调用按班次查询函数system("cls");/刷屏printf(”请输入要修改的班次:n");调用班次查询函数sca nf("%s", nu m); i=findnum(nu m);/if(i=class_ num) _printf("输入错误,无此班次!n");getch(); /从控制台读取一个字符,但不显示在屏幕上elsepr

41、intf("确定修改(Y/N)?n");scan f("%s",s);if(s0='y'|s0='Y')get(i,j); / save(); /*void deletemessage()int i,h=0;char num10;system("cls"); /修改及增加班次 调用保存函数删除函数/刷屏删除班次信息prin tf("1.删除班次 n");prin tf("2.返回 n");printf("请选择(1-2):n"); scan f

42、("%d",&i);if(i=1)system("cls"); /刷屏printf(" 请输入要删除的班次:n"); sca nf("%s", nu m);i=findn um( num);/调用班次查询函数if(i=class_ num) _printf(" 输入错误,无此班次!n");getch(); /从控制台读取一个字符,但不显示在屏幕上else prin tf("确定?(y/n)n"); sca nf("%s", nu m);if(n u

43、mO='y'| nu mO='Y')for(;i<class_ nu m-1;i+) recordsi=recordsi+1;class_num-; / 班次总数减 1 save(); / 调用保存函数 printf("删除成功!n");getch();按班次查询函数int findn um(char s1)/查找班次int i,h=0;ShowTable1();/线框调用1,不用没次输for(i=0;i<class_ nu m;i+)if(strcmp(s1,recordsi. num )=0)符合则输出车次等信息/判断字符串比较是否相等,如果|-printf("|n");prin tf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",recordsi. num,recordsi.hour.recordsi.mi n,recordsi.from,recordsi.to,recordsi.hours,recordsi .max,recordsi. no w);h+=2;break;ShowTable2(h);return i;I*/IIIIIIIIIIII加2使输出的框架合适调

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1