C语言程序设计之交通处罚单管理系统.doc
《C语言程序设计之交通处罚单管理系统.doc》由会员分享,可在线阅读,更多相关《C语言程序设计之交通处罚单管理系统.doc(23页珍藏版)》请在三一办公上搜索。
1、一、 题目要求【要求】:交通处罚单涉及到车辆,驾驶员和开单交警的信息,还有交通处罚单号码,处罚时间等信息。【功能】:(1) 要求可以输入,删除,浏览交通处罚单信息。 (2)可以按车辆,驾驶员和开单交警查询。(3)统计某时间段某个驾驶员的交通处罚数目及交通处罚单号码。 【提示】:(1)需求分析:交通处罚单信息用文件存储,提供文件的输输出操作;要求可以输入,输出,删除,浏览交通处罚单信息,因而要提供输入,删除和显示操作;要实现按车辆,驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。 (2)总体设计:整个管理系统被设计为信息录入模块,信息删除模块,信息浏览模块
2、,信息查询模块,信息统计模块。交通处罚单管理系统信息输入信息删除信息浏览信息查询信息统计退出二、详细设计:(一)处罚单管理系统界面函数【功能说明】此函数包括的功能包括信息录入,信息删除,信息浏览,信息查询(可分别根据车牌号、罚单号、开单交警号进行查询)、信息统计和退出。【主函数流程图】显示一系列功能选项输入n,判断n是否是16根据n的值调用各功能模块函数【主函数程序】void menu() int n; int r; do system(cls);printf(nttt 交通处罚单管理系统n); printf(*); printf( 菜单: 1-信息录入 n); printf( 2-信息删除
3、n);printf( 3-信息浏览 n);printf( 4-信息查询 n);printf( 5-信息统计 n);printf( 6-退出系统 n); printf(*); printf(请从输入数字选择相应的功能:); scanf(%d,&n); if(n6) r=1; getchar(); else r=0; while(r=1);switch(n) case 1:input();break; case 2:dele();break; case 3:browse();break; case 4:search();break; case 5:count();break; case 6:exi
4、t(0); (二)各功能模块设计1、录入处罚单模块【功能说明】处罚单包含的内容有车牌号,驾驶员姓名,交警姓名,交警号,处罚单号和处罚日期,因此相应的函数也应包含这些内容,在这个函数所控制的操作会依次提示输入以上内容。特别的,罚单号不能有重复,若输入的罚单号有重复,操作界面会提示罚单好重复,请重新输入。用结构体数组的形式存放若干条处罚单信息。struct Plist /处罚单 char vno20; /车牌号 char dname20; /驾驶员姓名 char pname20; /交警姓名 char pno20; /交警编号 char no20; /处罚单编号 char date20; /处罚日
5、期 listN; /处罚单数组【注意】listN中的N为处罚单条数,本程序采用宏定义#define N 100。【输入模块流程图】输入用户要输入处罚单纪录的条数j能否打开文件i从0到j-1依次输入处罚单信息,并保存到文件中j开始选择浏览还是返回主菜单【输入模块程序】void input() FILE*fp; int num; int i,j; if(fp=fopen(list.txt,r+)=NULL) if(fp=fopen(list.txt,w)=NULL) printf(文件打开或创建失败!n); printf(npress enter to return menun); getchar
6、(); menu(); printf(n请输入处罚单数量:); scanf(%d,&i); printf(nn); for(j=0;ji;j+) printf(输入第%d张处罚单的:n,j+1); printf(n 车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如20101112)n); printf(n注意:中间用空格隔开!n);scanf(%s%s%s%s%s%s,&listj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.no,&listj.date); for(j=0;jN) printf(n结构体数组数的N太小,请先修改N的值
7、n); printf(npress enter to return menun); getchar(); getchar(); menu(); printf(n); for(j=0;ji;j+) printf(输入第%d张处罚单的:n,j+1); printf(n车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如20101112)n);printf(n注意:中间用空格隔开!n); scanf(%s%s%s%s%s%s,&listj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.no,&listj.date); for(j=0;ji;j+)
8、 fprintf(fp,n%st%st%st%st%st%s,listj.vno,listj.dname,listj.pname,listj.pno,listj.no,listj.date); fclose(fp); printf(n保存成功!); printf(npress enter to return menun); getchar(); getchar(); menu();2、删除处罚单模块:【功能说明】操作者先输入删除命令2,在按操作要求输入要删除的处罚单号码,系统浏览处罚单,找到相关信息后,在删除这张处罚信息,再把这个信息的尾地址结到下一个信息的头地址上从而达到删除此信息的作用。【
9、删除模块流程图】打开文件输入要删除的处罚单的处罚单号s1s1=listj.no关闭文件关闭文件把要求删除的罚单后面的处罚单信息依次覆盖前一个信息能否打开文件回到主函数依次从文件中读取处罚单信息将新生成的结构体数组保存在源文件中文件能否打开没找到该学号文件打不开【删除模块程序】void dele() int j; int num; int f=-1; FILE*fp1,*fp2; char s120; if(fp1=fopen(list.txt,r)=NULL) printf(can not open filen); printf(npress enter to return menun); g
10、etchar(); getchar(); menu(); for(j=0;!feof(fp1);j+) /读取文件 fscanf(fp1,%s%s%s%s%s%s,&listj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.no,&listj.date); num=j; fclose(fp1); printf(请输入要删除的处罚单的编号n); scanf(%s,s1); for(j=0;jnum;j+) if(strcmp(s1,listj.no)=0) f=j; if(fnum-1) for(j=f;jnum-1;j+) strcpy(lis
11、tj.vno,listj+1.vno); strcpy(listj.dname,listj+1.dname); strcpy(listj.pname,listj+1.pname); strcpy(listj.pno,listj+1.pno); strcpy(listj.no,listj+1.no); strcpy(listj.date,listj.date); if(fp2=fopen(list.txt,w)=NULL) printf(文件打不开!n); printf(npress enter to return menun); getchar(); menu(); for(j=0;jnum-
12、1;j+) /保存文件 fprintf(fp2,n%st%st%st%st%st%s,listj.vno,listj.dname,listj.pname,listj.pno,listj.no,listj.date); fclose(fp2); printf(n删除成功!n); printf(npress enter to return menun); getchar(); getchar(); menu(); if(f0) printf(n没有找到该学号的记录:n); printf(npress enter to return menun); getchar(); getchar(); men
13、u(); 3、信息浏览模块:【功能说明】先输入命令3,系统将打开已存在的文件(如果不存在则提示无法打开),并将已经录入的处罚单信息依次从文件中读出来,显示在屏幕上。【信息浏览模块流程图】打开文件逐条显示文件中的处罚单信息关闭文件返回主函数 【删除模块程序】void browse() int j; int num; FILE*fp; if(fp=fopen(list.txt,r)=NULL) printf(can not open filen); printf(npress enter to return menun); getchar(); getchar(); menu(); for(j=0
14、;!feof(fp);j+) /读取文件 fscanf(fp,%s%s%s%s%s%s,&listj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.no,&listj.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,listj.vno,listj.dname,listj.pname,listj.pno,listj.no
15、,listj.date); printf(npress enter to return menun); getchar(); getchar(); menu();4、信息查询模块:【功能说明】先输入命令4,系统将刷新界面进入到一个查询专用界面。用户可以分别根据车牌号、驾驶员姓名和开单交警姓名进行查询。用户选择数字进行相应的操作。【信息查询模块流程图】打开文件输入用户要查询的信息x用户选择输入查询的车牌号n输入查询的驾驶员姓名name输入查询的开单警察name输入错误listj.vno=nostrcmp(listj.pname)=name)=0strcmp(listj.dname,name)=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 交通处 罚单 管理 系统
链接地址:https://www.31ppt.com/p-2384708.html