实时监控报警系统课程设计报告.docx
《实时监控报警系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《实时监控报警系统课程设计报告.docx(11页珍藏版)》请在冰豆网上搜索。
![实时监控报警系统课程设计报告.docx](https://file1.bdocx.com/fileroot1/2023-6/26/9eac1cab-4908-4a9f-be20-8db3dc294863/9eac1cab-4908-4a9f-be20-8db3dc2948631.gif)
实时监控报警系统课程设计报告
实时监控报警系统—课程设计报告
中北大学
课程设计报告
(实时监控报警系统)
学院:
软件学院
专业:
软件工程系
学生姓名:
严云飞
学号:
0921010447
设计题目:
实时监控报警系统
设计地点:
软件学院机房
指导教师:
尹四清薛海丽
一、课程设计题目………………………………………………………
二、设计目的……………………………………………………………
三、需求分析…………………………………………………………
四、概要设计……………………………………………………………
五、详细设计……………………………………………………………
六、心得体会…………………………………………………………
一、课程设计题目:
实时监控报警系统
二、设计目的
数据结构是计算机专业的核心课程,是计算机科学的算法理论基础和软件设计的技术基础。
它主要研究信息的逻辑结构及其基本操作在计算机中的表示和实现。
数据结构是实践性很强的课程。
课程设计是加强学生实践能力的一个强有力手段。
课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。
严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。
三、需求分析
1.程序设计任务:
建立一个报警和出警管理的系统。
2.明确规定:
1.采用一定的存储结构存储报警信息,要求有内容、时间;
2.有一次的出警就应该在待处理的信息中删除这条信息;
3.记录出警信息;
4.待处理信息过多时会发出警告;
四、概要设计
1本程序中用到的抽象数据类型定义如下
ADTList{
数据对象:
D={ai|ai∈ElemSet,i=1,2,....,n,n>=0}
数据关系:
Rl={|ai-1,ai∈D,i=2,...n}
基本操作;
IntList(&L)
操作结果:
构造一个空的线性表L。
ListEmpty(L)
操作结果:
若L为空表,则返回TRUE,否则返回FALSE。
ListInsert(&L,i,e)
操作结果:
在L中第i个位置之前插入新的数据元素e,L的长度加1.
ListDelet(&L,i,&e)
操作结果:
删除L的第i个数据元素,并用e返回其值,L的长度减1.
ListTraverse(L,visit())
操作结果:
依次对L的每个数据元素调用函数visit(),一旦visit()失败,则操作失败。
}ADTlist
其他抽象数据类型定义如下
typedefstructLNode
{
char*data;
structLNode*next;
}LNode,*LinkList;
2函数间的调用关系:
首先定义用来存放报警信息的单链表,然后编写各个需要的基本操作函数,然后写出主函数。
主函数与其他模块之间的调用关系是:
主函数中先调用LinkList和LInitList_L(L)函数创建存放报警信息的空链表。
接着调用ListCreate_L(L,n)函数在空链表的基础上初始化报警信息,调用visit_L(L)函数显示所有报警信息。
然后调用ListDelete_L(L,i,x)函数来实现出警并显示出警信息和ListInsert_L(L,i,x)函数来对报警系统进行插入信息。
五、详细设计
源程序:
#include"stdafx.h"
#include
#include
#include
#include
#defineLIST_INIT_SIZE20
#defineOK1
#defineOVERFLOW-2
#defineERROR0
typedefintStatus;
/*定义单链表*/
typedefstructLNode
{
char*data;
structLNode*next;
}LNode,*LinkList;
intInitList_L(LinkList&L)
{
L=newLNode;
if(!
L)exit(OVERFLOW);
L->next=NULL;
returnOK;
}//InitList_L
voidListCreate_L(LinkList&L,intn)
{//尾插法建立带头结点的单链表L
char*x;
LNode*p;
printf("");
for(inti=n;i>0;--i)
{
p=newLNode;
x=newchar[20];
if(!
p)exit(OVERFLOW);
scanf("%s",x);
{p->data=x;
p->next=L->next;
L->next=p;}
}
}//ListCreate_L
intListInsert_L(LinkList&L,inti,char*e)
{//在带头结点的单链线性表L的第i个元素之前插入元素e
LNode*p,*s;
intj=0;
p=L;
while(p&&j{
p=p->next;
++j;
}
if(!
p||j>i-1)return0;
s=newLNode;
s->data=e;
s->next=p->next;
p->next=s;
return1;
}//ListInsert_L
intListDelete_L(LinkList&L,inti,chare[])
{
//删除以L为头指针(带头结点)的单链表中第i个结点
LNode*p,*q;
intj=0;
p=L;
while(p->next&&j{
p=p->next;++j;
}//寻找第i个结点,并令p指向其前趋
if(!
(p->next)||j>i-1)
returnERROR;//删除位置不合理
q=p->next;p->next=q->next;//删除并释放结点
//e=q->data;
sprintf(e,"%s",q->data);
deleteq;
returnOK;
}//ListDelete_L
voidvisit_L(LinkListL)/*显示数据*/
{
LNode*p=L->next;
while(p)
{
printf("%s",p->data);
p=p->next;
}
putchar('\n');
}
voidmain()
{
LinkListL;
char*x=(char*)malloc(50);
intj;
intn;
inti;
InitList_L(L);
printf("****************************************************************************\n");
printf("***************************实时监控报警系统*****************************\n");
printf("********************************************************\n");
printf("***************************中北大学软件学院*****************************\n");
printf("***************************0921010447*****************************\n");
printf("***************************严云飞*****************************\n");
printf("****************************************************************************\n");
printf("【系统中有多少个报警信息】:
");
scanf("%d",&n);
printf("【初始化报警系统】:
");
ListCreate_L(L,n);
printf("【报警系统】:
");
visit_L(L);
while
(1)
{
printf("1:
【出警系统启动】\n");
printf("2:
【显示报警信息】\n");
printf("3:
【新的报警系统】\n");
printf("4:
【结束】\n");
scanf("%d",&j);
switch(j)
{
case1:
printf("【出警】:
");
scanf("%d",&i);
if(ListDelete_L(L,i,x))
{
printf("【出警信息显示】:
");
printf("【现存的报警信息】:
");
visit_L(L);
}
elseprintf("【出警信息不存在】.");
break;
case2:
visit_L(L);
break;
case3:
printf("【插入报警信息】:
");
scanf("%d,%s",&i,&x);
if(ListInsert_L(L,i,x))visit_L(L);
elseprintf("【插入错误】");
break;
case4:
exit(0);
break;
default:
printf("【输入错误】");
}
}
system("PAUSE");
}
六、心得体会
数据结构是在整个计算机科学与技术领域上广泛被使用的术语。
它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。
数据结构有逻辑上的数据结构和物理上的数据结构之分。
逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排。
数据结构是数据存在的形式。
数据结构是信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。
数据结构课程的主要目的是介绍一些常用的数据结构,阐明数据结构内在的逻辑关系,讨论它们在计算机中的存储表示,并结合各种数据结构,讨论对它们实行的各种运算的实现算法。
通过这次数据结构课程设计,让我学到了好多东西。
在实际操作过程中犯了一些错误却让我有了意外的收获,所学数据结构理论知识得到了巩固。
通过实际操作,学会数据结构程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。
现在终于挨到了写收获与体会的时候了,的确令人兴奋,看看自己的劳动成果,好开心。
一个星期前的现在,当听到老师布置给我们的题目时,我们都蒙了,这么难的题目我们怎么会啊,我们只能尽我们自己最大的努力把程序给写出来,虽然知道这一路肯定是异常的艰苦,但豁出去了。
上网查资料、去图书馆查,查相关的函数,经过两三天的努力,我把框架弄出来了,可是还有计算难题摆在我的面前,真的是个难题,自从把框架弄好了以后就没有进展了,眼看一个星期快过去了,我那个急啊,可是急也没有用。
我坚持,终于工夫不负有心人,我参照类似程序,改改和添添,终于大功告成,我们欢呼我们雀跃,终于相信我们自己是足够的伟大。
首先,发现自己对知识的掌握不是很牢固,对课程的设计很困难。
自己对知识的掌握和运用是相当的差,感觉自己的知识就是学得很不牢固。
其次,通过查资料,对于链表和指针的使用有了更深刻的了解,还有对define和typedef的应用有了新的认识。
再次,通过这次课程设计,明白了很多自己原来不是很清楚的知识点,对自己以后的学习和发展都是有用处的。