1、交通罚单管理系统方案一 系统开发的背景 . 2二 系统分析与设计 . 2(一) 系统功能要求 . 2(二) 系统模块结构设计 . 2三系统的设计与实现 3(一) 罚单基本信息录入: input () . 3(二) 信息删除: delete () 6(三) find 函数 9(四) show 函数 13(五)sum函数 14四系统测试 16(一)测试 input 函数 16(二)测试 delet 函数 17(三) 测试 find 函数 18(四) 测试 show 函数 18(五) 测试 sum 函数 19五、 总结 20六、 附件(代码、部分图表) 21交通罚单管理系统一 系统开发的背景为了方便
2、单位对交通处罚的经一步解交通处罚单信息用文件存 储,提供文件的输入输出操作;要求可以输入、删除、浏览交通处罚 单信息,因而要提供信息的输入、删除和显示操作;要实现按车辆、 驾驶员和开单交警查询, 则要提供查找操作; 另外提供统计操作和键 盘式选择菜单以实现功能选择。二 系统分析与设计(一) 系统功能要求可以录入交通罚单的信息,交通处罚单信息用文件存储,因而要 提供文件的输入输出操作。1.要求可以输入、删除、 浏览交通处罚单信息,因而要提供 信息的输入、删除和显示操作;2.要实现按车辆、驾驶员和 开单交警查询,则要提供查找操 作;3.另外提供统计操作和键盘式选择菜单以实现功能选择。4.罚单信息(
3、包括车牌号、驾驶员、交警、交警编号、罚单编 号)(二) 系统模块结构设计通过对系统功能的分析,交通罚单管理系统功能如图所示交通罚单管理系统图1交通管理系统功能图通过上图的功能分析,把整个系统划分为 5个模块:1、 交通罚单信息录入,该模块主要实现:车牌号、驾驶员、 交警、交警编号、罚单编号的输入,用in put函数实现。2、 信息删除模块,该模块主要实现信息的删除,用 delet函数实现。3、 信息查询模块,该模块主要实现信息的查询:有车牌号 查询、驾驶员查询、交警查询,共用四个函数进行查询, 分别是find ,4、 信息统计模块,主要实现的是罚单数量的统计,用 sum函数实现。三.系统的设计
4、与实现(一) 罚单基本信息录入:in put ()分析:先输出表头,然后进行罚单的信息输入,单独看各个数据信息,开单日期以及驾驶员为字符型,可以采用字符型数组;处罚单、车牌以及交警ID为整型,可以采用整型数组。一条记录对应一交通处罚单,方便交通部门管理。流程图如图 2所示开始输入用户要输入处罚单纪录的条数。 退出依次输入处罚单信息,并保存到文件中输入、关成完闭件图2输入函数流程图*程序代码:void in put()FILE*fp;int num;int i,j;if(fp=fope n(plist.txt,r+)=NULL)r+为读和写而打开文本文件if(fp=fope n( plist.t
5、xt,w)=NULL)读而打开文本文件printf(” 文件打开或创建失败!n);prin tf(npress en ter to retur n menun); getchar();men u();prin tf(n 请输入处罚单数量:);sca nf(%d,&i);输入模块*wprintf(nn);for(j=0;ji;j+) / 控制罚单一次一次的输入printf(” 输入第4处罚单的:n,j+1);printf(n 车牌号、驾驶员、交警、交警号、处罚单号、日期(如 20101112)n); printf(n 注意 : 中间用空格隔开 !n);scanf(%s%s%s%s%s%s,&pl
6、istj.chepai,&plistj.dname,&plistj.pname,&plistj .tbianhao,&listj.fbianhao,&plistj.date);for(j=0;jN)printf(n 结构体数组数的 N太小,请先修改 N的值n);printf(npress enter to return menun);getchar();getchar();menu();printf(n);for(j=0;ji;j+)printf( 输入第4处罚单的:n,j+1);printf(n 车牌号、驾驶员、交警、交警号、处罚单号、日期(如 20101112)n); printf(n 注
7、意 : 中间用空格隔开 !n);scanf(%s%s%s%s%s%s,&plistj.chepai,&plistj.dname,&plistj.pname,&plistj .tbianhao,&plistj.fbianhao,&plistj.date);for(j=0;ji;j+) fprintf(fp,n%st%st%st%st%st%s,plistj.chepai,plistj.dname,plistj.p name,plistj.tbianhao,plistj.fbianhao,plistj.date);fclose(fp);printf(n 保存成功! );printf(npress
8、enter to return menun);getchar();getchar();menu();( 二 ) 信息删除: delete () 分析:该模块的功能需要删除交通处罚单信息,要根据处罚单号、车 辆、驾驶员、开单时间以及交警 ID 查找处罚记录并删除。流程图如 图 3 所示。结束图3*程序代码void delet()int j;int num;int f=-1;FILE*fp1,*fp2; /char s120;if(fp 1= fope n( plist.txt,r)=NU删除函数流程图删除模块 *文件的运用printf(can not open filen); printf(np
9、ress enter to return menun);getchar();getchar();menu();for(j=0;!feof(fp1);j+) / 读取文件fscanf(fp1,%s%s%s%s%s%s,&plistj.chepai,&plistj.dname,&plistj.pname,&pli stj.tbianhao,&plistj.fbianhao,&plistj.date);num=j;fclose(fp1);printf( 请输入要删除的处罚单的编号 n);scanf(%s,s1);for(j=0;jnum;j+)if(strcmp(s1,plistj.fbianhao
10、)=0)f=j;if(fnum-1)for(j=f;jnum-1;j+)strcpy(plistj.chepai,plistj+1.chepai); strcpy(plistj.dname,plistj+1.dname); strcpy(plistj.pname,plistj+1.pname);strcpy(plistj.tbianhao,plistj+1.tbianhao);strcpy(plistj.fbianhao,plistj+1.fbianhao); strcpy(plistj.date,plistj.date);if(fp2=fopen(plist.txt,w)=NULL)prin
11、tf( 文件打不开! n); printf(npress enter to return menun); getchar();menu();for(j=0;jnum-1;j+) / 保存文件fprintf(fp2,n%st%st%st%st%st%s,&plistj.chepai,&plistj.dname,&plist j.pname,&plistj.tbianhao,&plistj.fbianhao,&plistj.date);fclose(fp2);prin tf(n 删除成功! n);prin tf(npress en ter to retur n menun ”);getchar()
12、;getchar();men u();if(f0) prin tf(n 没有找到该学号的记录:n);prin tf(npress en ter to retur n menun ”); getchar();getchar(); menu();(三)find函数分析:该模块的功能是根据输入的处罚单号、车辆、驾驶员、开单时 间以及交警ID查找相应的记录,方便驾驶员了解自己的处罚情况流程图如图4所示图4 find 函数流程图*程序代码void find()int n;int r;do system(cls); / 清屏printf(n 请选择查询类型 :nt 1- 按车牌号 2- 按驾驶员 3- 按
13、开单交警 4- 返回主 菜单 n);printf(n 请输入数字选择 :);scanf(%d,&n);if(n4)r=1;getchar();else r=0; while(r=1);switch(n)case 1:chepaif();break;case 2:dnamef();break;case 3:pnamef();break;case 4:menu();void chepaif()int f=-1;int num;int j;char a20;FILE*fp;if(fp=fopen(plist.txt,r)=NULL)printf( 文件打不开! n); printf(npress e
14、nter to return menun);getchar();menu();fscanf(fp,%s%s%s%s%s%s,&plistj.chepai,&plistj.dname,&plistj.pname,&plis tj.tbianhao,&plistj.fbianhao,&plistj.date);num=j;fclose(fp);printf(n 请输入车牌号 :);scanf(%s,a);printf(n 罚单的信息为: nn);printf( 车牌号 驾驶员 交警 交警编号 处罚单编号 处罚日期 n); for(j=0;jnum;j+)if(strcmp(a,plistj.che
15、pai)=0)f=j;printf(n%st%st%st%st%st%s,&plistj.chepai,&plistj.dname,&plistj.pn ame,&plistj.tbianhao,&plistj.fbianhao,&plistj.date);if(f0)printf(n 没有找到该班号的记录 !n); printf(npress enter to return sub menun); getchar();getchar();find();void dnamef()int f=-1;int num;int j;char name20;FILE*fp; if(fp=fopen(pl
16、ist.txt,r)=NULL)printf( 文件打不开! n);printf(npress enter to return menun);getchar();menu();fscanf(fp,%s%s%s%s%s%s,&plistj.chepai,&plistj.dname,&plistj.pname,&plis tj.tbianhao,&plistj.fbianhao,&plistj.date);num=j;fclose(fp);printf(n 请输入驾驶员的 :);scanf(%s,name);printf(n 罚单的信息为: nn);printf( 车牌号 驾驶员 交警 交警编号
17、处罚单编号 处罚日期 n); for(j=0;jnum;j+)if(strcmp(name,plistj.dname)=0)f=j;printf(n%st%st%st%st%st%s,&plistj.chepai,&plistj.dname,&plistj.pn ame,&plistj.tbianhao,&plistj.fbianhao,&plistj.date);if(f0)printf(n 没有找到该班号的记录 !n); printf(npress enter to return sub menun); getchar();getchar();find();void pnamef()int
18、 f=-1;int num;int j;char name20;FILE*fp;if(fp=fopen(plist.txt,r)=NULL)printf( 文件打不开! n); printf(npress enter to return menun);getchar();menu();for(j=0;!feof(fp);j+) / 读取文件fscanf(fp,%s%s%s%s%s%s,&plistj.chepai,&plistj.dname,&plistj.pname,&plis tj.tbianhao,&plistj.fbianhao,&plistj.date);nu m=j;fclose(
19、fp);prin tf(n 请输入开单交警的:);sca nf(%s, name);prin tf(n 罚单的信息为:nn);printf(” 车牌号驾驶员交警交警编号处罚单编号处罚日期n);for(j=0;j nu m;j+)if(strcmp (n ame,plistj.p name)=0)f=j;prin tf(n%st%st%st%st%st%s,&plistj.chepai, &plistj.d name,&plistj.p name,&plistj.tbia nhao,&plistj.fbia nhao,&plistj.date);if(f0)prin tf(n 没有找到该班号的记
20、录!n);prin tf(npress en ter to retur n sub menun ”);getchar();getchar();fin d();5所示(四)show函数分析:该模块的功能是显示所有的处罚信息。流程图如图 程序代码图5 show函数流程图void show()int j;int num;FILE*fp; if(fp=fopen(plist.txt,r)=NULL)printf(can not open filen);printf(npress enter to return menun);getchar();getchar();menu();for(j=0;!feo
21、f(fp);j+) / 读取文件 fscanf(fp,%s%s%s%s%s%s,&plistj.chepai,&plistj.dname,&plistj.pname,&plis tj.tbianhao,&plistj.fbianhao,&plistj.date);fclose(fp);num=j;printf(n 已添加 %d 条记录 nn,num);printf( 车牌号 驾驶员 交警 交警编号 处罚单编号 处罚日期 n); for(j=0;jnum;j+) / 输出 printf(n%st%st%st%st%st%s,&plistj.chepai,&plistj.dname,&plistj
22、.pn ame,&plistj.tbianhao,&plistj.fbianhao,&plistj.date);printf(npress enter to return menun);getchar();getchar();menu();(5)sum 函数 分析:该模块的功能是根据输入的处罚单号、车辆、驾驶员、开单时 间以及交警 ID 查找相应的记录,方便驾驶员了解自己的处罚情况。 流程图如图 6 所示(6)图6 sum函数流程图程序代码void sum()int f=-1;int num; / 所有罚单单数int j;int all=0; / 某驾驶员的罚单数char n ame20;ch
23、ar time120;char time220;FILE*fp;if(fp=fope n(plist.txt,r)=NULL)prin tf( 文件打不开! n);prin tf(npress en ter to retur n menun ”);getchar();men u();for(j=0;!feof(fp);j+) / 读取文件fscan f(fp,%s%s%s%s%s%s, &plistj.chepai,&plistj.d name,&plistj.p name, &plis tj.tbia nhao,&plistj.fbia nhao,&plistj.date);num=j; f
24、close(fp);printf(n 请根据提示输入驾驶员的和一个时间段,统计某个驾驶员在某段时间的处罚 单数目和罚单号 n);printf(nn 请输入驾驶员的 :);scanf(%s,name);printf(n 请输入一个较早的时间 :);scanf(%s,time1);printf(n 请输入一个最近的时间 :);scanf(%s,time2);for(j=0;j=0)&(strcmp(plistj.date,time2)=0)f=j;all+;printf(n 罚单号 :%sn,plistj.fbianhao);if(f0)printf(n 没有找到记录 !n);printf(n 罚
25、单总数为 :%dn,all);printf(npress enter to return menun);getchar();getchar();menu();四系统测试(一)测试 input 函数交通罚单管理系统请输入处罚单数量泊注意冲间用空整隔幵?裁456 虎哥程化 4532G 1093563 20130630保存咸功!pi-G苗昏 右。rctwrn menu(二)测试delet函数I . 3 eb li g 该兰 单.eKe交通罚单管理系统录ffill杳律条 自S自3自4自自4 亠二巳=巳一0_0一艮一1 2 3 4 5 &悴选捋您要进行的眾奔用序号代替)例.1信息录入)冷输入要册II除的处罚单的编号*!1除成功!bres uintui to return menu. 1 IADetxjgAuSwiMe幘选j?查询类型:| -按车牌号-按驾驶員姓名4按开单交警姓名4-返回主菜单*输入数字选择汽+青输入车牌号= 23*32”单的信息为;牌号 莺驶员姓名交警姓名交警编号处罚单编号处罚
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1