交通罚单管理系统方案.docx
《交通罚单管理系统方案.docx》由会员分享,可在线阅读,更多相关《交通罚单管理系统方案.docx(34页珍藏版)》请在冰豆网上搜索。
交通罚单管理系统方案
一.系统开发的背景.2
二.系统分析与设计.2
(一)系统功能要求.2
(二)系统模块结构设计.2
三.系统的设计与实现3
(一)罚单基本信息录入:
input().3
(二)信息删除:
delete()6
(三)find函数9
(四)show函数13
(五)sum函数14
四.系统测试16
(一)测试input函数16
(二)测试delet函数17
(三)测试find函数18
(四)测试show函数18
(五)测试sum函数19
五、总结20
六、附件(代码、部分图表)21
交通罚单管理系统
一.系统开发的背景
为了方便单位对交通处罚的经一步解交通处罚单信息用文件存储,提供文件的输入输出操作;要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;要实现按车辆、驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。
二.系统分析与设计
(一)系统功能要求
可以录入交通罚单的信息,交通处罚单信息用文件存储,因而要提供文件的输入输出操作。
1.要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;
2.要实现按车辆、驾驶员和开单交警查询,则要提供查找操作;
3.另外提供统计操作和键盘式选择菜单以实现功能选择。
4.罚单信息(包括车牌号、驾驶员、交警、交警编号、罚单编号)
(二)系统模块结构设计
通过对系统功能的分析,交通罚单管理系统功能如图所示
交通罚单管理系统
图1交通管理系统功能图
通过上图的功能分析,把整个系统划分为5个模块:
1、交通罚单信息录入,该模块主要实现:
车牌号、驾驶员、交警、交警编号、罚单编号的输入,用input函数实现。
2、信息删除模块,该模块主要实现信息的删除,用delet
函数实现。
3、信息查询模块,该模块主要实现信息的查询:
有车牌号查询、驾驶员查询、交警查询,共用四个函数进行查询,分别是find,
4、信息统计模块,主要实现的是罚单数量的统计,用sum
函数实现。
三.系统的设计与实现
(一)罚单基本信息录入:
input()
分析:
先输出表头,然后进行罚单的信息输入,单独看各个数据信息,
开单日期以及驾驶员为字符型,可以采用字符型数组;处罚单、车牌
以及交警ID为整型,可以采用整型数组。
一条记录对应一交通处罚
单,方便交通部门管理。
流程图如图2所示
开始
输入用户要输入处罚单纪录的条数。
退出
依次输入处罚单信息,并保存到文件中
输入、关成完闭件
图2输入函数流程图
***************************
程序代码:
voidinput()
{
FILE*fp;
intnum;
inti,j;
if((fp=fopen("plist.txt","r+"))==NULL)
〃r+为读和写而打开文本文件
{
if((fp=fopen("plist.txt","w"))==NULL)
读而打开文本文件
{
printf(”文件打开或创建失败!
\n");
printf("\npressentertoreturnmenu\n");getchar();
menu();
}
printf("\n请输入处罚单数量:
");
scanf("%d",&i);
输入模块
************************
〃w
printf("\n\n");
for(j=0;j
{
printf(”输入第%4处罚单的:
\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("输入第%4处罚单的:
\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"))==NU
{
删除函数流程图
^删除模^块***************************
文件的运用
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所示
图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();
}
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();
}
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].pn
ame,&plist[j].tbianhao,&plist[j].fbianhao,&plist[j].date);
}
}
if(f<0)
printf("\n没有找到该班号的记录!
\n");
printf("\npressentertoreturnsubmenu\n”);
getchar();
getchar();
find();
}
5所示
(四)show函数
分析:
该模块的功能是显示所有的处罚信息。
流程图如图程序代码
图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();
}
(5)sum函数分析:
该模块的功能是根据输入的处罚单号、车辆、驾驶员、开单时间以及交警ID查找相应的记录,方便驾驶员了解自己的处罚情况。
流程图如图6所示
(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函数
交通罚单管理系统
请输入处罚单数量泊
注意冲间用空整隔幵?
裁456虎哥程化4532G109356320130630
保存咸功!
pi-G苗昏右。
rctwrnmenu
(二)测试delet函数
"I'■.3eblig该兰™单.eKe"
交通罚单管理系统
录ffill杳律条自S自3自4自「自4亠二巳=巳一0_0一・艮一
12345&
悴选捋您要进行的眾奔〔用序号代替)例.1〔信息录入)
冷输入要册II除的处罚单的编号
*!
1除成功!
bres^uintui'toreturnmenu.
■1"IADetxjgA^uSwiM^e
幘选j?
■查询类型:
|-按车牌号-按驾驶員姓名4按开单交警姓名4-返回主菜单
*输入数字选择汽
+青输入车牌号=23*32
”单的信息为;
£牌号莺驶员姓名交警姓名交警编号处罚单编号处罚