您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > C语言交通处罚单管理系统
2011年度高级语言课程设计期末大作业《题目》院系:工学院机械系专业:机械工程及自动化年级:10级学生姓名:学号:指导教师:题号:第29题2011年6月一、题目(课程设计题库第X题)【说明及要求】实现交通罚款信息(车辆牌号、驾驶证号、交警代号、违章时间、罚款金额、缴费状态)的登记、删除、修改功能,并能分别按车辆牌号、驾驶证号、交警代号查询交通罚款信息。【提示】(1)定义结构体表示罚款信息;(2)用文件实现罚款信息存储;(3)分别编写函数实现罚款信息登记、修改、删除以及按车辆牌号、驾驶证号、交警代号查询交通罚款信息。(4)在main函数中调用上述函数进行演示。二、问题分析(一)需求分析1.交通处罚单信息用文件储存,提供文件的输入输出操作;2.要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;3.要车辆、驾驶员和开单交警查询,则要提供查找操作;4.另外提供系统操作和键盘式选择菜单以实现功能选择。(二)该问题可以分为以下几个模块交通处罚单管理系统信息录入信息删除信息浏览信息查询信息统计退出系统三、程序流程图【信息输入模块】NYYNFILE*fp;(fp=fopen(list.txt,r+))==NULLprintf(\n请输入处罚单数量:);j=0!feof(fp)j++MultiIFMultifscanf(fp,%s%s%s%s%s%s,&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date);开始【删除罚单模块】结束【信息查询模块】【信息查询模块】输入驾驶员姓名四、程序代码#includestdio.h#includestring.h#includestdlib.h#defineN100structPlist//处罚单{charvno[20];//车牌号chardname[20];//驾驶员姓名charpname[20];//交警姓名charpno[20];//交警编号charno[20];//处罚单编号chardate[20];//处罚日期}list[N];//处罚单数组voidinput();//输入模块voiddele();//删除模块voidbrowse();//浏览模块voidsearch();//查询模块voidcount();//统计模块voidmenu();//主菜单voidvno_search();//按车牌号查询voiddna_search();//按驾驶员姓名查询voidpna_search();//按开单交警姓名查询main(){menu();getchar();}voidmenu(){intn;intr;do{system(cls);printf(\n\t\t\t\t交通处罚单管理系统\n);printf(········································);printf(菜单:1-信息录入2-信息删除3-信息浏览4-信息查询5-信息统计6-退出系统\n);printf(········································);printf(请从输入数字选择相应的功能:);scanf(%d,&n);if(n1||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(\npressentertoreturnmenu\n);getchar();menu();}printf(\n请输入处罚单数量:);scanf(%d,&i);printf(\n\n);for(j=0;ji;j++){printf(输入第%d张处罚单的:\n,j+1);printf(\n车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如20110601)\n);printf(\n注意:中间用空格隔开!\n);scanf(%s%s%s%s%s%s,&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date);}for(j=0;ji;j++){fprintf(fp,\n%s\t%s\t%s\t%s\t%s\t%s,list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);}fclose(fp);printf(\n保存成功!);printf(\npressentertoreturnmenu\n);getchar();getchar();menu();}printf(\n请输入处罚单数量:);scanf(%d,&i);for(j=0;!feof(fp);j++)//读取文件{fscanf(fp,%s%s%s%s%s%s,&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date);}num=j+i;if(numN){printf(\n结构体数组数的N太小,请先修改N的值\n);printf(\npressentertoreturnmenu\n);getchar();getchar();menu();}printf(\n);for(j=0;ji;j++){printf(输入第%d张处罚单的:\n,j+1);printf(\n车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如20110601)\n);printf(\n注意:中间用空格隔开!\n);scanf(%s%s%s%s%s%s,&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date);}for(j=0;ji;j++){fprintf(fp,\n%s\t%s\t%s\t%s\t%s\t%s,list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);}fclose(fp);printf(\n保存成功!);printf(\npressentertoreturnmenu\n);getchar();getchar();menu();}voiddele(){intj;intnum;intf=-1;FILE*fp1,*fp2;chars1[20];if((fp1=fopen(list.txt,r))==NULL){printf(cannotopenfile\n);printf(\npressentertoreturnmenu\n);getchar();getchar();menu();}for(j=0;!feof(fp1);j++)//读取文件{fscanf(fp1,%s%s%s%s%s%s,&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date);}num=j;fclose(fp1);printf(请输入要删除的处罚单的编号\n);scanf(%s,s1);for(j=0;jnum;j++){if(strcmp(s1,list[j].no)==0){f=j;if(fnum-1){for(j=f;jnum-1;j++){strcpy(list[j].vno,list[j+1].vno);strcpy(list[j].dname,list[j+1].dname);strcpy(list[j].pname,list[j+1].pname);strcpy(list[j].pno,list[j+1].pno);strcpy(list[j].no,list[j+1].no);strcpy(list[j].date,list[j].date);}}if((fp2=fopen(list.txt,w))==NULL){printf(文件打不开!\n);printf(\npressentertoreturnmenu\n);getchar();menu();}for(j=0;jnum-1;j++)//保存文件{fprintf(fp2,\n%s\t%s\t%s\t%s\t%s\t%s,list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);}fclose(fp2);printf(\n删除成功!\n);printf(\npressentertoreturnmenu\n);getchar();getchar();menu();}}if(f0){printf(\n没有找到该学号的记录:\n);printf(\npressentertoreturnmenu\n);getchar();getchar();menu();}}voidbrowse(){intj;intnum;FILE*fp;if((fp=fopen(list.txt,r))==NULL){printf(cannotopenfile\n);printf(\npressentertoreturnmenu\n);getchar();getchar();menu();}for(j=0;!feof(fp);j++)//读取文件{fscanf(fp,%s%s%s%s%s%s,&list[j].vno,&list[j].dname,&list[j].pname,&list[j].pno,&list[j].no,&list[j].date);}fclose(fp);num=j;printf(\n已添加%d条记录\n\n,num);printf(车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n);for(j=0;jnum;j++)//输出{printf(\n%s\t%s\t%s\t%s\t%s\t%s,list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date);}printf(\npressentertoreturnmenu\n);getchar();getchar();menu();}voidsearch(){intn;intr;do{system(cls);printf(\n请选择查询类型:\n\t1-按车牌号2-按驾驶员姓名3:按开单交警姓名4-返回主菜单\n);printf(\n请输入数字选择:);scanf(%d,&n);if(n1||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;charno[20];FILE*fp;if((fp=fopen(list.txt,r))==NULL){printf(文件打
本文标题:C语言交通处罚单管理系统
链接地址:https://www.777doc.com/doc-4511024 .html