C语言课程设计报告交通处罚单管理程序Word文档下载推荐.docx
- 文档编号:17438635
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:20
- 大小:26KB
C语言课程设计报告交通处罚单管理程序Word文档下载推荐.docx
《C语言课程设计报告交通处罚单管理程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告交通处罚单管理程序Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。
输出插入成功信息。
(6)Query(查找并显示一个记录)
输入驾驶员姓名,查找包含该驾驶员名字的记录,并显示该驾驶员的所有罚单信息。
。
(7)AddRecordsfromaTextfile(从正文文件添加数据到结构体数组中)
用户可提前建立一个正文文件data.txt,存放多个带加入的记录。
提示输入正文的文件名,然后从该文件中一次性加入多条处罚单记录。
文件data.txt格式如下:
2
//表示带添加的记录数//
WangXiao
95
DingFei0000012013
1
23
LiuLin
87
CaiMing0000022013
24
(8)WritetoaTextfile
将数组中的全部记录写入文件records.txt,要求文件格式和data.txt相同。
(0)Quit(退出交通处罚单管理程序)
二、主要问题及解决方法
在写程序中遇到的问题是:
开始时无法正确完成“确认后再继续”的问题再后来写附加程序对数组自动扩充有些疑惑。
面对遇到的问题查阅资料和书籍,一步步的调试,解决了很多问题。
对不熟悉的函数不断摸索,试用直到熟练运用,有些语句想不出来就借助流程图去构造。
对程序的优化,熟练运用语句,能力的提高让我解决了不少困难
心得体会:
完成之后程序运行时会出现数组输出不正确的现象,不得不对每个函数进行单步调试,解决了很多问题之后,发现编程有时候会犯一些很低级的错误,要认真检查,不遗漏一处语句。
有时绞尽脑汁想出一堆语句,其实一两句就能完成。
程序优化真的很重要,仍需不断探索前行。
三、算法实现
InputRecord
Displayallrecord
Deletearecord
Deletearecord
Sort
Insertarecord
Insertarecord
Query
Queryarecord
Addfromtext
WritetoText
Quit
四、源程序及注释
#include<
stdio.h>
stdlib.h>
ctype.h>
string.h>
typedefstruct
//定义一个结构体类型structTraffic//
{
chardriver[10];
//司机姓名//
intcar;
//驾驶的车牌号//
charpolice[10];
//开罚单的交警姓名//
intnum;
//罚单编号//
intyear;
//开罚单的年//
intmonth;
//开罚单的月//
intdate;
//开罚单的日//
}Traffic;
//对所有调用函数进行声明//
intmenu_select();
//菜单//
intInput(TraffictrafList[],intn);
//函数1//
voidDisplay(TraffictrafList[],intn);
//函数2//
intDelete(TraffictrafList[],intn,char*name);
//函数3//
intDelete_a_record(TraffictrafList[],intn);
voidsort_by_name(TraffictrafList[],intn);
//函数4//
intInsert(TraffictrafList[],intn,Traffic*s);
//函数5//
intInsert_a_record(TraffictrafList[],intn);
intQuery(TraffictrafList[],intn,Traffic*name);
//函数6//
voidQuery_a_record(TraffictrafList[],intn);
intAddfromText(TraffictrafList[],intn,char*filename);
//函数7//
voidWritetoText(TraffictrafList[],intn,char*filename);
//函数8//
voidmain()
staticintn=0;
//定义一静态整型变量n//
TraffictrafList[1000];
charfilename1[20],filename2[]="
records.txt"
;
for(;
)
switch(menu_select())//调用menuselect函数输出菜单//
{
case1:
//输入1调用InputRecord函数//
system("
cls"
);
printf("
InputRecord\n"
n=Input(trafList,n);
pause"
break;
case2:
//输入2调用Displayallrecord函数//
Displayallrecord\n"
Display(trafList,n);
case3:
//输入3调用Deletearecord函数//
Deletearecord\n"
n=Delete_a_record(trafList,n);
system("
case4:
//输入4调用Sort函数//
Sort\n"
sort_by_name(trafList,n);
case5:
//输入5调用Insertarecord函数//
Insertarecord\n"
n=Insert_a_record(trafList,n);
case6:
//输入6调用Query函数//
Query\n"
Query_a_record(trafList,n);
case7:
//输入7调用AddrecordsfromaTextfile函数//
AddrecordsfromaTextfile\n"
printf("
请输入正文文件的文件名\n"
//此处输入文件名进行整批输入//
scanf("
%s"
filename1);
n=AddfromText(trafList,n,filename1);
case8:
//输入8调用WritetoaTextFile函数//
WritetoaTextFile\n"
WritetoText(trafList,n,filename2);
case0:
//输入0调用Quit函数//
Quit!
\n"
exit(0);
}
intmenu_select()
charc;
do{
1.InputRecord\n"
2.Displayallrecord\n"
3.Deletearecord\n"
4.Sort\n"
5.Insertarecord\n"
6.Query\n"
7.AddrecordsfromaTextfile\n"
8.WritetoaTextfile\n"
0.Quit!
Giveyourchoice(0-8):
"
c=getchar();
//菜单栏选择命令//
}while(c<
'
0'
||c>
8'
return(c-'
intInput(TraffictrafList[],intn)
chark,i;
%s%d%s%d%d%d%d"
trafList[n].driver,&
trafList[n].car,trafList[n].police,&
trafList[n].num,&
trafList[n].year,&
trafList[n].month,&
trafList[n].date);
确认是否输入下一条记录YorN\n"
%c"
&
i);
//两次scanf消除最上面scanf输入影响//
k);
n++;
if(k=='
y'
||k=='
Y'
输入:
n=Input(trafList,n);
}
//从键盘输入数据存到数组traflist中//
else
return(n);
returnn;
voidDisplay(TraffictrafList[],intn)
inti;
chark;
for(i=0;
i<
n;
i++)
if((i+1)%10==0)
%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);
//每显示10条数据,换下一屏//
//将数组数据输出到显示器//
intDelete(TraffictrafList[],intn,char*name)
inti,j;
if(!
strcmp(name,trafList[i].driver))
{
//删除姓名为name的记录//
for(j=i;
j<
n-1;
j++)
trafList[j]=trafList[j+1];
n-=1;
intDelete_a_record(TraffictrafList[],intn)
charname[20];
intc;
请输入待删除者姓名\n"
name);
请再次确认是否删除,确认请按1\n"
%d"
c);
//确认后删除,返回记录数//
if(c==1)
n=Delete(trafList,n,name);
删除成功\n"
voidsort_by_name(TraffictrafList[],intn)
inti,j,p;
Traffict;
i++)
//选择法排序,按姓名升序排序//
p=i;
for(j=i+1;
if(strcmp(trafList[j].driver,trafList[p].driver)<
0)p=j;
if(p!
=i)
{t=trafList[p];
trafList[p]=trafList[i];
trafList[i]=t;
intInsert(TraffictrafList[],intn,Traffic*s)
trafList[n]=*s;
n+=1;
//插入这组数据,并排序//
intInsert_a_record(TraffictrafList[],intn)
Traffics;
请输入信息\n"
//输入数据//
s.driver,&
s.car,s.police,&
s.num,&
s.year,&
s.month,&
s.date);
n=Insert(trafList,n,&
s);
intQuery(TraffictrafList[],intn,char*name)
strcmp(name,trafList[i].driver))
return(i);
//查找姓名为name的记录//
if(i==n)return(-1);
voidQuery_a_record(TraffictrafList[],intn)
intk;
请输入待查找人的姓名\n"
k=Query(trafList,n,name);
//输出查找后信息//
if(k==-1)
无此罚单\n"
if(k!
=-1)
查找成功,该司机处罚单如下:
trafList[k].driver,trafList[k].car,trafList[k].police,trafList[k].num,trafList[k].year,trafList[k].month,trafList[k].date);
intAddfromText(TraffictrafList[],intn,char*filename)
file*fp1;
inti,k;
if((fp1=fopen(filename,"
r"
))==NULL)
Cannotopen%s\n"
filename);
//判断正文文件是否存在//
fscanf(fp1,"
for(i=1;
=k;
{fscanf(fp1,"
//将文件里的信息存入数组trafList//
fclose(fp1);
voidWritetoText(TraffictrafList[],intn,char*filename)
file*fp;
if((fp=fopen(filename,"
w"
cannotopenrecords.txt!
exit
(1);
fprintf(fp,"
driver
car
police
num
year
month
date\n"
-------------------------------------------------------\n"
%s\t%d\t%sf\t%d\t%d\t%d\t%d\n"
fclose(fp);
附加要求
Traffic*Input(Traffic*trafList,int*n);
//函数1//
Traffic*Insert(Traffic
trafList[],int*n,Traffic*s);
Traffic*Insert_a_record(Traffic*trafList,int*n);
Traffic*AddfromText(Traffic*trafList,int*n,char*filename);
//函数7//
voidQuit(Traffic*trafDanList);
//函数9//
主函数改动:
intArrSize=10;
//先定义数组长度为10//
staticintn=0;
Traffic*trafList=(Traffic*)malloc(ArrSize*sizeof(Traffic));
//定义数组和指针//
Traffic*trafDynList=trafList;
switch(menu_select())
trafList=Input(trafList,&
n);
trafList=Insert_a_record(trafList,&
AddrecordsfromaTextFile\n"
trafList=AddfromText(trafList,&
n,filename1);
}
调用函数改动:
Traffic*Input(Traffic*trafDynList,int*n)
//
Traffic*p=trafList[n];
//
l1:
if(*n>
=ArrSize)
ArrSize+=10;
trafDynList=(Traffic*)realloc(trafDynList,ArrSize*sizeof(Traffic));
trafDynList[*n].driver,&
trafDynList[*n].car,trafDynList[*n].police,&
trafDynList[*n].num,&
t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 交通处 罚单 管理程序