C语言程序设计之交通处罚单管理系统报告材料内含代码.docx
《C语言程序设计之交通处罚单管理系统报告材料内含代码.docx》由会员分享,可在线阅读,更多相关《C语言程序设计之交通处罚单管理系统报告材料内含代码.docx(22页珍藏版)》请在冰豆网上搜索。
C语言程序设计之交通处罚单管理系统报告材料内含代码
C语言程序设计
姓名:
张强强
学号:
20121003695
班序号:
011121
前言:
C语言是近年来国内得到迅速推广使用的一种计算机语言。
C语言程序设计课程是计算机专业和信息管理专业的核心专业基础课,无论是计算机专业还是非计算器专业的学生,学习好C语言是非常重要的。
一.交通处罚单管理
要求:
交通处罚单涉及到车辆,驾驶员和开单交警的信息,还有交通处罚单的号码,处罚时间等信息。
功能:
(1) 要求可以输入,删除,浏览交通处罚单信息。
(2)可以按车辆,驾驶员和开单交警进行查询。
(3)统计某时间段某个驾驶员的交通处罚数目及交通处罚单号码。
(一)需求分析
交通处罚单信息用文件存储,提供文件的输入输出操作;要求可以输入,输出,删除,浏览交通处罚单信息,因而要提供输入,删除和显示操作;要实现按车辆,驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。
(二)总体设计
整个管理系统被设计为信息输入模块,信息删除模块,信息浏览模块,信息查询模块和信息统计模块等。
如下图:
交通处罚单管理
信息输入
信息删除
信息浏览
信息查询
信息统计
按车辆查询
按驾驶员查询
按交警查询
(三)详细设计
1.主函数实现的是显示菜单以及函数调用,其中各功能模块用菜单方式选择。
程序:
intmain()
{
intn;/**变量n保存选择菜单数字**/
printf("\n\n")
printf("****************菜单*****************\n");
printf("**\n");
printf("*1.输入2.删除*\n");
printf("**\n");
printf("*3.浏览4.查询*\n");
printf("**\n");
Printf("*5.统计6.退出*\n");
printf("**\n");
printf("****************************************\n");
printf("请选择功能菜单:
[]\b\b");
scanf("%d",&n);
if(n<1||n>7)n=7;
switch(n)/***选择功能***/
{case1:
shuru();liulan();main();break;/***输入模块***/
case2:
shanchu();liulan();main();break;/***删除模块***/
case3:
liulan();main();break;/***浏览模块***/
case4:
chaxun();main();break;/***查询模块***/
case5:
tongji();main();break;/***统计模块***/
case6:
exit(0);break;/***退出***/
case7:
printf("error\n");
}
}
2.信息储存函数。
voidsave()
{FILE*fp;
inti;
if((fp=fopen("fadan.txt","w"))==NULL)
{printf("不能打开");return;}
for(i=0;iif(fwrite(&TPB[i],sizeof(structtranficpunishbill),1,fp)!
=1)
printf("出错");
fclose(fp);
}
3.信息读取函数。
FILE*fp;
if((fp=fopen("fadan.txt","r"))==NULL)
{
printf("不能打开");
exit(0);
}
for(i=0;ifscanf(fp,"%s%s%s%s%s",TPB[i].cp,TPB[i].jz,TPB[i].kdjj,TPB[i].cfd,TPB[i].cfsj);
fclose(fp);
4.信息从键盘输入函数。
voidshuru()
{
intj;
printf("请输入数据:
\n");
for(j=0;jscanf("%s%s%s%s%s",TPB[j].cp,TPB[j].jz,TPB[j].kdjj,
TPB[j].cfd,TPB[j].cfsj);
save();
return0;
}
5.信息显示函数。
voidliulan()
{FILE*fp;
inti,j;
if((fp=fopen("fadan.txt","r+"))==NULL)
{
printf("不能打开");
exit(0);
}
system("cls");
printf("车牌号驾照号开单交警号处罚单号处罚时间\n");
for(i=0,j=0;i{
fscanf(fp,"%s%s%s%s%s",TPB[i].cp,TPB[i].jz,TPB[i].kdjj,TPB[i].cfd,TPB[i].cfsj);
printf("%3.2s%10.2s%10.2s%12.2s%12.2s",TPB[i].cp,TPB[i].jz,TPB[i].kdjj,TPB[i].cfd,TPB[i].cfsj);
}
}
6.记录删除函数。
voidshanchu()
{FILE*fp;
inti,k,j=-1;
charm[10],d[10],f[10];
if((fp=fopen("fadan.txt","r"))==NULL)//打开文件
{
printf("不能打开");
exit(0);
}
for(i=0;ifscanf(fp,"%s%s%s%s%s",TPB[i].cp,TPB[i].jz,TPB[i].kdjj,TPB[i].cfd,TPB[i].cfsj);
fclose(fp);//关闭文件
system("cls");
printf("删除模块:
");
printf("\n\n\n");
printf("********************************************\n");
printf("**\n");
printf("**\n");
printf("**\n");
printf("*1.车牌号2.驾照号3.开单交警号*\n");
printf("**\n");
printf("**\n");
printf("**\n");
printf("********************************************\n");
printf("\n\n请输入删除选项:
");
scanf("%d",&k);
if(k==1)
{
printf("请输入车牌号:
");
scanf("%s",m);
for(i=0;iif(strcmp(m,TPB[i].cp)==0)
j=i;
}
elseif(k==2)
{
printf("请输入驾照号:
");
scanf("%s",d);
for(i=0;iif(strcmp(d,TPB[i].jz)==0)
j=i;
}
elseif(k==3)
{
printf("请输入开单交警号:
");
scanf("%s",f);
for(i=0;iif(strcmp(f,TPB[i].kdjj)==0)
j=i;
}
if(j!
=-1)//在结构体中运算
{
for(i=j;i=-1;i++)
TPB[i]=TPB[i+1];N=N-1;}
elseif(j==-1)
printf("不能打开");
if((fp=fopen("fadan.txt","w"))==NULL)/***打开文件***/
{
printf("不能打开");
exit(0);
}
for(i=0;ifclose(fp);/***关闭文件***/
}
7.信息查询函数。
voidchaxun()
{inti,k,t=0;
charm[10],d[10],f[10];
FILE*fp;
if((fp=fopen("fadan.txt","r+"))==NULL)//打开文件
{
printf("不能打开");
exit(0);
}
for(i=0;i{
fscanf(fp,"%s%s%s%s%s",TPB[i].cp,TPB[i].jz,TPB[i].kdjj,TPB[i].cfd,TPB[i].cfsj);}
fclose(fp);//关闭文件
system("cls");
printf("查询模块");
printf("\n\n\n");
printf("********************************************\n");
printf("**\n");
printf("**\n");
printf("**\n");
printf("*1.车牌号2.驾照号3.开单交警号*\n");
printf("**\n");
printf("**\n");
printf("**\n");
printf("********************************************\n");
printf("\n\n请输入查询选项:
");
scanf("%d",&k);
//system("cls");
if(k==1)
{
printf("请输入车牌号:
");
scanf("%s",&m);system("cls");
for(i=0;i{
if(strcmp(m,TPB[i].cp)==0)
{
printf("车牌号驾照号开单交警号处罚单号处罚时间\n");printf("%5s%10s%13s%11s%12s\n",TPB[i].cp,TPB[i].jz,TPB[i].kdjj,TPB[i].cfd,TPB[i].cfsj);t++;}
elseif(strcmp(d,TPB[i].jz)!
=0)printf("\n");
}
}
elseif(k==2)
{
printf("请输入驾照号:
");
scanf("%s",&d);system("cls");
for(i=0;i{
if(strcmp(d,TPB[i].jz)==0)
{
printf("车牌号驾照号开单交警号处罚单号处罚时间\n");printf("%5s%10s%13s%11s%12s\n",TPB[i].cp,TPB[i].jz,TPB[i].kdjj,TPB[i].cfd,TPB[i].cfsj);t++;}
elseif(strcmp(d,TPB[i].jz)!
=0)printf("\n");
}
}
elseif(k==3)
{
printf("请输入开单交警号:
");
scanf("%s",&f);system("cls");
for(i=0;i{
if(strcmp(f,TPB[i].kdjj)==0)
{
printf("车牌号驾照号开单交警号处罚单号处罚时间\n");printf("%5s%10s%13s%11s%12s\n",TPB[i].cp,TPB[i].jz,TPB[i].kdjj,TPB[i].cfd,TPB[i].cfsj);t++;}
elseif(strcmp(f,TPB[i].kdjj)!
=0)printf("\n");
}
}
}
8.信息统计函数。
此函数实现的功能为查询一段时间内某司机违章次数以及罚单号。
voidtongji()
{inti,k,t=0;
charm[10],d[10],f[10];
FILE*fp;
if((fp=fopen("fadan.txt","r+"))==NULL)//打开文件
{
printf("不能打开");
exit(0);
}
for(i=0;i{
fscanf(fp,"%s%s%s%s%s",TPB[i].cp,TPB[i].jz,TPB[i].kdjj,TPB[i].cfd,TPB[i].cfsj);}
fclose(fp);//关闭文件
system("cls");
printf("统计模块");
printf("\n\n\n");
printf("********************************************\n");
printf("**\n");
printf("**\n");
printf("**\n");
printf("*1.车牌号2.驾照号3.开单交警号*\n");
printf("**\n");
printf("**\n");
printf("**\n");
printf("********************************************\n");
printf("\n\n请输入统计选项:
");
scanf("%d",&k);
//system("cls");
if(k==1)
{
printf("请输入车牌号:
");
scanf("%s",&m);system("cls");
for(i=0;i{if(strcmp(m,TPB[i].cp)==0)
{printf("车牌号驾照号开单交警号处罚单号处罚时间\n");printf("%5s%10s%13s%11s%12s\n",TPB[i].cp,TPB[i].jz,TPB[i].kdjj,TPB[i].cfd,TPB[i].cfsj);t++;
}elseif(strcmp(d,TPB[i].jz)!
=0)printf("\n");
}printf("\n**********************总罚单数=%d********************\n",t);
}
elseif(k==2)
{
printf("请输入驾照号:
");
scanf("%s",&d);system("cls");
for(i=0;i{if(strcmp(d,TPB[i].jz)==0)
{printf("车牌号驾照号开单交警号处罚单号处罚时间\n");
printf("%5s%10s%13s%11s%12s\n",TPB[i].cp,TPB[i].jz,TPB[i].kdjj,TPB[i].cfd,TPB[i].cfsj);
t++;
}elseif(strcmp(f,TPB[i].kdjj)!
=0)printf("\n");
}printf("\n**********************总罚单数=%d********************\n",t);
}
elseif(k==3)
{
printf("请输入开单交警号:
");
scanf("%s",&f);system("cls");
for(i=0;i{if(strcmp(f,TPB[i].kdjj)==0)
{printf("车牌号驾照号开单交警号处罚单号处罚时间\n");
printf("%5s%10s%13s%11s%12s\n",TPB[i].cp,TPB[i].jz,TPB[i].kdjj,TPB[i].cfd,TPB[i].cfsj);
t++;
}elseif(strcmp(f,TPB[i].kdjj)!
=0)printf("\n");
}printf("\n**********************总罚单数=%d********************\n",t);
}
}
(四)上机操作
主菜单界面:
从键盘输入数据:
显示所有信息:
删除指定的记录:
删除后
查询
按车牌号查询:
查询结果:
按驾照号查询:
查询结果:
按开单交警号查询:
查询结果:
统计一段时间内某辆车违章次数以及罚单号:
统计结果:
总结:
通过C语言程序设计的上机实习,我进一步了解和运用结构化程序设计的思维方法。
C语言二级考试已在眼前了,而这次C语言实习顺利结束真正意义上为C语言二级考试打好了基础。
而且这次实习真正意义上将所学知识运用到了实际中。
在这次实习中,我也学到了动态调试等一些新知识,并且发现任何一处看似不起眼的微小错误很可能导致程序无法运行或是运行结果错误。
我在这次实习中最大的收获就是学会了分析和排除错误,而这恰恰是从书本上学不到的。
想要进一步提高C语言程序设计的水平,还需要不断的努力。