资源描述
江 西 理 工 大 学
本 科 数 据 库 课 程 设 计(论文)
题 目:工资管理系统
学 院:信息工程学院
专 业:
班 级:
学 生:
学 号:
指导教师:
目 录
第一章 需求分析……………………………………………3
1.1数据录入功能…………………………………………………3
1.2数据查询功能…………………………………………………3
1.3系统功能图……………………………………………………4
第二章 概念结构设计…………………………………………4
2.1概念设计………………………………………………………4
2.2逻辑设计………………………………………………………6
2.3物理设计………………………………………………………7
2.4数据完整性设计………………………………………………10
第三章 开发工具及平台……………………………………11
3.1开发工具………………………………………………………11
3.2开发平台………………………………………………………11
3.3数据库连接方式………………………………………………11
第四章 关键代码和主要界面………………………………12
4.1连接数据库代码…………………………………………12
4.2添加代码…………………………………………………12
4.3删除代码…………………………………………………15
4.4修改代码…………………………………………………15
4.5登陆界面…………………………………………………17
第一章 需求分析
本系统实现以下主要功能
1.1数据录入功能
主要任务是对各种工资信息进行日常的管理,如工资信息的输入、查询、修改、增加、删除,迅速准确地完成各种工资信息的统计计算和汇总。
1.2数据查询功能
系统需要提供以下查询功能:
1)员工津贴信息情况、保留工资、综合补贴、薪级工资等信息。
2)员工工资基本情况:年、月、姓名、部门、基本工资、医疗金、失业金、应发工资、实发工资等。
1.3系统功能图
表1-3 功能图
工资管理系统
员工信息
工资信息
工资汇总
工资查询
系统维护
资料输入
员工查询
工资总表
工资查询
基本工资
工资浏览
员工增删
工龄工资
岗位工资
删除用户
增加用户
第二章 概念结构设计
2.1概念设计
分析前面的系统功能要求,需要一个表来存储和管理员工信息,使系统能够接受员工原始的各项数据,以实现数据录入、查询和统计员工信息等功能。员工是本系统的第一个实体。
为了能实现查询和统计部门内员工情况等功能,必须要有一个表来存储和管理所有部门的信息。部门是本系统的第二个实体。
工资是以员工工作情况来制定的,需要建立一个表来记录各种工资、津贴、扣款的信息。它主要为各种查询和统计功能提供工资数据,工资是第三个实体。
据此可画出E-R图如下:
表2.1 E—R图
部门
工作
员工
获得
工资
N
M
M
部门名称
负责人
人数
公积金
岗位津贴
保留工资
工会费
实发工资
应发小计
综合补贴
职岗津贴
薪级工资
失业金
养老保险
医疗金
员工号
工龄
部门名称
职务等级
性别
姓名
年龄
1
2.2逻辑设计
将数据库的概念模型转换为关系模型:
实体转换成的关系模式有:
员工(工号,姓名,性别,年龄,部门名称,工龄,职务等级)
部门(部门名称,部门负责人,部门人数)
获得(工号,姓名)
工资(工号,岗位津贴,保留工资,职岗津贴,综合补贴,薪级工资,应发小计,养老保险,医疗金,失业金,公积金,工会费,实发工资)
带下划线的属性为各个关系模式的外码,字体为粗体的属性为各关系模式的主码。
关系范式:工资管理系统∈1NF 每个属性均不可再分。
2.3物理设计
1.数据库与数据表设计
①员工信息数据表定义
列名
数据类型
长度
允许空
员工号
Varchar
20
姓名
Varchar
50
√
性别
Varchar
2
工龄
Char
10
部门名称
Varchar
50
√
年龄
Char
10
√
职务等级
Varchar
50
√
其中员工号是主键,唯一标识。
部门名称是外键。员工号将记录员工的编号,在员工信息表中增加这一列时,虽然增加了数据冗余,但可以在查询每个员工信息时,提高系统的性能。因为员工信息表的记录数相对固定,相比之下,增加这个冗余的列对于整个系统来说是有利的。通过它,系统将引用到工资信息。
②部门信息数据表定义
列名
数据类型
长度
允许空
部门名称
Varchar
50
负责人
Varchar
50
√
人数
Int
√
其中部门名称是该表的主键,唯一标识一个部门
③工资数据表定义
列名
数据类型
长度
允许空
保留工资
Float
10
√
岗位津贴
Float
10
√
职岗津贴
Float
10
√
综合补贴
Float
10
√
薪级工资
Float
10
√
应发小计
Float
10
√
养老保险
Float
10
√
医疗金
Float
10
√
失业金
Float
10
√
公积金
Float
10
√
工会费
Float
10
√
实发工资
Float
10
√
员工编号
Varchar
20
其中员工编号作为该表的主键,唯一标识,保证信息表的数据的参照完整性。
2.4数据完整性设计
1)给每个表实施主键约束。
①主键约束、非空值约束
员工:员工号为主键,所以此项非空。
部门:部门名称为主键所以此项非空。
工资:员工编号为主键,所以此项非空。
2)实施check约束
员工表中建立一个检查约束,即员工性别不是“男”就是“女”。
第三章 开发平台及工具
3.1开发工具:
Dreamweaver 8
3.2开发环境的选择:
Microsoft access 2003以及IIS信息服务
在使用Dreamweaver 8作为工具的条件下,运用VB Script语言 、Html标签、css页面布局,以Microsoft access 2003作为后台数据库,在IIS环境下编写并测试运行网页。
3.3数据库连接方式:
本系统使用的是ADO 中OLE DB Connection 方式连接数据库。
OLE DB是通向不同的数据源的低级应用程序接口。OLE DB不仅包括微软资助的标准数据接口开放数据库连通性(ODBC)的结构化查询语言(SQL)能力,还具有面向其他非SQL数据类型的通路。OLE DB中的对象主要包括数据源对象、阶段对象、命令对象和行组对象。
第四章 关键代码和主要界面
4.1连接数据库代码
<%
On error resume next
dim DBPath,connstr,conn
DBPath="Database/FlexMenu.mdb" '动态链接路径
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(DBPath)
set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr
%>
4.2添加代码
<%
Set excconn=Server.CreateObject("ADODB.Connection")
excStrConn= "Driver={Microsoft Excel Driver (*.xls)};DBQ="&request("file")
excconn.Open excStrConn
'查询excel语句
Set excrs = Server.CreateObject("ADODB.Recordset")
excSql="select * from [Sheet1$]"
excrs.Open excSql,excconn,2,2
set rs=server.createObject("ADODB.Recordset")
do while Not excrs.EOF
flat = 0
sql="select * from namesfz where name='"&excrs(0)&"'"
set rs=server.createObject("ADODB.Recordset")
rs.open sql,conn,1,1
if not rs.EOF then '此用户存在
'response.write rs("id")
'if not rs.eof then
'j=0
sql1="select * from jhgz where name='"&rs("name")&"'"
set rs1=server.CreateObject("adodb.recordset")
rs1.open sql1,conn,1,3
do while Not rs1.EOF
if year(date())= year(rs1("time")) and month(rs1("time"))=month( year(date())&"-"&request("month_gz")&"-"&day(date())) then
flat = 1
for t_i=1 to 19
rs1(t_i+1) = excrs(t_i)
next
rs1("time") =( year(date())&"-"&request("month_gz")&"-"&day(date()))
rs1.update
'response.write rs1(2)
' response.write "<script>alert('更新成功!');location.href='gzmanage.asp';<'/script>"
end if
rs1.movenext
loop
if flat<>1 then
rs1.addnew
for t=0 to 19
rs1(t+1)=excrs(t)
next
rs1("time") =( year(date())&"-"&request("month_gz")&"-"&day(date()))
rs1.update
end if
rs1.close
set rs1=nothing
' response.write "<script>alert('添加成功!');location.href='gzmanage.asp';</'script>"
else '此用户不存在
sql="select * from cunzainame "
set
jhgz_rs=server.createObject("ADODB.Recordset")
jhgz_rs.open sql,conn,1,3
jhgz_rs.addnew
jhgz_rs("name")=excrs(0)
jhgz_rs.update
' response.write jhgz_rs("name")
jhgz_rs.close
end if '
rs.close
excrs.MoveNext
Loop
set rs=nothing
set jhgz_rs=nothing
excrs.close
set excrs=nothing
excConn.close
set excConn=nothing
set cunzai_rs=server.createObject("ADODB.Recordset")
cunsql="select * from cunzainame "
cunzai_rs.open cunsql,conn,1,1
%>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<% do while Not cunzai_rs.EOF %>
<tr>
<td><%= cunzai_rs(1)%></td>
<td><%= cunzai_rs(2)%></td>
</tr>
</table>
<%
cunzai_rs.MoveNext
loop
response.write "以下用户没有注册!数据没有存入数据库!"
cunzai_rs.close
set rss=server.createobject("adodb.recordset")
sql="delete from cunzainame "
rss.open sql,conn,1,1
set rss=nothing
conn.close
set conn=nothing
4.3删除代码
<%
dim UserID,sql,rs
UserID=trim(Request("ID"))
idArr=split(UserID)
for i = 0 to ubound(idArr)
sql="delete from jhgz where ID="&clng(idarr(i))
conn.Execute sql
next
rs.close
conn.close
set rs=nothing
set conn=nothing
response.redirect "gzmanage.asp"
%>
4.4修改代码
<%
if request("act")="xg" then
sql1="select * from jhgz where ID="&request("ID")
set rs1=server.CreateObject("adodb.recordset")
rs1.open sql1,conn,1,3
for t=2 to 20
if request("gz"&t)<>"" then
rs1(t)=request("gz"&t)
end if
next
rs1(22) = request("gz21")
rs1(23) = request("gz22")
rs1(24) = request("gz23")
rs1.update
' response.write rs1("sex")
rs1.close
set rs1=nothing
response.write "<script>alert(' 修改成功!');location.href='gzmanage.asp';</script>"
else
set rs=server.CreateObject("adodb.recordset")
sql="select * from jhgz where ID="&request("ID")
rs.open sql,conn,1,1
%>
4.5登陆界面
第 17 页
展开阅读全文