车票管理系统的设计报告(参考格式)_第1页
车票管理系统的设计报告(参考格式)_第2页
车票管理系统的设计报告(参考格式)_第3页
车票管理系统的设计报告(参考格式)_第4页
车票管理系统的设计报告(参考格式)_第5页
免费预览已结束,剩余34页可下载查看

下载本文档

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

文档简介

1、学号2014-2015学年 第一学期1108210133数据库原理课程设计报告题目:车票管理系统的设计专业:计算机科学与技术班级:11级(3)对口班姓名:指导教师:王峻成绩:计算机与信息工程系二0一四年十一月二十一日37 / 39文档可自由编辑目 录1 设计内容及要求21.1设计内容21.2设计任务及具体要求22 概要设计22.1系统的功能简介22.2系统功能模块图32.3各个模块之间的主要关系33 详细设计43.1班次43.2工作流程图44 测试数据及其结果分析74.1 测 试74.2 问题思考与调试:115 用户手册116 课程设计总结与感想12参考文献12源程序代码121 设计内容及要求

2、1.1设计内容车票管理系统设计主要根据课程设计要求进行设计,并了解了该系统主要功能,该系统功能主要包括八大模块:(1)添加模块:添加班次信息。(2)显示模块:显示所有班次信息。(3)查询模块:查询所需班次信息。(3)删除模块:删除相应的班次信息。(4)查询模块:查询所需班次信息。(5)修改模块:修改相应班次信息。(6)保存模块:将信息保存到文件。(7)售票模块:销售车票。(8)退票模块:根据相应信息退票。1.2设计任务及具体要求(1)建立班次信息,信息至少包含班次、发车时间、起点站、终点站、行车时间、额定载量、已售票等;(2)能够提供添加、删除和修改班次信息的功能;(3)能够提供安不同方式查询

3、的功能,如按班次或终点站查询;(4)将班次信息保存在文件中;(5) 能够按表格方式输出车票信息。2 概要设计2.1系统的功能简介本系统主要保存的信息有输入班次、发车时间、起点站、终点站、行车时间、额定载量、已售票这些数据。所包含的功能有班次新信息的添加、以保存信息的修改及删除、查询、显示所有信息、退出。2.2系统功能模块图功能菜单录入修改显示查询增加售票退票删除录入:可以添加班次信息记录,首先输入要录入几个班次,然后详细录入:依次输入班次、发车时间、起点站、终点站、行车时间、额定载量、已售票等(系统会提示正输入的是第几个班次)输入完后自动回到主界面。并自动保存到车票管理系统文件中。显示:可以以

4、表格形式输出所有车票管理系统里的记录。查询:可以选择(会出现三个选项,按班次查询,按终点站查询和退出)用班次、终点站两种方式查询。增加:根据需求添加相应的班次信息(会出现两个选项,增加班次和返回),每次只能增加一个班次信息,如果需要添加多个只能从主菜单开始选择,添加完成后会自动保存到车票管理系统文件中。售票:根据用户需求,销售相应的车票(会出现两个选项,售票和返回),选择售票则进行查询操作,提示选择要购买的车次,选择好后会提示订票成功,并在车票管理系统文件中增加已售票数。修改:输入欲修改的那个班次后,再依次输入班次、发车时间、起点站、终点站、行车时间、额定载量、已售票等即可完成修改。退票:根据

5、用户需求,进行退票操作(会出现两个选项,退票和返回),输入要退票的车次,系统提示是否确认退票,提示退票成功,并在车票管理系统文件中减少已售票数。删除:(会出现两个选项删除班次和返回),输入欲删除的班次,并提示是否删除,确认后,可以删除输入班次的所有班次信息。运行所需环境:win7及以下各版本windows,visual C+6.0。2.3各个模块之间的主要关系该系统的功能主要是实现班次信息的录入,并对班次的相应信息进行的操作。各个模块之间的关系是相互联系的。首先,主函数包含了所有的子函数。主函数是整个系统的核心。子函数之间也是有联系的,对班次信息的显示、修改、删除、查询、保存,必须是在班次信息

6、录入的情况下进行的。因此对班次的录入是非常重要的。在信息的修改、删除、查询、保存所有的子函数之间是没有多大联系的。3 详细设计3.1班次:typedef struct TICKET /定义新结构体TICKETchar num10; /车次编号char hour3; /时间,小时char min3; /分钟char from10; /起始站char to10; /终点站float hours; /车程实际时间int max; /最大车载容量int now; /已售票数CLASS;void main()system(cls); /刷屏while(1) /菜单函数循环switch(menu_sele

7、ct() /菜单函数*case 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;

8、 /退出函数*3.2工作流程图:开始i=0sign=nsign!=N Nsign=nsign!= N 输入信息return(n+i)结束(1)添加:添加班次信息记录 开始Int i;i=1in+1in+1 输出一个记录i+结束(2)显示:显示班次记录输入删除班次开始判断是否有此班次 输出“输入错误无此班次”删除该项记录结束NY(3)删除:删除班次记录开始输入查询的班次判断是否有此班次判断是否有此班次 输出“要查找的班次不在”显示该班次所有信息结束(4)查询:查询班次记录开始判断是否有此班次输出“输入错误无此班次”依次输入修改内容结束输入修改的班次 (5)修改:修改班次记录4 测试数据及其结果分

9、析4.1 测 试:(1)显示的主菜单界面:(2)添加界面: (3)显示界面: (4)删除界面: (5)查询界面: (6)修改界面:(7)售票界面:(8)退票界面:4.2 问题思考与调试:当我在进行删除、查询、修改、保存等功能时,以查询为例,输入班次名按回车后,虽然会显示该人的所有记录,但是显示后,它马上自动消失了,还没来得及等我看内容。因此,向别人请教后,在一些地方加入了system(pause);这个语言,用来对某项操作完成后进行暂停。5 用户手册(1)输入相应指令数字后,按enter键确认。(2)查找时可按班次,终点站查询。(3)删除时只能使用班次查找欲删除班次。6 课程设计总结与感想这个

10、课题是设计一个车票管理系统设计,该系统能够较好的管理好车站的车票记录,也拥有比较完善的功能,但是该系统依旧有很多不足,此程序必须按照系统提示的操作来执行,不然的话就会出现很多错,比如,在录入班次信息时,如果输入错误了就只能继续下去不能删除,只能在主界面选择修改选项才可以进行修改。这次的课程设计制作是对我进入大学以来学习程序设计语言结果的一次大检验。自己动手,自己发现和解决问题。当我选择车票管理系统这个题目时,一开始想用数据库来实现,可是发现数据库学习很浅,很多都不会,不知道怎么用数据库来支持,后来在同学建议下选择了用c语言来做,用文件来存储。目前就这样来实现这个课程设计。此次设计也让我明白了思

11、路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识。以后可以深入学习使得系统更加完善。参考文献:1.谭浩强.张基温.C语言习题集与上机指导M.第三版.北京:高等教育出版社.2006年2.谭浩强.C程序设计(第三版)M.北京:清华大学.2005年3.谭浩强.C程序设计(第二版)M.北京:清华大学.1999年4.耿国华.高级程序设计技术(C语言版).西安电子科技大学出版社.2009年5.C编写组编.常用C语言用法快速查询手册.北京:龙门书局.1995年源程序代码#include /宏定义函数#include /串操作及内存操作函数 #incl

12、ude /调用系统函数#include /时间库函数#include /输入输出函数#define N 1000 /宏定义多条记录typedef struct TICKET /定义新结构体TICKETchar num10; /车次编号char hour3; /时间,小时char min3; /分钟char from10; /起始站char to10; /终点站float hours; /车程实际时间int max; /最大车载容量int now; /已售票数CLASS;int class_num=0; /初始班次总数为0CLASS recordsN; / 多条记录int system_time

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

14、除函数*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=*欢迎使用车票查询系统*,n*MENU功能菜单*,n 1. 录入班次 ,n 2. 显示所有班次 ,n 3. 查询班次 ,n 4. 增加班次 ,n 5. 售票 ,n 6. 退票 ,n 7. 修改班次 ,

15、n 8. 删除班次 ,n 9. 退出 ;/*主函数*/void main()system(cls); /刷屏while(1) /菜单函数循环switch(menu_select() /菜单函数*case 1: NewMessage();break; /新纪录*录入函数*case 2: Display();break; / /显示case 3: search();break; /查找函数*case 4: add();break; / /增加记录case 5: Ticketorder();break; /*售票函数*case 6: Ticketdelete();break; /删除函数*case

16、7: change();break; /修改函数*case 8: deletemessage();break; /选择调用删除函数case 9: quit();break; /退出函数*/*菜单函数*/int menu_select() /菜单函数*char s5; /定义要输入的数字功能int c,i;system(cls); /刷屏system(color 06);/改变颜色for(i=0;i11;i+)printf(%s,menui); /输出菜单各项)i=0;while(c9) /判断是否是1到9的命令printf(n); /输出换行printf(*);printf(n请选择(1-9)

17、: );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:车票管理系统.txt,rb)!=NULL) /fopen打开文件printf(车票信息已经存在请选择增加功能!n);printf(任意输入则返回菜单n);scanf(%s,s);i=1; /通过是1if(i=0) system(cls); /刷屏prin

18、tf(请输入要录入班次总数: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.num,recordsi.num)=0) /判断字符串比较是否相等, 待比较的字符串printf(输入错误!该班次已存在!n);break; /返回get(i,j

19、); /修改及增加班次*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) /判断时间是否超出函数*printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.hour,re

20、cordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);elseprintf(|%10s| 已发车 |%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);ShowTable2(j); /线框调用2printf(n按任意键继续.n);getch(); /从控制台读取一个字符,但不显示在屏幕上/*打印表头*/void ShowTable1(

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

22、ntf(2. 按终点站查询n);printf(3. 退出n);printf(请选择(1-3):n);scanf(%d,&i);load(); / 调用按班次查询函数switch(i) /多分枝选择语句case 1: printf(请输入要查询的班次:n); /s1为班次scanf(%s,s1);find(s1,s2); /调用查找函数222 2break;case 2:printf(请输入要查询终点站:n); /s2为终点站scanf(%s,s2);find(s1,s2); /调用查找函数222 2break;case 3: break;default : printf(输入错误!n);bre

23、ak;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,recordsi.to)=0)/判断字符串比较是否相等, 待比较的字符串printf(n|-|-|-|-|-|-|-|n);printf(|%10s|%5s:%-4s|%10s|%1

24、0s|%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() / /增加记录int i,j=5;load(); / 调用按班次查询函数system(cls); /刷屏printf(1. 增加班次n);printf(2. 返回n);print

25、f(请选择(1-2)n);scanf(%d,&i);if(i=1)system(cls); /刷屏printf(1. 请输入要增加的班次:n);scanf(%s,recordsclass_num.num);for(i=0;iclass_num;i+)if(strcmp(recordsclass_num.num,recordsi.num)=0)/判断字符串比较是否相等, 待比较的字符串 判断车次没重复printf(输入错误!n);getch(); /从控制台读取一个字符,但不显示在屏幕上break;if(i=class_num)get(i,j); /修改及增加班次*class_num+; /使班

26、次数加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(请输入要订票的班次(若无请输入0):n);scanf(%s,num);for(i=0;irecordsi.now&whether(i)=1)/判断时间是否超出函数*并且*没超出最大客量recordsi.no

27、w+; /使已售的暑假1printf(通向%s班次为%s的票订票成功!n,recordsi.to,recordsi.num);save(); /调用保存函数getch(); /从控制台读取一个字符,但不显示在屏幕上break;elseprintf(该班次已满或已发出!n);getch(); /从控制台读取一个字符,但不显示在屏幕上/*退票删除函数*/void Ticketdelete() /删除函数*int i;char num10;system(cls); /刷屏printf(1. 退票n);printf(2. 返回n);printf(请选择(1-2)n:);scanf(%d,&i);if(

28、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(num0=y|num0=Y)recordsi.now-; /使已售票加1printf(退票成功!n);save(); /调用保存函数getch(); /从控制台读取一个字符,但不显示

29、在屏幕上elseprintf(该班车已发出,无法退票!n);getch(); /从控制台读取一个字符,但不显示在屏幕上if(i=class_num)printf(输入错误!n);getch(); /从控制台读取一个字符,但不显示在屏幕上/*修改函数*/void change() /修改函数*char num10,s10;int h=0,j=13,i;load(); / 调用按班次查询函数system(cls); /刷屏printf(请输入要修改的班次:n);scanf(%s,num);i=findnum(num); /调用班次查询函数if(i=class_num)printf(输入错误,无此班

30、次!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);printf(2. 返回n);printf(请选择(1-2):n);scanf(%d,&i);if(i=1)system(cls); /刷屏printf(请输入要删除的班次:n);sca

31、nf(%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-; /班次总数减1save(); /调用保存函数printf(删除成功!n);getch();/*按班次查询函数*/int findnum(char s1) /查找班次int i,h=0;Sh

32、owTable1(); /线框调用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,recordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);h+=2; /加2使输出的框架合适br

33、eak;ShowTable2(h); /调用框架2return i;/*保存函数*/void save() /保存函数FILE *fp1,*fp2; /文件行指针if(fp1=fopen(d:车票管理系统.dat,wb)=NULL) /打开文件、为输出打开一个二进制文件printf(文件打开错误!n);exit(0);if(fp2=fopen(d:车票管理系统.dat,wb)=NULL) /打开文件、为输出打开一个二进制文件printf(文件打开错误!n);exit(0);fwrite(&class_num,sizeof(int),1,fp2); /写入文件信息fwrite(records,sizeo

温馨提示

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

评论

0/150

提交评论