语言程序设计之交通处罚单管理系统
【信息查询模块程序】
void search() {
int n; int r; do {
system(\
printf(\请选择查询类型:\\n\\t1-按车牌号 2-按驾驶员姓名3:按开单
交警姓名 4-返回主菜单\\n\ printf(\请输入数字选择:\ scanf(\ if(n<1||n>4) {
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(); } }
(1)按车牌号查询
系统首先进行检查,如果要打开的文件不存在,则会进行提示。如果能打开,则将文件中的内容读入系统中以备查询。当用户输入车牌号时,系统将依次将从文件中读入的处罚单中的车牌号信息与用户录入车牌号进行比对,并最终将查找到的与该车牌号有关的的所有处罚单信息打印在屏幕上。如果没有找到,则打印没有找到记录。
void vno_search() {
int f=-1; int num; int j;
char no[20]; FILE*fp;
if((fp=fopen(\
- 11 -
语言程序设计之交通处罚单管理系统
{
printf(\文件打不开!\\n\
printf(\ getchar(); menu(); }
for(j=0;!feof(fp);j++) //读取文件 {
fscanf(fp,\ame,&list[j].pno,&list[j].no,&list[j].date); } num=j;
fclose(fp);
printf(\请输入车牌号:\ scanf(\
printf(\罚单的信息为:\\n\\n\
printf(\车牌号 驾驶员姓名 交警姓名 交警编号 处罚单编号 处罚日期\\n\
for(j=0;j if(strcmp(no,list[j].vno)==0) { f=j; printf(\ist[j].pname,list[j].pno,list[j].no,list[j].date); } } if(f<0) printf(\没有找到该班号的记录!\\n\ printf(\ getchar(); getchar(); search(); } (2)按驾驶员姓名查询 系统首先进行检查,如果要打开的文件不存在,则会进行提示。如果能打开,则将文件中的内容读入系统中以备查询。当用户输入驾驶员姓名时,系统将依次将从文件中读入的处罚单中的驾驶员姓名信息与用户录入的驾驶员姓名进行比对,并最终将查找到的与驾驶员姓名有关的所有处罚单信息打印在屏幕上。如果没有找到,则打印没有找到记录。 - 12 - 语言程序设计之交通处罚单管理系统 void dna_search() { int f=-1; int num; int j; char name[20]; FILE*fp; if((fp=fopen(\ { printf(\文件打不开!\\n\ printf(\ getchar(); menu(); } for(j=0;!feof(fp);j++) //读取文件 { fscanf(fp,\ame,&list[j].pno,&list[j].no,&list[j].date); } num=j; fclose(fp); printf(\请输入驾驶员的姓名:\ scanf(\ printf(\罚单的信息为:\\n\\n\ printf(\车牌号 驾驶员姓名 交警姓名 交警编号 处罚单编号 处罚日期\\n\ for(j=0;j if(strcmp(name,list[j].dname)==0) { f=j; printf(\ist[j].pname,list[j].pno,list[j].no,list[j].date); } } if(f<0) printf(\没有找到该班号的记录!\\n\ printf(\ getchar(); getchar(); search(); } - 13 - 语言程序设计之交通处罚单管理系统 (3)按开单交警姓名查询 系统首先进行检查,如果要打开的文件不存在,则会进行提示。如果能打开,则将文件中的内容读入系统中以备查询。当用户输入开单交警姓名时,系统将依次将从文件中读入的处罚单中的开单交警姓名信息与用户录入的开单交警姓名进行比对,并最终将查找到的与开单交警姓名有关的所有处罚单信息打印在屏幕上。如果没有找到,则打印没有找到记录。 void pna_search() { int f=-1; int num; int j; char name[20]; FILE*fp; if((fp=fopen(\ { printf(\文件打不开!\\n\ printf(\ getchar(); menu(); } for(j=0;!feof(fp);j++) //读取文件 { fscanf(fp,\name,&list[j].pno,&list[j].no,&list[j].date); } num=j; fclose(fp); printf(\请输入开单交警的姓名:\ scanf(\ printf(\罚单的信息为:\\n\\n\ printf(\车牌号 驾驶员姓名 交警姓名 交警编号 处罚单编号 处罚日期\\n\ for(j=0;j if(strcmp(name,list[j].pname)==0) { f=j; printf(\ist[j].pname,list[j].pno,list[j].no,list[j].date); } } - 14 - 语言程序设计之交通处罚单管理系统 if(f<0) printf(\没有找到该班号的记录!\\n\ printf(\ getchar(); getchar(); search(); } 5、统计模块:、 【功能说明】 此操作会首先提示操作者输入驾驶员的姓名和一个时间段。判断,如是第一个时间大于第二个时间,相应会打印“没有找到记录!”,若输入正确,系统会进行一一对比,给i赋初值0。每循环查找到一个记录就给i的值加1。最后在显示屏上显示出i的值。如果查找此段时间内没有该司机罚单信息,则打印“没有找到记录!” 【统计模块流程图】 打开文件 输入需要统计的时间段和驾驶员姓名 依次查找是否有符合统计要求的处罚单信息 输出处罚单号 输出“没有找到记录” 统计找到的处罚单条数 关闭文件 选择浏览还是返回主菜单 - 15 -