交通罚单管理系统.docx
- 文档编号:27214879
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:41
- 大小:208.32KB
交通罚单管理系统.docx
《交通罚单管理系统.docx》由会员分享,可在线阅读,更多相关《交通罚单管理系统.docx(41页珍藏版)》请在冰豆网上搜索。
交通罚单管理系统
交通罚单管理系统
交通罚单管理系统
一.系统开发的背景
为了方便单位对交通处罚的经一步解交通处罚单信息用文件存储,提供文件的输入输出操作;要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;要实现按车辆、驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。
二.系统分析与设计
(一)系统功能要求
可以录入交通罚单的信息,交通处罚单信息用文件存储,因而要提供文件的输入输出操作。
1.要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;
2.要实现按车辆、驾驶员和开单交警查询,则要提供查找操作;
3.另外提供统计操作和键盘式选择菜单以实现功能选择。
4.罚单信息(包括车牌号、驾驶员姓名、交警姓名、交警编号、罚单编号)
(二)系统模块结构设计
通过对系统功能的分析,交通罚单管理系统功能如图所示
交通罚单管理系统
信息统计模块
信息查询模块
信息浏览模块
信息录入模块
图1交通管理系统功能图
通过上图的功能分析,把整个系统划分为5个模块:
1、交通罚单信息录入,该模块主要实现:
车牌号、驾驶员姓名、交警姓名、交警编号、罚单编号的输入,用input函数实现。
2、信息删除模块,该模块主要实现信息的删除,用delet函数实现。
3、信息查询模块,该模块主要实现信息的查询﹕有车牌号查询、驾驶员查询、交警查询,共用四个函数进行查询,分别是find,
4、信息统计模块,主要实现的是罚单数量的统计,用sum函数实现。
三.系统的设计与实现
(一)罚单基本信息录入:
input()
分析:
先输出表头,然后进行罚单的信息输入,单独看各个数据信息,开单日期以及驾驶员姓名为字符型,可以采用字符型数组;处罚单号码、车牌号码以及交警ID为整型,可以采用整型数组。
一条记录对应一张交通处罚单,方便交通部门管理。
流程图如图2所示。
输入用户要输入处罚单纪录的条数。
能否打开文件
退出
依次输入处罚单信息,并保存到文件中。
j
开始
输入、关成完闭件
Y
N
图2输入函数流程图
***************************输入模块************************
程序代码:
voidinput()
{
FILE*fp;
intnum;
inti,j;
if((fp=fopen("plist.txt","r+"))==NULL)//r+为读和写而打开文本文件
{
if((fp=fopen("plist.txt","w"))==NULL)//w为读而打开文本文件
{
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车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如20101112)\n");
printf("\n注意:
中间用空格隔开!
\n");
scanf("%s%s%s%s%s%s",&plist[j].chepai,&plist[j].dname,&plist[j].pname,&plist[j].tbianhao,&list[j].fbianhao,&plist[j].date);
}
for(j=0;j
{
fprintf(fp,"\n%s\t%s\t%s\t%s\t%s\t%s",plist[j].chepai,plist[j].dname,plist[j].pname,plist[j].tbianhao,plist[j].fbianhao,plist[j].date);
}
fclose(fp);
printf("\n保存成功!
");
printf("\npressentertoreturnmenu\n");
getchar();
getchar();
menu();
}
printf("\n请输入处罚单数量:
");
scanf("%d",&i);
printf("\n\n");
for(j=0;!
feof(fp);j++)//读取文件
{
fscanf(fp,"%s%s%s%s%s%s",&plist[j].chepai,&plist[j].dname,&plist[j].pname,&plist[j].tbianhao,&plist[j].fbianhao,&plist[j].date);
}
num=j+i;
if(num>N)
{printf("\n结构体数组数的N太小,请先修改N的值\n");
printf("\npressentertoreturnmenu\n");
getchar();
getchar();
menu();
}
printf("\n");
for(j=0;j
{printf("输入第%d张处罚单的:
\n",j+1);
printf("\n车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如20101112)\n");
printf("\n注意:
中间用空格隔开!
\n");
scanf("%s%s%s%s%s%s",&plist[j].chepai,&plist[j].dname,&plist[j].pname,&plist[j].tbianhao,&plist[j].fbianhao,&plist[j].date);
}
for(j=0;j
{
fprintf(fp,"\n%s\t%s\t%s\t%s\t%s\t%s",plist[j].chepai,plist[j].dname,plist[j].pname,plist[j].tbianhao,plist[j].fbianhao,plist[j].date);
}
fclose(fp);
printf("\n保存成功!
");
printf("\npressentertoreturnmenu\n");
getchar();
getchar();
menu();
}
(二)信息删除:
delete()
分析:
该模块的功能需要删除交通处罚单信息,要根据处罚单号、车辆号码、驾驶员姓名、开单时间以及交警ID查找处罚记录并删除。
流程图如图3所示。
图3删除函数流程图
************************删除模块***************************
程序代码
voiddelet()
{
intj;
intnum;
intf=-1;
FILE*fp1,*fp2;//文件的运用
chars1[20];
if((fp1=fopen("plist.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",&plist[j].chepai,&plist[j].dname,&plist[j].pname,&plist[j].tbianhao,&plist[j].fbianhao,&plist[j].date);
}
num=j;
fclose(fp1);
printf("请输入要删除的处罚单的编号\n");
scanf("%s",s1);
for(j=0;j { if(strcmp(s1,plist[j].fbianhao)==0) { f=j; if(f { for(j=f;j { strcpy(plist[j].chepai,plist[j+1].chepai); strcpy(plist[j].dname,plist[j+1].dname); strcpy(plist[j].pname,plist[j+1].pname); strcpy(plist[j].tbianhao,plist[j+1].tbianhao); strcpy(plist[j].fbianhao,plist[j+1].fbianhao); strcpy(plist[j].date,plist[j].date); } } if((fp2=fopen("plist.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",&plist[j].chepai,&plist[j].dname,&plist[j].pname,&plist[j].tbianhao,&plist[j].fbianhao,&plist[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(); } } (三)find函数 分析: 该模块的功能是根据输入的处罚单号、车辆号码、驾驶员姓名、开单时间以及交警ID查找相应的记录,方便驾驶员了解自己的处罚情况。 流程图如图4所示。 开始 打开文件查询处罚单信息 选择查询处罚单方法 结束 输入 按车牌号 按开单警察ID 按驾驶员姓名 图4find函数流程图 ********************************查询模块************************************** 程序代码 voidfind() { intn; intr; do { system("cls");//清屏 printf("\n请选择查询类型: \n\t1-按车牌号2-按驾驶员姓名3-按开单交警姓名4-返回主菜单\n"); printf("\n请输入数字选择: "); scanf("%d",&n); if(n<1||n>4) { r=1; getchar(); } elser=0; }while(r==1); switch(n) { case1: chepaif();break; case2: dnamef();break; case3: pnamef();break; case4: menu(); } } voidchepaif() { intf=-1; intnum; intj; chara[20]; FILE*fp; if((fp=fopen("plist.txt","r"))==NULL) { printf("文件打不开! \n"); printf("\npressentertoreturnmenu\n"); getchar(); menu(); } for(j=0;! feof(fp);j++)//读取文件 { fscanf(fp,"%s%s%s%s%s%s",&plist[j].chepai,&plist[j].dname,&plist[j].pname,&plist[j].tbianhao,&plist[j].fbianhao,&plist[j].date); } num=j; fclose(fp); printf("\n请输入车牌号: "); scanf("%s",a); printf("\n罚单的信息为: \n\n"); printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n"); for(j=0;j { if(strcmp(a,plist[j].chepai)==0) { f=j; printf("\n%s\t%s\t%s\t%s\t%s\t%s",&plist[j].chepai,&plist[j].dname,&plist[j].pname,&plist[j].tbianhao,&plist[j].fbianhao,&plist[j].date); } } if(f<0) printf("\n没有找到该班号的记录! \n"); printf("\npressentertoreturnsubmenu\n"); getchar(); getchar(); find(); } voiddnamef() { intf=-1; intnum; intj; charname[20]; FILE*fp; if((fp=fopen("plist.txt","r"))==NULL) { printf("文件打不开! \n"); printf("\npressentertoreturnmenu\n"); getchar(); menu(); } for(j=0;! feof(fp);j++)//读取文件 { fscanf(fp,"%s%s%s%s%s%s",&plist[j].chepai,&plist[j].dname,&plist[j].pname,&plist[j].tbianhao,&plist[j].fbianhao,&plist[j].date); } num=j; fclose(fp); printf("\n请输入驾驶员的姓名: "); scanf("%s",name); printf("\n罚单的信息为: \n\n"); printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n"); for(j=0;j { if(strcmp(name,plist[j].dname)==0) { f=j; printf("\n%s\t%s\t%s\t%s\t%s\t%s",&plist[j].chepai,&plist[j].dname,&plist[j].pname,&plist[j].tbianhao,&plist[j].fbianhao,&plist[j].date); } } if(f<0) printf("\n没有找到该班号的记录! \n"); printf("\npressentertoreturnsubmenu\n"); getchar(); getchar(); find(); } voidpnamef() { intf=-1; intnum; intj; charname[20]; FILE*fp; if((fp=fopen("plist.txt","r"))==NULL) { printf("文件打不开! \n"); printf("\npressentertoreturnmenu\n"); getchar(); menu(); } for(j=0;! feof(fp);j++)//读取文件 { fscanf(fp,"%s%s%s%s%s%s",&plist[j].chepai,&plist[j].dname,&plist[j].pname,&plist[j].tbianhao,&plist[j].fbianhao,&plist[j].date); } num=j; fclose(fp); printf("\n请输入开单交警的姓名: "); scanf("%s",name); printf("\n罚单的信息为: \n\n"); printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n"); for(j=0;j { if(strcmp(name,plist[j].pname)==0) { f=j; printf("\n%s\t%s\t%s\t%s\t%s\t%s",&plist[j].chepai,&plist[j].dname,&plist[j].pname,&plist[j].tbianhao,&plist[j].fbianhao,&plist[j].date); } } if(f<0) printf("\n没有找到该班号的记录! \n"); printf("\npressentertoreturnsubmenu\n"); getchar(); getchar(); find(); } (四)show函数 分析: 该模块的功能是显示所有的处罚信息。 流程图如图5所示 图5show函数流程图 程序代码 voidshow() { intj; intnum; FILE*fp; if((fp=fopen("plist.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",&plist[j].chepai,&plist[j].dname,&plist[j].pname,&plist[j].tbianhao,&plist[j].fbianhao,&plist[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",&plist[j].chepai,&plist[j].dname,&plist[j].pname,&plist[j].tbianhao,&plist[j].fbianhao,&plist[j].date); } printf("\npressentertoreturnmenu\n"); getchar(); getchar(); menu(); } (五)sum函数 分析: 该模块的功能是根据输入的处罚单号、车辆号码、驾驶员姓名、开单时间以及交警ID查找相应的记录,方便驾驶员了解自己的处罚情况。 流程图如图6所示 图6sum函数流程图 *************************************统计模块**************************** 程序代码 voidsum() { intf=-1; intnum;//所有罚单单数 intj; intall=0;//某驾驶员的罚单数 charname[20]; chartime1[20]; chartime2[20]; FILE*fp; if((fp=fopen("plist.txt","r"))==NULL) { printf("文件打不开! \n");printf("\npressentertoreturnmenu\n"); getchar(); menu(); } for(j=0;! feof(fp);j++)//读取文件 { fscanf(fp,"%s%s%s%s%s%s",&plist[j].chepai,&plist[j].dname,&plist[j].pname,&plist[j].tbianhao,&plist[j].fbianhao,&plist[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(plist[j].date,time1)>=0)&&(strcmp(plist[j].date,time2)<=0)) { f=j; all++; printf("\n罚单号: %s\n",plist[j].fbianhao); } } if(f<0) printf("\n没有找到记录! \n"); printf("\n罚单总数为: %d\n",all); printf("\npressentertoreturnmenu\n"); getchar(); getchar(); menu(); } 四.系统测试 (一)测试input函数 (二)测试delet函数 (三)测试find函数 (四)测试show函数 (五)测试sum函数 五、总结 系统完成了交通罚单信息的录入、删除、查询(车牌号查询、驾驶员查询、开单交警查询),交通罚单的统计等功能。 虽然c语言复习过了,但是看书看懂了和真正的运用学到的知识写程序是完全不同的,不断的对照例题,不断的尝试与修改。 系统运行时比较死板。 程序中缺少一些警告句,例如: “是否真的删除(y/n)? ”。 由于考虑的不周全,没有设计遇到重名的情况该怎么处理。 我们设计的程序中,只设计了按名字选择,进行操作,忽略了重名的情况。 整个程序完成了,还有很多不完善的地方,希望自己以后办事的时候要认真,仔细,考虑周全。 我的收获是学会了怎样美观大方的制作一个表头,对函数调用的理解比以前更上一层楼,但对函数的定义仍存在好多问题,尤其是定义完后面括号
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通 罚单 管理 系统