C语言实习报告 交通处罚单管理系统.docx
- 文档编号:8189328
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:33
- 大小:62.52KB
C语言实习报告 交通处罚单管理系统.docx
《C语言实习报告 交通处罚单管理系统.docx》由会员分享,可在线阅读,更多相关《C语言实习报告 交通处罚单管理系统.docx(33页珍藏版)》请在冰豆网上搜索。
C语言实习报告语言实习报告交通处罚单管理系统交通处罚单管理系统中国地质大学C语言课程设计综合实习报告题目:
交通处罚单管理系统姓名:
高冀芸学号:
20091004500院系:
资源学院专业:
资源勘查工程班号:
021091-08指导教师:
童恒建2011年1月目录交通处罚单管理系统-3设计思路-3运行结果-18源程序-22学习所思所得-25交通处罚单管理系统1题目要求用C语言编写一个简单的模拟交通处罚单管理系统要求交通处罚单涉及到车辆、驾驶员和开单交警的信息,还有交通处罚单号码、处罚时间等信息;功能1要求可以输入、删除、浏览交通处罚单信息;2可以按车辆、驾驶员和开单交警查询;3统计某段时间某个驾驶员的交通处罚单数目及交通处罚单号;2需求分析交通处罚单信息用文件储存,提供文件的输入输出操作;要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;要求现按车辆、驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。
3总体设计整个管理系统被设计为信息输入模块、信息删除模块、信息浏览模块、信息查询模块、信息统计模块等。
4.详细设计1主函数主函数显示“交通处罚单管理系统”的主页面,其中各功能模块用菜单方式选择。
其流程图如图所示。
程序main()menu();getchar();voidmenu()intn;intr;/*变量n保存选择菜单选择数字,r判断输入的数字是否在功能菜单对应的数字范围内*/dosystem(cls);printf(ntttt交通处罚单管理系统n);printf();printf(菜单:
1-信息录入2-信息删除3-信息浏览4-信息查询5-信息统计6-退出系统n);printf();printf(请从输入数字选择相应的功能:
);scanf(%d,&n);if(n6)/*对选择的数字进行判断*/r=1;getchar();elser=0;while(r=1);/*选择功能*/switch(n)case1:
input();break;/*输入模块*/case2:
dele();break;/*删除模块*/case3:
browse();break;/*浏览模块*/case4:
search();break;/*查询模块*/case5:
count();break;/*统计模块*/case6:
exit(0);/*退出*/2各功能模块设计
(1)输入模块【数据结构】在这里,可以把处罚单涉及到的车辆、驾驶员和开单交警,处罚单号码、处罚时间作为结构体成员,要存放的处罚单信息就用结构体数组,整体的数据结构就比较完整、清晰,后续的信息处理及浏览将更加方便。
单独看各种信息可采用字符窜数组进行记录。
结构体数组;structPlist/处罚单charvno20;/车牌号chardname20;/驾驶员姓名charpname20;/交警姓名charpno20;/交警编号charno20;/处罚单编号chardate20;/处罚日期listN;/处罚单数组说明:
其中listN中的N为处罚单数量,程序中采用宏定义的方式,可随时在源程序宏定义中修改,本程序宏定义#defineN50。
输入模块程序流程图如下所示。
程序:
程序中涉及到文件的处理,要新建一个文件夹,将输入的信息保存进文件夹voidinput()FILE*fp;intnum;inti,j;if(fp=fopen(list.txt,r+)=NULL)if(fp=fopen(list.txt,w)=NULL)printf(文件打开或创建失败!
n);printf(npressentertoreturnmenun);getchar();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的值n);printf(npressentertoreturnmenun);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+)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(npressentertoreturnmenun);getchar();getchar();menu();
(2)删除模块该模块删除多余信息,需要先以只读的形式打开,可以以其中一个信息输入内容确定需删除的信息,本程序输入处罚单的编号,根据编号删除记录。
删除记录时,将数据从文件中删除,删除位置后面的记录往前移。
该模块的流程图如下。
程序:
voiddele()intj;intnum;intf=-1;FILE*fp1,*fp2;chars120;if(fp1=fopen(list.txt,r)=NULL)printf(cannotopenfilen);printf(npressentertoreturnmenun);getchar();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(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);strcpy(listj.date,listj.date);if(fp2=fopen(list.txt,w)=NULL)printf(文件打不开!
n);printf(npressentertoreturnmenun);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,listj.no,listj.date);fclose(fp2);printf(n删除成功!
n);printf(npressentertoreturnmenun);getchar();getchar();menu();if(f0)printf(n没有找到该学号的记录:
n);printf(npressentertoreturnmenun);getchar();getchar();menu();(3)浏览模块该功能时显示删除某些信息后处罚单上的所有记录。
这部分显示处罚单的数量,再打开文件,按结构体数组的形式输出所有信息即可。
其程序如下所示。
程序:
voidbrowse()intj;intnum;FILE*fp;if(fp=fopen(list.txt,r)=NULL)printf(cannotopenfilen);printf(npressentertoreturnmenun);getchar();getchar();menu();for(j=0;!
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,listj.date);printf(npressentertoreturnmenun);getchar();getchar();menu();(4).查询模块该模块有三个查询类型可供选择,可选择以车牌号、驾驶员姓名、开单交警姓名三种方式来查询,这些都将以菜单的形式选择,所以有一个主菜单和各个分模块。
同样查询模块也必须先打开文件夹。
菜单流程图如下。
分模块的流程图基本相同,现以按车牌号查询为例,编写其流程图。
菜单程序:
voidsearch()intn;intr;dosystem(cls);printf(n请选择查询类型:
nt1-按车牌号2-按驾驶员姓名3:
按开单交警姓名4-返回主菜单n);printf(n请输入数字选择:
);scanf(%d,&n);if(n4)r=1;getchar();elser=0;while(r=1);switch(n)case1:
vno_search();break;case2:
dna_search();break;case3:
pna_search();break;case4:
menu();各分模块程序:
按车牌号查询voidvno_search()/*按车牌号查询*/intf=-1;intnum;intj;charno20;FILE*fp;if(fp=fopen(list.txt,r)=NULL)printf(文件打不开!
n);printf(npressentertoreturnmenun);getchar();menu();for(j=0;!
feof(fp);j+)/读取文件fscanf(fp,%s%s%s%s%s%s,&listj.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.pname,listj.pno,listj.no,listj.date);if(f0)printf(n没有找到该车牌号的记录!
n);printf(npressentertoreturnsubmenun);getchar();getchar();search();按驾驶员姓名查询voiddna_search()/*按驾驶员姓名查询*/intf=-1;intnum;intj;charname20;FILE*fp;if(fp=fopen(list.txt,r)=NULL)printf(文件打不开!
n);printf(npressentertoreturnmenun);getchar();menu();for(j=0;!
feof(fp);j+)/读取文件fscanf(fp,%s%s%s%s%s%s,&listj.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%st%st%st%st%st%s,listj.vno,listj.dname,listj.pname,listj.pno,listj.no,listj.date);if(f0)printf(n没有找到该驾驶员的记录!
n);printf(npressentertoreturnsubmenun);getchar();getchar();search();按开单交警姓名查询voidpna_search()/*按开单交警姓名查询*/intf=-1;intnum;intj;charname20;FILE*fp;if(fp=fopen(list.txt,r)=NULL)printf(文件打不开!
n);printf(npressentertoreturnmenun);getchar();menu();for(j=0;!
feof(fp);j+)/读取文件fscanf(fp,%s%s%s%s%s%s,&listj.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.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(npressentertoreturnsubmenun);getchar();getchar();search();5.统计模块该模块先输入驾驶员的姓名和一个时间段,就可以统计某个驾驶员在某段时间内的处罚单数目和处罚单号。
程序为:
voidcount()intf=-1;intnum;/所有罚单单数intj;inttotal=0;/某驾驶员的罚单数charname20;chartime120;chartime220;FILE*fp;if(fp=fopen(list.txt,r)=NULL)printf(文件打不开!
n);printf(npressentertoreturnmenun);getchar();menu();for(j=0;!
feof(fp);j+)/读取文件fscanf(fp,%s%s%s%s%s%s,&listj.vno,&listj.dname,&listj.pname,&listj.pno,&listj.no,&listj.date);num=j;fclose(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(npressentertoreturnmenun);getchar();getchar();menu();5.运行结果将程序运行出来后,会的到各模块的界面图。
1主菜单函数:
效果如图所示输入相应的数字即可运行相应的模块。
输入模块,下图为输入和保存的信息。
删除模块信息浏览模块信息查询模块主菜单信息查询模块:
按车牌号查询统计模块6.整体程序源代码:
#include#include#include#defineN100structPlist/处罚单charvno20;/车牌号chardname20;/驾驶员姓名charpname20;/交警姓名charpno20;/交警编号charno20;/处罚单编号chardate20;/处罚日期listN;/处罚单数组voidinput();/输入模块voiddele();/删除模块voidbrowse();/浏览模块voidsearch();/查询模块voidcount();/统计模块voidmenu();/主菜单voidvno_search();/按车牌号查询voiddna_search();/按驾驶员姓名查询voidpna_search();/按开单交警姓名查询main()menu();getchar();voidmenu()intn;intr;dosystem(cls);printf(ntttt交通处罚单管理系统n);printf();printf(菜单:
1-信息录入2-信息删除3-信息浏览4-信息查询5-信息统计6-退出系统n);printf();printf(请从输入数字选择相应的功能:
);scanf(%d,&n);if(n6)r=1;getchar();elser=0;while(r=1);switch(n)case1:
input();break;case2:
dele();break;case3:
browse();break;case4:
search();break;case5:
count();break;case6:
exit(0);voidinput()FILE*fp;intnum;inti,j;if(fp=fopen(list.txt,r+)=NULL)if(fp=fopen(list.txt,w)=NULL)printf(文件打开或创建失败!
n);printf(npressentertoreturnmenun);getchar();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的值n);printf(npressentertoreturnmenun);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+)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(npressentertoreturnmenun);getchar();getchar();menu();voiddele()intj;intnum;intf=-1;FILE*fp1,*fp2;chars120;if(fp1=fopen(list.txt,r)=NULL)printf(cannotopenfilen);printf(npressentertoreturnmenun);getchar();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(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);strcpy(listj.date,listj.date);if(fp2=fopen(list.txt,w)=NULL)printf(文件打不开!
n);printf(npressentertoreturnmenun);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,listj.no,listj.date);fclose(fp2);printf(n删除成功!
n);printf(npressentertoreturnmenun);getchar();getchar();menu();i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言实习报告 交通处罚单管理系统 语言 实习 报告 交通处 罚单 管理 系统