-1-会议视频管理系统学院专业班级学号姓名指导教师教师职称年月日–2–目录会议视频管理系统目录摘要0引言1系统需求分析1系统需求分析2开发工具的选择2总体设计1项目规划2系统功能结构3设计目标3系统设计1开发及运行环境2数据库设计1构建应用程序框架2封装数据库3主窗口设计4系统登录管理5视频采集6视频录像7会议记录附录A参考文献附录B数据表摘要【摘要】为了适应全球经济一体化的迅速发展,各大企业纷纷在世界各地建立企业的分支机构,以扩大企业在经济领域中的影响力。企业规模的不断扩大,给企业管理出现了新的管理要求,为了让各地分支机构能够及时的对企业决策作出迅速的反应,各企业都积极采用高科技技术——视频会议,对各分支机构进行统一的通知、调整等,使各地的分支机构能够同一时间,同时按照企业的整体规化和按排开始行动。具有关研究表明,人脑所接受的信息中55%来自于面对面的视觉效果,38%依赖于说话者的语音,而只有7%依赖于内容。随着计算机网络通信技术发展和电信基础运营成本的降低,新一代视频会议系统在各企业中得到广泛的应用。2004年和2005年,中国视频会议市场增长率将保持在32%以上,在年度IT业界热点技术中,视频会议技术位居前列,显示了这一市场的潜力确实值得期待。【关键词】会议视频管理系统吉林省明日科技有限公司监制0引言视频会议管理系统通过录像对会议的全程跟踪和记录,把会议记录的图像信息存储到数据库中,通过管理系统对数据库中记录进行管理,实现了通过管理系统对会议的全程图像信息进行管理。本系统为单机版视频管理系统,通过摄像头进行图像的摄录,以记录形式保存在数据库中。通过对数据库中的记录的管理实现对会议信息的管理。1系统需求分析1.1系统需求分析根据市场的需求,要求系统具有以下功能:记录会议信息。具有数据备份及数据恢复的功能,确保系统的安全性。视频录像。视频控制。会议信息查询。1.2开发工具的选择会议视频管理系统采用Microsoft公司的VisualC++6.0进行开发。相信大家都听说过这样一句话,“聪明的程序员使用Delphi,真正的程序员使用VC”,与其他工具相比,VisualC++具有以下特点:1.VisualC++工具以C++语言为基础,因此生成的可执行文件小,执行效率高。2.VisualC++具有强大的调试功能,可以设置和跟踪断点,查看栈和变量信息,能够自动检测内存泄露。3.VisualC++具有强大的硬件控制功能,与VB、Delphi的RAD开发工具不同,VisualC++拥有很强的底层控制能力,现今的许多驱动程序都采用VisualC++进行开发。4.VisualC++具有丰富的帮助文档,即MSDN。MSDN包含了几GB的文档和源代码,通过它,可以解决各种技术难题。5.VisualC++出自Micorosoft公司,因此,对Windows系统的新技术具有很好的支持,而其他公司的产品似乎总慢上半拍。2总体设计2.1项目规划根据需求分析,设计系统框架。会议视频管理系统由视频管理、综合设置、会议管理、系统维护、系统帮助等5部分组成。设计各部分具体功能如下:视频管理模块吉林省明日科技有限公司监制–2–视频管理模块包括视频采集和结束视频采集两部分。综合设置模块综合设置模块由视频格式设定、综合设定、载取图像到剪贴板、视频压缩、录像5部分组成。会议管理模块会议管理模块主要由会议记录和会议查询两部分组成。系统维护模块系统维护模块包括数据备份、数据还原、系统初始化、开机自动运行4个部分。系统帮助模块系统帮助模块由关于视频系统和帮助内容两部分构成。2.2系统功能结构会议视频系统的功能结构如图1所示。图1会议视频系统功能结构图2.3设计目标本系统是根据中小企业的实际需求而开发的,完全能够实现企业的会议视频管理,通过本系统可以达到以下目标:系统运行稳定,安全可靠。界面设计美观,人机交互界面友好。信息查询灵活、方便、快捷、准确,数据存储安全可靠。满足键盘和鼠标的双重操作,完全支持回车键。信息安全保密。3系统设计3.1开发及运行环境1.硬件要求CPU:300MHz以上的处理器。内存:128MB,推荐256MB。吉林省明日科技有限公司监制–3–硬盘:150MB以上剩余空间。显示像素:最低800*600,最佳效果1024*768。摄像头:百脑通摄像头。2.软件要求操作系统:Windows2000/NT/XP/CE。数据库:SQLServer2000。驱动程序:百脑通驱动程序。3.2数据库设计1.数据库概要说明数据库的选择应根据实际情况确定,首先应考虑用户的数据量大小,如果数据量不大,可以采用本地数据库,例如Access、Paradox等,如果数量大,应采用大型数据库,例如SQLServer、Oracle、Sybase等。其次应考虑经费问题,因此一套大型数据库需要几万、甚至几十万的价格,所以在选择数据库时,还需要充分考虑用户的实际条件。2.主要数据表的结构数据库中的数据表请参见附录B。4功能模块设计4.1构建应用程序框架会议视频管理系统采用单文档/视图结构。框架设计步骤如下:(1)在VisualC++集成开发环境中单击“File/New”菜单项,打开New窗口,选择Projects选项卡,如图2所示。吉林省明日科技有限公司监制–4–图2New窗口(2)在New窗口中选择“MFCAppWizard(exe)”选项,在“Projectname”编辑框中输入工程名称,这里为“Capture”,单击“OK”按钮进入MFC应用程序向导步骤1窗口,如图3所示。图3MFC应用程序向导步骤1窗口(3)选择“Singledocument”选项,表示创建单文档/视图结构应用程序,单击“Finish”按钮创建应用程序框架。4.2主窗口设计会议视频管理系统主窗口由菜单、工具栏、客户区和状态栏组成,其中状态栏采用系统默认创建的状态栏,其他部分需要额外设计。主窗口运行效果如图4所示。吉林省明日科技有限公司监制–5–图4主窗口效果图1.菜单设计1.设计菜单资源菜单是应用程序经常使用的界面元素,它对应着应用程序的一项功能,单击菜单项将会执行欲定义的操作。下面笔者详细介绍菜单的设计过程。(1)在工作区窗口中选中“ResourceView”标签页,如图5所示。吉林省明日科技有限公司监制–6–图5资源视图窗口(2)展开“Menu”节点,默认情况下,在文档\视图结构中,MFC向导会创建一个菜单资源“IDR_MAINFRAME”,双击该资源节点,打开菜单资源编辑窗口,修改菜单资源如下:BEGINPOPUP视频管理BEGINMENUITEM视频采集,ID_Set_disPlayMENUITEM结束视频采集,ID_MENUITEMEndENDPOPUP综合设置BEGINMENUITEM视频格式设定,ID_Set_disFormatMENUITEM综合设定,ID_Set_dissorceMENUITEM载取图像到剪贴板,IDC_PICPICMENUITEM视频压缩,ID_VideoCompressMENUITEM录像,IDCAPTUREENDPOPUP会议管理BEGINMENUITEM会议记录,ID_MENUITEMRECORDMENUITEM会议查询,ID_MENUITEMQUERY吉林省明日科技有限公司监制–7–ENDPOPUP系统维护BEGINMENUITEM数据备份,ID_MENUITEMBACKMENUITEM数据还原,ID_MENUITEMRESTOREMENUITEM系统初始化,ID_MENUITEMSYSINIMENUITEM开机自动运行,ID_MENUIAUTORUNENDPOPUP帮助BEGINMENUITEM关于视频系统...,ID_APP_ABOUTMENUITEM帮助内容,ID_MENUITEMHELPENDEND2.自定义菜单类默认情况下,VisualC++中的菜单并不能显示图标。如果需要在菜单项中显示图标,需要自己重新封装菜单类CMenu。在本系统中,笔者自定义一个菜单类CMyMenu,该类能够在菜项项中显示图标,并且实现了菜单项的重绘,效果如图6所示。图6菜单设计效果图CMyMenu类设计步骤如下:(1)新建一个CMyMenu类,该类派生于CMenu。(2)定义一个CMenuItemInfo类,该类用于记录菜单项的信息,包括菜单项的图标索引、菜单项文本、菜单项ID,代码如下:/**************************************************定义菜单项信息**************************************************/classCMenuItemInfo{public:CMenuItemInfo(){m_MenuID=0;};~CMenuItemInfo(){};UINTm_Iconindex;//菜单项图标索引CStringm_Text;//菜单项文本吉林省明日科技有限公司监制–8–intm_MenuID;//菜单标识,-2顶层菜单,-1弹出式菜单,0分隔条,命令ID普通菜单};(3)为CMyMenu类添加3个成员变量,如下:UINTm_index;UINTm_imageindex;CMenuItemInfoMenus[100];//记录菜单项信息(4)添加ResetMenuStyle方法,该方法用于修改菜单项的风格,使菜单项具有重绘功能,设置菜单项信息。在ResetMenuStyle方法中利用递归的方式遍历菜单资源中的每个菜单项,代码如下:voidCMyMenu::ResetMenuStyle(HMENUm_hmenu,BOOLIsTop){CMenu*m_pMenu;//菜单指针m_pMenu=CMenu::FromHandle(m_hmenu);//根据句柄获取菜单指针if(m_pMenu!=NULL){for(UINTi=0;im_pMenu-GetMenuItemCount();i++){intm=m_pMenu-GetMenuItemID(i);//获取菜单项IDMenus[m_index].m_MenuID=m;//m_pMenu-GetMenuItemID(i);//如果为弹出式菜单,返回-1,//分隔条返回0,普通菜单,返回IDif(((Menus[m_index].m_MenuID0)&&IsTop==TRUE))//顶层菜单Menus[m_index].m_MenuID=-2;Menus[m_index].m_Iconindex=-1;m_pMenu-GetMenuString(i,Menus[m_index].m_Text,MF_BYPOSITION);//获取菜单项文本m_pMenu-ModifyMenu(i,MF_OWNERDRAW|MF_BYPOSITION|MF_STRING,Menus[m_index].m_MenuID,(LPCTSTR)(&Menus[m_index]));//修改菜单信息if(Menus[m_index].m_MenuID0){Menus[m_index].m_Iconindex=m_imageindex;//设置菜单项图标索引m_imageindex+=1;}m_index+=1;CMenu*m_pSubmenu=m_pMenu-GetSubMenu(i);//获取子菜单if(m_pSubmenu)//如果存在子菜单,利用递归修改其风格{ResetMenuStyle(m_pSubmenu-GetSafeHmenu());}}}}吉林省明日科技有限公司监制–9–(5)添加AttachMenu方法,该方法将菜单与指定的句柄关联,并调用ResetMenuStyle方法修改菜单风格。代码如下:/***************************************函数名:AttachMenu作用:将菜单资源与菜单类关联,改变菜单风格参数:m_hmenu是菜单资源句柄返回值:执行成功返