1、数据库系统概论设计课程设计报告级数据库课程设计报告学生姓名:学 号:学 院:理学院班 级:题 目:题目11 员工薪资管理系统指导教师: 职称: 2014年12月12日一、选题背景1.1 开发工具本程序硬件要求能运行Windows9.X操作系统的微机系统,JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具,MYSQL。1.2 选题背景随着企业人员数量增加,企业的工资管理工作也变得越来越复杂。早期的工资统计和发放都是使用人工方式处理纸质材料,不仅花费财务人员大量的时间且不易保存,往往由于个人的因素抄写不慎或计算疏忽,出现工资发放错误的现象。早期工资管理多采取纸质材料和具有
2、较强的时间限制。随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的手段,不断改善服务质量,提高工作效率,这些都在很大程度上给企业提出越来越严峻的挑战,对企业体系无论是在行政职能、企业管理水平以及优质服务上都提出更高的要求。建设一个科学高效的信息管理系统是解决这一问题的必由之路。企业内部财务管理是该企业运用现代化技术创造更多更高的经济效益的主要因素之一。工资管理作为企业内部的一种财务管理也是如此,由于企业职工人数较多,每一位职工的具体实际情况也不尽相同,各项工资条款的发放,如果没有一个完整的管理系统对企业和员工的工作都带来许多的不便。基于以
3、上原因,企业工资管理系统使用电脑安全保存、快速计算、全面统计,实现工资管理的系统化、规范化、自动化。1.3 系统目标员工薪资管理系统的主要目的是利用计算机对员工的各种工资信息进行日常的管理,如查询、修改、添加、删除以及存储等,迅速准确地完成各种工资信息的统计计算和汇总工作,针对系统服务对象的具体要求,设计了企业工资管理系统。企业工资管理系统主要有以下几大功能:(1)对单位人员的变动进行处理:一个单位的职工不会是一成不变的,总是在不断的变化:有调出、有调入、也有职工在本单位内部调动。因此,设计系统是应考虑到这些情况。(2)对职工的工资进行计算、修改:可以对职工的工资档案进行个别、部分和批量修改,
4、同时,能对各职工的工资进行计算,即计算基本工资、岗位工资、水电费及实发金额等。(3) 查询统计功能:要求即可以单项查询,比如查看某个职工的工资情况等;也可以多项查询,比如某个部门所有的员工的工资信息。(4)对用户管理功能:一个系统的应用有管理员和普通用户,他们对系统的权限受到限制。2、员工薪资管理系统数据库设计2.1 需求分析本系统定位于中小型单位,暂时考虑单机环境下的实现。本系统采用会员式管理,每个属于该单位的职工都有一个属于自己的用户名和密码,通过该用户名和密码就可以登陆系统执行基于自己权限范围内的操作,系统功能应包括员工基本信息的输入输出与修改、各部门的基本信息输入修改、员工工资的基本情
5、况、总工资的计算、统计分析。员工可以通过此系统查询自己本月的基本工资,福利,奖金以及出去失业保险可住房公积金后的工资。系统界面尽量做到简洁友好易用,在实现基本功能的基础上使其新颖美观。该工资管理系统主要是由基本资料、工资登记、工资查询、系统管理几个部分组成的,主要用于单位工资发放管理。(1)基本资料包括员工基本资料和部门的基本资料:员工基本资料:可以输入该员工的编号、姓名、性别、出生日期、位于哪个部门、所处的职业。部门基本资料:可以输入部门的编号、名称和员工人数。(2)工资登记包括工资登记和清数据:可以录入员工本月的基本工资、奖金、福利、失业保险和住房公积金,可以清除以前的数据。(3)工资查询
6、包括员工工资汇总查询。(4)分类查询包括按部门查询和按日期查询。(5)系统管理包括用户登录、数据备份、数据初始化。2.2 数据库结构分析2.2.1 设计策略由于该系统主要用于员工的工资管理,其中工资的录入、计算、扣除与查询,人员的增删减是主要功能,所以应用程序主要就是实现这几个功能。2.2.2 系统总体结构图图21 系统总体结构图2.2.3 系统详细设计说明?员工基本信息表的创建;?部门基本信息表的创建;?员工工资基本信息表的创建;?用户名密码表的创建:(这个表保存个用户的用户名和密码,便于登陆时核对)。2.2 概念结构设计数据库概念设计是整个数据库设计的关键。根据用户需求设计数据库的概念,数
7、据模型。我们首先要将现实世界中的客观对象首先抽象为不依赖任何具体机器的信息结构,这种信息结构不是DBMS支持的数据模型,而是概念级模型。然后再把概念模型转换为具体机器上DBMS支持的数据模型。概念模型是对现实世界的抽象和概括。它真实,充分地反映了现实世界中的事物和事物之间的联系,能满足用户对数据的处理要求。由于其简洁、明晰、独立于机器,很容易理解,因此可以用概念模型和不熟悉计算机的用户交换意见,使用户能积极参与数据库的设计工作。概念模型易于变动,还很容易向各种数据模型转换。概念模型的基本概念涉及的主要有7个,分别为实体、属性、码、域、实体型、实体集、联系。ER图是概念模型最常用的表示方法,在E
8、R图中:1)用长方形表示实体型,在框内写上实体名。2)用菱形表示实体间的联系,菱形框内写上联系名,用无向边把菱形分别与有关实体相连,在无向边旁标上联系的类型。若实体间的联系也具有属性,则把属性和菱形也用无向边连上。 图22 员工实体关系图图23 部门实体关系图 图24 工资实体关系图图25 部门员工实体关系图 图26 员工工资实体关系图2.3 数据库逻辑结构设计2.3.1 主要实体根据上述概念模型设计得出的ER图,我们可以得出系统中涉及的主要实体有3个,其结构如下: 1、员工(职工号,姓名、性别、年龄、单位和职业) 2、部门(部门编号,部门名称) 3、工资(职工号,日期,基本工资,奖励工资,福
9、利补贴,住房公积金,失业保险)2.3.2 实体间的联系工资管理系统中实体之间有6个联系,其关系如下: 1、具有1关系:员工和奖金的关系是1:N,N个职位相同的员工具有相同的奖金基数。 2、工薪关系:员工和工资单的关系是1:N,每个员工每个月都有一张工资单。 3、属于关系:员工和部门的关系是N:1,一个部门可以有多个员工。 4、聘用关系:员工和职务的关系是N:1,一个职务可以聘用多个员工。 5、设置关系:部门和职务的关系是M:N,一个部门可以设置多个职务,相同的职务也可以设置在多个部门。 根据以上逻辑结构分析我们可以知道:一个部门有多个员工,每个员工都有工资,工资又由基本工资等组成,其关系模式为
10、:员工编号(主码)姓名性别年龄部门号职业部门号(主码)部门名称员工号(主码)日期基本工资福利补贴奖励工资失业保险住房公积金 表21 图表、视图汇总视图/表名类型说明员工基本表集中保存员工的基本信息科室基本表集中存放单位各部门的信息工资基本表存放员工工资的基本信息2.3.3 完整性约束表22 员工基本表字段类型字节长度格式约束员工编号数字(整型)主码姓名文本10性别文本2年龄数字(整型)所属部门号数字(整型)外码职业文本20表23 科室基本表字段类型字节长度格式约束部门编号数字(整型)主码部门名称文本8表24 工资基本表字段类型长度格式约束员工编号数字(整型)主码、外码日期文本250基本工资数字
11、(整型)福利补贴数字(整型)奖金工资数字(整型)失业保险数字(整型)住房公积金数字(整型)2.4 数据字典绘制数据流图以后,只是对数据处理和彼此之间的联系进行了说明,为了进一步明确数据的详细内容和数据加工过程,应将数据流图中的各元素作出详细的定义和说明,以便于此后系统设计的进行。数据字典描述的主要内容有:数据项、数据流、数据存储、数据处理、外部实体。数据流程图配以数据词典,就可以从图形和文字两个方面对系统的逻辑模型进行描述,从而形成一个完整的说明。在系统分析中会产生大量的数据词典,以下将以图表形式分别列出系统中代表性的数据流、数据元素、数据存储和外部实体以及所有的加工处理。表25 员工薪资管理
12、系统数据字典条目名称编号说明来源去向组成存取方式数据项职工号F1每位员工一个编号D1D5部门编号、顺序号键入数据流员工和变动信息F1员工都有详细的资料“人事部”外部实体P1职工号,姓名,性别,职位,学历,联系电话,身份证号码,入职时间,离职时间键入数据存储劳务奖金表D4存储每个员工的奖金P3P4职工号 月份 奖金(近似长度分别为:6 、 4、12(字节)) 主关键字:职工号辅关键字:月份自动存储组织:二维表数据处理员工资料管理P1对员工资料进行管理F1员工和变动信息D1D6职工号,姓名,性别,键入数据处理基本工资管理P2生成员工基本工资表F2D2职工号,在职时间,基本工资自动数据处理员工考勤管
13、理P3生成考勤汇总表F3D3职工号,迟到,旷工,请假键入数据处理奖金管理P4生成员工劳务奖金表F4、D3D4职工号,奖励项目,金额,月份键入数据处理工资汇总P5计算员工工资。是最重要的部分D1 、D2、D3、D4F5F6实发工资,汇总表,工资单自动外部实体员工工资汇总后,生成工资单给员工F5职工号,月份,工资单号键入外部实体人事部录入改变员工的基本信息及员工的考核情况D1、D3P5P4P1部门编号,员工号,考核键入外部实体财务部计算发放员工的工资P5F5F7员工号,各工资自动2.5 问题及解决方法2.5.1 创建数据库1.创建员工基本信息表create table tmp(Yno int pr
14、imary key,Yname char(10) not null,Ysex char(2) check(Ysex in(男,女),Yage smallint check(Yage between 18 and 65),Depno int,Yjob char(20),FOREIGN KEY (Depno) REFERENCES Dep(Depno);2.创建部门信息表insert into Dep values(01,经理室),(02,财务科),(03,技术科),(04,销售科);3.创建员工薪资表create table Mon(Yno int primary key,Date char(1
15、0) not null,Mjb int,Mfl int,Mjl int,Msy int,Mzf int,FOREIGN KEY (Yno) REFERENCES tmp(Yno),constraint c1 check(Mjb+Mfl+Mjl-Msy-Mzf=3000);4.表的结构员工基本信息结构:部门信息表:员工薪资表:2.5.2 利用JAVA实现数据库可视化操作1.创建图形界面 gonzi() try/连接数据库 String url=jdbc:mysql:/localhost:3306/ygxz; String user=root; String pwd=huangxin; /加载数据
16、库驱动程序 DriverManager.registerDriver(new com.mysql.jdbc.Driver(); /Class.forYname(com.mysql.jdbc.Driver).newInstance(); /连接数据库 cn=DriverManager.getConnection(url,user,pwd); catch(SQLException e1) msg.setText(数据库连接错误!); /标签 e1 = new Label(员工编号); e2 = new Label(姓名); e3 = new Label(性别); e4 = new Label(年龄
17、); e5 = new Label(所属部门编号); e6 = new Label(职业); e7 = new Label(日期); e8 = new Label(基本工资); e9 = new Label(福利补贴); e10 = new Label(奖金工资); e11 = new Label(失业保险); e12 = new Label(住房公积金); msg = new Label( ); /msg2 = new Label( ); /输入框 text1 = new TextField(,6); text2 = new TextField(,3); text3 = new TextFi
18、eld(,2); text4 = new TextField(,2); text5 = new TextField(,2); text6 = new TextField(,4); text7 = new TextField(,8); text8 = new TextField(,4); text9 = new TextField(,4); text10 = new TextField(,4); text11 = new TextField(,4); text12 = new TextField(,4); /按钮 btn1 = new Button(添加); btn2 = new Button(
19、删除); btn3 = new Button(查询); btn4 = new Button(修改); ta = new TextArea(20,100);/20列,100行 /界面布局,添加元素 add(msg); p1 = new Panel();p2 = new Panel();p3 = new Panel();p4 = new Panel(); p1.add(e1);p1.add(text1); p1.add(e2);p1.add(text2); p1.add(e3);p1.add(text3); p1.add(e4);p1.add(text4); p1.add(e5);p1.add(t
20、ext5); p1.add(e6);p1.add(text6); add(p1); p2.add(e7);p2.add(text7); p2.add(e8);p2.add(text8); p2.add(e9);p2.add(text9); p2.add(e10);p2.add(text10); p2.add(e11);p2.add(text11); p2.add(e12);p2.add(text12); add(p2); p3.add(btn1); p3.add(btn2); p3.add(btn3); p3.add(btn4); add(p3); p4.add(ta);add(p4); /将
21、面板的布局设置为FlowLayout,面板上增加的组件默认是按照从左到右顺序排列 setLayout(new FlowLayout(); btn1.addActionListener(new Btn1(); btn2.addActionListener(new Btn2(); btn3.addActionListener(new Btn3(); btn4.addActionListener(new Btn4(); addWindowListener(new WinClose(); setSize(800,1000); setTitle(员工薪资管理系统); setVisible(true);/
22、显示界面 图形界面如下:界面在保证可以概括实现各种功能的前提下力求简洁,实现可视化操作。2.添加信息功能 class Btn1 implements ActionListener public void actionPerformed(ActionEvent e) try ssql = insert into tmp values(?,?,?,?,?,?); ps=cn.prepareStatement(ssql); demo.setYno(Integer.parseInt(text1.getText(); ps.setInt(1, demo.getYno(); demo.setYname(t
23、ext2.getText(); ps.setString(2, demo.getYname(); demo.setYsex(text3.getText(); ps.setString(3, demo.getYsex(); demo.setYage(Integer.parseInt(text4.getText(); ps.setInt(4, demo.getYage(); demo.setDepno(Integer.parseInt(text5.getText(); ps.setInt(5, demo.getDepno(); demo.setYjob(text6.getText(); ps.se
24、tString(6, demo.getYjob(); ps.executeUpdate();/执行insert语句 catch(Exception e2) msg.setText(添加记录出错!); text1.setText(); text2.setText(); text3.setText(); text4.setText(); text5.setText(); text6.setText(); text1.requestFocus(); try ssql2 = insert into Mon values(?,?,?,?,?,?,?); ps2=cn.prepareStatement(s
25、sql2); demo2.setYno(Integer.parseInt(text1.getText(); ps2.setInt(1, demo2.getYno(); demo2.setDate(text7.getText(); ps2.setString(2, demo2.getDate(); demo2.setMjb(Integer.parseInt(text8.getText(); ps2.setInt(3, demo2.getMjb(); demo2.setMfl(Integer.parseInt(text9.getText(); ps2.setInt(4, demo2.getMfl(
26、); demo2.setMjl(Integer.parseInt(text10.getText(); ps2.setInt(5, demo2.getMjl(); demo2.setMsy(Integer.parseInt(text11.getText(); ps2.setInt(6, demo2.getMsy(); demo2.setMzf(Integer.parseInt(text12.getText(); ps2.setInt(7, demo2.getMzf(); ps2.executeUpdate();/执行insert语句 catch(Exception e2) msg.setText
27、(添加记录出错!); text7.setText(); text8.setText(); text9.setText(); text10.setText(); text11.setText(); text12.setText(); text1.requestFocus(); 界面如下:结果如下:3.查询功能:(1)查询全部:if(text1.getText().equals()&text2.getText().equals() ssql= SELECT tmp.Yno,yname,ysex,yage,yjob,Depname,date,mjb,mfl,mjl,msy,mzf FROM tmp,mon,dep WHERE tmp.yno=mon.yno and tmp.Depno=Dep.Depno;ps=cn.prepareStatement(ssql);rs=ps.executeQuery();/执行select语句ta.setText();w
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1