欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

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

    • 资源ID:2384931       资源大小:374.50KB        全文页数:30页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    车票管理系统课程设计报告题目: 车票管理系统 专业: 信息与计算科学 班级: 1002 学号: 姓名: 指导教师: 完成日期: 2011年12月23日一、课程设计目的本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据及编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。通过这次设计,要在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。二、课程设计内容一.系统的主要功能:1.浏览班次信息2.查询班次:按班次查询;按终点查询;3.售票 (1)售票成功(当车票有剩余,且车未发出时) (2)班次不存在(3)票已售完(当座位数小于等于已定票人数)(4)车已发出4.退票退票成功(输入的班次号存在且当前时间比发车时间早)退票失败(班次不存在或当前时间比发车时间晚)三、课程设计过程1需求分析(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) 输出的形式;printf(3) 程序所能达到的功能;录入详细的班次信息(发车时间,起点,终点站,行车时间,额定票数,订票人数,是否已发车);浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。查询功能(分班次查询和终点站查询两种);订票功能;(当查询出已定票人数小于额定载量且当前系统时间久小于发车时间才能售票,自动更新已售票人数)退票功能;(输入所退票的班次,当本班车未发出时才能退票,自动更新已售票人数)临时增加班次功能;2概要设计进入班次一览进入班次查询进入终点站查询售票退票增加班次车票管理系统进入车票查询界面按b按班次查询按c终点站查询按提示操作继续查找,按1返回主菜单3详细设计车票查询依据提示操作进入售票界面售票成功班次不存在票已售完车已发出根据提示继续售票,返回主菜单按1售票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;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.是终点站的输出,我们一开始是使用字符串的输出,这样以便于按终点站查找时能进行比较。但这种方法我们又没有实现!于是我们干脆用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.是时间的问题,这源于要比较发车时间与当前的时间,判断这班车到底有没有发车,和能不能订票与退票,我们用了一个时间函数,输出了当前的时间,但那边有年月日,不好进行提取和比较,于是我们采用输出了时间,然后看着那个时间手动的提取。int shijian() struct tm *ptr; time_t lt; lt =time(NULL); ptr=gmtime(&lt); printf(ctime(&lt); return 0; /*输出当前时间的函数*/在主函数中:printf("请输入上述时间的时辰:"); scanf("%d",&s);printf("请输入上述时间的分钟:");scanf("%d",&t);、然后再将s和t带入各个需要比较时间的函数中。4.我们碰到了文件的问题,这是在保存已定票人数中,这需要更新已定票人数和判断能否售票,我们一开始就将这部分留到了最后,一开始我们只写了暂时售票人数为0,在文件的运用上我们感觉比较困难,训练的比较少,也比较少这方面的知识!在这里我们碰到了比较大的困难,我们一开始建立了一个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");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",&n);n=n+k; rewind(fp);fprintf(fp,"%d",n); /将输入数组里面的数据写到文本里fclose(fp);return n; /*现在已定票人数*/ 其他都是一些小问题了,我们可以自己一边调试一边就能自己一会儿解决!b算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;我们车票管理系统使用的语言并不复杂,使用的都是比较常见的,低级的语言,高级的语言和难懂的语言比较少!这是我们小组自己的成果,做出来了,我们挺有成就感的。我们也使用了很多的while循环。在主函数中while(log) /*循环*/ if(x='a')banci(s,t); /*调用班次的函数,班次一览的函数*/ 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) break;这是在程序运行与退出之间循环在买票函数中:if(number(k)>=nownumber(0,i)&&log=1)printf("请输入你要定的票的数量m:n");scanf("%d",&m);nownumber(m,i);while(number(k)<nownumber(0,i)nownumber(-m,i);printf("这班车已订满,请重新订票:n");printf("请输入您需要购买票的班次i:n");scanf("%d",i);n=i; while(n>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(i); printf(" %f ",times(k); printf("%d ",number(k); printf("%d ",nownumber(0,i);if(s<hour(i) printf("未发出"); log=1; else if(t<minute(i)&&s=hour(i) printf("未发出"); log=1; else printf("已发出"); log=0; printf("n");这是其中一个循环,实现已定人数小于额定数量!当其大于额定数量时继续循环,直至你所选的班次小于额定数量未知! 这些循环都很容易理解,都不是什么难的问题,程序中还有很多循环我就不一一举例了! 我们改进的思想就是尽可能让它变得简单!还有很多的不足和瑕疵需要我们继续去奋斗,希望老师不吝赐教!c经验和体会等。这次实验让我们收获良多,这让我们得到了很多经验,又认识了很多的不足,在c语言这方面我们还需要很多的历练!我想通过这次的练习,我们都有所进展,我们现在需要的就是实践。完成了任务我们还是很有成就感的,也增添了我们对c语言的热情!在今后我们知道,凡事都要有自己的见解,我们可以借鉴别人,但别人是不可复制的,我们要明白只有理解才是自己的,只有通过自己实践我们才能深刻的认识到这一点!5用户使用说明该系统是出于对班车的各种信息进行管理和维护,并可以简单的订票和退票功能,还可适当地增加班次。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:详细的班次信息供您浏览;b:进入后只需输入您所要定的班次,它就会显示出该车的发车时间、终点站、行车时间、是否有票剩余,是否已发车。c:输入您的终点站序号,就会显示出到达该地的所有车次,供您选择。d:输入您想买的班次,若有票剩余且未发车,即可订票,程序会显示订票成功;此时再输入您要定的票数;若车已发出或票卖完了,程序会提示您:此班不能订票。e: 输入您想退的班次,若未发车,即可退票,程序会显示退票成功;此时再输入您要退的票数,程序会显示退票成功;若车已发出,程序会提示您无法退票。f:若想增加班次,则要输入密码(qiu),输入您所要加的班次,及增加的终点站,发车时间。6测试结果主界面:班次查询:终点站查询:售票:退票:列出你的测试结果,包括输入和输出。这里的测试数据应该完整和严格,最好多于需求分析中所列。7附录#include<stdio.h>#include<time.h> /*时间库函数*/#include<stdlib.h> /*调用系统函数*/#include<string.h> /*串操作及内存操作函数*/ #include<conio.h>#include<math.h>#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;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 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到福清一天的发车时间小时段*/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; /*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: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 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=gmtime(&lt); printf(ctime(&lt); 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 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,"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.txt");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;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;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;break;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 banci(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<=N;i+) if(flag)m=i+tangci(k)-1; flag=0; /*计算同一个终点站的班次范围*/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(" %lf ",times(k);printf("%d ",number(k); printf("%d ",nownumber(0,i);if(s<hour(i)printf("未发出");else if(t<minute(i)&&s=hour(i)printf("未发出");elseprintf("已发出");printf("n"); if(i=m)flag=1; k+;if(k>6)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(n>0)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

    注意事项

    本文(c语言课程设计报告车票管理系统实验报告.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开