1、数据库课程设计报告数据库课程设计报告课题名称:工资管理系统指导教师:魏善沛专业班级: 14级软件工程一班小组成员:学号姓名(组长) 20144612 冯婷婷 20144619 李建华(组长) 20144630 杨美梅 20144632 张艺瀚 20144633赵飞完成日期:2016 年 6 月 8 日目录1。 设计目的12. 开发环境13。 系统设计13。1需求分析13。1。1数据需求13。1。2事物需求23。2系统流程图24。 数据库设计44。1数据流图44。2数据字典54.2。1数据结构描述54。2.2数据流的描述54。2.3主要数据存储的定义64。3概念模型设计(E-R图)74。4逻辑结
2、构设计114.4。1关系模式114。4.2基本表125. 应用程序设计135。1主窗体模块135.2员工信息模块145.3部门信息模块15结论16参考文献16附录A(源代码)16SQL亮点语句:16源代码:17评分表:371. 设计目的数据库原理概述及应用课程设计是软件工程专业集中实践性环节之一,是学习完数据库原理概述及应用课程后进行的一次全面的综合练习。其目的在于加深对数据库基础理论和基本知识的理解,掌握使用数据库进行软件设计的基本方法,提高运用数据库解决实际问题的能力,最终实现对于给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(
3、信息要求和处理要求).同时,此次设计对于同学将来的毕业设计和具体工作实践将有重要的意义。针对于本次设计的课题工资管理系统,通过E-R图,逻辑结构、物理结构、概念结构三方面分析该系统的实体、属性、以及之间的联系,从各个方面全面了解分析课题,同时,也更掌握了基础知识,深入了解各部分含义。2. 开发环境SQL Server 2005 ,JDK1。8,Eclipse EE版本。3. 系统设计3.1需求分析3。1。1数据需求工资管理系统系是为了更好地实现工资各种信息的管理以及各种信息的安全性管理。本系统主要对查看员工的各种工资信息需求所设计的,可以很好的管理数据。本系统的主要功能由以下几个部分组成:系统
4、功能的基本要求: 员工每个工种基本工资的设定. 加班津贴管理,根据加班时间和类型给予不同的加班津贴。 按照不同工种的基本工资情况、员工的考勤情况产生员工的每月的月工资。 员工年终奖金的生成,员工的年终奖金计算公式(员工本年度的工资总和津贴的总和)/12. 企业工资报表。能够查询单个员工的工资情况、每个部门的工资情况、按月的工资统计,并能够打印。 各类单项和多条件组合查询. 导出查询和统计的结果,形成Excel表.数据库要求:在数据库中至少应该包含下列数据表: 员工考勤情况表。 员工工种情况表,反映员工的工种、等级,基本工资等信息. 员工津贴信息表,反映员工的加班时间,加班类别、加班天数、津贴情
5、况等. 员工基本信息表。 员工月工资表。3.1。2事物需求(1)在员工信息管理部分,要求:A可以查询员工信息B可以对员工信息进行添加删除的操作(2) 在部门信息管理部分,要求: A.可以查询部门信息B。可以对部门信息进行添加删除的操作3.2系统流程图图3.2 系统流程图4. 数据库设计4。1数据流图图4。1数据流图4。2数据字典4。2.1数据结构描述名称:员工含义说明:员工信息组成结构:员工编号+员工姓名+性别+所属部门+职称名称:工资含义说明:工资信息组成结构:员工编号+基本工资+岗位工资+津贴工资+扣除薪酬+实发工资名称:部门含义说明:部门信息组成结构:部门编号+部门名称+部门人数4.2。
6、2数据流的描述数据流名称:员工信息添加简述:新员工信息录入数据流来源:公司管理者数据流去向:员工信息数据流组成:员工编号+员工姓名+性别+所属部门+职称数据流名称:员工信息修改简述:员工信息错误或员工调动数据流来源:公司管理者数据流去向:员工信息数据流组成:员工编号+员工姓名+性别+所属部门+职称数据流名称:员工信息删除简述:员工离职数据流来源:公司管理者数据流去向:员工信息数据流组成:员工编号+员工姓名+性别+所属部门+职称数据流名称:工资添加简述:公司对工资进行添加数据流来源:公司管理者数据流去向:工资信息数据流组成:员工编号+基本工资+岗位工资+津贴工资+扣除薪酬+实发工资数据流名称:工
7、资修改简述:公司对工资进行修改数据流来源:公司管理者数据流去向:工资信息数据流组成:员工编号+基本工资+岗位工资+津贴工资+扣除薪酬+实发工资4。2。3主要数据存储的定义存储名称:员工记录输入:员工基本信息输出:员工所有信息数据结构:员工编号+员工姓名+性别+所属部门+职称存储名称:部门记录输入:部门基本信息输出:部门所有信息数据结构:部门编号+部门名称+部门人数存储名称:工资记录输入:员工工资信息输出:员工所有工资信息数据结构:员工编号+基本工资+岗位工资+津贴工资+扣除薪酬+实发工资存储名称:考勤记录输入:员工考勤信息输出:员工所有考勤信息数据结构:员工编号+迟到次数+缺席次数存储名称:津
8、贴记录输入:员工津贴信息输出:员工所有津贴信息数据结构:员工编号+加班时间+加班天数+加班类型+津贴资金4.3概念模型设计(ER图)图4。3.1员工信息E-R图图4。3。2部门信息ER图图4。3。3基本工资E-R图图4。3.4考勤情况ER图图4.3.5津贴情况ER图图4。3.6工种情况ER图图4.3。7月工资信息ER图图4。3.8工作管理系统总ER图4。4逻辑结构设计4。4。1关系模式员工信息(员工编号,员工姓名,性别,所属部门,职称)部门信息(部门编号,部门名称,部门人数)基本工资(工资级别,基本工资,岗位工资)考勤信息(员工编号,迟到次数,缺席次数)津贴信息(员工编号,加班时间,加班天数,
9、加班类型,津贴资金)工种情况(工资级别,岗位工资)工资信息(员工编号,基本工资,岗位工资,津贴工资,扣除薪酬,实发工资)4.4.2基本表表1员工基本信息表(dbo.employee)员工编号e_idvarchar(8)主键,不允许重复员工姓名e_namevarchar(8)性别e_sexvarchar(2)所属部门b_idvarchar(4)外键职称j_namevarchar(12)表2部门信息表(dbo。brank)部门编号b_idvarchar(8)主键,不允许重复部门名称b_namevarchar(20)部门人数b_numberint表3基本工资表(dbo。basesalary)工资级别
10、bs_levvarchar(2)主键,不允许重复基本工资bs_salnumeric(8, 2)表4考勤信息表(dbo.check)员工编号e_idvarchar(8)主键,不允许重复迟到次数latetimesnumeric(3, 0)缺席次数offtimesnumeric(3, 0)表5津贴信息表(dbo.bonusinformation)员工编号e_idvarchar(8)主键,不允许重复加班时间etr_timenumeric(8, 1)加班天数etr_daynumeric(2, 1)加班类型etr_typevarchar(8)津贴资金bonus_salnumeric(8, 2)表6工种情况
11、表(dbo。jobsalary)工资级别js_levvarchar(2)主键,不允许重复岗位工资js_salnumeric(8, 2)表7工资信息表(dbo.salaryinfomation)员工编号e_idvarchar(8)主键,不允许重复;外键基本工资bs_salnumeric(8, 2)岗位工资js_salnumeric(8, 2)津贴工资bonus_salnumeric(8, 2)扣除薪酬check_salnumeric(8, 2)实发工资get_salnumeric(8, 2)5. 应用程序设计5。1主窗体模块进入登陆页面,如下图:图5。1。1 登录登陆后进入系统主界面,如下图:图
12、5。1.2系统主界面5.2员工信息模块(1) 查询,分别点击“编辑”“删除”按钮可修改、删除员工信息,如下图:图5。2。1 查询修改员工信息图5.2。2 修改员工信息5.3部门信息模块(1)查询。删除所有部门信息,如下图:图5.3.1 查询删除部门信息结论经过两周的不断实践与探索,人力资源工资管理统的设计与实现己经完成,基本上达到了预期的设计要求和目的。一个完整的人力资源-工资管理统就创建完毕了。在本系统的设计与实现的过程中主要讲述了工资管理系统的系统设计部分,包括功能模块设计、数据库结构设计等.系统设计为整个程序构建了骨架,各个功能模块实现各个细节部分.系统的详细设计根据系统分析阶段的结论将
13、系统具体化,并完成了各个模块的添加、修改、删除与查询的功能,直到最后形成一个完整的可行性的管理系统。在整个设计阶段的工作和本实验报告的写作过程的经历将会使我们小组终生受益,并对我们今后的工作和发展产生深远的影响。由于设计时间比较仓促,所以该系统还有许多不尽如意的地方,比如用户界面不够美观,出错处理不够等多方面问题。这些都有待于进一步的改善。参考文献1 数据库原理概述及应用,作者是魏善沛,张艳。2 JSP实用教程清华大学出版社.3 访问的链接: http:/blog.csdn。net/ljheee/article/details/50984498 http:/blog。附录A(源代码)SQL亮点
14、语句:1) 双重左外连接,员工表数据全查出select employee。e_id,employee。e_name,employee。e_sex,branch.b_name,employee.j_name,bs_lev,bonus_salfrom (employee left join branch on employee。b_id=branch。b_id) left join bonusinformation on employee。e_id=bonusinformation.e_id2) 创建触发器create trigger department_person 创建触发器on emplo
15、yee 监听员工表的增删,自动更新部门表的人数for insert,delete -监听employee表的增删操作asupdate branch set b_number=b_number+1where b_id=(select b_id from inserted)update branch set b_number=b_number1where b_id=(select b_id from deleted)Go3) 设置津贴默认值alter table bonusinformation -津贴默认0add constraint default_bonus default 0 forbon
16、us_sal4) 创建触发器 ALTER trigger add_checkSal 创建触发器 on checkTime for insert,update -监听 asupdate checkTime set check_sal=latetimes40+offtimes60 -计算考勤 where e_id=(select e_id from inserted) Go源代码:Index.jsp head titleindex page/titlemeta httpequiv=”expires” content=”0” meta httpequiv=”keywords” content=”ke
17、yword1,keyword2,keyword3”!-link rel=”stylesheet type=”text/css” href=”styles。cssstyle media=”screen” margin: 0;padding: 0;header padding: 1em 0;textalign: center;background-color: 4a4;color: fff;font-size: 300;header span fontsize: 50;marginleft: 1em;color: eee;footer position: absolute;bottom: 0;pa
18、dding: 2em 0;textalign: center;background-color: 4a4;color: fff;width: 100;clear: both;。content width: 75;overflow: auto;float: right;minheight: 600px;。nav float: left;backgroundcolor: #eee;width: 25;position: fixed;height: 100;overflow: auto;ul liststyletype: none;margin-top: 1em;li a display: bloc
19、k;color: 000;padding: 8px 0 8px 16px;textdecoration: none;li a:hover backgroundcolor: 4a4;color: white;table width: 100;bordercollapse: collapse;margin: 2m auto;th, td textalign: left;padding: 8px;tr:nthchild(even) backgroundcolor: f2f200;/style /head body 人力资源-工资管理span员工基本信息列表/span/headerdiv class=
20、”navullia href=new。html”添加员工/ali/lia href=aboutus。jsp其他/a/li/ultrth编号/th姓名/th性别/thth部门/thth职位/thth基本工资等级/thtd2014321td男/td市场部/tdtd经理/tdtdF/tdtd3620/tdform action=#” method=”get”input type=”hidden name=id” value=”/form/tdtrtd2014327/tdJack/tdtd男/tdtd市场部td职员/tdtdD/td1500tdinput type=”submit value=”编辑”
21、/form/tdtd/trListEmployee list = DbUtil.getALL();for(Employee e : list)pageContext。setAttribute(e”,e); %trtd/tdtde.ename/td$e.esextde。dname/tdtde.job/tdtde。sal_level/tde。bonusSal/tdform action=”treat” method=get”input type=hidden” name=eid” value=”e。eid”input type=hidden name=”yemian” value=”updateE
22、” /input type=submit” value=编辑”/tdtdinput type=hidden” name=”deleteE_id” value=”e.eidinput type=”hidden name=”yemian” value=”deleteE” /input type=”submit” value=”删除/form/divfooterCopyright (c) 2016 DB1 All Rights Reserved。 /htmlEdit.jsp page language=java” import=”java。util。,com。ljheee.bean。Employee
23、”pageEncoding=”UTF-8”html meta httpequiv=”expires” content=”0 meta http-equiv=keywords” content=keyword1,keyword2,keyword3”meta http-equiv=”description” content=This is my page-style media=”screen” margin: 0;padding: 0;header padding: 1em 0;text-align: center;background-color: 4a4;color: fff;fontsiz
24、e: 300%;header span font-size: 50%;marginleft: 1em;color: eee;footer position: absolute;bottom: 0;padding: 2em 0;text-align: center;background-color: #4a4;color: #fff;width: 100;clear: both;。content width: 75;overflow: auto;float: right;minheight: 300px;。nav float: left;backgroundcolor: #eee;width:
25、25;position: fixed;height: 100%;overflow: auto;ul liststyletype: none;margin-top: 1em;li a display: block;color: 000;padding: 8px 0 8px 16px;textdecoration: none;li a:hover backgroundcolor: #4a4;color: white;form margin: 2em 4em;form div marginbottom: 1em;label display: inlineblock;width: 6em;textal
26、ign: right;margin-right: 2em;input, select fontsize: 150%;inputtype=submit padding: 0 4em;marginleft: 6em;form span font-size: 80;color: red;margin-left: 1em; /head bodyheader人力资源-工资管理编辑员工信息/span/headerdiv class=”nav”ullia href=”index。jsp员工基本信息/a员工工资信息/a/lili部门信息/a/lilia href=aboutus.jsp”其他/a/ul/div
27、label编号/labelinput name=”id value=”ee。eid”readonly=readonly”span只读/spaninput name=”name value=ee.ename”readonly=readonlyspan只读/span/divdiv性别只读/span/divdivlabel职位/labelinput name=job” placeholder=job,如:经理” required=required”基础工资等级input name=sal_level” placeholder=”base salary level,如:F” required=requ
28、ired/divdivinput type=”submit value=更新”/div/form/divCopyright (c) 2016 DB1 All Rights Reserved./footer /body/htmlDbUtil。javapackage com。ljheee.db;import java.sql.*;import java.util。ArrayList;import java.util。List;import com.ljheee。bean.Branch;import com.ljheee。bean。Employee;/* DB author ljhee */publ
29、ic class DbUtil static Connection con = null;static PreparedStatement stmt = null;static ResultSetrs = null; static String driver = ”com。microsoft.sqlserver。jdbc.SQLServerDriver; static String dbURL = ”jdbc:sqlserver:/localhost:1433;integratedSecurity=true; DatabaseName=salarymanagement; statictry C
30、lass。forName(driver); con = DriverManager。getConnection(dbURL); catch (SQLException e) e。printStackTrace(); catch (ClassNotFoundException e) e。printStackTrace(); public static Employee getByID(String id)if(id。equals(”) return null;Employee e = null;String sql = ”select from employee where e_id=?”;tr
31、y stmt = con。prepareStatement(sql);stmt。setString(1, id);rs = stmt.executeQuery();while(rs.next()String e_id = rs。getString(1);String e_name = rs.getString(2);String e_sex = rs.getString(3);String b_name = rs。getString(4);String j_name = rs.getString(5);String bs_lev = rs.getString(6);/float bonus_s
32、al = Float。parseFloat(rs.getString(7);e = new Employee(e_id, e_name, e_sex, b_name, j_name, bs_lev); catch (SQLException e1) e1.printStackTrace();return e;public static void saveEmployee(Employee e)if(e=null) return;String sql = ”insert into employee values(?,?,?,?,?,?)”;try stmt = con。prepareStatem
33、ent(sql);stmt。setString(1, e。getEid());stmt.setString(2, e。getEname();stmt。setString(3, e。getEsex());stmt.setString(4, e.getBid());stmt。setString(5, e。getJob();stmt。setString(6, e。getSal_level();boolean b =stmt。execute();System.out.println(b); catch (SQLException e1) e1。printStackTrace();public stat
34、ic void updateEmployee(Employee e)if(e=null) return;Employee ee = getByID(e。getEid();String sql =update employee set b_id=?,j_name=?,bs_lev=? where e_id=?;try stmt = con.prepareStatement(sql);stmt.setString(1, e。getBid());stmt。setString(2, e。getJob());stmt。setString(3, e.getSal_level());stmt。setStri
35、ng(4, e。getEid();stmt.execute(); catch (SQLException e1) e1。printStackTrace();public static ListEmployee getALL() throws ClassNotFoundExceptionListEmployee list = new ArrayListEmployee();Employee e = null;try String sql=select employee.e_id,employee。e_name,employee.e_sex,branch.b_name,employee。j_nam
36、e,bs_lev,bonus_sal from (employee left join branch on employee.b_id=branch。b_id) left join bonusinformation on employee。e_id=bonusinformation。e_id”;stmt = con.prepareStatement(sql);rs = stmt。executeQuery();while(rs。next()String e_id = rs。getString(1);String e_name = rs.getString(2);String e_sex = rs.getString(3);String b_name = rs.getString(4);String j_name = rs。getS
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100