当前位置:文档之家› 交通罚单管理系统方案

交通罚单管理系统方案

目录一.系统开发的背景 (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)交通罚单管理系统一.系统开发的背景为了方便单位对交通处罚的经一步解交通处罚单信息用文件存储,提供文件的输入输出操作;要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;要实现按车辆、驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。

二.系统分析与设计(一)系统功能要求可以录入交通罚单的信息,交通处罚单信息用文件存储,因而要提供文件的输入输出操作。

1.要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;2.要实现按车辆、驾驶员和开单交警查询,则要提供查找操作;3.另外提供统计操作和键盘式选择菜单以实现功能选择。

4.罚单信息(包括车牌号、驾驶员、交警、交警编号、罚单编号)(二)系统模块结构设计通过对系统功能的分析,交通罚单管理系统功能如图所示图1 交通管理系统功能图通过上图的功能分析,把整个系统划分为5个模块:1、交通罚单信息录入,该模块主要实现:车牌号、驾驶员、交警、交警编号、罚单编号的输入,用input函数实现。

2、信息删除模块,该模块主要实现信息的删除,用delet函数实现。

3、信息查询模块,该模块主要实现信息的查询﹕有车牌号查询、驾驶员查询、交警查询,共用四个函数进行查询,分别是find,4、信息统计模块,主要实现的是罚单数量的统计,用sum函数实现。

三.系统的设计与实现(一)罚单基本信息录入:input()分析:先输出表头,然后进行罚单的信息输入,单独看各个数据信息,开单日期以及驾驶员为字符型,可以采用字符型数组;处罚单、车牌以及交警ID为整型,可以采用整型数组。

一条记录对应一交通处罚单,方便交通部门管理。

流程图如图2所示。

图2 输入函数流程图***************************输入模块************************程序代码:void input(){FILE*fp;int num;int i,j;if((fp=fopen("plist.txt","r+"))==NULL)//r+为读和写而打开文本文件{if((fp=fopen("plist.txt","w"))==NULL) //w为读而打开文本文件{printf("文件打开或创建失败!\n");printf("\npress enter to return menu\n");getchar();menu();}printf("\n请输入处罚单数量:");scanf("%d",&i);printf("\n\n");for(j=0;j<i;j++) //控制罚单一次一次的输入{printf("输入第%d处罚单的:\n",j+1);printf("\n 车牌号、驾驶员、交警、交警号、处罚单号、日期(如20101112)\n"); printf("\n注意:中间用空格隔开!\n");scanf("%s%s%s%s%s%s",&plist[j].chepai,&plist[j].dname,&plist[j].pname,&plist[j] .tbianhao,&list[j].fbianhao,&plist[j].date);}for(j=0;j<i;j++) //对罚单一次次的保存{fprintf(fp,"\n%s\t%s\t%s\t%s\t%s\t%s",plist[j].chepai,plist[j].dname,plist[j].p name,plist[j].tbianhao,plist[j].fbianhao,plist[j].date);}fclose(fp);printf("\n保存成功!");printf("\npress enter to return menu\n");getchar();getchar();menu();}printf("\n请输入处罚单数量:");scanf("%d",&i);printf("\n\n");for(j=0;!feof(fp);j++) //读取文件{fscanf(fp,"%s%s%s%s%s%s",&plist[j].chepai,&plist[j].dname,&plist[j].pname,&plis t[j].tbianhao,&plist[j].fbianhao,&plist[j].date);}num=j+i;if(num>N){printf("\n结构体数组数的N太小,请先修改N的值\n");printf("\npress enter to return menu\n");getchar();getchar();menu();}printf("\n");for(j=0;j<i;j++){printf("输入第%d处罚单的:\n",j+1);printf("\n车牌号、驾驶员、交警、交警号、处罚单号、日期(如20101112)\n"); printf("\n注意:中间用空格隔开!\n");scanf("%s%s%s%s%s%s",&plist[j].chepai,&plist[j].dname,&plist[j].pname,&plist[j] .tbianhao,&plist[j].fbianhao,&plist[j].date);}for(j=0;j<i;j++){fprintf(fp,"\n%s\t%s\t%s\t%s\t%s\t%s",plist[j].chepai,plist[j].dname,plist[j].p name,plist[j].tbianhao,plist[j].fbianhao,plist[j].date);}fclose(fp);printf("\n保存成功!");printf("\npress enter to return menu\n");getchar();getchar();menu();}(二)信息删除:delete()分析:该模块的功能需要删除交通处罚单信息,要根据处罚单号、车辆、驾驶员、开单时间以及交警ID查找处罚记录并删除。

流程图如图3所示。

图3 删除函数流程图************************删除模块*************************** 程序代码void delet(){int j;int num;int f=-1;FILE*fp1,*fp2; //文件的运用char s1[20];if((fp1=fopen("plist.txt","r"))==NULL){printf("can not open file\n");printf("\npress enter to return menu\n");getchar();getchar();menu();}for(j=0;!feof(fp1);j++) //读取文件{fscanf(fp1,"%s%s%s%s%s%s",&plist[j].chepai,&plist[j].dname,&plist[j].pname,&pli st[j].tbianhao,&plist[j].fbianhao,&plist[j].date);}num=j;fclose(fp1);printf("请输入要删除的处罚单的编号\n");scanf("%s",s1);for(j=0;j<num;j++){if(strcmp(s1,plist[j].fbianhao)==0){f=j;if(f<num-1){for(j=f;j<num-1;j++){strcpy(plist[j].chepai,plist[j+1].chepai);strcpy(plist[j].dname,plist[j+1].dname);strcpy(plist[j].pname,plist[j+1].pname);strcpy(plist[j].tbianhao,plist[j+1].tbianhao);strcpy(plist[j].fbianhao,plist[j+1].fbianhao);strcpy(plist[j].date,plist[j].date);}}if((fp2=fopen("plist.txt","w"))==NULL){printf("文件打不开!\n");printf("\npress enter to return menu\n");getchar();menu();}for(j=0;j<num-1;j++) //保存文件{fprintf(fp2,"\n%s\t%s\t%s\t%s\t%s\t%s",&plist[j].chepai,&plist[j].dname,&plist[ j].pname,&plist[j].tbianhao,&plist[j].fbianhao,&plist[j].date);}fclose(fp2);printf("\n删除成功!\n");printf("\npress enter to return menu\n");getchar();getchar();menu();}}if(f<0){ printf("\n没有找到该学号的记录:\n");printf("\npress enter to return menu\n");getchar();getchar();menu();}}(三)find函数分析:该模块的功能是根据输入的处罚单号、车辆、驾驶员、开单时间以及交警ID查找相应的记录,方便驾驶员了解自己的处罚情况。

相关主题