首页 > 范文大全 > 正文

会计模拟训练管理系统的研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇会计模拟训练管理系统的研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:分析了分布式会计模拟训练系统在使用中普遍存在的问题,提出了研制会计模拟训练管理系统的需求。会计模拟训练管理系统采用了Client/Server模式,通过安装在会计训练系统终端的客户端响应总控端控制消息,来实现远程控制,节点漫游等功能。研究了管理系统各项功能的实现方法并给出关键代码,主要应用的技术手段包括:钩子技术、进程控制、窗口消息传递、屏幕截取、图像压缩、数据库读写等。

关键词:会计;模拟训练;网络;管理;远程控制

中图分类号:F23 文献标志码:A文章编号:1673-291X(2011)22-0089-02

会计模拟训练是会计操作训练的一项重要形式,许多院校都配备了模拟训练器材。会计模拟训练丰富了训练手段,但在训练和使用过程中,也出现了许多需要解决的问题,比如:受训人员对计算机技术掌握水平偏低。经常出现错误启动训练程序以及误操作破坏系统的问题,使训练不能正常进行。会计模拟训练系统规模往往较大,但是专门的管理人员很少,在日常维护和使用时,管理人员难以管理。需要实现训练过程监控以及训后分析讲评。为解决这些高校在使用会计模拟训练器材中遇到的共性问题,只有提供一套技术解决方案才能较好的解决。根据这个需求,本文设计并实现了会计模拟训练管理系统。

一、系统功能组成与流程

会计模拟训练管理系统分为总控端和客户端,系统功能包括网络远程控制、故障监控和节点漫游,各部分功能又由相关模块组成。系统的总控端由控制、信息反馈和视频接收三部分组成;客户端由各功能模块组成。总控端控制消息,各客户端接收并解析后获得相关信息,然后按照命令执行相应功能。训练程序运行过程中,客户端负责监控其执行情况。

二、系统实现

(一)远程控制

1.系统控制

会计模拟训练管理系统控制的主要目的是锁定屏幕,防止受训人员误操作损坏系统。实现锁屏功能需要在动态链接库中调用HOOK函数,然后在HOOK处理函数中拦截键盘和鼠标消息,同时隐藏任务栏和桌面。链接库的部分代码如下:

::ShowWindow(::FindWindow(“Shell_TrayWnd”,NULL),SW_HIDE);//隐藏任务栏

::ShowWindow(::FindWindow(“Progman”,NULL),SW_

HIDE);//隐藏桌面

hHook=SetWindowsHookEx(WH_KEYBOARD_LL,myLow

LevelKeyboardProc,hAppInstance,0);

hHookmouse=SetWindowsHookEx(WH_MOUSE_LL,myLow

LevelMouseProc,hAppInstance,0);

LRESULT CALLBACK myLowLevelMouseProc (INT nCode,

WPARAM wParam,LPARAM lParam) /*鼠标处理*/

{ return 1;}

LRESULT CALLBACK myLowLevelKeyboardProc (INT nCode,

WPARAM wParam,LPARAM lParam) /*键盘处理*/

{ KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *) lParam;

BOOL bControlKeyDown = 0;

BOOL bDelete=0;

switch (nCode)

{case HC_ACTION:

{//此处处理键盘消息代码,对于需要处理的键盘消息,调用CallNextHookEx,其他消息直接返回

break;}

//其他处理

return 1;}

return 1; }

在需要解锁时执行如下代码:

UnhookWindowsHookEx(hHook);

UnhookWindowsHookEx(hHookmouse);

::ShowWindow(::FindWindow(“Shell_Tray Wnd”,NULL),SW_SHOW);//任务栏

::ShowWindow(::FindWindow(“Progman”,NULL),SW_

SHOW);//桌面

2.角色控制

(1)角色选择。对于会计模拟训练系统,数字仿真逐渐成为主流,往往需要一个硬件平台上运行多套训练软件。我们把一套训练程序视为一种角色,训练前由总控端自由选择各节点的角色。在运行时,总控端与各节点之间维持着一个协议,各节点在本地保存有所有角色运行所需的全部资源。节点接收角色协议后,按照协议运行或退出相应训练程序。这样总控端就实现了各节点角色的选择。

(2)角色运行。管理系统的客户端接收角色协议后,启动程序的代码如下:

CreateProcess(strModulename,//运行程序模块

NULL,NULL,NULL,FALSE,

0,NULL,strDir,//路径

&StartupInfo,pProcessInfo)

(3)角色退出。当客户端发现运行中角色列表与总控端协议不同时,或者总控端确定退出训练时,客户端需要终止程序。终止过程分两步:第一步,首先找到该进程对应主窗口发送退出消息;第二步,如果等待一段时间后仍然没有退出,则通过API函数TerminateProcess()将其强行关闭。

(二)节点漫游

在大型会计模拟训练系统中,需要在导演部对关键训练节点实施监控。这样有利于对训练情况的掌握和信息集中。方法为总控端向漫游节点客户端发出指令,由客户端连续发送该节点训练界面到总控端显示。截屏的部分代码如下:

Void CaptureScreen()

{

intnScreenWidth = GetSystemMetrics(SM_CXSCREEN);

intnScreenHeight = GetSystemMetrics(SM_CYSCREEN);

HWNDhDesktopWnd = GetDesktopWindow();

HDChDesktopDC = GetDC(hDesktopWnd);

HBITMAP hCaptureBitmap =CreateCompatibleBitmap(hDe-

sktopDC,nScreenWidth,nScreenHeight);

SelectObject(hCaptureDC,hCaptureBitmap);

BitBlt(hCaptureDC,0,0,nScreenWidth,nScreenHeight,hDesktopDC,0,0,SRCCOPY);

SaveandSendCapturedBitmap(hCaptureBitmap); //保存并发送图像

ReleaseDC(hDesktopWnd,hDesktopDC);

DeleteDC(hCaptureDC);

DeleteObject(hCaptureBitmap);

}

为了最大限度的压缩数据,减轻网络负荷,提高图画帧数,函数利用CxImage::Encode()将图像以JPEG2000格式导出至临时创建的内存缓冲区,然后将内存数据通过局域网发送到总控端。最后总控端调用CxImage::Decode()读入内存图像数据并进行显示。

三、结束语

通过长期的实践证明,该系统能大大减轻管理人员的工作强度,降低了系统故障率,解决了会计模拟训练在集中管理、系统安全、训练监控、效果评判方面的需求。

参考文献:

[1]张量,詹国华,袁贞明.计算机远程控制的实现与应用[J].计算机应用,2002,(4):62-66.

[2]Davide Pizzolato.CxImage[EB/OL].http://www.省略//KB/graphics/cximage.aspx.[责任编辑 陈丽敏]