交通处罚单系统课程设计报告.docx
- 文档编号:11892579
- 上传时间:2023-04-08
- 格式:DOCX
- 页数:29
- 大小:249.42KB
交通处罚单系统课程设计报告.docx
《交通处罚单系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《交通处罚单系统课程设计报告.docx(29页珍藏版)》请在冰豆网上搜索。
交通处罚单系统课程设计报告
计算机系统基础Ⅱ
课程设计报告
题目:
交通处罚单系统
学院:
软件学院
专业:
软件工程
班级:
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主菜单函数voidmenu()
将各部分模块函数写入主菜单函数,通过switch()结构输入对应数字分别进入各个模块函数,实现功能.
4.2输入信息函数voidinput()
当输入1时进入信息输入函数,具体功能实现如下,输入处罚单数量,打开文件夹(list.txt)若打开成功将输入地处罚单数量与之前保存数量相加,若超出保存容量范围,回到主菜单,否则写入信息.若打开文件夹(list.txt)失败,则建立该文件夹写入信息,如建立失败,返回主菜单.
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.程序清单
#include
#include
#include
#defineN100
structPlist//处罚单
{
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()。
//按开单交警姓名查询
main()
{
menu()。
getchar()。
}
voidmenu()
{
intn。
intr。
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()。
}
elser=0。
}while(r==1)。
switch(n)
{
case1:
input()。
break。
case2:
dele()。
break。
case3:
browse()。
break。
case4:
search()。
break。
case5:
count()。
break。
case6:
exit(0)。
}
}
voidinput()
{
FILE*fp。
intnum。
inti,j。
if((fp=fopen("list.txt","r+"))==NULL)
{
if((fp=fopen("list.txt","w"))==NULL)
{
printf("文件打开或创建失败!
\n")。
printf("\npressentertoreturnmenu\n")。
getchar()。
menu()。
}
printf("\n请输入处罚单数量:
")。
scanf("%d",&i)。
printf("\n\n")。
for(j=0。
j
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
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("\npressentertoreturnmenu\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("\npressentertoreturnmenu\n")。
getchar()。
getchar()。
menu()。
}
printf("\n")。
for(j=0。
j
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
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("\npressentertoreturnmenu\n")。
getchar()。
getchar()。
menu()。
}
voiddele()
{
intj。
intnum。
intf=-1。
FILE*fp1,*fp2。
chars1[20]。
if((fp1=fopen("list.txt","r"))==NULL)
{
printf("cannotopenfile\n")。
printf("\npressentertoreturnmenu\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 j++) { if(strcmp(s1,list[j].no)==0) { f=j。 if(f { for(j=f。 j 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("\npressentertoreturnmenu\n")。 getchar()。 menu()。 } for(j=0。 j 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("\npressentertoreturnmenu\n")。 getchar()。 getchar()。 menu()。 } } if(f<0) { printf("\n没有找到该学号地记录: \n")。 printf("\npressentertoreturnmenu\n")。 getchar()。 getchar()。 menu()。 } } voidbrowse() { intj。 intnum。 FILE*fp。 if((fp=fopen("list.txt","r"))==NULL) { printf("cannotopenfile\n")。 printf("\npressentertoreturnmenu\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 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("\npressentertoreturnmenu\n")。 getchar()。 getchar()。 menu()。 } voidsearch() { intn。 intr。 do { system("cls")。 printf("\n请选择查询类型: \n\t1-按车牌号2-按驾驶员姓名3: 按开单交警姓名4-返回主菜单\n")。 printf("\n请输入数字选择: ")。 scanf("%d",&n)。 if(n<1||n>4) { r=1。 getchar()。 } elser=0。 }while(r==1)。 switch(n) { case1: vno_search()。 break。 case2: dna_search()。 break。 case3: pna_search()。 break。 case4: menu()。 } } voidvno_search() { intf=-1。 intnum。 intj。 charno[20]。 FILE*fp。 if((fp=fopen("list.txt","r"))==NULL) { printf("文件打不开! \n")。 printf("\npressentertoreturnmenu\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 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("\npressentertoreturnsubmenu\n")。 getchar()。 getchar()。 search()。 } voiddna_search() { intf=-1。 intnum。 intj。 charname[20]。 FILE*fp。 if((fp=fopen("list.txt","r"))==NULL) { printf("文件打不开! \n")。 printf("\npressentertoreturnmenu\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 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("\npressentertoreturnsubmenu\n")。 getchar()。 getchar()。 search()。 } voidpna_search() { intf=-1。 intnum。 intj。 charname[20]。 FILE*fp。 if((fp=fopen("list.txt","r"))==NULL) { printf("文件打不开! \n")。 printf("\npressentertoreturnmenu\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 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("
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通处 罚单 系统 课程设计 报告