董爱民
摘要:随着高校实验室数量及莘莘学子的不断增多,最初的人工预约实验室模式存在效率低下、出错率高、管理混乱、资源浪费,甚至造成实验课程安排冲突。该文设计的基于MFC的实验室预约系统,能够提高实验室管理人员管理效率,方便教师对实验室的预约,同时也解决了学生因为实验时间和地点信息无法及时获取而造成的缺课问题。该系统实现了数据流的自动化与一体化,通过对实验室信息的高效管理使得本系统具有人工管理所无法比拟的优势。
关键词:实验室;实验预约;自动化
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)13-0068-03
1 系统架构
本系统使用的模式是C/S模式,即服务器端/客户端模式。系统架构如图1所示。
1.1 服务器端
数据库连接对象:系统对数据库的访问和操作都是在服务器端进行的,本系统采用ADO技术连接数据库。
服务器端套接字:服务器端套接字用于监听、接受和处理客户端的请求。
服务器端通过对每个客户端连接请求分配一个线程,可同时处理多个客户端的请求。当处理客户端修改数据库的请求时,使用并发控制,保持各个线程对资源操作的同步。
处理客户端请求对象:当服务器端套接字接收到报文,报文为XML格式,需要对报文进行解析,通过解析出来的参数信息,写成SQL语句传给数据库连接对象进行操作,同时接收数据库连接对象查询得到的结果,拼装成XML格式的字符串,传递给服务器端套接字,服务器端套接字再传递给系统客户端。
1.2 客户端
客户端角色:管理员角色、教师角色、学生角色。在请求操作的时候它们通过向系统服务器端发送报文来请求操作。报文分为上行报文和下行报文,上行报文是客户端向服务器端发送的报文,下行报文是服务器端向客户端发送的报文。系统定义报文的数据类型是一个结构体,包含报文的长度、类型、报文主体。
客户端套接字:同服务器端一样,客户端也有一个套接字,称之为客户端套接字。客户端把请求的参数拼装成XML格式报文主体,然后通过客户端套接字发送到服务器端。客户端从服务器端接收到的是XML格式的字符串,转换成自定义的XML对象,然后通过对象提取出由服务器端传递过来的数据
1.3 服务器端和客户端的通讯
首先是客户端将请求及需要的参数写成XML格式的字符串报文,然后通过客户端套接字发送到服务器端,服务器端通过服务器端套接字接收报文,交给处理对象处理,处理对象将报文解析,将解析出来的参数发给ADO对象,ADO对象通过参数进行数据库查找、添加、删除、更新等操作,最后将结果返回给处理对象,处理对象再将报文主体装成XML格式的字符串报文发给服务器端套接字,服务器端套接字再将报文发给客户端。
2 系统数据流及数据存储描述
系统主要数据流的说明如表1所示。
系统主要数据存储如表2所示。
3 关键功能
3.1 系统登录
系统登录是在线程中实现登录的,在线程中登录是为了实现托盘状态的转变效果。在登录之前,系统托盘呈现灰色(离线状态),成功登陆后系统托盘呈现亮色(在线状态),而在登录中系统托盘呈现闪动效果。录页面包括身份的选择、账号输入、密码输入、记住密码复选框、登录按钮、设置按钮。点击设置按钮弹出设置界面,界面包括客户端连接服务器端的IP地址输入框、端口输入框,记住密码功能是将用户的信息存入到本地磁盘的文本文件中,当运行系统时系统从磁盘中读取用户信息。
3.2 管理功能
系统中有很多管理信息界面,管理信息界面主要是对信息进行添加、修改、删除操作。下面就系统中的一个具有代表性的系部课程管理界面来做介绍。
管理员通过添加、修改、删除来管理系部课程。
1)删除功能
当管理员选中删除单选按钮时,界面下方的编辑框和组合框里就会出现选中的信息,但编辑框和组合框都变成不可编辑的。
2)修改功能
同删除功能一样,修改也是选中课程,然后下面的编辑框和组合框都显示选中的课程信息,管理员可以到下面的编辑框和组合框编辑信息。
3)添加功能
当“添加”单选框没有选中时,学院和教研室的组合框里面都是空数据,当选择“添加”按钮时他们才会有数据,并且当选中上面的课程信息时下面的编辑框和组合框不会显示课程信息,教师可通过下拉框来选择需要添加的课程。
3.3 上传数据
单个添加数据显得效率低下且极为不便,特别是需要添加大量数据时,为此系统增加了Excel表的导入功能,管理员可通过Excel表批量添加信息到数据库。上传Excel表界面如图2所示。
点击打开按钮就会弹出文件对话框,为了减少导入数据出错的可能性,文件对话框中的文件类型经过了后缀名过滤处理,用户只能选择.xls后缀名文件。
3.4 消息和托盘
教师预约实验室成功或者取消实验室成功会需通知学生;管理员审批教师实验室申请通过会需通知教师和学生;管理员进行系统调课需通知教师和学生。本系统增加了系统消息提示功能,消息框在电脑屏幕的右下角系统托盘处弹出。其中人形标志为系统客户端托盘,托盘分为离线状态下的托盘和在线状态下的托盘,在用户登录之前托盘是离线状态下(灰色),用户在登录之中是呈现闪动状,成功登陆之后是在线状(亮色)。在客户端的主界面,设有一定时器,每隔3S向服务器发出请求,查看数据库消息表中有无消息,如表中有消息,则在线程中实现消息提示框的弹出,具体代码如下所示:
void CMainDialog::OnTimer(UINT_PTR nIDEvent)//定时器里发生操作,每3S
{ 省略部分代码
if(Mtype!="")
{
int type = _ttoi(Mtype);
switch(type)
{
case 1:
ShowMessage("您的班级有新的预约!\n请查看课表!");
break;
case 2:
ShowMessage("您的班级有预约被取消,\n请查看课表!");
break;
case 3:
ShowMessage("您有新的申请通过!\n请查看!");
break;
case 4:
ShowMessage("实验室有新的申请!");
break;
case 5:
ShowMessage("管理员调动了课程,\n请查看课表!");
break;
}
}
}
}
LRESULT CMainDialog::MessageThread( LPVOID lparam)//消息框线程
{ TCHAR * pmessage = (TCHAR *)lparam;
if ( pmessage != NULL )
{ CMessageDialog cmessagedlg(pmessage);
cmessagedlg.DoModal();
free( pmessage );
pmessage = NULL;
}
return (LRESULT)TRUE;
}
4 小结
本系统在技术上实现了服务器端和客户端的交互,使用XML格式的报文作为数据的载体在服务器端和客户端进行传输,同时实现了在线程中进行用户登录、在线消息框提示、Excel表的导入、线程和进程间的消息交互等功能技术。在教师预约和管理员对数据修改上实现了并发控制,数据库方面运用了触发器和存储过程加快了数据库操作效率。
参考文献:
[1] 郑刚. 面向对象方法在信息系统开发中的应用[M]. 微机发展, 2002, 12(2).
[2] 覃征, 徐文华, 韩毅.等. 软件项目管理[M]. 2版.北京: 清华大学出版社, 2009.
[3] 马丁, 邓辉. 敏捷软件开发(原则模式与实践)[M]. 北京: 清华大学出版社, 2003.