【交通+物流+运输】交通处罚单管理系统
- 格式: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)