当前位置:文档之家› c语言交通处罚单管理程序(实验报告和源代码)

c语言交通处罚单管理程序(实验报告和源代码)

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);}。

相关主题