1、数据库系统原理课程设计报告数据库系统原理课程设计报告题目名称: Miracle工资管理系统 班 级: 计103-1 组长学号: 姓名: 成绩: 组员学号: 姓名: 成绩: 组员学号: 姓名: 成绩: 组员学号: 姓名: 成绩: 组员学号: 姓名: 成绩: 组员学号: 姓名: 成绩: 组员学号: 姓名: 成绩: 2012年7月5日第一章 引言1.1 选题的依据及课题的意义随着计算机技术的普及,数据信息处理技术得到了空前发展,人们处理大量数据的能力越来越强,大量以前必需由人工处理的工作现在都可以由计算机代劳。早期的工资统计和发放都是使用人工方式处理纸质材料,不仅花费财务人员大量的时间且不易保存,往
2、往由于个人的因素抄写不慎或计算疏忽,出现工资发放错误的现象。早期工资管理多采取纸质材料和具有较强的时间限制。基于以上原因,企业工资管理系统使用电脑安全保存、快速计算、全面统计,实现工资管理的系统化、规范化、自动化。1.2程序基本概况本程序为一个基本的工资管理系统,系统中对公司员工的工资情况进行管理。本系统通过管理员实现了对员工工龄工资、职务工资、出勤奖惩和津贴等项目的统计与管理,以及对职务、出勤、津贴等项目的增添与修改,普通用户可以使用本系统查询自己的各项工资情况。系统界面简洁有条,操作方便,基本满足了普通公司对员工工资的管理需求。1.3 项目开发背景及信息系统目标 随着经济不断的发展,公司迅
3、速发展,业务不断扩大,人员增加,迫切需要一套完整的、行之有效的人员工资管理系统对公司员工的各项工资内容进行管理。 本系统应当实现以下功能:对各部门员工职务、工龄、出勤情况、津贴情况进行有效的统计。将各员工的各项基本情况转换为工资信息。对各项工资信息进行汇总,统计计算出总工资。允许本公司员工对个人工资进行查询,实现管理员对员工信息的管理。第二章 系统分析2.1 可行性分析技术方面,本系统使用JAVA语言编写,实现方便,界面干净整洁,方便使用;利用MySql数据库对数据进行存储和处理,实现数据的共享,保证了系统的稳定性和安全性。经济方面,支出方面,引进本系统需支付设备购置费、软件开发费、管理维护费
4、、员工工资和培训费等;使用本系统节省了大量的书面报告,提高了办公效率,降低了办公费用,相对于前期投入,后期收益更为可观。2.2 项目开发计划2.2.1目标:实现月工资计算和打印输出相应的工资表格;实现与工资管理有关的档案管理。提高工资管理工作效率,降低出错率。2.2.2 功能要求:档案管理1保存有关工资计算以及工资管理所必须的数据2能对各种数据进行插入、修改、删除等操作3能对数据进行查询、统计工资计算1正确计算出个人月工资、部门月工资以及全厂月工资。2能对病假扣款系数进行修正。3能打印输出工资计算表、个人工资单、部门工资单、工资汇总表四种表格。2.2.3 数据要求:每个职工的各种数据分为三类:
5、1职工的代号、姓名、性别、出生日期、参加工作日期、所属部门、人员类别、工种职别、技术等级、技术职称、文化程度、民族、籍贯、现住址。2职工的基本工资、岗位津贴、物价补贴、职务津贴、住房补贴、房租。3职工的出勤日数、公伤日数、产假日数、病假日数、旷工日数、事假日数、加班日数、夜班日数、病假系数。工资单数据:本月基本工资、岗位津贴、物价补贴、职务津贴、住房补贴、加班费、夜班费、房租、病假扣款、事假扣款、旷工扣款、其它扣款、实发工资。根据开发计划、软硬件情况、人员配置情况,将员工工资管理系统的项目开发进度分为系统分析、需求分析、概要分析、详细设计、系统实施、系统维护六个阶段,具体进度安排如下:项 目1
6、天1天2-3天7-9天1-2天长期系统分析需求分析概要设计详细设计系统实施系统维护第三章分析与设计3.1 系统分析 根据该企业的业务情况及实现目标,系统功能模块图如图3.1所示:图3.1 系统功能模块在这次系统开发中我主要完成的部分是工资管理和设置方面。开发这个系统的目的就是帮助企业的财务主管部门提高工作效率,实现企业工资信息管理的系统化、规范化和自动化。能够和认识管理系统、考勤管理系统相结合,真正实现企业高效、科学、现代化的员工管理。系统最终实现的主要功能如下:企业工资信息设置部分:包括设置员工的基本工资和其他项目的金额,如津贴等。并且负责设置员工工资的计算公式。图3.2 工资信息设置模块企
7、业工资信息管理部分:包括统计出勤、计算工资、查询工资和导出工资表。图3.3 工资信息管理模块系统部分:包括添加用户和修改密码。图3.4 系统模块3.2 数据库设计数据库设计是开发数据库及其应用系统的技术,也是信息系统开发和建设的重要组成部分。具体的说,数据库设计是要在一个给定的应用环境中,通过合理的逻辑设计和有效的物理设计,构造较优的数据库模式,建立数据库及其应用系统,满足用户的各种信息需求。3.2.1 实体描述本系统中所涉及的实体有9个,其结构如下:员工(编号,姓名,性别,出生日期,文化背景,民族,家乡,家庭住址)部门(编号,名称)工龄(工龄,对应工资)职务(职务级别,对应工资)津贴类别(编
8、号,名称 ,薪水)出勤类别(编号,名称, 系数)基本工资(员工,工龄,职务,基本工资)实际工资(员工,实际工资)用户(用户名,密码,权限)3.2.2 联系描述本系统中实体之间有3个联系,其关系如下:(1)员工部门的所属关系:部门与员工是1:N的关系,一个部门有多个员工,但一个员工只属于一个部门;(2)员工出勤:员工与出勤是M:N的关系,一个员工可以有多种出勤情况,一种出勤情况可以对应多个员工;(3)员工津贴:员工与津贴是M:N的关系,一个员工可以有多种津贴情况,一种津贴情况可以对应多个员工;以上实体的联系属性如下:员工部门(员工,部门)员工出勤(员工,出勤,出勤天数)员工津贴(员工,津贴)3.
9、2.3 E-R图本系统的E-R图如图3.5 所示:图3.5 E-R图3.2.4 存储过程设计存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。在我们的项目中,在添加工龄工资信息与职务工资信息中运用了存储过程,如果高级语言中函数调用一样,我们定义了5个参数,4个是输入参数,1个为输出参数,在判断向哪个表插入数据时,我们根据前两个参数来判断,然后根据输出参数的取值来查看操作是否成功。3.2.5触发器的设计触发器(trigger)是个特殊的存储过程,它
10、的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。在我们的项目中我们在删除职员信息时用到了触发器,我们的表设计中empandrsal、empandjintie 、DepAndEmp 、EmpAndPre 、EmpAndSal用引用了employees中的No属性,作为每个表的外键约束,当我们在删除employees表时就违反参照完整性的约束,必须把这些表中相应的元组也给
11、删除,出于以上目的,我们把在删除外键约束定义成了一个触发器,根据employees中No的值来把相应表中的数据删除。第四章系统实现4.1 数据库的实现4.1.1表定义(1)员工表(employees)主码字段代码字段名称数据类型长度小数位数可否为空*emp_No员工编号Varchar20Not nullemp_Name员工姓名Varchar20Not nullemp_Sex性别Varchar20emp_Born出生日期Date20emp_Cul文化程度Varchar20emp_Nation民族Varchar20emp_Homeland籍贯Varchar20emp_Addr地址Varchar20
12、emp_PersonLel职务Varchar20(2)部门(department)主码字段代码字段名称数据类型长度小数位数可否为空*dep_No部门编号IntNot nulldep_Name部门名称Varchar20(3)工龄(SalAndTime)主码字段代码字段名称数据类型长度小数位数可否为空*sal_timeLev工龄IntNot nullsal_timeMoney对应工资Double(4)职务(SalAndTech)主码字段代码字段名称数据类型长度小数位数可否为空*sal_techLev职务IntNot nullsal_techMoney对应工资Double(5)津贴类别(jintie
13、)主码字段代码字段名称数据类型长度小数位数可否为空*jin_No津贴编号IntNot nulljin_Name津贴项目Varcharjin_Money对应工资Double(6)出勤类别(presence)主码字段代码字段名称数据类型长度小数位数可否为空*pre_No出勤编号IntNot nullpre_Name出勤项目Varcharpre_Xishu对应系数Double(7)基本工资(EmpAndSal)主码字段代码字段名称数据类型长度小数位数可否为空*emp_salEmpNO员工姓名Varchar20Not nullemp_salTimeLev工龄Intemp_salTechLev职务Int
14、emp_salary基本工资Double(8)实际工资(EmpAndRSal)主码字段代码字段名称数据类型长度小数位数可否为空*emp_rsalEmpNo员工姓名Varchar20Not nullemp_rsalary实际工资Double(9)用户(user1)主码字段代码字段名称数据类型长度小数位数可否为空*user_name用户名Varchar20Not nulluser_password密码Varchar20user_power权限Int(10)员工部门(DepAndEmp)主码字段代码字段名称数据类型长度小数位数可否为空*dep_empEmpNo员工编号Varchar20Not nul
15、ldep_empDepNo部门编号Int(11)员工出勤(EmpAndPre)主码字段代码字段名称数据类型长度小数位数可否为空*emp_preEmpNo用户编号Varchar20Not nullemp_prePreNo出勤编号Intemp_prePreDays出勤天数Int(12)员工津贴(EmpAndJintie)主码字段代码字段名称数据类型长度小数位数可否为空*emp_jinEmpNo用户编号Varchar20Not nullemp_jinJinNo津贴编号Int4.1.2触发器与存储过程的实现/触发器drop trigger if exists del_onemployees; deli
16、miter $create trigger del_onemployeesbefore delete on employeesfor each ROWbegindelete from empandrsal where emp_rsalEmpNo =old.emp_No;delete from empandjintie where emp_jinEmpNo=old.emp_No;delete from DepAndEmp where dep_empEmpNo=old.emp_No;delete from EmpAndPre where emp_preEmpNo=old.emp_No;delete
17、 from EmpAndSal where emp_salEmpNO=old.emp_No;end $/存储过程delimiter $create procedure insert_data( in sat int, in sate int,in jb int,in chb double precision,out sb int)begin set sb = 1; begin if (sat =1) then insert into SalAndTime values(jb,chb); elseif (sate=1) then insert into SalAndTech values(jb,
18、chb); end if; end; set sb = 0;end $4.2 程序流程图程序流程图又称为程序框图,表示方法简单直观,是最早使用的一种模念模式,是用来描述处理执行的逻辑过程的,它把程序的基本步骤归纳为:处理、判断、输入输出、起始和终结等几个基本功能,并用不同的记号加以表示,从而描述程序的执行过程。在绘制程序流程图时使用的符号说明如下:处理 输入输出 判断 起始终止 控制方向图 4.14.3 人机界面设计用户界面是指软件系统和用户交互的接口,良好的用户界面往往可以提高用户使用系统的热情,并刺激他们的积极性。4.3.1 登录界面设计为了保证系统的安全性,进入系统之前必须经过必要的安全
19、性,简洁、清晰、友好是此设计的风格,如图4.2所示:图 4.24.3.2系统基本信息界面设计输入正确的用户名和密码后,即进入系统。系统的基本操作界面如图4.3所示:图4.3系统基本操作界面主要包括修改信息、添加信息、显示信息、统计信息、修改信息几个功能模块。4.3.3 修改界面(员工信息)图 4.44.3.4 添加界面(员工信息)图 4.54.3.5 显示信息(员工信息)图 4.64.3.6 删除信息(员工信息)图4.7第五章 小结ASDFASF:在这次数据库设计中,我遇到的主要问题有以下几个方面:1.Swing局部刷新时的问题,有时新的数据不能在组件上显示2.连接数据库时多个Connecti
20、on没有关闭导致的取到错误的数据问题3.程序的健壮性,有些错误的情况不能以友好的方式提醒用户总结:在以后的设计中重视前期需求分析,分清模块功能。SADFSA:在本次软件的开发过程中,我进一步深入学习到了软件开发的流程,主要学习到了完整的数据库设计流程。团队中人员的合作精神值得学习,大家集思广益,各司其职,尽自己所能做好各自的工作。我认识到了前期分析的重要性,对后期开发有很大的指导作用,在分析过程中,大家经常会产生分歧,意见的不统一导致了开发时间的延误;此外还体会到了文档的重要性,文档是信息的重要载体,加强了人员间的交流,记录了软件的开发过程,为下一步的开发提供了良好的依据。ASDFAS:这次课
21、程设计我们开发的项目是工资管理系统,主要包括后台数据库的建立和维护以及前台应用程序的开发两个方面。主要功能包括对客户信息的增加、删除、修改等基本功能。此次课程设计过程中也遇到了不少问题,由于自己的知识积累还不够,所以设计的项目也比较简单。通过此次工资管理系统的设计过程,我对这两年的学习进行了全面的回顾与总结,并且得出以下结论:1.系统分析很重要2.严格按照既定的规划进行系统设计与开发3.注重吸收其他软件的优点4.广泛的积累素材5.团队合作很重要ASDASD:在开发这个工资管理系统过程中我深刻地体会到了自学能力的重要性。毕竟在学校学习到的知识是有限的,而在开发系统的过程中仅凭原有的一点点知识是远
22、远不够的,只有翻阅大量的资料才能学到更多的知识,才能实现其预期的功能。在开发过程中,遇到困难是在所难免的,期间我跟我的指导老师和同学进行交流,从中明白了很多。开发一个系统,恒心和毅力也是不可缺少的,如果一遇到难题就心慌,想要放弃,那这样就不可能完成系统。同样,在开发过程当中,细心也是非常重要的,由于很多事项都要很注意才行,如果没有做到这一点,就会出错。在开发过程当中,我学到很多,明白了做任何事情都要有始有终,要敢于同困难作斗争,要养成独立思考的习惯。在以后的工作和生活当中,我将继续发扬这些好的作风。SADFASF:经过反复测试,系统完成后运行添加、修改、查询、报表等功能均正常。此系统任然存在许
23、多缺陷,但是通过该系统设计达到了系统设计目的的意义,基本掌握了软件开发的主要步骤,了解了各个环节在开发时要注意的问题,体会到开发一个系统应该注意的方面以及重视用户在系统开发过程中间的作用,开发出好的软件高质量的软件。另外在设计过程中也逐渐提高了软件开发技能和编程技能以及良好的软件开发思维模式。SDFAS:在学习数据库之前一直觉得数据库没有什么深入研究的价值,觉得无非是将数据存起来进行增删改查的操作就是了。直到真正接触到了数据库这门课才真地发现了这里面得奥妙和值得专研的价值。从某种意义上看来说,对于数据库的学习不仅仅改变了我对与数据库的看法,同时也改变了我对于程序设计的看法。从前简单的看到就做是
24、不科学的,应该经过规划和研究分析才能上手。于此同时,老师留的项目其实是对于我们的所学习知识的一种检验与扩充。因为项目结合很多的其他知识,同时做项目的过程是一个对于知识的重新审视与巩固的过程。总地来说,这次的数据库课程设计让我觉得有所收获,有所得。加强了对于课程本身的理解,同时也知道了更广的知识面。ASDD:近一周以来,虽然课程多、时间紧,考试忙,但在组长的带领下认真进行数据库课程设计。认真听从老师的教导,及时进行学习、交流、实践。通过学习交流,拓宽了知识面,提高了认识。认识的提高主要表现在两方面:一方面是对自我的认识,认识到自身的不足,需要不断提高自己的专业知识、数据管理方面的知识,明白了软件
25、开发是一件工程学,需要工程学的指导,认真实践才是关键;另一方面是对数据库维护的学习认知,通过学习数据库使我上升了一个层次,使我在工作中能更好的完成数据库的维护工作 ,以及软件维护的重要性。面向对象程序设计思想对于软件设计的巨大影响力,对于软件的扩展和维护的带来的巨大便利。 因此此次学习对于我个人来说至关重要。源代码选摘:/数据库连接private Connection getConnection() String url = jdbc:mysql:/127.0.0.1:3306/salary; try Class.forName(com.mysql.jdbc.Driver); return (
26、Connection) DriverManager.getConnection(url, root, mysql); catch (ClassNotFoundException e) e.printStackTrace(); catch (SQLException e) e.printStackTrace(); return null; public static void main(String args) new adminUser(); / 添加职工信息监听if (e.getSource() = enterInsert8) try con = getConnection(); con.s
27、etAutoCommit(false); sql = con.createStatement(); int k = sql.executeUpdate(INSERT INTO employees VALUES( + a800 + , + a801 + , + a802 + , + a803 + , + a804 + , + a805 + , + a806 + , + a807 + , + a808 + ); System.out.println(k = + k); int m = sql .executeUpdate(INSERT INTO EmpandSal(emp_salEmpNO,emp_salTimeLev,emp_salTechLev) VALUES( + a800 + , + a808 + , + a8010 + ); int n = sql.executeUpdate(INSERT INTO DepAndEmp VALUES(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1