交通处罚单管理系统C语言课程设计.docx
《交通处罚单管理系统C语言课程设计.docx》由会员分享,可在线阅读,更多相关《交通处罚单管理系统C语言课程设计.docx(18页珍藏版)》请在冰豆网上搜索。
交通处罚单管理系统C语言课程设计
交通处罚单管理系统(C语言课程设计)
交通处罚单管理系统
中国地质大学(武汉)地球科学学院014072班
2010-11-26
用C语言编写一个简单的模拟交通处罚单管理系统[要求]
交通处罚单涉及到车辆、驾驶员和开单交警的信息,还有交通处罚单号码、
处罚时间等信息;
[功能]
(1)要求可以输入、删除、浏览交通处罚单信息;
(2)可以按车辆、驾驶员和开单交警查询;(3)统计某段时间某个驾驶员的交通处罚单数目及交通处罚单号;
源代码:
#include
#include
#include
#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");
printf("");
printf("菜单:
1-信息录入2-信息删除3-信息浏览4-信息查询5-信息统计6-退出
系统\n");
printf("");
printf("请从输入数字选择相应的功能:
");
scanf("%d",&n);
if(n<1||n>6)
{
r=1;
getchar();
}
elser=0;
}while(r==1);
switch(n)
{
case1:
input();break;
case2:
dele();break;
case3:
browse();break;
case4:
search();break;
case5:
count();break;
case6:
exit(0);
}
}
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车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如20101112)\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,lis
t[j].date);
}
fclose(fp);
printf("\n保存成功~");
printf("\npressentertoreturnmenu\n");
getchar();
getchar();
menu();
}
printf("\n请输入处罚单数量:
");
scanf("%d",&i);
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+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",&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();
}
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,l
ist[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();
}
}
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();
}
voidsearch()
{
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:
vno_search();break;
case2:
dna_search();break;
case3:
pna_search();break;
case4:
menu();
}
}
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();
}
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();
}
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();
}
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].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();
}