员工培训管理系统任务书员工培训管理系统的实现目的:企业在面临全球化、高质量、高效率的工作系统挑战中,培训管理显得更为重要。通过一个先进的、完善的员工培训管理系统,使企业的培训工作系统化、规范化、自动化,从而达到提高企业培训管理效率的目的。培训使员工的知识、技能与态度明显提高与改善,由此提高企业效益,获得竞争优势。意义:随着经济全球化发展、知识更新速度加快、国际企业的发展,企业员工培训将日益成为企业的一项重要业务。可以说,今后企业的竞争将是企业员工素质的竞争。因此,开发一个功能先进、完善的培训管理软件来辅助企业管理培训业务是增强企业竞争力的一项重要措施。本课题的目标及要求是: 1.员工基本信息的查询,删除,修改和添加;2.员工成绩信息的查询, 删除,修改和添加;3.员工培训评价查询, 删除,修改和添加;4.员工培训计划的信息和管理功能;5.员工信息报表打印功能;6.用户权限的管理和用户的添加,删除;7.友好.方便.美观的界面设计。1.2009年01月16日—2009年01月31日 选定课题。2.2006年02月01日—2006年02月25日 查找有关参考资料,并做好课题的系统结构及功能模块设计。3.2006年02月25日—2006年03月06日 查找有关参考资料,做好课题的系统结构及功能模块设计,撰写开题报告并报指导老师审定。4.2006年03月15日—2006年03月30日 进行系统分析与设计,及完成部分编码的实现,并撰写毕业设计初稿。5.2006年03月25日—2006年04月13日 进行系统分析与设计,及完成关键编码的编译工作,同时做好中期考核的准备工作。6.2006年04月16日—2006年04月30日 完成全部编码的实现、运行测试与修正。7.2006年04月23日—2006年04月29日 完成毕业设计第二稿的编辑与修改工作,并上交指导老师及接受指导老师的指导。8.2009年05月08日-2009年05月20日完成毕业设计第三稿的编辑与修改工作,并上交指导老师及接受指导老师的指导。9.2009年05月22日-2009年05月24日 最后编辑、修改毕业设计定稿,同时打印、装订毕业设计文件交指导老师。10.2009年06月01日—2009年06月30日 论文答辩准备材料的准备、制作及进行论文答辩。1.《SQL SERVER 2000 数据库开发技术与工程实践》2.《VISUAL BASIC 数据库系统开发实例导航》3.《Microsoft Advanced Visual Basic 6.0 Second Edition》302
员工培训管理系统开题报告目 录一. 选题的背景 21.1 选择本课题的意义 21.2 选择本课题的目的 21.3系统的技术功能 2二. 当前培训管理软件的现状 3三.本课题设计的方法和技术线路 33.1 系统功能总体方案 33.2 以Visual Basic 6.0作为开发工具 43.3 以Microsoft SQL Server 2000作为关系型数据库 43.3 以ADO作为数据库访问技术 5四.设计进度安排 54.1 系统运行要求 54.2 将会用到的工具软件及开发平台 64.3 设计时间进度安排 6五.参考资料 7一. 选题的背景1.1 选择本课题的意义随着经济全球化发展、知识更新速度加快、国际企业的发展,企业员工培训将日益成为企业的一项重要业务。可以说,今后企业的竞争将是企业员工素质的竞争。因此,开发一个功能先进、完善的培训管理软件来辅助企业管理培训业务是增强企业竞争力的一项重要措施。1.2 选择本课题的目的企业在面临全球化、高质量、高效率的工作系统挑战中,培训管理显得更为重要。通过一个先进的、完善的员工培训管理系统,使企业的培训工作系统化、规范化、自动化,从而达到提高企业培训管理效率的目的。培训使员工的知识、技能与态度明显提高与改善,由此提高企业效益,获得竞争优势。具体体现在以下方面:1.能提高员工的职业能力。2.有利于企业获得竞争优势。3.有利于改善企业的工作质量。4.有利于高效工作绩效系统的构建。5.满足员工实现自我价值的需要。员工培训管理系统通过制定合理的培训计划,运用正确的方法收集相关的数据和信息,善于发现员工的绩效现状和公司管理层对员工的期望之间的差距,共同为提高企业绩效而努力。此外,计算机管理系统具有检索速度快、查找方便、可靠性高、保密性好等优点。因此,开发本系统具有重要的意义。1.3系统的技术功能系统开发的总体任务是实现员工培训管理各种信息的系统化、规范化和自动化。 主要技术功能是能够实现:1、员工基本信息的查询,删除,修改和添加;2、员工成绩信息的查询, 删除,修改和添加;3、员工培训评价查询, 删除,修改和添加;4、员工培训计划的信息和管理功能;5、员工信息报表打印功能;6、用户权限的管理和用户的添加,删除;7、友好.方便.美观的界面设计。二. 当前培训管理软件的现状近年来,有关员工培训管理的软件很多。但大部分是培训中介组织的一项面向企业的服务,而且还是一些网络版本。比如,在美国有ASTD---American Society for Training and Development、The Distance and Education Training Council Online、TCM’s HR Careers、Resource Software 、Safety Software & Computer Based Training Software Skills Testing Software等;在国内,网络学校及其培训管理软件比较盛行。但真正由企业自身组织的员工培训,据调查的资料可知,到目前为止只有一些国外国企业以及在中国的跨国企业,拥有自己的员工培训管理软件,而且这些也只是作为企业其他软件的一个组成部分出现,如摩托罗拉的员工培训管理就是其人力资源管理软件的一个组成部分,且还只实现了员工个人信息管理很小的一部分功能。在国内企业中,尽管领导们都认识到员工培训的重要性,也有一些企业采取了一些有益的措施。他们购买了计算机,也建立起自己的内部网,对员工培训管理采用了一些简单的应用程序,但离使用计算机系统和专门软件来管理还有一段距离。综上所述,无论在国内外,目前还没有一套比较完善的、专门的、适用于各种企业自己使用的企业员工培训管理软件。因此,研究开发出一套比较通用、功能比较完善的企业员工培训管理软件,力求在这一领域取得一些新的成果。三.本课题设计的方法和技术线路3.1 系统功能总体方案采用面向对象的分析和设计方案,面向对象分析和面向对象设计之间有密切的衔接关系,从面向对象分析到面向对象设计是一个逐渐扩充模型的过程。分析处理是以问题为中心的,可以不考虑任何与特定计算机有关的问题,而面向对象设计则把我们带进了面向计算机的“实地”开发活动中去。通常,面向对象设计分为两个阶段:高层设计和低层设计。高层设计包括像用户界面那样的问题解决部分,低层设计集中于类的详细设计阶段。通常,利用面向对象设计得到的系统框架如图3-1所示:图3-1 面向对象设计得到的系统框架图
3.2 以Visual Basic 6.0作为开发工具微软公司的Visual Basic 6.0是Windows应用程序开发工具,是目前最为广泛的、易学易用的面向对象的开发工具。Visual Basic提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。Microsoft Visual Basic,它提供了开发 Microsoft Windows(R) 应用程序的最迅速、最简捷的方法。不论是 Microsoft Windows 应用程序的资深专业开发人员还是初学者,Visual Basic 都为他们提供了整套工具,以方便开发应用程序。数据访问特性允许对包括 Microsoft SQL Server 和其它企业数据库在内的大部分数据库格式建立数据库和前端应用程序,以及可调整的服务器端部件。故而,实现本系统VB是一个较好的选择。3.3 以Microsoft SQL Server 2000作为关系型数据库信息技术的飞速发展大大推动了社会的进步,已经逐渐改变了人类的生活、工作、学习等方式。数据库技术和网络技术是信息技术中最重要的两大支柱。在当前热门的信息系统开发领域,Microsoft SQL Server 2000 由于不断采纳新技术来满足用户不断增长和变化的需求,该产品的功能越来越强大、系统的可靠性也越来越高,从而该产品的应用也越来越广泛。
SQL是结构化查询语言(Struture Query Language)的简称,是关系型数据库管理系统中最流行的数据查询和更新语言。用户可使用SQL语言在数据库中执行各种操作。SQL查询语言包括了所有对数据库的操作,这些操作可以分为四个部分:即数据定义语言、数据操纵语言、数据控制语言和嵌入式SQL 语言。Microsoft SQL Server 2000 是一个分布式的关系型数据库管理系统,具有客户机/服务器体系结构,采用了一种称为:Transact-SQL的SQL语言在客户机和服务器之间传递客户机的请求和服务器的处理结果。 Microsoft SQL Server 2000是一个应用广泛的数据库管理系统,它为用户提供了一个完整的数据库解决方案,具有许多显著的优点,例如,用户喜欢的易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性能价格比等。Microsoft SQL Server 2000的高度可扩展性和高可靠性。Microsoft SQL Server 2000使用了业界最先进的数据结构,能够为要求最苛刻的Web应用和企业应用提供高度的可扩展性和高可靠性。Microsoft SQL Server 2000在许多工业基准测试中的性能都创立了新世界纪录。3.3 以ADO作为数据库访问技术ADO(ActiveX Data Objects)是微软提供的数据库访问技术,实际上是一种访问各种类型数据库的连接机制。它被设计用来同新的数据访问层OLE DB Provider一起协同工作,以提供通用数据访问(Universal Data Access)能力。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口相连。用户可以使用任何一种ODBC数据源, 即不仅适合于SQl SERVER,Oracle,Access等数据库应用程序,也适合于Excel表格,文本文件,图形文件和无格式数据文件。ADO是基于OLE-DB之上的技术。因此ADO通过其内部的属性和方法提供统一的数据访问接口。ADO集中了DAO和RDO的优点,可以使用相同的编程模式连接到不同的数据提供者,而不管给定提供者的特定特性,具有高度的灵活性。四.设计进度安排4.1 系统运行要求1)软件环境:Windows 98/2000/XP。2)硬件环境:Pentium 2 以上处理器。4.2 将会用到的工具软件及开发平台1)微软公司的Visual Basic 6.0。2)分布式的关系型数据库管理系统--Microsoft SQL Server 2000。4.3 设计时间进度安排进度 时间 工作内容1 2006年01月16日—2006年01月31日 选定课题。2 2006年02月01日—2006年02月25日 查找有关参考资料,并做好课题的系统结构及功能模块设计。3 2006年02月25日—2006年03月06日 查找有关参考资料,做好课题的系统结构及功能模块设计,撰写开题报告并报指导老师审定。4 2006年03月15日—2006年03月30日 进行系统分析与设计,及完成部分编码的实现,并撰写毕业设计初稿。5 2006年03月25日—2006年04月13日 进行系统分析与设计,及完成关键编码的编译工作,同时做好中期考核的准备工作。6 2006年04月16日—2006年04月30日 完成全部编码的实现、运行测试与修正。7 2006年04月23日—2006年04月29日 完成毕业设计第二稿的编辑与修改工作,并上交指导老师及接受指导老师的指导。8 2006年05月08日-2006年05月20日 完成毕业设计第三稿的编辑与修改工作,并上交指导老师及接受指导老师的指导。9 2006年05月22日-2006年05月24日 最后编辑、修改毕业设计定稿,同时打印、装订毕业设计文件交指导老师。10 2006年06月01日—2006年06月30日 论文答辩准备材料的准备、制作及进行论文答辩。
五.参考资料[1] 张力科. SQL SERVER 2000 数据库开发技术与工程实践[M].北京:人民邮电出版社, 2004.[2] 刘韬,骆娟,何旭洪.VISUAL BASIC 数据库系统开发实例导航(第二版)[M].北京:人民邮电出版社,2004.[3] 王彬华.中文VISUAL BASIC 6.0实例教程[M].成都:电子科技大学出版社,2004.[4] 李华飚,毕宗睿,李水根.VISUAL BASIC数据库编程[M].北京:人民邮电出版社,2004.[5] 王珊,陈红.数据库系统原理教程[M].北京:清华大学出版社,2003.[6] 苏中滨,杨涛,陈联成.数据库系统概念与应用[M].北京:中国水利水电出版社,2003.[7] 李爱中,周成云,马务充.数据库系统教程[M].北京:机械工业出版社, 2004.[8] 孙越.VISUAL BASIC 数据库开发自学教程[M].北京:人民邮电出版社,2004.[9] Sean P Alexander.Microsoft Advanced Visual Basic 6.0 Second Edition[M].美国:The Mandelbrot Set International Ltd,1998.
员工培训管理系统摘要及关键词随着人类社会的发展,社会不断的在进步,对知识的渴望越来越大,人类已经逐步进入信息化社会。信息增长的速度越来越快,人们希望利用先进的管理理论方法和手段来处理越来越多的信息,员工培训也是其中一组成部分,想以提高工作管理水平。因此,学习与再学习始终伴随着我们,其中有关的培训机构有着不可替代的作用,在这种形势下,如何更好的对培训工作进行管理,就成了我们需要解决的一个问题,因此,开发一套完善的员工培训管理系统就成不可少了,本文介绍了在visual basic 6.0环境下利用其提供的各种面向对象的开发工具开发本系统的详细过程,从软件工程的角度进行了科学而严谨的阐述。关键词:员工培训;管理系统;visual basic 6.0Abstract And KeywordWith the development of the human, the society gets progress continuously and the desire of knowlege become more and more large. The human being have been into the informational stage step by step. Furthermore, the increase of information speed up too. People would like to use the advanced means and methods of management to do with the information which gets more and larger. A matter of course, staff train is the same want to improve their level of management and work. As a result, study and restudy come along with us from beginning to end. The train organization in it have been the important role that can't replace. In this situation, it is a problem for us to solve how to manage the staff train more efficient .In a word, it is indispensable to develop a perfect system of management of staff train. This article explains the detailed developed process and the use of tools opening up the objects in the platform of visual basic 6.0, expounding it scientificly and strictly in the direction of soft engineering.Keyword:staff train;Management system;visual basic 6.0
目 录摘要及关键词 1Abstract And Keyword 1第一章 前 言 51.1 本课题的意义 51.2 当前培训管理软件的现状 51.3 选择本课题的目的 5第二章 开发运行环境及相关理论知识 62.1 运行环境 62.2 开发工具及平台 62.3 相关理论知识 62.3.1 Visual Basic 6.0简介 62.3.2 关系型数据库--SQL 72.3.3 二者的结合——ADO 7第三章 系统功能需求分析 83.1 员工信息管理功能需求 83.2 培训计划管理功能需求 83.3 课程信息管理功能需求 83.4 培训效果评价功能需求 83.5 查询管理功能需求 83.6 用户管理功能需求 93.7 文件功能需求 9第四章 系统总体设计方案 94.1 系统功能总体方案 94.2系统的目标 94.3 系统的设计思想 104.4 系统的功能模块结构 104.5 数据库的设计 114.5.1数据库需求分析 114.5.2数据库概念结构设计 124.5.3数据库逻辑结构设计 12第五章 系统的具体设计 145.1 欢迎主界面及代码设计 145.1.1欢迎主界面 145.1.2 欢迎主界面代码设计 145.2 登录界面及代码设计 155.2.1登录界面 155.2.2 登录界面代码设计 155.3 系统主界面及代码设计 175.3.1系统主界面 175.3.2系统主界面代码设计 185.4 用户管理界面及代码设计 215.4.1用户管理界面 215.4.2用户管理界面代码设计 215.5 设置界面及代码设计 255.5.1设置界面 255.5.2设置界面代码设计 275.6 查询界面及代码设计 365.6.1查询界面 365.6.2查询界面代码设计 375.7 说明界面 40第六章 系统的测试与分析 406.1 系统测试测试策略说明 406.1.1 整个系统界面窗口的测试 406.1.2 数据测试项目 416.2 测试报告 416.2.1 用户登录界面、系统主界面的测试 416.2.2 课程信息管理功能的测试 416.3 系统性能分析 43第七章 结束语 43致 谢 45参考文献 46附录:公用类模块源代码 47
员工培训管理系统前 言1.1 本课题的意义随着经济全球化发展、知识更新速度加快、国际企业的发展,企业员工培训将日益成为企业的一项重要业务。可以说,今后企业的竞争将是企业员工素质的竞争。因此,开发一个功能先进、完善的培训管理软件来辅助企业管理培训业务是增强企业竞争力的一项重要措施。1.2 当前培训管理软件的现状近年来,有关员工培训管理的软件很多。但大部分是培训中介组织的一项面向企业的服务,而且还是一些网络版本。比如,在美国有ASTD---American Society for Training and Development、The Distance and Education Training Council Online、TCM’s HR Careers、Resource Software 、Safety Software & Computer Based Training Software Skills Testing Software等;在国内,网络学校及其培训管理软件比较盛行。但真正由企业自身组织的员工培训,据调查的资料可知,到目前为止只有一些国外国企业以及在中国的跨国企业,拥有自己的员工培训管理软件,而且这些也只是作为企业其他软件的一个组成部分出现,如摩托罗拉的员工培训管理就是其人力资源管理软件的一个组成部分,且还只实现了员工个人信息管理很小的一部分功能。在国内企业中,尽管领导们都认识到员工培训的重要性,也有一些企业采取了一些有益的措施。他们购买了计算机,也建立起自己的内部网,对员工培训管理采用了一些简单的应用程序,但离使用计算机系统和专门软件来管理还有一段距离。综上所述,无论在国内外,目前还没有一套比较完善的、专门的、适用于各种企业自己使用的企业员工培训管理软件。因此,研究开发出一套比较通用、功能比较完善的企业员工培训管理软件,力求在这一领域取得一些新的成果。1.3 选择本课题的目的企业在面临全球化、高质量、高效率的工作系统挑战中,培训管理显得更为重要。通过一个先进的、完善的员工培训管理系统,使企业的培训工作系统化、规范化、自动化,从而达到提高企业培训管理效率的目的。培训使员工的知识、技能与态度明显提高与改善,由此提高企业效益,获得竞争优势。具体体现在以下方面:1.能提高员工的职业能力。2.有利于企业获得竞争优势。3.有利于改善企业的工作质量。4.有利于高效工作绩效系统的构建。5.满足员工实现自我价值的需要。员工培训管理系统通过制定合理的培训计划,运用正确的方法收集相关的数据和信息,善于发现员工的绩效现状和公司管理层对员工的期望之间的差距,共同为提高企业绩效而努力。此外,计算机管理系统具有检索速度快、查找方便、可靠性高、保密性好等优点。因此,开发本系统具有重要的意义。第二章 开发运行环境及相关理论知识2.1 运行环境软件环境:Windows 98/2000/XP。硬件环境:Pentium 2 以上处理器。2.2 开发工具及平台微软公司的Visual Basic 6.0。分布式的关系型数据库管理系统--Microsoft SQL Server 2000。2.3 相关理论知识2.3.1 Visual Basic 6.0简介 微软公司的Visual Basic 6.0是Windows应用程序开发工具,是目前最为广泛的、易学易用的面向对象的开发工具。Visual Basic提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。Microsoft Visual Basic,它提供了开发 Microsoft Windows(R) 应用程序的最迅速、最简捷的方法。不论是 Microsoft Windows 应用程序的资深专业开发人员还是初学者,Visual Basic 都为他们提供了整套工具,以方便开发应用程序。数据访问特性允许对包括 Microsoft SQL Server 和其它企业数据库在内的大部分数据库格式建立数据库和前端应用程序,以及可调整的服务器端部件。故而,实现本系统VB是一个较好的选择。2.3.2 关系型数据库--SQL信息技术的飞速发展大大推动了社会的进步,已经逐渐改变了人类的生活、工作、学习等方式。数据库技术和网络技术是信息技术中最重要的两大支柱。在当前热门的信息系统开发领域,Microsoft SQL Server 2000 由于不断采纳新技术来满足用户不断增长和变化的需求,该产品的功能越来越强大、系统的可靠性也越来越高,从而该产品的应用也越来越广泛。SQL是结构化查询语言(Struture Query Language)的简称,是关系型数据库管理系统中最流行的数据查询和更新语言。用户可使用SQL语言在数据库中执行各种操作。SQL查询语言包括了所有对数据库的操作,这些操作可以分为四个部分:即数据定义语言、数据操纵语言、数据控制语言和嵌入式SQL 语言。Microsoft SQL Server 2000 是一个分布式的关系型数据库管理系统,具有客户机/服务器体系结构,采用了一种称为:Transact-SQL的SQL语言在客户机和服务器之间传递客户机的请求和服务器的处理结果。 Microsoft SQL Server 2000是一个应用广泛的数据库管理系统,它为用户提供了一个完整的数据库解决方案,具有许多显著的优点,例如,用户喜欢的易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性能价格比等。Microsoft SQL Server 2000的高度可扩展性和高可靠性。Microsoft SQL Server 2000使用了业界最先进的数据结构,能够为要求最苛刻的Web应用和企业应用提供高度的可扩展性和高可靠性。Microsoft SQL Server 2000在许多工业基准测试中的性能都创立了新世界纪录。2.3.3 二者的结合——ADOADO(ActiveX Data Objects)是微软提供的数据库访问技术,实际上是一种访问各种类型数据库的连接机制。它被设计用来同新的数据访问层OLE DB Provider一起协同工作,以提供通用数据访问(Universal Data Access)能力。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口相连。用户可以使用任何一种ODBC数据源, 即不仅适合于SQl SERVER,Oracle,Access等数据库应用程序,也适合于Excel表格,文本文件,图形文件和无格式数据文件。ADO是基于OLE-DB之上的技术。因此ADO通过其内部的属性和方法提供统一的数据访问接口。ADO集中了DAO和RDO的优点,可以使用相同的编程模式连接到不同的数据提供者,而不管给定提供者的特定特性,具有高度的灵活性。
员工培训管理系统系统功能需求分析系统分析(又称逻辑设计)是管理信息系统开发的关键环节,要求在系统调查的基础上,对新系统的功能进行细致的分析,并建立一个新系统的逻辑模型。系统分析阶段主要任务是确定系统的总体设计方案、划分子系统功能、确定共享数据的组织,然后进行详细设计。员工培训管理系统功能需求主要有:员工信息管理功能、培训计划管理功能、课程信息管理功能、培训效果评价功能、查询管理功能、及使用系统的用户管理功能、还原数据和备份数据、帮助功能等。3.1 员工信息管理功能需求 包括员工各种信息的输入和删除,包括员工基本信息、职称、岗位、已经培训过的课程和成绩、培训计划等。 员工各种信息的查询、修改,包括员工基本信息、职称、岗位、几经培训过的课程和成绩、培训计划等。3.2 培训计划管理功能需求 培训计划的制定,包括培训项目、时间、地点等。 培训计划的查询。3.3 课程信息管理功能需求 课程信息设置,包括课程基本信息和课程查询,如课程编号、名称、类型及课程描述等。 课程培训需求,包括课程需求分析、课程需求名称及需求删除等。3.4 培训效果评价功能需求 培训效果评价包括培训项目、及培训效果等。 培训项目效果查询。3.5 查询管理功能需求 查询管理功能包括培训计划查询、课程信息查询、成绩信息查询和员工信息查询。3.6 用户管理功能需求 用户管理包括用户添加、用户删除和密码修改等,用户权限分系统管理员、超级用户和普通用户。3.7 文件功能需求 文件功能包括备份数据库、还原数据库、及用户注销、退出系统等。第四章 系统总体设计方案4.1 系统功能总体方案我们采用面向对象的分析和设计方案,面向对象分析和面向对象设计之间有密切的衔接关系,从面向对象分析到面向对象设计是一个逐渐扩充模型的过程。分析处理是以问题为中心的,可以不考虑任何与特定计算机有关的问题,而面向对象设计则把我们带进了面向计算机的“实地”开发活动中去。通常,面向对象设计分为两个阶段:高层设计和低层设计。高层设计包括像用户界面那样的问题解决部分,低层设计集中于类的详细设计阶段。通常,利用面向对象设计得到的系统框架如图3-1所示:
图4-1 面向对象设计得到的系统框架图4.2系统的目标系统开发的总体任务是实现员工培训管理各种信息的系统化、规范化和自动化。 主要包括:1、员工基本信息的查询,删除,修改和添加;2、员工成绩信息的查询, 删除,修改和添加;3、员工培训评价查询, 删除,修改和添加;4、员工培训计划的信息和管理功能;5、员工信息报表打印功能;6、用户权限的管理和用户的添加,删除;7、友好.方便.美观的界面设计。4.3 系统的设计思想1、 实用性:在各项基本功能实用的上进一步开发完善系统;2、 先进性:简化代码去处冗余,引入先进的编译方式;3、 易用性:授权实体在需要时可以简单快捷的访问数据;4、 保密性:确保信息不暴露给未授权的实体或者进程;5、 系统性:将各功能模块有机融合成一个系统的整体。4.4 系统的功能模块结构图4-1 系统功能模块图系统功能细分如图4-1所示,可概括分为5个模块,即:用户登录模块,添加修改模块,查询显示模块、数据录入模块、打印报表模块。1)用户登录模块:完成用户身份的验证,设定指定用户的操作权限。2)添加修改模块:完成各种对各种员工数据的添加和修改。3)查询显示模块:根据不同的查询条件对数据进行挑选,进一步加工后加以显示。4)数据录入模块:将录入数据保存到相应的数据库。5)打印报表模块:将员工基本信息和培训计划等以报表的方式打印出来。4.5 数据库的设计在数据库应用系统的开发过程中,数据库的结构设计是一个非常重要的问题。数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响,好的数据库结构设计会减少数据库的存储量,数据的完整性和一致性比较高,系统具有较快的响应速度,简化基于此数据库的应用程序的实现等。在数据库系统开始设计的时候我们应该尽量考虑全面,尤其应该仔细考虑用户的各种需求,避免浪费人力和物力。4.5.1数据库需求分析数据库需求分析是数据库结构设计的第一个阶段,是非常重要的一个阶段。在这个阶段主要是收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为以后进一步设计打下基础。在经过仔细调查研究企业员工培训管理过程的基础上,我们得到本系统所处理的数据流如图4-2所示。 图4-2 数据流程图4.5.2数据库概念结构设计这一设计阶段是在需求分析的基础上,设计出能够满足用户需求的各种褓,以及它们之间的关系,为后面的逻辑结构设计打下基础。由上面的设计规划出的实体有:部门实体、员工实体、课程实体、资源实体。实体和实体之间的关系E-R图如图4-3所示。
图4-3 实体之间关系E-R图4.5.3数据库逻辑结构设计数据库共包括7个表,具体数据字典见表1-7。
表4-1 course_info 课程信息表属性名 数据类型 大小 允许空 说明Course_No Int 4 否 课程号Course_Name Char 10 是 课程名Course_Type Char 10 是 课程类型Course_Des Char 15 是 课程注释
表4-2 course_need 培训需求分析表属性名 数据类型 大小 允许空 说明Course_Name Char 10 否 培训课程名Course_Des Varchar 50 是 培训需求
表4-3 plan_info 培训计划表属性名 数据类型 大小 允许空 说明Project Char 10 否 培训项目Time Datetime 8 是 培训时间Place Char 10 是 培训地点
员工培训管理系统表4-4 result_info员工成绩表属性名 数据类型 大小 允许空 说明Exam_no Char 10 否 考试编号Student_id Int 4 是 员工号Student_name Char 10 是 员工名Course_no Int 4 是 课程号Course_name Char 10 是 课程名Result Float 8 是 成绩
表4-5 student_info员工基本信息表属性名 数据类型 大小 允许空 说明Student_id Int 4 否 员工号Student_name Char 10 是 员工名Student_sex Char 2 是 性别Birth_date Datetime 8 是 出生日期Depart Char 10 是 部门Tele_number Char 10 是 电话号码In_date Datetime 8 是 就职日期Address varChar 50 是 家庭地址Comment varChar 100 是 注释
表4-6 trainresult_info员工培训评价表属性名 数据类型 大小 允许空 说明Pro char 10 否 培训项目Effect Varchar 50 是 培训效果评价
表4-7 user_info 用户密码表属性名 数据类型 大小 允许空 说明user_id Char 10 否 用户iduser_pwd Char 10 是 用户密码user_name Char 10 是 用户名user_level Int 4 是 权限等级user_des Char 10 是 用户描述第五章 系统的具体设计5.1 欢迎主界面及代码设计5.1.1欢迎主界面运行员工培训管理系统后,首先将出现欢迎主界面,如下图。 图5-1 欢迎主界面5.1.2 欢迎主界面代码设计欢迎主界面实现的代码设计如下:Dim DelayTime As Integer ’定义计时器Private Sub Form_Load()DelayTime = 0Timer1.Enabled = TrueEnd Sub
Private Sub Timer1_Timer()If DelayTime > 3 Then ’延迟三秒载入登录界面 Timer1.Enabled = False Load FrmLogin FrmLogin.Show Unload MeElse DelayTime = DelayTime + 1End IfEnd Sub5.2 登录界面及代码设计5.2.1登录界面 图5-2 登录界面5.2.2 登录界面代码设计登录界面实现的代码设计如下:Dim MyLogin As OpenRs ’定义变量Dim UseridSQL As StringDim Level As IntegerPublic CurrentUser As StringPrivate Sub Cmdcancel_Click() ’取消按钮命令Unload Me ’释放当前表End Sub
Private Sub cmdOK_Click() ’确定密码命令If txtUserID.Text = "administrator" And txtPass.Text = "" Then Unload Me FrmMain.Show Exit SubEnd If ’如权限符合,准予登陆
If txtUserID.Text = "" Then MsgBox "请输入用户编号!", vbOKOnly + vbInformation, "用户登陆" txtUserID.SetFocus Exit Sub ’用户为空时提示,聚焦Else UseridSQL = "select * from User_Info where user_Id='" & txtUserID.Text & "'" ’用户非空时启用数据库链接 MyLogin.rsDK1 UseridSQL ’把sql语句传给函数 If MyLogin.rs1.EOF = False Then ’列表未到底从数据库中取值 txtUserName.Text = Trim(MyLogin.rs1!user_name) Level = MyLogin.rs1!user_level If txtPass.Text = Trim(MyLogin.rs1!user_pwd) Then ’密码符合 CurrentUser = Trim(MyLogin.rs1!user_name) Call DisplayMenu Unload Me FrmMain.Show ’载入主界面 Else MsgBox "密码错误!" & vbCrLf & vbCrLf & "请重新输入!", vbOKOnly + vbInformation, "用户登陆" ’ 密码错误提示 txtPass.Text = "" txtPass.SetFocus Exit Sub End If Else MsgBox "用户编号不存在!" & vbCrLf & vbCrLf & "请重新输入!", vbOKOnly + vbInformation, "用户登陆" ’ 用户不存在提示,清空聚焦 txtUserID.Text = "" txtUserID.SetFocus Exit Sub End If End IfEnd Sub
Private Sub Form_Load() Set MyLogin = New OpenRs ’引用类函数End Sub
Private Sub txtPass_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then ’输密码时回车确定 Call cmdOK_ClickEnd IfEnd Sub
Private Sub txtUserId_Change() ’用户名改变文本框清空txtPass.Text = ""txtUserName.Text = ""End Sub
Private Sub txtUserId_LostFocus() ’焦点从用户id转移时从数据库读入用户名UseridSQL = "select * from User_Info where user_Id='" & txtUserID.Text & "'" MyLogin.rsDK1 UseridSQL If MyLogin.rs1.EOF = False Then
员工培训管理系统 txtUserName.Text = Trim(MyLogin.rs1!user_name) End IfEnd Sub
Private Sub DisplayMenu() ’ 设置用户不同等级的访问权限,不够等级隐藏 If Level = 2 Then FrmMain.mnuBackUpDB.Visible = False FrmMain.mnuRestoreDB.Visible = False FrmMain.mnuAddUser.Visible = False FrmMain.mnuDeleteUser.Visible = FalseElseIf Level = 3 Then FrmMain.mnuBackUpDB.Visible = False FrmMain.mnuRestoreDB.Visible = False FrmMain.mnuUserManage.Visible = False FrmMain.mnuGrade.Visible = False FrmMain.mnuClass.Visible = False FrmMain.mnuCourseInfo.Visible = False FrmMain.mnuStudentInfo.Visible = False FrmMain.mnuResult.Visible = FalseEnd IfEnd Sub5.3 系统主界面及代码设计5.3.1系统主界面用户登录后,将进入系统主界面,如下图: 图5-3 系统主界面5.3.2系统主界面代码设计系统主界面实现的代码设计如下:Dim Myinfo As String ’定义变量Dim success As Long
Private Declare Function htmlhelp Lib "hhctrl.ocx" Alias "HtmlHelpA" (ByVal hwndCaller As Long, ByVal pszFile As String, ByVal uCommand As Long, ByVal dwData As Long) As LongPrivate Sub MDIForm_Load() Set Classprint = New OpenRs ’调用类函数Timer1.Enabled = TrueDim mypanel As PanelSet mypanel = StatusBar1.Panels.Add(1, , , sbrDate) '状态栏1显示日期
Set mypanel = StatusBar1.Panels.Add(2) '状态栏2显示星期几Call MyWeekDay
Set mypanel = StatusBar1.Panels.Add(3)StatusBar1.Panels(3).Text = "当前用户:" & FrmLogin.CurrentUsermypanel.AutoSize = sbrContents
Set mypanel = StatusBar1.Panels.Add(4) '状态栏3显示文本消息mypanel.AutoSize = sbrSpringEnd Sub
Private Sub mnuAbout_Click() ’设置说明ShellAbout Me.hwnd, "员工培训管理系统", "版权所有(C)2005.6" & vbCrLf & "开发:yeao", Me.IconEnd Sub
Private Sub mnuAddResult_Click() ’以下定义菜单点击触发各模块Frmresult.ShowEnd SubPrivate Sub mnuClassQuery_Click()FrmClassQuery.ShowEnd Sub
Private Sub mnuCourseQuery_Click()FrmCourseQuery.ShowEnd Sub
Private Sub mnuResultQuery_Click()FrmResultQuery.ShowEnd Sub
Private Sub mnuSchoolSet_Click()FrmSchoolInfo.ShowEnd Sub
Private Sub mnuSetClass_Click()FrmClassInfo.ShowEnd Sub
Private Sub mnuAddStudentInfo_Click()FrmAddStudentInfo.ShowEnd Sub
Private Sub mnuAddUser_Click()FrmAddUser.ShowEnd Sub
Private Sub mnuBackUpDB_Click()FrmBackUp.ShowEnd Sub
Private Sub mnuDeleteUser_Click()FrmDelUser.ShowEnd SubPrivate Sub mnuModiPwd_Click()FrmModiPass.ShowEnd Sub
Private Sub mnuExit_Click() ’设置退出系统If MsgBox("要退出系统吗?", vbYesNo + vbInformation, "退出") = vbYes Then Unload FrmMainEnd IfEnd Sub
Private Sub mnuLogoff_Click() ’ 设置注销系统If MsgBox("要注销系统吗?", vbYesNo + vbInformation, "注销") = vbYes Then Unload FrmMain FrmLogin.ShowEnd IfEnd Sub
Private Sub mnuRestoreDB_Click()If MsgBox("是否现在就执行还原数据库的操作?", vbYesNo + vbInformation, "还原数据库") = vbYes Then success = WritePrivateProfileString("BackUp", "Restore", "True", App.Path & "\备份.ini")Unload MeShell "Restore.exe"End IfEnd Sub
Private Sub mnuSetCourse_Click()FrmGradecourse.ShowEnd Sub
Private Sub mnuSetCourseInfo_Click()FrmCourse.ShowEnd Sub
Private Sub mnuSetGrade_Click()FrmGradeInfo.ShowEnd Sub
Private Sub mnuStudentQuery_Click()FrmStuInfoQuery.ShowEnd Sub
Private Sub Timer1_Timer() ’状态栏移动的欢迎辞If Myinfo = "" Then Myinfo = Space(85) & "欢迎使用员工培训管理系统!"End IfMyinfo = Right(Myinfo, Len(Myinfo) - 1)StatusBar1.Panels(4).Text = MyinfoEnd Sub
Private Sub MyWeekDay() ’定义显示日期函数Select Case Weekday(Date) Case 1 StatusBar1.Panels(2).Text = "星期日" Case 2 StatusBar1.Panels(2).Text = "星期一" Case 3 StatusBar1.Panels(2).Text = "星期二" Case 4 StatusBar1.Panels(2).Text = "星期三" Case 5 StatusBar1.Panels(2).Text = "星期四" Case 6 StatusBar1.Panels(2).Text = "星期五" Case 7 StatusBar1.Panels(2).Text = "星期六"End SelectEnd Sub
员工培训管理系统用户管理界面及代码设计5.4.1用户管理界面这里的用户是指使用员工培训管理系统的用户,其界面包括:添加和删除用户、数据还原和备份等;用户按权限等级分系统管理员、超级用户和普通用户。系统管理员拥有各级系统的全部使用功能;超级用户与系统管理员相比,只不具备系统的数据还原和备份功能,其他功能与系统管理员一样;而普通用户只具有查询管理功能。
图5-4 用户管理界面5.4.2用户管理界面代码设计用户管理界面实现的代码设计如下(这里以添加用户为例):Dim MyAddUser As OpenRs ’调用类函数Dim Choose As BooleanDim Level As IntegerPrivate Sub Cmdcancel_Click() ’设置取消键Unload MeEnd Sub
Private Sub cmdComp_Click() If Choose = False Then MsgBox "请选择一个操作级别!", vbOKOnly + vbInformation, "添加新用户" Exit SubEnd IfMyAddUser.rs1.AddNew ’增加一条连接到表的记录集MyAddUser.rs1!user_id = Trim(txtUserid.Text) ’把输入框数据存入记录集MyAddUser.rs1!user_name = Trim(txtUsername .Text)MyAddUser.rs1!user_des = Trim(txtUserdes.Text)MyAddUser.rs1!user_pwd = Trim(txtPwd1.Text)MyAddUser.rs1!user_level = LevelMyAddUser.rs1.Update ’更新存入表If MsgBox("添加用户成功!" & vbCrLf & vbCrLf & "是否继续添加用户?", vbYesNo + vbQuestion, "添加用户") = vbYes Then Frame3.Visible = False cmdComp.Visible = False Frame1.Visible = True cmdNext.Visible = True txtUserid.SetFocus Call ClearText Else Unload MeEnd IfEnd Sub
Private Sub cmdNext_Click() ’设置下一步按钮Choose = FalseDim txtUseridSQL As StringIf Trim(txtUserid.Text) = "" Then ’用户id为空重新输入 MsgBox "用户编号不能为空!", vbOKOnly + vbInformation, "提示" txtUserid.SetFocus Exit SubElse txtUseridSQL = "select * from User_Info" ’从数据库读出用户id验证 MyAddUser.rsDK1 txtUseridSQL While (MyAddUser.rs1.EOF = False) If Trim(MyAddUser.rs1!user_id) = Trim(txtUserid.Text) Then MsgBox "用户编号已存在,请重新输入用户编号!", vbOKOnly + vbExclamation, "警告" txtUserid.Text = "" txtUsername.Text = "" txtUserdes.Text = "" txtUserid.SetFocus Exit Sub Else MyAddUser.rs1.MoveNext End If WendEnd If
If txtUsername.Text = "" Then ’用户名为空提示 MsgBox "用户名不能为空!", vbOKOnly + vbInformation, "提示" txtUsername.SetFocus Exit SubEnd IfFrame1.Visible = FalseFrame2.Visible = TruetxtPwd1.SetFocuscmdNext.Visible = FalsecmdNext1.Visible = TrueEnd Sub
Private Sub cmdNext1_Click() ’密码为空提示Dim i As Integer If txtPwd1.Text = "" Then MsgBox "请输入密码!", vbOKOnly + vbInformation, "提示" txtPwd1.SetFocus Exit Sub End If If txtPwd2.Text = "" Then MsgBox "请输入确认密码!", vbOKOnly + vbInformation, "提示" txtPwd2.SetFocus Exit Sub End If If txtPwd1.Text <> txtPwd2.Text Then ’密码不一致提示 MsgBox "两次输入的密码不一致!!!" & vbCrLf & vbCrLf & "请重新输入!", vbOKOnly + vbInformation, "提示" txtPwd1.Text = "" txtPwd2.Text = "" txtPwd1.SetFocus Exit Sub End IfFrame2.Visible = FalseFrame3.Visible = TruecmdNext1.Visible = FalsecmdComp.Visible = TrueFor i = 0 To 2 '取消选项按钮选择Option1(i).Value = FalseNext iList1.ListIndex = -1End Sub
Private Sub Choose_level() ’各用户等级权限设置Dim i As IntegerIf Option1(0).Value = True Then Level = 1 For i = 0 To 9 '全选 List1.Selected(i) = True Next i List1.ListIndex = -1ElseIf Option1(1).Value = True Then Level = 2 For i = 0 To 6 List1.Selected(i) = True Next i List1.Selected(7) = False List1.Selected(8) = False List1.Selected(9) = False List1.ListIndex = -1ElseIf Option1(2).Value = True Then Level = 3 List1.Selected(0) = True List1.Selected(1) = True For i = 2 To 9 List1.Selected(i) = False Next i List1.ListIndex = -1End IfEnd Sub
Private Sub Form_Load()Set MyAddUser = New OpenRsEnd Sub
Private Sub Option1_Click(Index As Integer)Choose = TrueCall Choose_levelEnd SubPrivate Sub ClearText()Dim i As IntegertxtUserid.Text = ""txtUsername.Text = ""txtUserdes.Text = ""txtPwd1.Text = ""txtPwd2.Text = ""For i = 0 To 2 '取消选项按钮选择Option1(i).Value = FalseNext iChoose = FalseFor i = 0 To 9
员工培训管理系统List1.Selected(i) = FalseList1.ListIndex = -1Next IEnd Sub5.5 设置界面及代码设计5.5.1设置界面系统的设置界面包括:成绩信息设置、课程基本信息设置、培训计划添加、培训效果评价、课程培训需求、员工信息设置等。 图5-5 设置界面5.5.2设置界面代码设计设置界面实现的代码设计如下(这里以员工基本信息设置为例,包括添加、修改、删除和简单查询等):Option ExplicitDim myModiStudent As New OpenRs '声明连接数据库的类Dim Change As Boolean
Private Sub cboClass_Click() txtStudentId.Text = ""cmdDel.Enabled = FalseEnd Sub
Private Sub cboClass_KeyPress(KeyAscii As Integer) ’部门设置回车确定If KeyAscii = 13 Then txtStudentId.SetFocusElse KeyAscii = 0End IfEnd Sub
Private Sub cboSex_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then txtBirth.SetFocusElse KeyAscii = 0End IfEnd Sub
Private Sub cmdAdd_Click() ’添加按钮的设置If cmdAdd.Caption = "添加(&A)" Then Call ClearText cmdAdd.Caption = "取消(&C)" Frame2.Enabled = True Change = True txtstudentName.SetFocus cmdSave.Caption = "保存(&S)" cmdSave.Enabled = True cmdDel.Enabled = FalseElse Call ClearText cmdAdd.Caption = "添加(&A)" Frame2.Enabled = False cmdSave.Caption = "保存(&S)" cmdSave.Enabled = False cmdDel.Enabled = FalseEnd IfEnd Sub
Private Sub cmdDel_Click() ’删除按钮的设置 myModiStudent.rsDK1 "SELECT * FROM student_info where student_id='" & txtStudentId.Text & "'" ’把sql语句传递给函数If MsgBox("确认要删除该记录吗?", vbQuestion + vbOKCancel, "删除记录") = vbOK Then myModiStudent.rs1.Delete ’删除记录集Else Exit SubEnd If
Call ClearText cmdSave.Caption = "保存(&S)" cmdSave.Enabled = False cmdDel.Enabled = False myModiStudent.rsDK1 "SELECT * FROM student_info"If myModiStudent.rs1.EOF Then ’如记录为空只显示列名 StudentGrid.Clear StudentGrid.FormatString = " | 编号| 姓名|性别| 出生日期 |部门| 联系电话| 就职时间| 家庭住址 | 注释" Else ’否则显示所有数据 Set StudentGrid.DataSource = myModiStudent.rs1 StudentGrid.FormatString = " | 编号| 姓名|性别| 出生日期 |部门| 联系电话| 就职时间| 家庭住址 | 注释" ’设置列表框的列头End If myModiStudent.rsDK1 "select * from student_info" Set StudentGrid.DataSource = myModiStudent.rs1 StudentGrid.FormatString = " | 编号| 姓名|性别| 出生日期 |部门| 联系电话| 就职时间| 家庭住址 | 注释"End Sub
Private Sub cmdExit_Click() ’退出设置Unload MeEnd Sub
Private Sub Cmdfind_Click() ’查询设置Dim sql As StringDim sql1 As StringDim sql2 As StringIf txtName.Text = Empty And txtClass.Text = Empty ThenMsgBox "请输入查询条件!", vbOKOnly + vbInformation, "员工信息设置"Exit SubEnd If
If txtName.Text <> "" Then ’设置sql各分支查询语句 sql1 = "and student_name='" & txtName.Text & "'"Else sql1 = " "End If
If txtClass.Text <> "" Then sql2 = "and depart='" & txtClass.Text & "'"Else sql2 = " "End If
sql = "SELECT * FROM student_info where 1=1" & sql1 & sql2 ’合并sql语句myModiStudent.rsDK1 sql ’将sql语句赋给函数If myModiStudent.rs1.EOF Then StudentGrid.Clear StudentGrid.FormatString = " | 编号| 姓名|性别| 出生日期 |部门| 联系电话| 就职时间| 家庭住址 | 注释" MsgBox "没有找到符合条件的记录!", vbOKOnly + vbInformation, "提示" txtName.Text = "" ’设置0记录显示Else Set StudentGrid.DataSource = myModiStudent.rs1 StudentGrid.FormatString = " | 编号| 姓名|性别| 出生日期 |部门| 联系电话| 就职时间| 家庭住址 | 注释" Frame2.Enabled = True Change = False ’找到记录把其值传给各输入控件 txtstudentName.Text = myModiStudent.rs1!student_name cboClass.Text = myModiStudent.rs1!depart txtStudentId.Text = myModiStudent.rs1!student_id cboSex.Text = myModiStudent.rs1!student_sex txtBirth.Text = Format(myModiStudent.rs1!Birth_date, "yyyy-mm-dd") txtTel.Text = myModiStudent.rs1!tele_number txtInDate.Text = Format(myModiStudent.rs1!in_date, "yyyy-mm-dd") txtAdd.Text = myModiStudent.rs1!address txtcomment.Text = myModiStudent.rs1!commentcmdAdd.Enabled = True cmdSave.Caption = "更新(&U)" cmdSave.Enabled = True cmdDel.Enabled = True myModiStudent.rsDK1 sql Set StudentGrid.DataSource = myModiStudent.rs1 StudentGrid.FormatString = " | 编号| 姓名|性别| 出生日期 |部门| 联系电话| 就职时间| 家庭住址 | 注释"End IfEnd Sub
员工培训管理系统Private Sub cmdReturn_Click() ’设置返回 myModiStudent.rsDK1 "SELECT * FROM student_info"'If Not myModiStudent.rs1.EOF Then Set StudentGrid.DataSource = myModiStudent.rs1 StudentGrid.FormatString = " | 编号| 姓名|性别| 出生日期 |部门| 联系电话| 就职时间| 家庭住址 | 注释"'End IfEnd Sub
Private Sub Cmdsave_Click() ’保存按钮命令If txtstudentName.Text = Empty Then ’ 设置各种输入为空出错提示 MsgBox "请输入姓名!", vbInformation, "提示" txtstudentName.SetFocus Exit SubEnd If
If cboClass.Text = Empty Then MsgBox "请选择部门!", vbInformation, "提示" cboClass.SetFocus Exit SubEnd IfIf cboSex.Text = Empty Then MsgBox "请选择性别!", vbInformation, "提示" cboSex.SetFocus Exit SubEnd IfIf txtStudentId.Text = Empty Then MsgBox "请输入员工号!", vbInformation, "提示" txtStudentId.SetFocus Exit SubEnd If
If txtBirth.Text = Empty Then MsgBox "请输入出生日期!", vbInformation, "提示" txtBirth.SetFocus Exit SubElseIf Not IsDate(txtBirth) Then ’设置各种非有效值出错 MsgBox "出生日期不是有效日期,请重新输入.", vbInformation, "提示" txtBirth.SetFocus txtBirth.Text = "____-__-__" Exit SubElseIf Format(txtBirth.Text, "yyyy/mm/dd") > Format(Date, "yyyy/mm/dd") Then MsgBox "出生日期不能大于今日,请重新输入!", vbInformation, "提示" txtBirth.SetFocus Exit SubElseIf Format(txtBirth.Text, "yyyy/mm/dd") < Format(#1/1/1900#, "yyyy/mm/dd") Then MsgBox "生出日期不能小于1900年,请重新输入!", vbInformation, "提示" txtBirth.SetFocus txtBirth.Text = "____-__-__" Exit SubEnd IfIf txtInDate.Text = Empty Then MsgBox "请输入就职时间!", vbInformation, "提示" txtInDate.SetFocus Exit SubEnd IfIf Not IsDate(txtInDate) Then MsgBox "就职时间不是有效日期,请重新输入!", vbInformation, "提示" txtInDate.SetFocus txtInDate.Text = "____-__-__" Exit SubElseIf Format(txtBirth.Text, "yyyy/mm/dd") > Format(Date, "yyyy/mm/dd") Then MsgBox "就职日期不能大于今日,请重新输入!", vbInformation, "提示" txtInDate.SetFocus txtInDate.Text = "____-__-__" Exit SubElseIf Format(txtInDate.Text, "yyyy/mm/dd") < Format(#1/1/1900#, "yyyy/mm/dd") Then MsgBox "就职日期不能小于1900年,请重新输入!", vbInformation, "提示" txtInDate.SetFocus txtInDate.Text = "____-__-__" Exit SubEnd If
If txtTel.Text = Empty Then If MsgBox("联系电话是否为空?", vbYesNo + vbQuestion, "提示") = vbNo Then txtTel.SetFocus Exit Sub Else txtTel.Text = "无" End IfEnd IfIf txtAdd.Text = Empty Then MsgBox "请输入家庭地址!", vbInformation, "提示" txtAdd.SetFocus Exit SubEnd IfIf txtcomment.Text = Empty Then txtcomment.Text = "无"End If
If cmdSave.Caption = "保存(&S)" ThenmyModiStudent.rsDK1 "select * from student_Info where student_id='" & txtStudentId.Text & "'" If Not myModiStudent.rs1.EOF Then MsgBox "id已存在,请重新输入!", vbOKOnly + vbInformation, "提示" txtStudentId.Text = "" Exit Sub End If With myModiStudent.rs1 ’添加指向表的数据集 .AddNew !student_id = txtStudentId.Text ’输入信息存入数据集 !student_name = txtstudentName.Text !student_sex = cboSex.Text !Birth_date = txtBirth.Text !depart = cboClass.Text !tele_number = txtTel.Text !in_date = txtInDate.Text !address = txtAdd.Text !comment = txtcomment.Text .Update ’更新保存 End With
Set StudentGrid.DataSource = myModiStudent.rs1 ’设置指向数据源的数据集 StudentGrid.FormatString = " | 编号| 姓名|性别| 出生日期 |部门| 联系电话| 就职时间| 家庭住址 | 注释" MsgBox "信息已成功添加!", vbOKOnly + vbInformation, "员工信息添加" Frame2.Enabled = False cmdAdd.Caption = "添加(&A)" cmdSave.Caption = "保存(&S)" cmdSave.Enabled = False cmdDel.Enabled = False Else myModiStudent.rsDK1 "select * from student_info where student_id='" & txtStudentId.Text & "'" With myModiStudent.rs1 !student_id = txtStudentId.Text !student_name = txtstudentName.Text !student_sex = cboSex.Text !Birth_date = txtBirth.Text !depart = cboClass.Text !tele_number = txtTel.Text !in_date = txtInDate.Text !address = txtAdd.Text !comment = txtcomment.Text .Update ’成功保存数据 End With MsgBox "信息已成功更新!", vbOKOnly + vbInformation, "员工信息添加" Frame2.Enabled = False cmdSave.Caption = "保存(&S)" cmdAdd.Caption = "添加(&A)" cmdSave.Enabled = False cmdDel.Enabled = False End If
StudentGrid.FormatString = " | 编号| 姓名|性别| 出生日期 |部门| 联系电话| 就职时间| 家庭住址 | 注释"myModiStudent.rsDK1 "SELECT * FROM student_info" Set StudentGrid.DataSource = myModiStudent.rs1End SubPrivate Sub StudentGrid_Click() ’点击列表框的任何数据时将其导出输入控件 myModiStudent.rsDK1 "SELECT * FROM student_info" If Not myModiStudent.rs1.EOF Then Frame2.Enabled = True Change = False txtstudentName.Text = StudentGrid.TextMatrix(StudentGrid.Row, 2) cboClass.Text = StudentGrid.TextMatrix(StudentGrid.Row, 5) txtStudentId.Text = StudentGrid.TextMatrix(StudentGrid.Row, 1) cboSex.Text = StudentGrid.TextMatrix(StudentGrid.Row, 3) txtBirth.Text = Format(StudentGrid.TextMatrix(StudentGrid.Row, 4), "yyyy-mm-dd") txtTel.Text = StudentGrid.TextMatrix(StudentGrid.Row, 6) txtInDate.Text = Format(StudentGrid.TextMatrix(StudentGrid.Row, 7), "yyyy-mm-dd") txtAdd.Text = StudentGrid.TextMatrix(StudentGrid.Row, 8) txtcomment.Text = StudentGrid.TextMatrix(StudentGrid.Row, 9) cmdSave.Caption = "更新(&U)" cmdAdd.Caption = "添加(&A)" cmdDel.Enabled = True cmdSave.Enabled = True End IfEnd subEnPrivate Sub txtAdd_KeyPress(KeyAscii As Integer) ’回车激发添加按钮If KeyAscii = 39 Then KeyAscii = 0If KeyAscii = 13 Then txtcomment.SetFocusEnd Sub
Private Sub txtBirth_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then txtTel.SetFocusEnd Sub
Private Sub txtBirth_LostFocus()txtBirth.Text = Format(txtBirth.Text, "yyyy/mm/dd")
员工培训管理系统End SubPrivate Sub txtcomment_KeyPress(KeyAscii As Integer)If KeyAscii = 39 Then KeyAscii = 0ElseIf KeyAscii = 13 Then Call Cmdsave_ClickEnd IfEnd Sub
Private Sub txtInDate_GotFocus()If cmdSave.Caption = "保存(&S)" ThentxtInDate.Text = Format(Date, "yyyy/mm/dd")End IfEnd Sub
Private Sub txtInDate_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then txtAdd.SetFocusEnd SubPrivate Sub txtInDate_LostFocus()txtInDate.Text = Format(txtInDate.Text, "yyyy/mm/dd")End SubPrivate Sub txtName_KeyPress(KeyAscii As Integer)If KeyAscii = 39 Then KeyAscii = 0End SubPrivate Sub txtStudentId_GotFocus() If cboClass.Text = Empty Then MsgBox "请选择部门.", vbInformation, "提示" cboClass.SetFocus Exit SubEnd IfEnd SubPrivate Sub txtStudentId_KeyPress(KeyAscii As Integer)If KeyAscii >= 33 ThenIf KeyAscii <= vbKey9 And KeyAscii >= vbKey0 ThenElseKeyAscii = 0MsgBox "请输入数字!"End IfEnd IfEnd Sub
Private Sub txtstudentName_Change()cmdDel.Enabled = FalseEnd Sub
Private Sub txtstudentName_KeyPress(KeyAscii As Integer)If (KeyAscii >= 33 And KeyAscii <= 64) Or (KeyAscii >= 91 And KeyAscii <= 96) Or (KeyAscii >= 123 And KeyAscii <= 127) Then KeyAscii = 0If KeyAscii = 13 Then cboClass.SetFocusEnd Sub
Private Sub txtTel_KeyPress(KeyAscii As Integer)If KeyAscii >= 32 And KeyAscii <= 34 Or KeyAscii >= 36 And KeyAscii <= 44 Or KeyAscii > 45 And KeyAscii < 48 Or KeyAscii >= 58 And KeyAscii <= 127 Then KeyAscii = 0If KeyAscii = 13 Then txtInDate.SetFocus
End Sub
Public Sub ClearText() ’清空子函数 txtstudentName.Text = "" cboClass.Text = "" txtStudentId.Text = "" txtBirth.Text = "____-__-__" ’日期格式 txtTel.Text = "" txtInDate.Text = "____-__-__" txtAdd.Text = "" txtcomment.Text = ""End SubPrivate Sub Form_Load() ’载入表时清空输入框,显示数据列表 Set myModiStudent = New OpenRs StudentGrid.FormatString = " | 编号| 姓名|性别| 出生日期 |部门| 联系电话| 就职时间| 家庭住址 | 注释" myModiStudent.rsDK1 "select * from student_info" Set StudentGrid.DataSource = myModiStudent.rs1 StudentGrid.FormatString = " | 编号| 姓名|性别| 出生日期 |部门| 联系电话| 就职时间| 家庭住址 | 注释" Call ClearText txtstudentName.SetFocus cmdAdd.Enabled = True End Sub5.6 查询界面及代码设计5.6.1查询界面系统的查询界面包括:成绩信息查询、课程信息查询、培训计划查询、员工信息查询等。 图6-6 查询界面5.6.2查询界面代码设计系统查询界面的代码设计如下(这里以成绩信息查询为例):Dim ResultQuery As OpenRs ’ 定义函数和sql查询语句Dim sql As StringDim sql1 As StringDim sql2 As StringDim sql3 As StringDim sql4 As StringDim sql5 As String
Private Sub cboClassno_KeyPress(KeyAscii As Integer) ’课程编号的输入范围KeyAscii = Asc(UCase(Chr(KeyAscii)))If Not ((Chr(KeyAscii) <= "Z" And Chr(KeyAscii) >= "A") Or (Chr(KeyAscii) <= "9" And Chr(KeyAscii) >= "0") Or KeyAscii = 8) Then KeyAscii = 0End IfEnd Sub
Private Sub cmdExit_Click() ’退出按钮设置Unload MeEnd Sub
Private Sub CmdQuery_Click() ’查询按钮设置sql = "select student_info.student_id,student_info.student_name,result_info.course_no,result_info.course_name,result_info.exam_no,result_info.result from result_info inner join student_info on result_info.student_id=result_info.student_id inner join course_info on result_info.course_no=course_info.course_no where 1=1" ’用sql语句连接几个相关表If txtStudentId.Text <> "" Then ’以下设置各分支语句 sql1 = "and student_info.student_id='" & txtStudentId.Text & "'"Else sql1 = " "End If
If txtStudentName.Text <> "" Then sql2 = "and student_info.student_name='" & txtStudentName.Text & "'"Else sql2 = " "End If
If cboResult.Text <> "" Then sql3 = "and result_info.result" & cboResult.Text & ""Else sql3 = " "
员工培训管理系统End If
If txtExamNo.Text <> "" Then sql4 = "and result_info.exam_no='" & txtExamNo.Text & "'"Else sql4 = " "End If
If cboCourseName.Text <> "" Then sql5 = "and result_info.course_name='" & cboCourseName.Text & "'"Else sql5 = " "End Ifsql = sql & sql1 & sql2 & sql3 & sql4 & sql5 ’合并各分支语句ResultQuery.rsDK1 sqlIf ResultQuery.rs1.EOF Then ResultGrid.Clear ResultGrid.FormatString = " | 员 工 号|姓 名| 课 程 编 号|课 程 名 称| 考试编号|分 数" MsgBox "没有找到符合条件的记录!", vbOKOnly + vbInformation, "提示"’无记录提示ElseResultQuery.rsDK1 sql Set ResultGrid.DataSource = ResultQuery.rs1 ResultGrid.FormatString = " | 员 工 号|姓 名| 课 程 编 号|课 程 名 称| 考试编号|分 数" ’显示查询结果End IfEnd Sub
Private Sub Form_Load() ’表载入初始化显示Set ResultQuery = New OpenRsResultGrid.FormatString = " | 员 工 号|姓 名| 课 程 编 号|课 程 名 称| 考试编号|分 数"ResultQuery.rsDK1 "select student_info.student_id,student_info.student_name,result_info.course_no,result_info.course_name,result_info.exam_no,result_info.result from result_info inner join student_info on result_info.student_id=result_info.student_id inner join course_info on result_info.course_no=course_info.course_no where 1=1" ResultGrid.Clear Set ResultGrid.DataSource = ResultQuery.rs1 ResultGrid.FormatString = " | 员 工 号|姓 名| 课 程 编 号|课 程 名 称| 考试编号|分 数"
ResultQuery.rsDK1 "select distinct course_name from course_info"While Not ResultQuery.rs1.EOF cboCourseName.AddItem ResultQuery.rs1!course_name ResultQuery.rs1.MoveNextWend
cboResult.AddItem ">=90" ’成绩查询条件的下拉列表cboResult.AddItem ">=80"cboResult.AddItem ">=70"cboResult.AddItem ">=60"cboResult.AddItem "<60"cboResult.AddItem ""End Sub
Private Sub txtExamNo_KeyPress(KeyAscii As Integer) ’考试编号的输入范围If Not ((UCase(Chr(KeyAscii)) <= "Z" And UCase(Chr(KeyAscii)) >= "A") Or (Chr(KeyAscii) <= "9" And Chr(KeyAscii) >= "0") Or KeyAscii = 8) Then KeyAscii = 0End IfEnd Sub
Private Sub txtStudentId_KeyPress(KeyAscii As Integer) ’员工id的输入范围KeyAscii = Asc(UCase(Chr(KeyAscii)))If Not ((Chr(KeyAscii) <= "Z" And Chr(KeyAscii) >= "A") Or (Chr(KeyAscii) <= "9" And Chr(KeyAscii) >= "0") Or KeyAscii = 8) Then KeyAscii = 0End IfEnd Sub
Private Sub txtstudentName_KeyPress(KeyAscii As Integer)If KeyAscii = 39 Then KeyAscii = 0End Sub
Private Sub cmdReturn_Click() ’设置返回键代码ResultQuery.rsDK1 "select student_info.student_id,student_info.student_name,result_info.course_no,result_info.course_name,result_info.exam_no,result_info.result from result_info inner join student_info on result_info.student_id=result_info.student_id inner join course_info on result_info.course_no=course_info.course_no where 1=1"
Set ResultGrid.DataSource = ResultQuery.rs1 ResultGrid.FormatString = " | 员 工 号|姓 名| 课 程 编 号|课 程 名 称| 考试编号|分 数"cboResult.Text = ""txtStudentId.Text = ""txtStudentName.Text = ""txtExamNo.Text = ""cboCourseName.Text = ""End Sub5.7 说明界面该界面是系统设计者有关信息的说明,存于系统主界面内的帮助窗口下。 图5-7 说明界面
第六章 系统的测试与分析6.1 系统测试测试策略说明6.1.1 整个系统界面窗口的测试1)系统运行是否正常?2)用户登录界面的使用及登录是否正常?3)进入系统主界面后,有关的下拉菜单、工具条、对话框、按钮、图标和其他控件窗口使用是否正常?4)显示的页面程序是否正常运行,读数据库时是否出错?5)信息录入、保存、查询是否正常?6)多用户信息录入是否互通,查询是否出错?6.1.2 数据测试项目1)能否识别输入数据的类型,长度?2)数据库在大量的数据输入、输出时能否正常运行?3)日期、数据等数值是否正确处理?4)数据写入数据库时,数据是否写入对应的字段?6.2 测试报告6.2.1 用户登录界面、系统主界面的测试1)测试日期:2006年4月28日上午9:00--11:00,测试人:蔡跃城2)测试目的:a)验证系统是否能够正常运行;b)用户是否能够成功登录;c)系统主界面各下拉菜单、工具条等窗口的使用是否正常。3)测试结果:a)系统运行正常。与设计的设想吻合,在进入系统登录界面之前,能够预先出现系统欢迎界面。b)用户登录过程正常。以不同权限的用户登录后,出现与设计设想一样的使用功能。c)系统主界面各下拉菜单、工具条的使用正常。当鼠标指向系统主界面各下拉功能菜单时,下拉菜单能自动弹开,单击能正常出现对应功能的对话框。6.2.2 课程信息管理功能的测试1)测试日期:2006年4月28日下午15:00--17:00,测试人:蔡跃城2)测试目的:a)验证课程信息管理功能的使用是否正常;b)课程基本信息是否能够正常录入、正常保存,及是否能够查询;c)课程培训需求是否能够正常录入、正常保存,及是否能够查询;d)数据录入时,数据是否写入对应的字段。3)测试结果:a)该功能可正常运行。登录系统后,进入系统主界面,单击课程信息管理菜单可弹开相应的下拉对话框。b)课程基本信息可正常录入并保存、查询,如下图:
员工培训管理系统系统性能分析从上面的系统测试可以看出:该系统能有效的进行用户管理,及相关信息的录入、保存和查询等,与预期的测试结果一致,也就是说开发出来的员工培训管理系统与预期的设计目的、功能需求一致。通过本系统可有效的实现员工培训工作的管理、培训课程的设置、培训需求的汇总和分析、培训员工信息的管理和查询,从而提高员工培训工作管理的先进性、有效减少统计工作量、提高企业培训工作管理水平。同时,由于本系统是我个人的毕业设计,因个人的知识局限性和缺乏软件开发经验等因素,系统存在不足之处在所难免;在测试中,我发现系统不能区别英文字母的大小写,在进行查询时,录入的英文字母的大小是一样的,因此,在今后进行系统升级完善时,将对这方面的缺点全面的补救。还有,由于时间比较紧迫,不能进行全面、详细的测试,所以,测试的准确性和完整性可能并不全面。但这些存在的问题将是我以后对本系统进行升级完善的目标,尽量做到使本系统能够有效用户管理、信息管理和查询、有效的系统保护及防止恶意用户的攻击和破坏。第七章 结束语经过三个多月的设计和开发,员工培训管理系统基本开发完毕。本系统能够完成添加.修改.删除查询以及各类相关报表的打印,并提供系统维护功能,包括数据备份和恢复,同时提供了具备了一定的用户管理功能。由于本人知识和经验的局限性,该系统还有许多不尽如人意的地方,比如联机的帮助、人性化设计方面还比较欠缺,这些都有待在以后的过程中逐步改善。在整个设计过程中,也出现过很多的问题,不知不觉就钻牛角尖,在不断学习的过程中我体会到:1.作为一个不断学习新鲜事物的过程,从设计初的不懂到最后能够顺利完成,我体会到在实践中学习的重要性,这经历对我个人的成长具有重要意义。2.由于前期工作的不彻底,对系统的需求分析的要求认识不够清楚,使得后续的工作不得不经常返回去修改数据表和个别代码。使我体会到在设计中的每一步的重要性,如果上一个步骤不能很好的完成,在后续的设计将会付出几倍的代价。3.设计过程中,经常会遇到困难,我学会通过别人的代码理解语言的含义但这并不是抄袭,然后根据自己的设计要求编写代码。设计中得到了指导教师刘永乐老师和班主任孙甲泉老师的悉心指导。4.设计过程中,互联网帮了我的大忙。网络资源是一个丰富的共享体系,我通过在VB论坛上提出问题得到了很多热心网友的帮助,这坚定了我通过网络吸收知识的信心。
通过这次毕业设计,我深刻体会到要做好一个完整的事情,需要有系统的思维方式和方法,对待一个新的问题,要耐心、要善于运用已有的资源来充实自己。同时我也深刻的认识到,在对待一个新事物时,一定要从整体考虑,完成一步之后再作下一步,这样对于系统而言才能更加有效。同时,使我对VB和SQL SERVER有了更加深刻的认识,积累了使用软件工程的思想来开发软件的经验,同时最重要的是摸索出了一套考虑问题和解决问题的方法,使我在工作岗位上受益匪浅。致 谢本毕业设计的完成,首先要感谢母校---中央广播电视大学及汕尾分校的辛勤培育之恩,给我提供了很好的学习环境和设计环境,使我学到了许多新的知识。 本毕业设计是在刘永乐副教授的指导下完成的, 刘老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅;另外,班主任孙甲泉老师的支持和鼓励也为我继续前进提供了无限动力。每当遇到困难无法进行下去时,她们都能给我充足的信心和力量,我的毕业设计和论文才得以顺利完成,在此我衷心地对她们说声:谢谢你们!
员工培训管理系统参考文献[1] 张力科. SQL SERVER 2000 数据库开发技术与工程实践[M].北京:人民邮电出版社, 2004.[2] 刘韬,骆娟,何旭洪.VISUAL BASIC 数据库系统开发实例导航(第二版)[M].北京:人民邮电出版社,2004.[3] 王彬华.中文VISUAL BASIC 6.0实例教程[M].成都:电子科技大学出版社,2004.[4] 李华飚,毕宗睿,李水根.VISUAL BASIC数据库编程[M].北京:人民邮电出版社,2004.[5] 王珊,陈红.数据库系统原理教程[M].北京:清华大学出版社,2003.[6] 苏中滨,杨涛,陈联成.数据库系统概念与应用[M].北京:中国水利水电出版社,2003.[7] 李爱中,周成云,马务充.数据库系统教程[M].北京:机械工业出版社, 2004.[8] 孙越.VISUAL BASIC 数据库开发自学教程[M].北京:人民邮电出版社,2004.[9] Sean P Alexander.Microsoft Advanced Visual Basic 6.0 Second Edition[M].美国:The Mandelbrot Set International Ltd,1998. 附录:公用类模块源代码Option ExplicitPrivate cnSIMS As ADODB.Connection '声明一个连接Private rsSims As ADODB.Recordset '声明一个连接记录集Public rs1 As ADODB.Recordset '声明一个连接到所需表的记录集Public rs2 As ADODB.RecordsetPublic rst As ADODB.RecordsetPrivate Data As Object ' 在类初始化时建立连接Private Sub Class_Initialize() On Error GoTo DbnotOpen Set cnSIMS = New ADODB.Connection With cnSIMS .Provider = conProvide .ConnectionString = conString .ConnectionTimeout = 10 .Open Set rst = New ADODB.Recordset End With Exit SubDbnotOpen: If Err = -2147467259 Then Set cnSIMS = Nothing MsgBox "连接后台数据库失败!" & vbCrLf & vbCrLf & "请检查配置是否完好,数据库student是否存在?", vbOKOnly + vbInformation, "学生信息管理系统" End End IfEnd Sub'data是一个指向ADO记录集的对象的引用'用于设置class的数据源内容Private Sub Class_GetDataMember(DataMember As String, Data As Object) Set Data = rsSimsEnd Sub'建立一个可以打开记录集的函数,需要是必须把表名传给函数Public Function rsDK(Table As String) Set rsSims = New ADODB.Recordset With rsSims .Source = Table .ActiveConnection = cnSIMS .CursorType = adOpenKeyset .LockType = adLockOptimistic .Open , , , , adCmdTable End WithEnd Function'建立一个可以打开记录集(动态游标)的函数'需要把SQL语句传递给函数Public Function rsDK1(sql As String) Set rs1 = New ADODB.Recordset With rs1 .Source = sql .ActiveConnection = cnSIMS.CursorType = adOpenKeyset .LockType = adLockOptimistic .Open , , , , adCmdText End WithEnd Function'建立一个可以打开记录集(静态游标)的函数'需要把SQL语句传递给函数Public Function rsDK2(sql As String) Set rs2 = New ADODB.Recordset With rs2 .Source = sql .ActiveConnection = cnSIMS .CursorType = adOpenStatic .LockType = adLockOptimistic .Open , , , , adCmdText End WithEnd Function'类终止时,释放一切可能占据的资源Private Sub Class_Terminate() Set cnSIMS = Nothing Set rs1 = Nothing Set rs2 = Nothing Set rsSims = Nothing Set rst = NothingEnd Sub