收藏 分销(赏)

交通处罚单系统-课程设计论文正文报告--大学毕业论文设计.doc

上传人:胜**** 文档编号:2862578 上传时间:2024-06-07 格式:DOC 页数:26 大小:590.50KB 下载积分:10 金币
下载 相关 举报
交通处罚单系统-课程设计论文正文报告--大学毕业论文设计.doc_第1页
第1页 / 共26页
交通处罚单系统-课程设计论文正文报告--大学毕业论文设计.doc_第2页
第2页 / 共26页


点击查看更多>>
资源描述
计算机系统基础Ⅱ 课程设计报告 题目:交通处罚单系统 学院: 软件学院 专业: 软件工程 班级: 133302 学号:20133543、20133531、20124733 姓名:施晨、蒋国奇、马美玲 指导老师: 马德印 设计日期:2014.6.3-2014.6.13 长春工业大学 课程设计说明书 课程设计名称 : 计算机系统基础II课程设计 指导教师 : 马德印 2014年6 月3 日 —— 2014年6月13日 起止日期 2014年6月3日 至 2014年6月13日 设计地点 北湖校区9楼机房 设计任务及日程安排 5月20日 教师布置课程设计任务,确定小组成员。 5月21-22日 收集、查阅相关资料,考虑选题。 5月23-6月2日 资料分析,学习和巩固( )知识,确定( )作为课程设计题目,确定小组成员分工。 6月3日 进行需求分析、总体设计,确定程序的应具备的功能模块。( ) 6月4-8日 编写程序代码,并进行 6月9-11日 进行程序的调试和测试,并不断修改完善程序。 6月12日 撰写程序报告, 6月13日 答辩。 1.课程设计题目及实现功能 课程设计就题目为交通处罚单系统。 交通处罚单信息包括:车牌号,驾驶员姓名,交警姓名,交警号,处罚单号,日期。 程序所提供的功能: 1.处罚单信息输入 2.处罚单信息删除 3.处罚单信息浏览 4.处罚单信息查询 5.处罚单信息统计 6.程序设计具有保存(采用文件)功能 2.程序设计的主要知识点 2.1处罚单信息输入采用结构体类型数组 信息输入集合多种数据,采用结构体数组方便这种符合数据的处理。信息数据类型只用了字符型。而且车牌号,驾驶员姓名,交警姓名,交警号,处罚单号,日期,均采用字符型20个字符。 2.2程序设计的读取和保存,设计(list.txt)文件,采用fopen()打开文件,fclose()关闭文件,fscanf()格式化读取文件,fprintf()格式化写入文件。 3. -总体设计 3.1 系统功能模块图 3.2 功能模块 输入模块 (2) 删除模块 (3)浏览模块 (4) 查询模块 (5) 统计模块 4.主要问题解决方法及技术关键 设计中主要通过函数来实现,然后在逐步细化,最终调试完成,主要包括以下函数。 4.1主菜单函数void menu() 将各部分模块函数写入主菜单函数,通过switch()结构输入对应数字分别进入各个模块函数,实现功能。 4.2输入信息函数void input() 当输入1时进入信息输入函数,具体功能实现如下,输入处罚单数量,打开文件夹(list.txt)若打开成功将输入的处罚单数量与之前保存数量相加,若超出保存容量范围,回到主菜单,否则写入信息。若打开文件夹(list.txt)失败,则建立该文件夹写入信息,如建立失败,返回主菜单。 4.3删除记录函数void delet()函数 当输入2时进入删除函数,具体功能实现如下,输入车牌号,利用字符串比对函数strcmp()与所输入编号一一比对,若所保存数据有与其相同,则通过strcpy()函数进行删除操作,若所保存数据未有相同,则返回主菜单。 4.4浏览函数void browse() 当输入3时,进入浏览函数,利用fscanf()函数进行读取文件,利用for循环体输出所存信息,返回主菜单。 4.5查询函数void search() 当输入4时进入查询函数,查询分为1.车牌号查询,2.驾驶员姓名查询,3.交警姓名查询。利用fscanf() 函数读取数据,利用strcmp()函数进行字符串比较,若所读取的数据有与其相同的数据,则输出该数据,若没有则回到主菜单。 4.6统计函数void count() 当输入5时进入统计函数,利用fscanf()读取数据,输入一个时间段,利用strcmp()和逻辑与,在for循环体中进行选择,并计数,选择出罚单数,罚单号,输出数据。返回主菜单,若未查询到,返回主菜单。 5. 程序清单 #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 100 struct Plist //处罚单 { char vno[20]; //车牌号 char dname[20]; //驾驶员姓名 char pname[20]; //交警姓名 char pno[20]; //交警编号 char no[20]; //处罚单编号 char date[20]; //处罚日期 } list[N]; //处罚单数组 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("\n\t\t\t\t交通处罚单管理系统\n"); printf("········································"); printf(" 菜单: 1-信息录入 2-信息删除 3-信息浏览 4-信息查询 5-信息统计 6-退出系统\n"); printf("········································"); printf("请从输入数字选择相应的功能:"); scanf("%d",&n); if(n<1||n>6) { 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 menu\n"); getchar(); menu(); } printf("\n请输入处罚单数量:"); scanf("%d",&i); printf("\n\n"); for(j=0;j<i;j++) { printf("输入第%d张处罚单的:\n",j+1); printf("\n车牌号:\n"); scanf("%s",&list[j].vno); printf("驾驶员姓名\n"); scanf("%s",&list[j].dname); printf("交警姓名\n"); scanf("%s",&list[j].pname); printf("交警号\n"); scanf("%s",&list[j].pno); printf("处罚单号\n"); scanf("%s",&list[j].no); printf("日期(如20101112)\n"); scanf("%s",&list[j].date); printf("\n注意:中间用空格隔开!\n"); } for(j=0;j<i;j++) { fprintf(fp,"\n%s\n%s\n%s\n%s\n%s\n%s",list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date); } fclose(fp); printf("\n保存成功!"); printf("\npress enter to return menu\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(num>N) { printf("\n结构体数组数的N太小,请先修改N的值\n"); printf("\npress enter to return menu\n"); getchar(); getchar(); menu(); } printf("\n"); for(j=0;j<i;j++) { printf("输入第%d张处罚单的:\n",j+1); printf("\n车牌号:\n"); scanf("%s",&list[j].vno); printf("驾驶员姓名\n"); scanf("%s",&list[j].dname); printf("交警姓名\n"); scanf("%s",&list[j].pname); printf("交警号\n"); scanf("%s",&list[j].pno); printf("处罚单号\n"); scanf("%s",&list[j].no); printf("日期(如20101112)\n"); scanf("%s",&list[j].date); printf("\n注意:中间用空格隔开!\n"); } for(j=0;j<i;j++) { fprintf(fp,"\n%s\n%s\n%s\n%s\n%s\n%s",list[j].vno,list[j].dname,list[j].pname,list[j].pno,list[j].no,list[j].date); } fclose(fp); printf("\n保存成功!"); printf("\npress enter to return menu\n"); getchar(); getchar(); menu(); } void dele() { int j; int num; int f=-1; FILE*fp1,*fp2; char s1[20]; if((fp1=fopen("list.txt","r"))==NULL) { printf("can not open file\n"); printf("\npress enter to return menu\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;j<num;j++) { if(strcmp(s1,list[j].no)==0) { f=j; if(f<num) { for(j=f;j<num;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+1].date); } } if((fp2=fopen("list.txt","w"))==NULL) { printf("文件打不开!\n"); printf("\npress enter to return menu\n"); getchar(); menu(); } for(j=0;j<num;j++) //保存文件 { fprintf(fp2,"\n%s\n%s\n%s\n%s\n%s\n%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("\npress enter to return menu\n"); getchar(); getchar(); menu(); } } if(f<0) { printf("\n没有找到该学号的记录:\n"); printf("\npress enter to return menu\n"); getchar(); getchar(); menu(); } } void browse() { int j; int num; FILE*fp; if((fp=fopen("list.txt","r"))==NULL) { printf("can not open file\n"); printf("\npress enter to return menu\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); for(j=0;j<num;j++) //输出 { printf("第%d条记录为:\n",j); printf("1.车牌号: %s\n",list[j].vno); printf("2.驾驶员姓名: %s\n",list[j].dname); printf("3.交警姓名: %s\n",list[j].pname); printf("4.交警号: %s\n",list[j].pno); printf("5.处罚单号: %s\n",list[j].no); printf("6.日期: %s\n",list[j].date); printf("\n"); } printf("\npress enter to return menu\n"); getchar(); getchar(); menu(); } void search() { int n; int r; do { system("cls"); printf("\n请选择查询类型:\n\t1-按车牌号 2-按驾驶员姓名3:按开单交警姓名 4-返回主菜单\n"); printf("\n请输入数字选择:"); scanf("%d",&n); if(n<1||n>4) { 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 no[20]; FILE*fp; if((fp=fopen("list.txt","r"))==NULL) { printf("文件打不开!\n"); printf("\npress enter to return menu\n"); 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); } num=j; fclose(fp); printf("\n请输入车牌号:"); scanf("%s",no); printf("\n罚单的信息为:\n\n"); for(j=0;j<num;j++) { if(strcmp(no,list[j].vno)==0) { f=j; printf("1.车牌号: %s\n",list[j].vno); printf("2.驾驶员姓名: %s\n",list[j].dname); printf("3.交警姓名: %s\n",list[j].pname); printf("4.交警号: %s\n",list[j].pno); printf("5.处罚单号: %s\n",list[j].no); printf("6.日期: %s\n",list[j].date); printf("\n"); } } if(f<0) printf("\n没有找到该班号的记录!\n"); printf("\npress enter to return sub menu\n"); getchar(); getchar(); search(); } void dna_search() { int f=-1; int num; int j; char name[20]; FILE*fp; if((fp=fopen("list.txt","r"))==NULL) { printf("文件打不开!\n"); printf("\npress enter to return menu\n"); 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); } num=j; fclose(fp); printf("\n请输入驾驶员的姓名:"); scanf("%s",name); printf("\n罚单的信息为:\n\n"); for(j=0;j<num;j++) { if(strcmp(name,list[j].dname)==0) { f=j; printf("1.车牌号: %s\n",list[j].vno); printf("2.驾驶员姓名: %s\n",list[j].dname); printf("3.交警姓名: %s\n",list[j].pname); printf("4.交警号: %s\n",list[j].pno); printf("5.处罚单号: %s\n",list[j].no); printf("6.日期: %s\n",list[j].date); printf("\n"); } } if(f<0) printf("\n没有找到该班号的记录!\n"); printf("\npress enter to return sub menu\n"); getchar(); getchar(); search(); } void pna_search() { int f=-1; int num; int j; char name[20]; FILE*fp; if((fp=fopen("list.txt","r"))==NULL) { printf("文件打不开!\n"); printf("\npress enter to return menu\n"); 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); } num=j; fclose(fp); printf("\n请输入开单交警的姓名:"); scanf("%s",name); printf("\n罚单的信息为:\n\n"); for(j=0;j<num;j++) { if(strcmp(name,list[j].pname)==0) { f=j; printf("1.车牌号: %s\n",list[j].vno); printf("2.驾驶员姓名: %s\n",list[j].dname); printf("3.交警姓名: %s\n",list[j].pname); printf("4.交警号: %s\n",list[j].pno); printf("5.处罚单号: %s\n",list[j].no); printf("6.日期: %s\n",list[j].date); printf("\n"); } } if(f<0) printf("\n没有找到该班号的记录!\n"); printf("\npress enter to return sub menu\n"); getchar(); getchar(); search(); } void count() { int f=-1; int num; //所有罚单单数 int j; int total=0; //某驾驶员的罚单数 char name[20]; char time1[20]; char time2[20]; FILE*fp; if((fp=fopen("list.txt","r"))==NULL) { printf("文件打不开!\n"); printf("\npress enter to return menu\n"); 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); } num=j; fclose(fp); printf("\n请根据提示输入驾驶员的姓名和一个时间段,统计某个驾驶员在某段时间内的处罚单数目和罚单号\n"); printf("\n\n请输入驾驶员的姓名:"); scanf("%s",name); printf("\n请输入一个较早的时间:"); scanf("%s",time1); printf("\n请输入一个最近的时间:"); scanf("%s",time2); for(j=0;j<num;j++) { if((strcmp(list[j].date,time1)>=0)&&(strcmp(list[j].date,time2)<=0)) { f=j; total++; printf("\n罚单号:%s\n",list[j].no); } } if(f<0) printf("\n没有找到记录!\n"); printf("\n罚单总数为:%d\n",total); printf("\npress enter to return menu\n"); getchar(); getchar(); menu(); } 6.体会及总结 6.1在设计及编程过程中遇到的问题及解决方法 一些是由于之前执行的程序未关闭而引起的执行错误,关闭之前程序后恢复,在修改代码阶段忘记加分号和括号,引起了编译错误,最终找到问题的根本解决了问题。 6. 2收获与心得 经过一个学期C语言的实习,我进一步理解和运用结构化程序设计的思想和方法,通过近两周的课程设计,初步掌握 开发一个小型实用系统的基本方法,学会调试相对长一点程序,学会利用流程图表示算法, 进一步掌握和提高利用C语言进行程序设计的能力。 在编程中遇到困难是自然的,不过只要我们脚踏实地的编程,这些困难不算什么,我们是能够克服的。 参考文献 [1]于秀霞,c语言程序设计[2]谭浩强,c语言程序设计第四版[3]Knuth,《C语言教程》[4]谭浩强,c语言程序设计第三版[5]Yale N.P att,计算机系统概论。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服