交通处罚单管理系统C语言实习报告.doc_第1页
交通处罚单管理系统C语言实习报告.doc_第2页
交通处罚单管理系统C语言实习报告.doc_第3页
交通处罚单管理系统C语言实习报告.doc_第4页
交通处罚单管理系统C语言实习报告.doc_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

年键入公司名称user交通处罚单管理系统在此处键入文档的摘要。摘要通常是对文档内容的简短总结。在此处键入文档的摘要。摘要通常是对文档内容的简短总结。中 国 地 质 大 学(武汉) C语言课程设计论文课程名称: 学籍信息管理系统设计 教师姓名: 顾保磊 本科生姓名: 072111班 吴忠云 本科生学号: 20111003601 本科生专业: 机械设计制造及其自动化 所在院系: 机械与电子信息学院 类别: 理工类 日期: 2012-6 课程设计评语对课程论文的评语:平时成绩:课程论文成绩:总 成 绩:评阅人签名:注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。目 录课程设计评语目 录1课程论文题目2程序设计思路3功能模块图4数据结构设计5算法设计6程序代码7程序运行结果8编程中遇到的困难及解决方法9总结心得及良好建议10致谢1.题目要求 设计“交通处罚单管理系统”,交通处罚单必须涉及到车辆、驾驶员和开单交警的信息,还有交通处罚单号码、处罚时间等信。要求功能: (1)可以输入、删除、浏览交通处罚单信息; (2)可以按车辆、驾驶员和开单交警查询; (3)统计某时间段某个驾驶员的交通处罚单数目及交通处罚单号码。一、 需求分析交通处罚单信息用文件存储,提供文件的输入输出操作;要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;要实现按车辆、驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。二、 总体设计思路 整个管理系统被设计为输出模块,信息删除模块,信息浏览模块,信息查询模块和信息统计模块。2程序设计思路根据题目要求应提供键盘式菜单实现功能选择,还应该提供信息的输入操作,由于在程序中提供查询功能所以应有查找等操作。根据上面的需求分析,可以将这个系统的设计分为1.增添、删除、查询、修改输入模块 2.统计、浏览、排序等编辑模块。针对这些模块的设定另外在加入一下退出程序、显示设计者信息、储存在text文件等功能。再按照编程的基本思路进行编程。3功能模块图总体设计输入模块删除模块浏览模块查询模块统计模块4数据结构设计1.主函数主函数一般设计得比较简洁,只提供输入、处理和输出部分的函数调用。其中各个功能模块用菜单方式选择。程序main() /*主函数*/ int a,w; /*变量a保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*/ do puts(nn*MENU*nn);puts(n 1.Shuru data); printf(请输入车牌号码:n);puts(n 2.Shanchu data);puts(n 3.Liulan data);puts(n 4.Chaxun data);puts(n 5.Tongji data)puts(nnnn 6.Exit);puts(nntt *n);printf(choice your number(0-5): bb);scanf(%d,&n);if(n6) w=1; getchar();else w=0; while(w=1);/*选择功能*/ switch (n) case 1:shuru();break;/*输入模块*/ case 2:shanchu();break;/*删除模块*/ case 3:liulan();break;/* 浏览模块*/ case 4:chaxun();break;/* 查询模块*/ case 5:tongji();break;/* 统计模块*/ case 6:exit(0); /*退出*/ /*主函数*/main() menu();2、各功能模块设计(1) 输入模块 分析 单独看各个数据信息,开单日期以及驾驶员姓名为字符型,可以采用字符型数组;处罚单号码、车牌号码以及交警ID为整型,可以采用整型数组。一条记录对应一张交通处罚单,方便交通部门管理。程序/*输入模块*/void shuru() /*输入模块*/ FILE *fp; if(fp=fopen(data.txt,w)=NULL) printf(Can not open the filen); /*若打不开此文件则会退出输入模块*/ exit(0); scanf(%d,&dan0.chepai); printf(请输入驾驶员姓名:n); scanf(%s,); printf(请输交警ID:n); scanf(%d,&dan0.id); printf(请输入开单日期:n); scanf(%s,dan0.time); printf(请输入处罚单号:n); scanf(%d,&dan0.num); if(fwrite(&dan0,sizeof(struct cfd),1,fp)!=1) printf(file write errorn); else printf(输入信息成功!n); fclose(fp);(2) 删除模块 分析 该模块的功能需要删除交通处罚单信息,要根据处罚单号、车辆号码、驾驶员姓名、开单时间以及交警ID查找处罚记录并删除。 程序 /*删除模块*/void shanchu() int i,w,v,c; FILE *fp; printf(请输入要删除的处罚单号:); scanf(%d,&w); fp=fopen(data.txt,rb); for(i=0;i1000;i+) if(fread(&dani,sizeof(struct cfd),1,fp)!=1) break; v=i; for(i=0;iv;i+) if(w=dani.num) c=i; fclose(fp); fp=fopen(data.txt,wb); for(i=0;iv;i+) if(i!=c) fwrite(&dani,sizeof(struct cfd),1,fp); fclose(fp); (3)浏览模块分析该模块的功能是显示所有的处罚信息。程序/*浏览(全部)模块*/void liulan() int i; FILE *fp; fp=fopen(data.txt,rb); for(i=0;i1000;i+) if(fread(&dani,sizeof(struct cfd),1,fp)=1) printf(处罚单号:%dn,dani.num); printf(车牌号码:%dn,dani.chepai); printf(司机姓名:);puts(); printf(警察I D :%dn,dani.id); printf(处罚时间:);puts(dani.time); printf(-n); else break; fclose(fp);(4)查询模块 分析该模块的功能是根据输入的处罚单号、车辆号码、驾驶员姓名、开单时间以及交警ID查找相应的记录,方便驾驶员了解自己的处罚情况。程序void chaxun() int i,w,x,flag; FILE *fp; char v8; printf(请输入你想查询的信息:n); printf(1 - 按车牌号查询n); /*查询方式*/ printf(2 - 按司机姓名查询n); printf(3 - 按警察ID查询n); scanf(%d,&x); if(x=3) flag=0; printf(请输入要查询的警察ID:); scanf(%d,&w); fp=fopen(data.txt,rb); for(i=0;i1000;i+) if(fread(&dani,sizeof(struct cfd),1,fp)!=1) break; if(dani.id=w) printf(处罚单号:%dn,dani.num); printf(车牌号码:%dn,dani.chepai); printf(司机姓名:);puts(); printf(警察I D :%dn,dani.id); printf(处罚时间:);puts(dani.time); printf(-n); flag=1; break; if(flag=0) printf(找不到此处罚单信息!n); fclose(fp); else if(x=2) flag=0; printf(请输入要查询的司机姓名:); scanf(%s,v); fp=fopen(data.txt,rb); for(i=0;i1000;i+) if(fread(&dani,sizeof(struct cfd),1,fp)!=1) break; if(strcmp(,v)=0) printf(处罚单号:%dn,dani.num); printf(车牌号码:%dn,dani.chepai); printf(司机姓名:);puts(); printf(警察I D :%dn,dani.id); printf(处罚时间:);puts(dani.time); printf(-n); flag=1; break; if(flag=0) printf(找不到此处罚单信息!n); fclose(fp); else if(x=1) flag=0; printf(请输入要查询的处罚单号:); scanf(%d,&w); fp=fopen(data.txt,rb); for(i=0;i1000;i+) if(fread(&dani,sizeof(struct cfd),1,fp)!=1) break; if(dani.num=w) printf(处罚单号:%dn,dani.num); printf(车牌号码:%dn,dani.chepai); printf(司机姓名:);puts(); printf(警察I D :%dn,dani.id); printf(处罚时间:);puts(dani.time); printf(-n); flag=1; break; if(flag=0) printf(找不到此处罚单信息!n); fclose(fp); else printf(输入错误!n);(5)统计模块 分析该模块的功能是统计某时间段某个驾驶员的交通处罚单数目及交通处罚单号码,这样可以方便交通部门管理驾驶员信息,统计驾驶员的违规情况。程序void tongji() int i; FILE *fp; fp=fopen(data.txt,rb); for(i=0;i1000;i+) if(fread(&dani,sizeof(struct cfd),1,fp)!=1) break; printf(共有%d张处罚单!具体信息请看浏览。n,i); fclose(fp);六程序代码#include#include#include#define N 100struct Plist /处罚单 char vno20; /车牌号 char dname20; /驾驶员姓名 char pname20; /交警姓名 char pno20; /交警编号 char no20; /处罚单编号 char date20; /处罚日期 listN; /处罚单数组void input(); /输入模块void dele(); /删除模块void browse(); /浏览模块void search(); /查询模块void count(); /统计模块void menu(); /主菜单void vno_search(); /按车牌号查询void dna_search(); /按驾驶员姓名查询void pna_search(); /按开单交警姓名查询main() menu(); getchar();void menu() int n; int r; do system(cls); printf(ntttt交通处罚单管理系统n); printf(); printf( 菜单: 1-信息录入 2-信息删除 3-信息浏览 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(fp=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); 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(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+) 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();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); 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(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,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(); 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); 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(npress enter to return menun); getchar(); getchar(); menu();void search() int n; int r; do system(cls); printf(n请选择查询类型:nt1-按车牌号 2-按驾驶员姓名3:按开单交警姓名 4-返回主菜单n); printf(n请输入数字选择:); scanf(%d,&n); if(n4) r=1; getchar(); else r=0;while(r=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(); 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(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); 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(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(文件打不开!n); printf(npress enter to return menun); 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(npress enter to return sub menun); getchar(); getchar(); search();void count() int f=-1; int num; /所有罚单单数 int j; int total=0; /某驾驶员的罚单数 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%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(npress enter to return menun); getchar(); getchar(); menu();七、上机操作下面是各个模块的界面图。(1) 主菜单函数: (2) 输入模块 在主界面出现后输入1并按ENTER键,如图。输入要输入的记录数,然后逐条增加,如图(3) 删除模块(4) 浏览模块(5) 查询模块 (6) 统计模块8编程中遇到的困难及解决方法1.程序的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论