课程设计报告企业人事管理系统.docx
- 文档编号:10345562
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:20
- 大小:446.64KB
课程设计报告企业人事管理系统.docx
《课程设计报告企业人事管理系统.docx》由会员分享,可在线阅读,更多相关《课程设计报告企业人事管理系统.docx(20页珍藏版)》请在冰豆网上搜索。
课程设计报告企业人事管理系统
目录
1.引言……………………………………………………………2
2.概要设计……………………………………………………….4
3.详细设计……………………………………………………….6
4.调试与运行结果及存在的主要问题………………………..16
5.课程设计小结…………………………………………………
6.参考文献……………………………………………………….
引言
1.设计环境:
设计环境具体有visualbasic6.0,MicrosoftSQLServer2000.
2.同组人员:
完成该设计的人员为04-3班的方靖和邝锐强。
3.具体分工:
经过两人的讨论分析后共同完成该题目的需求分析,概念结构设计以及逻辑结构的设计。
在具体实施阶段方靖主要负责登陆界面,各职工基本资料的界面设计及相应的连接数据库部分,实现数据库备份和还原部分以及数据库数据的初始化。
邝锐强主要负责对各人员相关资料的删除,修改,增加部分的界面设计及相应的连接数据库部分,操作员管理和权限设置。
概要设计
1.系统需求分析:
通过调查本地的企业,根据企业的具体情况设计企业人事管理系统。
主要功能有:
①人事档案管理:
户口状况、政治面貌、生理状况、合同管理等;
②考勤加班出差管理;
③人事变动:
新进员工登记、员工离职登记、人事变更记录;
④考核奖惩;
⑤员工培训;
⑥系统维护:
如数据安全管理(含备份与恢复)、操作员管理、权限设置等;
由以上可知可以具体设计五类人员:
员工,维护部员工,经理,人事部经理以及总裁,其中员工只能查询本人的基本资料:
工号,姓名,性别,户籍情况,政治面貌,生理状况,合同,所属部门以及自身的考勤考核奖励情况。
而维护部员工除了可以完成普通员工的功能外还可以进行系统维护。
经理可以管理员工,包括增加删除本部门员工以及修改员工资料。
人事部经理在经理的功能上增加了可以删除增加修改其他部门员工资料的功能,而总裁可以任意增加删除修改所有部门经理及员工的资料。
而对于所有人员均记录其基本资料和日常状况资料。
2.系统结构设计:
由需求分析可以划出系统结构图,如下:
3.功能模块设计:
由以上分析可以划出功能模块设计图,如下:
详细设计
1.系统数据库设计:
经过需求分析设计后得出数据库设计的概念模型,其中包含两个实体,一个是人员表,一个是日常情况表。
如下:
人员(工号,姓名,性别,年龄,户口,政治面貌,生理状况,合同管理,照片,密码,所管(属)部门(地区),职位)
日常情况(工号,日期,考勤,加班,惩罚,培训)
具体创建表的具体代码如下:
createtableBaseTable(
BIDvarchar(10)notnullunique,
BNamevarchar(20)notnull,
BAgeint,
BSexvarchar
(2),
BResidencevarchar(50),
BPolityvarchar(50),
BHealthyvarchar(50),
BAgreementvarchar(50),
BDepartmentvarchar(20)notnull,
BPhotoimage,
BPasswordvarchar(50)notnull,
BPositionvarchar(10)notnull,
primarykey(BID),
check(BAge>0),
check(BSexin('男','女')),
check(BPositionin('员工','维护部员工','经理','人事经理','总裁'))
);
createtableExtendTable(
EIDvarchar(10)notnull,
EDatedatetimenotnull,
EStatevarchar(4),--考勤,内容为“请假,旷到,迟到,正常,出差”
EOverworkvarchar
(2),--加班,内容“有,无”
ERAPvarchar(500),--奖惩(rewardsandpunishment)
ETrainingvarchar(500),
primarykey(EID,EDate),
check(EStatein('请假','旷到','迟到','正常','出差')),
check(EOverworkin('有','无')),
foreignkey(EID)referencesBaseTable(BID)ondeletecascade
);
所创建表的设计图如下所示:
BaseTable表:
用E-R图表示该实体如下:
ExtendTable表:
用E-R图表示该实体如下:
完整的E-R图如下所示:
系统主要功能模块设计
各模块的主要算法对应的原代码
1、数据库的连接:
利用控件Adodc连接:
在Adodc控件中,设置ConnectStringProvider=”SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=ManageSystem”,然后再设置CommandType为8–adCmdUnknown,数据源定为SQL查询语句,语句内容根据不同需要而更改。
设定ConnectString属性
P.S:
当然,可以手工输入,也可以利用“生成”让VB自动给出语句。
设定RecordSource属性
连接数据库核心语句:
Adodc1.ConnectStringProvider=”SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=ManageSystem”
Adodc1.RecordSource=SQL查询语句
Adodc1.Recordset.Open
Adodc1.Refresh
断开数据库核心语句:
Adodc1.Recordset.Close
利用ADODB对象作为SQL连接接口:
由于在程序中使用瞬间连接数据库比长期连接数据库高效,而且在本程序中大量使用,因而新增了模块Module1,自定义了SqlConnect函数作为连接,SqlDisConnect函数来断开连接,方便编写程序,提高代码使用率,提高开发效率和运行效率。
连接数据库核心语句:
SetAdo_Conn=NewADODB.Connection
SetAdo_RS=NewADODB.Recordset
str_CS="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=ManageSystem"
str_RS=SQL查询语句
SqlConnectAdo_Conn,Ado_RS,str_CS,str_RS
其中模块中定义了SqlConnect函数:
PublicSubSqlConnect(ByValAdo_ConnectionAsADODB.Connection,_
ByValAdo_RecordsetAsADODB.Recordset,_
Ado_ConnectionStringAsString,_
Ado_RecordSourceAsString)
Ado_Connection.ConnectionString=Ado_ConnectionString
Ado_Connection.ConnectionTimeout=30
Ado_Connection.Open
Ado_Recordset.OpenAdo_RecordSource,Ado_Connection
EndSub
断开数据库核心语句:
SqlDisConnectAdo_RS
其中模块中定义了SqlDisConnect函数:
PublicSubSqlDisConnect(ByValAdoRecordsetAsADODB.Recordset)
IfAdoRecordset.StateThenAdoRecordset.Close
EndSub
2、数据的查询:
利用表格方式对SQL数据进行查询:
利用连接数据库的方法,返回一个RecordSet集合。
通过MSHFlexGrid控件、DataGrid控件等控件对集合作表格方式的输出。
使用Adodc控件时,可以通过属性的设定,把MSHFlexGrid控件、DataGrid1控件捆绑在Adodc控件上。
对用Adodc控件捆绑
当使用ADODB对象时,可以通过Set语句对MSHFlexGrid.DataSourse进行赋ADODB对象的Recordset值。
但是DataGrid1则不能。
利用字符窜方式对SQL数据进行查询
利用连接数据库的方法,返回一个RecordSet集合。
通过对RecordSet集合的提取,把元组中的属性值赋给TextBox等控件控件,让其输出。
核心代码:
Adodc1.Recordset.MoveFirst
Adodc1.Recordset.Find"工号='1234"
Text1.Text=Adodc1.Recordset.Fields("工号").Value
Text2.Text=Adodc1.Recordset.Fields("姓名").Value
.
.
.
对查询所得到的集合作出判空:
方法有多种:
(设Ado_RS为Recordset)
A、利用EOF和BOF两个属性进行判断:
IfAdo_RS.BOF=FalseAndAdo_RS.EOF=FalseThen
集合不为空
Else
集合为空
EndIf
B、利用Recordset的RecordCount属性判断:
IfAdo_RS.RecordCount>0Then
集合不为空
Else
集合为空
EndIf
C、利用DataGrid的ApproxCount属性来判断:
判断条件会因表格的自定义显示而有所不同
IfDataGrid1.ApproxCount>0Then
集合不为空
Else
集合为空
EndIf
D、利用MSHFlexGrid的Rows属性判断:
判断条件会因表格的自定义显示而有所不同
IfMSHFlexGrid1.Rows>1Then
集合不为空
Else
集合为空
EndIf
查询特定元组
对于特定元组,由于主码的唯一性,所以当对主码作准确查询时,所得的表只有两种情况:
只有一条元组或者什么都没有。
通过
的方法,可以对集合判空。
如果为空,则认为特定元组不存在,,查询失败;如果返回一条元组,则指针肯定是指向该元组,可以马上对数据进行读取。
核心代码:
SetAdo_Conn=NewADODB.Connection
SetAdo_RS=NewADODB.Recordset
str_CS="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=ManageSystem"
str_RS="select*fromBaseTablewhereBID='"&Trim(Text1.Text)&"'"
SqlConnectAdo_Conn,Ado_RS,str_CS,str_RS
Ado_RS.RecordCount
'检测帐号是否存在
IfAdo_RS.EOF=FalseThen'如果帐号存在
IfTrim(Ado_RS.Fields("BID"))=Trim(Text1.Text)AndTrim(Ado_RS.Fields("BPassword"))=Trim(Text2.Text)Then
还有一种方法,利用Find方法进行查找,如果找到则指针指向该元组。
如找不到则返回错误。
因此利用捕获错误的方法也可以得到效果。
第三种,利用MSHFlexGrid控件、DataGrid控件等,均可以利用控件内部的属性和方法进行查询。
3、数据的修改:
利用嵌入SQL语句。
首先使用ADODB对象连接的方法,利用ADODB.Connection.
Execute直接嵌套运行SQL语句对数据进行修改。
核心语句:
Ado_Conn.Execute“updata表名set某属性=XX”
此外还可以利用ADO接口提供的Fields属性对数据进行修改。
核心语句:
Adodc1.Recordset.Find"工号='"&Text3.Text&"'"
Adodc1.Recordset.Fields("姓名")=Text4.Text
Adodc1.Recordset.Fields("所属部门")=Combo2.Text
Adodc1.Recordset.Fields("职位")=Combo3.Text
Adodc1.Recordset.Update
Adodc1.Refresh
利用DataGrid控件对数据库进行强行修改。
只需要连接好数据库,然后对DataGrid进行捆绑,而且DataGrid的AllowUpdate等属性设为True就可以通过界面直接修改。
4、数据的删除
基本方法跟3一样。
使用SQL嵌套语句删除数据。
Ado_Conn.Execute“deletefrom表名where某属性=XX”
此外还可以利用ADO接口提供的Fields属性对数据进行修改。
核心语句:
Adodc1.Recordset.MoveFirst
Adodc1.Recordset.Find"工号='"&Text3.Text&"'"
Adodc1.Recordset.Delete
Adodc1.Recordset.Update
5、数据的添加:
基本方法跟3一样。
使用SQL嵌套语句增加数据。
Ado_Conn.Execute“insertinto表名values(某属性=XX)”
此外还可以利用ADO接口提供的Fields属性对数据进行修改。
核心语句:
Adodc1.Recordset.MoveFirst
Adodc1.Recordset.AddItem
Adodc1.Recordset.Fields("姓名")=Text4.Text
Adodc1.Recordset.Fields("所属部门")=Combo2.Text
Adodc1.Recordset.Fields("职位")=Combo3.Text
Adodc1.Recordset.Update
Adodc1.Refresh
7、权限的分配
读取BaseTable(员工基本表)里面的BPosition(职位)。
通过对其的判断,来选择其他更多的步骤。
核心语句:
SelectCaseTrim(Ado_RS.Fields("BPosition"))'检测权限
Case"总裁"
…………
Case"人事经理"
…………
Case"经理"
…………
Case"维护部员工"
…………
Case"员工"
…………
EndSelect
调试与运行结果及主要问题
在程序设计过程中遇到的主要问题是如何将数据库数据和vb连接起来,设置外码与被参照关系中主码的及联关系以及如何高效地实现查询功能。
同时由于在数据库基本资料表中添加了照片属性,但由于能力有限,至今仍不懂往数据库表中插入图片的方法。
另外一个方面的问题就是界面不够漂亮,显得有点死板。
主要截图如下:
登陆框
总裁管理截图
员工管理截图
数据备份和恢复
经理管理截图
考勤-奖惩-培训一览表
添加经理截图
添加员工截图
维护员工查询截图
一般员工查询截图
*课程设计小结*
参考文献
1.萨师煊,王珊。
数据库系统概论(第三版)
2.刘晓华。
SQLServer2000数据库应用开发
3.张勇。
VisualBasic课程设计案例精编
4.EVangelosPetroutsos,KevinHough(邱仲潘译)VisualBasic6高级开发指南
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告 企业 人事管理系统
![提示](https://static.bdocx.com/images/bang_tan.gif)