交通罚单管理系统_第1页
交通罚单管理系统_第2页
交通罚单管理系统_第3页
交通罚单管理系统_第4页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、目录一系统开发的背景3二系统分析与设计3(一)系统功能要求3(二)系统模块结构设计4三系统的设计与实现5(一)罚单基本信息录入:input ()5(二 )信息删除: delete()8(三)find函数11(四) show 函数15(五) sum函数16四系统测试18(一)测试input 函数18(二 )测试 delet 函数19(三)测试find 函数20(四)测试show 函数20(五)测试sum 函数21五、总结22六、附件(代码、部分图表)231交通罚单管理系统一 系统开发的背景为了方便单位对交通处罚的经一步解交通处罚单信息用文件存储,提供文件的输入输出操作;要求可以输入、删除、浏览交

2、通处罚单信息,因而要提供信息的输入、删除和显示操作;要实现按车辆、驾驶员和开单交警查询, 则要提供查找操作; 另外提供统计操作和键盘式选择菜单以实现功能选择。二 系统分析与设计(一)系统功能要求可以录入交通罚单的信息,交通处罚单信息用文件存储,因而要提供文件的输入输出操作。1. 要求可以输入、删除、 浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;2. 要实现按车辆、驾驶员和 开单交警查询,则要提供查找操作;3. 另外提供统计操作和键盘式选择菜单以实现功能选择。4. 罚单信息(包括车牌号、 驾驶员姓名、交警姓名、交警编号、罚单编号)(二)系统模块结构设计通过对系统功能的分析,交通罚单

3、管理系统功能如图所示2交通罚单管理系统信信信信息息息息录浏查统入览询计模模模模块块块块图 1 交通管理系统功能图通过上图的功能分析,把整个系统划分为5 个模块:1、交通罚单信息录入,该模块主要实现:车牌号、驾驶员姓名、交警姓名、交警编号、罚单编号的输入,用input函数实现。2、信息删除模块,该模块主要实现信息的删除,用delet函数实现。3、信息查询模块,该模块主要实现信息的查询有车牌号查询、驾驶员查询、 交警查询,共用四个函数进行查询,分别是 find ,4、信息统计模块,主要实现的是罚单数量的统计,用sum函数实现。三系统的设计与实现(一)罚单基本信息录入:input()分析:先输出表头

4、,然后进行罚单的信息输入, 单独看各个数据信息,开单日期以及驾驶员姓名为字符型,可以采用字符型数组; 处罚单号3码、车牌号码以及交警ID 为整型,可以采用整型数组。一条记录对应一张交通处罚单,方便交通部门管理。流程图如图2 所示。开始能否打开文件输入用户要输入处罚单纪录的条数。退出依次输入处罚单信息,并保存到文件中。j输入、关成完闭件图 2输入函数流程图*输入模块 *程序代码:void input()FILE*fp;int num;int i,j;if(fp=fopen("plist.txt","r+")=NULL)/r+为读和写而打开文本文件if(fp

5、=fopen("plist.txt","w")=NULL)/w为读而打开文本文件printf("文件打开或创建失败!n");printf("npress enter to return menun");getchar();menu();4printf("n请输入处罚单数量:");scanf("%d",&i);printf("nn");for(j=0;j<i;j+)/控制罚单一次一次的输入printf("输入第 %d张处罚单的 :n&

6、quot;,j+1);printf("n车牌号、驾驶员姓名、 交警姓名、 交警号、 处罚单号、 日期(如 20101112)n");printf("n 注意 : 中间用空格隔开 !n"); scanf("%s%s%s%s%s%s",&plistj.chepai,&plistj.dname,&plistj.pname,&plistj .tbianhao,&listj.fbianhao,&plistj.date);for(j=0;j<i;j+)/对罚单一次次的保存fprintf(fp,

7、"n%st%st%st%st%st%s",plistj.chepai,plistj.dname,plistj.pname,plistj.tbianhao,plistj.fbianhao,plistj.date);fclose(fp);printf("n保存成功! ");printf("npress enter to return menun");getchar();getchar();menu();printf("n请输入处罚单数量:");scanf("%d",&i);printf(&q

8、uot;nn");for(j=0;!feof(fp);j+)/读取文件fscanf(fp,"%s%s%s%s%s%s",&plistj.chepai,&plistj.dname,&plistj.pname,&plistj.tbianhao,&plistj.fbianhao,&plistj.date);num=j+i;if(num>N)printf("n结构体数组数的N 太小,请先修改N 的值 n");printf("npress enter to return menun"

9、;);getchar();getchar();menu();printf("n");for(j=0;j<i;j+)printf("输入第 %d张处罚单的 :n",j+1);printf("n车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如 20101112)n");printf("n注意 : 中间用空格隔开!n");5scanf("%s%s%s%s%s%s",&plistj.chepai,&plistj.dname,&plistj.pname,&pl

10、istj.tbianhao,&plistj.fbianhao,&plistj.date);for(j=0;j<i;j+)fprintf(fp,"n%st%st%st%st%st%s",plistj.chepai,plistj.dname,plistj.pname,plistj.tbianhao,plistj.fbianhao,plistj.date);fclose(fp);printf("n保存成功! ");printf("npress enter to return menun");getchar();getc

11、har();menu();(二 )信息删除: delete()分析:该模块的功能需要删除交通处罚单信息,要根据处罚单号、车辆号码、驾驶员姓名、开单时间以及交警ID 查找处罚记录并删除。流程图如图 3 所示。6打开文件输入要删除的处罚单的处罚单寻找文件中所有的处罚单w=chufadani.num关闭文件后再打开文件i!=c把不要求删除的罚单信息在文件中输入结束图 3删除函数流程图*删除模块 *程序代码void delet()int j;int num;int f=-1;FILE*fp1,*fp2;/文件的运用char s120;if(fp1=fopen("plist.txt"

12、,"r")=NULL)7printf("can not open filen");printf("npress enter to return menun");getchar();getchar();menu();for(j=0;!feof(fp1);j+)/读取文件fscanf(fp1,"%s%s%s%s%s%s",&plistj.chepai,&plistj.dname,&plistj.pname,&plistj.tbianhao,&plistj.fbianhao,&am

13、p;plistj.date);num=j;fclose(fp1);printf("请输入要删除的处罚单的编号n");scanf("%s",s1);for(j=0;j<num;j+)if(strcmp(s1,plistj.fbianhao)=0)f=j;if(f<num-1)for(j=f;j<num-1;j+)strcpy(plistj.chepai,plistj+1.chepai);strcpy(plistj.dname,plistj+1.dname);strcpy(plistj.pname,plistj+1.pname);strcp

14、y(plistj.tbianhao,plistj+1.tbianhao);strcpy(plistj.fbianhao,plistj+1.fbianhao);strcpy(plistj.date,plistj.date);if(fp2=fopen("plist.txt","w")=NULL)printf("文件打不开!n");printf("npress enter to return menun");getchar();menu();for(j=0;j<num-1;j+)/保存文件fprintf(fp2,&

15、quot;n%st%st%st%st%st%s",&plistj.chepai,&plistj.dname,&plistj.pname,&plistj.tbianhao,&plistj.fbianhao,&plistj.date);8fclose(fp2);printf("n删除成功! n");printf("npress enter to return menun");getchar();getchar();menu();if(f<0)printf("n没有找到该学号的记录:n&

16、quot;);printf("npress enter to return menun");getchar();getchar();menu();(三) find函数分析:该模块的功能是根据输入的处罚单号、车辆号码、驾驶员姓名、开单时间以及交警ID 查找相应的记录,方便驾驶员了解自己的处罚情况 。流程图如图 4 所示。开始打开文件查询处罚单信息选择查询处罚单方法按车牌号按驾驶员姓名按开单警察ID输入结束图 4 find 函数流程图9*查询模块 *程序代码void find()int n;int r;dosystem("cls");/清屏printf(&q

17、uot;n请选择查询类型:nt 1-按车牌号 2- 按驾驶员姓名3- 按开单交警姓名4- 返回主菜单 n");printf("n请输入数字选择:");scanf("%d",&n);if(n<1|n>4)r=1;getchar();else r=0;while(r=1);switch(n)case 1:chepaif();break;case 2:dnamef();break;case 3:pnamef();break;case 4:menu();void chepaif()int f=-1;int num;int j;cha

18、r a20;FILE*fp;if(fp=fopen("plist.txt","r")=NULL)printf("文件打不开! n");printf("npress enter to return menun");getchar();menu();for(j=0;!feof(fp);j+)/读取文件10fscanf(fp,"%s%s%s%s%s%s",&plistj.chepai,&plistj.dname,&plistj.pname,&plistj.tbianha

19、o,&plistj.fbianhao,&plistj.date);num=j;fclose(fp);printf("n请输入车牌号:");scanf("%s",a);printf("n罚单的信息为:nn");printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期 n");for(j=0;j<num;j+)if(strcmp(a,plistj.chepai)=0)f=j;printf("n%st%st%st%st%st%s",&plistj.chepai,

20、&plistj.dname,&plistj.pn ame,&plistj.tbianhao,&plistj.fbianhao,&plistj.date);if(f<0)printf("n没有找到该班号的记录!n");printf("npress enter to return sub menun");getchar();getchar();find();void dnamef()int f=-1;int num;int j;char name20;FILE*fp;if(fp=fopen("plist

21、.txt","r")=NULL)printf("文件打不开! n");printf("npress enter to return menun");getchar();menu();for(j=0;!feof(fp);j+)/读取文件11fscanf(fp,"%s%s%s%s%s%s",&plistj.chepai,&plistj.dname,&plistj.pname,&plistj.tbianhao,&plistj.fbianhao,&plistj.da

22、te);num=j;fclose(fp);printf("n请输入驾驶员的姓名:");scanf("%s",name);printf("n罚单的信息为:nn");printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期 n");for(j=0;j<num;j+)if(strcmp(name,plistj.dname)=0)f=j;printf("n%st%st%st%st%st%s",&plistj.chepai,&plistj.dname,&plistj

23、.pname,&plistj.tbianhao,&plistj.fbianhao,&plistj.date);if(f<0)printf("n没有找到该班号的记录!n");printf("npress enter to return sub menun");getchar();getchar();find();void pnamef()int f=-1;int num;int j;char name20;FILE*fp;if(fp=fopen("plist.txt","r")=NULL

24、)printf("文件打不开! n");printf("npress enter to return menun");getchar();menu();for(j=0;!feof(fp);j+)/读取文件fscanf(fp,"%s%s%s%s%s%s",&plistj.chepai,&plistj.dname,&plistj.pname,&plistj.tbianhao,&plistj.fbianhao,&plistj.date);12num=j;fclose(fp);printf(&q

25、uot;n请输入开单交警的姓名:");scanf("%s",name);printf("n罚单的信息为:nn");printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期 n");for(j=0;j<num;j+)if(strcmp(name,plistj.pname)=0)f=j;printf("n%st%st%st%st%st%s",&plistj.chepai,&plistj.dname,&plistj.pname,&plistj.tbianhao,&

26、amp;plistj.fbianhao,&plistj.date);if(f<0)printf("n没有找到该班号的记录!n");printf("npress enter to return sub menun");getchar();getchar();find();(四) show 函数分析: 该模块的功能是显示所有的处罚信息。流程图如图5 所示开始打开文件逐条输出交通处罚单信息。输出满足条件的罚单结束图 5show函数流程图13程序代码void show()int j;int num;FILE*fp;if(fp=fopen("

27、;plist.txt","r")=NULL)printf("can not open filen");printf("npress enter to return menun");getchar();getchar();menu();for(j=0;!feof(fp);j+)/读取文件fscanf(fp,"%s%s%s%s%s%s",&plistj.chepai,&plistj.dname,&plistj.pname,&plistj.tbianhao,&plistj

28、.fbianhao,&plistj.date);fclose(fp);num=j;printf("n已添加 %d条记录 nn",num);printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期 n");for(j=0;j<num;j+)/输出printf("n%st%st%st%st%st%s",&plistj.chepai,&plistj.dname,&plistj.pname,&plistj.tbianhao,&plistj.fbianhao,&plistj

29、.date);printf("npress enter to return menun");getchar();getchar();menu();(五) sum函数分析:该模块的功能是根据输入的处罚单号、车辆号码、驾驶员姓名、开单时间以及交警ID 查找相应的记录,方便驾驶员了解自己的处罚情况。流程图如图6 所示14开始输入驾驶员名字与时间段将文件每一个信息与输N入条件对比输出满足条件的罚单结束图 6 sum 函数流程图*统计模块 *程序代码void sum()int f=-1;int num;/所有罚单单数int j;int all=0; /某驾驶员的罚单数char nam

30、e20;char time120;char time220;FILE*fp;if(fp=fopen("plist.txt","r")=NULL)printf("文件打不开! n");printf("npress enter to return menun");getchar();menu();for(j=0;!feof(fp);j+)/读取文件fscanf(fp,"%s%s%s%s%s%s",&plistj.chepai,&plistj.dname,&plistj.pna

31、me,&plistj.tbianhao,&plistj.fbianhao,&plistj.date);num=j;15fclose(fp);printf("n请根据提示输入驾驶员的姓名和一个时间段,统计某个驾驶员在某段时间内的处罚单数目和罚单号n");printf("nn请输入驾驶员的姓名:");scanf("%s",name);printf("n请输入一个较早的时间:");scanf("%s",time1);printf("n请输入一个最近的时间:"

32、);scanf("%s",time2);for(j=0;j<num;j+)if(strcmp(plistj.date,time1)>=0)&&(strcmp(plistj.date,time2)<=0)f=j;all+;printf("n罚单号 :%sn",plistj.fbianhao);if(f<0)printf("n没有找到记录!n");printf("n罚单总数为 :%dn",all);printf("npress enter to return menun

33、");getchar();getchar();menu();四系统测试(一)测试input 函数16(二)测试 delet 函数17(三)测试 find 函数(四)测试 show 函数18(五)测试 sum 函数19五、总结系统完成了交通罚单信息的录入、删除、查询(车牌号查询、驾驶员查询、开单交警查询) ,交通罚单的统计等功能。虽然 c 语言复习过了,但是看书看懂了和真正的运用学到的知识写程序是完全不同的,不断的对照例题,不断的尝试与修改。系统运行时比较死板。程序中缺少一些警告句, 例如 : “是否真的删除(y/n)?”。由于考虑的不周全, 没有设计遇到重名的情况该怎么处理。 我们设

34、计的程序中,只设计了按名字选择,进行操作,忽略了重名的情况。整个程序完成了, 还有很多不完善的地方, 希望自己以后办事的时候要认真,仔细,考虑周全。我的收获是学会了怎样美观大方的制作一个表头, 对函数调用的理解比以前更上一层楼, 但对函数的定义仍存在好多问题, 尤其是定义完20后面括号的处理闲的手足无措。不仅让我进一步理解书本上的知识,而且提高了我的动手能力,让我对一个人独立编写程序充满了信心。我初中学到了通过流程图可以更方便编写程序,也可以更准确编写。通过本题让我了解到模块的重要性,各种模块拥有各种功能, 熟练掌握模块可以更便捷编写程序六、附件(代码、部分图表)# include<st

35、dio.h># include<stdlib.h># include<string.h># define N 100 typedef structchar chepai20;/车牌号char dname20;/驾驶员姓名char pname20;/交警姓名char tbianhao20;/交警编号char fbianhao20;/罚单编号char date20;/罚单日期STREC;STREC plistN;void menu();/主菜单void input();/信息录入void delet();/信息删除void find();/信息查询void chepa

36、if();/按车牌查询void dnamef();/按驾驶员姓名查询void pnamef();/按交警查询void show();/信息浏览void sum();/信息统计void main()menu();getchar();input();void menu()21it a;printf("n");printf("+交通罚单管理系统+n");printf("+.+n");printf("+1.信息录入+n");printf("+2.信息删除+n");printf("+3.信息查询

37、+n");printf("+4.信息浏览+n");printf("+5.信息统计+n");printf("+6.退出系统+n");printf("+.+n");printf("请选择您要进行的服务(用序号代替)例:1(信息录入)n");scanf("%d",&a);switch(a)case 1:input();break;case 2:delet();break;case 3:find();break;case 4:show();break;case 5:

38、sum();break;case 6:break;default : break;if(a>7&&a<1)printf("error");void input()FILE*fp;int num;int i,j;if(fp=fopen("plist.txt","r+")=NULL)/r+为读和写而打开文本文件if(fp=fopen("plist.txt","w")=NULL)/w为读而打开文本文件printf("文件打开或创建失败!n");print

39、f("npress enter to return menun");getchar();menu();printf("n请输入处罚单数量:");22scanf("%d",&i);printf("nn");for(j=0;j<i;j+)/控制罚单一次一次的输入printf("输入第 %d张处罚单的 :n",j+1)printf("n车牌号、驾驶员姓名、 交警姓名、 交警号、 处罚单号、 日期(如 20101112)n");printf("n 注意 : 中

40、间用空格隔开 !n"); scanf("%s%s%s%s%s%s",&plistj.chepai,&plistj.dname,&plistj.pname,&plistj .tbianhao,&plistj.fbianhao,&plistj.date);for(j=0;j<i;j+)/对罚单一次次的保存fprintf(fp,"n%st%st%st%st%st%s",plistj.chepai,plistj.dname,plistj.pname,plistj.tbianhao,plistj.fb

41、ianhao,plistj.date);fclose(fp);/文件的关闭printf("n保存成功! ");printf("npress enter to return menun");getchar();getchar();menu();printf("n请输入处罚单数量:");scanf("%d",&i);printf("nn");for(j=0;!feof(fp);j+)/读取文件fscanf(fp,"%s%s%s%s%s%s",&plistj.che

42、pai,&plistj.dname,&plistj.pname,&plistj.tbianhao,&plistj.fbianhao,&plistj.date);num=j+i;if(num>N)printf("n结构体数组数的N 太小,请先修改N 的值 n");printf("npress enter to return menun");getchar();getchar();menu();printf("n");for(j=0;j<i;j+)printf("输入第 %d张

43、处罚单的 :n",j+1);23printf("n车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如20101112)n");printf("n 注意 : 中间用空格隔开 !n"); scanf("%s%s%s%s%s%s",&plistj.chepai,&plistj.dname,&plistj.pname,&plistj.tbianhao,&plistj.fbianhao,&plistj.date);for(j=0;j<i;j+)fprintf(fp,"

44、;n%st%st%st%st%st%s",plistj.chepai,plistj.dname,plistj.pname,plistj.tbianhao,plistj.fbianhao,plistj.date);fclose(fp);printf("n保存成功! ");printf("npress enter to return menun");getchar();getchar();menu();void delet()int j;int num;int f=-1;FILE*fp1,*fp2;/文件的运用char s120;if(fp1=fo

45、pen("plist.txt","r")=NULL)printf("can not open filen");printf("npress enter to return menun");getchar();getchar();menu();for(j=0;!feof(fp1);j+)/读取文件fscanf(fp1,"%s%s%s%s%s%s",&plistj.chepai,&plistj.dname,&plistj.pname,&plistj.tbianhao,

46、&plistj.fbianhao,&plistj.date);num=j;fclose(fp1);printf("请输入要删除的处罚单的编号n");scanf("%s",s1);for(j=0;j<num;j+)24if(strcmp(s1,plistj.fbianhao)=0)f=j;if(f<num-1)for(j=f;j<num-1;j+)strcpy(plistj.chepai,plistj+1.chepai);strcpy(plistj.dname,plistj+1.dname);strcpy(plistj.pname,plistj+1.pname);strcpy(plistj.tbianhao,plistj+1.tbianhao);strcpy(plistj.fbianhao,plistj+1.fbianhao);strcpy(plistj.date,plistj.date);if(fp2=fopen("plist.txt","w")=NULL)printf("文件打不开!

温馨提示

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

评论

0/150

提交评论