1课程设计报告专业:电气工程及其自动化年级:学号:姓名:成绩:批改时间:红河学院工学院编制2说明1、本报告供学生课程设计时使用。2、学生应认真阅读课程设计要求。3、课程设计报告里面的内容要手工填写,以备存档使用(源程序可打印)。4、课程设计的总评成绩根据课程的性质,按一定比例计入该门课程成绩。5、课程设计报告中的各模块填写的内容是评分的主要依据,如果不够书写,可以自行添加附页。6、按规定的时间提交报告给教师评定成绩,由任课教师交到工学院存档。课程设计目录课程名称:高级语言程序设计序号课程设计名称起止页码29交通处罚单管理系统3设计任务题目名称交通处罚单管理系统班级指导教师地点成绩学年开始日期结束日期一、问题分析(围绕设计题目,进行课程设计开始前的准备过程,在此以问题分析的形式展开,从设计的总体性上对所承担的设计题目的思考,分析,此模块内容请手工填写)(1)需求分析:交通处罚单信息用文件存储,提供文件的输输出操作;要求可以输入,输出,删除,浏览交通处罚单信息,因而要提供输入,删除和显示操作;要实现按车辆,驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。(2)总体设计:整个管理系统被设计为信息输入模块,信息删除模块,信息浏览模块,信息查询模块,信息统计模块。交通处罚单管理系统输入查找删除统计退出45二、设计流程图(问题分析与算法设计,并画出流程图,此模块内容请打印)1、主函数[主函数流程图]2·[输入模块流程图]3·[删除模块流程图]输入用户要输入处罚单纪录的条数j能否打开文件退出i从0到j-1依次输入处罚单信息,并保存到文件中j开始选择浏览还是返回主菜单显示一系列功能选项输入n,判断n是否是1—6根据n的值调用各功能模块函数64·[查询模块流程图]打开文件统计出文件中的处罚单总数m输入要删除的处罚单的处罚单号jj==dan[i].num把此i的值赋给作为比较的变量n关闭文件后再打开文件依次比较i!=n把不要求删除的罚单信息在文件中输入选择浏览还是返回主菜单75·[统计模块流程图]打开文件输入用户要查询的信息x让用户选择输入查询的车牌号j输入查询的驾驶员姓名m输入查询的开单警察j输入错误dan[i].chepai==jdan[i].id==jstrcmp(dan[i].name,m)==0显示“找不到此罚单信息关闭文件选择浏览还是返回主菜单显示“找不到此罚单信息显示“找不到此罚单信息显示“找不到此罚单信息86·[一个任务结束时是选择浏览还是返回的函数的流程图]1、主函数开始选择Whatdoyouwanttodo?调用浏览函数调用主界面函数输入需要统计的时间段和驾驶员姓名打开文件依次查找是否有符合统计要求的处罚单信息输出处罚单号输出“找不到统计罚单信息”统计找到的处罚单条数关闭文件选择浏览还是返回主菜单9[主函数流程图][主函数程序]menu()/*主界面*/{intn,w;/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*/do{printf(\t\t\t欢迎来到交通处罚单管理系统!\n\n);printf(\t\t*******************MENU*******************\n\n);printf(\t\t\t\t1.信息输入\n);printf(\t\t\t\t2.信息删除\n);printf(\t\t\t\t3.信息浏览\n);printf(\t\t\t\t4.信息查询\n);printf(\t\t\t\t5.信息统计\n);printf(\t\t\t\t6.退出\n);puts(\n\n\t\t********************************************\n);printf(\t\t请输入您的操作(1-6):[]\b\b);scanf(%d,&n);if(n1||n6)/*对选择的数字作判断*/{w=1;getchar();}elsew=0;}while(w==1);/*选择功能*/switch(n){case1:shuru();break;显示一系列功能选项输入n,判断n是否是1—6根据n的值调用各功能模块函数10case2:shanchu();break;case3:liulan();break;case4:chaxun();break;case5:tongji();break;case6:exit(0);}return(n);}voidmain()/*主函数*/{menu();}2、各功能模块设计(1)、输入模块[数据结构]采用结构体的形式,把处罚单的处罚单号、车牌号码、驾驶员姓名、开单警察ID、处罚时间作为结构体成员,用结构体数组的形式存放若干条处罚单信息。structfandan{intnum;/*处罚单号码*/intchepai;/*车牌号码*/charname[8];/*驾驶员名字*/intid;/*开单警察的信息ID*/chartime[11];/*处罚时间为年月日排列*/}dan[N];/*dan[500]中每个数组元素对应一个处罚单信息*/[注意]dan[N]中的N为处罚单条数,本程序采用宏定义#defineN500。[输入模块流程图]11[输入模块程序]voidshuru()/*输入模块*/{inti,j;FILE*fp;if((fp=fopen(data.txt,w))==NULL){printf(无法打开文件!\n);exit(0);}printf(\n你要输入多少条处罚单信息:);scanf(%d,&j);for(i=0;ij;i++){printf(\n请依次输入罚单信息:\n);printf(\n罚单号车牌号驾驶员姓名警察ID处罚时间\n);scanf(%3d%5d%8s%5d%11s,&dan[i].num,&dan[i].chepai,&dan[i].name,&dan[i].id,&dan[i].time);fprintf(fp,\n%3d%5d%8s%5d%11s,dan[i].num,dan[i].chepai,dan[i].name,dan[i].id,dan[i].time);输入用户要输入处罚单纪录的条数j能否打开文件退出i从0到j-1依次输入处罚单信息,并保存到文件中j开始选择浏览还是返回主菜单12/*输入罚单信息*/printf(输入信息成功!\n);}fclose(fp);printf_back();}(2)、删除模块[删除模块流程图]打开文件统计出文件中的处罚单总数m输入要删除的处罚单的处罚单号jj==dan[i].num把此i的值赋给作为比较的变量n关闭文件后再打开文件依次比较i!=n把不要求删除的罚单信息在文件中输入选择浏览还是返回主菜单13[删除模块程序]voidshanchu()/*删除模块*/{inti,j,m,n;FILE*fp;printf(请输入要删除的处罚单号:);scanf(%d,&j);fp=fopen(data.txt,r);for(i=0;!feof(fp);i++){fscanf(fp,%3d%5d%8s%5d%11s,&dan[i].num,&dan[i].chepai,&dan[i].name,&dan[i].id,&dan[i].time);}m=i;/*统计出文件中罚单总数*/for(i=0;im;i++){if(j==dan[i].num)n=i;}fclose(fp);fp=fopen(data.txt,w);for(i=0;im;i++){if(i!=n){fprintf(fp,\n%3d%5d%8s%5d%11s,dan[i].num,dan[i].chepai,dan[i].name,dan[i].id,dan[i].time);/*把不要求删除的罚单信息在文件中输入*/}}fclose(fp);printf_back();}(3)、浏览模块[需求分析]该模块的功能是显示文件中所有的处罚但记录信息。[浏览模块流程图]14[浏览模块程序]voidliulan()/*浏览模块*/{inti;FILE*fp;fp=fopen(data.txt,r);for(i=0;!feof(fp);i++){fscanf(fp,%3d%5d%8s%5d%11s,&dan[i].num,&dan[i].chepai,&dan[i].name,&dan[i].id,&dan[i].time);printf(------------------------------\n);printf(处罚单号:%d\n,dan[i].num);printf(车牌号码:%d\n,dan[i].chepai);printf(驾驶员姓名:%s\n,dan[i].name);printf(开单警察ID:%d\n,dan[i].id);printf(处罚时间:%s\n,dan[i].time);printf(------------------------------\n);/*逐条输出文件信息*/}fclose(fp);printf_back();}(4)、查询模块[需求分析]该模块的功能是可以实现按车辆、驾驶员和开单交警查询。打开文件逐条显示文件中的处罚单信息关闭文件选择浏览还是返回主菜单15[查询模块流程图]打开文件输入用户要查询的信息x让用户选择输入查询的车牌号j输入查询的驾驶员姓名m输入查询的开单警察j输入错误dan[i].chepai==jdan[i].id==jstrcmp(dan[i].name,m)==0显示“找不到此罚单信息关闭文件选择浏览还是返回主菜单显示“找不到此罚单信息显示“找不到此罚单信息显示“找不到此罚单信息16[查询模块程序]voidchaxun()/*查询模块*/{inti,j,x,flag=0;FILE*fp;charm[8];printf(请输入您想查询的信息:\n);printf(1_按车牌号查询\n);printf(2_按驾驶员姓名查询\n);printf(3_按开单警察ID查询\n);scanf(%d,&x);if(x==1){printf(请输入您要查询的车牌号:\n);scanf(%d,&j);fp=fopen(data.txt,r);for(i=0;!feof(fp);i++){fscanf(fp,%3d%5d%8s%5d%11s,&dan[i].num,&dan[i].chepai,&dan[i].name,&dan[i].id,&dan[i].time);if(dan[i].chepai==j){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);printf_back();}elseif(x==2){printf(请输入您要查询的驾驶员姓名:);scanf(%s,m);17fp=fopen(data.txt,r);for(i=0;!feof(fp);i++){fscanf(fp,%3d%5d%8s%5d%11s,&dan[i].num,&dan[i].chepai,&dan[i].name,&dan[i].id,&dan[i].time);if(strcmp(dan[i].name,m)==0){printf(处罚单号:%d\n,dan[i].num);printf(车牌号码:%d\n,dan[i].chepai);printf(驾驶员姓名:);puts(dan[i].name);printf(开单警察ID:%d\n,dan[i].i