1、交通处罚单管理系统C语言课程设计交通处罚单管理系统中国地质大学(武汉)工程学院 052097 班 182011-8-22要求: 交通处罚单涉及到车辆, 驾驶员和开单交警的信息,还有交通处罚单号码, 处罚时间 等信息。功能:(1)要求可以输入,删除,浏览交通处罚单信息。(2)可以按车辆,驾驶员和开单交警查询。(3)统计某时间段某个驾驶员的交通处罚单数目及交通处罚单号码。提示:(1) 需求分析: 交通处罚单信息用文件存储, 提供文件的输入输出操作; 要求可以输入, 删除,浏览交通处罚单信息,因而要提供信息的输入,删除和显示操作;要实现按 车辆,驾驶员和开单交警查询,则要提供查找操作;另外提供统计操
2、作和键盘式选 择菜单以实现功能选择。(2) 总体设计:整个管理系统被设计为信息输入模板,信息删除模板,信息浏览模板, 信息查询模板和信息统计模板等。源代码:#include #include #include #define N 100 struct Plist / 处罚单char vno20; / 车牌号char dname20; / 驾驶员姓名char pname20; / 交警姓名char pno20; / 交警编号char no20; / 处罚单编号char date20; / 处罚日期 listN;/ 处罚单数组void input();/ 输入模块void dele();/ 删除模
3、块void browse();/ 浏览模块void search();/ 查询模块void count();/ 统计模块void menu();/ 主菜单void vno_search(); / 按车牌号查询void dna_search(); / 按驾驶员姓名查询void pna_search(); / 按开单交警姓名查询void main()menu();getchar();void menu()int n;int r;dosystem( cls );printf( ntttt 交通处罚单管理系统 n );printf( );printf( 菜单: 1- 信息录入 2-信息删除 3-信息浏
4、览 4-信息查询 5-信息统计 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:exit(0);void input()FILE*fp;int num;int i,j;if (f
5、p=fopen( list.txt ,r+ )=NULL)if (fp=fopen( list.txt ,w )=NULL)printf( 文件打开或创建失败 !n ); printf( npress enter to return menun );getchar(); menu();printf( n 请输入处罚单数量 : ); scanf( %d,&i);printf( nn );for (j=0;ji;j+)printf( 输入第d长处罚单的:n ,j+1);)n );printf( n 车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如printf( n 注意 : 中间用空格隔开
6、 !n );scanf( %s%s%s%s%s%,&slistj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.no,&li stj.date);for (j=0;jN)printf( n结构体数组数的N太小,请先修改N的值n);getchar();getchar(); menu();printf( n );for (j=0;ji;j+)printf( 输入第d长处罚单的:n ,j+1);printf( n 车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如 )n ); printf( n 注意 : 中间用空格隔开 !n );scanf(
7、 %s%s%s%s%s%,&slistj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.no,&li stj.date);for (j=0;ji;j+)fprintf(fp, n%st%st%st%st%st%s ,listj.vno,listj.dname,listj.pname,listj.p no,listj.no,listj.date);fclose(fp);printf( n 保存成功! );printf( npress enter to return menun );getchar();getchar();menu();void d
8、ele()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 );getchar();getchar();menu();/ 读取文件for (j=0;!feof(fp1);j+)fscanf(fp1, %s%s%s%s%s%,&slistj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.n o,&list
9、j.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(listj.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);
10、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-1;j+) / 保存文件fprintf(fp2, n%st%st%st%st%st%s ,listj.vno,listj.dname,listj.pname,listj.pno,l istj.no,listj.date);fclose(fp2);printf( n 删除成功! n );pri
11、ntf( npress enter to return menun );getchar();getchar();menu();if (f0)printf( n 没有找到该学号的记录 :n ); printf( npress enter to return menun );getchar();getchar(); menu();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
12、);getchar();getchar();menu();for (j=0;!feof(fp);j+) / 读取文件fscanf(fp, %s%s%s%s%s%,&slistj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.no ,&listj.date); fclose(fp);num=j;printf( n 已添加 条记录 nn ,num);printf( 车牌号 驾驶员姓名交警姓名交警编号处罚单编号处罚日期 n); for (j=0;jnum;j+) / 输出printf( n%st%st%st%st%st%s ,listj.vno,li
13、stj.dname,listj.pname,listj.pno,listj .no,listj.date);printf( npress enter to return menun );getchar(); getchar();menu();void search()int n;int r;dosystem( cls );printf( n 请选择查询类型 :nt1- 按车牌号 2- 按驾驶员姓名 : 按开单交警姓名 4- 返回主菜单 n ); printf( n 请输入数字选择 : );scanf( %d,&n);if (n4)r=1;getchar();else r=0; while (r
14、=1);switch (n)case 1:vno_search(); break ;case 2:dna_search(); break ;case 3:pna_search(); break ;case 4:menu();void vno_search()int f=-1;int num;int j;char no20;FILE*fp;if (fp=fopen( list.txt ,r )=NULL)printf( 文件打不开! n );printf( npress enter to return menun );getchar();menu();fscanf(fp, %s%s%s%s%s%
15、,&slistj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.no ,&listj.date); num=j; fclose(fp); printf( n 请输入车牌号 : ); scanf( %s ,no);printf( n 罚单的信息为: nn ); printf( 车牌号 驾驶员姓名交警姓名交警编号处罚单编号处罚日期 n );for (j=0;jnum;j+)if (strcmp(no,listj.vno)=0) f=j;printf( n%st%st%st%st%st%s ,listj.vno,listj.dname,listj.p
16、name,listj.pno,listj .no,listj.date); if (f0)printf( n 没有找到该班号的记录 !n ); printf( npress enter to return sub menun );getchar(); getchar(); search();void dna_search()int f=-1; int num;int j;char name20; FILE*fp;if (fp=fopen( list.txt ,r )=NULL)printf( 文件打不开! n );printf( npress enter to return menun );g
17、etchar(); menu();fscanf(fp, %s%s%s%s%s%,&slistj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.no ,&listj.date); num=j; fclose(fp); printf( n 请输入驾驶员的姓名 : ); scanf( %s ,name);printf( n 罚单的信息为: nn );printf( 车牌号 驾驶员姓名交警姓名交警编号处罚单编号处罚日期 n ); for (j=0;jnum;j+)if (strcmp(name,listj.dname)=0) f=j;printf( n
18、%st%st%st%st%st%s ,listj.vno,listj.dname,listj.pname,listj.pno,listj .no,listj.date); if (f0)printf( n 没有找到该班号的记录 !n ); printf( npress enter to return sub menun );getchar(); getchar(); search();void pna_search()int f=-1; int num;int j;char name20; FILE*fp;if (fp=fopen( list.txt ,r )=NULL)printf( 文件打
19、不开! n );printf( npress enter to return menun );getchar(); menu();fscanf(fp, %s%s%s%s%s%,&slistj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.no ,&listj.date); num=j; fclose(fp); printf( n 请输入开单交警的姓名 : ); scanf( %s ,name);printf( n 罚单的信息为: nn );printf( 车牌号 驾驶员姓名交警姓名交警编号处罚单编号处罚日期 n ); for (j=0;jnum
20、;j+)if (strcmp(name,listj.pname)=0) f=j;printf( n%st%st%st%st%st%s ,listj.vno,listj.dname,listj.pname,listj.pno,listj .no,listj.date);if (f0)printf( n 没有找到该班号的记录 !n ); printf( npress enter to return sub menun ); getchar(); getchar();search();void count()int f=-1;int num; / 所有罚单单数int j;int total=0; /
21、 某驾驶员的罚单数char name20;char time120;char time220; FILE*fp;if (fp=fopen( list.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%,&slistj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.no ,&listj.date); num=j;fclos
22、e(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(listj.date,time2)=0) f=j;total+;printf( n 罚单号 :%sn ,listj.no);if (f0)printf( n 没有找到记录 !n );printf( n 罚单总数为 :%dn ,total);printf( npress enter to return menun );getchar();getchar();menu();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1