高速公路收费系统C语言课程设计报告分解_第1页
高速公路收费系统C语言课程设计报告分解_第2页
高速公路收费系统C语言课程设计报告分解_第3页
高速公路收费系统C语言课程设计报告分解_第4页
高速公路收费系统C语言课程设计报告分解_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、题目:高速公路计费系统设计功能:在某高速公路出口收费处,对三种类型的车辆计费,大型车每公里0。5元,中型 车每公里0。4元,小型车每公里0。3元,来车验条,乘公里数即得该收的款项。在交班 时要统计出总数。分步实施:1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数:2、完成最低要求:建立一个只有三个入口的计费系统,并能进行统计计算,打印出报表;3、进一步要求:完成任意多个入口的通用系统。要求:1、用C语言实现程序设计:2、3、4、利用结构体数组实现信息的数据结构设计:系统的各个功能模块要求用函数的形式实现;界面友好(良好的人机交互人程序加必要的注释。总体设计/菜单1.录入车辆信2

2、.査询车辆信Z3.车辆统计报J丿4.保存关闭系丿确定总体设计的框架后,分阶段完善各个模块的详细设计,并不断编译和调试,找 出和更改程序错误,最终完成题目的要求。进入系统首页为主菜单,主菜单下分4个模块.模块1:录入车辆信息 进入模块1后按提示要求录入车牌号码、时间、型号大小(用a. b、c分别表示大型、中型、小型)和入站口(1、2、3、4 表示不同入口站名称并分别对应 不同公里路程数)。模块2:查询车辆信息 进入模块2后按提示要求录入所要查询的车牌号码,即可查询其进站入口,时间, 及所需费用等信息 模块3:车辆统计报表 进入模块3后即可显示操作员Z前录入的所有车辆的各个信息,并统计出车辆总数及

3、应收总费用。模块4:保存关闭系统 进入模块4后系统自动保存所有车辆信息,并按提示可退出木系统。流程图_4_*1 »>输入车牌输入进站输入车牌显示所有车辆1信息、弔辆总显示车辆1数及应收总费7=q查询车辆是否继续输入车型输入入站口足否继续录M足否退出系Y保存退出保存数据程序代码:#include<stdio. h> #include<stdlib. h> #include<string. h> #include<conio. h> #define N 100 #define M 4/入口数量,可设置多个路口char a = 20,

4、30,40, 50; 路口 kl :20 公里,路口 k2 :30 公里,路口 k3:40 公里,k4 :50公里char st讥3 = rk:r,k2/k3rk4; /入口名称,分别对应上面数组的公里FILE*fp;int count;voidinput 0;voidcheakO ;voidtongji 0voidread ();voidmenu ();voidwritefile();struct vehicle/车辆信息charnum15;chartime6charsize2charroad3;float cost;veNvoid mainOreadO ;while (1)menuO ;v

5、oid read ()导入文件char filename20;辻(fp=fopen("tql txt", "r")=XULL)printf (-无此文件,新建一个文件n);printf(输入文件名,回车键结束:0; scanf("%s", filename);if(fp=fopen(filename,气")=NULL)printfC新建失败“); exit (0);elseprintfC新建文件成功,按任意键返回主菜单);getchar ();return;fseek(fp, 0, 2);/文件内部指针退回到离文件结尾0位置

6、,systemCcls");char i;即指针指向文件内部末尾处辻(ftell(fp)>0)/使用fseek函数后再调用函数ftellO就能非常容易地确定文件的当前位置。fseek (fp, 0, 0);for(count=0;!feof(fp)&&fread(&vecount, sizeof(structvehicle),1,fp);count+);return;void menu ()printf ("tnt* 欢迎来到 公路计 费系统 *nnttt主菜单n):ptintf ("t*t 录入车辆信息请按printf ("

7、;t*t 查询车辆信息请按printf ("t*t 车辆统计报表请按printf("t*t 保存关请按 4t 、 f I f I In f I Ii=getch0;switch(i)casel : input 0break;case'2 : cheakO ;break;case'3” : tongji 0 ;break;char i, j;case '4': writefile();default : break;void input ()/录入车辆信息函数system("cis");printf rn请录入车辆信息:0;

8、printfCXn车牌号码(5位字符);scanf("%s", &vecount. num);printf("n进站时间(输入格式*:*) n");scanf ("%s",&vecount, time);printf Cn车辆型号(a, b, c分别代表大中小)n") ;/大车0. 5元/每公里.中型车0.4元/每公里;小车0.3元/每公里scanf ("%s",&vecount, size);printf ("n 入口通道(输入 kl, k2, k3. . . . )

9、n");scanf ("%s",&vecount. road);i=count;/计算该车路费if (strcmp(vei. size, "a")=0)if (strcmp(vei. road, strj)=0)vei cost=aj*0 5;break;else if (strcmp(vei size, "b") =0)if (strcmp (vei. road, str j)=0)vei cost二aj*0 4;break;else if (strcmp(vei size, "c")=0)if

10、 (strcmp(vei. road, strj)=0)vei cost二aj*0 3;break;else vei. cost=00. 00;count+;printf C'nn是否继续录入车辆信息?n按1继续录入按任意键返回n);switch (getchO)case ' 1* : input () default : return;void cheakO/查询车辆信息函数char ch, num 10, i, k=0;systemCcls");printf ("查询车辆信息nn");printf (请输入车牌号码n");for (i

11、=count-l; i>=0; i)/需显示车辆最新进站信息if (strcmp (ve i. num, num) =0) k=l;break;辻(k=l)printf r车牌号码进站时间车型大小 进站入口应收费用n);printf("%st”、vei. num);printf ("%s"、vei. time);ch=getchar ();用来接收前面指令的最后一个回车键ch=getch0;/接收选择键switch (ch)case ' 1* : cheak ();default : return;elseprintf("%st"

12、, vei. size);printf ("%st",vei road);printf ("% 2f 元",vei cost);printf C"nnn按1继续查询按任意键返回主菜单");n);printfCXn无可显示内容nn按1继续查询按任意键返回主菜单ch=getch0;switch (ch) case ' 1* : cheak ();汇总报表default : return;void tongji ()int i, j;float sum=0. 00;systemCcls");printf CAnntt 报表

13、汇总'n'rT);printfC车牌号码进站时间车型大小进站入口应收费用“);for (i=0; Kcount; i+)printf("nn%s", vei. num);printf("%. 2f", vei cost);printf ("%s", vei.time);printf("%s ", vei size);printf("%s ", vei road);for (j=0;j<count;j+)sum=sura+vej. cost;printf ("nnn

14、tttt 车辆总数:%d 辆",count);printf ("nntttt 收费总额:%. 2f 元",sum);printf("nnnn 按任意键返回n);getchO ;void writefile()/文件保存函数systemCcls");int i, ch;辻(fp=fopen("tql txt", "w")=XULL)printf (-打开文件失败“);for (i=0; Kcount; i+)if(fwrite(&vei, sizeof(struct vehicle),1,fp)!=

15、1)printfC无法读入文件);fclose (fp);printf CAnnnnnttt文件保存成功nnntt按1退出程序1按任意键返回汇);ch=getch0;switch(ch) case ' 1* : exit (0);default : return;部分截图:主菜单:模块1:录入车辆信息截图模块2:查询车辆信息截图模块3:汇总报表截图模块4:保存退出系统截图C程序设计总结本程序在刚开始调试时有许多错误,但在我不懈努力及同学们的帮助下都被一 一克服,现在在操作本程序时可根据提示进行相关操作,界面整洁大方,人机交互 界面良好,能正确输出结果。在刚开始的儿次调试中曾经出现过不能

16、运行,弹出提示警告框令到调试终止。 其中,为力求界面简洁美观,需要多次调试输出数据,图形符号的位置,使其整齐 划一,这花了相当一部分时间。在调试check0函数时,当输入完车牌号码并显示出该车辆信息后,当按任意 键后屏幕马上跳回菜单页面而无法按设计要求输出选择项,经过查找书本得知要在 switch语句前再加上一句getcharO语句用来接收前面指令的最后一个回车键,之 后经修改功能得到实现。完成题目要求的基本功能后就考虑完成任意多个路口的通用系统这一功能。本 人选择在程序开始部分加设两个数组。一个数组是设置各入站口的名字,另外一个 数组是设置各路口的里程数,并且其元素顺序与前一数组一一对应。在

17、后面的程序 中只要检测到其路口名即可找出相应公里数并计算车辆的路费。考虑程序简洁性本 功能不在人机界面上实现,若需增加入站口,在程序开始部分的数组增加站口及与 其对应的里程数即可。收获:在这次设计过程中,不仅复习课本上所学知识,还通过上网查资料、问同学学到了 课本上没有的知识。从而启发我,要想写好程序,在写好课本知识的同时还需要多读和 专业有关的一些书籍,同时还需要多动脑子,勤于实践,尽量把所学的知识综合起來应 用,力争写出完美的程序。除此之外,我还得到了一些有用的教训:写程序时必须要细 心,不能输错一个字符标点,就连全角半角也得注意。在修改时要有耐心,编译出错后 必须逐个错误去改正,绝不能心急浮躁,否则修改之后还会有新的错误。经过这段时间 的实践我对C语言这门课程有了更深一步的了解。它是计算机程序设计的重要理论技 术基础,在我们电子科学与技术专业

温馨提示

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

评论

0/150

提交评论