员工薪资管理系统课程设计
学院:
班级:
学号:
姓名:余黎晨李雪敏敬翰林颜学宏
指导教师:李竹林
目录一:绪论
1.1设计目的
1.2设计内容
1.3开发背景
1.4开发环境
1.5组内成员及分工
二:需求分析
2.1题目分析
2.2功能分析
2.3数据流图
2.4数据字典
2.5系统功能
三:系统分析与设计
3.1概念结构设计
3.2逻辑结构设计
3.3 物理结构设计
四:数据库实施及运行
4.1建基本表
4.3功能实现
4.4完整代码
五:设计心得及体会
一:绪论
1.1设计目的
员工薪资系统的主要目的是通过操作计算机代替手工劳动,能够在该系统内完成员工的信息录入,查询,删除等操作,方便公司的高效化,规范化管理,有利于员工更好更方便了解自己的薪资信息。
系统开发的总体任务就是实现员工薪资管理的系统化、规范化和自动化。
1.2设计内容
题目6:员工薪资管理
1)背景资料
a)某单位现有1000名员工,其中有管理人员、财务人员、技术人员和
销售人员。
b)该单位下设4个科室,即经理室、财务科、技术科和销售科。
c)工资由基本工资、福利补贴和奖励工资构成,失业保险和住房公积
金在工资中扣除。
d)每个员工的基本资料有姓名、性别、年龄、单位和职业(如经理、
工程师、销售员等)。
e)每月个人的最高工资不超过3000元。工资按月发放,实际发放的工
资金额为工资减去扣除。
2)设计要求:
a)进行需求分析,编写数据字典。
b)设计E-R图。
c)实现按照科室录入个人的基本资料、工资和扣除金额的数据。
d)计算个人的实际发放工资。
e)按科室、职业分类统计人数和工资金额。
f)实现分类查询。
g)能够删除辞职人员的数据。
h)开发工具不限。
1.3开发背景
当今社会,随着企业人数的不断增加,企业员工薪资的管理工作也越来越复杂,资金是企业生存的核心部分,而资金流动也是关键环节,随着计算机的普及,计算机管理系统已经原来越来越广泛的应用于各个中小型企业中,用计算机取代手工对企业管理的操作也是势在必行的,并且人为操作容易造成信息错误,纸质材料不易保存,可能会导致企业运转出现滞缓现象,影响企业发展。为了更好的、更方便地管理企业中各个成员的工资发放情况,我们必须要有一个完善的、合理的、便捷的员工薪资管理系统来管理公司员工工资的发放情况。
该员工薪资管理系统主要用于中小型企业员工的工资发放管理,此系统的建立和使用有利于员工更好的了解自己的薪资信息,提高公司员工薪资发放工作的效率,大大减少纸质管理对工作带来的失误。
1.4开发环境
开发平台:SQL Server2005
开发工具:Eclipse JDBC
开发语言:SQL语言JAVA语言
1.5组内成员及分工
李雪敏:系统框架撰写报告
颜学宏:代码编写数据库的连接与运行
余黎晨:概念结构设计代码调试
敬翰林:逻辑结构设计需求分析
二:需求分析
2.1题目分析
该题目要求设计一个员工薪资系统,实现员工信息的有序化,规范化,并能进行员工信息录入,查询,修改,删除等操作,能实现分类查询,
2.2功能分析
该员工薪资系统能够实现的功能如下:
员工信息的管理,包括姓名,性别,年龄,职业,员工号,部门编号基本信息的录入,查询,删除,修改等操作
部门信息的管理,包括部门编号和部门名称,查询每个部门的业绩和员工薪资情况
薪资信息的管理,包括员工号,部门编号,基本工资,福利补贴,奖励工资,
失业保险,住房公积金,实发薪资等信息,统计出员工的基
本工资,福利补贴,奖励工资,扣除失业保险,住房公积金
后所得的工
2.3数据流图
2.4数据字典
数据字典在数据库设计中占有很重要的地位,数据字典是各类数据描述的集合,它是进行详细的数据收集和数据分析后所获得的主要成果。根据数据流图对员工薪资管理数据库数据字典的设计如下所示:
2.41数据结构名:员工
含义说明:员工信息
含义说明:部门信息
含义说明:员工薪资信息
组成:员工号,部门编号,基本工资,福利补贴,奖励工资,扣罚工资,
2.5系统功能
该员工薪资系统的功能如下:
三:系统分析与设计3.1概念结构设计
E—R图设计
员工实体——关系图
部门实体——关系图
工资实体——关系图
总的E—R图
3.2概念结构设计
E-R图表示的概念模型是用户数据要求的形式化,它不为任何一个DBMS 所支持,而逻辑结构设计的任务就是把概念模型结构转换成某个具体的DBMS 所支持的数据模型,员工薪资管理E-R图转换为关系模式为:
员工(姓名,性别,年龄,职业,员工号,部门编号)
部门(部门编号,部门名称)
薪资(员工号,员工工资,福利补贴,奖励工资,失业保险,住房公积金,实发薪资)
四:数据库实施与运行
4.1建基本表
员工信息表
部门信息表
工资信息表
4.3功能实现
4.31系统界面展示:
4.32员工信息查询功能
按工号查询:
按姓名查询:
4.33员工工资查询功能:
4.34修改员工工资功能:
4.35添加员工功能:
4.36修改员工信息功能:
4.37删除员工信息功能:
4.4完整代码展示
4.41源程序代码
//类DBConnect用于数据库的连接
//导入sql包
import java.sql.*;
//创建数据库连接类DBConnect
public class DBConnect
{
//静态方法提高数据库的连接效率
public static Connection getConn() throws Exception
{
//加载JDBC驱动
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//以系统默认用户身份,连接数据库StudentManager
return DriverManager.getConnection("jdbc:odbc:Test","dmj","753");
}
}
4.42主框架代码:
//系统主框架类
//导入系统的包
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//创建主框架类MainFrame
public class MainFrame extends JFrame implements ActionListener {
//创建内容面板
JPanel contentPane;
//创建菜单栏组件的对象
JMenuBar jMenuBar1=new JMenuBar();//菜单条
JMenu jMenu0=new JMenu("退出系统");//菜单
JMenuItem jMenuItem0=new JMenuItem("退出");//子菜单
JMenu jMenu1=new JMenu("员工管理");
JMenuItem jMenuItem1=new JMenuItem("添加员工");
JMenuItem jMenuItem2=new JMenuItem("修改员工");
JMenuItem jMenuItem3=new JMenuItem("删除员工");
JMenu jMenu2=new JMenu("工资管理");
JMenuItem jMenuItem4=new JMenuItem("添加工资");
JMenuItem jMenuItem5=new JMenuItem("修改工资");
JMenuItem jMenuItem8=new JMenuItem("工资查询");
JMenu jMenu3=new JMenu("员工查询");
JMenuItem jMenuItem6=new JMenuItem("按工号查询");
JMenuItem jMenuItem7=new JMenuItem("按姓名查询");
JMenuItem jMenuItem9=new JMenuItem("互动");
//创建标签,用于显示信息
JLabel jLabel1=new JLabel("欢迎使用员工薪资管理系统");
//创建构造方法
public MainFrame()
{
try{
//关闭框架窗口时的默认事件方法
setDefaultCloseOperation(EXIT_ON_CLOSE);
//调用初始化方法
jbInit();
}
catch(Exception exception){
exception.printStackTrace();
}
}
//界面初始化方法
private void jbInit() throws Exception
{
//创建内容面板
contentPane =(JPanel) getContentPane();
//设置内容面板的布局为空
contentPane.setLayout(null);
//主框架的大小
setSize(new Dimension(400,360));
//主框架的标题
setTitle(" 员工薪资管理系统");
//添加事件监听器
jMenuItem0.addActionListener(this);
jMenuItem1.addActionListener(this);
jMenuItem2.addActionListener(this);
jMenuItem3.addActionListener(this);
jMenuItem4.addActionListener(this);
jMenuItem5.addActionListener(this);
jMenuItem6.addActionListener(this);
jMenuItem7.addActionListener(this);
jMenuItem8.addActionListener(this);
jMenuItem9.addActionListener(this);
//添加菜单条到主框架
setJMenuBar(jMenuBar1);
//添加菜单到菜单条
jMenuBar1.add(jMenu0);
jMenuBar1.add(jMenu1);
jMenuBar1.add(jMenu2);
jMenuBar1.add(jMenu3);
//添加菜单项到菜单
jMenu0.add(jMenuItem0);
jMenu1.add(jMenuItem1);
jMenu1.add(jMenuItem2);
jMenu1.add(jMenuItem3);
jMenu2.add(jMenuItem4);
jMenu2.add(jMenuItem5);
jMenu2.add(jMenuItem8);
jMenu3.add(jMenuItem6);
jMenu3.add(jMenuItem7);
//添加标签到主框架内容面板
contentPane.add(jLabel1);
//设置标签组件的大小和字体
jLabel1.setFont(new java.awt.Font("黑体",Font.BOLD,20));
jLabel1.setBounds(new Rectangle(65,70,275,55));
}
//菜单项事件对应的处理方法
public void actionPerformed(ActionEvent actionEvent)
{
//点击“系统”菜单下的“退出”菜单项
if(actionEvent.getSource()==jMenuItem0)
{
System.exit(0);
}
//点击“员工管理”菜单下的“添加员工”菜单项
if(actionEvent.getSource()==jMenuItem1)
{
//创建“添加员工”面板对象
AddEmployee AddEmp=new AddEmployee();
//移除主框架上原有的内容
this.remove(this.getContentPane());
//加载“添加职工”面板的对象到主框架
this.setContentPane(AddEmp);
//令界面可见
this.setVisible(true);
}
//点击“员工管理”菜单下的“修改员工”菜单项
if(actionEvent.getSource()==jMenuItem2)
{
//创建“修改员工”面板对象
ModifyEmployee ModifyEmp=new ModifyEmployee();
this.remove(this.getContentPane());
//加载“修改员工”面板的对象到主框架
this.setContentPane(ModifyEmp);
this.setVisible(true);
}
//点击“员工管理”菜单下的“删除员工”菜单项
if(actionEvent.getSource()==jMenuItem3)
{
//创建“删除员工”面板对象
DeleteEmployee DeleteEmp=new DeleteEmployee();
this.remove(this.getContentPane());
//加载“删除员工”面板的对象到主框架
this.setContentPane(DeleteEmp);
this.setVisible(true);
}
//点击“工资管理”菜单下的“添加工资”菜单项
if(actionEvent.getSource()==jMenuItem4)
{
//创建工资添加的面板对象
AddSalary AddSal=new AddSalary();
this.remove(this.getContentPane());
//加载工资添加面板的对象到主框架
this.setContentPane(AddSal);
this.setVisible(true);
}
//点击“工资管理”菜单下的“修改工资”菜单项
if(actionEvent.getSource()==jMenuItem5)
{
//创建工资修改的面板对象
ModifySalary ModifySal=new ModifySalary();
this.remove(this.getContentPane());
//加载工资修改面板的对象到主框架
this.setContentPane(ModifySal);
this.setVisible(true);
}
//点击“工资管理”菜单下的“工资查询”菜单项
if(actionEvent.getSource()==jMenuItem8)
{
//创建工资修改的面板对象
SalaryInquire SalaryInq=new SalaryInquire();
this.remove(this.getContentPane());
//加载工资修改面板的对象到主框架
this.setContentPane(SalaryInq);
this.setVisible(true);
}
//点击“员工查询”菜单下的“按工号查询”菜单项
if(actionEvent.getSource()==jMenuItem6)
{
//创建“按工号查询”面板对象
InquireOnGH OnGH=new InquireOnGH();
//移除主框架上原有的内容
this.remove(this.getContentPane());
this.setContentPane(OnGH);
this.setVisible(true);
}
}
}
4.43主函数Main代码:
//系统的主程序类Main
//导入包
import java.awt.*;
import javax.swing.*;
//创建主系统类
class Main
{
public static void main (String[] args)
{
//创建主界面,调用MainFrame()构造函数和方法
MainFrame frame=new MainFrame();
//获取屏幕尺寸
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
//获取主界面的窗体尺寸
Dimension frameSize =frame.getSize();
//令主界面窗体居中
if(frameSize.height>screenSize.height)
frameSize.height=screenSize.height;
if(frameSize.width>screenSize.width)
frameSize.width=screenSize.width;
frame.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height )/2);
//令主界面显示
frame.setVisible(true);
}
}
4.44员工信息查询代码
按工号查询代码
//导入系统的类包
import java.awt.*;
im//"按员工号查询"面板类InquireOnGH
port java.sql.*;
import javax.swing.*;
import java.awt.event.*;
//创建“按员工号查询”类
public class InquireOnGH extends JPanel implements ActionListener
{
//声明连接数据库对象
Connection con;
//声明SQL语句对象
Statement st;
//创建组件对象:标签、文本行、单选
JLabel jLabel1=new JLabel("请输入员工号:");
JTextField jTextField1=new JTextField();
JButton jButton1=new JButton("查找");
JTextArea jTextArea1=new JTextArea();
//构造方法
public InquireOnGH()
{
try{
//调用初始化方法
jbInit();
}
catch(Exception exception){
exception.printStackTrace();
}
}
//面板初始化方法
private void jbInit() throws Exception
{
//连接数据库
con=DBConnect.getConn();
st=con.createStatement();
//框架的布局
this.setLayout(null);
//设置各组件的大小
jLabel1.setFont(new java.awt.Font("黑体",Font.BOLD,16));
jLabel1.setBounds(new Rectangle(46,4,222,32));
jTextField1.setBounds(new Rectangle(47,37,247,31));
jButton1.setBounds(new Rectangle(47,86,247,30));
jTextArea1.setBounds(new Rectangle(24,130,305,109));
//添加按钮动作事件
jButton1.addActionListener(this);
//添加组件到面板
this.add(jLabel1);
this.add(jTextField1);
this.add(jTextArea1);
this.add(jButton1);
}
//点击按钮事件
public void actionPerformed(ActionEvent e)
{
//获取输入的员工号
String EmployeeID=jTextField1.getText();
//清空文本区原有的内容
jTextArea1.setText("");
try{
//利用st对象执行SQL语句,返回结果集对象
ResultSet rs=st.executeQuery("select * from Employee where 员工号