李玲玲
摘要:针对传统教学的诸多弊端,開放式教学的普遍应用,伴随着网络技术的迅猛发展,带动了教学和管理方式的改革。网络与教学的结合,为教学的发展提供了更加多元化的发展空间。该文提出一个基于C/S架构的教学管理监控系统,该系统结构清晰,实用性强,具有可扩展性。此系统涉及数据通信、网络教学、信息管理、屏幕监控等功能,在该文中重点讲解教学功能模块的实现方法。
关键词:C/S架构;教学管理;监控系统
中图分类号:TP315 文献标识码:A 文章编号:1009-3044(2018)28-0058-02
开放式教学的普遍应用,伴随着网络技术的迅猛发展,带动了教学和管理方式的改革。网络与教学的结合,为教学的发展提供了更加多元化的发展空间。本文提出一个基于C/S架构的教学管理监控系统,此系统主要实现数据通信、网络教学、远程协助、信息管理与分配、屏幕监控、交流等功能。
1 总体设计
教学管理与监控系统采用C/S通信结构,服务器端主要实现数据通信和网络教学功能,包括信息管理与分配、数据监控、教学等功能。系统结构图如图1所示。客户端的功能包括登录、注册、与服务器交流等功能。
1.1 教师端功能
教师端主要包括以下几个功能模块:
信息管理模块:主要包括学生信息和成绩信息管理,本系统中数据库使用SQL Server 2008,需要建立用户信息数据库表和成绩信息数据库表,在程序中要实现数据库表的管理,比如添加、删除、修改等操作。
服务器登录模块:服务器登录,可以选择不同的权限,有教师、管理员、超级管理员三种权限。
权限管理模块:在服务器登录时,可以选择不同的权限进行登录,不同的权限也对应相关的功能:教师负责教学、学生管理、成绩管理;管理员可以管理教师信息;超级管理员可以配置相关系统的功能。
文件传输模块:要向所有客户端广发文件信息,将服务器端的文件传递到客户端的指定位置。
投影教学模块:投影教学即教师向所有学生发送消息,要求所有学生的电脑黑屏并且提求所有学生注意投影。以方便老师教学。
远程协助模块:即教师可以远端操作学生机电脑,以完成对学生的帮助和指导。
1.2 学生端功能
学生端主要包括以下几个功能模块:
注册:学生机可以在本机输入自己的相关信息,然后向教师发送注册信息,消息格式“长度|CUC|信息串”,信息将被记录于教师机的数据库。教师收到注册信息后,解析出消息内容:首先在数据库中查找是否存在该学生学号,如果不存在,则将学生信息添加至数据库用户信息表,并向学生发送"3|CUC|YES"。否则,向学生机发送注册失败命令"2|CUC|NO"。
登录:学生机向教师机发送登录命令,教师机收到登录命令后,解析出消息中的数据(学号和密码);然后根据学号查找数据库,如果数据库中没有此学号,则向学生机发送"3|CUL|SNONO",表示用户名不存在;如果数据库中有此学生,但密码不正确,则向学生机发送"3|CUL|PASSNO";如果学号和密码都正确,则向学生机发送"3|CUL|YES",表示登录成功。
下线:学生机如果关闭系统,将会向服务器发送"DISCONNECT"消息,教师机接收到该消息后,提示某学生下线,并结束该学生的通信线程。
2 关键技术实现
2.1 创建局域网通信
整个C/S结构采用SOCKET通信,系统使用VS2008编写,先创建单文档项目,并将视图的基类改为CFormView,这样可以随意在VIEW框中增加控件。服务器需要用到多个线程,一个线程负责客户端的连接(登录和注册)的操作(设为线程函数A);另一个线程负责通信过程中的数据接收与处理(设为线程函数B);当学生连接成功后,创建该学生的数据通信线程。线程函数B会被引用多次,即会被创建多个线程,当前有多少学生在线就会创建多少个线程。
接下来介绍服务器的创建流程:
使用WSAStartup函数创建SOCKET版本,或申明一个连接的开始。
再使用socket或者WSASocket建立流式套接字,返回套接字号。
bind函数将套接字与本地地址相连,进行绑定。绑定时要配置相关结构体(包括IP地址、端口号)SOCKADDR_IN。
使用listen设置服务器的监控个数,如:listen(sListeningSocket, LISTEN_LEN);。
利用while(1)的循环,使用accept监控客户端的连接,如果连接成功,则返回客户端的套接字,用于与客户端通信。
当监控到学生的连接后,需要判断学生的登录信息和注册信息。
每监控到一个学生上线,使用CreateThread创建一个线程。
关闭连接: closesocket (套接字);WSACleanup();。
服务器创建流程图如图2所示:
再介绍客户端的连接流程:
使用WSAStartup函数创建SOCKET版本,或者申明一个连接的开始。
再使用socket或者WSASocket建立流式套接字,返回套接字号。
配置SOCKADDR_IN结构体参数;包括端口,服务器IP地址等,利用connect函数去与服务器建立连接。
连接建立成功后,就可以利用套接字与服务器进行通信,包括发送数据和接收数据(send、recv)。
关闭连接:closesocket(套接字);WSACleanup();。
客户端创建流程图如图3所示:
2.2 投影教学功能实现
投影教学即教师向所有學生发送消息,要求所有学生的电脑黑屏并且提求所有学生注意投影,以方便老师教学。投影教学的流程如下:
教师向所有学生发送投影教学启动命令"2|TP|ON"。
学生机接收命令后,调用相关窗口进行黑屏和文件显示处理,并锁定键盘和鼠标。
当教师向学生发送投影教学关闭命令后"2|TP|OFF",学生机操作恢复,屏幕黑屏取消。
2.3 远程协助功能实现
远程协助包括两部分的功能:学生桌面传输和协助两个功能。
学生桌面传输流程:
教师机向学生机发送“远程协助”命令:"2|RomteHelp|ON"
学生机接收到“远程协助”命令后,学生机选择是否接收协助,并向教师机发送相关命令。
教师机如果接收到同意协助的命令"3|RomteHelp|YES"(如果接收到的命令是不同意,则提示学生机不同意"2|RomteHelp|NO"),教师机先获取学生机的分辨率信息,并向学生机发送桌面分块,初始化接收桌面数据的结构。
学生机接收桌面分块命令后,根据桌面的分块,初始化发送桌面数据的结构,将记录桌面每一块区域的右上角坐标和左下角坐标,以及该区域的位图。
教师机向学生机发送桌面更新命令"7|RomteHelp |REFRESH",客户端接收到更新命令后向教师机传递桌面更新的块数、更新块的坐标、块的压缩信息;同时教师机还需要接收更新的块数、更新块的坐标、块的压缩信息,并解压缩,然后将块信息(坐标、块压缩)存入接收结构链表。
在远程协助相关界面上画出学生机桌面信息,在OnPaint函数中绘制桌面。
当教师机需要停止远程协助时,发送"2|RomteHelp|OFF"。
协助功能流程:
在学生机桌面传到教师机后,教师可以“操作”该桌面,包括鼠标左键按下、弹起;右键按下、弹起;当“桌面”响应这些消息后,向学生端发送WM开头的消息。
学生机收到WM消息后,根据不同的消息模拟鼠标和键盘响应。首先将消息解出,消息包括了鼠标响应的坐标。学生机将坐标取出后,转换成本机分辨率的坐标,然后再转换成MOUSE_EVENT函数对应的坐标(0,0 -65535,65535),转换坐标后再使用mouse_event模拟出来。
学生机根据模拟的操作,执行操作后,教师机再发送桌面更新命令,并再次接收学生桌面信息存放于GdiREVList链表中。
2.4 同步教学功能的实现
此功能是远程协助的逆过程。服务器是桌面信息发送方,学生机是桌面信息的接收方。同步教学实现流程如下:
教师机向所有学生发送同步教学命令"2|TeachSyn|ON"
学生机收到命令后,开始获取教师机的分辩率,并向学生机发送桌面分块,初始化接收桌面数据的结构。
教师机接收桌面分块命令后,根据桌面的分块,初始化发送桌面数据的结构,将记录桌面每一块区域的右上角坐标和左下角坐标以及该块区域的位图。
后面的处理,与远程协助相同。只是由学生机发起更新桌面的命令,教师机将桌面信息发送给学生机。
教师可以发送"3|TeachSyn|OFF"命令,关闭同步教学。在关闭同步教学时,注意要等待SendRegionDisplay函数执行完毕后,再释放Clear_GdiSend(&GdiSendStart;)。
3 结束语
值得注意的是,由于整个C/S通信框架只有一个SOCKET通信,所以在使用同步教学时,应当限制教师向学生机发送信息,更不可在做同步教学正在进行时发送远程协助和屏幕监控等命令。同样的道理,远程协助或屏幕监控正在进行时,也应该限制其他消息的发送,包括学生端的。这可以避免消息的冲突。在本文中主要介绍了教学管理监控系统中的教学功能,后续再详细介绍系统中的管理监控系统。
参考文献:
[1] 周瑞玲,肖发新.基于C/S和B/S混合模式的教学管理系统的设计与实现[J].办公自动化,2009(152).
[2] 张梦蝶.基于C/S模式的软件工程网络教学系统设计与实现[D].成都:电子科技大学,2012.
[3] 雷雪.基于C/S模式的远程监控系统设计与实现[D].北京:北京邮电大学, 2011.
【通联编辑:梁书】