交通处罚单管理系统 C语言实习报告.docx
《交通处罚单管理系统 C语言实习报告.docx》由会员分享,可在线阅读,更多相关《交通处罚单管理系统 C语言实习报告.docx(15页珍藏版)》请在冰豆网上搜索。
交通处罚单管理系统C语言实习报告
C语言课程实习报告
交通处罚单管理系统
一、题目要求
设计“交通处罚单管理系统”,交通处罚单必须涉及到车辆、驾驶员和开单交警的信息,还有交通处罚单号码、处罚时间等信息。
要求功能:
(1)可以输入、删除、浏览交通处罚单信息;
(2)可以按车辆、驾驶员和开单交警查询;(3)统计某时间段某个驾驶员的交通处罚单数目及交通处罚单号码。
二、需求分析
交通处罚单信息用文件存储,提供文件的输入输出操作;要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;要实现按车辆、驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。
三、总体设计
根据需求分析,该程序可分为以下五大模块:
四、详细设计
1.主函数
主函数一般设计得比较简洁,只提供输入、处理和输出部分的函数调用。
其中各个功能模块用菜单方式选择。
[程序]
main()/********主函数********/
{
inta,w;/**变量a保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内**/
do
{
puts("\n\n*************MENU**********\n\n");
puts("\n1.Shurudata");
puts("\n2.Shanchudata");
puts("\n3.Liulandata");
puts("\n4.Chaxundata");
puts("\n5.Tongjidata")
puts("\n\n\n\n6.Exit");
puts("\n\n\\t\t************************\n");
printf("choiceyournumber(0-5):
[]\b\b");
scanf("%d,&n);
if(n<1||n>6)
{
w=1;
getchar();
}
elsew=0;
}
while(w==1);/***选择功能***/
switch(n)
{
case1:
shuru();break;/***输入模块***/
case2:
shanchu();break;/***删除模块***/
case3:
liulan();break;/***浏览模块***/
case4:
chaxun();break;/***查询模块***/
case5:
tongji();break;/***统计模块***/
case6:
exit(0);/***退出***/
}
}
/**********************主函数************************/
main()
{
menu();
}
2、各功能模块设计
(1)输入模块
[分析]
单独看各个数据信息,开单日期以及驾驶员姓名为字符型,可以采用字符型数组;处罚单号码、车牌号码以及交警ID为整型,可以采用整型数组。
一条记录对应一张交通处罚单,方便交通部门管理。
[程序]
/****************输入模块***************/
voidshuru()/***输入模块***/
{
FILE*fp;
if((fp=fopen("data.txt","w"))==NULL)
{
printf("Cannotopenthefile\n");/**若打不开此文件则会退出输入模块**/
exit(0);
}
printf("请输入车牌号码:
\n");
scanf("%d",&dan[0].chepai);
printf("请输入驾驶员姓名:
\n");
scanf("%s",dan[0].name);
printf("请输交警ID:
\n");
scanf("%d",&dan[0].id);
printf("请输入开单日期:
\n");
scanf("%s",dan[0].time);
printf("请输入处罚单号:
\n");
scanf("%d",&dan[0].num);
if(fwrite(&dan[0],sizeof(structcfd),1,fp)!
=1)
printf("filewriteerror\n");
elseprintf("输入信息成功!
\n");
fclose(fp);
}
(2)删除模块
[分析]
该模块的功能需要删除交通处罚单信息,要根据处罚单号、车辆号码、驾驶员姓名、开单时间以及交警ID查找处罚记录并删除。
[程序]
/*************************删除模块*******************/
voidshanchu()
{
inti,w,v,c;
FILE*fp;
printf("请输入要删除的处罚单号:
");
scanf("%d",&w);
fp=fopen("data.txt","rb");
for(i=0;i<1000;i++)
{
if(fread(&dan[i],sizeof(structcfd),1,fp)!
=1)break;
}
v=i;
for(i=0;i{
if(w==dan[i].num)
c=i;
}
fclose(fp);
fp=fopen("data.txt","wb");
for(i=0;i{
if(i!
=c)
fwrite(&dan[i],sizeof(structcfd),1,fp);
}
fclose(fp);
}
(3)浏览模块
[分析]
该模块的功能是显示所有的处罚信息。
[程序]
/******************浏览(全部)模块*****************/
voidliulan()
{
inti;
FILE*fp;
fp=fopen("data.txt","rb");
for(i=0;i<1000;i++)
{
if(fread(&dan[i],sizeof(structcfd),1,fp)==1)
{
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");
}
elsebreak;
}
fclose(fp);
}
(4)查询模块
[分析]
该模块的功能是根据输入的处罚单号、车辆号码、驾驶员姓名、开单时间以及交警ID查找相应的记录,方便驾驶员了解自己的处罚情况。
[程序]
voidchaxun()
{
inti,w,x,flag;
FILE*fp;
charv[8];
printf("请输入你想查询的信息:
\n");
printf("1-按车牌号查询\n");/******查询方式*****/
printf("2-按司机姓名查询\n");
printf("3-按警察ID查询\n");
scanf("%d",&x);
if(x==3)
{
flag=0;
printf("请输入要查询的警察ID:
");
scanf("%d",&w);
fp=fopen("data.txt","rb");
for(i=0;i<1000;i++)
{
if(fread(&dan[i],sizeof(structcfd),1,fp)!
=1)break;
if(dan[i].id==w)
{
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);
}
elseif(x==2)
{
flag=0;
printf("请输入要查询的司机姓名:
");
scanf("%s",v);
fp=fopen("data.txt","rb");
for(i=0;i<1000;i++)
{
if(fread(&dan[i],sizeof(structcfd),1,fp)!
=1)break;
if(strcmp(dan[i].name,v)==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);
}
elseif(x==1)
{
flag=0;
printf("请输入要查询的处罚单号:
");
scanf("%d",&w);
fp=fopen("data.txt","rb");
for(i=0;i<1000;i++)
{
if(fread(&dan[i],sizeof(structcfd),1,fp)!
=1)break;
if(dan[i].num==w)
{
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);
}
elseprintf("输入错误!
\n");
}
(5)统计模块
[分析]
该模块的功能是统计某时间段某个驾驶员的交通处罚单数目及交通处罚单号码,这样可以方便交通部门管理驾驶员信息,统计驾驶员的违规情况。
[程序]
voidtongji()
{
inti;
FILE*fp;
fp=fopen("data.txt","rb");
for(i=0;i<1000;i++)
{
if(fread(&dan[i],sizeof(structcfd),1,fp)!
=1)break;
}
printf("共有%d张处罚单!
具体信息请看浏览。
\n",i);
fclose(fp);
}
五、上机操作
下面是各个模块的界面图。
(1)主菜单函数:
(2)输入模块
在主界面出现后输入1并按ENTER键,如图。
输入要输入的记录数,然后逐条增加,如图
(3)删除模块
(4)浏览模块
(5)查询模块
(6)统计模块
五、总结
本学期的C语言程序是一门需要实践的课程,通过一段时间学习理论知识的内容之后,我们迫切的需要一个动手实践的机会。
通过该实例的学习,我初步掌握了开发一个小型实用系统的基本方法,进一步掌握和提高利用C语言进行程序设计的能力。