c语言交通处罚单管理程序(实验报告和源代码)
- 格式:doc
- 大小:311.50 KB
- 文档页数:27
交通处罚单管理系统C语言课程设计交通处罚单管理系统C语言课程设计1、设计目的随着社会的不断发展,交通事故频发,交通管理逐渐成为了每个城市必须要解决的问题。
而交通处罚单管理系统(简称它为“系统”)便是为了更好地解决这个问题而被设计的。
系统能够有效地记录违规者的信息,违规行为以及处罚措施,并能够根据不同的情况对其进行分类和管理。
它不仅可以节约工作时间和人力资源,还能迅速让违规者得到及时的处罚,使道路更加安全,保护公共安全。
2、系统设计2.1 系统功能本系统的主要功能包括:违章记录、罚款、扣除驾照分数、上报违规记录、信息输入和查询、信息修改和删除等主要功能项。
违章记录:系统可以记录所有交通违法行为,包括罚款和扣分等信息。
罚款:系统可以将罚款记录下来,并可以将其发送给罚款的人。
扣除驾照分数:系统可以记录扣除的分数并将其发送给驾照的持有人。
上报违规记录:系统可以根据不同情况自动生成违规记录并将其上报。
信息输入和查询:系统可以对所有交通违法行为信息进行系统记录,包括车主信息、车辆信息和罚款信息。
其次,系统还具有较为便利的查询功能,快速定位到违规者的信息。
信息修改和删除:系统在管理中还可以对一些信息进行修改和删除,更好地保证了信息的及时更新和有效管理。
2.2 系统设计系统的设计基本上可以分为前端设计和后端设计两部分。
2.2.1 前端设计设计前端系统的正确流程显然是十分重要的。
在本系统中,我们首先采用了图形化界面来实现用户与系统的交互,界面设计简洁明了易于操作。
另外,系统还采用了文本模式界面,在需要大量输入或者查询时,用户可以直接使用命令行界面操作软件。
2.2.2 后端设计后端设计是系统运行的核心。
在本系统中,我们主要采用了c语言的基础来实现系统的后端代码,用c语言基础的快速处理能力来满足系统管理中对于不同功能的处理需要。
3、系统优势通过上述系统的设计,该系统具有如下优势:·系统具有良好的稳定性,信息处理的准确与高效。
C语言程序设计姓名:张强强学号:20121003695班序号:011121前言:C语言是近年来国内得到迅速推广使用的一种计算机语言。
C语言程序设计课程是计算机专业和信息管理专业的核心专业基础课,无论是计算机专业还是非计算器专业的学生,学习好C语言是非常重要的。
一.交通处罚单管理要求:交通处罚单涉及到车辆,驾驶员和开单交警的信息,还有交通处罚单的号码,处罚时间等信息。
功能:(1) 要求可以输入,删除,浏览交通处罚单信息。
(2) 可以按车辆,驾驶员和开单交警进行查询。
(3) 统计某时间段某个驾驶员的交通处罚数目及交通处罚单号码。
(一)需求分析交通处罚单信息用文件存储,提供文件的输入输出操作;要求可以输入,输出,删除,浏览交通处罚单信息,因而要提供输入,删除和显示操作;要实现按车辆,驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。
(二)总体设计整个管理系统被设计为信息输入模块,信息删除模块,信息浏览模块,信息查询模块和信息统计模块等。
如下图:(三)详细设计1.主函数实现的是显示菜单以及函数调用,其中各功能模块用菜单方式选择。
程序:int main(){int n; /**变量n保存选择菜单数字**/printf("\n\n")printf ( " ****************菜单*****************\n");printf ( " * *\n");printf ( " * 1.输入 2.删除 *\n");printf ( " * *\n");printf ( " * 3.浏览 4.查询 *\n");printf ( " * *\n");Printf ( " * 5.统计 6.退出*\n");printf ( "* *\n");printf("****************************************\n");printf("请选择功能菜单: [ ]\b\b");scanf("%d",&n);if (n<1||n>7) n=7;switch (n) /***选择功能***/ {case 1:shuru();liulan();main();break; /***输入模块***/ case 2:shanchu();liulan();main();break; /***删除模块***/ case 3:liulan();main();break; /*** 浏览模块***/ case 4:chaxun();main();break; /*** 查询模块***/ case 5:tongji();main();break; /*** 统计模块***/ case 6:exit(0); break; /***退出***/case 7: printf("error\n");}}2.信息储存函数。
交通处罚单管理系统(C语言课程设计) 交通处罚单管理系统中国地质大学(武汉) 地球科学学院 014072班2010-11-26用C语言编写一个简单的模拟交通处罚单管理系统 [要求]交通处罚单涉及到车辆、驾驶员和开单交警的信息,还有交通处罚单号码、处罚时间等信息;[功能](1) 要求可以输入、删除、浏览交通处罚单信息; (2) 可以按车辆、驾驶员和开单交警查询; (3) 统计某段时间某个驾驶员的交通处罚单数目及交通处罚单号;源代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#define N 100struct 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 车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如20101112)\n");printf("\n注意:中间用空格隔开!\n");scanf("%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&list[j].pname,&lis t[j].pno,&list[j].no,&list[j].date);}for(j=0;j<i;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("\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车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如20101112)\n");printf("\n注意:中间用空格隔开!\n");scanf("%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&list[j].pname,&lis t[j].pno,&list[j].no,&list[j].date);}for(j=0;j<i;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("\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-1){for(j=f;j<num-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("\npress enter to return menu\n");getchar();menu();}for(j=0;j<num-1;j++) //保存文件{fprintf(fp2,"\n%s\t%s\t%s\t%s\t%s\t%s",list[j].vno,list[j].dname,lis t[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);printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n");for(j=0;j<num;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("\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");printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n");for(j=0;j<num;j++){if(strcmp(no,list[j].vno)==0){f=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);}}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");printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n");for(j=0;j<num;j++){if(strcmp(name,list[j].dname)==0){f=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);}}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");printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n");for(j=0;j<num;j++){if(strcmp(name,list[j].pname)==0){f=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);}}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();}。
交通处罚单管理系统_C语言实习报告交通处罚单管理系统_C语言实习报告一、实习背景我在大学期间学习了计算机科学与技术专业,其中涉及的编程语言有Java、C以及Python等。
但是在我个人的评估中,C语言是最难的,因为它需要更多的细节处理和代码实现。
因此,我决定进入XX交通管理局实习,学习如何使用C语言开发交通处罚单管理系统。
此次实习有助于我提高我的编程技能,尤其是在C语言方面。
二、项目背景介绍在过去的几年中,交通事故在全国范围内逐年增加。
因此,各个城市交通管理部门制定了不同的管理措施来降低这些事故。
其中,处罚单作为一项重要的处罚手段,已经被广泛应用。
然而,由于管理方式的复杂性,很难人工维护处罚单,因此需要一种自动化的方式来管理。
基于此,我们设计了一个交通处罚单管理系统。
该系统是一个命令行工具,输入命令后可以执行以下操作:1. 生成处罚单:输入驾驶员和车辆的信息,系统将生成一张处罚单并记录在系统中;2. 查找处罚单:输入违规者的信息,系统将返回该违规者的所有处罚单信息;3. 修改处罚单:输入需要更改的处罚单信息,系统将修改处罚单;4. 删除处罚单:输入需要删除的处罚单信息,系统将删除处罚单;5. 统计系统中处罚单数量和处罚总金额;6. 退出系统。
三、技术实现1.使用C语言开发命令行界面,采用鼠标和键盘输入操作;2.使用C语言结构体,定义并维护每张处罚单的信息;3.使用C语言文件操作,记录和读取已生成的处罚单;4.使用C语言指针对各个处罚单进行操作;5.使用C语言函数实现操作的不同步骤;6.使用C语言条件判断和循环语句,实现不同操作的逻辑处理。
四、实习收获1.学习和加强了C语言的编程技能;2.增加了应对复杂问题的能力;3.了解了交通管理部门的一些相关规定;4.进一步了解了实际应用的开发流程和方法;5.知道了如何建立有效的交通管理系统。
五、实习总结通过这次C语言实习,我深刻认识到了良好的交通管理对于国家的重要性。
交通处罚单管理程序2013级自动化学院031340101 蔡紫薇一、程序主要功能(1)菜单:菜单用来选择程序的执行和退出。
菜单程序中包含了函数system()的使用方法:system(“cls”) 功能:清屏system(”pause”)功能:暂停程序执行,按任意键后继续执行【使用该函数必须包含头文件”stdlib.h”】(2)程序一:记录输入程序Input Record功能:从键盘一次输入交通处罚单的信息(一条记录),依次存放到结构体数组中。
插入一条记录后,显示提示信息:是否输入下一条记录,如确认则继续输入,否则,退出输入功能并返回记录数n。
程序二:记录显示程序Display All Records按顺序显示所有记录,每屏显示10条记录。
每显示10条记录,按<Enter>键继续显示下一屏。
程序三:记录删除程序Delete a Record功能:输入待删除的姓名,按姓名查找,显示提示信息,让用户再次确认是否要删除,确认后,将该姓名记录删除。
程序四:排序程序Sort功能:以姓名为序升序排列数组。
程序五:记录插入程序Insert a Record功能:在以姓名为序的数组中插入一条记录,插入后,数组仍有序。
输出插入成功的信息。
程序六:记录查找并显示程序Query功能:输入司机姓名,查找包含司机名字的记录,并显示该教师元的所有罚单信息。
程序七:正文文件添加数据到结构体数组程序Add Records from a Text File功能:用户事先建立一个正文文件data.txt,存放多个待加入的记录。
提示输入正文文件的文件名,然后从该文件中一次性加入多条处罚单记录。
程序八:记录写入文件程序Write to a Text File功能:将数组的全部记录写入文件records.txt,要求文件格式和文件data.txt相同二、对题目的分析(这篇交通处罚单管理程序显然需要用到大量数组、结构体和指针的知识点。
交通处罚单管理系统中国地质大学(武汉)地球科学学院 014072班2010-11-26用C语言编写一个简单的模拟交通处罚单管理系统[要求]交通处罚单涉及到车辆、驾驶员和开单交警的信息,还有交通处罚单号码、处罚时间等信息;[功能](1)要求可以输入、删除、浏览交通处罚单信息;(2)可以按车辆、驾驶员和开单交警查询;(3)统计某段时间某个驾驶员的交通处罚单数目及交通处罚单号;源代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#define N 100struct 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(); //按开单交警姓名查询{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 车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如20101112)\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;j<i;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,lis t[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车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如20101112)\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;j<i;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("\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-1){for(j=f;j<num-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("\npress enter to return menu\n");getchar();menu();}for(j=0;j<num-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,l ist[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);printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n");for(j=0;j<num;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("\npress enter to return menu\n");。
交通处罚单管理系统_C语言实习报告交通处罚单管理系统_C语言实习报告一、实习介绍在大学期间,我有幸参加了一次C语言实习,实习的主题是交通处罚单管理系统。
通过这段实习,我了解了如何使用C 语言实现一个功能完备的交通处罚单管理系统,并且在实践中巩固了自己的C语言知识。
二、实习内容1.需求分析在实习开始前,我们的导师向我们详细阐述了这个交通处罚单管理系统的需求,包括以下功能:(1)添加罚单:管理员可以通过输入违法车辆的相关信息,添加罚单,并将罚款金额记录在罚单中。
(2)查询罚单:管理员可以通过输入违法车辆的相关信息,查询系统中已经添加的罚单。
(3)修改罚单:管理员可以通过输入罚单号,修改罚单中一些信息,如罚款金额。
(4)删除罚单:管理员可以通过输入罚单号,删除某个罚单。
(5)统计罚单:管理员可以根据时间或者地点等条件,对系统中的罚单进行统计,包括罚款金额、数量等。
2.设计实现在学习了C语言基础知识之后,我们开始着手设计实现交通处罚单管理系统。
由于需求比较明确,我们很快确定了系统的各个模块及其实现方式。
具体来说,我们定义了结构体来表示违法车辆的相关信息,例如车牌号、违法地点、罚款金额等。
然后我们设计了相应的函数,如添加罚单函数、查询罚单函数、修改罚单函数、删除罚单函数、统计罚单函数等。
在函数的实现中,我们采用了指针来简化程序的设计,并且尽可能考虑了错误处理的情况,以保证系统的稳定性。
3.测试验证完成代码的编写之后,我们还进行了系统的测试验证。
在测试中,我们通过自行构造一些罚单数据,并进行各种操作,比如添加、查询、修改、删除、统计等操作。
通过测试,我们发现系统完全符合我们的需求,并且稳定性也得到了有效保证。
三、实习收获通过这段实习,我对C语言的掌握更加深入了解,对算法的实现能力也有了一定的提升。
同时,在实现这个交通处罚单管理系统的过程中,我还加深了对软件工程的理解,了解了开发一个完整系统需要考虑的方方面面,比如需求分析、模块设计、代码实现、测试验证等等。
C语言课程设计报告题目:交通处罚单管理程序学号 021410219姓名李林指导教师张定会完成日期 2015.5.8一、功能介绍用结构体数组结构实现简单的交通处罚单管理功能,要求具有以下功能:(1)可以输入,删除,显示,修改某个驾驶员的交通处罚信息;(2)可以按驾驶员查询交通处罚单。
程序执行过程为:循环显示主菜单,用户在Give you choice:处输入选项,即按照功能列表输入0~8中的任意一个数字。
按回车后,执行相应功能。
各项菜单功能:(1)Input Record(输入若干条记录)从键盘上一次输入一张交通处罚单的信息(一条记录),依次存放到结构体数组里。
插入一条记录后,显示提示信息:确认是否输入下一条记录,如确认,继续输入,否则,退出输入功能。
(2)Display All Record(显示所有记录)按顺序显示数组中所有记录,每屏显示10条记录。
每显示10条,按<Enter>键继续显示下一屏。
(3)Delete a record(按姓名查找,删除一条记录)输入待删除记录的姓名,显示提示信息,让用户再次确认是否要删除。
确认后,将该姓名的记录删除。
(4)Sort(排序)以姓名为序升序排列数组。
(5)Insert a Record(插入一条记录)在以姓名为序排列数组中插入一条记录,插入后,数组仍然有序。
输出插入成功信息。
(6) Query(查找并显示一个记录)输入驾驶员姓名,查找包含该驾驶员名字的记录,并显示该驾驶员的所有罚单信息。
(7)Add Records from a Text file (从正文文件添加数据到结构体数组中)用户可提前建立一个正文文件data.txt,存放多个带加入的记录。
提示输入正文的文件名,然后从该文件中一次性加入多条处罚单记录。
文件data.txt格式如下:2 //表示带添加的记录数//WangXiao 95 DingFei 000001 2013 1 23LiuLin 87 CaiMing 000002 2013 1 24(8)Write to a Text file将数组中的全部记录写入文件records.txt,要求文件格式和data.txt相同。
C语言设计实习报告工程学院土木工程052097班姓名:彭文博班号:052097学号:20091000692题目:交通处罚单管理系统指导老师:梁老师日期:20110826一,题目要求:【要求】:交通处罚单涉及到车辆,驾驶员和开单交警的信息,还有交通处罚单的号码,处罚时间等信息。
【功能】:(1) 要求可以输入,删除,浏览交通处罚单信息。
(2)可以按车辆,驾驶员和开单交警查询。
(3)统计某时间段某个驾驶员的交通处罚数目及交通处罚单号码。
二,需求分析:交通处罚单信息用文件存储,提供文件的输输出操作;要求可以输入,输出,删除,浏览交通处罚单信息,因而要提供输入,删除和显示操作;要实现按车辆,驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。
三,总体设计:整个管理系统被设计为信息输入模块,信息删除模块,信息浏览模块,信息查询模块,信息统计模块。
四,详细设计及实现:1,处罚单管理系统界面函数此函数包括的功能是建立新的罚单,按司机姓名查询罚单并浏览相关信息,按交警姓名查询罚单并浏览相关信息,按罚单号查询罚单并浏览相关信息,删除罚单,数据统计和退出处罚单管理系统。
void Menu()printf("\n\t\t\t\t交通处罚单管理系统\n");printf("········································");printf(" 菜单: 1-信息录入2-信息删除3-信息浏览4-信息查询5-信息统计6-退出系统\n");printf("········································");printf("请从输入数字选择相应的功能:");2,各功能模块设计(1)创建新的交通处罚单处罚单包含的内容有处罚单号,车牌号,司机姓名,交警姓名,和处罚日期,因此相应的函数也应包含这些内容,在这个函数所控制的操作会依次提示输入以上内容。
2011年度高级语言课程设计期末大作业《题目》院系:工学院机械系专业:机械工程及自动化年级:10 级学生姓名:学号:指导教师:题号:第29 题2011年6月一、题目(课程设计题库第X题)【说明及要求】实现交通罚款信息(车辆牌号、驾驶证号、交警代号、违章时间、罚款金额、缴费状态)的登记、删除、修改功能,并能分别按车辆牌号、驾驶证号、交警代号查询交通罚款信息。
【提示】(1)定义结构体表示罚款信息;(2)用文件实现罚款信息存储;(3)分别编写函数实现罚款信息登记、修改、删除以及按车辆牌号、驾驶证号、交警代号查询交通罚款信息。
(4)在main 函数中调用上述函数进行演示。
二、问题分析(一)需求分析1.交通处罚单信息用文件储存,提供文件的输入输出操作;2.要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;3.要车辆、驾驶员和开单交警查询,则要提供查找操作;4.另外提供系统操作和键盘式选择菜单以实现功能选择。
(二)该问题可以分为以下几个模块三、程序流程图【信息输入模块】N YY NFILE*fp; (fp=fopen("list.txt","r+"))==N printf("\n 请输入处罚单数量:"); j=0 !feof(fp) j++MultiIF Multi fscanf(fp,"%s%s%s%s%s%s",&list[j].vno,&list[j].dname,&l 开始结束【删除罚单模块】【信息查询模块】【信息查询模块】输入驾驶员姓名四、程序代码#include<stdio.h> #include<string.h> #include<stdlib.h> #define N 100struct 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 车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如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;j<i;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,lis t[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车牌号、驾驶员姓名、交警姓名、交警号、处罚单号、日期(如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;j<i;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("\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-1){for(j=f;j<num-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("\npress enter to return menu\n");getchar();menu();}for(j=0;j<num-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,l ist[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);printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n");for(j=0;j<num;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("\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");printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n");for(j=0;j<num;j++){if(strcmp(no,list[j].vno)==0){f=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);}}if(f<0)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");printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n");for(j=0;j<num;j++){if(strcmp(name,list[j].dname)==0){f=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);}}if(f<0)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");printf("车牌号驾驶员姓名交警姓名交警编号处罚单编号处罚日期\n");for(j=0;j<num;j++){if(strcmp(name,list[j].pname)==0){f=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);}}if(f<0)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();}五、运行结果(截图)程序主界面:信息录入:信息录入后查看到的结果【信息查询】【查询结果】【信息统计结果】【选择信息删除模块后的结果】六、课程设计过程问题讨论。
C语言程序设计课程设计材料学生姓名:朱明杰学号:031410627 系 (院):自动化学院设计题目: 交通处罚单管理系统完成日期: 2015年5月课程设计目的 (3)课程设计内容 (3)总体设计 (3)详细设计………………………………………4运行结果………………………………………8程序调试………………………………………10编程体会 (11)一、课程设计目的1.通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
2.通过课程设计,进一步掌握C有并重要的数据结构。
掌握并熟练运用指针、链表、结构体、文件等数据结构。
3.通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。
4.通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个中小型系统。
5.通过课程设计,加强了自己的程序分析能力。
6.通过课程设计,完成了交通处罚单管理系统,很多功能还待完善。
二、课程设计内容用C语言编写软件完成以下任务:1交通处罚单基本信息输入(数据包括处罚单号码,车牌号码,姓名,开单警察的信息ID,处罚时间等),信息保存在data.txt文件中,2交通处罚单基本信息浏览。
将文件内所有的交通处罚单信息全部输出展现出来。
3交通处罚单基本信息查询。
可以查询特定的交通处罚单信息。
4交通处罚单基本信息统计。
可以查询某一个时间段的所有的交通处罚单信息。
5 交通处罚单基本信息删除。
删除不需要的交通处罚单信息。
三、总体设计本系统的功能模块如图1所示,主要有以下模块:(1)交通处罚单基本信息输入:构造函数int input(),对产生新的交通处罚单的信息进行输入。
(2)交通处罚单基本信息输出:构造函数void display(),全部输出已被录入交通处罚单的所有信息。
(3)交通处罚单基本信息删除:构造函数int delete(),经确认后调用delete函数删除该姓名的记录。
交通处罚单管理系统李勇峰C语言设计实习报告勘查技术与工程(基础工程方向)姓名:李勇峰班号:054081学号:20081004133题目:交通处罚单治理系统指导教师:王老师时刻: 2009-2010学年秋一,题目要求【要求】:交通处罚单涉及到车辆,驾驶员和开单交警的信息,还有交通处罚单的号码,处罚时刻等信息。
【功能】:(1) 要求能够输入,删除,扫瞄交通处罚单信息。
(2)能够按车辆,驾驶员和开单交警查询。
(3)统计某时刻段某个驾驶员的交通处罚数目及交通处罚单号码。
【提示】(1)需求分析:交通处罚单信息用文件储备,提供文件的输输出操作;要求能够输入,输出,删除,扫瞄交通处罚单信息,因而要提供输入,删除和显示操作;要实现按车辆,驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。
(2)总体设计:整个治理系统被设计为信息输入模块,信息删除模块,信息扫瞄模块,信息查询模块,信息统计模块。
1此函数包括的功能是建立新的罚单,按司机姓名查询罚单并扫瞄有关信息,按交警姓名查询罚单并扫瞄有关信息,按罚单号查询罚单并扫瞄有关信息,删除罚单,数据统计和退出处罚单治理系统。
void Menu(){printf("" );printf( " 欢迎来到交通处罚单治理系统!\n" );printf("************************************************\n");;printf( " 1. 建立新的罚单\n" );printf( " 2. 按照司机姓名查找并扫瞄有关信息\n" );printf( " 3. 按照交通警察姓名查找并扫瞄有关信息\n" );printf( " 4. 按照车牌号码查询并扫瞄有关信息\n" );printf( " 5. 删除处罚单\n" );printf( " 6. 数据统计\n" );printf( " 0. 退出\n" );printf( "******************************************* *****\n" );}2,各功能模块设计(1)创建新的交通处罚单处罚单包含的内容有处罚单号,车牌号,司机姓名,交警姓名,和处罚日期,因此相应的函数也应包含这些内容,在那个函数所操纵的操作会依次提示输入以上内容。
C语言程序设计课程设计材料学生姓名:朱明杰学号:031410627系(院):自动化学院设计题目: 交通处罚单管理系统完成日期: 2015年5月●课程设计目的 (3)●课程设计内容 (3)●总体设计 (3)●详细设计 (4)●运行结果 (8)●程序调试 (10)编程体会 (11)一、课程设计目的1.通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
2.通过课程设计,进一步掌握C有并重要的数据结构。
掌握并熟练运用指针、链表、结构体、文件等数据结构。
3.通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。
4.通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个中小型系统。
5.通过课程设计,加强了自己的程序分析能力。
6.通过课程设计,完成了交通处罚单管理系统,很多功能还待完善。
二、课程设计内容用C语言编写软件完成以下任务:1交通处罚单基本信息输入(数据包括处罚单号码,车牌号码,姓名,开单警察的信息ID,处罚时间等),信息保存在data.txt文件中,2交通处罚单基本信息浏览。
将文件内所有的交通处罚单信息全部输出展现出来。
3交通处罚单基本信息查询。
可以查询特定的交通处罚单信息。
4交通处罚单基本信息统计。
可以查询某一个时间段的所有的交通处罚单信息。
5 交通处罚单基本信息删除。
删除不需要的交通处罚单信息。
三、总体设计本系统的功能模块如图1所示,主要有以下模块:(1)交通处罚单基本信息输入:构造函数int input(),对产生新的交通处罚单的信息进行输入。
(2)交通处罚单基本信息输出:构造函数void display(),全部输出已被录入交通处罚单的所有信息。
(3)交通处罚单基本信息删除:构造函数int delete(),经确认后调用delete函数删除该姓名的记录。
(4)交通处罚单基本信息排序:构造函数void sort(),对文件中所有的交通处罚单进行排序。
(5)交通处罚单基本信息查找:构造函数int query(),通过输入书名,判断此交通处罚单是否存在,若存在,则删除该交通处罚单所有信息,然后再把剩下的交通处罚单信息保存到文件。
系统功能模块图图一四、详细设计结构体定义如下:#define N 500struct chufadan{int num; /*处罚单号码*/int chepai; /*车牌号码*/char name[10]; /*驾驶员名字*/int id; /*开单警察的信息ID*/int year;int month;int day; /*处罚时间为年月日排列*/}chufadan[N]; /*dan[500]中每个数组元素对应一个处罚单信息*/(一)信息输入函数:图2 信息录入功能流程图(三)信息删除函数:图3 信息删除功能流程图(三)信息查询函数:图4 信息查询功能流程图(四)统计功能函数:图5 信息统计功能流程图(五)浏览功能函数:开始打开文件逐条输出交通处罚单信息。
输出满足条件的罚单结束图6 信息浏览功能流程图五、运行结果主菜单界面图7输入建立模块图8查询模块图9浏览模块图10统计模块图11删除模块图12六、程序调试自从把整体的c语言处罚单管理系统编成以后,就开始进行调试。
调试的过程中不知道修改了多少次源代码,为了能让交通处罚单管理系统在输入任何代码的情况下都能正常使用,不会出错,反复的修改,看书,查资料,询问同学调试之后,终于运行成功。
主要克服了以下问题:(1)怎么样把交通处罚单数据输入文件中。
(2)通过主函数把其他的函数连接起来,形成一个完整的有序的程序。
(3)难度最大的是统计模块,算法十分复杂。
七、编程体会老师布置完程序设计任务的第二天,我就开始寻找题目准备入手,见到交通处罚单管理系统这个课题以后,我对此很感兴趣。
于是,当天下午开始做准备工作,重新把c语言复习一遍,开始编程。
起初是挺困难的,偌大的一个程序,我之前从未编过,无从下手,然后,我通过查资料,了解其大概模型,首先是把管理系统所含有的功能各自分成几个模块,建立一个主函数,把主函数和其他数个函数连接起来。
我想好了做输入、查询、浏览、删除、统计这五个功能,先把主函数完成,另外设计一个主界面。
一开始真的困难重重,虽然c语言复习过了,但是看书看懂了和真正的运用学到的知识写程序是完全不同的,不断的对照例题,不断的尝试与修改。
当我把所有的功能完成以后,已经花了将近五天的时间,结果,编程程序检查我的源代码时候,有超过一百个错误。
我顿时绝望了。
我自己做的程序,我很想把它做好,我一个一个的检查,发现原来是我的结构体没有设置好,导致系统无法识别后面的源代码。
对照书本上结构体例题把结构体给完成,剩下的便是一些小毛病。
陆陆续续的修改了几天,最后一刻,发现程序能够运行了,我心情顿时兴奋澎湃了!源代码#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<string.h>#define NUM 150typedef struct{char driver[10];int car;char police[10];int num;int year;int month;int date;}Traffic;int menu_select();int Input(Traffic traflist[],int n);void Display(Traffic traflist[],int n);int Delete(Traffic traflist[],int n,char *name);int Delete_a_record(Traffic traflist[],int n);void Sort_by_Name(Traffic traflist[],int n);int Insert(Traffic traflist[],int n,Traffic *p);int Insert_a_record(Traffic traflist[],int n);int Query(Traffic traflist[],int n,char *name);void Query_a_record(Traffic traflist[],int n);int AddfromText(Traffic traflist[],int n,char *filename);void WritetoText(Traffic traflist[],int n,char *filename);void main(){int n=0;char c,k;Traffic traflist[NUM];for(;;){switch(menu_select()){case 1:n=Input(traflist,n);system("pause");break;case 2:Display(traflist,n);system("pause");break;case 3:n=Delete_a_record(traflist,n);system("pause");break;case 4:Sort_by_Name(traflist,n);system("pause");break;case 5:n=Insert_a_record(traflist,n);system("pause");break;case 6:Query_a_record(traflist,n);system("pause");break;case 7:system("cls");n=AddfromText(traflist,n,&c);system("pause");break;case 8:system("cls");WritetoText(traflist,n,&k);system("pause");break;case 0:system("cls");printf("离开!\n");system("pause");exit(0);}}}int menu_select(){char c;do{system("cls");printf("1:Input records\n");printf("2:Display all records\n");printf("3:Delete a record\n");printf("4:Sort\n");printf("5:Insert a record\n");printf("6:Query\n");printf("7:Add records from a Text File\n");printf("8:Write to a Text File\n");printf("0:Quit!\n");printf("Input 1-8,0:");c=getchar();}while(c<'0'||c>'8');return c-'0';}int Input(Traffic traflist[],int n){int i,j;for(i=0;;i++){printf("You are going to input a record,we have %d records now!\n",n);printf("Input driver's name:");scanf("%s",&traflist[i].driver);printf("Input car number:");scanf("%d",&traflist[i].car);printf("Input police's name:");scanf("%s",&traflist[i].police);printf("Input seriels number:");scanf("%d",&traflist[i].num);printf("Input year:");scanf("%d",&traflist[i].year);printf("Input month:");scanf("%d",&traflist[i].month);printf("Input date:");scanf("%d",&traflist[i].date);printf("Go on?\nTo go on please press 1,press any other key to exit.\n");scanf("%d",&j);if(j!=1)break;n+=1;}return(n+1);}void Display(Traffic traflist[],int n){int i,num=0;getchar();printf("司机姓名车牌号交警姓名罚单编号罚单的年罚单的月罚单的日\n");for(i=0;i<n;i++){ num++;printf("%8s%8d%8s%8d%8d%8d%8d\n",traflist[i].driver,traflist[i].car,trafli st[i].police,traflist[i].num,traflist[i].year,traflist[i].month,traflist[i].date);if(num%10==0){system("pause");system("cls");}}}int Delete(Traffic traflist[],int n,char *name){int i,j;for(i=0;i<n;i++)if(strcmp(traflist[i].driver,name)==0){printf("确定要删除吗?1-删除,否则放弃.");scanf("%d",&j);if(j==1){strcpy(traflist[i].driver,traflist[i+1].driver);strcpy(traflist[i].police,traflist[i+1].police);traflist[i].car=traflist[i+1].car;traflist[i].car=traflist[i+1].num;traflist[i].year=traflist[i+1].year;traflist[i].month=traflist[i+1].month;traflist[i].date=traflist[i+1].date;n-=1;printf("删除成功!");break;}printf("放弃操作!");}return n;}int Delete_a_record(Traffic traflist[],int n) {char name[20];printf("请输入要删除的名字:\n");scanf("%s",name);n=Delete(traflist,n,name);return n;}void Sort_by_Name(Traffic traflist[],int n) {int i,j,t;Traffic sp;for(i=0;i<n;i++){t=i;for(j=i+1;j<n;j++){if(strcmp(traflist[i].driver,traflist[j].driver)>0)t=j;if(t!=i){strcpy(sp.driver,traflist[t].driver);strcpy(sp.police,traflist[t].police);sp.car=traflist[t].car;sp.num=traflist[t].num;sp.year=traflist[t].year;sp.month=traflist[t].month;sp.date=traflist[t].date;strcpy(traflist[t].driver,traflist[i].driver);strcpy(traflist[t].police,traflist[i].police);traflist[t].car=traflist[i].car;traflist[t].num=traflist[i].num;traflist[t].year=traflist[i].year;traflist[t].month=traflist[i].month;traflist[t].date=traflist[i].date;strcpy(traflist[i].driver,sp.driver);strcpy(traflist[i].police,sp.police);traflist[i].car=sp.car;traflist[i].num=sp.num;traflist[i].year=sp.year;traflist[i].month=sp.month;traflist[i].date=sp.date;}}}}int Insert(Traffic trafList[],int n,Traffic *s2) {trafList[n]=*s2;n+=1;Sort_by_Name(trafList,n);return n;}int Insert_a_record(Traffic trafList[],int n)Traffic s2={{0,0,0,0,0,0,0}};printf("请输入你想要插入的司机姓名:");scanf("%s",s2.driver);printf("请输入车号:");scanf("%d",&s2.car);printf("请输入开罚单的交警姓名:");scanf("%s",s2.police);printf("请输入罚单编号:");scanf("%d",&s2.num);printf("请输入开罚单的年:");scanf("%d",&s2.year);printf("请输入开罚单的月:");scanf("%d",&s2.month);printf("请输入开罚单的日:");scanf("%d",&s2.date);n=Insert(trafList,n,&s2);printf("success!\n");return n;int Query(Traffic traflist[],int n,char *name) {int i;for(i=0;i<n;i++){if(strcmp(traflist[i].driver,name)==0)return i;}return (-1);}void Query_a_record(Traffic traflist[],int n) {int i;char name[20];printf("请输入带查找人得姓名:\n");scanf("%s",name);i=Query(traflist,n,name);if(i==-1)printf("没有找到!");else{printf("查找成功!该司机的罚单信息如下:\n");printf("司机姓名车牌号交警姓名罚单编号罚单的年罚单的月罚单的日\n");printf("%s\t %d\t ",traflist[i].driver,traflist[i].car);printf("%s\t %d\t ",traflist[i].police,traflist[i].num);printf("%d\t %d\t %d\n",traflist[i].year,traflist[i].month,traflist [i].date);}}int AddfromText(Traffic traflist[],int n,char *filename){FILE *fp;Traffic sp[NUM];int i,j;printf("请输入文件名!");scanf("%s",filename);if((fp=fopen(filename,"r"))==NULL){printf("文件打开失败!\n");exit(1);}fscanf(fp,"%d",&j);for(i=0;i<j;i++){fscanf(fp,"%s\t",&sp[i].driver);fscanf(fp,"%d\t",&sp[i].car);fscanf(fp,"%s\t",&sp[i].police);fscanf(fp,"%d\t",&sp[i].num);fscanf(fp,"%d\t",&sp[i].year);fscanf(fp,"%d\t",&sp[i].month);fscanf(fp,"%d\n",&sp[i].date);}for(i=0;i<j;i++){n=Insert(traflist,n,&sp[i]);}system("pause");return n;fclose(fp);}void WritetoText(Traffic traflist[],int n,char *filename) {FILE *fp;int i;printf("请输入文件名!");scanf("%s",filename);printf("%s",filename);if((fp=fopen(filename,"w"))==NULL){printf("不能打开文件!\n");exit(1);}printf("打开成功!");fprintf(fp,"%d\n",n);for(i=0;i<n;i++){fprintf(fp,"%s\t",traflist[i].driver);fprintf(fp,"%d\t",traflist[i].car);fprintf(fp,"%s\t",traflist[i].police);fprintf(fp,"%d\t",traflist[i].num);fprintf(fp,"%d\t",traflist[i].year);fprintf(fp,"%d\t",traflist[i].month);fprintf(fp,"%d\n",traflist[i].date);fprintf(fp,"\n");}fclose(fp);}。