还剩24页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
计算机系统基础Ⅱ课程设计报告题目交通处罚单系统学院软件学院专业软件工程班级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.___)文件,采用fopen打开文件,fclose关闭文件,fscanf格式化读取文件,fprintf格式化写入文件
3.-总体设计
3.1系统功能模块图#0;#0;交通处罚单管理系统浏览查询统计删除输入
3.2功能模块输入模块#0;#0;#0;开始打开文件建立文件罚单书结束NYNumN写入数据保存结束结束NY
(2)删除模块#0;#0;#0;开始读取文件找到单子未知文件保存新文件删除成功结束NY
(3)浏览模块#0;#0;#0;开始打开文件信息输出结束NY
(4)查询模块#0;#0;#0;查询类型车牌号姓名交警姓读取文件输入信息输出结束YN读取文件输入信息输出结束YN读取文件输入文件输出结束YN
(5)统计模块#0;#0;#0;开始读取文件输出信息结束NY4.主要问题解决方法及技术关键设计中主要通过函数来实现,然后在逐步细化,最终调试完成,主要包括以下函数
4.1主菜单函数voidmenu将各部分模块函数写入主菜单函数,通过switch结构输入对应数字分别进入各个模块函数,实现功能
4.2输入信息函数voidinput当输入1时进入信息输入函数,具体功能实现如下,输入处罚单数量,打开文件夹(list.___)若打开成功将输入的处罚单数量与之前保存数量相加,若超出保存容量范围,回到主菜单,否则写入信息若打开文件夹(list.___)失败,则建立该文件夹写入信息,如建立失败,返回主菜单
4.3删除记录函数voiddelet函数当输入2时进入删除函数,具体功能实现如下,输入车牌号,利用字符串比对函数strcmp与所输入编号一一比对,若所保存数据有与其相同,则通过strcpy函数进行删除操作,若所保存数据未有相同,则返回主菜单
4.4浏览函数voidbrowse当输入3时,进入浏览函数,利用fscanf函数进行读取文件,利用for循环体输出所存信息,返回主菜单
4.5查询函数voidsearch当输入4时进入查询函数,查询分为
1.车牌号查询,
2.驾驶员姓名查询,
3.交警姓名查询利用fscanf函数读取数据,利用strcmp函数进行字符串比较,若所读取的数据有与其相同的数据,则输出该数据,若没有则回到主菜单
4.6统计函数voidcount当输入5时进入统计函数,利用fscanf读取数据,输入一个时间段,利用strcmp和逻辑与,在for循环体中进行选择,并计数,选择出罚单数,罚单号,输出数据返回主菜单,若未查询到,返回主菜单
5.程序清单#includestdio.h#includestring.h#includestdlib.h#defineN100structPlist//处罚单{charvno
[20];//车牌号chardname
[20];//驾驶员姓名charpname
[20];//交警姓名charpno
[20];//交警编号charno
[20];//处罚单编号chardate
[20];//处罚日期}list[N];//处罚单数组voidinput;//输入模块voiddele;//删除模块voidbrowse;//浏览模块voidsearch;//查询模块voidcount;//统计模块voidmenu;//主菜单voidvno_search;//按车牌号查询voiddna_search;//按驾驶员姓名查询voidpna_search;//按开单交警姓名查询__in{menu;getchar;}voidmenu{intn;intr;do{systemcls;printf\n\t\t\t\t交通处罚单管理系统\n;printf········································;printf菜单:1-信息录入2-信息删除3-信息浏览4-信息查询5-信息统计6-退出系统\n;printf········································;printf请从输入数字选择相应的功能:;scanf%dn;ifn1||n6{r=1;getchar;}elser=0;}whiler==1;switchn{case1:input;break;case2:dele;break;case3:browse;break;case4:search;break;case5:count;break;case6:exit0;}}voidinput{FILE*fp;intnum;intij;iffp=fopenlist.___r+==NULL{iffp=fopenlist.___w==NULL{printf文件打开或创建失败!\n;printf\npressentertoreturnmenu\n;getchar;menu;}printf\n请输入处罚单数量:;scanf%di;printf\n\n;forj=0;ji;j++{printf输入第%d张处罚单的:\nj+1;printf\n车牌号:\n;scanf%slist[j].vno;printf驾驶员姓名\n;scanf%slist[j].dname;printf交警姓名\n;scanf%slist[j].pname;printf交警号\n;scanf%slist[j].pno;printf处罚单号\n;scanf%slist[j].no;printf日期(如20101112\n;scanf%slist[j].date;printf\n注意:中间用空格隔开!\n;}forj=0;ji;j++{fprintffp\n%s\n%s\n%s\n%s\n%s\n%slist[j].vnolist[j].dnamelist[j].pnamelist[j].pnolist[j].nolist[j].date;}fclosefp;printf\n保存成功!;printf\npressentertoreturnmenu\n;getchar;getchar;menu;}printf\n请输入处罚单数量:;scanf%di;forj=0;!feoffp;j++//读取文件{fscanffp%s%s%s%s%s%slist[j].vnolist[j].dnamelist[j].pnamelist[j].pnolist[j].nolist[j].date;}num=j+i;ifnumN{printf\n结构体数组数的N太小,请先修改N的值\n;printf\npressentertoreturnmenu\n;getchar;getchar;menu;}printf\n;forj=0;ji;j++{printf输入第%d张处罚单的:\nj+1;printf\n车牌号:\n;scanf%slist[j].vno;printf驾驶员姓名\n;scanf%slist[j].dname;printf交警姓名\n;scanf%slist[j].pname;printf交警号\n;scanf%slist[j].pno;printf处罚单号\n;scanf%slist[j].no;printf日期(如20101112\n;scanf%slist[j].date;printf\n注意:中间用空格隔开!\n;}forj=0;ji;j++{fprintffp\n%s\n%s\n%s\n%s\n%s\n%slist[j].vnolist[j].dnamelist[j].pnamelist[j].pnolist[j].nolist[j].date;}fclosefp;printf\n保存成功!;printf\npressentertoreturnmenu\n;getchar;getchar;menu;}voiddele{intj;intnum;intf=-1;FILE*fp1*fp2;chars1
[20];iffp1=fopenlist.___r==NULL{printfcannotopenfile\n;printf\npressentertoreturnmenu\n;getchar;getchar;menu;}forj=0;!feoffp1;j++//读取文件{fscanffp1%s%s%s%s%s%slist[j].vnolist[j].dnamelist[j].pnamelist[j].pnolist[j].nolist[j].date;}num=j;fclosefp1;printf请输入要删除的处罚单的编号\n;scanf%ss1;forj=0;jnum;j++{ifstrcmps1list[j].no==0{f=j;iffnum{forj=f;jnum;j++{strcpylist[j].vnolist[j+1].vno;strcpylist[j].dnamelist[j+1].dname;strcpylist[j].pnamelist[j+1].pname;strcpylist[j].pnolist[j+1].pno;strcpylist[j].nolist[j+1].no;strcpylist[j].datelist[j+1].date;}}iffp2=fopenlist.___w==NULL{printf文件打不开!\n;printf\npressentertoreturnmenu\n;getchar;menu;}forj=0;jnum;j++//保存文件{fprintffp2\n%s\n%s\n%s\n%s\n%s\n%slist[j].vnolist[j].dnamelist[j].pnamelist[j].pnolist[j].nolist[j].date;}fclosefp2;printf\n删除成功!\n;printf\npressentertoreturnmenu\n;getchar;getchar;menu;}}iff0{printf\n没有找到该学号的记录:\n;printf\npressentertoreturnmenu\n;getchar;getchar;menu;}}voidbrowse{intj;intnum;FILE*fp;iffp=fopenlist.___r==NULL{printfcannotopenfile\n;printf\npressentertoreturnmenu\n;getchar;getchar;menu;}forj=0;!feoffp;j++//读取文件{fscanffp%s%s%s%s%s%slist[j].vnolist[j].dnamelist[j].pnamelist[j].pnolist[j].nolist[j].date;}fclosefp;num=j;printf\n已添加%d条记录\n\nnum;forj=0;jnum;j++//输出{printf第%d条记录为:\nj;printf
1.车牌号:%s\nlist[j].vno;printf
2.驾驶员姓名:%s\nlist[j].dname;printf
3.交警姓名:%s\nlist[j].pname;printf
4.交警号:%s\nlist[j].pno;printf
5.处罚单号:%s\nlist[j].no;printf
6.日期:%s\nlist[j].date;printf\n;}printf\npressentertoreturnmenu\n;getchar;getchar;menu;}voidsearch{intn;intr;do{systemcls;printf\n请选择查询类型:\n\t1-按车牌号2-按驾驶员姓名3:按开单交警姓名4-返回主菜单\n;printf\n请输入数字选择:;scanf%dn;ifn1||n4{r=1;getchar;}elser=0;}whiler==1;switchn{case1:vno_search;break;case2:dna_search;break;case3:pna_search;break;case4:menu;}}voidvno_search{intf=-1;intnum;intj;charno
[20];FILE*fp;iffp=fopenlist.___r==NULL{printf文件打不开!\n;printf\npressentertoreturnmenu\n;getchar;menu;}forj=0;!feoffp;j++//读取文件{fscanffp%s%s%s%s%s%slist[j].vnolist[j].dnamelist[j].pnamelist[j].pnolist[j].nolist[j].date;}num=j;fclosefp;printf\n请输入车牌号:;scanf%sno;printf\n罚单的信息为\n\n;forj=0;jnum;j++{ifstrcmpnolist[j].vno==0{f=j;printf
1.车牌号:%s\nlist[j].vno;printf
2.驾驶员姓名:%s\nlist[j].dname;printf
3.交警姓名:%s\nlist[j].pname;printf
4.交警号:%s\nlist[j].pno;printf
5.处罚单号:%s\nlist[j].no;printf
6.日期:%s\nlist[j].date;printf\n;}}iff0printf\n没有找到该班号的记录!\n;printf\npressentertoreturnsubmenu\n;getchar;getchar;search;}voiddna_search{intf=-1;intnum;intj;charname
[20];FILE*fp;iffp=fopenlist.___r==NULL{printf文件打不开!\n;printf\npressentertoreturnmenu\n;getchar;menu;}forj=0;!feoffp;j++//读取文件{fscanffp%s%s%s%s%s%slist[j].vnolist[j].dnamelist[j].pnamelist[j].pnolist[j].nolist[j].date;}num=j;fclosefp;printf\n请输入驾驶员的姓名:;scanf%sname;printf\n罚单的信息为\n\n;forj=0;jnum;j++{ifstrcmpnamelist[j].dname==0{f=j;printf
1.车牌号:%s\nlist[j].vno;printf
2.驾驶员姓名:%s\nlist[j].dname;printf
3.交警姓名:%s\nlist[j].pname;printf
4.交警号:%s\nlist[j].pno;printf
5.处罚单号:%s\nlist[j].no;printf
6.日期:%s\nlist[j].date;printf\n;}}iff0printf\n没有找到该班号的记录!\n;printf\npressentertoreturnsubmenu\n;getchar;getchar;search;}voidpna_search{intf=-1;intnum;intj;charname
[20];FILE*fp;iffp=fopenlist.___r==NULL{printf文件打不开!\n;printf\npressentertoreturnmenu\n;getchar;menu;}forj=0;!feoffp;j++//读取文件{fscanffp%s%s%s%s%s%slist[j].vnolist[j].dnamelist[j].pnamelist[j].pnolist[j].nolist[j].date;}num=j;fclosefp;printf\n请输入开单交警的姓名:;scanf%sname;printf\n罚单的信息为\n\n;forj=0;jnum;j++{ifstrcmpnamelist[j].pname==0{f=j;printf
1.车牌号:%s\nlist[j].vno;printf
2.驾驶员姓名:%s\nlist[j].dname;printf
3.交警姓名:%s\nlist[j].pname;printf
4.交警号:%s\nlist[j].pno;printf
5.处罚单号:%s\nlist[j].no;printf
6.日期:%s\nlist[j].date;printf\n;}}iff0printf\n没有找到该班号的记录!\n;printf\npressentertoreturnsubmenu\n;getchar;getchar;search;}voidcount{intf=-1;intnum;//所有罚单单数intj;inttotal=0;//某驾驶员的罚单数charname
[20];chartime1
[20];chartime2
[20];FILE*fp;iffp=fopenlist.___r==NULL{printf文件打不开!\n;printf\npressentertoreturnmenu\n;getchar;menu;}forj=0;!feoffp;j++//读取文件{fscanffp%s%s%s%s%s%slist[j].vnolist[j].dnamelist[j].pnamelist[j].pnolist[j].nolist[j].date;}num=j;fclosefp;printf\n请根据提示输入驾驶员的姓名和一个时间段,统计某个驾驶员在某段时间内的处罚单数目和罚单号\n;printf\n\n请输入驾驶员的姓名:;scanf%sname;printf\n请输入一个较早的时间:;scanf%stime1;printf\n请输入一个最近的时间:;scanf%stime2;forj=0;jnum;j++{ifstrcmplist[j].datetime1=0strcmplist[j].datetime2=0{f=j;total++;printf\n罚单号:%s\nlist[j].no;}}iff0printf\n没有找到记录!\n;printf\n罚单总数为:%d\ntotal;printf\npressentertoreturnmenu\n;getchar;getchar;menu;}
6.体会及总结
6.1在设计及编程过程中遇到的问题及解决方法一些是由于之前执行的程序未关闭而引起的执行错误,关闭之前程序后恢复,在修改代码阶段忘记加分号和括号,引起了编译错误,最终找到问题的根本解决了问题
6.2收获与心得经过一个学期C语言的实习,我进一步理解和运用结构化程序设计的思想和方法,通过近两周的课程设计,初步掌握__一个小型实用系统的基本方法,学会调试相对长一点程序,学会利用流程图表示算法,进一步掌握和提高利用C语言进行程序设计的能力在编程中遇到困难是自然的,不过只要我们脚踏实地的编程,这些困难不算什么,我们是能够克服的____
[1]于秀霞,c语言程序设计
[2]谭浩强,c语言程序设计第四版
[3]Knuth,《C语言教程》
[4]谭浩强,c语言程序设计第三版
[5]YaleN.Patt计算机系统概论。