交通处罚单管理程序课程设计报告.docx
《交通处罚单管理程序课程设计报告.docx》由会员分享,可在线阅读,更多相关《交通处罚单管理程序课程设计报告.docx(16页珍藏版)》请在冰豆网上搜索。
交通处罚单管理程序课程设计报告
C语言课程设计报告
题目:
交通处罚单管理程序
学号:
224
姓名:
专业:
学
指导老师:
二零一三五月
一、程序功能:
一、用结构体数组结构实现简单的交通处罚单管理功能。
具体功能:
(1)、可以输入、删除、显示、修改某个驾驶员的交通处罚单信息;
(2)、可以按驾驶员查询交通处罚单。
二、题目分析:
先建立主菜单,程序执行时,循环显示。
让用户在Giveyourchoice:
处输入选项,按回车后,即按列表执行相应功能。
然后,分别写出具有相应功能的函数。
三、设计心得:
通过课程设计,发现因细节掌握不好,出现了很多莫名其妙的问题。
可谓是,一着不慎,满盘皆输。
比如,做“将记录写入到文件”这个函数时,我忘了在程序结束时释放文件指针fp,竟导致写入失败。
待写入的records.txt被创建了,但里面却总是一片空白。
我来回检查多遍,耗时颇多,无意间加上了fclose(fp),问题才迎刃而解。
简言之,在做C语言时要仔细,注重细节,因为电脑实在太笨了,只是一堆机器。
再次是加深对各种算法的熟悉程度。
另外,在做课程设计的时候让我认识到要多与他人交流,要多问,要多想多探讨,只有这样才能让自己不断前进。
四、函数调用关系图:
输入“1”
调用
intInput(TraffictrafList[],intn)
输入“2”
调用
voidDisplay(TraffictrafList[],intn)
输入“3”
调用
intDelete_a_record(TraffictrafList[],intn)
intDelete(TraffictrafList[],intn,char*name)
调用
输入“4”
调用
voidSort_by_Name(TraffictrafList[],intn)
输入“5”
调用
intInsert_a_record(TraffictrafList[],intn)
调用
intInsert(TraffictrafList[],intn,Traffics)
输入“6”
调用
voidQuery_a_record(TraffictrafList[],intn)
intQuery(TraffictrafList[],intn,char*name)
调用
输入“7”
调用
intAddfromText(TraffictrafList[],intn,char*filename)
输入“8”
调用
voidWritetoText(TraffictrafList[],intn,char*filename)
(各函数的功能见程序中注释。
)
五、待测试数据:
ZhuangQi88DongGua0000032013224
DaPangzi37XiaoHua0000042013214
AiQiyi98XiaoMin0000052013413
六、程序要使用的data.txt:
2
WangXiao95DingFei0000012013123
LiuLin87CaiMing0000022013123
七、部分较复杂函数流程图
删除信息
插入信息
源码
#include
#include
#include
#include
#defineNUM10
typedefstruct{
chardriver[10];/*司机姓名*/
intcar;/*驾驶的车牌号*/
charpolice[10];/*开罚单的交警姓名*/
intnum;/*罚单编号*/
intyear;/*开罚单的年*/
intmonth;/*开罚单的月*/
intdate;/*开罚单的日*/
}Traffic;
intmenu_select();
intInput(TraffictrafList[],intn);
voidDisplay(TraffictrafList[],intn);
intDelete_a_record(TraffictrafList[],intn);
voidSort_by_Name(TraffictrafList[],intn);
intInsert_a_record(TraffictrafList[],intn);
voidQuery_a_record(TraffictrafList[],intn);
intAddfromText(TraffictrafList[],intn,char*filename);
voidWritetoText(TraffictrafList[],intn,char*filename);
voidmain()
{
TraffictrafList[NUM];
intn=0;
FILE*fp;inti;
fp=fopen("records.txt","r");
if(fp==NULL)
{
printf("打开文件失败!
请重试!
\n");
exit
(1);
}
fprintf(fp,"%d",n);
printf("%d",n);
for(i=0;i<1;i++)
{
fprintf(fp,"%s\t\t",trafList[i].driver);
fprintf(fp,"%d\t",trafList[i].car);
fprintf(fp,"%s",trafList[i].police);
fprintf(fp,"%d\t",trafList[i].num);
fprintf(fp,"%d\t",trafList[i].year);
fprintf(fp,"%d\t",trafList[i].month);
fprintf(fp,"%d\n",trafList[i].date);
}
for(;;)
{
switch(menu_select())
{
case1:
n=Input(trafList,n);
system("pause");
break;
case2:
Display(trafList,n);
system("pause");
break;
case3:
n=Delete_a_record(trafList,n);
system("pause");
break;
case4:
Sort_by_Name(trafList,n);
system("pause");
break;
case5:
n=Insert_a_record(trafList,n);
system("pause");
break;
case6:
Query_a_record(trafList,n);
system("pause");
break;
case7:
n=AddfromText(trafList,n,"data.txt");
system("pause");
break;
case8:
WritetoText(trafList,n,"records.txt");
system("pause");
break;
case0:
printf("Goodbye\n");
system("pause");
exit(0);
}
}
}
intmenu_select()
{
charc;
do
{
system("cls");
printf("1.Inputrecords\n");
printf("2.Displayallrecords\n");
printf("3.Deletearecord\n");
printf("4.Sort\n");
printf("5.Insertarecord\n");
printf("6.Query\n");
printf("7.AddrecordsfromaTextFile\n");
printf("8.WritetoaTextFile\n");
printf("0.Quit\n");
printf("Giveyourchoice(0-8):
");
c=getchar();
}while(c<'0'||c>'8');
returnc-'0';
}
intInput(TraffictrafList[],intn)
{
charch;
printf("继续吗?
y:
yes,n:
no\n");
getchar();
ch=getchar();
while(ch=='y'||ch=='Y')
{
printf("请输入司机姓名:
");
scanf("%s",trafList[n].driver);
printf("请输入车牌号:
");
scanf("%d",&trafList[n].car);
printf("请输入警察:
");
scanf("%s",trafList[n].police);
printf("请输入罚单编号:
");
scanf("%d",&trafList[n].num);
printf("请输入开罚单年份:
");
scanf("%d",&trafList[n].year);
printf("请输入开罚单月份:
");
scanf("%d",&trafList[n].month);
printf("请输入开罚单的日:
");
scanf("%d",&trafList[n].date);
printf("goon?
y:
yes,n:
no\n");
getchar();
ch=getchar();
n++;
}
returnn;
}
voidDisplay(TraffictrafList[],intn)
{
inti;
for(i=0;i{
printf("司机姓名:
%s\t车牌号:
%d\t警察:
%s\t罚单编号:
%d\t开罚单年份:
%d\t开罚单月份:
%d\t开罚单的日:
%d\n",trafList[i].driver,trafList[i].car,trafList[i].police,trafList[i].num,trafList[i].year,trafList[i].month,trafList[i].date);
//if(i%10==0)system("pause");
}
}
intDelete(TraffictrafList[],intn,char*name)
{
inti,j;
for(i=0;i{
if(strcmp(trafList[i].driver,name)==0)
{
for(j=i;jtrafList[j]=trafList[j+1];
}
}
n--;
returnn;
}
intDelete_a_record(TraffictrafList[],intn)
{
chars[10];
charzq;
printf("请输入待删者姓名:
\n");
scanf("%s",s);
printf("您真要删除姓名为%s的记录吗?
Y/N\n",s);
scanf("%s",&zq);
//zq=getchar();
if(zq=='Y'||zq=='y')
{
n=Delete(trafList,n,s);
printf("您已成功删除姓名为%s的记录\n",s);
}
returnn;
}
//(4)
voidSort_by_Name(TraffictrafList[],intn)
{
inti,j,p;
Trafficzq;
//printf("N=%d\n",n);
for(i=0;i{
p=i;
for(j=i+1;jif(strcmp(trafList[j].driver,trafList[p].driver)<0)p=j;
if(p!
=i)
{
zq=trafList[p];trafList[p]=trafList[i];trafList[i]=zq;
}
}
}
//5
intInsert(TraffictrafList[],intn,Traffics)
{
inti,j;
for(i=0;i{//printf("%d",n);
if(strcmp(s.driver,trafList[i].driver)<0)
{
for(j=n;j>0;j--)
trafList[j]=trafList[j-1];
trafList[i]=s;
break;
}
}
if(i==n)trafList[n]=s;
n++;
returnn;
}
//5
intInsert_a_record(TraffictrafList[],intn)
{
Trafficzq;
printf("请输入待插入司机姓名:
\n");
scanf("%s",zq.driver);
printf("请输入车牌号:
\n");
scanf("%d",&zq.car);
printf("请输入警察姓名:
\n");
scanf("%s",zq.police);
printf("请输入罚单编号:
\n");
scanf("%d",&zq.num);
printf("请输入开罚单年份:
\n");
scanf("%d",&zq.year);
printf("请输入开罚单月份:
\n");
scanf("%d",&zq.month);
printf("请输入开罚单日:
\n");
scanf("%d",&zq.date);
n=Insert(trafList,n,zq);
printf("该记录已经插入成功!
:
\n");
returnn;
}
//6
intQuery(TraffictrafList[],intn,char*name)
{
inti;
for(i=0;i{
if(strcmp(trafList[i].driver,name)==0)
returni;
}
if(i==n)return-1;
}
voidQuery_a_record(TraffictrafList[],intn)
{
inta;
charzq[10];
printf("请输入待查找者的姓名:
\n");
scanf("%s",zq);
a=Query(trafList,n,zq);
if(a!
=-1)
{
printf("查找成功!
该司机罚单信息如下:
\n");
printf("司机姓名:
%s\t\t车牌号:
%d\t警察:
%s\t罚单编号:
%d\t年份:
%d\t月份:
%d\t日:
%d\n",trafList[a].driver,trafList[a].car,trafList[a].police,trafList[a].num,trafList[a].year,trafList[a].month,trafList[a].date);
}
elseprintf("查找失败!
可能无此人记录!
\n");
}
intAddfromText(TraffictrafList[],intn,char*filename)
{
FILE*fp;Trafficzq[NUM];intz,i;
if((fp=fopen(filename,"r"))==NULL)
{
printf("打开文件失败!
请重试!
\n");
exit
(1);
}
fscanf(fp,"%d",&z);
//printf("z=%d\n",z);
for(i=0;i{
fscanf(fp,"%s",zq[i].driver);
fscanf(fp,"%d",&zq[i].car);
fscanf(fp,"%s",zq[i].police);
fscanf(fp,"%d",&zq[i].num);
fscanf(fp,"%d",&zq[i].year);
fscanf(fp,"%d",&zq[i].month);
fscanf(fp,"%d",&zq[i].date);
}
/*for(i=0;i{
printf("司机姓名:
%s\t车牌号:
%d\t警察:
%s\t罚单编号:
%d\t开罚单年份:
%d\t开罚单月份:
%d\t开罚单的日:
%d\n",zq[i].driver,zq[i].car,zq[i].police,zq[i].num,zq[i].year,zq[i].month,zq[i].date);
}*/
for(i=0;i//trafList[n]=zq[i];
Insert(trafList,n,zq[i]);
returnn;
}
voidWritetoText(TraffictrafList[],intn,char*filename)
{
FILE*fp;inti;
fp=fopen("records.txt","w");
if(fp==NULL)
{
printf("打开文件失败!
请重试!
\n");
exit
(1);
}
fprintf(fp,"%d\n",n);
for(i=0;i{
fprintf(fp,"%s",trafList[i].driver);
fprintf(fp,"%d\t",trafList[i].car);
fprintf(fp,"%s",trafList[i].police);
fprintf(fp,"%d\t",trafList[i].num);
fprintf(fp,"%d\t",trafList[i].year);
fprintf(fp,"%d\t",trafList[i].month);
fprintf(fp,"%d\n",trafList[i].date);
}
fclose(fp);
}