数据库课程实训报告职工工资管理系统.docx

上传人:b****7 文档编号:24988640 上传时间:2023-06-03 格式:DOCX 页数:81 大小:124.36KB
下载 相关 举报
数据库课程实训报告职工工资管理系统.docx_第1页
第1页 / 共81页
数据库课程实训报告职工工资管理系统.docx_第2页
第2页 / 共81页
数据库课程实训报告职工工资管理系统.docx_第3页
第3页 / 共81页
数据库课程实训报告职工工资管理系统.docx_第4页
第4页 / 共81页
数据库课程实训报告职工工资管理系统.docx_第5页
第5页 / 共81页
点击查看更多>>
下载资源
资源描述

数据库课程实训报告职工工资管理系统.docx

《数据库课程实训报告职工工资管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程实训报告职工工资管理系统.docx(81页珍藏版)》请在冰豆网上搜索。

数据库课程实训报告职工工资管理系统.docx

数据库课程实训报告职工工资管理系统

 

数据库课程实训报告

题目:

职工工资管理系统

 

职工工资管理系统

1课题内容和要求

1.1课题描述

本系统的主要目的就是实现职工工资管理系统设计与实现,使职工工资管理工作更加容易,高效地管理企业职工工资,从而提高工作效率,降低管理成本.

1.2课题要求

基本功能要求:

1)可以按照科室(经理室、财务科、技术科和销售科)增加、修改、删除职工的基本资料

2)职工信息应包含职称,分为高级、中级、初级,同一职称职工基本工资相同

3)职工工资由基本工资、奖金、扣除金额组成,其中奖金、扣除金额可每月输入不同数据

4)可以计算职工每月工资

5)可以按照科室、职称、月份统计职工工资

6)可以按照科室、职工号、职工名称查询职工工资

2需求分析

2.1功能需求分析

1)可以按照科室(经理室、财务科、技术科和销售科)增加、修改、删除职工的基本资料

2)职工信息应包含职称,分为高级、中级、初级,同一职称职工基本工资相同

3)职工工资由基本工资、奖金、扣除金额组成,其中奖金、扣除金额可每月输入不同数据

4)可以计算职工每月工资

5)可以按照科室、职称、月份统计职工工资

6)可以按照科室、职工号、职工名称查询职工工资

2.2数据需求分析

3系统设计

3.1功能模块设计

1数据库设计模块

2用户登录识别模块

3用户信息管理模块

4职工信息管理模块

3.2数据库概念设计

职工表(employee)

字段名

类型

备注

EmployID

char(20)

职工号

EmployName

char(30)

Notnull

EmploySex

char

(2)

性别

'男'或者'女'

EmployAge

int

年龄

>0

EmployDept

char(30)

部门

EmployAd

char(50)

住址

EmpoyJob

Char(20)

职务

Notnull

EmployPh

Int

电话号

工资表(salary)

字段名

类型

备注

EmployID

char(20)

职工号

Notnull

EmbaseSalary

Int

基本工资

>=0

EmAddSalary

int

奖金

EmSubSalary

int

罚金

SalaryCard

int

工资卡

Notnull

RealSalary

int

实发工资

Notnull

4系统实现

4.1数据库模块实现

将数据库的连接包装在一个DBConnect类中,以便其他模块能够轻松调用,避免每次重写数据库连接代码。

下表是他的基本属性

文件名

成员变量

成员方法

database.java

publicstaticConnectioncn;

publicstaticStatementst;publicstaticResultSetrs;

publicstaticvoidcloseConn(Connectionconn);

publicstaticConnectiongetConn()throwsException{}

4.2用户登录识别模块实现

下表其他的基本属性

文件名

成员变量

成员方法

landing1.java

JLabeljlabel2=newJLabel("用户ID:

");

JLabeljlabel3=newJLabel("密码:

");

JTextFieldtext1=newJTextField();

publiclanding1(){}

4.3管理员模块实现

5代码调试与功能测试

5.1测试方案

软件测试的方法和技术是多种多样的,网路上也提供了很多免费的工具。

对于软件测试技术,可以从不同的角度加以划分。

(1)从是否需要执行被测软件的角度,可分为静态测试和动态测试。

(2)从是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。

下面具体介绍黑盒测试和白盒测试。

(1)黑盒测试。

又叫功能测试,由测试人员在不知道程序如何实现的情况下,输入功能需要的数据,查看输出结果的正确性。

所谓“黑盒”,其实就是把程序看成是一个完全密封的盒子,测试人员不考虑程序的内部构造,只是按照需求说明,进行数据的录入操作,并查看结果是否满足需求要完成的功能。

“黑盒”法着眼于程序外部结构,不考虑内部运算,针对界面和功能进行测试。

“黑盒”法是穷举测试,只有把所有可能的输入都进行测试,才能查处程序中所有的错误。

实际上测试情况有无穷多个,测试人员不仅要测试合法的输入,还要对那些不合法的输入进行测试。

(2)白盒测试。

又叫逻辑结构测试。

测试人员需要了解功能的内部构造,对所有逻辑路径都进行测试。

“白盒”法是穷举路径测试。

测试人员必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。

即使每条路径都测试了,仍然可能有错误。

第一,穷举路径测试无法查出程序违反了设计规范,即程序本身是个错误的程序。

第二,穷举路径测试查不出程序中因遗漏路径而出错的情况。

第三,穷举路径测试可能发现不了输入数据的错误。

5.2测试结果

6收获与体会

本次java课程设计主要侧重在对职工工资信息管理的添加、删除、修改、查看等最基本的操作,掌握这些最基本的设计思想是很重要的,能够帮助我们开发更加复杂的软件提供依据和基础。

在做这次课程设计中我把Java中很多的知识融会贯通,了解到很多的应用,就如并不是每个界面都只能用JPanel还可以用Box,每个组件的灵活应用,让界面更加的人性化,同样的组件不同的应用,就可以达到不同的效果。

所以看似简单的一次课程设计,却包含了很多,当你把小的一小方面熟练地掌握时,面对大的设计时,你只需要把问题分解成一个个小问题,逐一攻破。

最主要的是掌握这种设计的思想,先要做需求分析,将你所需要的模型的勾勒出来,再依次填充,最后形成一个完整的体系。

在做课程设计中,自我的态度也是很重要的,要把它当作一个作品,认真地去打磨,了解其中每个一个细节,争取通过一次课程设计就对java类和对象的概念有更深的了解,同时培养了我们对java课程设计的兴趣的,增强了设计软件的思维能力,以便今后更好地掌握,此外也要在完善的过程中,认识到自己的不足,慢慢地去丰富自身的关于Java知识的储备,有时多看看别人的设计也是有助于自己增强自我能力的。

参考文献

[1]钱雪忠,王燕玲,林挺.数据库原理及技术[M].北京:

清华大学出版社,2011.

[2]钱雪忠,罗海驰,陈国俊.数据库原理及技术课程设计[M].北京:

清华大学出版社,2014.

附  录

附录1源程序部分清单

附录1.1登陆代码

Addchengji.java

packagestudent;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjava.sql.*;

publicclassAddchengjiextendsJInternalFrameimplementsActionListener{

intn=0;

JLabelj1,j2,j3,j4,j5;

JTextFieldtf1,tf2,tf3,tf4,tf5;

JButtonb1,b2;

//JRadioButtonrb1,rb2;

Addchengji(){

super("添加职工工资");

setLayout(null);

j1=newJLabel("输入工号");

j2=newJLabel("基本工资工资");

j3=newJLabel("扣除金额工资");

j4=newJLabel("奖金工资");

j5=newJLabel("补助");

tf1=newJTextField(20);

tf2=newJTextField(20);

tf3=newJTextField(20);

tf4=newJTextField(20);

tf5=newJTextField(20);

b1=newJButton("添加");

b2=newJButton("清空");

b1.addActionListener(this);

b2.addActionListener(this);

add(j1);

add(j2);

add(j3);

add(j4);

add(j5);

add(tf1);

add(tf2);

add(tf3);

add(tf4);

add(tf5);

add(b1);

add(b2);

j1.setBounds(50,20,80,20);

j2.setBounds(50,70,80,20);

j3.setBounds(50,120,80,20);

j4.setBounds(50,170,80,20);

j5.setBounds(50,220,80,20);

tf1.setBounds(150,20,120,20);

tf2.setBounds(150,70,120,20);

tf3.setBounds(150,120,120,20);

tf4.setBounds(150,170,120,20);

tf5.setBounds(150,220,120,20);

b1.setBounds(80,290,70,30);

b2.setBounds(180,290,70,30);

setSize(450,400);

setClosable(true);//设置是否可关闭

setMaximizable(true);//设置是否可最大化

setResizable(true);//设置是否可调整大小

show();//如果内部窗体不可见,则将该内部窗体置于前端,使其可见并尝试选定它。

}

publicvoidactionPerformed(ActionEvente){

if(e.getSource().equals(b1)){

try{

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

Connectioncon=DriverManager.getConnection("jdbc:

microsoft:

sqlserver:

//localhost:

1433;DatabaseName=students","sa","123456");

Statementstm=con.createStatement();

Statementstm2=con.createStatement();

Statementstm3=con.createStatement();

ResultSetres=stm2.executeQuery("select*fromsstuwheresno='"+tf1.getText()+"'");

ResultSetres2=stm3.executeQuery("select*fromchengjiwheresno='"+tf1.getText()+"'");

if(!

res2.next()){

stm.executeUpdate("insertintochengjivalues('"+tf1.getText()+"','"+tf2.getText()+"','"+tf3.getText()+"','"+tf4.getText()+"','"+tf5.getText()+"')");

if(!

res.next()){

javax.swing.JOptionPane.showMessageDialog(null,"添加成功!

职工表中没有该职工信息,请添加该职工的信息");

}

else{

javax.swing.JOptionPane.showMessageDialog(null,"成功!

添加'"+res.getString

(2)+"'的工资成功");

}

}

else{

javax.swing.JOptionPane.showMessageDialog(null,"该职工工资已存在不能添加!

");

}

con.close();

}catch(Exceptionz){

z.printStackTrace();

System.out.println(z.getMessage());

}

}

if(e.getSource().equals(b2)){

tf1.setText("");

tf2.setText("");

tf3.setText("");

tf4.setText("");

tf5.setText("");

}

}

publicstaticvoidmain(String[]args)

{newAddchengji();

}

}

Addstu.java

packagestudent;

importjava.awt.event.*;

importjavax.swing.*;

importjava.sql.*;

publicclassAddstuextendsJInternalFrameimplementsActionListener{

intn=0;

JLabelj1,j2,j3,j4,j5,j6;

JTextFieldtf1,tf2,tf3,tf4,tf5,tf6;

JButtonb1,b2;

JRadioButtonrb1,rb2;

Stringsex1="男";

Addstu(){

super("添加职工信息");

setLayout(null);

j1=newJLabel("请输入工号");

j2=newJLabel("请输入姓名");

j3=newJLabel("请输入性别");

j4=newJLabel("请输入年龄");

j5=newJLabel("请输入生日");

j6=newJLabel("输入所在科室");

tf1=newJTextField(20);

tf2=newJTextField(20);

//tf3=newJTextField(20);

tf4=newJTextField(20);

tf5=newJTextField(20);

tf6=newJTextField(20);

b1=newJButton("添加");

b2=newJButton("清空");

rb1=newJRadioButton("男");

rb2=newJRadioButton("女");

ButtonGroupg1=newButtonGroup();

g1.add(rb1);

g1.add(rb2);

b1.addActionListener(this);

b2.addActionListener(this);

rb2.addActionListener(this);

add(j1);

add(j2);

add(j3);

add(j4);

add(j5);

add(j6);

add(tf1);

add(tf2);

//f.add(tf3);

add(tf4);

add(tf5);

add(tf6);

add(b1);

add(b2);

add(rb1);

add(rb2);

j1.setBounds(50,20,80,20);

j2.setBounds(50,70,80,20);

j3.setBounds(50,120,80,20);

j4.setBounds(50,170,80,20);

j5.setBounds(50,220,80,20);

j6.setBounds(50,270,100,20);

tf1.setBounds(150,20,120,20);

tf2.setBounds(150,70,120,20);

//tf3.setBounds(150,120,120,20);

tf4.setBounds(150,170,120,20);

tf5.setBounds(150,220,120,20);

tf6.setBounds(150,270,120,20);

rb1.setBounds(150,120,50,20);

rb2.setBounds(210,120,50,20);

b1.setBounds(80,320,70,30);

b2.setBounds(180,320,70,30);

setSize(450,450);

setClosable(true);//设置是否可关闭

setMaximizable(true);//设置是否可最大化

setResizable(true);//设置是否可调整大小

show();//如果内部窗体不可见,则将该内部窗体置于前端,使其可见并尝试选定它。

}

publicvoidactionPerformed(ActionEvente){

if(e.getSource().equals(rb2)){

sex1="女";

}

if(e.getSource().equals(b1)){

try{

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

Connectioncon=DriverManager.getConnection("jdbc:

microsoft:

sqlserver:

//localhost:

1433;DatabaseName=students","sa","123456");

//Stringsql="select*fromsuser";

Statementstm=con.createStatement();

Statementstm2=con.createStatement();

ResultSetres=stm2.executeQuery("select*fromsstuwheresno='"+tf1.getText()+"'");

if(!

res.next())

{

stm.executeUpdate("insertintosstuvalues('"+tf1.getText()+"','"+tf2.getText()+"','"+sex1+"','"+tf4.getText()+"','"+tf5.getText()+"','"+tf6.getText()+"')");

javax.swing.JOptionPane.showMessageDialog(null,"添加信息成功");

}

else{javax.swing.JOptionPane.showMessageDialog(null,"职工"+res.getString("sname")+"信息已存在,不能再添加!

");}

con.close();

}catch(Exceptionz){

z.printStackTrace();

System.out.println(z.getMessage());

}

}

if(e.getSource().equals(b2)){

tf1.setText("");

tf2.setText("");

tf4.setText("");

tf5.setText("");

tf6.setText("");

}

}

publicstaticvoidmain(String[]args)

{newAddstu();

}

}

Adduser.java

packagestudent;

/*

*Tochangethistemplate,chooseTools|Templates

*andopenthetemplateintheeditor.

*/

/**

*

*@authorAdministrator

*/

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjava.sql.*;

publicclassAdduserextendsJInternalFrameimplementsActionListener{

intn=0;

JLabelj1,j2,j3,j4;

JTextFieldtf1;

JPasswordFieldtf2,tf3;

JButtonb1,b2;

JComboBoxcb1;

Adduser(){

super("注册新用户");

setLayout(null);

j1=newJLabel("输入用户名");

j2=newJLabel("输入密码");

j3=newJLabel("再次输入");

j4=newJLabel("请选择权限");

Stringsc1[]={"管理员","普通用户"};

cb1=newJComboBox(sc1);

tf1=newJTextField(20);

tf2=newJPasswordField(20);

tf3=newJPasswordField(20);

tf2.setEchoChar('*');

tf3.setEchoChar('*');

b1=newJButton("注册");

b2=newJButton("清空");

b1.addActionListener(this);

b2.addActionListener(this);

add(j1);

add(j2);

add(j3);

add(j4);

add(cb1);

add(tf1);

add(tf2);

add(tf3);

add(b1);

add(b2);

j1.setBounds(70,20,80,20);

j2.setBounds(70,70,80,20);

j3.setBounds(70,120,80,20);

j4.setBounds(320,50,120,30);

tf1.setBounds(180,20,120,20);

tf2.setBou

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

当前位置:首页 > PPT模板 > 商务科技

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

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