【交通+物流+运输】交通处罚单管理系统

  • 格式:doc
  • 大小:63.00 KB
  • 文档页数:21

C语言设计实习报告

工程学院土木工程052097班

姓名: 彭文博

班号: 052097

学号:

题目:交通处罚单管理系统

指导老师: 梁老师

日期: 6

一,题目要求:

【要求】:交通处罚单涉及到车辆,驾驶员和开单交警的信息,还有交通处罚单的号码,处罚时间等信息。

【功能】:(1)要求可以输入,删除,浏览交通处罚单信息。

(2)可以按车辆,驾驶员和开单交警查询。

(3)统计某时间段某个驾驶员的交通处罚数目及交通处罚单号码。

二,需求分析:

交通处罚单信息用文件存储,提供文件的输

输出操作;要求可以输入,输出,删除,浏览交通处罚单信息,因而要提供输入,删除和显示操作;要实现按车辆,驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。

三,总体设计:

整个管理系统被设计为信息输入模块,信息删除模块,信息浏览模块,信息查询模块,信息统计模块。

四,详细设计及实现:

1,处罚单管理系统界面函数

此函数包括的功能是建立新的罚单,按司机姓名查询罚单并浏览相关信息,按交警姓名查询罚单并浏览相关信息,按罚单号查询罚单并浏览相关信息,删除罚单,数据统计和退出处罚单管理系统。

voidMenu()

printf("\n\t\t\t\t交通处罚单管理系统\n");

printf("········································");

printf("菜单:1-信息录入2-信息删除3-信息浏览4-信息查询5-信息统计6-退出系统\n");

printf("········································"); 查

printf("请从输入数字选择相应的功能:");2,各功能模块设计

(1)创建新的交通处罚单

处罚单包含的内容有处罚单号,车牌号,司机姓名,交警姓名,和处罚日期,因此相应的函数也应包含这些内容,在这个函数所控制的操作会依次提示输入以上内容。特别的,罚单号不能有重复,若输入的罚单号有重复,操作界面会提示罚单好重复,请重新输入。

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车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如)\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();

}(2)按司机姓名查询罚单:

先输入命令2,再输入待查找司机姓名.在这里函数会在记录在案的处罚单进行循环查找,如果有该司机的罚单记录,就会相应显示在屏幕上。如果没有该司机的处罚记录,就会打印:没有相关信息。

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();

}

(3)按交警姓名查询罚单:

先输入命令3,再输入待查找交警姓名.在这里函数会在记录在案的处罚单进行循环查找,如果有该交警所开的的罚单记录,就会相应显示在屏幕上。如果没有该交警开的处罚记录,就会打印:没有相关信息。其中

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();

}

(4)按车牌号查询罚单:

先输入命令1,再输入待查找车牌号码.在这里函数也会对记录在案的处罚单进行循环查找,如果有该车牌号记录,就会相应显示在屏幕上。如果没有该车牌号的处罚信息,就会打印:没有相关信息。

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)