C语言实习报告 交通处罚单管理系统_交通处罚单管理系统
C语言实习报告 交通处罚单管理系统由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“交通处罚单管理系统”。
中国地质大学
C语言课程设计
综合实习报告
题
目:交通处罚单管理系统
姓 名: 高冀芸 学 号: 20091004500 院
系: 资源学院 专 业: 资源勘查工程 班 号: 021091-08 指导教师: 童恒建
2011 年 1 月
目录
交通处罚单管理系统
------------------------3 设计思路-------------------------3 运行结果-------------------------18 源程序-------------------------22 学习所思所得
----------------------25
交通处罚单管理系统
1.题目要求
用C语言编写一个简单的模拟交通处罚单管理系统 [要求] 交通处罚单涉及到车辆、驾驶员和开单交警的信息,还有交通处罚单号码、处罚时间等信息; [功能] 1 2 3 要求可以输入、删除、浏览交通处罚单信息; 可以按车辆、驾驶员和开单交警查询;
统计某段时间某个驾驶员的交通处罚单数目及交通处罚单号;
2.需求分析
交通处罚单信息用文件储存,提供文件的输入输出操作;要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;要求现按车辆、驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。
3.总体设计
整个管理系统被设计为信息输入模块、信息删除模块、信息浏览模块、信息查询模块、信息统计模块等。
4.详细设计
1主函数
主函数显示“交通处罚单管理系统”的主页面,其中各功能模块用菜单方式选择。其流程图如图所示。
[程序] main(){ menu();
getchar();}
void menu(){
int n;
int r;/*变量n保存选择菜单选择数字,r判断输入的数字是否在功能菜单对应的数字范围内*/
do
{
system(“cls”);
printf(“ntttt交通处罚单管理系统n”);
printf(“········································”);
printf(“ 菜单: 1-信息录入 2-信息删除 3-信息浏览 4-信息查询 5-信息统计 6-退出系统n”);
printf(“········································”);
printf(“请从输入数字选择相应的功能:”);
scanf(“%d”,&n);
if(n6)
/*对选择的数字进行判断*/
{
r=1;
getchar();
}
else r=0;}while(r==1);
/*选择功能*/ switch(n){
case 1:input();break;
/*输入模块*/
case 2:dele();break;
/*删除模块*/
case 3:browse();break;
/*浏览模块*/
case 4:search();break;
/*查询模块*/
case 5:count();break;
/*统计模块*/
case 6:exit(0);
/*退出*/ } }
2.各功能模块设计
(1)输入模块
【数据结构】
在这里,可以把处罚单涉及到的车辆、驾驶员和开单交警,处罚单号码、处罚时间作为结构体成员,要存放的处罚单信息就用结构体数组,整体的数据结构就比较完整、清晰,后续的信息处理及浏览
将更加方便。单独看各种信息可采用字符窜数组进行记录。
结构体数组;struct Plist
//处罚单 {
char vno[20];
//车牌号
char dname[20];
//驾驶员姓名 char pname[20];
//交警姓名 char pno[20];
//交警编号 char no[20];
//处罚单编号 char date[20];
//处罚日期 }
list[N];
//处罚单数组
说明:其中list[N]中的N为处罚单数量,程序中采用宏定义的方式,可随时在源程序宏定义中修改,本程序宏定义#define N 50。
输入模块程序流程图如下所示。
程序:
程序中涉及到文件的处理,要新建一个文件夹,将输入的信息保存进文件夹void input(){
FILE*fp;
int num;
int i,j;
if((fp=fopen(“list.txt”,“r+”))==NULL)
{
if((fp=fopen(“list.txt”,“w”))==NULL)
{
printf(“文件打开或创建失败!n”);
printf(“npre enter to return menun”);
getchar();
menu();
}
printf(“n请输入处罚单数量:”);
scanf(“%d”,&i);
printf(“nn”);
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%st%st%st%st%st%s”,list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);/*开辟存储空间,将信息输入到指针指向的位置*/
}
fclose(fp);
/*关闭文件*/
printf(“n保存成功!”);
printf(“npre enter to return menun”);
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(“npre enter to return menun”);
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%st%st%st%st%st%s”,list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);
}
fclose(fp);
printf(“n保存成功!”);
printf(“npre enter to return menun”);
getchar();
getchar();
menu();}
(2)删除模块
该模块删除多余信息,需要先以只读的形式打开,可以以其中一个信息输入内容确定需删除的信息,本程序输入处罚单的编号,根据编号删除记录。删除记录时,将数据从文件中删除,删除位置后面的记录往前移。该模块的流程图如下。
程序: void dele(){
int j;
int num;
int f=-1;
FILE*fp1,*fp2;
char s1[20];
if((fp1=fopen(“list.txt”,“r”))==NULL)
{
printf(“can not open filen”);
printf(“npre enter to return menun”);
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(“npre enter to return menun”);
getchar();
menu();
}
for(j=0;j
//保存文件
{
fprintf(fp2,“n%st%st%st%st%st%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(“npre enter to return menun”);
getchar();
getchar();
menu();
}
}
if(f
{
printf(“n没有找到该学号的记录:n”);
printf(“npre enter to return menun”);
getchar();
getchar();
menu();
} }(3).浏览模块
该功能时显示删除某些信息后处罚单上的所有记录。这部分显示处罚单的数量,再打开文件,按结构体数组的形式输出所有信息即可。其程序如下所示。程序: void browse(){
int j;
int num;
FILE*fp;
if((fp=fopen(“list.txt”,“r”))==NULL)
{
printf(“can not open filen”);
printf(“npre enter to return menun”);
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条记录nn”,num);
printf(“车牌号
驾驶员姓名 交警姓名 交警编号 处罚单编号 处罚日期n”);
for(j=0;j
//输出
{
printf(“n%st%st%st%st%st%s”,list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);
}
printf(“npre enter to return menun”);
getchar();
getchar();
menu();(4).查询模块
该模块有三个查询类型可供选择,可选择以车牌号、驾驶员姓名、开单交警姓名三种方式来查询,这些都将以菜单的形式选择,所以有一个主菜单和各个分模块。同样查询模块也必须先打开文件夹。
菜单流程图如下。
分模块的流程图基本相同,现以按车牌号查询为例,编写其流程图。
菜单程序: void search(){
int n;
int r;
do {
system(“cls”);
printf(“n请选择查询类型:nt1-按车牌号 2-按驾驶员姓名3:按开单交警姓名 4-返回主菜单n”);
printf(“n请输入数字选择:”);
scanf(“%d”,&n);
if(n4)
{
r=1;
getchar();
}
else r=0;}while(r==1);switch(n){
case 1:vno_search();break;
case 2:dna_search();break;
case 3:pna_search();break;
case 4:menu();
}
}
各分模块程序: 按车牌号查询
void vno_search()
/*按车牌号查询*/
{
int f=-1;
int num;
int j;
char no[20];
FILE*fp;
if((fp=fopen(“list.txt”,“r”))==NULL)
{
printf(“文件打不开!n”);
printf(“npre enter to return menun”);
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罚单的信息为:nn”);
printf(“车牌号
驾驶员姓名 交警姓名 交警编号 处罚单编号 处罚日期n”);
for(j=0;j
{
if(strcmp(no,list[j].vno)==0)
{
f=j;
printf(“n%st%st%st%st%st%s”,list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);
}
}
if(f
printf(“n没有找到该车牌号的记录!n”);
printf(“npre enter to return sub menun”);
getchar();
getchar();
search();}
按驾驶员姓名查询
void dna_search()
/*按驾驶员姓名查询*/ {
int f=-1;
int num;
int j;
char name[20];
FILE*fp;
if((fp=fopen(“list.txt”,“r”))==NULL)
{
printf(“文件打不开!n”);
printf(“npre enter to return menun”);
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罚单的信息为:nn”);
printf(“车牌号
驾驶员姓名 交警姓名 交警编号 处罚单编号 处罚日期n”);
for(j=0;j
{
if(strcmp(name,list[j].dname)==0)
{
f=j;
printf(“n%st%st%st%st%st%s”,list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);
}
}
if(f
printf(“n没有找到该驾驶员的记录!n”);
printf(“npre enter to return sub menun”);
getchar();
getchar();
search();}
按开单交警姓名查询
void pna_search()
/*按开单交警姓名查询*/ {
int f=-1;
int num;
int j;
char name[20];
FILE*fp;
if((fp=fopen(“list.txt”,“r”))==NULL)
{
printf(“文件打不开!n”);
printf(“npre enter to return menun”);
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罚单的信息为:nn”);
printf(“车牌号
驾驶员姓名 交警姓名 交警编号 处罚单编号 处罚日期n”);
for(j=0;j
{
if(strcmp(name,list[j].pname)==0)
{
f=j;
printf(“n%st%st%st%st%st%s”,list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);
}
}
if(f
printf(“n没有找到该开单交警的记录!n”);
printf(“npre enter to return sub menun”);
getchar();
getchar();
search();}
5.统计模块
该模块先输入驾驶员的姓名和一个时间段,就可以统计某个驾驶员在某段时间内的处罚单数目和处罚单号。
程序为: void count(){
int f=-1;
int num;
//所有罚单单数
int j;
int total=0;//某驾驶员的罚单数
char name[20];
char time1[20];
char time2[20];
FILE*fp;
if((fp=fopen(“list.txt”,“r”))==NULL)
{
printf(“文件打不开!n”);
printf(“npre enter to return menun”);
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(“nn请输入驾驶员的姓名:”);
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)
{
f=j;
total++;
printf(“n罚单号:%sn”,list[j].no);
}
}
if(f
printf(“n没有找到记录!n”);
printf(“n罚单总数为:%dn”,total);
printf(“npre enter to return menun”);
getchar();
getchar();
menu();}
5.运行结果
将程序运行出来后,会的到各模块的界面图。1 主菜单函数:
效果如图所示
输入相应的数字即可运行相应的模块。
输入模块,下图为输入和保存的信息。
删除模块 信息浏览模块 信息查询模块主菜单
信息查询模块:按车牌号查询 统计模块
6.整体程序
源代码:
#include #include #include #define N 100
struct Plist
//处罚单 {
char vno[20];
//车牌号
char dname[20];
//驾驶员姓名
char pname[20];
//交警姓名
char pno[20];
//交警编号
char no[20];
//处罚单编号
char date[20];
//处罚日期 } list[N];
//处罚单数组
void input();//输入模块 void dele();//删除模块 void browse();//浏览模块 void search();//查询模块 void count();
//统计模块 void menu();
//主菜单
void vno_search();
//按车牌号查询
void dna_search();
//按驾驶员姓名查询 void pna_search();
//按开单交警姓名查询 main(){ menu();getchar();}
void menu(){
int n;
int r;
do
{
system(“cls”);
printf(“ntttt交通处罚单管理系统n”);
printf(“········································”);
printf(“ 菜单: 1-信息录入 2-信息删除 3-信息浏览 4-信息查询 5-信息统计 6-退出系统n”);
printf(“········································”);
printf(“请从输入数字选择相应的功能:”);
scanf(“%d”,&n);
if(n6)
{
r=1;
getchar();
}
else r=0;}while(r==1);switch(n){
case 1:input();break;
case 2:dele();break;
case 3:browse();break;
case 4:search();break;
case 5:count();break;
case 6:exit(0);} }
void input(){
FILE*fp;
int num;
int i,j;
if((fp=fopen(“list.txt”,“r+”))==NULL)
{
if((fp=fopen(“list.txt”,“w”))==NULL)
{
printf(“文件打开或创建失败!n”);
printf(“npre enter to return menun”);
getchar();
menu();
}
printf(“n请输入处罚单数量:”);
scanf(“%d”,&i);
printf(“nn”);
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%st%st%st%st%st%s”,list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);
}
fclose(fp);
printf(“n保存成功!”);
printf(“npre enter to return menun”);
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(“npre enter to return menun”);
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%st%st%st%st%st%s”,list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);
}
fclose(fp);
printf(“n保存成功!”);
printf(“npre enter to return menun”);
getchar();
getchar();
menu();}
void dele(){
int j;
int num;
int f=-1;
FILE*fp1,*fp2;
char s1[20];
if((fp1=fopen(“list.txt”,“r”))==NULL)
{
printf(“can not open filen”);
printf(“npre enter to return menun”);
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(“npre enter to return menun”);
getchar();
menu();
}
for(j=0;j
//保存文件
{
fprintf(fp2,“n%st%st%st%st%st%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(“npre enter to return menun”);
getchar();
getchar();
menu();
}
}
if(f
{
printf(“n没有找到该处罚单的记录:n”);
printf(“npre enter to return menun”);
getchar();
getchar();
menu();
} }
void browse(){
int j;
int num;
FILE*fp;
if((fp=fopen(“list.txt”,“r”))==NULL)
{
printf(“can not open filen”);
printf(“npre enter to return menun”);
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条记录nn”,num);
printf(“车牌号
驾驶员姓名 交警姓名 交警编号 处罚单编号 处罚日期n”);
for(j=0;j
//输出
{
printf(“n%st%st%st%st%st%s”,list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);
}
printf(“npre enter to return menun”);
getchar();
getchar();
menu();}
void search(){
int n;
int r;
do {
system(“cls”);
printf(“n请选择查询类型:nt1-按车牌号 2-按驾驶员姓名3:按开单交警姓名 4-返回主菜单n”);
printf(“n请输入数字选择:”);
scanf(“%d”,&n);
if(n4)
{
r=1;
getchar();
}
else r=0;}while(r==1);switch(n){
case 1:vno_search();break;
case 2:dna_search();break;
case 3:pna_search();break;
case 4:menu();
}
}
void vno_search(){
int f=-1;
int num;
int j;
char no[20];
FILE*fp;
if((fp=fopen(“list.txt”,“r”))==NULL)
{
printf(“文件打不开!n”);
printf(“npre enter to return menun”);
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罚单的信息为:nn”);
printf(“车牌号
驾驶员姓名 交警姓名 交警编号 处罚单编号 处罚日期n”);
for(j=0;j
{
if(strcmp(no,list[j].vno)==0)
{
f=j;
printf(“n%st%st%st%st%st%s”,list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);
}
}
if(f
printf(“n没有找到该车牌号的记录!n”);
printf(“npre enter to return sub menun”);
getchar();
getchar();
search();}
void dna_search(){
int f=-1;
int num;
int j;
char name[20];
FILE*fp;
if((fp=fopen(“list.txt”,“r”))==NULL)
{
printf(“文件打不开!n”);
printf(“npre enter to return menun”);
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罚单的信息为:nn”);
printf(“车牌号
驾驶员姓名 交警姓名 交警编号 处罚单编号 处罚日期n”);
for(j=0;j
{
if(strcmp(name,list[j].dname)==0)
{
f=j;
printf(“n%st%st%st%st%st%s”,list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);
}
}
if(f
printf(“n没有找到该驾驶员的记录!n”);
printf(“npre enter to return sub menun”);
getchar();
getchar();
search();}
void pna_search(){
int f=-1;
int num;
int j;
char name[20];
FILE*fp;
if((fp=fopen(“list.txt”,“r”))==NULL)
{
printf(“文件打不开!n”);
printf(“npre enter to return menun”);
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罚单的信息为:nn”);
printf(“车牌号
驾驶员姓名 交警姓名 交警编号 处罚单编号 处罚日期n”);
for(j=0;j
{
if(strcmp(name,list[j].pname)==0)
{
f=j;
printf(“n%st%st%st%st%st%s”,list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);
}
}
if(f
printf(“n没有找到该开单交警的记录!n”);
printf(“npre enter to return sub menun”);
getchar();
getchar();
search();}
void count(){
int f=-1;
int num;
//所有罚单单数
int j;
int total=0;//某驾驶员的罚单数
char name[20];
char time1[20];
char time2[20];
FILE*fp;
if((fp=fopen(“list.txt”,“r”))==NULL)
{
printf(“文件打不开!n”);
printf(“npre enter to return menun”);
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(“nn请输入驾驶员的姓名:”);
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)
{
f=j;
total++;
printf(“n罚单号:%sn”,list[j].no);
}
}
if(f
printf(“n没有找到记录!n”);
printf(“n罚单总数为:%dn”,total);
printf(“npre enter to return menun”);
getchar();
getchar();
menu();}