数据库课程设计实验报告工资管理系统.docx
《数据库课程设计实验报告工资管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计实验报告工资管理系统.docx(50页珍藏版)》请在冰豆网上搜索。
![数据库课程设计实验报告工资管理系统.docx](https://file1.bdocx.com/fileroot1/2023-4/20/e9987b24-4b80-4790-a907-c2048e1b3c1c/e9987b24-4b80-4790-a907-c2048e1b3c1c1.gif)
数据库课程设计实验报告工资管理系统
延安大学计算机学院实验报告专用纸
实验室:
软件工程实验室学号:
实验日期:
2013年11月日
姓名
班级
课程名称
数据库系统概论
任课教师
实验项目名称
工资管理系统(课程设计)
指导教师
实验组别
第组
同组者
教师评语及成绩:
实验成绩:
教师签字:
(请按照实验报告的有关要求书写.一般必须包括1.实验目的;2.实验内容;3.实验步骤与方法;4.实验数据与程序清单;5.出现的问题及解决方法;6.实验结果,结果分析与体会等内容.)
一.实验目的
(1)锻炼动手操作能力,以及团队合作意识;
(2)能熟练地运用SQL语句进行各种操作:
(3).掌握Java与SQLserver的连接技术,能将Java知识与数据库的知识熟练掌握并操作:
二.实验内容
工资管理系统
1)系统功能的基本要求:
a)员工每个工种基本工资的设定
b)加班津贴管理,根据加班时间和类型给予不同的加班津贴;
c)按照不同工种的基本工资情况、员工的考勤情况产生员工的每月的月工资;
d)员工年终奖金的生成,员工的年终奖金计算公式=(员工本年度的工资总和+津贴的总和)/12;
e)企业工资报表。
能够查询单个员工的工资情况、每个部门的工资情况、按月的工资统计,并能够打印;
2)数据库要求:
在数据库中至少应该包含下列数据表:
a)员工考勤情况表;
b)员工工种情况表,反映员工的工种、等级,基本工资等信息;
c)员工津贴信息表,反映员工的加班时间,加班类别、加班天数、津贴情况等;
d)员工基本信息表
e)员工月工资表。
三.实验步骤与方法
第页,共页
(1).需求分析
工资管理信息系统对企业加强工资管理有着极其重要的作用,就一般的大型企业来说,它的设计内容非常复杂而且繁多,比如拥有工资计算功能,工资统计功能,报表输出功能,而且设计的模块也很多,比如工资管理模块,工资统计模块,报表设计模块,打印输出模块,模糊查询模块等等.在做这个管理系统时,我们既咨询了父母又结合了教师等不同行业人士的工资情况,发现该系统受些许因素牵制比如说:
公司大小,人员流动性,员工学历等通过我们的了解调查最终总结出系统功能如下:
a.整体结构合理,模块化结构利于操作.
b.完整的数据输入,输出,维护.
c.拥有不错的自检性,用户输错或误输均有提示.
d.拥有较强的容错性,某个用户的错误操作不会引起系统的瘫痪.
e.程序接口灵活,以便日后操作与维护.
f.在不影响系统功能的前提下,美化操作界面.
(2).概念设计
E-R图
数据流图
(3).逻辑设计
基本信息(员工编号号,姓名,性别,毕业学校,所学专业,学历,电话,住址,从事岗位).
考勤信息表(员工编号,姓名,请假天数,矿工天数,月迟到次数,月份).
加班信息表(员工编号,姓名,晚班加班(天),周末加班(天),春节加班(天),节假日加班(天),月份).
岗位信息表(员工编号,姓名,从事岗位,基本工资,部门名称).
部门信息表(部门编号,部门名称,部门经理,部门人数)
根据基本表创建了如下视图:
加班津贴(员工编号,姓名,加班薪酬,月份)
缺勤扣除表(员工编号,姓名,扣除工资,月份)
月工资表(员工编号,姓名,基本工资,扣除工资,加班薪酬,实得工资,月份)
年终奖(员工编号,姓名,奖
(4).数据字典
2.考勤信息表(KQXX)
列名(EngliSh)
列名
数据类型
是否空值
备注
Empno
员工编号
int
NOTNULL
Foreignkey
Leavedays
请假天数
int
NULL
Truancydays
旷工天数
int
NULL
Latetimes
月迟到次数(t)
int
NULL
Themonth
月份
int
NOTNULL
3.加班信息表(OVERTIMEINFORMATION)
列名(EngliSh)
列名
数据类型
是否空值
备注
Empno
员工编号
int
NOTNULL
Foreignkey
Night
晚班加班(天)
int
NULL
Weekend
周末加班(天)
int
NULL
Festival
节日加班(天)
int
NULL
Special
春节加班(天)
int
NULL
Themonth
月份
int
NOTNULL
4.员工岗位及登录信息表(GWXX)
列名(EngliSh)
列名
数据类型
是否空值
备注
Empno
员工编号
int
NOTNULL
Foreignkey
Job
从事岗位
varchar(16)
NOTNULL
Salary
基本工资
money
NOTNULL
Dept
部门名称
varchar(16)
NOTNULL
5.部门信息表(BMXX)
列名(EngliSh)
列名
数据类型
是否空值
备注
Deptno
部门编号
int
NOTNULL
Primarykey
Dept
部门名称
varchar(16)
NOTNULL
Manager
部门经理
varchar(8)
NULL
Empnum
部门人数
int
NULL
6.登录信息表(logininformation)
列名(EngliSh)
列名
数据类型
是否空值
备注
Empno
员工编号
int
NOTNULL
登录用户名
Password
密码
Varchar(8)
Null
Thegrand
权限
Varchar(8)
Null
视图的创建:
1).加班津贴表(JBJT)
列名(EngliSh)
列名
数据类型
是否空值
备注
Empno
员工编号
int
NOTNULL
Emname
姓名
varchar(8)
NOTNULL
Overtimesalary
加班薪酬
Money
NULL
Themonth
月份
int
NOTNULL
2).缺勤扣除表(QQKC)
列名(EngliSh)
列名
数据类型
是否空值
备注
Empno
员工编号
int
NOTNULL
Emname
姓名
varchar(8)
NOTNULL
Deductions
扣除工资
Money
NULL
Themonth
月份
int
NOTNULL
3).月工资表(SALARY)
列名(EngliSh)
列名
数据类型
是否空值
备注
Empno
员工编号
int
NOTNULL
Emname
姓名
varchar(8)
NOTNULL
Salary
基本工资
money
NOTNULL
Deductions
扣除工资
Money
NULL
Overtimesalary
加班薪酬
Money
NULL
Gainsalary
实得工资
Money
NULL
Themonth
月份
int
NOTNULL
4).年终奖(NZJJ)
列名(EngliSh)
列名
数据类型
是否空值
备注
Empno
员工编号
int
NOTNULL
Emname
姓名
varchar(8)
NOTNULL
Jiangjin
奖金
money
NULL
(5).系统的实现
开发环境:
SQLserver2005及eclipse
用SQL语言创建数据库
1.基本信息表(JBXX)
CreatetableJBXX
(Empnointnotnullprimarykey,
Emnamevarchar(8)notnull,
Sexchar
(2)check(Sex=’男’orSex=’女’),
Schoolvarchar(20)null,
Professionvarchar(20)null,
Educationvarchar(6)null,
Phonechar(11)null,
Addressvarchar(15)null)
3.加班信息表(OVERTIMEINFORMATION)
CreatetableOVERTIMEINFORMATION
(Empnointnotnull,
Nightintnull,
Weekendintnull,
Festivalintnull,
Specialintnull,
Themonthintnotnull,
FOEREIGNKEYEmpnoREFERENCESJBXX(Empno))
5.部门信息表(BMXX)
6.登录信息表(logininformation)
Createtablelogininformation
(Empnointnotnull,
PasswordVarchar(8)null,
ThegrandVarchar(8)null)
CreatetableBMXX
(Deptnointnotnullprimarykey,
Deptvarchar(16)notnull,
Managervarchar(8)null,
Empnumintnull)
1).加班津贴表(JBJT)
CreateviewJBJT(Empno,Emname,Overtimesalary,Themonth)
As
selectJBXX.Empno,JBXX.Emname,night*70+weekend*80+festival*140+special*210,Themonth
fromOVERTIMEINFORMATION,JBXX
whereOVERTIMEINFORMATION.Empno=JBXX.Empno
2).缺勤扣除表(QQKC)
CreateviewQQKC(Empno,Emname,Deductions,Themonth)
As
selectJBXX.Empno,JBXX.Emname,Truancydays*80+Leavedays*40+Latetimes*10,Themonth
fromKQXX,JBXX
whereJBXX.Empno=KQXX.Empno
3).月工资表(SALARY)
CreateviewSALARY2(Empno,Emname,Salary,Deductions,Overtimesalary,Gainsalary,Themonth)
As
selectdistinctJBXX.Empno,JBXX.Emname,GWXX.Salary,Deductions,
Overtimesalary,GWXX.Salary+Overtimesalary-Deductions,QQKC.Themonth
fromKQXX,GWXX,QQKC,JBJT,JBXX,OVERTIMEINFORMATION
whereQQKC.Empno=JBJT.EmpnoandGWXX.Empno=JBXX.EmpnoandOVERTIMEINFORMATION.Empno=QQKC.Empnoand
QQKC.Empno=JBXX.EmpnoandKQXX.Themonth=OVERTIMEINFORMATION.Themonth
andJBXX.Empno=KQXX.EmpnoandQQKC.Emname=JBJT.EmnameandJBJT.Emname=JBXX.Emname
4).年终奖(NZJJ)
CreateviewNZJJ(Empno,Emname,jiangjin)As
SelectJBXX.Empno,JBXX.Emname,(sum(SALARY.Gainsalary)+sum(SALARY.Overtimesalary))/12
FromKQXX,JBJT,JBXX,SALARY,OVERTIMEINFORMATION
GroupbyJBXX.Empno,JBXX.Emname,SALARY.Empno
havingJBXX.Empno=SALARY.EmpnoandJBXX.Empno=SALARY.Empno
在eclipse中连接SQLserver数据库
编写界面设计的代码
运行系统与检验,调试系统
四.实验数据与程序清单
Connection连接代码
importjava.sql.*;
publicclassconnection{
publicstaticvoidmain(String[]srg){
StringdriverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";//加载JDBC驱动
StringdbURL="jdbc:
sqlserver:
//localhost:
1433;DatabaseName=工资管理系统
(1)";//连接服务器和数据库sample
Stringuser="sa";//默认用户名
Stringpass="7757xiong";//密码
ConnectionCon=null;
try{
Class.forName(driverName);
Con=DriverManager.getConnection(dbURL,user,pass);
System.out.println("数据库连接成功!
");}catch(Exceptione){
System.out.println("数据库连接失败!
");
e.printStackTrace();
}finally{
try{
Con.close();
}catch(SQLExceptione){//TODOAuto-generatedcatchblock
e.printStackTrace();
}}}}
系统进入欢迎界面
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
classDBextendsJFrameimplementsActionListener{
JFrameframe=newJFrame("欢迎进入企业工资管理系统");
JLabellabel=newJLabel("",JLabel.CENTER);
JButtonbutton1=newJButton("进入系统");
JButtonbutton2=newJButton("退出系统");
ImageIconim=newImageIcon("1.jpg");
JLabela1=newJLabel(im);
voidCreate(){
JPanelpcontentPane=(JPanel)frame.getContentPane();
pcontentPane.add(a1);
pcontentPane.add(label);
pcontentPane.setLayout(newFlowLayout());
pcontentPane.add(button1);
pcontentPane.add(button2);
pcontentPane.setVisible(true);
button1.addActionListener(this);
button2.addActionListener(this);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setBounds(200,100,550,230);
frame.setVisible(true);
}
publicstaticvoidmain(String[]args){
DBdome=newDB();
dome.Create();}
publicvoidactionPerformed(ActionEvente){
if(button1.equals(e.getSource())){
用户登录dl=new用户登录();
dl.create();
frame.dispose();
}if(button2.equals(e.getSource())){//退出
System.exit(0);
}}}
登陆界面
importjava.awt.Color;
importjava.awt.FlowLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.Statement;
importjavax.swing.ImageIcon;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JPasswordField;
importjavax.swing.JTextField;
/*-----------------------------------------用户与管理员登录----------------------------------------*/
class用户登录extendsJFrameimplementsActionListener
{
ImageIconim=newImageIcon("2.jpg");
JLabela2=newJLabel(im);
JFrameframe=newJFrame("职工/管理员登陆");
JLabellabel1=newJLabel("用户名");
JLabellabel2=newJLabel("密码");
JButtonlogonButton1=newJButton("管理员登录");
JButtonlogonButton2=newJButton("职工登录");
JButtoncancelButton=newJButton("退出");
JTextFieldusername=newJTextField(9);
JPasswordFieldpassword=newJPasswordField(9);
staticStringt1;
staticStringt2;
voidcreate(){
JPanelp=(JPanel)frame.getContentPane();
JPanelp1=newJPanel();
p.setLayout(newFlowLayout());
p.add(a2);
p.add(label1);
p.setSize(5,5);
p.setLocation(4,8);
p.add(username);
p.setSize(100,200);
p.setLocation(800,800);
p.add(label2);
p.setSize(50,20);
p.setLocation(40,80);
p.add(password);
p.setSize(100,20);
p.setLocation(80,120);
p.add(logonButton1);
p.add(logonButton2);
p.add(cancelButton);
p.setBackground(Color.yellow);
p.setVisible(true);
logonButton1.addActionListener(this);
logonButton2.addActionListener(this);
cancelButton.addActionListener(this);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setBounds(200,100,500,260);
frame.setVisible(true);
}
publicvoidactionPerformed(ActionEvente)
{
t1=username.getText();
t2=password.getText();
if(e.getSource()==logonButton1){
if(username.getText().equals("admin")==true
&&(password.getText().equals("admin")==true)){
JOptionPane.showMessageDialog(this,"登录成功!
");
GZGLZJMgz=newGZGLZJM();
gz.create();
frame.dispose();
}
else{
JOptionPane.showMessageDialog(null,"输入用户名或密码错误!
");
}}if(e.getSourc