数据库系统概论设计课程设计报告级Word格式文档下载.docx

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

数据库系统概论设计课程设计报告级Word格式文档下载.docx

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

数据库系统概论设计课程设计报告级Word格式文档下载.docx

员工基本资料:

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

部门基本资料:

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

(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

部门编号、顺序号

键入

数据流

员工和变动信息

员工都有详细的资料

“人事部”外部实体

P1

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

数据存储

劳务奖金表

D4

存储每个员工的奖金

P3

P4

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

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

辅关键字:

月份

自动

存储组织:

二维表

数据处理

员工资料管理

对员工资料进行管理

F1员工和变动信息

D1

D6

职工号,姓名,性别,

基本工资管理

P2

生成员工基本工资表

F2

D2

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

员工考勤管理

生成考勤汇总表

F3

D3

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

奖金管理

生成员工劳务奖金表

F4、D3

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

工资汇总

P5

计算员工工资。

是最重要的部分

D1、D2、D3、D4

F5F6

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

外部实体

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

F5

职工号,月份,工资单号

人事部

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

D1、D3

P5P4P1

部门编号,员工号,考核

财务部

计算发放员工的工资

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

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("

text5=newTextField("

text6=newTextField("

4);

text7=newTextField("

8);

text8=newTextField("

text9=newTextField("

text10=newTextField("

text11=newTextField("

text12=newTextField("

//按钮

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

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