- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计---实时监控报警系统
课程设计报告
姓名:张晓静 学号: 班级:11计本班四班
题目:
实时监控报警系统。
建立一个报警和出警管理信息系统。
要求:
(1)采用一定的存储结构存储报警信息,要求有内容、时间;
(2)有一次的出警就应该在待处理的信息中删除这条信息;
(3)记录出警信息;
(4)待处理信息过多时会发出警告。
一、问题分析和任务定义。
有题目可知,我们需要建立一个报警、出警系统,这个课题的重点有如下几点:
用什么样的存储结构储存报警信息。
如何实现报警和出警这两项主要功能。
如何将出警信息保存下来,以待查询。
报警信息储存过多时需要发出警告。
经过一学期的数据结构的学习,我学习到了链表这一种数据结构,考虑到需要储存以及删除一些信息,所以我选择用链表来储存报警信息,且可以将上述的任务要求转化成一下几点:
用链表储存报警信息以及出警信息。
报警即将输入的信息储存在链表A里,我将会对链表A进行插入操作,将出警信息插入到A中;
出警则是对储存报警信息的链表进行删除,首先查找到相应的信息,再对链表A进行删除操作,并用链表B储存删除的结点。
输出储存在链表B中的结点信息,即可知道出警信息。
对储存报警信息的链表A进行遍历,若它的结点个数过多,则发出警告。
二、数据结构的选择和概要设计。
由以上的问题可知,我选择使用链表这一种数据结构来完成我的程序。由于报警时要求有内容有时间、出警时则可以根据案件的编号或者是报案的时间出警,所以链表中结点的类型是结构体。
typedef struct{
int num; //编号 char time[30]; //时间
char matter[50]; //内容
}datatype;
typedef struct node{
datatype data;
struct node *next ;}Listnode;
所用到的数据结构:
num
next域 time matter
对于本次的课程设计,我的主要思路是:在主函数中输出一个菜单,让用户选择需要执行的操作,包括报警、出警、查看出警记录、退出程序。再编写子函数,子函数有插入函数:void insertnode(linklist head,Listnode *x);删除函数:int delnode(linklist head,Listnode *x); 查找函数(以便查找到需要删除的出警记录):Listnode *listfind(linklist head); 输出出警记录函数:void printlist(linklist head); 完成主要的功能。子函数之间的调用如下:
Insertnode()//插入函数
主函数 delnode() listnode()//删除函数和查找函数
void main()
printflist()//输出函数
三、详细设计和编码。
(1)链表的结构类型如下:
typedef struct{
int num; //编号 char time[30]; //时间
char matter[50]; //内容
}datatype;
typedef struct node{
datatype data;
struct node *next ;
}Listnode;
定义指向Listnode结构体的指针类型;
Listnode *linklist,*A,*B;
A指向未处理的报警信息的链表头结点,B指向报警信息的链表头结点
编写主函数,主函数中使用switch()语句,case1:中解决出警问题,调用插入函数,记录下出警记录,并提示用户已经报警成功。但是由于题目要求报警信息储存过多时需要发出警告,首先对链表A进行遍历,若A的结点个数过多则输出警告信息,如下:
设置一个整型变量jj,遍历到链表A有一个结点jj则加1,以此来 记录结点的个数。
int jj=0;
h=A-next;
while(h){ //通过链表遍历来确定有多少节点
jj++;
h=h-next;
}
if(jj3){ //此时已有3次警务未处理
printf(累计多次警务未处理,建议立即处理警务!);
break;
}
插入函数void insertnode(linklist head,Listnode *x);
首先在case1中定义一个链表x,要求用户输入报警的信息,包括时间内容编号,将信息存储在x中,再将x插入到链表A中
文档评论(0)