学校内部管理系统.docx
《学校内部管理系统.docx》由会员分享,可在线阅读,更多相关《学校内部管理系统.docx(29页珍藏版)》请在冰豆网上搜索。
学校内部管理系统
摘要
学校工资管理系统是针对学校工资管理业务进行计算机处理而开发的应用软件。
该系统由系统维护、输入、查询、修改、统计等子模块组成,功能基本涵盖普了学校工资管理业务范围。
学校应用本系统后,可以有效的提高工资管理水平。
本文从市场调查、需求分析、开发平台选择、系统模块建立、数据库设计、功能模块编程实现及软件测试等方面阐述了本应用系统的设计过程。
为便于说明,文中绘制了系统模块图,数据流程图,用例图,类图和部分界面图和主要的源程序代码清单。
关键词:
学校工资管理 系统维护 数据汇总 管理系统 软件开发 VB
第一章.需求分析
1.问题与背景
在我国,管理信息系统是计算机应用最广泛的领域之一。
随着我国经济建设突飞猛进,管理科学化与管理手段的现代化已经提到非常重要的地位。
企、事业单位为了提高自身的管理水平和竞争能力,纷纷投入人力物力,开发适合本单位需求的管理信息系统。
中小企业与行政事业单位建立的管理信息系统尤如雨后春笋,一个新的开发和管理信息系统的热潮正在掀起,为此我计划设计:
工资管理系统。
它可以大大减少人力,使人们摆脱了原有系统的局限性,只要在电脑上轻轻地点几下就可以完成查询、输入、修改、输出等功能。
非计算机专业的人员也可以熟练地进行操作。
对于大部分企业来说,员工的工资数据变化都不大。
使用手工管理工资时,需要抄写大量重复的数据。
使用这种手工方式对工资进行管理有许多不便,因此有必要开发一种工资管理系统以方便地管理员工的工资信息,提高管理的效率,使企业员工工资实现信息化管理。
因此,这个工资管理系统便应运而生了。
利用本系统,人们可以方便地查看职工的基本信息和工资情况,也可以组合查询某系、某部、某处的基本信息和工资情况。
高效的完成了原来需要很复杂才能完成的手续。
这将会给学校的会计人员带来了极大的方便.
2.解决方案
根据实际需要,建立一个完善的计算机教工工资管理系统,改变原来落后的管理方式,这个系统已达到减少工作量以及人员的数量,提高工作效率和速度的目的.为实现此目的提出以下目标:
1技术可行性使用现有的技术来实现这个系统,即通过可视化窗口VisualBasic6.0来做系统的前台并利用其提供的数据控件来连接到数据库,从而实现整系统的功能。
2经济可行性该系统的经济效益要远大于它的开发成本。
3操作可行性基本的教工信息的录入、查询、更新、删除;工资信息的设置、查询;专项数据的修改;注册新用户、管理员密码的修改等都能满足用户的需求。
第二章可行性分析
2.1经济可行性分析
经济可行性该系统的经济效益要远大于它的开发成本。
主要是对项目的经济效益进行评价,一方面是支出的费用,其中包括设备购置费,软件开发费,管理和维护费,人员工资和培训费等。
另一方面是取得的收益中可以用钱来衡量的那部分(收益的另一部分难以用钱来表示)。
2.2技术可行性分析
技术上的可行性分析主要分析现有技术条件能否顺利完成开发工作,软硬件配置能否满足开发者需要等,这一特点非常适合计算机的特点,发挥计算机的数据处理速度快,准确率高的优势,现代计算机硬件和软件技术的飞速发展,为系统的建设提供了技术条件。
由于对企业工资管理系统这一类的企业财务系统进行开发已有一定的时期,有很多成功的实例,技术基础也已经非常雄厚,因而技术上的准备应该不成问题。
2.3社会可行性分析
社会可行性有时也称为操作可行性,主要论证新系统在企业或机构开发和运行的可能性以及运行后可能一起的对企业或机构的影响,即组织内外是否具备接受和使用新系统的条件。
在当前信息技术飞速发展的大环境下,计算机技术和软件技术的更新使人们完全有可能也有能力采用这样先进的管理技术。
在某种意义上,信息与科技在现代化建设中显现出越来越重要的地位。
管理方面的信息化与科学化,已成为现代化生活水平步入高台阶的重要标志。
好的管理系统对提高人们的生活效益是极为有益的。
2.4管理可行性分析
主要是管理人员对开发信息系统是否支持,现有管理制度和方法是否科学,规章制度是否齐全,原始数据是否正确等,教职工工资管理系统比较完善的规章制度和管理方法为系统的建设提供了保障。
操作可行性基本的教工信息的录入、查询、更新、删除;工资信息的设置、查询;专项数据的修改;注册新用户、管理员密码的修改等都能满足用户的需求。
2.4系统优势
1.可以方便对教工信息进行录入、查询、修改、删除;
2.只需一到二名管理员即可操作系统,节省大量人力;
3.可以迅速查到所需要的教工信息;
4.可以方便注册新用户和修改密码;
5.可以方便对专项数据进行修改。
第三章详细设计
1.系统功能模块:
2.数据流图:
0层DFD
一层DFD
二层DFD加工1.0
二层DFD加工2.0分解
二层DFD加工3.0的分解
3.数据字典:
数据项:
数据项名:
工号
别名:
GH
简述:
所有职工的编号
类型:
文本
取值范围及含义:
系部内编号
数据项名:
姓名
别名:
XM
简述:
所有职工的姓名
类型:
文本
数据项名:
部门号
别名:
BM
简述:
职工所属的部门
类型:
数字
取值范围及含义:
具体的部门名称
数据项名:
职位
别名:
job
简述:
职工所在该部门的具体职位
类型:
数字
取值范围及含义:
具体的职位名称
数据存储:
文件名:
部门信息表
别名:
部门表
简述:
存放部门基本信息
组成:
部门号+部门名+描述信息
组织方式:
索引文件,以部门号为关键字
查询要求:
要求能够立即查询
文件名:
职位信息表
别名:
职称表
简述:
存放员工和相应的补贴
组成:
职位+姓名+补贴
组织方式:
索引文件,以职位为关键字
查询要求:
要求能够立即查询
文件名:
奖罚信息表
别名:
工资奖罚信息表
简述:
存放职工工资奖罚信息
组成:
工号+姓名+阶级+记录人员+记录时间+记录
组织方式:
索引文件,以工号为关键字
查询要求:
要求能够立即查询
数据流:
数据流名:
职工基本信息
别名:
无
简述:
职工的各项属性信息
来源:
各系部
去向:
加工1.1“职工信息的输入并整理存储”
组成:
工号+姓名+性别+所属系部+职位
数据流名:
出勤工资,奖金,扣款清单
别名:
无
简述:
人事处的对职工出勤信息的整理结果
来源:
人事处
去向:
加工2.1“职工工资信息生成”
组成:
出勤工资+奖金+扣款清单
数据流名:
职工工资信息
别名:
无
简述:
生成的职工工资信息
来源:
加工2.1
去向:
加工2.2“财务处职工工资信息整理发送”
组成:
工号+姓名+基本工资+原始奖金+缺勤金+实际工资
数据流名:
职工工资条
别名:
无
简述:
针对系部的工资条
来源:
加工2.2
去向:
各系部
组成:
工号+姓名+基本工资+原始奖金+缺勤金+实际工资
4.类图:
5.用例图
6.主要数据表:
各部门表:
DeptInfo
部门编号
部门名称
描述
4
财务部
5
人事部
6
行政部
9
系部
职位表:
DutyType
职务
职务名称
补贴
0
无
0
1
项目经理
1000
2
经理
2000
3
总经理
3000
4
总裁
4000
5
12
500
职工信息表:
EmployeeInfo
员工编号
员工姓名
性别
身份证
籍贯
户口所在地
婚姻状况
出生年月
民族
政治面貌
文化程度
所在部门编号
固定电话
手机
电子邮件
现在居住地
在职状况
职务
职称
工龄
工资级别
33
钱小二
男
12
1990-7-11
9
2
2
1
4
5
456
r
女
123456789123456789
aertgedrtgsertg
eetrgergy
未婚
2005-7-26
满族
团员
大专
6
1234567
12345678900
@
tdyiked
7
3
3
45
5
5
张三
男
12
夺标
已婚
1989-1-1
汉族
4
456
4
1
3
1
1
3
6
李四
女
546
已婚
1989-1-1
本科
5
65
1
0
1
14
4
7
王五
女
231
离异
2010-5-23
6
4657
1
2
0
0
2
奖惩信息表:
RewardInfo
员工编号
奖罚类别
记录人员
记录时间
备注
5
-1
收到发货
2012-5-28
12
1
1905-6-5
33
1
李四
2012-5-29
2
2
super
12
2
1905-6-5
1
3
zhang
2000-1-1
556
3
6
2005-7-11
工资信息表:
WageInfo
员工编号
员工姓名
所在部门编号
基本工资
岗位工资
公积金
奖金
补贴
工龄工资
职称工资
保险费
罚金
个人所得税
应发工资
应扣工资
实发工资
231
sad
2
500
600
100
0
2000
30
0
200
0
424
3130
724
2406
32
sdf
2
800
600
100
0
0
560
1000
200
0
399
2960
699
2261
33
钱小二
9
1200
600
100
300
2000
40
200
200
0
606
4340
906
3434
456
r
6
1200
400
100
0
3000
450
1000
200
0
1150
6050
1450
4600
5
村
5
800
800
0
0
3000
10
200
0
100
706.5
4810
806.5
4003
6
要
6
0
0
0
0
0
0
0
0
0
0
0
0
65
63
41
2
0
0
0
0
0
0
0
0
0
0
0
0
0
7
二
7
0
0
0
0
0
0
0
0
0
0
0
0
854
jk
dsa
2
500
600
0
200
2000
0
200
0
0
525
3500
525
2975
5.主要功能代码及界面:
1.)用户登录
'定义重试次数
PubliccounterAsInteger
'窗体装载事件
PrivateSubForm_Load()
'初始化重试次数
counter=0
EndSub
'单击确定按钮
PrivateSubcmdOK_Click()
'定义user变量,用于存储用户名
DimUserAsString
'给user赋值
User=Trim(txtUser.Text)
'定义pwd变量,用于存储密码
DimpwdAsString
'给密码赋值
pwd=Trim(txtPasswd.Text)
'没有输入用户名
IfTrim(User)=""Then
MsgBox"请输入用户名",vbInformation,"信息提示"
txtUser.SetFocus
ExitSub
EndIf
'判断用户是否存在
IfNotobjPasswd.IsExistUser(User)Then
counter=counter+1
Ifcounter<3Then
MsgBox"用户名不存在,请重新输入!
",vbOKOnly+vbInformation,_
"用户名错误"
txtUser.Text=""
txtPasswd.Text=""
txtUser.SetFocus
ExitSub
Else
MsgBox"重试次数已到,不能再输入用户名和密码,即将退出系统!
",_
vbOKOnly+vbExclamation,"用户名错误"
DBDisconnect
End
ExitSub
EndIf
EndIf
'判断密码是否正确
objPasswd.GetInfo(User)
IfobjPasswd.Passwd<>pwdThen
counter=counter+1
Ifcounter<3Then
MsgBox"用户或密码错误,请重新输入!
",vbOKOnly+vbInformation,_
"密码错误"
txtUser.Text=""
txtPasswd.Text=""
txtUser.SetFocus
ExitSub
Else
MsgBox"重试次数已到,不能再输入用户名和密码,即将退出系统!
",_
vbOKOnly+vbExclamation,"密码错误"
DBDisconnect
End
ExitSub
EndIf
EndIf
'登录成功,将当前用户的信息保存在objCurPasswd中
objCurPasswd.User=objPasswd.User
objCurPasswd.UserType=objPasswd.UserType
'关闭自己
UnloadMe
frmMain.Show
'当重新登录时用到
frmMain.Enabled=True
EndSub
'单击退出按钮
PrivateSubcmdExit_Click()
DBDisconnect
End
EndSub
2.)用户信息
'窗体装载事件
PrivateSubForm_Load()
'设置ADO控件ADOBC的连接字符串
DimtmpRecordSourceAsString
'添加状态时的属性设置
DimSQLStmtAsString
'所在部门
SQLStmt="SELECT*FROMDeptInfo"
AddcbocboDept,SQLStmt,1
'在职状态
SQLStmt="SELECT*FROMMissionType"
AddcbocboMissionStatus,SQLStmt,1
'职务
SQLStmt="SELECT*FROMDutyType"
AddcbocboDuty,SQLStmt,1
'职称
SQLStmt="SELECT*FROMPostType"
AddcbocboPost,SQLStmt,1
'工资级别
SQLStmt="SELECT*FROMLevelType"
AddcbocboLevel,SQLStmt,1
EndSub
PrivateSubForm_Activate()
IfNotIsAddThen
cboDept.Text=frmEmpManage.adoEmployeeInfo.Recordset.Fields
(2).Value
cboMissionStatus.Text=frmEmpManage.adoEmployeeInfo.Recordset.Fields(12).Value
cboDuty.Text=frmEmpManage.adoEmployeeInfo.Recordset.Fields(13).Value
cboPost.Text=frmEmpManage.adoEmployeeInfo.Recordset.Fields(14).Value
cboLevel.Text=frmEmpManage.adoEmployeeInfo.Recordset.Fields(16).Value
EndIf
EndSub
'确定按钮
PrivateSubcmdOK_Click()
IfTrim(txtENo.Text)=""Then
MsgBox"请输入员工编号",vbInformation,"信息提示"
ExitSub
ElseIfNotIsNumeric(Trim(txtENo.Text))Then
MsgBox"员工编号只能为数字",vbInformation,"信息提示"
ExitSub
EndIf
IfTrim(txtName)=""Then
MsgBox"请输入员工姓名",vbInformation,"信息提示"
ExitSub
EndIf
IfTrim(cboDept.Text)=""Then
MsgBox"请选择员工所在的部门",vbInformation,"信息提示"
ExitSub
EndIf
IfTrim(txtIDCard.Text)=""Then
MsgBox"请输入身份证号",vbInformation,"信息提示"
ExitSub
ElseIfNotIsNumeric(Trim(txtIDCard.Text))Then
MsgBox"身份证号只能为数字",vbInformation,"信息提示"
ExitSub
EndIf
IfTrim(cboMissionStatus.Text)=""Then
MsgBox"请选择在职状态",vbInformation,"信息提示"
ExitSub
EndIf
IfTrim(cboDuty.Text)=""Then
MsgBox"请选择职务",vbInformation,"信息提示"
ExitSub
EndIf
IfTrim(cboPost.Text)=""Then
MsgBox"请选择职称",vbInformation,"信息提示"
ExitSub
EndIf
IfTrim(txtServiceLength.Text)=""Then
MsgBox"请输入工龄",vbInformation,"信息提示"
ExitSub
ElseIfNotIsNumeric(Trim(txtServiceLength.Text))Then
MsgBox"工龄只能为数字",vbInformation,"信息提示"
ExitSub
EndIf
IfTrim(cboLevel.Text)=""Then
MsgBox"请选择工资级别",vbInformation,"信息提示"
ExitSub
EndIf
'员工编号是否重复
IfIsAddThen
IfobjEmployeeInfo.IsExistENo(Trim(txtENo.Text))Then
MsgBox"此员工编号已经存在,请再选择另一个编号",vbInformation,"员工编号重复"
ExitSub
EndIf
EndIf
'往objEmployeeInfo里添加数据
objEmployeeInfo.ENo=Trim(txtENo.Text)
objEmployeeInfo.Name=Trim(txtName.Text)
objDept.GetInfoTrim(cboDept.Text)
objEmployeeInfo.DeptID=objDept.DeptID
objEmployeeInfo.Sex=Trim(cboSex.Text)
objEmployeeInfo.Folk=Trim(cboFolk.Text)
objEmployeeInfo.Marry=Trim(cboMarry.Text)
objEmployeeInfo.Education=Trim(cboEducation.Text)
objEmployeeInfo.Party=Trim(cboParty.Text)
IfIsNull(dtpBirthday.Value)Then
objEmployeeInfo.Birthday=Now
Else
objEmployeeInfo.Birthday=dtpBirthday.Value
EndIf
objEmployeeInfo.IDCard=Trim(txtIDCard.Text)
objEmployeeInfo.Residence=Trim(txtResidence.Text)
objEmployeeInfo.NativePlace=Trim(txtNativePlace.Text)
objMissionType.GetInfoTrim(cboMissionStatus.Text)
objEmployeeInfo.MissionStatus=objMissionType.MissionStatus
objDutyType.GetInfoTrim(cboDuty.Text)
objEmployeeInfo.Duty=objDutyType.Duty
objPostType.GetInfoTrim(cboPost.Text)
objEmployeeInfo.Post=objPostType.Post
objEmployeeInfo.ServiceLength=Trim(txtServiceLength.Text)
objLevelType.GetInfoTrim(cboLevel.Text)
objEmployeeInfo.Levels=objLevelType.Levels
objEmployeeInfo.Tele=Trim(txtTele.Text)
objEmployeeInfo.Mobile=Trim(txtMobile.Text)
objEmployeeInfo.Email=Trim(txtEmail.Text)
objEmployeeInfo.Address=Trim(txtAddress.Text)
IfIsAddThen
'员工插入数据
objEmployeeInfo.Insert
'向WageInfo表插入数据
objWageInfo.Init
objWageInfo.ENo=Trim(txtENo.