交通处罚单管理系统 李勇峰完整文档.docx
- 文档编号:27025144
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:65
- 大小:960.65KB
交通处罚单管理系统 李勇峰完整文档.docx
《交通处罚单管理系统 李勇峰完整文档.docx》由会员分享,可在线阅读,更多相关《交通处罚单管理系统 李勇峰完整文档.docx(65页珍藏版)》请在冰豆网上搜索。
交通处罚单管理系统李勇峰完整文档
交通处罚单管理系统李勇峰完整文档
(可以直接使用,可编辑完整文档,欢迎下载)
C语言设计实习报告
勘查技术与工程(基础工程方向)
姓名:
李勇峰
班号:
054081
学号:
20211004133
题目:
交通处罚单管理系统
指导教师:
王老师
时间:
2021-2021学年秋
一,题目要求
【要求】:
交通处罚单涉及到车辆,驾驶员和开单交警的信息,还有交通处罚单的号码,处罚时间等信息。
【功能】:
(1)要求可以输入,删除,浏览交通处罚单信息。
(2)可以按车辆,驾驶员和开单交警查询。
(3)统计某时间段某个驾驶员的交通处罚数目及交通处罚单号码。
【提示】
(1)需求分析:
交通处罚单信息用文件存储,提供文件的输输出操作;要求可以输入,输出,删除,浏览交通处罚单信息,因而要提供输入,删除和显示操作;要实现按车辆,驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。
(2)总体设计:
整个管理系统被设计为信息输入模块,信息删除模块,信息浏览模块,信息查询模块,信息统计模块。
二,详细设计:
1,处罚单管理系统界面函数
此函数包括的功能是建立新的罚单,按司机姓名查询罚单并浏览相关信息,按交警姓名查询罚单并浏览相关信息,按罚单号查询罚单并浏览相关信息,删除罚单,数据统计和退出处罚单管理系统。
voidMenu()
{
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)创建新的交通处罚单
处罚单包含的内容有处罚单号,车牌号,司机姓名,交警姓名,和处罚日期,因此相应的函数也应包含这些内容,在这个函数所控制的操作会依次提示输入以上内容。
特别的,罚单号不能有重复,若输入的罚单号有重复,操作界面会提示罚单好重复,请重新输入。
PTPRCreatTPR(PTPRpHead)
{PTPRpTemp=InitNode();
IntiYear,iMon,iDay;
printf("请输入相关信息:
\n");
printf("处罚单号:
");
flushall();
scanf("%s",pTemp->m_sRecnum);
if(SearchNode_1(pHead,pTemp->m_sRecnum))
{
printf("处罚单有重复,请重新输入");
free(pTemp);
returnpHead;
}
printf("车牌号码:
");
flushall();
scanf("%s",pTemp->m_sCarid);
printf("司机姓名:
");
flushall();
scanf("%s",pTemp->m_sDriname);
printf("交通警察姓名:
");
flushall();
scanf("%s",pTemp->m_sTPName);
printf("处罚日期:
");
flushall();
scanf("%d%d%d",&iYear,&iMon,&iDay);
InitDate(&pTemp->m_CDate,iYear,iMon,iDay);
returnInsertNode(pHead,pTemp);
}
(2)按司机姓名查询罚单:
先输入命令2,再输入待查找司机姓名.在这里函数会在记录在案的处罚单进行循环查找,如果有该司机的罚单记录,就会相应显示在屏幕上。
如果没有该司机的处罚记录,就会打印:
没有相关信息。
其中If(!
(i/4)){i=0;continue;}
这一句的作用是因为有时若因为某哪位司机的处罚记录过多以至于屏幕无法在一夜里全部显示时,多的就打印到下页.
voidSearchByDriName(PTPRpHead)
{
Charname[10];
Inti=1,check=0;
if(pHead)
{
printf("请输入要查询的司机的姓名:
");
flushall();
scanf("%s",name);
while(pHead)
{
pHead=SearchNode_2(pHead,name);
if(pHead)
{check++;
ShowNode(pHead);
printf("\n");
i++;
pHead=pHead->m_pNext;
}
if(!
(i%4)){i=0;CONTINUE;}
}
if(!
check){printf("没有相关信息!
\n");}
Else{printf("目前还没有该处罚单!
");}
}
(3)按交警姓名查询罚单:
先输入命令3,再输入待查找交警姓名.在这里函数会在记录在案的处罚单进行循环查找,如果有该交警所开的的罚单记录,就会相应显示在屏幕上。
如果没有该交警开的处罚记录,就会打印:
没有相关信息。
其中
If(!
(i/4)){i=0;continue;}
此句的作用同
(2)
voidSearchByPocName(PTPRpHead)
{Charname[10];
Inti=1,check=0;
if(pHead)
{printf("请输入处罚交警的姓名:
");
flushall();
scanf("%s",name);
while(pHead)
{pHead=SearchNode_3(pHead,name);
if(pHead)
{check++;
ShowNode(pHead);
printf("\n");
i++;
pHead=pHead->m_pNext;
}
if(!
(i%4)){i=0;CONTINUE;}
}
if(!
check){printf("没有相关信息!
\n");}
}
Else{printf("目前还没有该处罚单!
");}
}
(4)按车牌号查询罚单:
先输入命令4,再输入待查找车牌号码.在这里函数也会对记录在案的处罚单进行循环查找,如果有该车牌号记录,就会相应显示在屏幕上。
如果没有该车牌号的处罚信息,就会打印:
没有相关信息。
If(!
(i/4)){i=0;continue;}此句的作用同
(2)
voidSearchByCarId(PTPRpHead)
{charname[10];
Inti=1,check=0;
if(pHead)
{printf("请输入要查询的车牌号码:
");
flushall();
scanf("%s",name);
while(pHead)
{pHead=SearchNode_4(pHead,name);
if(pHead)
{check++;
ShowNode(pHead);
printf("\n");
i++;pHead=pHead->m_pNext;
}
if(!
(i%4)){i=0;CONTINUE;}
}
if(!
check){printf("没有相关信息!
\n");}
}
Else{printf("目前还没有该处罚单!
");}
}
(5)删除罚单
操作者先输入删除命令5,在按操作要求输入要删除的处罚单号码,系统浏览处罚单,找到相关信息后,在删除这张处罚信息,再把这个信息的尾地址结到下一个信息的头地址上从而达到删除此信息的作用.
PTPRDeleteTPR(PTPRpHead)
{charnum[11];
PTPRpTemp,pT;
if(pHead)
{printf("请输入要查询的处罚单号:
");flushall();
scanf("%s",num);
pTemp=SearchNode_1(pHead,num);
if(pTemp)
{if(pTemp==pHead){pHead=pHead->m_pNext;}
elseif(!
pTemp->m_pNext)
{pT=SearchNode_1_rf(pHead,num);
pT->m_pNext=NULL;
}
Else{pT=SearchNode_1_rf(pHead,num);
pT->m_pNext=pTemp->m_pNext;
}
free(pTemp);
printf("删除成功!
\n");
}
Else{printf("输入的号码不存在!
\n");}
}
Else{printf("目前还没有该处罚单!
");}
returnpHead;
}
(6)统计
此操作会首先提示操作者输入查询的起始时间和结束时间.判断.如是第一个时间大于第二个时间,相应会提示“输入错误”,若输入正确,会提示继续输入待查司机姓名.给i赋初值0.每循环查找到一个记录就给i的值加1.最后在显示屏上显示出i的值.如果查找此段时间内没有该司机罚单信息,则打印“目前还没有该处罚单。
voidStatisticsTPR(PTPRpHead)
{Dated1,d2;charname[10];intindex=0,i=0;;
if(pHead)
{printf("请输入起始时间:
");flushall();
scanf("%d%d%d",&d1.m_iYear,&d1.m_iMonth,&d1.m_iDay);
printf("请输入结束时间:
");flushall();
scanf("%d%d%d",&d2.m_iYear,&d2.m_iMonth,&d2.m_iDay);
if(ComDate(&d1,&d2)>0){printf("输入错误!
\n");}
else
{printf("输入司机姓名:
");flushall();scanf("%s",name);
while(pHead)
{pHead=SearchNode_2(pHead,name);
if(pHead)
{if(ComDate(&pHead->m_CDate,&d1)>0&&ComDate(&pHead->m_CDate,&d2)<0)
{i++;index++;
printf("%s\n",pHead->m_sRecnum);
}
pHead=pHead->m_pNext;
}
if(!
(index%30))
{index=0;CONTINUE;}
}
printf("一共有%d条记录\n",i);
}
}
Else{printf("目前还没有该处罚单!
");}
}
(7)退出模块:
在这个模块里,输入命令0后,若程序发现文件里有处罚信息,会相应的保存该信息,然后退出程序,若没有信息,则会提示“不能打开文件!
”,然后退出程序。
voidExitTPRSystem(PTPRpHead)
{FILE*out;inti;
printf("保存数据...\n");
if((out=fopen("a.txt","at"))==NULL)
{printf("不能打开文件!
");CONTINUE;}
Else
{while(pHead)
{for(i=0;i
{fputc(pHead->m_sRecnum[i],out);}
fputc('\n',out);
for(i=0;i
{fputc(pHead->m_sDriname[i],out);}
fputc('\n',out);
for(i=0;i
{fputc(pHead->m_sCarid[i],out);}
fputc('\n',out);
for(i=0;i
{fputc(pHead->m_sTPName[i],out);}
fputc('\n',out);fputc(pHead->m_CDate.m_iYear,out);
fputc('',out);
fputc(pHead->m_CDate.m_iMonth,out);fputc('',out);
fputc(pHead->m_CDate.m_iDay,out);fputc('\n',out);
fputc('\n',out);
pHead=pHead->m_pNext;
}
}
fclose(out);
DestoryTPR(pHead);
printf("保存成功!
\n");
}
三,上机操作:
1,数据源
(1)处罚单号01车牌号码2001司机姓名li警察姓名wang处罚日期20210901
(2)处罚单号02车牌号码2002司机姓名zhang警察姓名li处罚日期20210902
(3)处罚单号03车牌号码2003司机姓名ma警察姓名li处罚日期20210903
(4)处罚单号04车牌号码2004司机姓名song警察姓名chen处罚日期20210904
(5)处罚单号05车牌号码2005司机姓名chen警察姓名ren处罚日期20210905
2,运行结果
(1)主菜单函数
(2)输入处罚信息
(3)按司机姓名查找并浏览相关处罚信息模块
(4)按交通警察姓名查找并浏览相关信息模块
(5)按车牌号码查询并浏览相关信息模块
(6)删除处罚单模块
(7)数据统计模块
四,C程序实习总结
通过这7天的上机实习,编写运行并运行C程序,让我对C语言又有了进一步的认识并巩固了以前所学,在编写C程序的过程中,得到了老师和同学耐心的指导和帮助,很多问题都是在老师和同学的帮助下我才能够解决的,没有你们的帮助我部可能顺利的完成此次编程.
以前对C的概念比较模糊,但是在这次实习中我发现了C在生产生活中有着广泛的应用,比如我这次编写的交通交通处罚单管理系统,还有其他同学编写的一些等等。
在实际交通管理中运用此类程序会节省大量的体力和脑力劳动.而且使得交通管理比较容易.避免了以往的那种繁琐的人力劳动。
准确率也会大幅度上升,不会造成因为人为失误造成不必要的麻烦。
通过该实例的设计分析。
我初步掌握了模块化设计方法,理解和运用结构化程设计的思想和方法.学会了用流程图表示算法,掌握和提高了利用C语言进行程序设计的能力.在各方面都得到了提高。
更重要的是这次实习让我了解到了我的不足,该如何让自己的编程能力得到提高,在今后的学习生活里我会多多的上机编程,让自己能力得到进一步的提高
系统开发的必要性及介绍………………………
系统概要设计……………………………………
系统详细设计……………………………………
系统源代码………………………………………
调试分析和测试结果……………………………
系统使用说明书…………………………………
心得体会…………………………………………
参考文献…………………………………………
课程设计题目:
仓库货品信息管理系统
一、系统开发的必要性及介绍
1.必要性
仓库管理是现代物流管理的一个重要组成部分,仓库货物管理信息系统的设计,可以实现对存储货物信息及统计单据的计算机管理,简化作业程序,提高作业效率,为企业创造更高的利润。
2.主要功能介绍
本系统有对库存货品信息的输入、插入、删除、查找等功能,并能将建立和更新的库存信息保存于文件供输出或打印。
对于查找、删除等功能要求能按货品名、货品号分别进行。
每个货品的相关信息包括:
货品号、货品名、货品库存量、进货日期、货品生产厂家及供应商等。
二、系统概要设计
1.系统设计任务
要求系统能实现库存货品信息的输入、插入、删除、查找等功能,并能将建立和更新的库存信息保存于文件供输出或打印。
对于查找、删除等功能能够按货品名、货品号分别进行。
每个货品的相关信息包括:
货品号、货品名、货品库存量、进货日期、货品生产厂家及供应商等。
2.方案确定
库存货品信息管理系统要求实现许多功能,可遵循结构化程序设计思想来进行本系统的设计——自顶向下,逐步细化,也就是将软件设计任务划分成许多容易解决的小的子任务,即分解出许多子功能模块进行设计。
本程序经过分析可划分出6个子任务:
输入、输出、插入、删除、查找和保存。
3.模块划分
(1)程序设计模块连接图
库存货品信息管理系统的模块连接结构如下图:
4.环境要求
硬件:
PC机
软件:
电脑安装有TC集成环境
三、系统详细设计
1.数据结构设计
(1)数据结构的选择
选取动态数据结构,本系统是通过双向链表来完成的。
动态存储分配与释放:
申请存储空间函数malloc()
函数首部原型为
void*malloc(unsignedintsize)
释放存储空间函数free()
函数首部原型为
voidfree(void*p)
动态数据结构——双向链表
(2)数据类型的选择
structcommodity/*定义双向链表结构体*/
{intnumber;/*货物编号*/
charname[max];/*货物名称*/
intcounter;/*货物数量*/
structcommodity*piror,*next;/*定义两指针,分别指向其前驱和后继*/
};
(3)变量函数说明:
COM*input()
操作结果:
输入货品信息
COM*insert_perf()
操作结果:
插入某货品
COM*del_perf()
操作结果:
删除某货品
serch()
操作结果:
查找某货品
print_perf()
操作结果:
输出某货品
save(COM*head)
操作结果:
保存
COM*openfile()
操作结果:
载入
2.流程框图
查找模块和载入模块的算法框图在此略。
(1)输入模块
N
Y
N
Y
N
Y
Y
(2)插入模块
N
Y
N
Y
(3)保存模块
N
Y
N
Y
(4)输出模块
Y
Y
N
Y
N
对以上各模块的文字解释说明:
(1)输入模块:
其实就是一个建立链表的操作模块。
建立链表的具体操作就是逐一输入各结点数据,并建立其前后相链的关系。
首先设三个指针变量:
head,ptr1,ptr2。
它们都是指向结构体类型数据的。
先使head的值为NULL,这是链表为空的情况。
用malloc函数开辟一个结点,并使ptr1,ptr2都指向它,之后从键盘读入一个货品的数据给ptr1所指向的结点。
当输入的ptr1->num不为0时,令head=ptr1;ptr2=ptr1,即把ptr1的值赋给head,使ptr2,ptr1,head都指向这一新开辟的结点,此结点就成为链表中的第一个结点。
再开辟一个新结点并使ptr1指向它,读入该结点的数据,如果输入的ptr1->num不为0,则应链入这第二个结点,这时和上一个结点的处理不同,是将ptr1的值赋给ptr2->next,也就是使第一个结点的next成员指向第二个结点,接着将ptr2也指向结点2。
再开辟一个新结点并使ptr1指向它,读入该结点的数据,同样将ptr1的值赋给ptr2->next,也就是使第三个结点链接到第二个结点之后,并接着将ptr1的值赋给ptr2,使ptr2指向结点3。
再开辟一个新结点,并使ptr1指向它,输入该结点的数据,如果输入ptr1->num为0,则是输入结束标志,此结点不被链接到链表中,就将NULL赋给ptr2->next。
建立链表过程至此结束,ptr1最后所指结点并未链入链表中。
(2)插入模块:
要完成的是链表的插入操作,即将一个新结点插入到一个已有的链表中,对刚刚建立的链表,首先新设一个指针变量ptr0,并开辟一个结点使ptr3指向它,输入该结点的数据,即新货的有关数据,接下来查找要插入位置结点,找到后只需修改此结点和ptr0指向结点指针域的值即可,链表中所有元素位置均不需移动,这就体现了链表的优点。
(3)删除模块:
要完成的是链表的删除操作,只需修改链表中要删除结点的前一个结点的链指针。
使之指向被删除结点的后面一个结点即可。
(4)保存模块:
将最终想要保留的数据信息保存于文件中。
(5)输出模块:
要完成的是依次输出链表中各结点的数据的操作。
首先找到链表头结点的地址,也就是head的值,然后设一个指针变量ptr1,先指向第一个结点,输出ptr1所指的结点,然后使ptr1后移一个结点,再输入直至链表的尾结点结束。
四、系统源代码
#include
#include
#include
#include
#include
#defineLENsizeof(COM)
#definePRINT"%-15ld%-15s%-15d\n",ptr1->num,ptr1->name,ptr1->count
#defi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通处罚单管理系统 李勇峰完整文档 交通处 罚单 管理 系统 李勇峰 完整 文档
![提示](https://static.bdocx.com/images/bang_tan.gif)