您的当前位置:首页正文

数据库课程设计 员工信息管理系统

来源:好兔宠物网
课程设计任务书

姓 名 姓名 学 号 性别 班级 班 级 在本项目中的分工 VB界面设计、系统查询功能、SQL表的创建完善及权限、触发器设计、系统健壮性维护 VB界面设计、系统添加功能、SQL表的建立及索引设计、数据字典、系统测试、系统逻辑设计 系统修改功能、SQL表的创建、需求分析、 系统用户注册、考勤修改功能、SQL表的创建、功能设计分析 课题组 成员 课程名称 数据库系统原理 课程性质 专业必修课 设计时间 设计名称 2009年5月3日——2009年6月15日 员工信息管理系统 1、 对实际系统要有恰当的需求分析过程,内容至少应包含主要数据流图、基本数据字典等信息的描述及相关系统功能的分析。 2、 设计过程应体现和侧重对数据库的分析和设计过程,内容至少包含E-R图设计,关系模式设计及优化,表间关系的分析等内容(至少有4张以上基表的设计)。 3、 要有数据库和表的创建脚本,输入必要的初始数据(每表至少有20条以上记录)。 4、 要有体现数据库安全性策略的设计过程,包括必要的权限设计与管理。 5、 要有数据完整性设计,应包括必要的数据完整性校验、一致性检查等。 6、 对典型功能鼓励使用存储过程、函数和触发器的设计与应用。 7、 系统前台的设计,可由学生自选开发工具完成,但要完成与数据库连接配置与相关数据控件的绑定。 8、 成果提交形式:课程设计报告+完成系统功能的、有一定健壮性的系统。 设计要求 1、需求分析; 2、进行数据库的概念设计; 设计思路 与 设计过程 3、进行数据库的逻辑设计; 4、进行数据库的物理设计; 5、进行应用程序设计; 6、编程实现。 7、调试完善 1、2009.05.3-2009.05.5 需求分析 2、2009.05.7-2009.05.10 概念设计 计划与进度 3、2009.05.10-2009.05.14 逻辑设计 4、2008.05.15-2009.06.2 系统设计 5、2009.06.5-2009.06.15 课程设计报告撰写 任课教师 意 见 说 明

设计名称:员工信息管理系统 日期:2009年5月3日 设计内容:

1、员工信息添加 2、员工信息修改 3、员工信息删除

4、员工信息查询(多种方式) 5、员工考勤信息添加 6、员工考勤信息修改 7、员工考勤信息删除 8、员工考勤信息查询 9、用户注册

10、SQL基本表建立

11、SQL权限、索引、触发器、函数的创建 12、ODBC连接

设计目的与要求:

1)加深对数据库系统原理、软件工程、程序设计语言的理论知识的理解和应用水平。

2)通过设计实际的数据库系统应用课题,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力。 3)通过设计,掌握数据库应用系统综合开发的方法与技能。

设计环境或器材、原理与说明: VB 6.0

SQL SERVER 2000

设计过程(步骤)或程序代码:

1 需求分析

1.1系统需求分析

在人才过剩的今天,企业对于有用人才的需求逐步加大,企业内部的人事变动和部门规划也开始加速,传统的人事档案已经不能满足各个企业的人员流动速

度,迫使人们起用新的管理方法来管理员工的相关信息。科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。信息化时代的到来成为不可抗拒的潮流,人类文明正在进入一个崭新的时代。因此,员工管理系统也以方便、快捷、费用低、绿色环保的优点正慢慢地进入各个行业和领域,将传统的员工管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,加速信息的更新速度,使企业管理层第一时间了解到员工的信息,从而进一步的进行对员工的调配。

功能需求详细说明: —增加—

增加员工的基本信息、考勤信息 —编辑—

用户可以对员工信息、考勤信息进行删除

用户可以对员工的姓名、编号等员工基本信息进行修改 用户可以对员工的出勤天数、请假天数等考勤信息进行修改 —查询—

用户可以根据姓名、编号,准确的查到要找的员工,也可以选择部门,查看选中的部门的所有员工。

1.2可行性分析

本次课程设计题目:“员工信息管理系统”,主要目的是编制一个登陆系统,连接数据库系统,用以实现员工个人信息与考勤信息的管理。同时对整个系统的分析、设计过程给出一个完整的论证。

由于本系统管理的对象简单,且每个数据内容之间都具有关联性,涉及过程并不是很复杂。因此,比较适合于采用数据库管理。在技术难度方面,由于有指导老师的指导和相关参考文献,特别是网上和图书馆资料,特别是参考其它程序的功能,因此完全可以实现。

2 数据库的概念设计

实体设计:

员工(员工编号,姓名,性别,出生日期,籍贯,专业,学历编号,职称编号,职务编号,部门编号,参加工作时间,进入公司时间,员工备注,政治面貌,员工技术特长,毕业学校,用工性质,工资等级,合同期限)

考勤(员工编号,考勤日期,姓名,应出勤天数,迟到次数,早退次数,请假天数,旷工天数,加班天数,加班天数,补休天数,加班费,扣款,备注)

根据以上需求分析,可画出E-R模型图(图1.1):

图1.1

E-R图

3 数据库的逻辑设计

根据系统功能设计的要求以及功能模块的划分,对员工信息管理系统可以列出以

下数据项及数据结构:

员工个人基本信息:包括员工编号、姓名、性别、出生日期、籍贯、专业、学历编号、职称编号、职务编号、部门编号、参加工作时间、进入公司时间、员工备注、政治面貌、员工技术特长、毕业学校、用工性质、合同期限。

员工考勤基本信息:包括员工编号、姓名、应出勤天数、迟到次数、早退次数、请假天数、旷工天数、加班天数、加班天数、补休天数、加班费、扣款、备注。

部门信息:包括部门编号、部门名称、部门简介 职称信息:包括职称序号、职称名称、备注 学历信息:包括学历序号、学历名称、备注 职务信息:包括职务序号、职务名称、备注 用户信息:包括用户的帐号及密码。

4 数据库的物理设计

4.1数据字典与关系图

根据系统需求及逻辑结构设计,本网站基于SQL Server 2000数据库,建立如下数据库表(表1.1):

表1.1 库名(员工数据库) 用户信息表(sysuser) 字段 user_id user_pwd 类型 nvarchar nvarchar 说明 用户账号 密码 大小 8 8 是否为空 NOT NULL NOT NULL 部门信息表(department) 字段 dept_id dept_name dept_des 类型 int nvarchar nvarchar 说明 部门编号 部门名称 部门简介 说明 员工编号 姓名 性别 籍贯 专业 学历编号 职称编号 部门编号 职务编号 大小 4 20 50 大小 4 20 2 4 20 20 4 4 4 4 4 4 255 50 50 50 50 50 大小 4 20 255 大小 4 20 255 是否为空 NOT NULL NOT NULL 是否为空 NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL 是否为空 NOT NULL NOT NULL 是否为空 NOT NULL NOT NULL 员工基本信息表(employee) 字段 类型 emp_id emp_name sex birthday native profession edu_id title_id dept_id duty_id emp_date1 emp_date2 emp_des zzmm ygjstc bisx ygxz htqx int nvarchar nvarchar nvarchar nvarchar int int int int smaldatetime 出生日期 smaldatetime 参加工作时间 smaldatetime 进入公司时间 nvarchar nvarchar nvarchar nvarchar nvarchar nvarchar 员工备注 政治面貌 员工技术特长 毕业学校 用工性质 合同期限 说明 职称序号 职称名称 备注 说明 学历序号 学历名称 备注 职称信息表(title) 字段 类型 title_id title_name title_des int nvarchar nvarchar 学历信息表(education) 字段 类型 edu_id edu_name edu_des int nvarchar nvarchar 职务信息表(duty) 字段 duty_id duty_name duty_des 类型 int nvarchar nvarchar 说明 职务序号 职务名称 备注 说明 员工编号 员工姓名 应出勤天数 迟到次数 早退次数 请假天数 旷工天数 加班天数 补休天数 加班费 扣款 备注 大小 4 20 255 大小 4 6 4 4 4 4 4 4 4 4 4 255 是否为空 NOT NULL NOT NULL 是否为空 NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL 考勤信息表(checkin) 字段 类型 emp_id check_ym w_day l_nums e_nums h_days n_days o_days r_days overtime_s d_check check_des 注:波浪线为主键。

int nvarchar real int int real real real real real real nvarchar 图1.2

关系图

4.2数据库建立与初始化

4.2.1 建立数据库

Create table employee (

emp_id int(4) not null,

emp_name nvarchar(20) not null, sex nvarchar(2) not null,

birthday smaldatetime(4) not null, native nvarchar(20), profession nvarchar(20), edu_id int(4),not null, title_id int(4),not null, dept_id int(4),not null, duty_id int(4),not null,

emp_date1 smaldatetime(4),not null, emp_date2 smaldatetime(4),not null, emp_des nvarchar(255), zzmm nvarchar(50), ygjstc nvarchar(50), bisx nvarchar(50), ygxz nvarchar(50), htqx nvarchar(50),

constraint EmPK primary key(emp_id),

constraint EduFK foreign key(edu_id) references education(edu_id), constraint TitleFK foreign key(title_id) references education(title_id), constraint DuFK foreign key(duty_id) references education(duty_id), constraint DeFK foreign key(dept_id) references education(dept_id), )

Create table title (

title_id int(4) not null,

title_name nvarchar(20) not null, title_des nvarchar(255)

constraint TiPK primary key(title_id), )

Create table education (

edu_id int(4) not null,

edu _name nvarchar(20) not null, edu _des nvarchar(255)

constraint EdPK primary key(edu _id), )

Create table duty (

duty _id int(4) not null,

duty _name nvarchar(20) not null, duty _des nvarchar(255)

constraint DuPK primary key(duty _id), )

Create table department (

dept_id int(4) not null,

dept _name nvarchar(20) not null, dept _des nvarchar(255)

constraint DePK primary key(dept _id), )

4.2.2 安全性(权限)

grant all privileges on employee to sasa grant all privileges on checkin to sasa grant all privileges on sysuser to sasa grant all privileges on duty to sasa grant all privileges on title to sasa grant all privileges on department to sasa grant all pr ivileges on education to sasa

4.2.3 触发器

功能:使姓名中不能出现数字。 CREATE TRIGGER T_IN ON dbo.employee FOR INSERT,Update AS

IF EXISTS ( SELECT *

FROM employee

WHERE emp_name like '%[0-9]%' )

BEGIN

RAISERROR('错误!姓名中不可出现数字',16,1) ROLLBACK RETURN END

4.2.4 建立索引

create cluster index pk_duty on duty_id

create cluster index pk_department on dept_id create cluster index pk_title on title_id create cluster index pk_education on edu_id create cluster index pk_sysuser on user_id create cluster index pk_employee on emp_id

create cluster index pk_checkin on (emp_id,check_ym)

4.2.5 VB数据库连接语句

Option Explicit

Public dbConn As New ADODB.Connection Public loginUser As String Public loginOK As Boolean Public cmdType As String Public tUser_id As String Public tDept_id As Integer Public tEmp_id As Integer Public tCheck_ym As String Public tQx As String Sub Main()

If ConnectToDatabase = False Then MsgBox \"连接数据库出错!\"

End End If

loginOK = False cmdType = \"\"

frmLogin.Show vbModal Unload frmLogin If loginOK Then MDIForm1.Show End If End Sub '连接到数据库

Function ConnectToDatabase() As Boolean On Error GoTo ERR_CONN

'设置服务器名称,数据库名称,登录名(此时假设密码为空) dbConn.ConnectionString = \"dsn=rsgl;Database=man;uid=ZFS;pwd=\" 'dbConn.ConnectionString

\"Provider=msdasql;Database=man;server=computer;uid=sa;pwd=\" dbConn.Open

ConnectToDatabase = True Exit Function ERR_CONN:

ConnectToDatabase = False End Function

4.2.6 ODBC连接

连接数据库方法如下:

1、 打开我的电脑---控制面板---管理工具。

2、 双击“数据源(ODBC)”,打开“ODBC数据源管理器”对话框,如图(图1.3)所示。

=

3、 在“系统DSN”选项卡下,

单击“添加”按钮,弹出如图(图1.4)所示对话框,在该对话框中选择SQL Server选项。

4、 单击“完成”按钮。

5、 在该对话框中输入数据源

名“emp”、服务器名,按要求填空完成后,即可完成数据源的连接设置(图1.6)。

图1.3

图1.4 图1.5

图1.6

5 应用程序设计

5.1系统功能分析

员工信息管理系统基于用户验证登录的方式实现员工个人信息管理和员工考勤信息管理。其功能结构如图(图1.7):

图1.7:

系统功能结构图

5.2系统功能模块设计

员工信息管理系统主要包含用户登录、新增、编辑、查询功能模块。 1、用户登陆

员工信息管理系统采用用户名及密码验证方式,进入员工信息管理系统前,用户必须在登录窗口输入用户名及密码,只有验证通过的用户方可进入员工信息管理系统操作主页面。

2、新增功能模块

包含2个功能模块:员工个人信息的添加、员工考勤信息的添加 3、编辑功能模块

包含2个功能模块:员工个人信息的删除、按月份进行员工考勤信息编辑与删除

4、查询功能模块

包含2个功能模块:员工个人信息查询、按月份进行员工考勤信息查询

系统操作流程图(图1.8):

图1.8:

N 开始 登录密码框 判断密码 Y 员工信息管理系统 其他管理 保存操作结果 结束

设计结果与分析(可以加页):

1、员工信息查询 (frmEmpInfo2.frm)

图1.9:员工信息查询界面

主要代码如下:

Private Sub Command1_Click() Dim strId As String Dim strName As String Dim strDept As String Dim strTitle As String Dim strDuty As String Dim strEdu As String Dim strSex As String '设置错误陷阱

On Error GoTo ERR_CONN If Trim(MskId) = \"\" Then strId = \"\" Else

strId = \"and a.emp_id= '\" & MskId & \"'\" End If

If Trim(Text2) = \"\" Then strName = \"\" Else

strName = \"and a.emp_name='\" & Trim(Text2) & \"'\" End If

If cboDept.ListIndex = 0 Then strDept = \"\" Else

strDept = \"and c.dept_name='\" & cboDept.Text & \"'\" End If

If cboTitle.ListIndex = 0 Then strTitle = \"\" Else

strTitle = \"and e.title_name='\" & cboTitle.Text & \"'\" End If

If cboDuty.ListIndex = 0 Then strDuty = \"\" Else

strDuty = \"and d.duty_name='\" & cboDuty.Text & \"'\" End If

If cboEdu.ListIndex = 0 Then strEdu = \"\" Else

strEdu = \"and b.edu_name='\" & cboEdu.Text & \"'\" End If

If cboSex.ListIndex = 0 Then strSex = \"\" Else

strSex = \"and a.sex='\" & cboSex.Text & \"'\" End If

'打开一个数据集 strSql = \"select a.emp_id,a.emp_name,a.sex,b.edu_name,c.dept_name,d.duty_name,e.title_name from employee a,education b,department c,duty d,title e where a.edu_id=b.edu_id and a.dept_id=c.dept_id and a.duty_id=d.duty_id and a.title_id=e.title_id \" & strId & \" \" & strName & \" \" & strDept & \" \" & strTitle & \" \" & strTitle & \"\" & strDuty & \" \" & strEdu & \" \" & strSex & \" order by a.emp_id\"

rs.Open strSql, dbConn, adOpenForwardOnly, adLockReadOnly

If rs.EOF Then

Label9 = \"找到0条记录\"

flxShow.Rows = 1 Else

'填写数据

flxShow.Rows = 1

Do While Not rs.EOF

flxShow.Rows = flxShow.Rows + 1

flxShow.TextMatrix(flxShow.Rows - 1, 0) = rs.Fields(0).Value

For i = 2 To rs.Fields.Count

flxShow.TextMatrix(flxShow.Rows - 1, i) = rs.Fields(i - 1).Value

Next i

rs.MoveNext Loop

Label9 = \"找到\" & flxShow.Rows - 1 & \"条记录\"

End If rs.Close Exit Sub

ERR_CONN:

MsgBox \"请检查输入的数据是否有效\" End Sub

Private Sub Command3_Click() Unload Me End Sub

Private Sub Form_Load()

'性别

cboSex.AddItem \"\" cboSex.AddItem \"男\" cboSex.AddItem \"女\" cboSex.ListIndex = 0

'学历

strSql = \"Select edu_id,edu_name from education Order By edu_id\" rs.Open strSql, dbConn, adOpenForwardOnly, adLockReadOnly cboEdu.AddItem \"\"

Do While Not rs.EOF

cboEdu.AddItem (rs.Fields(\"edu_name\").Value)

cboEdu.ItemData(cboEdu.NewIndex) = rs.Fields(\"edu_id\").Value rs.MoveNext Loop rs.Close

cboEdu.ListIndex = 0

'部门

strSql = \"Select dept_id,dept_name from department Order By dept_id\" rs.Open strSql, dbConn, adOpenForwardOnly, adLockReadOnly cboDept.AddItem \"\" Do While Not rs.EOF

cboDept.AddItem (rs.Fields(\"dept_name\").Value) cboDept.ItemData(cboDept.NewIndex) = rs.Fields(\"dept_id\").Value rs.MoveNext Loop rs.Close

cboDept.ListIndex = 0

'职务

strSql = \"Select duty_id,duty_name from duty Order By duty_id\" rs.Open strSql, dbConn, adOpenForwardOnly, adLockReadOnly cboDuty.AddItem \"\" Do While Not rs.EOF

cboDuty.AddItem (rs.Fields(\"duty_name\").Value) cboDuty.ItemData(cboDuty.NewIndex) = rs.Fields(\"duty_id\").Value rs.MoveNext Loop rs.Close

cboDuty.ListIndex = 0

'职称

strSql = \"Select title_id,title_name from title Order By title_id\" rs.Open strSql, dbConn, adOpenForwardOnly, adLockReadOnly cboTitle.AddItem \"\" Do While Not rs.EOF

cboTitle.AddItem (rs.Fields(\"title_name\").Value) cboTitle.ItemData(cboTitle.NewIndex) = rs.Fields(\"title_id\").Value rs.MoveNext Loop

rs.Close

cboTitle.ListIndex = 0 '设置列数

flxShow.Cols = 8 '列标题

flxShow.TextMatrix(0, 0) = \"工号\" flxShow.TextMatrix(0, 1) = \"\" flxShow.TextMatrix(0, 2) = \"姓名\" flxShow.TextMatrix(0, 3) = \"性别\" flxShow.TextMatrix(0, 4) = \"学历\" flxShow.TextMatrix(0, 5) = \"部门\" flxShow.TextMatrix(0, 6) = \"职务\" flxShow.TextMatrix(0, 7) = \"职称\"

'设置列宽

flxShow.ColWidth(0) = 1000 flxShow.ColWidth(1) = 0 flxShow.ColWidth(2) = 1400 flxShow.ColWidth(3) = 800 flxShow.ColWidth(4) = 1400 flxShow.ColWidth(5) = 1400 flxShow.ColWidth(6) = 1400 flxShow.ColWidth(7) = 1410

'设置各列的对齐方式 For i = 0 To 7

flxShow.ColAlignment(i) = 0 Next i

'表头项居中

flxShow.FillStyle = flexFillRepeat flxShow.Col = 0 flxShow.Row = 0 flxShow.RowSel = 1

flxShow.ColSel = flxShow.Cols - 1 flxShow.CellAlignment = 4 flxShow.Rows = 1 '强制跨越整个行选择

flxShow.SelectionMode = flexSelectionByRow End Sub

2、员工考勤查询 (frmCheckInfo2.frm )

员工考勤查询界面

主要代码如下:

Private Sub Command3_Click() Dim strId As String Dim strName As String Dim strDept As String Dim strCheck As String '按工号查询

If Len(Trim(MskId)) = 0 Then strId = \"\" Else

strId = \"and a.emp_id= '\" & MskId & \"'\" End If

'按姓名查询

If Len(Trim(Text1)) = 0 Then strName = \"\" Else

strName = \"and b.emp_name='\" & Trim(Text1) & \"'\"

End If

'按部门查询

If cboDept = \"\" Then strDept = \"\" Else

strDept = \"and c.dept_name='\" & cboDept & \"'\" End If

'按时间查询

If cboCheckYear = \"\" Then

If cboCheckMonth = \"\" Then '年月都为空时 strCheck = \"\"

Else '任意年份的指定月

strCheck = \"and a.check_ym in ('\" & Year(Date) & cboCheckMonth & \"','\" & Year(Date) - 1 & cboCheckMonth & \"')\" End If Else

If cboCheckMonth = \"\" Then '指定年份的任意月

strCheck = \"and a.check_ym in ('\" & cboCheckYear & \"01\" & \"','\" & cboCheckYear & \"02\" & \"','\" & cboCheckYear & \"03\" & \"','\" & cboCheckYear & \"04\" & \"','\" & cboCheckYear & \"05\" & \"','\" & cboCheckYear & \"06\" & \"','\" & cboCheckYear & \"03\" & \"','\" & cboCheckYear & \"07\" & \"','\" & cboCheckYear & \"08\" & \"','\" & cboCheckYear & \"09\" & \"','\" & cboCheckYear & \"10\" & \"','\" & cboCheckYear & \"11\" & \"','\" & cboCheckYear & \"12\" & \"' )\" Else '指定的年月

strCheck = \"and a.check_ym in('\" & cboCheckYear & cboCheckMonth & \"')\" End If End If

'打开一个数据集 strSql = \"select a.emp_id,b.emp_name,c.dept_name,a.check_ym,a.w_days,a.l_nums,a.e_nums,a.h_days,a.n_days from checkin a ,employee b,department c where a.emp_id = b.emp_id and c.dept_id=b.dept_id \" & strCheck & \" \" & strDept & \" \" & strName & \" \" & strId & \" order by b.emp_id\"

rs.Open strSql, dbConn, adOpenForwardOnly, adLockReadOnly flxShow.Rows = 1 If rs.EOF Then Else

'填写数据

Do While Not rs.EOF

flxShow.Rows = flxShow.Rows + 1

flxShow.TextMatrix(flxShow.Rows - 1, 0) = rs.Fields(0).Value For i = 2 To rs.Fields.Count

flxShow.TextMatrix(flxShow.Rows - 1, i) = rs.Fields(i - 1).Value

Next i

rs.MoveNext Loop

End If

Label8 = \"找到\" & flxShow.Rows - 1 & \"条记录\" rs.Close End Sub

Private Sub Form_Load()

Me.Icon = LoadPicture(App.Path & \"\\Graph07.ico\") ' 设置列数

flxShow.Cols = 10 '列标题

flxShow.TextMatrix(0, 0) = \"工号\" flxShow.TextMatrix(0, 1) = \"\" flxShow.TextMatrix(0, 2) = \"姓名\" flxShow.TextMatrix(0, 3) = \"部门\"

flxShow.TextMatrix(0, 4) = \"考勤时间\" flxShow.TextMatrix(0, 5) = \"应出勤\" flxShow.TextMatrix(0, 6) = \"迟到\" flxShow.TextMatrix(0, 7) = \"早退\" flxShow.TextMatrix(0, 8) = \"请假\" flxShow.TextMatrix(0, 9) = \"旷工\"

'设置列宽

flxShow.ColWidth(0) = 1000 flxShow.ColWidth(1) = 0 flxShow.ColWidth(2) = 1200 flxShow.ColWidth(3) = 1200 flxShow.ColWidth(4) = 1200 flxShow.ColWidth(5) = 820 flxShow.ColWidth(6) = 820 flxShow.ColWidth(7) = 820 flxShow.ColWidth(8) = 820 flxShow.ColWidth(9) = 900 '设置各列的对齐方式 For i = 0 To 9

flxShow.ColAlignment(i) = 0 Next i

'表头项居中

flxShow.FillStyle = flexFillRepeat flxShow.Col = 0 flxShow.Row = 0 flxShow.RowSel = 1

flxShow.ColSel = flxShow.Cols - 1 flxShow.CellAlignment = 4 '强制跨越整个行选择

flxShow.SelectionMode = flexSelectionByRow flxShow.Rows = 1

cboCheckYear.AddItem \"\"

cboCheckYear.AddItem Year(Date)

cboCheckYear.AddItem Year(Date) - 1 cboCheckYear.ListIndex = 1 cboCheckMonth.AddItem \"\" For i = 1 To 12 If i < 10 Then

cboCheckMonth.AddItem \"0\" & i Else

cboCheckMonth.AddItem i End If

If i = Month(Date) Then

cboCheckMonth.ListIndex = cboCheckMonth.NewIndex End If Next i '部门

strSql = \"Select dept_id,dept_name from department Order By dept_id\" rs.Open strSql, dbConn, adOpenForwardOnly, adLockReadOnly cboDept.AddItem \"\" Do While Not rs.EOF

cboDept.AddItem (rs.Fields(\"dept_name\").Value) cboDept.ItemData(cboDept.NewIndex) = rs.Fields(\"dept_id\").Value rs.MoveNext Loop rs.Close

cboDept.ListIndex = 0 End Sub

3、系统特色:有较强的数据完整性、安全性设计 1)系统中按钮中基本都设置了错误陷阱语句:

On Error GoTo ERR_CONN ERR_CONN: MsgBox \"请检查输入的数据是否有效\" 所以系统一般不会出现输入导致系统崩溃现象。 例如,图(2.1)中生日年份越界会出现警告:

图2.1

2)系统设置了部分主要信息的错误提示(输入不能为空、姓名中不能出现数字、工号中只能出现数字、生日必须合法输入、出勤次数必须大于缺勤、请假次数总和):

例一:

flag1 = False flag2 = False

For i = 1 To Len(Trim(txtEmp_name.Text))

If Mid(Trim(txtEmp_name.Text), i, 1) >= \"0\" And Mid(Trim(txtEmp_name.Text), i, 1) <= \"9\" Then

flag1 = True

End If Next

For i = 1 To Len(Trim(txtEmp_id.Text))

If Mid(Trim(txtEmp_id.Text), i, 1) < \"0\" Or Mid(Trim(txtEmp_id.Text), i, 1) > \"9\" Then

flag2 = True End If

Next

If Trim(txtEmp_name.Text) = \"\" Then

MsgBox \"姓名不能为空,请重新输入!\警告\" txtEmp_name.Text = \"\" txtEmp_name.SetFocus Exit Sub End If

If flag1 = True Then

MsgBox \"姓名不能含有数字!\警告\" txtEmp_name.Text = \"\" txtEmp_name.SetFocus Exit Sub End If

If flag2 = True Then

MsgBox \"工号只能含有数字!\警告\" txtEmp_id.Text = \"\" txtEmp_id.SetFocus Exit Sub End If

If Not IsDate(Trim(txtbirthday.Text)) Then

MsgBox \"生日必须为合法日期,请重新输入!\警告\"

txtbirthday.Text = \" - - \" txtbirthday.SetFocus Exit Sub End If 例二:

If CInt(Trim(txtW.Text)) < CInt(Trim(txtH.Text)) + CInt(Trim(txtN.Text)) Then MsgBox \"出勤次数过少!\警告\" txtW.Text = \"\" txtW.SetFocus Exit Sub End If 例三:

strSql = \"Select a.emp_id,a.emp_name,b.dept_name from employee a,department b where a.dept_id=b.dept_id \"

rs.Open strSql, dbConn, adOpenForwardOnly, adLockReadOnly

If rs.EOF Then

MsgBox \"没有员工资料,请先输入资料!\警告\" rs.Close

cmdAdd.Enabled = False Exit Sub End If

3)使用触发器,在底层保证数据安全性

功能:使姓名中不能出现数字。

CREATE TRIGGER T_IN ON dbo.employee FOR INSERT,Update AS

IF EXISTS ( SELECT *

FROM employee

WHERE emp_name like '%[0-9]%' )

BEGIN

RAISERROR('错误!姓名中不可出现数字',16,1) ROLLBACK RETURN

END

设计体会与建议:

在起初,我们根本不知道该如何着手,VB是我们接触不多的软件,我们对它的应用,它的语言,它各种代码的使用都不是很了解。因此,我们借了很多的书籍进行恶补,逐渐了解摸索,直到可以简单编程,然后再到连接、编译、运行。

由于是第一次设计数据库系统,我们期间也遇到了种种困难,比如姓名中不能出现数字、存储过程及触发器的使用等。但通过查阅资料等方法,我们最终克服了这些困难。因此要设计出一个比较完整的数据库,就要在摸索中不断的学习,同时也要能过网络资源与图书资源进行强化,这也是我在这次设计过程中最

大的收获。

此管理系统只是进行一些简单的员工管理,还有很多功能可以添加,比如工资发放,福利分配等,由于时间和能力上的原因不能进行对该系统的完善,但是设计中也已一定程度上的考虑了以后的功能扩充,在功能增加的基础上使数据库和前台设计的调整最小化。

这次的学习实践过程中,我充分了解到团队的重要性,我们一组四个人开始并没有很明确的分工,但是大家都共同解决这每一个发现的问题,在辛苦中也品尝着乐趣。同时,我们逐渐掌握了对VB与SQL软件的应用,让我们进一步的提升了自己的知识。

此次课程设计过程中,在收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前!

设计成绩:

教师签名: 年 月

因篇幅问题不能全部显示,请点此查看更多更全内容