局域网监控系统毕业设计.doc

上传人:laozhun 文档编号:4151536 上传时间:2023-04-07 格式:DOC 页数:36 大小:326.50KB
返回 下载 相关 举报
局域网监控系统毕业设计.doc_第1页
第1页 / 共36页
局域网监控系统毕业设计.doc_第2页
第2页 / 共36页
局域网监控系统毕业设计.doc_第3页
第3页 / 共36页
局域网监控系统毕业设计.doc_第4页
第4页 / 共36页
局域网监控系统毕业设计.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《局域网监控系统毕业设计.doc》由会员分享,可在线阅读,更多相关《局域网监控系统毕业设计.doc(36页珍藏版)》请在三一办公上搜索。

1、深圳信息职业技术学院毕业设计(论文)2011 2012学年第 一 学期题目 家庭局域网监控系统姓 名 周彬 学 号0901100101 系 别 软件工程系 专 业 软件技术 班 级 09软件3-2班 指导教师 黄锐军 答辩日期 深圳信息职业技术学院设计(论文)开题报告课题名称: 局域网监控系统 指导教师: 职称: 副教授 学生人数: 5人 学生姓名(学号、专业):姓名:周彬 开题报告内容: 设计的目的及意义:随着信息化的不断扩展,大部分企业都采用计算机来管理自己的财务、商业机密等别的业务。但是并不是每个用计算机的员工,都能在上班时间充分的利用计算机干自己的工作。即便是制定了相关的规章制度还是不

2、能约束其行为。那么局域网监控系统,完全可以起到约束的作用。该系统可以实时的对局域网内的每台计算机进行屏幕监控。 设计的要求:(1)学会如何分割UDP数据报;(2)学会发送和接受UDP数据报;(3)学会自定义控件;(4)学会抓取屏幕(5)学会ADO技术对数据库操作 预期成果:(1)将客户端隐藏,并且不断向服务器端发送屏幕信息;(2)通过发送指令来控制客户端发来屏幕信息的位置;(3)通过ADO技术实现对ACCess数据库操作 时间安排:12月10号-12月15号熟悉课题的基本要求,查阅相关的资料,初步拟定设计的整体方案,完成开题报告 ;12月16日-12月23号将监控系统的客户端完成,并对客户端进

3、行试验总;12月24日-1月5号将服务器端完成,对数据的操作进行总结,以及整个毕业设计的完成。 在黄老师的指导下,综合我们以前所学的专业知识及查找的相关资料,能够在预期的时间内完成整个网站和论文。 指导教师签名: 日期: 备注:(1)来源:A教师拟订;B学生建议;C企业和社会征集;D实习单位提供(2)类型:X真实课题;Y模拟课题;Z虚拟课题摘 要Internet在我国刚刚起步时,上网人群主要是从事IT技术的专业人员,年龄段多是中年人,但是随着Internet技术的快速发展,我国的上网人群年龄逐年增多,不仅包括中年人,青少年及老年人在上网人群的比重不断增加。Internet上丰富的资源给人们带来

4、了很多的方便,但是也存在许多不良的信息危害青少年的健康,一些家长担心青少年上网会影响其学习。局域网监控系统能够将局域网中的某一台计算机的屏幕信息发送到服务器端,家长可以随时了解青少年浏览的网页信息,对青少年上网起到监督作用。本文首先介绍了问题的背景,接着提出问题,并针对具体项目展开需求调查分析;再基于需求设计出具体的方案;然后对整个系统进行了详细的分析和设计,在设计与实现过程中,结合源代码具体的描述出整个项目的开发过程;最后对整个系统进行测试得出测试结论。关键字:屏幕监控;数据过滤 第一章 绪论81.1 问题背景81.2 研究范围及技术要求81.2.1 研究范围81.2.2 技术要求8第二章

5、系统设计102.1 需求分析102.2 系统目标102.3 系统功能结构102.3 系统预览112.4 业务流程图132.5程序运行环境142.5我的任务数据库设计、数据库的连接及界面的搭建14第三章 客户端设计153.1客户端模块概述153.2客户端技术分析153.3客户端实现过程16第四章 公共类设计20第五章 系统登录模块设计205.1系统登录模块概述205.2系统登录模块技术分析215.3系统登录模块实现过程21第六章 主窗体设计246.1主窗体概述246.2主窗体的实现过程24第七章 操作员管理模块设计287.1操作员模块概述287.2操作员模块技术分析297.3操作员模块实现过程2

6、9第八章 系统设置模块设计368.1系统设置模块概述368.2系统设置模块实现过程3637第九章 开发技巧与难点分析379.1及时关闭记录集379.2访问带密码的Access数据库389.3防止SQL注入攻击389.4ON_COMMAND_RANGE宏的注意事项399.5收获与体会39致谢39参考文献40第一章 绪论1.1 问题背景Internet在我国刚刚起步时,上网人群主要是从事IT技术的专业人员,年龄段多是中年人,但是随着Internet技术的快速发展,我国的上网人群年龄逐年增多,不仅包括中年人,青少年及老年人在上网人群的比重不断增加。Internet上丰富的资源给人们带来了很多的方便,

7、但是也存在许多不良的信息危害青少年的健康,一些家长担心青少年上网会影响其学习。局域网监控系统能够将局域网中的某一台计算机的屏幕信息发送到服务器端,家长可以随时了解青少年浏览的网页信息,对青少年上网起到监督作用。1.2 研究范围及技术要求1.2.1 研究范围 1. 设计该系统的功能模块划分,使用Acesss 2007设计出该系统的数据库。2. 参考实际局域网监控系统,完成对系统的需求分析及设计文档。3. 根据需求分析及设计文档完成代码编制。1.2.2 技术要求 1. 功能模块划分合理。2. 数据库设计满足功能要求。3. 采用UDP协议进行数据传输。4. 对客户端的数据进行过滤。5. 建立数据库访

8、问接口类,实现对数据库的访问。6. 实时抓取客户端的屏幕信息。第二章 系统设计2.1 需求分析 局域网监控系统主要是对计算机屏幕信息进行实时监控。因此局域网监控系统需要实现屏幕信息的时时发送和接受。由于屏幕信息需要时时显示,因此信息的传输速度要快,屏幕信息要时时发送。为此,选择UDP协议进行传输。为了防止服务器端随意的接收客户端发来的数据报,服务器端需要对发来的数据报进行过滤,只有是制定的客户端才接收数据。2.2 系统目标本系统属于小型的局域网监控系统,可以对某一台计算机进行屏幕监控。本系统主要实现一下目标:1. 系统采用人机交互的方式,界面美观友好。2. 屏幕信息需要时时显示,网络延时不能大

9、于1秒。3. 服务器端可以随时运行,只要客户端运行,就能够显示屏幕信息。4. 系统运行时占用内存不能大于10MB,以免影响系统的性能。5. 客户端运行时需要隐藏显示窗口,其感觉不到在运行。2.3 系统功能结构局域网监控系统功能结构图如下所示。局域网监控系统客户端服务器端主窗体主窗体系统登录操作员管理系统设置2.3 系统预览局域网监控系统分为客户端和服务器端两部分,其中客户端运行时将窗体隐身,服务器端主要有四个窗体组成,分别为主窗体、操作员管理窗体、系统登录窗体、系统设置窗体。其中,主窗体用于接收并显示屏幕信息。操作员管理窗体用于添加、修改、删除操作员信息,系统登录窗体用于系统在启动时验证用户身

10、份。系统设置窗体用于设置客户端 IP。我的任务:界面的搭建,数据库的设计,界面的优化 主 窗 体系统登录窗体操作员管理窗体 系统设置窗体2.4 业务流程图系 统 登 录登录成功是主 窗 体系统设置方向控制操作员管理否2.5程序运行环境 本系统对运行环境有一定的要求,具体如下:1、 系统开发平台:Microsoft VC 6.0.2、 系统开发语言:C+3、 数据库软件系统软件:Microsoft Acess 20074、 运行平台:Windows XP/75、 分辨率:最佳效果1024*1280像素2.5数据库设计1、 数据库分析在开发局域网监控系统时,使用数据库主要用于记录操作员信息及客户端

11、信息,系统设计的数据量比较小,因此本系统采用的Microsoft Access2007作为后台数据库,数据库名字为db_Video,其中包含了2张表2、 数据库概念设计数据库概念设计是根据各个模块的需求“抽象”出数据实体的过程,也就是宏观上用文字、图表描述数据表的过程。 为了增加系统的安全性,服务器端设置了登录窗口,在系统启动时弹出该窗口,要求用户输入操作员名称和密码。其中用户的操作员名称和密码信息存储在数据表中。这样在系统登录模块就需要一个操作员信息实体。 为了过滤服务器端接受的数据报,时期值接收制定客户端发来的数据,需要存储客户端IP,为此,需要单独设计一个客户端信息实体对象。操作员信息表

12、操作员密码操作员姓名客户端信息表客户端IP地址第三章 客户端设计3.1客户端模块概述 局域网监控系统分为客户端和服务器端两大模块,其中,客户端的主要作用是时时抓取本机的屏幕信息,将其分成多个数据报,发送到服务器端。为了保证屏幕信息能够完整的发送到服务器,客户端在发送一个数据报后,需要等待服务器端发来的确认信息,然后继续发送下一个数据报。3.2客户端技术分析客户端要实现屏幕信息的发送,要解决两个关键问题:一是获取屏幕信息,将其转换为位图格式;二是将位图信息发送到服务器。一、 将屏幕信息转换为位图格式 CDC* pDeskDC = GetDesktopWindow()-GetDC();/获取桌面画

13、布对象CRect rc;GetDesktopWindow()-GetClientRect(rc);/获取屏幕的客户区域int width = 300;/获取屏幕的宽度int height = 300;/获取屏幕的高度CDC memDC;/定义一个内存画布memDC.CreateCompatibleDC(pDeskDC);/创建一个兼容的画布CBitmap bmp;bmp.CreateCompatibleBitmap(pDeskDC,width,height);/创建兼容位图memDC.SelectObject(&bmp);/选中位图对象BITMAP bitmap; /定义位图信息bmp.Get

14、Bitmap(&bitmap); /获取位图信息 memDC.BitBlt(0,0,width,height,pDeskDC,m_X,m_Y,SRCCOPY);/将屏幕信息输出到位图二、 根据位图对象获取位图信息一个位图文件通常有“位图文件头”、“位图信息头”、“调色板”和“实际位图数据”4个部分组成。其中“位图文件头” 包含BMP图像文件的类型、显示内容、位图标记、位图大小等信息,在程序中使用BITMAPFILEHEADER结构来表示。“位图信息头”和“调色板”2个部分描述了位图的宽度、高度、是否压缩、位图颜色等信息,在程序中使用BITMAPINFO结构描述。由于程序发送的位图不是以文件形式

15、发送的,只需要发送位图位图信息头、调色板和实际数据就可以了,因此不需要位图文件头。int panelsize = 0;/记录调色板大小if (bitmap.bmBitsPixelbmiHeader.biBitCount = bitmap.bmBitsPixel;/设置位图颜色用到的位数pBInfo-bmiHeader.biClrImportant = 0;/指定显示位图颜色的种类,如果值为0,所有的颜色种类都需要pBInfo-bmiHeader.biCompression = 0;/指定位图的压缩类型- “该语句=0”说明改为图不进行压缩pBInfo-bmiHeader.biHeight =

16、height;/指定位图的高度pBInfo-bmiHeader.biPlanes = bitmap.bmPlanes;/为目标设备指定调色板的数量,且该值只能是1pBInfo-bmiHeader.biSize = sizeof(BITMAPINFO);/设置BITMAPINFO结构大小pBInfo-bmiHeader.biSizeImage = = bitmap.bmWidthBytes*bitmap.bmHeight;/设置图像的大小pBInfo-bmiHeader.biWidth = width;/指定位图的宽度pBInfo-bmiHeader.biXPelsPerMeter = 0;/目

17、标设备的水平分辨率pBInfo-bmiHeader.biYPelsPerMeter = 0;/目标设备的垂直分辨率m_X = m_RecX;m_Y = m_RecY;三、将位图信息发送到服务器 因为将图片信息传送到服务器端要求的实时性比较强,所以采用UDP协议将位图信息发送到服务器3.3客户端实现过程1、 创建一个基于对话框的工程,名称为Client。2、 在Stafx.h文件中引入套接字库。3、 在应用程序类的Instance函数中初始化套接字 WSADATA data;WSAStartup(2,&data);4、 改写应用程序类的虚方法ExitInstance int CClientApp

18、:ExitInstance() WSACleanup(); /清理套接字资源 return CWinApp:ExitInstance();5、 在对话框类中添加如下成员变量 SOCKET m_Socket;/客户端套接字CString m_ServerIP;/服务器IPint m_X,m_Y;/抓起屏幕的起始坐标WORD m_RecX,m_RecY;/收到服务器发来的抓起屏幕的起始坐标BOOL m_Confirm;/确认信息int m_FrameIndex;/记录索引int count;/每一个位图分报的数量int bmpsize;/位图的实际大小int mod;/记录余数char *pSen

19、dBuf;/发送缓冲区指针char *Head;/临时指针sockaddr_in addrl;/套接字地址BOOL m_Received;/是否受到服务器发来的确认信息int m_Counter;/计数器6、在对话框的初始化函数中,创建套接字将其绑定到指定位置,并初始化相应的成员变量BOOL CClientDlg:OnInitDialog()hostent *phost=gethostbyname();char *localIP=inet_ntoa(*(struct in_addr*)*phost-h_addr_list);sockaddr_in addr;addr.sin_family=AF

20、_INET;addr.sin_addr.S_un.S_addr=inet_addr(localIP);addr.sin_port=htons(5001);m_Socket=socket(AF_INET,SOCK_DGRAM,0);if(m_Socket=INVALID_SOCKET)MessageBox(套接字创建失败!);if(bind(m_Socket,(sockaddr*)&addr,sizeof(addr)=SOCKET_ERROR)MessageBox(绑定套接字失败!);m_ServerIP=127.0.0.1;GetPrivateProfileString(ServerInfo,

21、IP,127.0.0.1,m_ServerIP.GetBuffer(0),MAX_PATH,./server.ini);/读取INI配置文件 WSAAsyncSelect(m_Socket,m_hWnd,CM_RECEIVED,FD_READ);/该函数的功能是在套接字m_Socket上,看是否有读取事件发生如果有,向窗口句柄为m_hWnd的窗口发送CM_RECEIVED消息m_X=m_Y=0;m_RecX=m_RecY=0;m_Confirm=true;pSendBuf=new char1024*1024*2;Head=pSendBuf;Onok();m_Received=false;m_C

22、ounter=0;SetTimer(1,1000,NULL);return TRUE; / return TRUE unless you set the focus to a control7、 自定义一个消息,当套接字接到数据时,将该消息发送到主窗口 #define GraphSize 1024#define CM_RECEIVED WM_USER+200 /自定的消息CM_RECEIVED8、 添加OnReceived()方法,该方法的作用是:接收服务器端发来的确认信息和控制信息void CClientDlg:OnReceived() char *pData=new char1024;me

23、mset(pData,0,1024);sockaddr_in addr;int factsize=sizeof(sockaddr);int ret=recvfrom(m_Socket,pData,1024,0,(sockaddr*)&addr,&factsize);if(ret!=-1) /判断是否接收成功 if(ret=4) /方向指令 m_RecX=*(WORD*)&pData0; /填充屏幕x坐标 m_RecY=*(WORD*)&pData2; /填充屏幕y坐标 if(ret=8) /确认指令 m_Received=TRUE; m_FrameIndex+=1; /将发送的数据报的序号加1

24、 if(m_FrameIndex5)m_Counter=0;Onok();else /当接收到服务器发来的数据m_Received=FALSE;m_Counter=0;CDialog:OnTimer(nIDEvent);12、 添加一个Onok方法,将屏幕信息转化为位图信息,划分数据报的格式,计算每个 位图信息需要发送数据报的次数,调用SendData方法。13、 在对话框类中的OnPaint函数中添加ShowWindow(SW_HIDE);将对话框隐藏。第四章 公共类设计 在局域网监控系统的服务器端需要对数据库进行操作。为了方便管理,将有关数据库的操作封装为一个类CDataManage。该类

25、中包含ADOConnection对象、ADOCommand对象和ADORecordset对象,被提供InitDatabase方法用于构造ADO对象、连接数据库。CDataManage类的具体实现过程如下:1、 在visual C+工程中的Stdafx.h头文件中导入msado15.dll动态库。#import C:Program FilesCommon FilesSystemadomsado15.dll no_namespacerename(EOF,ADOEof)2、 创建一个普通类,命名为CDataManage,在该类中添加如下成员变量。 _ConnectionPtr m_pConnecti

26、on;_CommandPtr m_pCommand;_RecordsetPtr m_pRecord;3、 向CDataManage类中添加InitDatabase方法构造ADO对象,并连接数据库。 BOOL CDataManage:InitDatebase()HRESULT hr;try hr = m_pConnection.CreateInstance(ADODB.Connection);/创建Connection对象m_pCommand.CreateInstance(ADODB.Command);m_pRecord.CreateInstance(ADODB.Recordset); if(S

27、UCCEEDED(hr) hr = m_pConnection-Open(Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db_Video.mdb,adModeUnknown);/连接数据库/上面一句中连接字串中的Provider是针对ACCESS2007环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51; catch(_com_error e)/捕捉异常CString errormessage;errormessage.Format(连接数据库失败!rn错误信息:%s,e.ErrorMessag

28、e();AfxMessageBox(errormessage);/显示错误信息return FALSE; return true;第五章 系统登录模块设计5.1系统登录模块概述 为了防止非法用户使用系统,在局域网监控系统的服务器端提供了系统登录莫块。在系统启动时,只有输入正确的用户名和密码才能进入主界面。5.2系统登录模块技术分析 为了验证用户输入的用户名和密码是否正确,需要根据用户输入的用户名和密码从数据库中查询用户信息,如果有信息返回,表明用户名和密码正确;否则不正确。程序中使用了ADOCommand对象执行查询操作。在使用ADOCommand对象时,首先需要设置ActiveConnect

29、ion属性,该属性关联一个ADOCommand对象,然后设置CommandText属性,该属性表示ADOCommand对象要执行的SQL语句。如果SQl语句中有参数,还需要调用Parameters属性的Append方法插入参数,最后调用ADOCommand对象的execute方法执行SQL语句。代码如下:_ParameterPtr pUser,pPassword;CServerApp *pAPP=(CServerApp*)AfxGetApp();pUser=pAPP-m_DataManage.m_pCommand-CreateParameter(user,adVarWChar,adParamI

30、nput, 100,(_bstr_t)user);pPassword=pAPP-m_DataManage.m_pCommand-CreateParameter(password,adVarWChar,adParamInput, 100,(_bstr_t)password);pAPP-m_DataManage.m_pConnection-CursorLocation=adUseServer;pAPP-m_DataManage.m_pCommand-ActiveConnection=pAPP-m_DataManage.m_pConnection;pAPP-m_DataManage.m_pCommand-Parameters-Append(pUser);pAPP-m_DataManage.m_pCommand-Parameters-Append(pPassword);/CString sql=select *from tb_userInfo where UserName=+user+ and PassWord=+password+;pAPP-m_DataManage.m_pCommand-CommandText=select *from tb_userInfo where UserName=user and

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号