1、完整版C语言课程设计之交通处罚单管理系统C语言课程设计交通处罚单管理一、题目要求交通处罚单涉及到车辆、驾驶员和开单交警的信息,还有交通处罚单号码、处罚时间等信息。功能:(1)要求可以输入、删除、浏览交通处罚单信息。(2)可以按车辆、驾驶员和开单交警查询。(3)统计某时间段某个驾驶员的交通处罚单数目及交通处罚单号码。二、需求分析交通处罚单信息用文件存储,提供文件的输入输出操作;要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;要实现按车辆、驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。三、总体设计整个管理系统被设计为信息输入模
2、块、信息删除模块、信息浏览模块、信息查询模块和信息统计模块等。四、详细设计1、主函数主函数流程图主函数程序menu() /*主界面*/ int n,w; /*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*/ do printf(ttt欢迎来到交通处罚单管理系统!nn); printf(tt*MENU*nn); printf(tttt1.信息输入n); printf(tttt2.信息删除n); printf(tttt3.信息浏览n); printf(tttt4.信息查询n); printf(tttt5.信息统计n); printf(tttt6.退出n); puts(nnt
3、t*n); printf(tt请输入您的操作(1-6): bb); scanf(%d,&n); if(n6) /*对选择的数字作判断*/ w=1; getchar(); else w=0; while(w=1); /*选择功能*/ switch(n) case 1:shuru();break; case 2:shanchu();break; case 3:liulan();break; case 4:chaxun();break; case 5:tongji();break; case 6:exit(0); return(n); void main() /*主函数*/ menu(); 2、各功
4、能模块设计(1)、输入模块数据结构采用结构体的形式,把处罚单的处罚单号、车牌号码、驾驶员姓名、开单警察ID、处罚时间作为结构体成员,用结构体数组的形式存放若干条处罚单信息。struct fandan int num; /*处罚单号码*/ int chepai; /*车牌号码*/ char name8; /*驾驶员名字*/ int id; /*开单警察的信息ID*/ char time11; /*处罚时间为年月日排列*/danN; /*dan500中每个数组元素对应一个处罚单信息*/注意danN中的N为处罚单条数,本程序采用宏定义#define N 500。输入模块流程图输入模块程序void s
5、huru() /*输入模块*/ int i,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,&dani.num,&dani.chepai,&dani.name,&dani.id,&dani.time); fprintf(fp,n%3d
6、 %5d %8s %5d %11s,dani.num,dani.chepai,dani.name,dani.id,dani.time); /*输入罚单信息*/ printf(输入信息成功!n); fclose(fp); printf_back();(2)、删除模块删除模块流程图删除模块程序void shanchu() /*删除模块*/ int i,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 %1
7、1s,&dani.num,&dani.chepai,&dani.name,&dani.id,&dani.time); m=i; /*统计出文件中罚单总数*/ for(i=0;im;i+) if(j=dani.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,dani.num,dani.chepai,dani.name,dani.id,dani.time); /*把不要求删除的罚单信息在文件中输入*/ fclose(fp); printf_bac
8、k(); (3)、浏览模块需求分析 该模块的功能是显示文件中所有的处罚但记录信息。浏览模块流程图 浏览模块程序 void liulan() /*浏览模块*/ int i; FILE *fp; fp=fopen(data.txt,r); for(i=0;!feof(fp);i+) fscanf(fp,%3d %5d %8s %5d %11s,&dani.num,&dani.chepai,&dani.name,&dani.id,&dani.time); printf(-n); printf(处罚单号:%dn,dani.num); printf(车牌号码:%dn,dani.chepai); prin
9、tf(驾驶员姓名:%sn,dani.name); printf(开单警察ID:%dn,dani.id); printf(处罚时间:%sn,dani.time); printf(-n); /*逐条输出文件信息*/ fclose(fp); printf_back();(4)、查询模块需求分析该模块的功能是可以实现按车辆、驾驶员和开单交警查询。查询模块流程图 查询模块程序void chaxun() /*查询模块*/ int i,j,x,flag=0; FILE *fp; char m8; printf(请输入您想查询的信息: n); printf(1_按车牌号查询n); printf(2_按驾驶员姓
10、名查询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,&dani.num,&dani.chepai,&dani.name,&dani.id,&dani.time); if(dani.chepai=j) printf(处罚单号:%dn,dani.num); printf(车牌号码:%dn,dani.chepai); print
11、f(驾驶员姓名:);puts(dani.name); printf(开单警察ID:%dn,dani.id); printf(处罚时间:);puts(dani.time); printf(-n); flag=1; break; if(flag=0) printf(找不到此罚单信息!n); fclose(fp); printf_back(); else if(x=2) printf(请输入您要查询的驾驶员姓名: ); scanf(%s,m); fp=fopen(data.txt,r); for(i=0;!feof(fp);i+) fscanf(fp,%3d %5d %8s %5d %11s,&da
12、ni.num,&dani.chepai,&dani.name,&dani.id,&dani.time); if(strcmp(dani.name,m)=0) printf(处罚单号:%dn,dani.num); printf(车牌号码:%dn,dani.chepai); printf(驾驶员姓名:);puts(dani.name); printf(开单警察ID:%dn,dani.id); printf(处罚时间:);puts(dani.time); printf(-n); flag=1; break; if(flag=0) printf(找不到此罚单信息!n); fclose(fp); pri
13、ntf_back(); else if(x=3) printf(请输入您要查询的开单警察ID: ); scanf(%d,&j); fp=fopen(data.txt,r); for(i=0;!feof(fp);i+) fscanf(fp,%3d %5d %8s %5d %11s,&dani.num,&dani.chepai,&dani.name,&dani.id,&dani.time); if(dani.id=j) printf(处罚单号:%dn,dani.num); printf(车牌号码:%dn,dani.chepai); printf(驾驶员姓名:);puts(dani.name); p
14、rintf(开单警察ID:%dn,dani.id); printf(处罚时间:);puts(dani.time); printf(-n); flag=1; break; if(flag=0) printf(找不到此处罚单信息!n); fclose(fp); printf_back(); else printf(输入错误!n); printf_back(); (5)、统计模块需求分析该模块的功能是可以实现统计某时间段某个驾驶员的交通处罚单数目及交通处罚单号码。统计模块流程图3、公共函数 一个任务结束时是选择浏览还是返回的函数:一个任务结束时是选择浏览还是返回的函数的流程图一个任务结束时是选择浏览
15、还是返回的函数的程序void printf_back() /*一个任务结束时是选择浏览还是返回主界面*/ void liulan(); int w; printf(nWhat do you want to do?nnt(1).浏览t(2).返回主界面 bb); scanf(%d,&w); if(w=1) liulan(); else menu();五、上机操作1、数据源逐条输入处罚单信息中的处罚单号、车牌号码、驾驶员姓名、开单警察ID和处罚时间。2、编译、连接和运行3、结果(1)主菜单函数(2)输入模块在主界面出现后输入1回车看到下图:输入要输入的记录数然后逐条增加,如下图:(3)浏览模块(4)删除模块在主界面出现后输入2回车看到下图:输入要删除的处罚单号然后如下图:删除后文件中保留信息的浏览图如下:(5)查询模块在主界面出现后输入4回车看到下图:输入要查询的信息后如下图(如输入1):若没找到需要查找的信息时如下图:(6)统计模块在主界面出现后输入5回车看到下图:输入需要统计的时间段与驾驶员姓名,如下图:若查找不到需要统计的信息,如下图:
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2