交通处罚单管理程序课程设计报告1.docx
- 文档编号:23991418
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:24
- 大小:358.37KB
交通处罚单管理程序课程设计报告1.docx
《交通处罚单管理程序课程设计报告1.docx》由会员分享,可在线阅读,更多相关《交通处罚单管理程序课程设计报告1.docx(24页珍藏版)》请在冰豆网上搜索。
交通处罚单管理程序课程设计报告1
C语言课程设计报告
题目:
交通处罚单管理程序
专业:
探测指导与控制技术
二零一四五月二十九日
一、程序功能:
用结构体数组结构实现简单的交通处罚单管理功能,具体功能为:
(1)、可以输入、删除、显示、修改某个驾驶员的交通处罚单信息;
(2)、可以按驾驶员查询交通处罚单。
(3)对罚单信息按姓氏排序
二、题目分析:
先建立主菜单,程序执行时,循环显示。
让用户在Giveyourchoice:
处输入选项,即按照功能列表输入0~8中的任意一个数字,按回车后,即按列表执行相应功能。
然后,分别写出具有相应功能的函数。
三、设计中主要遇到的问题及解决办法:
全部写完运行后显示76个error,43个waring,有些问题因为一下就改了不记得了,就写了一些应为改的次数比较多的记得的写了
1):
在scanf函数中没有加&,编译时不报错就是运行过程一半的时候报错,然后不知道是哪里错了还以为是逻辑错,最后把程序完整的看了好几遍才找出来这个问题,确实耗费了不少时间。
2)在用结构体时定义时用的date,用的时候总自然的写成day,不过这个问题一下就改了,没用多少时间。
3)一开始写的时候main函数放在最前面又没写原型说明而报错
4)编程喜欢先编最后定义变量最后就总是有忘了定义的
5)if函数中有时会忘了等于号要写两个;
四.设计心得:
从考完高数就一直在遍这个程序,一开始全部编完报了那么多错确实把我弄得挺失落的,后来慢慢慢慢一个一个的改,然后发现一些许多曾经犯过的错误还是会在这次作业中犯到,好多好基础的错误不止这次作业中犯到,以前也会出现,挺失望的,总是不长记性,然后就是觉得有时候看到0error,0waring,挺激动的结果就是运行的时候还有问题,这时候才能叫崩溃呢,觉得计算机有时候就是还是有设计缺陷,不管怎么样,从周日到周三,四天时间,就一直在弄这个程序,以前的作业都挺短的,这次做了几百行,看看都晕,不过最后还是很有成就感的,激动了半天,不过附加题还没有做,还是有缺陷,最后还是想说,作业也都交了,课设也做完了,不过还是觉得c语言挺重要的,自己掌握的也还是太少,有些地方写的挺累赘的,也希望以后能继续提高自己变成的能力,毕竟觉得编程挺好玩的,虽然中间经常会有让人崩溃的时候。
五.流程图
五、各函数主要功能,源码及注释
(1)输入数据--------输入“1”
intInput(TraffictrafList[],intn)/*从键盘输入若干条记录依次存放到结构体数组trafList中,n为数组原有记录数,程序运行初始记录为0,函数返回记录数*/
{
inti,m;
printf("请输入要输入的罚单总数\n");
scanf("%d",&m);
for(i=0;i { printf("请输入第%d张罚单的司机姓名\n",i+1); scanf("%s",trafList[i].driver); printf("请输入第%d张罚单的驾驶车牌号\n",i+1); scanf("%d",&(trafList[i].car)); printf("请输入第%d张罚单的开罚单的交警姓名\n",i+1); scanf("%s",(trafList[i].police)); printf("请输入第%d张罚单的编号\n",i+1); scanf("%d",&(trafList[i].num)); printf("请输入第%d张罚单的日期的年份\n",i+1); scanf("%d",&(trafList[i].year)); printf("请输入第%d张罚单的日期的月份\n",i+1); scanf("%d",&(trafList[i].month)); printf("请输入第%d张罚单的日期\n",i+1); scanf("%d",&(trafList[i].date)); printf("保存成功! \n"); } return(m+n); } (2)输出数据---------输入“2” voidDisplay(TraffictrafList[],intn)/*显示所有姓名成绩,每十个暂停一下,n为数组元素个数*/ { inti; for(i=0;i { printf("/******************************************************************************/\n"); printf("第%d张罚单: \n",i+1); printf("司机姓名: %s\n",trafList[i].driver); printf("驾驶车牌号%d\n",trafList[i].car); printf("开罚单的交警姓名%s\n",trafList[i].police); printf("罚单的编号%d\n",trafList[i].num); printf("罚单的日期%d-%d-%d\n",trafList[i].year,trafList[i].month,trafList[i].date); printf("/******************************************************************************/\n"); if((i+1)%10==0) { system("pause"); printf("按任意键后继续执行\n"); } } } (3)删除记录---------输入“3” intDelete(TraffictrafList[],intn,char*name)/*删除姓名为name的记录,返回数组中的记录数*/ { inti,j; for(i=0;i { if(strcmp(name,trafList[i].driver)==0)break; } if(i==n) { printf("没有这个人的记录\n"); returnn; } else { for(j=i;j trafList[j]=trafList[j+1]; printf("删除成功! \n"); return(n-1); } } intDelete_a_record(TraffictrafList[],intn)/*输入待删除的姓名,经确认后调用Delete的函数删除该姓名的记录,输出删除成功与否的信息,返回数组中的记录数*/ {charname[20]; inta,b; printf("请输入密码\n"); scanf("%d",&b); if(b==123456) { printf("请输入待删除的姓名\n"); scanf("%s",&name); printf("确定删除%s的记录? \n确认请按1,返回请按0",name); scanf("%d",&a); if(a==1) n=Delete(trafList,n,name); } else { printf("密码错误\n"); } returnn; } (4)排序----------输入“4” voidSort_by_Name(TraffictrafList[],intn)/*按姓名作升序排列,要求用选择法排序*/ { inti,j,p; Trafficsp; for(i=0;i { p=i; for(j=i+1;j { if(strcmp(trafList[i].driver,trafList[j].driver)>0) p=j; if(p! =i) { sp=trafList[p]; trafList[p]=trafList[i]; trafList[i]=sp; } } } printf("排序成功! \n"); } (5)有序插入---------输入“5” intInsert(TraffictrafList[],intn,Traffic*s)/*按姓名插入记录s,返回记录个数*/ { n=n+1; trafList[n-1]=*s; Sort_by_Name(trafList,n); returnn; } intInsert_a_record(TraffictrafList[],intn)/*输入待插入的司机姓名,驾驶的车牌号,开罚单的交警姓名,罚单编号以及开罚单的年月日,调用Insert函数按姓名作有序插入,输出插入成功信息*/ { Trafficsp; printf("输入待插入的司机姓名\n"); scanf("%s",sp.driver); printf("请输入罚单的驾驶车牌号\n"); scanf("%d",&sp.car); printf("请输入开罚单的交警姓名\n"); scanf("%s",sp.police); printf("请输入罚单的编号\n"); scanf("%d",&sp.num); printf("请输入罚单的年份\n"); scanf("%d",&sp.year); printf("请输入罚单的月\n"); scanf("%d",&sp.month); printf("请输入罚单的日期\n"); scanf("%d",&sp.date); n=Insert(trafList,n,&sp); printf("保存成功! \n"); returnn; } (6)数据查询---------输入“6” intQuery(TraffictrafList[],intn,char*name)/*查找姓名为name的记录,查找成功返回该记录下标,否则返回-1*/ { inti; for(i=0;i if(strcmp(name,trafList[i].driver)==0) returni; return-1; } intQuery_a_record(TraffictrafList[],intn)/*输入待查找的姓名,调用Query函数查找该姓名的记录,输出查找成功与否的信息和该司机的交通处罚单*/ { charname[10]; inta; printf("请输入要查找的姓名: \n"); scanf("%s",name); a=Query(trafList,n,name); if(a! =-1) { printf("查找成功! "); printf("%s的罚单记录\n",trafList[a].driver); printf("驾驶车牌号%d\n",trafList[a].car); printf("开罚单的交警姓名%s\n",trafList[a].police); printf("罚单的编号%d\n",trafList[a].num); printf("罚单的日期%d-%d-%d",trafList[a].year,trafList[a].month,trafList[a].date); } if(a==-1) printf("没有这个人的罚单记录! \n"); returna; } (7)从文件中整批输入数据--------输入“7” intAddfromText(TraffictrafList[],intn,char*filename)/*从文件filename添加一批记录到数组中,调用Insert函数作有序插入,返回添加记录后新的记录数*/ { FILE*fp1; inti; if((fp1=fopen(filename,"r"))==NULL) { printf("Can'ntopendata.out! \n"); exit (1); } fscanf(fp1,"%d",&n); for(i=0;i {fscanf(fp1,"%s",trafList[i].driver); fscanf(fp1,"%d",&trafList[i].car); fscanf(fp1,"%s",trafList[i].police); fscanf(fp1,"%d",&trafList[i].num); fscanf(fp1,"%d",&trafList[i].year); fscanf(fp1,"%d",&trafList[i].month); fscanf(fp1,"%d",&trafList[i].date); } fclose(fp1); printf("写入成功! \n"); returnn; } (8)将记录写入到文件--------输入“8” voidWritetoText(TraffictrafList[],intn,char*filename); /*将数组中的记录全部写入文件records.txt。 */ voidWritetoText(TraffictrafList[],intn,char*filename)/*将数组中的记录全部写入文件*/ { FILE*fp2; inti; if((fp2=fopen(filename,"w"))==NULL) { printf("Can'ntopendata.out! \n"); exit (2); } fprintf(fp2,"%d\n",n); for(i=0;i { fprintf(fp2,"%s的罚单记录\t",trafList[i].driver); fprintf(fp2,"驾驶车牌号: %d\t",trafList[i].car); fprintf(fp2,"开罚单的交警姓名: %s\t",trafList[i].police); fprintf(fp2,"罚单的编号: %d\t",trafList[i].num); fprintf(fp2,"罚单的日期: %d\t",trafList[i].year); fprintf(fp2,"罚单的月: %d\t",trafList[i].month); fprintf(fp2,"罚单的日期: %d\t",trafList[i].date); fprintf(fp2,"\n"); } fclose(fp2); printf("写入成功! \n"); } (9)选择函数, intmenu_select() {charc; do { system("cls");/*清屏*/ printf("/******************************************************************************/\n"); printf("欢迎进入交通处罚单管理程序\n"); 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("/******************************************************************************/\n"); printf("Input1-8,0: "); c=getchar(); }while(c<'0'||c>'8'); return(c-'0'); } (10)主函数 main() { charfilename[30]; intn=0; TraffictrafList[NUM]; 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: printf("请输入文件名\n"); getchar(); gets(filename); n=AddfromText(trafList,n,filename); system("pause"); break; case8: WritetoText(trafList,n,"c: \\fadanjilu.txt"); system("pause"); break; case0: printf("Quit\n"); system("pause"); exit(0); } } } 五、程序要使用的data.txt: 2 WangXiao95DingFeng000112013123 LiuLin87CaiMing000222013124 六新增加功能: 查找数据时要输入密码 七运行 界面 /*从键盘输入若干条记录,依次存放到结构体数组trafList中,n为数组原有记录数,程序运行初始记录数为0,函数返回记录数。 */ (2)输出数据---------输入“2” /*显示所有姓名成绩,每10个暂停一下,n为数组元素个数*/ (4)排序----------输入“4” /*按姓名作升序排序,*/ 2)排序后输出数据---------输入“2” /*显示所有姓名成绩,每10个暂停一下,n为数组元素个数*/ 3)删除记录---------输入“3” /*删除姓名为name的记录*/ /*输入待删除的姓名,经确认后调用Delete函数删除该姓名的记录,输出删除成功与否的信息*/ 删除后后输出数据---------输入“2” /*显示所有姓名成绩,每10个暂停一下,n为数组元素个数*/ (5)有序插入---------输入“5” /*按姓名序插入记录s*/ /*输入待插入的司机姓名﹑驾驶的车牌号﹑开罚单的交警姓名﹑罚单编号以及开罚单的年月日,调用Insert函数按姓名作有序插入,输出插入成功信息 (6)数据查询---------输入“6” /*查找姓名为name的记录,*/ /*输入待查找的姓名,调用Query函数查找该姓名的记录,输出查找成功与否的信息和该司机的交通处罚单*/ (7)从文件中整批输入数据--------输入“7” /*从文件filename添加一批记录到数组中*/ (8)将记录写入到文件--------输入“8” /*将数组中的记录全部写入文件records.txt。 */
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通处 罚单 管理程序 课程设计 报告