1、课程设计报告课程设计报告 题目:题目: 实时监控报警系统。 建立一个报警和出警管理信息系统。 要求: (1)采用一定的存储结构存储报警信息,要求有内容、时间; (2)有一次的出警就应该在待处理的信息中删除这条信息; (3)记录出警信息; (4)待处理信息过多时会发出警告。 一、问题分析和任务定义。一、问题分析和任务定义。 有题目可知,我们需要建立一个报警、出警系统,这个课题的重点有如下几点: (1)用什么样的存储结构储存报警信息。 (2)如何实现报警和出警这两项主要功能。 (3)如何将出警信息保存下来,以待查询。 (4)报警信息储存过多时需要发出警告。 经过一学期的数据结构的学习, 我学习到了
2、链表这一种数据结构, 考虑到需要储存以及 删除一些信息, 所以我选择用链表来储存报警信息, 且可以将上述的任务要求转化成一下几 点: (1)用链表储存报警信息以及出警信息。 (2)报警即将输入的信息储存在链表 A 里,我将会对链表 A 进行插入操作,将出警信 息插入到 A 中; 出警则是对储存报警信息的链表进行删除,首先查找到相应的信息,再对链表 A 进行删除操作,并用链表 B 储存删除的结点。 (3)输出储存在链表 B 中的结点信息,即可知道出警信息。 (4)对储存报警信息的链表 A 进行遍历,若它的结点个数过多,则发出警告。 二、数据二、数据结构的选择和概要设计。结构的选择和概要设计。 由
3、以上的问题可知, 我选择使用链表这一种数据结构来完成我的程序。 由于报警时要求 有内容有时间、 出警时则可以根据案件的编号或者是报案的时间出警, 所以链表中结点的类 型是结构体。 typedef struct int num; /编号 char time30; /时间 char matter50; /内容 datatype; typedef struct node datatype data; struct node *next ;Listnode; 所用到的数据结构: num next 域 time 对于本次的课程设计,我的主要思路是:在主函数中输出一个菜单,让用户选择需要执行的 操作,包括
4、报警、出警、查看出警记录、退出程序。再编写子函数,子函数有插入函数:void insertnode(linklist head,Listnode *x); 删 除 函 数 :int delnode(linklist head,Listnode *x); 查 找 函 数 ( 以 便 查 找 到 需 要 删 除 的 出 警 记 录 ) : Listnode *listfind(linklist head); 输出出警记录函数:void printlist(linklist head); 完成 主要的功能。子函数之间的调用如下: Insertnode()/插入函数 主函数 delnode() lis
5、tnode()/删除函数和查找函数 void main() printflist()/输出函数 三、详细设计和编码。三、详细设计和编码。 (1)链表的结构类型如下: typedef struct int num; /编号 char time30; /时间 char matter50; /内容 datatype; typedef struct node datatype data; struct node *next ; Listnode; 定义指向 Listnode 结构体的指针类型; Listnode *linklist,*A,*B; A 指向未处理的报警信息的链表头结点,B 指向报警信息的
6、链表头结点 (2)编写主函数,主函数中使用 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; matter 插入函数 void insertnode(linklist head,Listnode *x); 首先在 case1 中定义一个链表 x,要求用户输入报警的信息,包括时间内容编号,将信息 存储在 x 中,再将 x 插入到链表 A 中,