c语言课程设计报告车票管理系统实验报告.doc

上传人:仙人指路1688 文档编号:2384931 上传时间:2023-02-17 格式:DOC 页数:30 大小:374.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、 车票管理系统课程设计报告题目: 车票管理系统 专业: 信息与计算科学 班级: 1002 学号: 姓名: 指导教师: 完成日期: 2011年12月23日一、课程设计目的本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据及编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。通过这次设计,要在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。二、课程设

2、计内容一.系统的主要功能:1.浏览班次信息2.查询班次:按班次查询;按终点查询;3.售票 (1)售票成功(当车票有剩余,且车未发出时) (2)班次不存在(3)票已售完(当座位数小于等于已定票人数)(4)车已发出4.退票退票成功(输入的班次号存在且当前时间比发车时间早)退票失败(班次不存在或当前时间比发车时间晚)三、课程设计过程1需求分析(1) 输入的形式和输入值的范围;录入的班次信息的输入形式和输入值的范围:车次(类型:int) 发车时间小时(类型:int 0,24) 发车时间分钟(类型:int 0,60) 起始站及终点站(类型:void wap(int k))行车时间(类型:float ti

3、mes(int k))额定票数(类型:number(int k))已定票人数(类型:nownumber(int k,int i))(2) 输出的形式;printf(3) 程序所能达到的功能;录入详细的班次信息(发车时间,起点,终点站,行车时间,额定票数,订票人数,是否已发车);浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。查询功能(分班次查询和终点站查询两种);订票功能;(当查询出已定票人数小于额定载量且当前系统时间久小于发车时间才能售票,自动更新已售票人数)退票功能;(输入所退票的班次,当本班车未发出时才能退票,自动更新已售

4、票人数)临时增加班次功能;2概要设计进入班次一览进入班次查询进入终点站查询售票退票增加班次车票管理系统进入车票查询界面按b按班次查询按c终点站查询按提示操作继续查找,按1返回主菜单3详细设计车票查询依据提示操作进入售票界面售票成功班次不存在票已售完车已发出根据提示继续售票,返回主菜单按1售票4调试分析内容包括:a调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;1.我们将一个个功能分为一个个函数,在发车时间上我们遇到了一些阻碍!我本来想通过算法来输出发车时间,没想到一次次的实验不行!于是我们将发车时间的分为小时段和分钟段!使用case函数输出.int hour(int k)sw

5、itch(k)case 1:return 07;break;case 2:return 10;break;。(省略一部分)case 27:return 19;break;case 28:return 22;break; /*d到罗源一天的发车时间小时段*/ /*开车时间段*/int minute(int k)switch(k)case 1:return 00;break;case 2:return 00;break;。(省略一部分)case 27:return 30;break;case 28:return 30;break; /*d到罗源一天的发车时间分钟段*/ /*开车时间段*/2.是终点

6、站的输出,我们一开始是使用字符串的输出,这样以便于按终点站查找时能进行比较。但这种方法我们又没有实现!于是我们干脆用void,使用简便的方法,达到相同的目的.void wap(int k)switch(k)case 1: printf(闽清);break;case 2: printf(长乐);break;case 3: printf(连江);break;case 4: printf(永泰);break;case 5: printf(福清);break;case 6: printf(罗源);break; /*输入终点站的函数*/ 3.是时间的问题,这源于要比较发车时间与当前的时间,判断这班车到底

7、有没有发车,和能不能订票与退票,我们用了一个时间函数,输出了当前的时间,但那边有年月日,不好进行提取和比较,于是我们采用输出了时间,然后看着那个时间手动的提取。int shijian() struct tm *ptr; time_t lt; lt =time(NULL); ptr=gmtime(<); printf(ctime(<); return 0; /*输出当前时间的函数*/在主函数中:printf(请输入上述时间的时辰:); scanf(%d,&s);printf(请输入上述时间的分钟:);scanf(%d,&t);、然后再将s和t带入各个需要比较时间的函数中。4.我们碰到了文

8、件的问题,这是在保存已定票人数中,这需要更新已定票人数和判断能否售票,我们一开始就将这部分留到了最后,一开始我们只写了暂时售票人数为0,在文件的运用上我们感觉比较困难,训练的比较少,也比较少这方面的知识!在这里我们碰到了比较大的困难,我们一开始建立了一个txt的文本文档,准备使用这个来储存这些数据,但后来我们觉得使用一个文档比较复杂,容易出错,于是我们使用比较麻烦,但是简单的办法,我建立了与班次一样多的文档,一个文档保存一班车的数据,这样就不是那么复杂了。int nownumber(int k,int i)int n=0;char filename10;switch(i)case 1:strc

9、py(filename,qiu1.txt);break;case 2:strcpy(filename,qiu2.txt);break;。case 27:strcpy(filename,qiu27.txt);break;case 28:strcpy(filename,qiu28.txt);break; case 29:strcpy(filename,qiu29.txt);break;FILE *fp;if(fp=fopen(filename,rt+)=NULL)printf(cannot open file,strike any key exit!);exit(1);fscanf(fp,%d,&

10、n);n=n+k; rewind(fp);fprintf(fp,%d,n); /将输入数组里面的数据写到文本里fclose(fp);return n; /*现在已定票人数*/ 其他都是一些小问题了,我们可以自己一边调试一边就能自己一会儿解决!b算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;我们车票管理系统使用的语言并不复杂,使用的都是比较常见的,低级的语言,高级的语言和难懂的语言比较少!这是我们小组自己的成果,做出来了,我们挺有成就感的。我们也使用了很多的while循环。在主函数中while(log) /*循环*/ if(x=a)banci(s,t); /*

11、调用班次的函数,班次一览的函数*/ if(x=b) chaxun1(s,t); /*按班次查询的函数*/ if(x=c) chaxun2(s,t); /*按终点站查询的函数*/ if(x=d) maipiao(s,t); /*买票的函数*/ if(x=e) tuipiao(s,t); /*退票的函数*/if(x=f)zengban(); /*增加班次*/printf(n);printf(返回主界面:请输入1:n); printf(退出:0n); scanf(%d,&n); if(n=1) system(cls); jiemian(); scanf(%c,&x); else if(n=0) br

12、eak;这是在程序运行与退出之间循环在买票函数中:if(number(k)=nownumber(0,i)&log=1)printf(请输入你要定的票的数量m:n);scanf(%d,&m);nownumber(m,i);while(number(k)0) k+; n=n-tangci(k); if(i=10) printf(%d ,i); else printf(%d ,i); if(hour(i)=10) printf(%d ,hour(i); else printf(%d%d ,o,hour(i); if(minute(i)=10) printf(%d,minute(i); else pr

13、intf(%d%d,o,minute(i); printf( 闽侯 ); wap(i); printf( %f ,times(k); printf(%d ,number(k); printf(%d ,nownumber(0,i);if(shour(i) printf(未发出); log=1; else if(tminute(i)&s=hour(i) printf(未发出); log=1; else printf(已发出); log=0; printf(n);这是其中一个循环,实现已定人数小于额定数量!当其大于额定数量时继续循环,直至你所选的班次小于额定数量未知! 这些循环都很容易理解,都不是什

14、么难的问题,程序中还有很多循环我就不一一举例了! 我们改进的思想就是尽可能让它变得简单!还有很多的不足和瑕疵需要我们继续去奋斗,希望老师不吝赐教!c经验和体会等。这次实验让我们收获良多,这让我们得到了很多经验,又认识了很多的不足,在c语言这方面我们还需要很多的历练!我想通过这次的练习,我们都有所进展,我们现在需要的就是实践。完成了任务我们还是很有成就感的,也增添了我们对c语言的热情!在今后我们知道,凡事都要有自己的见解,我们可以借鉴别人,但别人是不可复制的,我们要明白只有理解才是自己的,只有通过自己实践我们才能深刻的认识到这一点!5用户使用说明该系统是出于对班车的各种信息进行管理和维护,并可以

15、简单的订票和退票功能,还可适当地增加班次。1. 系统说明:在程序中直接录入车次信息依次是:车次(类型:int) 发车时间小时(类型:int 0,24) 发车时间分钟(类型:int 0,60) 起始站及终点站(类型:void wap(int k))行车时间(类型:float times(int k))额定票数(类型:number(int k))已定票人数(类型:nownumber(int k,int i));2. 车次信息的操作:运行程序就会弹出一个界面如下图所示:根据您的需求任选:a,b,c,d,e,f,中的任一功能选项进入系统,无论进入那一个,里面都有详细的信息提示,只要按步操作即可。a:详

16、细的班次信息供您浏览;b:进入后只需输入您所要定的班次,它就会显示出该车的发车时间、终点站、行车时间、是否有票剩余,是否已发车。c:输入您的终点站序号,就会显示出到达该地的所有车次,供您选择。d:输入您想买的班次,若有票剩余且未发车,即可订票,程序会显示订票成功;此时再输入您要定的票数;若车已发出或票卖完了,程序会提示您:此班不能订票。e: 输入您想退的班次,若未发车,即可退票,程序会显示退票成功;此时再输入您要退的票数,程序会显示退票成功;若车已发出,程序会提示您无法退票。f:若想增加班次,则要输入密码(qiu),输入您所要加的班次,及增加的终点站,发车时间。6测试结果主界面:班次查询:终点

17、站查询:售票:退票:列出你的测试结果,包括输入和输出。这里的测试数据应该完整和严格,最好多于需求分析中所列。7附录#include#include /*时间库函数*/#include /*调用系统函数*/#include /*串操作及内存操作函数*/ #include#include#define N 80 /*宏定义多条记录*/void maipiao(int s,int t); /*函数定义*/float times(int k);int hour(int k)switch(k)case 1:return 07;break;case 2:return 10;break;case 3:ret

18、urn 13;break; case 4:return 16;break;case 5:return 19;break;case 6:return 21;break; /*d到闽清一天的发车时间小时段*/case 7:return 07;break;case 8:return 11;break;case 9:return 15;break;case 10:return 19;break;case 11:return 23;break; /*d到长乐一天的发车时间小时段*/case 12:return 07;break;case 13:return 11;break;case 14:return

19、 15;break;case 15:return 19;break;case 16:return 23;break; /*d到连江一天的发车时间小时段*/case 17:return 07;break;case 18:return 11;break;case 19:return 16;break;case 20:return 20;break; /*d到永泰一天的发车时间小时段*/ case 21:return 07;break;case 22:return 12;break;case 23:return 17;break;case 24:return 22;break; /*d到福清一天的发

20、车时间小时段*/case 25:return 07;break;case 26:return 14;break;case 27:return 19;break;case 28:return 22;break; /*d到罗源一天的发车时间小时段*/ /*开车时间段*/int minute(int k)switch(k)case 1:return 00;break;case 2:return 00;break;case 3:return 00;break; case 4:return 00;break;case 5:return 00;break;case 6:return 00;break; /

21、*d到闽清一天的发车时间分钟段*/case 7:return 00;break;case 8:return 00;break;case 9:return 00;break;case 10:return 00;break;case 11:return 00;break; /*d到长乐一天的发车时间分钟段*/case 12:return 00;break;case 13:return 00;break;case 14:return 00;break;case 15:return 00;break;case 16:return 00;break; /*d到连江一天的发车时间分钟段*/case 17:

22、return 00;break;case 18:return 30;break;case 19:return 00;break;case 20:return 30;break; /*d到永泰一天的发车时间分钟段*/ case 21:return 00;break;case 22:return 30;break;case 23:return 00;break;case 24:return 30;break; /*d到福清一天的发车时间分钟段*/case 25:return 30;break;case 26:return 00;break;case 27:return 30;break;case

23、28:return 30;break; /*d到罗源一天的发车时间分钟段*/ /*开车时间段*/void wap(int k)switch(k)case 1: printf(闽清);break;case 2: printf(长乐);break;case 3: printf(连江);break;case 4: printf(永泰);break;case 5: printf(福清);break;case 6: printf(罗源);break; /*输入终点站的函数*/int shijian() struct tm *ptr; time_t lt; lt =time(NULL); ptr=gmti

24、me(<); printf(ctime(<); return 0; /*输出当前时间的函数*/float times(int k)float t; if(k=1)t=1.5;if(k=2)t=3.0;if(k=3|k=4)t=4.0;if(k=5|k=6)t=4.5;return t; /*输入行车时间的函数*/int number(int k)int f;if(k=1|k=2)f=30;if(k=3|k=4)f=40;if(k=5|k=6)f=45;return f; /*输入最大载客量的函数*/int nownumber(int k,int i)int n=0;char filen

25、ame10;switch(i)case 1:strcpy(filename,qiu1.txt);break;case 2:strcpy(filename,qiu2.txt);break;case 3:strcpy(filename,qiu3.txt);break; case 4:strcpy(filename,qiu4.txt);break;case 5:strcpy(filename,qiu5.txt);break;case 6:strcpy(filename,qiu6.txt);break; case 7:strcpy(filename,qiu7.txt);break;case 8:str

26、cpy(filename,qiu8.txt);break;case 9:strcpy(filename,qiu9.txt);break;case 10:strcpy(filename,qiu10.txt);break;case 11:strcpy(filename,qiu11.txt);break; case 12:strcpy(filename,qiu12.txt);break;case 13:strcpy(filename,qiu13.txt);break;case 14:strcpy(filename,qiu14.txt);break;case 15:strcpy(filename,qi

27、u15.txt);break;case 16:strcpy(filename,qiu16.txt);break;case 17:strcpy(filename,qiu17.txt);break;case 18:strcpy(filename,qiu18.txt);break;case 19:strcpy(filename,qiu19.txt);break;case 20:strcpy(filename,qiu20.txt);break; case 21:strcpy(filename,qiu21.txt);break;case 22:strcpy(filename,qiu22.txt);bre

28、ak;case 23:strcpy(filename,qiu23.txt);break;case 24:strcpy(filename,qiu24.txt);break; case 25:strcpy(filename,qiu25.txt);break;case 26:strcpy(filename,qiu26.txt);break;case 27:strcpy(filename,qiu27.txt);break;case 28:strcpy(filename,qiu28.txt);break; case 29:strcpy(filename,qiu29.txt);break;FILE *fp

29、;if(fp=fopen(filename,rt+)=NULL)printf(cannot open file,strike any key exit!);exit(1);fscanf(fp,%d,&n);n=n+k; rewind(fp);fprintf(fp,%d,n); /将输入数组里面的数据写到文本里fclose(fp);return n; /*现在已定票人数*/int tangci(int k)int x;switch(k)case 1:x=6;break;case 2:x=5;break;case 3:x=5;break;case 4:x=4;break;case 5:x=4;br

30、eak;case 6:x=4;break;default:x=0;break;return x; /*确定每个地方一天行车趟次的函数*/void jiemian()printf(*n);printf(*欢迎来到车票查询系统*);printf(n);printf(| a: 进入班次一览 |n);printf(| b: 进入查询班次 |n);printf(| c: 进入终点站查询 |n);printf(| d: 售票 |n);printf(| e: 退票 |n);printf(| f: 增加班次 |n);printf(*n);printf(n请选择(a-e):); /*界面函数*/void ban

31、ci(int s,int t) system(cls); /*清屏*/ int i,flag=1,m,k=1,o=0; /*定义一些要用的数据*/ printf( 车票管理系统 ); printf(n); printf(班次 发车时间 起点站 终点站 行车时间 额定数量 已订票人数 状态); printf(n); for(i=1;i=10) printf(%d ,i);else printf(%d ,i);if(hour(i)=10) printf(%d ,hour(i); /*进行页面的调整,美观*/else printf(%d%d ,o,hour(i);if(minute(i)=10)pr

32、intf(%d,minute(i);elseprintf(%d%d,o,minute(i);printf( 闽侯 );wap(k);printf( %lf ,times(k);printf(%d ,number(k); printf(%d ,nownumber(0,i);if(shour(i)printf(未发出);else if(t6)break; /*班次一览*/void chaxun1(int s,int t)system(cls);int i,k=0,n,o=0; printf(n请输入要查询的班次i:); scanf(%d,&i);n=i;while(n0)k+;n=n-tangci(k); printf(班次 发车时间 起点站 终点站 行车时间 额定数量 已订票人数 状态n); if(i=10) printf(%d ,i);else printf(%d ,i);if(hour(i)=10) printf(%d ,hour(i);else printf(%d%d ,o,hour(i);if(minute(i)=10)printf(%d,minute(i);elseprintf(%d%d,o,minute(i); printf( 闽侯 );wap(k);printf( %f ,times(k);printf(%d ,num

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号