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

下载本文档

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

文档简介

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

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

3、用。模块4:保存关闭系统进入模块4后 系统自动保存所有车辆信息,并按提示可退出本系统。流程图开始菜单*录入车辆汇总报表输入车牌信息、车辆总数及应收总费输入进站输入车型查询r*查询车辆输入车牌显示车辆是否继续显示所有车辆输入入站口是否继续录程序代码:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define N 100#define M 4/入口数量,可设置多个路口char a=20,30,40,50;/路口 k1 :20 公里,路 口 k2 :30 公

4、里,路口 k3 :40 公里,路口 k4 :50 公里char str3="k1”,"k2”,"k3”,”k4”; / 入口名称,分别对应上面数组的公里数 FILE*fp;int count;void input();void cheak();void tongji();void read();void menu();void writefile();struct vehicle车辆信息char num15;char time6;char size2;char road3;float cost;veN;void main()read();while(1)menu(

5、);void read()导入文件char filename20;if(fp=fopen("tql.txt","r")=NULL) printf("无此文件,新建一个文件 n");printf("输入文件名,回车键结束:");scanf("%s",filename);if(fp=fopen(filename,"w")=NULL)(printf(-新建失败");exit(0);else(printf(-新建文件成功,按任意键返回主菜单");getchar()

6、;return;fseek(fp,0,2);/文件内部指针退回到离文件结尾0位置,即指针指向文件内部末尾处if(ftell(fp)>0)/使用fseek函数后再调用函数ftell()就能非常容易地确定文件的当前位置。(fseek(fp,0,0);for(count=0;!feof(fp)&&fread(&vecount,sizeof(struct vehicle),1,fp);count+); return;void menu()(system("cls");char i;printf("t做*欢迎来到公路计费系统*nnttt主菜单n

7、n");printf("t*t录入车辆信息请按1t *nn");printf("t*t查询车辆信息请按2t *nn");printf("t*t车辆统计报表请按3t *nn");printf("t*t保 存关闭 系 统请 按4t*nnt*n");i=getch();switch(i)(case '1': input(); break;case '2': cheak(); break;case '3': tongji(); break;case '4&#

8、39;: writefile();default : break;void input()/录入车辆信息函数(char i,j;system("cls");printf("n请录入车辆信息:");printf("n车牌号码(5位字符)n");scanf("%s”,&vecount.num);printf("n进站时间(输入格式 *:* ) n");scanf("%s”,&vecount.time);0.4printf("n车辆型号(a, b, c分别代表大中小)n&qu

9、ot;);/大车0.5元/每公里;中型车元/每公里;小车 0.3元/每公里scanf("%s”,&vecount.size);printf("n 入口通道(输入 k1,k2,k3.) n");scanf("%s”,&vecount.road);i=count;/计算该车路费if(strcmp(vei.size,"a")=0)(for(j=0;j<M;j+)(if(strcmp(vei.road,strj)=0)(vei.cost=aj*0.5;break;else if(strcmp(vei.size,"

10、;b")=0)(for(j=0;j<M;j+)(if(strcmp(vei.road,strj)=0)(vei.cost=aj*0.4;break;else if(strcmp(vei.size,"c")=0)(for(j=0;j<M;j+)(if(strcmp(vei.road,strj)=0)(vei.cost=aj*0.3;break;else vei.cost=00.00;count+;printf("nn是否继续录入车辆信息?n按1继续录入按任意键返回n");switch(getch()(case '1'

11、: input();default : return;void cheak()查询车辆信息函数(char ch,num10,i,k=0;system("cls");printf(" 查询车辆信息nn");printf(-请输入车牌号码n");scanf("%s”,num);for(i=count-1;i>=0;i-)需显示车辆最新进站信息(if(strcmp(vei.num,num)=0)( k=1;break;if(k=1)(printf("车牌号码 进站时间车型大小进站入口应收费用n");printf(&

12、quot;%st ",vei.num);printf("%s”,vei.time);printf("%st”,vei.size);printf(" %st",vei.road);printf(" %.2f 元",vei.cost);printf("nnn按1继续查询按任意键返回主菜单");ch=getchar();/用来接收前面指令的最后一个回车键ch=getch();接收选择键switch(ch)(case '1' : cheak();default : return;else(prin

13、tf("n无可显示内容nn按1继续查询按任意键返回主菜单n");ch=getch();switch(ch)(case '1' : cheak();default : return;void tongji()汇总报表(int i,j;float sum=0.00;system("cls");printf("nntt 报表汇总 nn");printf("车牌号码进站时间车型大小进站入口应收费用,for(i=0;i<count;i+)(printf("nn%s ”,vei.num);printf(&

14、quot; %s”,vei.time);printf("%s”,vei.size);printf("%s",vei.road);printf(" %.2f",vei.cost);for(j=0;j<count;j+)(sum=sum+vej.cost;printf("nnntttt 车辆总数:%d 辆",count);printf("nntttt收费总额:%.2f 元",sum);printf("nnnn 按任意键返回 n");getch();void writefile()/文

15、件保存函数(system("cls");int i,ch;if(fp=fopen("tql.txt”,"w")=NULL)(printf("打开文件失败");for(i=0;i<count;i+)if(fwrite(&vei,sizeof(struct vehicle),1,fp)!=1)printf(-无法读入文件");fclose(fp);printf("nnnnnttt文件保存成功nnntt按1退出程序t按任意键返回n");ch=getch();switch(ch)(case

16、 '1' : exit(0);default : return;部分截图:主菜单:模块1:录入车辆信息截图请录入车辆信息:车牌号玛3位字符) apple进站时间输入格式*:*)17:12车辆型号6 /仁分别代表大中小) h入曰通道(稀lAkLkLkL.) k2囊洞 矗意键返回模块2:查询车辆信息截图模块3:汇总报表截图模块4:保存退出系统截图C程序设计总结本程序在刚开始调试时有许多错误,但在我不懈努力及同学们的帮助下 都被一一克服,现在在操作本程序时可根据提小进行相关操作,界面整洁大 方,人机交互界面良好,能正确输出结果。在刚开始的几次调试中曾经出现过不能运行,弹出提示警告框令

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

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

温馨提示

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

最新文档

评论

0/150

提交评论