项目设计实训报告.docx
《项目设计实训报告.docx》由会员分享,可在线阅读,更多相关《项目设计实训报告.docx(23页珍藏版)》请在冰豆网上搜索。
项目设计实训报告
西安郵電學院
项目设计实训报告书
院系名称
:
继职学院
学生姓名
:
张兰
专业名称
:
计算机网络技术
班级
:
0902班
学号
:
3094202017
时间
:
2011年11月28日至12月9日
实训题目人事管理系统
一、实验目的
综合应用所学的高级语言程序设计知识,自行设计并实现一个较为完整的小型管理信息系统。
通过系统分析、系统设计、编程实现,写实训报告等环节,初步掌握软件系统的设计方法和步骤,提高灵活运用程序语言进行软件开发的技能,提高程序设计水平和分析问题、解决问题的能力。
二、实验内容
(1):
熟悉VisualBasic语言的语法、开发环境和各种内部控件和工具的用法;
(2):
熟悉大型数据库的使用方法,练习使用MSSQLServer建立和修改数据库。
(3):
学习Client/Server模式应用系统的开发。
三、需求分析和概要设计
1、所开发系统的各项功能的详细描述
功能描述:
该信息管理系统可以在Windows2000Server
平台上运行,开发工具采用VisualBasic语言开发。
其工作流程为:
用户可以通过注册登录,进行信息录入、修改和删除的操作。
系统的功能特点及描述:
1用户登录与注册
该功能是系统在被访问之前,要对进入系统的用户进行核对,对系统安全性的保护。
2主界面
(1)主窗体;主窗体是程序操作过程中必不可少的,它是人机交互的重要环节,通过主窗体,用户可以调用系统相关的各子模块,快速掌握本系统的实现功能及操作方法。
当登陆窗体成功以后,用户就会进入主窗体,在主窗体界面中,最上面是菜单栏,里面包含各个项目。
(2)系统管理:
有用户信息进行注销,和用户注册的功能,对系统中用户信息,员工信息,部门管理,薪酬管理等基本信息进行维护,如用户的添加、修改、删除等。
新部门的设立,已有部门的修改等。
(3)员工管理:
对员工的基本信息进行管理,例如新建一个员工信息,对在职员工的详细信息进行查询、修改、删除、统计、排序操作。
查询可以按照员工编号、姓名、电话、部门等多种条件进行查询;统计可以按照员工编号进行统计;排序按照员工编号可以实现升序与降序的功能。
(4)薪酬管理:
对员工的薪酬信息进行管理,例如新建一个员工薪酬信息,对在职员工的基本工资、奖金、加班工资进行查询、修改、删除、统计、排序操作。
查询可以按照员工编号、姓名、电话、部门这些条件进行查询。
(5)辅助项目管理:
其中包括对部门的管理和员工报表的输出;部门管理中可以实现对部门的管理,例如新建一个部门,对部门信息进行查询、修改、删除、统计、排序操作。
查询可以按照部门名称、负责人进行查询。
员工报表实现对员工信息的输出报表,可以帮助企业访问、格式化数据,并把数据信息以可靠和安全的方式呈现给使用者。
(6)帮助:
其中包括对系统的帮助内容与介绍,使用户对本系统有全面的了解。
2.数据流程图
人事档案管理的数据流图
通过对“人事档案管理系统流程图”抽象处理,得到“人事档案管理数据流图”。
E-R图
3、软件的总体架构,即软件包括哪些模块以及各模块之间的联系。
用户管理模块,员工管理模块,薪酬管理模块,分类管理模块,辅助管理模块,帮助模块。
数据库
4、数据库设计,即数据库中包括哪些表,表之间的联系。
在数据库人事管理系统中一共建了四个表分别如下:
Yuangong表
列名
数据类型
备注
职工编号
int4
主键
姓名
char10
民族
char10
身份证号
char50
性别
char10
学历
char10
部门
char20
职称
char20
电话
char50
Email
char50
Salary表
列名
数据类型
备注
职工编号
char10
主键
基本工资
char500
奖金
char500
加班工资
char500
工资合计
char800
Department表
列名
数据类型
备注
部门名称
char20
负责人
char20
部门介绍
char800
(二)运行环境规定
1.设备
运行本软件要在奔腾III以上、内存在256MB以上的计算机。
2.支持软件
本系统只是的操作系统包括:
WindowsXP。
本系统支持的数据库:
SQLServer2000。
本系统的开发工具:
VB6.0
3.控制
本系统通过“用户验证”模块进行用户登录的控制,根据不同用户的权限调用不同的模块。
四、详细设计和实现
1、登陆界面:
此界面用到了textbox控件、label控件、commandbotton控件利用存储过程读取数据判断用户名、密码是否匹配,如果不匹配则返回,匹配则进入下一个页面。
代码如下:
登录
PrivateSubForm1_Load()
OptionExplicit
PublicLoginSucceededAsBoolean
'引用MicrosoftActiveXDataObjects2.6Library
'定义连接对象和记录集
DimconnAsADODB.Connection
DimrsAsADODB.Recordset
'对取消按钮单击事件的响应
PrivateSubcmdCancel_Click()
'设置全局变量为false
'不提示失败的登录
LoginSucceeded=False
Me.Hide
EndSub
'对登录按钮单击事件的响应
PrivateSubcmdOK_Click()
Setconn=NewADODB.Connection
Setrs=NewADODB.Recordset
'建立无源数据库连接
conn.ConnectionString="driver={sqlserver};server=Dell--181;uid=sa;pwd=;Database=人事系统管理"
conn.ConnectionTimeout=50
conn.Open
DimstrAsString
'连接连接对象
Setrs.ActiveConnection=conn
'设置游标类型
rs.CursorType=adOpenDynamic
IfTrim(txtUserName.Text="")Then
MsgBox"用户名不能为空,请重新输入用户名!
",vbOKOnly+vbExclamation,"警告"
txtUserName.SetFocus
Else
'设置查询字符串
str="select*fromlogin_userwherename='"&Trim(txtUserName.Text)&"'"
rs.Openstr
Ifrs.EOF=TrueThen
MsgBox"没有这个用户,请重新输入用户名!
",vbOKOnly+vbExclamation,"警告"
txtUserName.SetFocus
Else
'登录成功,连接主窗口
If(Trim(txtPassword.Text)=Trim(rs.Fields("password")))Then
LoginSucceeded=True
Me.Hide
Form2.Show
Else
MsgBox"密码不正确,请重输入密码!
",,"警告"
txtPassword.SetFocus
SendKeys"{Home}+{End}"
EndIf
EndIf
EndIf
EndSub
注册:
PrivateSubCmd1_Click()
DimmrcAsADODB.Recordset
DimtxtsqlAsString
'判断文本框中是否有内容
IfLen(user1.Text)="0"Then
MsgBox"请输入用户名!
",,"提示"
user1.SetFocus
ExitSub
EndIf
IfLen(user_password.Text)="0"Then
MsgBox"请输入密码!
",,"提示"
user_password.SetFocus
ExitSub
EndIf
IfLen(password_ch.Text)="0"Then
MsgBox"请输入确认密码!
",,"提示"
password_ch.SetFocus
ExitSub
EndIf
IfLen(yanzh.Text)="0"Then
MsgBox"请输入验证码!
",,"提示"
yanzh.SetFocus
ExitSub
EndIf
IfTrim(user_password.Text)<>Trim(password_ch.Text)Then
MsgBox"密码前后输入不一致,请重新输入!
",vbOKOnly+vbExclamation,"系统——提示"
user_password.SetFocus
password_ch.Text=""
ExitSub
EndIf
'判断输入验证码是否等于显示的
IfTrim(yanzh.Text)<>Pic1.TagThen
MsgBox"验证码输入错误,请重新输入!
",vbOKOnly+vbExclamation,"系统——提示"
yanzh.Text=""
yanzh.SetFocus
CallForm_Activate
ExitSub
EndIf
txtsql="Select*fromlogin_userwherename='"&Trim(user1.Text)&"'"'查询是否已存在该用户名
Setmrc=ExecuteSQL(txtsql)
Ifmrc.EOF=FalseThen
MsgBox"该用户名已存在!
",vbOKOnly+vbExclamation,"系统——提示"
user1.SetFocus
user1.Text=""
user_password.Text=""
password_ch.Text=""
yanzh.Text=""
mrc.Close
ExitSub
EndIf
txtsql="Select*fromlogin_user"
Setmrc=ExecuteSQL(txtsql)
mrc.AddNew
mrc.Fields(0)=Trim(user1.Text)
mrc.Fields
(1)=Trim(password_ch.Text)
'调用加密函数,并储存加密后的密码
mrc.update
mrc.Close
MsgBox"用户添加成功!
",vbOKOnly+vbInformation,"系统——提示"
user1.SetFocus
user1.Text=""
user_password.Text=""
password_ch.Text=""
yanzh.Text=""
CallForm_Activate
UnloadForm8
Me.Show
EndSub
系统流程图如下:
系统登录界面(图1.1):
注册界面(图1.2):
在注册中使用了模块,设置变量:
PublicPublicStrAsString
PublicFunctioncnn()AsADODB.Connection
'建立无源数据库连接
Setconn=Server.CreateObject("ADODB.Connection")
conn.ConnectionString="driver={SQLServer};server=Dell--180;uid=sa;pwd=sa;database=人事管理系统"
conn.Open
EndSub
PublicSubMain()
PublicStr="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=人事管理系统;DataSource=DELL--180"
'"Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=人事管理系统;DataSource="&App.Path&"\H:
\人事管理\人事管理_Data=False"
Me.Show
EndSub
PublicFunctionEncodePassWord(ByValPWDAsString)AsString
DimCodePwdAsString
DimOnePwdAsString*1
DimiAsInteger
CodePwd=""'初始化
OnePwd=""
PWD=Trim(PWD)
i=0
IfLen(PWD)=0Then
EncodePassWord=""
ExitFunction
EndIf
Fori=1ToLen(PWD)
OnePwd=Mid(PWD,i,1)'从代加密的密码中取出一位字符进行ASCII变换
CodePwd=CodePwd&Chr(Asc(OnePwd)+(3*i+1))
Next
EncodePassWord=CodePwd
EndFunction
PublicFunctionDecodePassWord(ByValPWDAsString)AsString
DimCodePwdAsString
DimOnePwdAsString*1
DimiAsInteger
CodePwd=""'初始化
OnePwd=""
PWD=Trim(PWD)
i=0
IfLen(PWD)=0Then
DecodePassWord=""
ExitFunction
EndIf
Fori=1ToLen(PWD)
OnePwd=Mid(PWD,i,1)'从代解密的密码中取出一位字符进行ASCII变换
CodePwd=CodePwd&Chr(Asc(OnePwd)-(3*i+1))
Next
DecodePassWord=CodePwd
EndFunction
PublicFunctionExecuteSQL(ByValSQLAsString)AsADODB.Recordset
DimcnnAsNewADODB.Connection
DimrstAsADODB.Recordset
DimsTokens()AsString
PublicStr="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=人事管理系统;DataSource=DELL--180"
OnErrorGoToError_Do
cnn.OpenPublicStr
sTokens()=Split(SQL)
IfInStr("INSERT,DELETE,UPDATE",UCase(sTokens(0)))Then
cnn.ExecuteSQL
Else
Setrst=NewADODB.Recordset
Withrst
.ActiveConnection=cnn
.CursorLocation=adUseClient
.CursorType=adOpenStatic
.LockType=adLockOptimistic
.OpenTrim(SQL)
EndWith
'rst.OpenTrim(SQL),cnn,adOpenStatic,adLockOptimistic
SetExecuteSQL=rst
EndIf
Setcnn=Nothing
Setrst=Nothing
ExitFunction
Error_Do:
DimErr_StrAsString
Err_Str="服务器"&Err.Description
IfMsgBox(Err_Str,vbRetryCancel+vbCritical,"警告")=vbRetryThen
Resume
Else
Setcnn=Nothing
Setrst=Nothing
End
EndIf
EndFunction
2、主窗体(菜单栏):
利用菜单编辑器来实现菜单栏,其中包含七个项目及以下的子项目;界面背景用Image属性进行添加图片。
菜单栏界面如下1.3:
3、员工信息管理
员工信息管理其中包括对员工信息的查询、添加、删除、统计、排序。
页面利用Adodc与数据库的连接,还可用SQL语句进行数据库字段的筛选,在运用DataGrid进行数据绑定如图1.4:
(1)员工信息添加
图1.4
(2)员工信息查询
图1.5
(3)员工信息删除、排序
图1.5
1添加的代码为:
PrivateSubcmdAdd_Click()
IfcmdAdd.Caption="确定"Then
Adodc1.Recordset.update
cmdAdd.Caption="添加记录"
Else
Adodc1.Recordset.AddNew
cmdAdd.Caption="确定"
update.Enabled=True
EndIf
EndSub
2查询的代码为:
PrivateSubcmdFind_Click()
IfTxtfind.Text=""Then
MsgBox"请选择查询项目并输入查询内容!
",48,"提示"
ExitSub
EndIf
Adodc1.Refresh
Adodc1.Recordset.MoveFirst
Adodc1.Recordset.FindCombFind.Text&"="&"'"&Txtfind.Text&"'"
IfAdodc1.Recordset.EOFThen
MsgBox"记录不存在",64,"提示"
EndIf
EndSub
PrivateSubForm_Load()
Adodc1.Visible=False
CombFind.AddItem"姓名"
CombFind.AddItem"职工编号"
CombFind.AddItem"身份证号"
CombFind.AddItem"电话"
EndSub
3删除与排序的代码为:
PrivateSubCmddel_Click()
DimstrResultAsString
strResult=MsgBox("是否真的要删除该员工信息?
",vbYesNoCancel+vbQuestion+vbDefaultButton1,"退出询问")
IfstrResult=vbYesThen
Adodc1.Recordset.Delete
Adodc1.Recordset.MovePrevious
Else
IfstrResult=vbNoThen
EndIf
EndIf
EndSub
PrivateSubLabel7_Click()
Adodc1.Refresh
Adodc1.Recordset.MoveFirst
Adodc1.CommandType=adCmdText
Adodc1.RecordSource="select*from员工资料orderby职工编号asc"
Adodc1.Refresh
EndSub
PrivateSubLabel8_Click()
Adodc1.Refresh
Adodc1.Recordset.MoveFirst
Adodc1.CommandType=adCmdText
Adodc1.RecordSource="select*from员工资料orderby职工编号desc"
Adodc1.Refresh
EndSub
3、分类管理
分类管理中运用Option控件、Adodc控件可以实现男女性别分类显示。
页面利用Adodc与数据库的连接,在运用DataGrid进行数据绑定;
主要代码如下:
DimcondstrAsString
condstr=""
IfOption1.Value=TrueThen
Ifcondstr=""Then
condstr="性别='男'"
Else
condstr=condstr+"and性别='男'"
EndIf
EndIf
IfOption2.Value=TrueThen
Ifcondstr=""Then
condstr="性别='女'"
Else
condstr=condstr+"and性别='女'"
EndIf
EndIf
Ifcondstr<>""Then'有条件
Adodc1.RecordSource="select*from员工资料where"+condstr
Adodc1.CommandType=adCmdText
Adodc1.Refresh
Else'无条件
Adodc1.RecordSource="select*from员工资料"
Adodc1.CommandType=adCmdText
Adodc1.Refresh
EndIf
图1.7
4、薪酬查询;
图1.8
5、辅助项目管理:
图1.9图2.0
报表:
添加DataEnviroment和DataReport设计器在数据报表中设