资源描述
课 程 设 计 任 务 书
专 业
计算机科学与技术
班 级
13计专升本
姓 名
徐占新
设 计 起 止 日 期
2014年6月30日---2014年7月4日
设计题目:工资管理系统
设计任务(主要技术参数):
1.课程设计目的
进一步熟悉Java语言的语法,加深对数据结构及软件工程中相关知识的理解,掌握Java语言编程的各种基本操作。
2.课程设计要求
1) 用Java语言编写工资管理系统程序,采用面向对象设计方法,实现信息的录入、删除、修改及查找、汇总等基本功能,并上机调试运行。
2) 初步掌握软件系统的设计和开发方法,培养独立工作能力。
3) 撰写课程设计说明书一份。
3. 课程设计环境
1) 硬件环境:CPU:Intel Core i3-350M(2.13GHz) 硬盘:320G 内存:2G
2) 软件环境: Myeclipse-10.7.1
指导教师评语:
成绩: 签字:
年 月 日
1、课程设计目的
工资管理系统系统对企业加强工资管理有着极其重要的作用,就一般的大型企业来说,它的设计内容非常复杂而且繁多,比如拥有工资计算功能,工资统计功能,报表输出功能,而且设计的模块也很多,比如工资管理模块,工资统计模块,报表设计模块,打印输出模块,模糊查询模块等等。因此,工资管理系统为公司和员工带来极大的方便。通过我们组员之间的分析与研究,要求系统具有如下功能:
提供用户登录、用户查询功能员工考勤情况表
1.员工工种情况表,反映员工的工种、等级,基本工资等信息
2.员工津贴信息表,反映员工的加班时间,加班类别、加班天数、津贴情况等
3.员工基本信息表
4.员工月工资表
2、功能描述
工资管理系统在用户登录时分两个部分:管理员和普通用户。普通用户可以进入用户界面查询各个信息,但只有查询功能。管理员的权限除了普通用户的权限外,还有对各个部分的信息进行添加、修改、删除等功能。所有的功能管理员都能实现。
下面是系统所要达到的几条要求:
1.要求系统准确的记录各种信息。
2.系统要提供丰富的查询功能。
3.系统可以对基础数据进行维护。
4.系统运行在Windows平台下,需要有良好的图形用户界面。
5.系统具有良好的可扩展性,良好的可移植性。
2.1系统的体系结构
2.1.1 系统的登入运行
登入系统
系统主界面
员工信息
检索员工
绩效管理
退出运行
图1系统登入
系统有一个进入界面,只有输入密码才能进入主菜单,在主菜单中进行一些所需操作。
在主菜单中可以添加删除修改登录用户,查找添加员工信息等操作。
1、员工信息的添加
添加这一项,主要的工作就是完成对员工资料的填写,和对员工平时表现的一个客观地而评价,以方便等换成月末对员工的奖金数目,给员工颁发月末工资提供一个重要依据。
2、员工信息的删除
删除这一项,只要的工作就是根据员工的编号找到相应的员工相关资料,并进行删除,删除的还有与员工相关的奖金和工资也要从总的工资支出中一并删除,如果没有找到与编号相关的员工资料,那么系统就会发出相应的提示
2.1.2菜单界面所连接的信息
查询
删除
添加
基本工资
奖金
领取
工资
职务
编号
部门
工作评价
基本工资
性别
姓名
员工
拥有
部门
图2界面连接
反应了一个人事管理系统中所要涉及的一些模块。
如:1、员工信息
2、检索员工
3、绩效管理
4、退出运行
2.2员工信息的管理
图3 员工信息
员工
工作评价
部门
基本工资
职务
员工姓名
性别
员工编号
1员工信息的添加
1员工信息的添加
1员工信息的添加
2员工信息的删除
3 所有员工信息显示
2.3员工信息的检索
按员工编号
检索
员工信息
按员工姓名
按部门
按性别
图4员工信息
通过不同的条件来查看员工信息,如果所查看的信息部存在就会弹出提示信息框,提示一随查看的员工不存在。
2.4员工信息实体与工资信息实体之间的联系
2.4.1员工的工资
图5员工工资
员工
工资
n
1
领取
职务
更具员工的表现给予一个评价,给予相应的奖金。
2.4.2 所有员工工资的汇总
通过计算所有员工的工资,统计所需支出的总工资。
3、数据库设计
1.用户表:
表1用户表的结构
列名
数据类型
长度
约束
用户名
char
10
主键
密码
char
6
不为空
2.职工基本信息表:
表2 职工基本信息表的结构
列名
数据类型
长度
约束
职工编号
char
10
主键
姓名
char
10
不为空
性别
char
2
不为空
出生日期
datetime
8
不为空
职称
char
10
允许空
部门
char
10
允许空
入职时间
datetime
8
不为空
3.职工工资表:
表3 职工工资表的结构
列名
数据类型
长度
约束
职工编号
char
10
主键
年份
char
4
不为空
月份
char
2
不为空
基本工资
int
4
不为空
补助
int
4
允许空
奖金
int
4
允许空
应发工资
int
4
不为空
缴税
int
4
不为空
水电费
int
4
不为空
保险费
int
4
不为空
实发工资
int
4
不为空
4、功能实现
4.1 详细设计
4.1.1 建立系统主窗体
工资管理系统第一个界面就是用户登录界面,该界面是用户想要登录本系统必须有的步骤,当运行时,弹出界面。按钮选中管理员后,输入正确的管理员用户名和密码后,按登录按钮就可进入系统主界面。如果用户名或密码输入错误会出相应的提示信息。运行时登录界面,如图5.1所示。
图5.1登陆界面
界面主要代码如下:
public class Login1{
public static void main(String[] args){
Login mf = new Login();
}
}
class Login{
JFrame login = new JFrame();
JButton b0 = new JButton();
JButton b1 = new JButton();
JTextField inputtext1 = new JTextField(15);
JTextField inputtext2 = new JTextField(15);
JLabel l1 = new JLabel();
JLabel l2 = new JLabel();
JLabel l3 = new JLabel();
Login(){
login.setTitle("用户登录");
login.setLayout(null);
login.setBounds(150,80,320,250);
login.setVisible(true);
login.add(l3);
l3.setBounds(80,-10,100,100);
l3.setText("工资管理系统");
l3.setFont(new Font("黑体",Font.BOLD,15));
login.add(l1);
l1.setBounds(50,30,80,80);
l1.setText("用户名:");
login.add(inputtext1);
inputtext1.setBounds(100,60,100,20);
login.add(l2);
l2.setBounds(50,60,80,80);
l2.setText("密 码:");
login.add(inputtext2);
inputtext2.setBounds(100,90,100,20);
login.add(b0);
b0.setBounds(60,130,60,20);
b0.setText("登录");
b0.setMargin(new Insets(0,0,0,0));
login.add(b1);
b1.setBounds(130,130,60,20);
b1.setText("退出");
b1.setMargin(new Insets(0,0,0,0));
}
}
4.1.2登录窗体
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.awt.geom.*;
class logFrame extends Frame{
String sql=null;
ResultSet rs=null;
sqlconn dbconn=new sqlconn();
Label nameLab=new Label(" 账 号: ");
Label pwdLab=new Label(" 密 码: ");
Label desLab=new Label("工资管理系统");
TextField nameTxt=new TextField();
TextField pwdTxt=new TextField();
Button logBut=new Button("登录");
Button exitBut=new Button("退出");
Image img;
public logFrame(){
setTitle("欢迎使用工资管理系统");
setLayout(null);
setResizable(false);
setSize(400,300);
setBackground(Color.LIGHT_GRAY);
Dimension scr=Toolkit.getDefaultToolkit().getScreenSize();
Dimension frm=this.getSize();
setLocation((scr.width-frm.width)/2,(scr.height-frm.height)/2-18);
img=getToolkit().getImage(getClass().getResource("/login_pic.jpg"));
nameLab.setBounds(125,185,50,20);
pwdLab.setBounds(125,215,50,20);
nameTxt.setBounds(185,185,80,20);
pwdTxt.setBounds(185,215,80,20);
logBut.setBounds(155,245,40,20);
exitBut.setBounds(215,245,40,20);
desLab.setBounds(160,50,80,30);
//add(nameLab);
//add(pwdLab);
add(nameTxt);
add(pwdTxt);
add(logBut);
add(exitBut);
//add(desLab);
//密码文本框显示"*"
pwdTxt.setEchoChar('*');
setVisible(true);
//注册"登陆"按钮监听器
logBut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
sql="select * from users where name='"+nameTxt.getText()+"' and password='"+pwdTxt.getText()+"'";
try{
rs=dbconn.getRs(sql);
if(rs.next())
{
mainFrame mf=new mainFrame();
dispose();
//调用工资管理系统主界面
mf.show();
}
else{
JOptionPane jop=new JOptionPane();
jop.showMessageDialog(null,"用户名或密码,请重新输入!","错误提示",1);
}
}
catch(Exception ee){}
}
});
//注册文本框监听器
//输密码后按"回车"键,检查用户密码
pwdTxt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
sql="select * from users where name='"+nameTxt.getText()+"' and password='"+pwdTxt.getText()+"'";
try{
rs=dbconn.getRs(sql);
if(rs.next())
{
mainFrame mf=new mainFrame();
dispose();
mf.show();
}
else{
JOptionPane jop=new JOptionPane();
jop.showMessageDialog(null,"用户名或密码,请重新输入!","错误提示",1);
}
}
catch(Exception ee){}
}
});
//按"退出"按钮退出系统
exitBut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//dispose();
System.exit(0);
}
});
//添加窗口"关闭"按钮的关闭功能
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
}
});
}
public void paint(Graphics g){
g.setClip(new Rectangle2D.Float(0,0,400,300));
g.drawImage(img,0,0,this);
}
}
public class login{
public static void main(String[] args){
logFrame logf1=new logFrame();
}
}
4.1.3添加、修改和删除用户
主要代码如下:
//系统主框架类
//导入系统的包
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("按姓名查询");
JMenu jMenu4=new JMenu("帮助");
JMenuItem jMenuItem9=new JMenuItem("互动");
//创建标签,用于显示信息
JLabel jLabel1=new JLabel("工资管理系统");
JLabel jLabel2=new JLabel("2011年7月9日");
//创建构造方法
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);
jMenuBar1.add(jMenu4);
//添加菜单项到菜单
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);
jMenu4.add(jMenuItem9);
//添加标签到主框架内容面板
contentPane.add(jLabel1);
contentPane.add(jLabel2);
//设置标签组件的大小和字体
jLabel1.setFont(new java.awt.Font("黑体",Font.BOLD,20));
jLabel1.setBounds(new Rectangle(65,70,275,55));
jLabel2.setFont(new java.awt.Font("黑体",Font.BOLD,16));
jLabel2.setBounds(new Rectangle(90,150,200,35));
}
//菜单项事件对应的处理方法
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);
}
//点击“职工查询”菜单下的“按姓名查询”菜单项
if(actionEvent.getSource()==jMenuItem7)
{
//创建“按姓名查询”面板对象
InquireOnName OnName=new InquireOnName();
//移除主框架上原有的内容
this.remove(this.getContentPane());
this.setContentPane(OnName);
this.setVisible(true);
}
//点击“帮助”菜单下的“互动”菜单项
if(actionEvent.getSource()==jMenuItem9)
{
//创建“帮助”面板对象
EmployeeHelp EmployeeH=new EmployeeHelp();
//移除主框架上原有的内容
this.remove(this.getContentPane());
this.setContentPane(EmployeeH);
this.setVisible(true);
}
}
}
5、设计体会
两周的时间很快就过去了,在这两周的短暂的Java课程设计过程中,我们在一起学习,加深我们对Java学科认识的深度,平时没怎么太在乎,以为开卷考试就有点放松自己。现在知道自己错了,因为在课设过程中,必须得对Java的知识特别了解,而且必须自己动手去做。经过我们共同研究讨论,最终确定了公司工资管理系统。之后我们就开始收集资料,我们上网下载,到图书馆检索,众多资料,纷繁复杂,真是忙的我们不可开交。在我们一起查找资料过程中,通过了解该系统后,我们就把我们小组的分工工作做好了。通过这一系列的过程我们为以后的工作,积累了宝贵的经验。每走一步对我们来说都是新的尝试与挑战。充分体会了从事系统开发工作需要特别严谨认真的态度和作风,一点都马虎不得。每一个细微的细节都必须十分的注意,如果不认真思考决策,就会出现或大或小的错误,如果早期的错误隐藏下来,对后面的工作影响就会很大,甚至有时要推倒很多前面做的工作重来。给我们印象最深刻的是在代码调试的过程,以为在该部分是需要非常仔细、谨慎的。
我觉得在这次Java课设过程中最重要的是在代码的调试部分,还有这次我也体会到了团队精神的伟大。而且让我明白了小组活动让我们加深对集体荣誉的理解。在课设过程中,我们有心情低落、难过的时候,但最终的结果是美好的。经历了很多也收获了很多。
6、参考文献
[1] java面向对象程序设计教程(第二版) 李发致 编著 清华大学出版社
[2] java2 实用教程(第三版) 耿祥义 张跃平 编著 清华大学出版社
[3] java程序设计经典教程(融合上机操作实例)张居敏 石礼娟 龙翔编著 电子工业出版社
[4] 软件工程 重庆大学 出版社
[5] 数据库系统原理教程 王珊 陈红 编著 清华大学出版社
展开阅读全文