交通处罚单管理系统390430459doc.docx
- 文档编号:16700828
- 上传时间:2023-07-16
- 格式:DOCX
- 页数:22
- 大小:378.21KB
交通处罚单管理系统390430459doc.docx
《交通处罚单管理系统390430459doc.docx》由会员分享,可在线阅读,更多相关《交通处罚单管理系统390430459doc.docx(22页珍藏版)》请在冰点文库上搜索。
交通处罚单管理系统390430459doc
C语言设计实习报告
工程学院土木工程052097班
*******
班号:
052097
学号:
***********
题目:
交通处罚单管理系统
*********
日期:
20110826
一,题目要求:
【要求】:
交通处罚单涉及到车辆,驾驶员和开单交警的信息,还有交通处罚单的号码,处罚时间等信息。
【功能】:
(1)要求可以输入,删除,浏览交通处罚单信息。
(2)可以按车辆,驾驶员和开单交警查询。
(3)统计某时间段某个驾驶员的交通处罚数目及交通处罚单号码。
二,需求分析:
交通处罚单信息用文件存储,提供文件的输输出操作;要求可以输入,输出,删除,浏览交通处罚单信息,因而要提供输入,删除和显示操作;要实现按车辆,驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。
三,总体设计:
整个管理系统被设计为信息输入模块,信息删除模块,信息浏览模块,信息查询模块,信息
统计模块。
四,详细设计及实现:
1,处罚单管理系统界面函数
此函数包括的功能是建立新的罚单,按司机姓名查询罚单并浏览相关信息,按交警姓名查询罚单并浏览相关信息,按罚单号查询罚单并浏览相关信息,删除罚单,数据统计和退出处罚单管理系统。
voidMenu()
printf("\n\t\t\t\t交通处罚单管理系统\n");
printf("········································");
printf("菜单:
1-信息录入2-信息删除3-信息浏览4-信息查询5-信息统计6-退出系统\n");
printf("········································");
printf("请从输入数字选择相应的功能:
");2,各功能模块设计
(1)创建新的交通处罚单
处罚单包含的内容有处罚单号,车牌号,司机姓名,交警姓名,和处罚日期,因此相应的函数也应包含这些内容,在这个函数所控制的操作会依次提示输入以上内容。
特别的,罚单号不能有重复,若输入的罚单号有重复,操作界面会提示罚单好重复,请重新输入。
voidinput()
{
FILE*fp;
intnum;
inti,j;
if((fp=fopen("list.txt","r+"))==NULL)
{
if((fp=fopen("list.txt","w"))==NULL)
{
printf("文件打开或创建失败!
\n");
printf("\npressentertoreturnmenu\n");
getchar();
menu();
}
printf("\n请输入处罚单数量:
");
scanf("%d",&i);
printf("\n\n");
for(j=0;j
{
printf("输入第%d张处罚单的:
\n",j+1);
printf("\n车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如)\n");
printf("\n注意:
中间用空格隔开!
\n");
scanf("%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date);
}
for(j=0;j
{
fprintf(fp,"\n%s\t%s\t%s\t%s\t%s\t%s",list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);
}
fclose(fp);
printf("\n保存成功!
");
printf("\npressentertoreturnmenu\n");
getchar();
getchar();
menu();
}
(2)按司机姓名查询罚单:
先输入命令2,再输入待查找司机姓名.在这里函数会在记录在案的处罚单进行循环查找,如果有该司机的罚单记录,就会相应显示在屏幕上。
如果没有该司机的处罚记录,就会打印:
没有相关信息。
voiddna_search()
{
intf=-1;
intnum;
intj;
charname[20];
FILE*fp;
if((fp=fopen("list.txt","r"))==NULL)
{
printf("文件打不开!
\n");
printf("\npressentertoreturnmenu\n");
getchar();
menu();
}
for(j=0;!
feof(fp);j++)//读取文件
{
fscanf(fp,"%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date);
}
num=j;
fclose(fp);
printf("\n请输入驾驶员的姓名:
");
scanf("%s",name);
printf("\n罚单的信息为:
\n\n");
printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n");
for(j=0;j { if(strcmp(name,list[j].dname)==0) { f=j; printf("\n%s\t%s\t%s\t%s\t%s\t%s",list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date); } } if(f<0) printf("\n没有找到该班号的记录! \n"); printf("\npressentertoreturnsubmenu\n"); getchar(); getchar(); search(); } (3)按交警姓名查询罚单: 先输入命令3,再输入待查找交警姓名.在这里函数会在记录在案的处罚单进行循环查找,如果有该交警所开的的罚单记录,就会相应显示在屏幕上。 如果没有该交警开的处罚记录,就会打印: 没有相关信息。 其中 voidpna_search() { intf=-1; intnum; intj; charname[20]; FILE*fp; if((fp=fopen("list.txt","r"))==NULL) { printf("文件打不开! \n"); printf("\npressentertoreturnmenu\n"); getchar(); menu(); } for(j=0;! feof(fp);j++)//读取文件 { fscanf(fp,"%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date); } num=j; fclose(fp); printf("\n请输入开单交警的姓名: "); scanf("%s",name); printf("\n罚单的信息为: \n\n"); printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n"); for(j=0;j { if(strcmp(name,list[j].pname)==0) { f=j; printf("\n%s\t%s\t%s\t%s\t%s\t%s",list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date); } } if(f<0) printf("\n没有找到该班号的记录! \n"); printf("\npressentertoreturnsubmenu\n"); getchar(); getchar(); search(); } (4)按车牌号查询罚单: 先输入命令1,再输入待查找车牌号码.在这里函数也会对记录在案的处罚单进行循环查找,如果有该车牌号记录,就会相应显示在屏幕上。 如果没有该车牌号的处罚信息,就会打印: 没有相关信息。 voidvno_search() { intf=-1; intnum; intj; charno[20]; FILE*fp; if((fp=fopen("list.txt","r"))==NULL) { printf("文件打不开! \n"); printf("\npressentertoreturnmenu\n"); getchar(); menu(); } for(j=0;! feof(fp);j++)//读取文件 { fscanf(fp,"%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date); } num=j; fclose(fp); printf("\n请输入车牌号: "); scanf("%s",no); printf("\n罚单的信息为: \n\n"); printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n"); for(j=0;j { if(strcmp(no,list[j].vno)==0) { f=j; printf("\n%s\t%s\t%s\t%s\t%s\t%s",list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date); } } if(f<0) printf("\n没有找到该班号的记录! \n"); printf("\npressentertoreturnsubmenu\n"); getchar(); getchar(); search(); } (5)删除罚单 操作者先输入删除命令2,在按操作要求输入要删除的处罚单号码,系统浏览处罚单,找到相关信息后,在删除这张处罚信息,再把这个信息的尾地址结到下一个信息的头地址上从而达到删除此信息的作用. voiddele() { intj; intnum; intf=-1; FILE*fp1,*fp2; chars1[20]; if((fp1=fopen("list.txt","r"))==NULL) { printf("cannotopenfile\n"); printf("\npressentertoreturnmenu\n"); getchar(); getchar(); menu(); } for(j=0;! feof(fp1);j++)//读取文件 { fscanf(fp1,"%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date); } num=j; fclose(fp1); printf("请输入要删除的处罚单的编号\n"); scanf("%s",s1); for(j=0;j { if(strcmp(s1,list[j].no)==0) { f=j; if(f { for(j=f;j { strcpy(list[j].vno,list[j+1].vno); strcpy(list[j].dname,list[j+1].dname); strcpy(list[j].pname,list[j+1].pname); strcpy(list[j].pno,list[j+1].pno); strcpy(list[j].no,list[j+1].no); strcpy(list[j].date,list[j].date); } } if((fp2=fopen("list.txt","w"))==NULL) { printf("文件打不开! \n"); printf("\npressentertoreturnmenu\n"); getchar(); menu(); } for(j=0;j { fprintf(fp2,"\n%s\t%s\t%s\t%s\t%s\t%s",list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date); } fclose(fp2); printf("\n删除成功! \n"); printf("\npressentertoreturnmenu\n"); getchar(); getchar(); menu(); } } if(f<0) { printf("\n没有找到该学号的记录: \n"); printf("\npressentertoreturnmenu\n"); getchar(); getchar(); menu(); } } (6)统计 此操作会首先提示操作者输入查询的起始时间和结束时间.判断.如是第一个时间大于第二个时间,相应会提示“输入错误”,若输入正确,会提示继续输入待查司机姓名.给i赋初值0.每循环查找到一个记录就给i的值加1.最后在显示屏上显示出i的值.如果查找此段时间内没有该司机罚单信息,则打印“目前还没有该处罚单。 voidcount() { intf=-1; intnum;//所有罚单单数 intj; inttotal=0;//某驾驶员的罚单数 charname[20]; chartime1[20]; chartime2[20]; FILE*fp; if((fp=fopen("list.txt","r"))==NULL) { printf("文件打不开! \n"); printf("\npressentertoreturnmenu\n"); getchar(); menu(); } for(j=0;! feof(fp);j++)//读取文件 { fscanf(fp,"%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date); } num=j; fclose(fp); printf("\n请根据提示输入驾驶员的姓名和一个时间段,统计某个驾驶员在某段时间内的处罚单数目和罚单号\n"); printf("\n\n请输入驾驶员的姓名: "); scanf("%s",name); printf("\n请输入一个较早的时间: "); scanf("%s",time1); printf("\n请输入一个最近的时间: "); scanf("%s",time2); for(j=0;j { if((strcmp(list[j].dname,name)==0)&&(strcmp(list[j].date,time1)>=0)&&(strcmp(list[j].date,time2)<=0)) { f=j; total++; printf("\n罚单号: %s\n",list[j].no); } } if(f<0) printf("\n没有找到记录! \n"); printf("\n罚单总数为: %d\n",total); printf("\npressentertoreturnmenu\n"); getchar(); getchar(); menu(); } (7)浏览模块 在这个模块里,输入命名3后,程序会将已经存在的所有处罚单信息都在屏幕上显示出来: voidbrowse() { intj; intnum; FILE*fp; if((fp=fopen("list.txt","r"))==NULL) { printf("cannotopenfile\n"); printf("\npressentertoreturnmenu\n"); getchar(); getchar(); menu(); } for(j=0;! feof(fp);j++)//读取文件 { fscanf(fp,"%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date); } fclose(fp); num=j; printf("\n已添加%d条记录\n\n",num); printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n"); for(j=0;j { printf("\n%s\t%s\t%s\t%s\t%s\t%s",list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date); } printf("\npressentertoreturnmenu\n"); getchar(); getchar(); menu(); } (8)退出模块: 在这个模块里,输入命令6后,若程序发现文件里有处罚信息,会相应的保存该信息,然后退出程序,若没有信息,则会提示“不能打开文件! ”,然后退出程序。 五,实现结果: 1,数据源 (1)处罚单号01车牌号码000001司机姓名zhao警察姓名peng交警号11处罚日期20110825 (2)处罚单号02车牌号码000002司机姓名zhang警察姓名peng交警号11处罚日期20110825 (3)处罚单号03车牌号码000003司机姓名li警察姓名peng交警号11处罚日期20110825 (4)处罚单号04车牌号码000004司机姓名wang警察姓名chen交警号22处罚日期20110826 (5)处罚单号05车牌号码000005司机姓名刘liu警察姓名chen交警号22处罚日期20110826 2,运行结果 (1)主菜单函数 (2)输入处罚信息 (3)信息浏览 (4)信息的查找方式 (5)按车牌号查询 (6)按驾驶员姓名查询 (7)按开单交警姓名查询 (8)删除处罚单模块 (9)数据统计模块 六,总结: 通过这八天的上机实习,编写并运行C语言程序,让我对C语言又有了进一步的认识并巩固了以前所学的知识,在编写C程序的过程中,我得到了老师和同学耐心的指导和帮助,很多问题都是在老师和同学的帮助下才解决的,没有你们的帮助我不可能顺利的完成此次编程,谢谢你们。 以前对C的概念比较模糊,但是在这次实习中我发现了C在生产生活中有着广泛的应用,比如我这次编写的交通交通处罚单管理系统,还有其他同学编写的一些程序等等。 在实际交通管理中运用此类程序会节省大量的体力和脑力劳动。 而且使得交通管理比较容易,避免了以往的那种繁琐的人力劳动。 准确率也会大幅度上升,不会造成因为人为失误造成不必要的麻烦。 通过该实例的设计分析,我初步掌握了模块化设计方法,理解和运用结构化程设计的思想和方法。 学会了用流程图表示算法,掌握和提高了利用C语言进行程序设计的能力。 在各方面都得到了提高。 更重要的是这次实习让我了解到了我的不足,该如何让自己的编程能力得到提高,在今后的学习生活里我会多多的上机编程,让自己能力得到进一步的提高。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通处 罚单 管理 系统 390430459 doc