ImageVerifierCode 换一换
格式:DOCX , 页数:49 ,大小:221.68KB ,
资源ID:9167260      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-9167260.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c语言车票管理系统实验.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

c语言车票管理系统实验.docx

1、c语言车票管理系统实验车票管理系统课程设计报告题目:车票管理系统 专业:信息与计算科学 班级:1002学号:* * * 姓名: 陈婉璐 包忠材 邱振涛 指导教师: 吴选忠 熊保平 完成日期: 2011年12月23日一、课程设计目的本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据及编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。通过这次设计,要在程序设计方法以及上机操

2、作等基本技能和科学作风方面受到比较系统和严格的训练。二、课程设计内容一.系统的主要功能:1.浏览班次信息2.查询班次:按班次查询;按终点查询;3.售票(1)售票成功(当车票有剩余,且车未发出时)(2)班次不存在(3)票已售完(当座位数小于等于已定票人数)(4)车已发出4.退票退票成功(输入的班次号存在且当前时间比发车时间早)退票失败(班次不存在或当前时间比发车时间晚)三、课程设计过程1需求分析(1) 输入的形式和输入值的范围;录入的班次信息的输入形式和输入值的范围:车次(类型:int) 发车时间小时(类型:int 0,24) 发车时间分钟(类型:int 0,60) 起始站及终点站(类型:voi

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

4、(输入所退票的班次,当本班车未发出时才能退票,自动更新已售票人数)临时增加班次功能;2概要设计3详细设计4调试分析内容包括:a调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;1.我们将一个个功能分为一个个函数,在发车时间上我们遇到了一些阻碍!我本来想通过算法来输出发车时间,没想到一次次的实验不行!于是我们将发车时间的分为小时段和分钟段!使用case函数输出.int hour(int k) switch(k) case 1: return 07。break。 case 2: return 10。break。(省略一部分) case 27: return 19。break。 ca

5、se 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.是终点站的输出,我们一开始是使用字符串的输出,这样以便于按终点站查找时能进行比较。但这种方法我们又没有实现!于是我们干脆用void,使用简便的方法,达到相同的目的

6、.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.我们碰到了文件的问题,这是在保存已定票人数中,这需要更新已定票人数和判断能否售票,我们一开始就将这部分留到了最后,一开始我们只写了暂时售票人数为0,在

8、文件的运用上我们感觉比较困难,训练的比较少,也比较少这方面的知识!在这里我们碰到了比较大的困难,我们一开始建立了一个txt的文本文档,准备使用这个来储存这些数据,但后来我们觉得使用一个文档比较复杂,容易出错,于是我们使用比较麻烦,但是简单的办法,我建立了与班次一样多的文档,一个文档保存一班车的数据,这样就不是那么复杂了。int nownumber(int k,int i) int n=0。 char filename10。 switch(i) case 1: strcpy(filename,qiu1.txt)。break。 case 2: strcpy(filename,qiu2.txt)。b

9、reak。 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,&n)。n=n+k。 rewind(fp)。 fprintf(fp,%d,n)。 /将输入数组里面的数据写到文

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

11、*/ 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) break。 这是在程序运行与退出之间循环在买票函数中: if(number(k)=nownum

12、ber(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 printf(%d%d,o,minute(i)。 printf( 闽侯 )。 wap

13、(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用户使用说明该系统是出于对班车的各种信息进行管理和维护,并可以简单的订票和退票功能,还可适当地增加班次。1.系统说明:在程序中直接录入车次

15、信息依次是:车次(类型: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:详细的班次信息供您浏览;b:进入后只需输入您所要定的班次,它就会显示出该车的发车时

16、间、终点站、行车时间、是否有票剩余,是否已发车。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: return 13。break。 case 4: return 16。b

18、reak。 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 15。break。 c

19、ase 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。

21、 case 6: return 00。break。 /*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

22、16: return 00。break。 /*d到连江一天的发车时间分钟段*/ case 17: 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: retur

23、n 30。break。 case 26: return 00。break。 case 27: return 30。break。 case 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。

24、/*输入终点站的函数*/int shijian() struct tm *ptr。 time_t lt。 lt =time(NULL)。 ptr=gmtime(<)。 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

25、) f=40。 if(k=5|k=6) f=45。 return f。 /*输入最大载客量的函数*/int nownumber(int k,int i) int n=0。 char filename10。 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

26、,qiu5.txt)。break。 case 6: strcpy(filename,qiu6.txt)。break。 case 7: strcpy(filename,qiu7.txt)。break。 case 8: strcpy(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.t

27、xt)。break。 case 13: strcpy(filename,qiu13.txt)。break。 case 14: strcpy(filename,qiu14.txt)。break。 case 15: strcpy(filename,qiu15.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)。break。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2