李鸳交通处罚单管理系统设计.docx
《李鸳交通处罚单管理系统设计.docx》由会员分享,可在线阅读,更多相关《李鸳交通处罚单管理系统设计.docx(45页珍藏版)》请在冰豆网上搜索。
李鸳交通处罚单管理系统设计
郑州科技学院
课程设计说明书
课程名称:
C语言课程设计
设计题目:
交通处罚单管理系统
系(院):
车辆与交通程系
专业班级:
13交通运输
姓名:
李鸳
学号:
201334025
指导教师:
成绩:
时间:
8月31日至9月13日共_2周
说明
1.课程设计进行期间,学生应按教学计划,将每天的学习情况(包括学习内容、遇到的问题及解决方法、心得体会等)如实进行记录。
2.结束时,根据课程设计内容和学习记录编写课程设计说明书。
3.指导教师应综合考虑学生的学习态度、设计质量、答辩情况等,给出评语和成绩。
课程设计成绩评定表
评定项目
内容
满分
评分
总分
学习态度
学习认真,态度端正,遵守纪律。
10
设计情况
认真查阅资料,勤学好问,独立思考,分析解决问题的能力较强。
40
说明书质量
设计方案正确、表达清楚;设计思路、实验(论证)方法科学合理;工作量等达到课程设计任务书规定的要求;图、表、文字表达准确规范,内容完善。
40
答辩情况
回答问题准确,基本概念清楚,有理有据,有一定深度。
10
总成绩
采用五级分制;优、良、中、及格、不及格。
90分以上为优秀;80-89为良好;70-79为中等;60-69为及格;60分以下为不及格。
指导教师评语:
签名:
年月日
郑州科技学院
C语言课程设计
设计(论文)题目:
交通处罚单管理系统
所在院:
车辆与交通程系
专业班级:
13交通运输
学生姓名:
李鸳
学号:
201334025
指导教师:
2015年9月13日
郑州科技学院
课程设计(论文)任务书
设计题目:
交通处罚单管理系统
专业班级:
13交通运输
学号201334025姓名李鸳
按照内容要求,设计完整的交通处罚单管理系统。
要求调试通过,不存在漏洞,方便用户操作。
功能的实现上力求容错能力要强且提示信息完备。
完成期限:
2015年9月13日
指导教师签名:
评审小组负责人签名:
目录
第一部分引言…………………………………………………………7
1.1开发背景………………………………………………………………7
1.2可行性分析…………………………………………………………7
第二部分需求分析……………………………………………………7
2.1设计要求………………………………………………………………7
2.2设计目的………………………………………………………………7
2.3功能实现………………………………………………………………8
第三部分总体设计…………………………………………………9
3.1设计思想……………………………………………………………9
3.2设计基本概念………………………………………………………9
3.3处理流程……………………………………………………………10
3.4总体结构……………………………………………………………10
3.5功能分配……………………………………………………………10
3.6主要模块……………………………………………………………10
3.6.1输入模块…………………………………………………10
第四部分核心代码实现…………………………………………14
4.1插入模块代码设计……………………………………………14
4.2查询模块代码设计……………………………………………14
第五部分测试分析…………………………………………………24
5.1插入模块测试……………………………………………………24
5.2查询模块测试……………………………………………………26
第六部分课程设计总结…………………………………………29
参考文献……………………………………………………………………30
一.引言
1.1开发前景
随着我国科技发展,交通系统日益重要,对于交通违规的管理力度也大大加强。
如何能方便快捷的统计信息显得越发重要。
1.2可行性分析
该系统只需能将信息录入,存储,修改,删除即可,和其他小程序并无太大冲突,能够顺利的设计出蛇鹤的程序。
二.需求分析
2.1设计要求
交通处罚单信息用文件存储,因而要提供文件的输入输出操作;要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;要实现按车辆、驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键CharpoliceNo[10];//开单交警号码
CharbillNo[20];//处罚单号码
Chartime[12];//处罚时间(yyyymmddhhmm,年月日时分)
}TPB;
2.2设计目的
(1)主函数提示用户选择功能:
输入删除浏览查询统计
(2)信息输入模块
把处罚单信息写入处罚单信息文件。
(3)信息删除模块
输入处罚单号码,然后在处罚单信息文件中查找该条处罚单,删除之。
具体删除操作:
打开该文件,从文件中读一条记录,判断是否要删除,如果是,则舍弃;否则重新写入文件,读下一条记录。
(4)信息浏览模块
读处罚单信息文件,输出记录。
(5)信息查询模块
通过菜单选择查询字段:
车辆驾驶员开单交警,分别按照车牌号、驾照号、开单交警号采用基本的查找算法查找交通处罚单信息文件,如果找到相应得记录则输出处罚单信息,否则输出“您所查找的信息不存在!
”。
(6)信息统计模块
提示输入驾驶员的驾照号和时间段。
设置一个计数器,初始化为0。
采用基本算法查找交通处罚单信息文件,比较驾照号,如果驾照号匹配,再看处罚单时间是否出于查询时间段内,如果是,则计数器加1,并输出该处罚单号。
文件查找结束后,输出计数器的值。
盘式选择菜单以实现功能选择。
2.3功能实现`
1、总体设计
整个管理系统被设计为信息输入模块、信息删除模块、信息浏览模块、信息查询模块和信息统计模块。
2、详细设计
数据结构采用结构体,设计交通处罚单结构体:
StructTranficPunishBill
{
CharcarNo[10];//车牌号
ChardriverNo[20];//驾照号
三.总体设计
3.1设计思想
交通处罚单信息用文件存储,提供文件的输输出操作;要求可以输入,输出,删除,浏览交通处罚单信息,因而要提供输入,删除和显示操作;要实现按车辆,驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。
3.2设计基本概念
整个管理系统被设计为信息输入模块,信息删除模块,信息浏览模块,信息查询模块,信息统计模块。
3.3处理流程
程图]
3.4总体结构
3.6主要模块
3.6.1输入模块
3·[删除模块流程图]
4·[查询模块流程图]
5·[统计模块流程图]
6·
[一个任务结束时是选择浏览还是返回的函数的流程图]
1、主函数
[主函数流程图]
[主函数程序]
menu()/*主界面*/
{
intn,w;/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*/
do
{
printf("\t\t\t欢迎来到交通处罚单管理系统!
\n\n");
printf("\t\t*******************MENU*******************\n\n");
printf("\t\t\t\t1.信息输入\n");
printf("\t\t\t\t2.信息删除\n");
printf("\t\t\t\t3.信息浏览\n");
printf("\t\t\t\t4.信息查询\n");
printf("\t\t\t\t5.信息统计\n");
printf("\t\t\t\t6.退出\n");
puts("\n\n\t\t********************************************\n");
printf("\t\t请输入您的操作(1-6):
[]\b\b");
scanf("%d",&n);
if(n<1||n>6)/*对选择的数字作判断*/
{
w=1;
getchar();
}
else
w=0;
}
while(w==1);/*选择功能*/
switch(n)
{
case1:
shuru();break;
case2:
shanchu();break;
case3:
liulan();break;
case4:
chaxun();break;
case5:
tongji();break;
case6:
exit(0);
}
return(n);
}
voidmain()/*主函数*/
{
menu();
}
2、各功能模块设计
(1)、输入模块
[数据结构]
采用结构体的形式,把处罚单的处罚单号、车牌号码、驾驶员姓名、开单警察ID、处罚时间作为结构体成员,用结构体数组的形式存放若干条处罚单信息。
structfandan
{
intnum;/*处罚单号码*/
intchepai;/*车牌号码*/
charname[8];/*驾驶员名字*/
intid;/*开单警察的信息ID*/
chartime[11];/*处罚时间为年月日排列*/
}dan[N];/*dan[500]中每个数组元素对应一个处罚单信息*/
[注意]
dan[N]中的N为处罚单条数,本程序采用宏定义#defineN500。
[输入模块流程图]
[输入模块程序]
voidshuru()/*输入模块*/
{
inti,j;
FILE*fp;
if((fp=fopen("data.txt","w"))==NULL)
{
printf("无法打开文件!
\n");
exit(0);
}
printf("\n你要输入多少条处罚单信息:
");
scanf("%d",&j);
for(i=0;i{
printf("\n请依次输入罚单信息:
\n");
printf("\n罚单号车牌号驾驶员姓名警察ID处罚时间\n");
scanf("%3d%5d%8s%5d%11s",&dan[i].num,&dan[i].chepai,&dan[i].name,&dan[i].id,&dan[i].time);
fprintf(fp,"\n%3d%5d%8s%5d%11s",dan[i].num,dan[i].chepai,dan[i].name,dan[i].id,dan[i].time);
/*输入罚单信息*/
printf("输入信息成功!
\n");
}
fclose(fp);
printf_back();
}
(2)、删除模块
[删除模块流程图]
[删除模块程序]
voidshanchu()/*删除模块*/
{
inti,j,m,n;
FILE*fp;
printf("请输入要删除的处罚单号:
");
scanf("%d",&j);
fp=fopen("data.txt","r");
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%3d%5d%8s%5d%11s",&dan[i].num,&dan[i].chepai,&dan[i].name,&dan[i].id,&dan[i].time);
}
m=i;/*统计出文件中罚单总数*/
for(i=0;i{
if(j==dan[i].num)
n=i;
}
fclose(fp);
fp=fopen("data.txt","w");
for(i=0;i{
if(i!
=n)
{
fprintf(fp,"\n%3d%5d%8s%5d%11s",dan[i].num,dan[i].chepai,dan[i].name,dan[i].id,dan[i].time);
/*把不要求删除的罚单信息在文件中输入*/
}
}
fclose(fp);
printf_back();
}
(3)、浏览模块
[需求分析]
该模块的功能是显示文件中所有的处罚但记录信息。
[浏览模块流程图]
[浏览模块程序]
voidliulan()/*浏览模块*/
{
inti;
FILE*fp;
fp=fopen("data.txt","r");
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%3d%5d%8s%5d%11s",&dan[i].num,&dan[i].chepai,&dan[i].name,&dan[i].id,&dan[i].time);
printf("------------------------------\n");
printf("处罚单号:
%d\n",dan[i].num);
printf("车牌号码:
%d\n",dan[i].chepai);
printf("驾驶员姓名:
%s\n",dan[i].name);
printf("开单警察ID:
%d\n",dan[i].id);
printf("处罚时间:
%s\n",dan[i].time);
printf("------------------------------\n");/*逐条输出文件信息*/
}
fclose(fp);
printf_back();
}
(4)、查询模块
[需求分析]
该模块的功能是可以实现按车辆、驾驶员和开单交警查询。
[查询模块流程图]
[查询模块程序]
voidchaxun()/*查询模块*/
{
inti,j,x,flag=0;
FILE*fp;
charm[8];
printf("请输入您想查询的信息:
\n");
printf("1_按车牌号查询\n");
printf("2_按驾驶员姓名查询\n");
printf("3_按开单警察ID查询\n");
scanf("%d",&x);
if(x==1)
{
printf("请输入您要查询的车牌号:
\n");
scanf("%d",&j);
fp=fopen("data.txt","r");
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%3d%5d%8s%5d%11s",&dan[i].num,&dan[i].chepai,&dan[i].name,&dan[i].id,&dan[i].time);
if(dan[i].chepai==j)
{
printf("处罚单号:
%d\n",dan[i].num);
printf("车牌号码:
%d\n",dan[i].chepai);
printf("驾驶员姓名:
");puts(dan[i].name);
printf("开单警察ID:
%d\n",dan[i].id);
printf("处罚时间:
");puts(dan[i].time);
printf("--------------------------\n");
flag=1;
break;
}
}
if(flag==0)
printf("找不到此罚单信息!
\n");
fclose(fp);
printf_back();
}
elseif(x==2)
{
printf("请输入您要查询的驾驶员姓名:
");
scanf("%s",m);
fp=fopen("data.txt","r");
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%3d%5d%8s%5d%11s",&dan[i].num,&dan[i].chepai,&dan[i].name,&dan[i].id,&dan[i].time);
if(strcmp(dan[i].name,m)==0)
{
printf("处罚单号:
%d\n",dan[i].num);
printf("车牌号码:
%d\n",dan[i].chepai);
printf("驾驶员姓名:
");puts(dan[i].name);
printf("开单警察ID:
%d\n",dan[i].id);
printf("处罚时间:
");puts(dan[i].time);
printf("-------------------------\n");
flag=1;
break;
}
}
if(flag==0)
printf("找不到此罚单信息!
\n");
fclose(fp);
printf_back();
}
elseif(x==3)
{
printf("请输入您要查询的开单警察ID:
");
scanf("%d",&j);
fp=fopen("data.txt","r");
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%3d%5d%8s%5d%11s",&dan[i].num,&dan[i].chepai,&dan[i].name,&dan[i].id,&dan[i].time);
if(dan[i].id==j)
{
printf("处罚单号:
%d\n",dan[i].num);
printf("车牌号码:
%d\n",dan[i].chepai);
printf("驾驶员姓名:
");puts(dan[i].name);
printf("开单警察ID:
%d\n",dan[i].id);
printf("处罚时间:
");puts(dan[i].time);
printf("-------------------------\n");
flag=1;
break;
}
}
if(flag==0)
printf("找不到此处罚单信息!
\n");
fclose(fp);
printf_back();
}
else
{printf("输入错误!
\n");
printf_back();
}
}
(5)、统计模块
[需求分析]
该模块的功能是可以实现统计某时间段某个驾驶员的交通处罚单数目及交通处罚单号码。
[统计模块流程图]
3、公共函数
一个任务结束时是选择浏览还是返回的函数:
[一个任务结束时是选择浏览还是返回的函数的流程图]
[一个任务结束时是选择浏览还是返回的函数的程序]
voidprintf_back()/*一个任务结束时是选择浏览还是返回主界面*/
{
voidliulan();
intw;
printf("\nWhatdoyouwanttodo?
\n\n\t
(1).浏览\t
(2).返回主界面[]\b\b");
scanf("%d",&w);
if(w==1)
liulan();
else
menu();
}
四.核心代码实现
#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");
get