C语言程序设计课程设计材料学生姓名:王嘉廉学号:*********** 系(院):信息工程学院专业:信息管理与信息系统设计(论文)题目: 交通处罚单管理系统完成日期: 2012年9月指导教师: xx!二○一二年九月●课程设计目的 (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)交通处罚单基本信息输入:构造函数void shurujianli()),对产生新的交通处罚单的信息进行输入。
(2)交通处罚单基本信息浏览:构造函数void liulan(),全部浏览已被录入交通处罚单的所有信息。
(3)交通处罚单基本信息查询:构造函数void chaxun(),输入想要查询的方式,用三种方式查询交通处罚单基本信息。
(4)交通处罚单基本信息统计:构造函数void tongji(),对文件中所有的交通处罚单进行精确统计。
(5)交通处罚单基本信息删除:构造函数void shanchu(),通过输入书名,判断此交通处罚单是否存在,若存在,则删除该交通处罚单所有信息,然后再把剩下的交通处罚单信息保存到文件。
系统功能模块图图一四、详细设计结构体定义如下:#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 <string.h>#define N 1000void shurujianli();void liulan();void chaxun();void tongji();void shanchu();void printf_back();void menu();void main(){int n;while(1){menu();scanf("%d",&n);switch(n){case 1:shurujianli();break; /*建立新的罚单 */ case 2:shanchu();break; /*删除处罚单 */case 3:liulan();break; /*浏览交通处罚单相关信息*/case 4:chaxun();break; /*查询交通处罚单相关信息 */case 5:tongji();break; /*交通处罚单数据统计 */ case 6:exit(0); /*退出*/return;}}}void menu(){{printf(" \n ");printf(" 欢迎来到交通处罚单管理系统!\n" );printf("*******************************************************************************\n");printf( " 1. 建立新的罚单\n" );printf( " 2. 删除交通处罚单\n" );printf( " 3. 浏览交通处罚单相关信息 \n" );printf( " 4. 查询交通处罚单相关信息 \n" );printf( " 5. 统计交通处罚单数据信息 \n" );printf( " 6. 退出\n" );printf( "************************************************* ******************************\n" );printf("\t\t\t请输入您的操作(1-6):[ ]\b\b");}}struct chufadan{int num; /*处罚单号码*/int chepai; /*车牌号码*/char name[10]; /*车主名字*/int id; /*开单警察的信息ID*/int year;int month;int day; /*处罚时间为年月日排列*/}chufadan[N]; /*dan[500]中每个数组元素对应一个处罚单信息*/void shurujianli() /*输入建立模块*/{int i,j,k;int NUM;FILE *fp; /*打开文件,定义指向文件的指针变量*/if((fp=fopen("data.txt","r"))==NULL){if((fp=fopen("data.txt","w"))==NULL){printf("无法打开文件!\n");exit(0);}printf("------------------------输入建立模块-----------------------------\n");printf("\n你要输入多少条处罚单信息:");scanf("%d",&j);printf("\n\n请依次输入罚单信息:\n\n");for(i=0;i<j;i++){printf("请输入车牌号码:\n");scanf("%d",&chufadan[i].chepai);printf("请输入车主姓名:\n");scanf("%s",chufadan[i].name);printf("请输交警ID:\n");scanf("%d",&chufadan[i].id);printf("请输入开单日期:年.月.日\n");scanf("%d.%d.%d",&chufadan[i].year,&chufadan[i].month,& chufadan[i].day);printf("请输入处罚单号:\n");scanf("%d",&chufadan[i].num);printf("\n\n");printf("-----------------------------------------------------------------\n");fprintf(fp,"\n%5d %5d %10s %5d %d.%d.%d",chufadan[i].num,chufadan[i].chepai,chufadan[i].name,chu fadan[i].id,chufadan[i].year,chufadan[i].month,chufadan[i] .day);}printf("输入信息成功!\n");fclose (fp);printf_back();}printf("------------------------输入建立模块-----------------------------\n");fp=fopen("data.txt","r");for(i=0;!feof(fp);i++) //读取文件{fscanf(fp,"%5d %5d %10s %5d %d.%d.%d",&chufadan[i].num,&chufadan[i].chepai,chufadan[i].name,& chufadan[i].id,&chufadan[i].year,&chufadan[i].month,&chufa dan[i].day);}fp=fopen("data.txt","a");printf("\n你要输入多少条处罚单信息:");scanf("%d",&j);NUM=i+j;if(NUM>N){printf("您输入的所有数据超过储存最大限额!/n请联系管理系统开发人员。