数据库系统概论设计课程设计报告级.docx

上传人:b****4 文档编号:4910176 上传时间:2022-12-11 格式:DOCX 页数:49 大小:174.55KB
下载 相关 举报
数据库系统概论设计课程设计报告级.docx_第1页
第1页 / 共49页
数据库系统概论设计课程设计报告级.docx_第2页
第2页 / 共49页
数据库系统概论设计课程设计报告级.docx_第3页
第3页 / 共49页
数据库系统概论设计课程设计报告级.docx_第4页
第4页 / 共49页
数据库系统概论设计课程设计报告级.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

数据库系统概论设计课程设计报告级.docx

《数据库系统概论设计课程设计报告级.docx》由会员分享,可在线阅读,更多相关《数据库系统概论设计课程设计报告级.docx(49页珍藏版)》请在冰豆网上搜索。

数据库系统概论设计课程设计报告级.docx

数据库系统概论设计课程设计报告级

《数据库》课程设计报告

 

学生姓名:

学号:

学院:

理学院

班级:

题目:

题目11员工薪资管理系统

 

指导教师:

职称:

     

 

2014年12月12日

一、选题背景

1.1开发工具

本程序硬件要求能运行Windows9.X操作系统的微机系统,JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具,MYSQL。

1.2选题背景

随着企业人员数量增加,企业的工资管理工作也变得越来越复杂。

早期的工资统计和发放都是使用人工方式处理纸质材料,不仅花费财务人员大量的时间且不易保存,往往由于个人的因素抄写不慎或计算疏忽,出现工资发放错误的现象。

早期工资管理多采取纸质材料和具有较强的时间限制。

随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的手段,不断改善服务质量,提高工作效率,这些都在很大程度上给企业提出越来越严峻的挑战,对企业体系无论是在行政职能、企业管理水平以及优质服务上都提出更高的要求。

建设一个科学高效的信息管理系统是解决这一问题的必由之路。

企业内部财务管理是该企业运用现代化技术创造更多更高的经济效益的主要因素之一。

工资管理作为企业内部的一种财务管理也是如此,由于企业职工人数较多,每一位职工的具体实际情况也不尽相同,各项工资条款的发放,如果没有一个完整的管理系统对企业和员工的工作都带来许多的不便。

基于以上原因,企业工资管理系统使用电脑安全保存、快速计算、全面统计,实现工资管理的系统化、规范化、自动化。

1.3系统目标

员工薪资管理系统的主要目的是利用计算机对员工的各种工资信息进行日常的管理,如查询、修改、添加、删除以及存储等,迅速准确地完成各种工资信息的统计计算和汇总工作,针对系统服务对象的具体要求,设计了企业工资管理系统。

企业工资管理系统主要有以下几大功能:

(1)对单位人员的变动进行处理:

一个单位的职工不会是一成不变的,总是在不断的变化:

有调出、有调入、也有职工在本单位内部调动。

因此,设计系统是应考虑到这些情况。

(2)对职工的工资进行计算、修改:

可以对职工的工资档案进行个别、部分和批量修改,同时,能对各职工的工资进行计算,即计算基本工资、岗位工资、水电费及实发金额等。

(3)查询统计功能:

要求即可以单项查询,比如查看某个职工的工资情况等;也可以多项查询,比如某个部门所有的员工的工资信息。

(4)对用户管理功能:

一个系统的应用有管理员和普通用户,他们对系统的权限受到限制。

2、员工薪资管理系统数据库设计

2.1需求分析

本系统定位于中小型单位,暂时考虑单机环境下的实现。

本系统采用会员式管理,每个属于该单位的职工都有一个属于自己的用户名和密码,通过该用户名和密码就可以登陆系统执行基于自己权限范围内的操作,系统功能应包括员工基本信息的输入输出与修改、各部门的基本信息输入修改、员工工资的基本情况、总工资的计算、统计分析。

员工可以通过此系统查询自己本月的基本工资,福利,奖金以及出去失业保险可住房公积金后的工资。

系统界面尽量做到简洁友好易用,在实现基本功能的基础上使其新颖美观。

该工资管理系统主要是由基本资料、工资登记、工资查询、系统管理几个部分组成的,主要用于单位工资发放管理。

(1)基本资料包括员工基本资料和部门的基本资料:

员工基本资料:

可以输入该员工的编号、姓名、性别、出生日期、位于哪个部门、所处的职业。

部门基本资料:

可以输入部门的编号、名称和员工人数。

(2)工资登记包括工资登记和清数据:

可以录入员工本月的基本工资、奖金、福利、失业保险和住房公积金,可以清除以前的数据。

(3)工资查询包括员工工资汇总查询。

(4)分类查询包括按部门查询和按日期查询。

(5)系统管理包括用户登录、数据备份、数据初始化。

 

2.2数据库结构分析

2.2.1设计策略

由于该系统主要用于员工的工资管理,其中工资的录入、计算、扣除与查询,人员的增删减是主要功能,所以应用程序主要就是实现这几个功能。

2.2.2系统总体结构图

 

 

图2—1系统总体结构图

 

2.2.3系统详细设计说明

?

员工基本信息表的创建;

?

部门基本信息表的创建;

?

员工工资基本信息表的创建;

?

用户名密码表的创建:

(这个表保存个用户的用户名和密码,便于登陆时核对)。

2.2概念结构设计

数据库概念设计是整个数据库设计的关键。

根据用户需求设计数据库的概念,数据模型。

我们首先要将现实世界中的客观对象首先抽象为不依赖任何具体机器的信息结构,这种信息结构不是DBMS支持的数据模型,而是概念级模型。

然后再把概念模型转换为具体机器上DBMS支持的数据模型。

概念模型是对现实世界的抽象和概括。

它真实,充分地反映了现实世界中的事物和事物之间的联系,能满足用户对数据的处理要求。

由于其简洁、明晰、独立于机器,很容易理解,因此可以用概念模型和不熟悉计算机的用户交换意见,使用户能积极参与数据库的设计工作。

概念模型易于变动,还很容易向各种数据模型转换。

概念模型的基本概念涉及的主要有7个,分别为实体、属性、码、域、实体型、实体集、联系。

E-R图是概念模型最常用的表示方法,在E-R图中:

1)用长方形表示实体型,在框内写上实体名。

2)用菱形表示实体间的联系,菱形框内写上联系名,用无向边把菱形分别与有关实体相连,在无向边旁标上联系的类型。

若实体间的联系也具有属性,则把属性和菱形也用无向边连上。

 

图2—2员工实体关系图

图2—3部门实体关系图

图2—4工资实体关系图

 

图2—5部门——员工实体关系图

图2—6员工——工资实体关系图

 

2.3数据库逻辑结构设计

2.3.1主要实体

根据上述概念模型设计得出的E—R图,我们可以得出系统中涉及的主要实体有3个,其结构如下:

1、员工(职工号,姓名、性别、年龄、单位和职业)

2、部门(部门编号,部门名称)

3、工资(职工号,日期,基本工资,奖励工资,福利补贴,住房公积金,失业保险)

 

2.3.2实体间的联系

工资管理系统中实体之间有6个联系,其关系如下:

1、具有1关系:

员工和奖金的关系是1:

N,N个职位相同的员工具有相同的奖金基数。

2、工薪关系:

员工和工资单的关系是1:

N,每个员工每个月都有一张工资单。

3、属于关系:

员工和部门的关系是N:

1,一个部门可以有多个员工。

4、聘用关系:

员工和职务的关系是N:

1,一个职务可以聘用多个员工。

5、设置关系:

部门和职务的关系是M:

N,一个部门可以设置多个职务,相同的职务也可以设置在多个部门。

根据以上逻辑结构分析我们可以知道:

一个部门有多个员工,每个员工都有工资,工资又由基本工资等组成,其关系模式为:

员工编号(主码)

姓名

性别

年龄

部门号

职业

部门号(主码)

部门名称

 

员工号(主码)

日期

基本

工资

福利

补贴

奖励工资

失业保险

住房公积金

 

表2—1图表、视图汇总

视图/表名

类型

说明

员工

基本表

集中保存员工的基本信息

科室

基本表

集中存放单位各部门的信息

工资

基本表

存放员工工资的基本信息

 

2.3.3完整性约束

表2—2员工基本表

字段

类型

字节长度

格式

约束

员工编号

数字(整型)

主码

姓名

文本

10

性别

文本

2

年龄

数字(整型)

所属部门号

数字(整型)

外码

职业

文本

20

表2—3科室基本表

字段

类型

字节长度

格式

约束

部门编号

数字(整型)

主码

部门名称

文本

8

表2—4工资基本表

字段

类型

长度

格式

约束

员工编号

数字(整型)

主码、外码

日期

文本

250

基本工资

数字(整型)

福利补贴

数字(整型)

奖金工资

数字(整型)

失业保险

数字(整型)

住房公积金

数字(整型)

2.4数据字典

绘制数据流图以后,只是对数据处理和彼此之间的联系进行了说明,为了进一步明确数据的详细内容和数据加工过程,应将数据流图中的各元素作出详细的定义和说明,以便于此后系统设计的进行。

数据字典描述的主要内容有:

数据项、数据流、数据存储、数据处理、外部实体。

数据流程图配以数据词典,就可以从图形和文字两个方面对系统的逻辑模型进行描述,从而形成一个完整的说明。

在系统分析中会产生大量的数据词典,以下将以图表形式分别列出系统中代表性的数据流、数据元素、数据存储和外部实体以及所有的加工处理。

表2—5员工薪资管理系统数据字典

条目

名称

编号

说明

来源

去向

组成

存取方式

数据项

职工号

F1

每位员工一个编号

D1D5

部门编号、顺序号

键入

数据流

员工和变动信息

F1

员工都有详细的资料

“人事部”外部实体

P1

职工号,姓名,性别,职位,学历,联系电话,身份证号码,入职时间,离职时间

键入

数据存储

劳务奖金表

D4

存储每个员工的奖金

P3

P4

职工号月份奖金(近似长度分别为:

6、4、12(字节))主关键字:

职工号

辅关键字:

月份

自动

存储组织:

二维表

数据处理

员工资料管理

P1

对员工资料进行管理

F1员工和变动信息

D1

D6

职工号,姓名,性别,

键入

数据处理

基本工资管理

P2

生成员工基本工资表

F2

D2

职工号,在职时间,基本工资

自动

数据处理

员工考勤管理

P3

生成考勤汇总表

F3

D3

职工号,迟到,旷工,请假

键入

数据处理

奖金管理

P4

生成员工劳务奖金表

F4、D3

D4

职工号,奖励项目,金额,月份

键入

数据处理

工资汇总

P5

计算员工工资。

是最重要的部分

D1、D2、D3、D4

F5F6

实发工资,汇总表,工资单

自动

外部实体

员工

工资汇总后,生成工资单给员工

F5

职工号,月份,工资单号

键入

外部实体

人事部

录入改变员工的基本信息及员工的考核情况

D1、D3

P5P4P1

部门编号,员工号,考核

键入

外部实体

财务部

计算发放员工的工资

P5

F5F7

员工号,各工资

自动

2.5问题及解决方法

2.5.1创建数据库

1.创建员工基本信息表

createtabletmp

(Ynointprimarykey,

Ynamechar(10)notnull,

Ysexchar

(2)check(Ysexin('男','女')),

Yagesmallintcheck(Yagebetween18and65),

Depnoint,

Yjobchar(20),

FOREIGNKEY(Depno)REFERENCESDep(Depno)

);

2.创建部门信息表

insertintoDep

values

(01,'经理室'),

(02,'财务科'),

(03,'技术科'),

(04,'销售科');

3.创建员工薪资表

createtableMon

(Ynointprimarykey,

Datechar(10)notnull,

Mjbint,

Mflint,

Mjlint,

Msyint,

Mzfint,

FOREIGNKEY(Yno)REFERENCEStmp(Yno),

constraintc1check(Mjb+Mfl+Mjl-Msy-Mzf<=3000)

);

4.表的结构

员工基本信息结构:

部门信息表:

员工薪资表:

2.5.2利用JAVA实现数据库可视化操作

1.创建图形界面

gonzi(){

try{//连接数据库

Stringurl="jdbc:

mysql:

//localhost:

3306/ygxz";

Stringuser="root";

Stringpwd="huangxin";

//加载数据库驱动程序

DriverManager.registerDriver(newcom.mysql.jdbc.Driver());

//Class.forYname("com.mysql.jdbc.Driver").newInstance();

//连接数据库

cn=DriverManager.getConnection(url,user,pwd);

}

catch(SQLExceptione1){

msg.setText("数据库连接错误!

");

}

//标签

e1=newLabel("员工编号");

e2=newLabel("姓名");

e3=newLabel("性别");

e4=newLabel("年龄");

e5=newLabel("所属部门编号");

e6=newLabel("职业");

e7=newLabel("日期");

e8=newLabel("基本工资");

e9=newLabel("福利补贴");

e10=newLabel("奖金工资");

e11=newLabel("失业保险");

e12=newLabel("住房公积金");

msg=newLabel("");

//msg2=newLabel("");

//输入框

text1=newTextField("",6);

text2=newTextField("",3);

text3=newTextField("",2);

text4=newTextField("",2);

text5=newTextField("",2);

text6=newTextField("",4);

text7=newTextField("",8);

text8=newTextField("",4);

text9=newTextField("",4);

text10=newTextField("",4);

text11=newTextField("",4);

text12=newTextField("",4);

//按钮

btn1=newButton("添加");

btn2=newButton("删除");

btn3=newButton("查询");

btn4=newButton("修改");

ta=newTextArea(20,100);//20列,100行

//界面布局,添加元素

add(msg);

p1=newPanel();p2=newPanel();p3=newPanel();p4=newPanel();

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(text5);

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);

//将面板的布局设置为FlowLayout,面板上增加的组件默认是按照从左到右顺序排列

setLayout(newFlowLayout());

btn1.addActionListener(newBtn1());

btn2.addActionListener(newBtn2());

btn3.addActionListener(newBtn3());

btn4.addActionListener(newBtn4());

addWindowListener(newWinClose());

setSize(800,1000);

setTitle("员工薪资管理系统");

setVisible(true);//显示界面

}

图形界面如下:

界面在保证可以概括实现各种功能的前提下力求简洁,实现可视化操作。

2.添加信息功能

classBtn1implementsActionListener{

publicvoidactionPerformed(ActionEvente){

try{

ssql="insertintotmpvalues(?

?

?

?

?

?

)";

ps=cn.prepareStatement(ssql);

demo.setYno(Integer.parseInt(text1.getText()));

ps.setInt(1,demo.getYno());

demo.setYname(text2.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.setString(6,demo.getYjob());

ps.executeUpdate();//执行insert语句

}

catch(Exceptione2){

msg.setText("添加记录出错!

");

text1.setText("");

text2.setText("");

text3.setText("");

text4.setText("");

text5.setText("");

text6.setText("");

text1.requestFocus();

}

try{

ssql2="insertintoMonvalues(?

?

?

?

?

?

?

)";

ps2=cn.prepareStatement(ssql2);

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());

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(Exceptione2){

msg.setText("添加记录出错!

");

text7.setText("");

text8.setText("");

text9.setText("");

text10.setText("");

text11.setText("");

text12.setText("");

text1.requestFocus();

}

}

}

 

界面如下:

结果如下:

3.查询功能:

(1)查询全部:

if(text1.getText().equals("")&&text2.getText().equals("")){

ssql="SELECTtmp.Yno,yname,ysex,yage,yjob,Depname,date,mjb,mfl,mjl,msy,mzfFROMtmp,mon,depWHEREtmp.yno=mon.ynoandtmp.Depno=Dep.Depno;";

ps=cn.prepareStatement(ssql);

rs=ps.executeQuery();//执行select语句

ta.setText("");

w

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1