欢迎来到天天文库
浏览记录
ID:58589918
大小:264.08 KB
页数:11页
时间:2020-10-18
《数据结构课程设计报告实时监控报警系统.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、课程设计报告姓名:张晓静学号:06班级:11计本班四班题目:实时监控报警系统。建立一个报警和出警管理信息系统。要求:(1)采用一定的存储结构存储报警信息,要求有内容、时间;(2)有一次的出警就应该在待处理的信息中删除这条信息;(3)记录出警信息;(4)待处理信息过多时会发出警告。一、问题分析和任务定义。有题目可知,我们需要建立一个报警、出警系统,这个课题的重点有如下几点:(1)用什么样的存储结构储存报警信息。(2)如何实现报警和出警这两项主要功能。(3)如何将出警信息保存下来,以待查询。(4)报警信息储存过多时需要
2、发出警告。经过一学期的数据结构的学习,我学习到了链表这一种数据结构,考虑到需要储存以及删除一些信息,所以我选择用链表来储存报警信息,且可以将上述的任务要求转化成一下几点:(1)用链表储存报警信息以及出警信息。(2)报警即将输入的信息储存在链表A里,我将会对链表A进行插入操作,将出警信息插入到A中;出警则是对储存报警信息的链表进行删除,首先查找到相应的信息,再对链表A进行删除操作,并用链表B储存删除的结点。(3)输出储存在链表B中的结点信息,即可知道出警信息。(4)对储存报警信息的链表A进行遍历,若它的结点个数过多,
3、则发出警告。二、数据结构的选择和概要设计。由以上的问题可知,我选择使用链表这一种数据结构来完成我的程序。由于报警时要求有内容有时间、出警时则可以根据案件的编号或者是报案的时间出警,所以链表中结点的类型是结构体。typedefstruct{intnum;//编号chartime[30];//时间charmatter[50];//内容}datatype;typedefstructnode{datatypedata;structnode*next;}Listnode;所用到的数据结构:num1timenext域matte
4、r对于本次的课程设计,我的主要思路是:在主函数中输出一个菜单,让用户选择需要执行的操作,包括报警、出警、查看出警记录、退出程序。再编写子函数,子函数有插入函数:voidinsertnode(linklisthead,Listnode*x);删除函数:intdelnode(linklisthead,Listnode*x);查找函数(以便查找到需要删除的出警记录):Listnode*listfind(linklisthead);输出出警记录函数:voidprintlist(linklisthead);完成主要的功能。子
5、函数之间的调用如下:Insertnode()//插入函数主函数delnode()listnode()//删除函数和查找函数voidmain()printflist()//输出函数三、详细设计和编码。(1)链表的结构类型如下:typedefstruct{intnum;//编号chartime[30];//时间charmatter[50];//内容}datatype;typedefstructnode{datatypedata;structnode*next;}Listnode;定义指向Listnode结构体的指针类型
6、;Listnode*linklist,*A,*B;A指向未处理的报警信息的链表头结点,B指向报警信息的链表头结点(2)编写主函数,主函数中使用switch()语句,case1:中解决出警问题,调用插入函数,记录下出警记录,并提示用户已经报警成功。但是由于题目要求报警信息储存过多时需要发出警告,首先对链表A进行遍历,若A的结点个数过多则输出警告信息,如下:设置一个整型变量jj,遍历到链表A有一个结点jj则加1,以此来记录结点的个数。intjj=0;h=A->next;while(h){//通过链表遍历来确定有多少节点
7、jj++;h=h->next;}if(jj>3){//此时已有3次警务未处理printf("累计多次警务未处理,建议立即处理警务!");break;2}插入函数voidinsertnode(linklisthead,Listnode*x);首先在case1中定义一个链表x,要求用户输入报警的信息,包括时间内容编号,将信息存储在x中,再将x插入到链表A中,插入的过程是:首先寻找合适的插入位置,再利用指针,进行插入。voidinsertnode(linklisthead,Listnode*x){Listnode*p1,
8、*p2;p1=head;p2=p1->next;while(p2!=NULL&&(p2->data.numdata.num)){//寻找插入位置p1=p2;p2=p2->next;}p1->next=x;//按编号大小顺序插入x->next=p2;}这样不断地执行case1的操作,就会得到一个从头结点算起编号由小到大的链表,报警操作成功。case2中
此文档下载收益归作者所有