完整版C语言交通处罚单管理系统Word文档下载推荐.docx
《完整版C语言交通处罚单管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《完整版C语言交通处罚单管理系统Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
二、问题分析
(一)需求分析
1.交通处罚单信息用文件储存,提供文件的输入输出操作;
2.要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;
3.要车辆、驾驶员和开单交警查询,则要提供查找操作;
4.另外提供系统操作和键盘式选择菜单以实现功能选择。
(二)该问题可以分为以下几个模块
三、程序流程图
【信息输入模块】
N
Y
YN
【删除罚单模块】
【信息查询模块】
输入驾驶员姓名
四、程序代码
#include<
stdio.h>
string.h>
stdlib.h>
#defineN100
structPlist//处罚单
{
charvno[20];
//车牌号
chardname[20];
//驾驶员姓名
charpname[20];
//交警姓名
charpno[20];
//交警编号
charno[20];
//处罚单编号
chardate[20];
//处罚日期
}list[N];
//处罚单数组
voidinput();
//输入模块
voiddele();
//删除模块
voidbrowse();
//浏览模块
voidsearch();
//查询模块
voidcount();
//统计模块
voidmenu();
//主菜单
voidvno_search();
//按车牌号查询
voiddna_search();
//按驾驶员姓名查询
voidpna_search();
//按开单交警姓名查询
main()
menu();
getchar();
}
voidmenu()
intn;
intr;
do
{
system("
cls"
);
printf("
\n\t\t\t\t交通处罚单管理系统\n"
·
"
菜单:
1-信息录入2-信息删除3-信息浏览4-信息查询5-信息统计6-退出系统\n"
请从输入数字选择相应的功能:
scanf("
%d"
&
n);
if(n<
1||n>
6)
r=1;
getchar();
}
elser=0;
}while(r==1);
switch(n)
case1:
input();
break;
case2:
dele();
case3:
browse();
case4:
search();
case5:
count();
case6:
exit(0);
}
voidinput()
FILE*fp;
intnum;
inti,j;
if((fp=fopen("
list.txt"
"
r+"
))==NULL)
w"
文件打开或创建失败!
\n"
printf("
\npressentertoreturnmenu\n"
menu();
\n请输入处罚单数量:
i);
\n\n"
for(j=0;
j<
i;
j++)
输入第%d张处罚单的:
j+1);
\n车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如20110601)\n"
\n注意:
中间用空格隔开!
%s%s%s%s%s%s"
list[j].vno,&
list[j].dname,&
list[j].pname,&
list[j].pno,&
list[j].no,&
list[j].date);
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);
\n保存成功!
!
feof(fp);
j++)//读取文件
fscanf(fp,"
num=j+i;
if(num>
N)
\n结构体数组数的N太小,请先修改N的值\n"
\n车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如20110601)\n"
voiddele()
{
intj;
intf=-1;
FILE*fp1,*fp2;
chars1[20];
if((fp1=fopen("
r"
cannotopenfile\n"
feof(fp1);
fscanf(fp1,"
num=j;
fclose(fp1);
请输入要删除的处罚单的编号\n"
%s"
s1);
num;
if(strcmp(s1,list[j].no)==0)
f=j;
if(f<
num-1)
{
for(j=f;
num-1;
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("
文件打不开!
for(j=0;
j++)//保存文件
fprintf(fp2,"
}
fclose(fp2);
\n删除成功!
if(f<
0)
\n没有找到该学号的记录:
voidbrowse()
\n已添加%d条记录\n\n"
num);
车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n"
j++)//输出
voidsearch()
\n请选择查询类型:
\n\t1-按车牌号2-按驾驶员姓名3:
按开单交警姓名4-返回主菜单\n"
\n请输入数字选择:
4)
vno_search();
case2:
dna_search();
case3:
pna_search();
case4:
menu();
voidvno_search()
\n请输入车牌号:
no);
\n罚单的信息为:
if(strcmp(no,list[j].vno)==0)
\n没有找到该班号的记录!
\npressentertoreturnsubmenu\n"
search();
voiddna_search()
charname[20];
\n请输入驾驶员的姓名:
name);
if(strcmp(name,list[j].dname)==0)
voidpna_search()
\n请输入开单交警的姓名:
if(strcmp(name,list[j].pname)==0)
voidcount()
//所有罚单单数
inttotal=0;
//某驾驶员的罚单数
chartime1[20];
chartime2[20];
\n请根据提示输入驾驶员的姓名和一个时间段,统计某个驾驶员在某段时间内的处罚单数目和罚单号\n"
\n\n请输入驾驶员的姓名:
\n请输入一个较早的时间:
time1);
\n请输入一个最近的时间:
time2);
if((strcmp(list[j].date,time1)>
=0)&
&
(strcmp(list[j].date,time2)<
=0))
total++;
\n罚单号:
%s\n"
list[j].no);
\n没有找到记录!
\n罚单总数为:
%d\n"
total);
五、运行结果(截图)
程序主界面:
信息录入:
信息录入后查看到的结果
【信息查询】
【查询结果】
【信息统计结果】
【选择信息删除模块后的结果】
六、课程设计过程问题讨论