JAVA课程设计2013
课程设计(论文)任务书
学院理学院专业信息与计算科学学生姓名丁玲玲班级学号1109010206
课程名称Java面向对象程序设计课程设计
课程设计
(论文)题目
职工工资管理系统
内容及要求:
1、要求:(1)使用Java语言及Eclipse开发工具设计并实现职工工资管理
系统。
(2)完成添加、删除、查询、修改等功能。
(3)使用界面完成显示。
2、开发环境: Windows XP ,Java + Eclipse
计划与进度安排:
第12周
星期四:任务分析与总体设计
星期五:软件算法与流程设计
第13周
星期一,星期二,星期三:软件编码实现
星期四:软件总体调试
星期五:软件运行分析
第14周
星期二:答辩、验收程序
星期四:答辩、验收程序
成绩:
指导教师(签字):
2012年月日专业负责人(签字):
年月日
主管院长(签字)
年月日
摘要
Java语言虽然发展历史比较短,但却是比较优秀的面向对象编程语言,在具有强大功能的同时,又具有突出的简单性、可移植性、安全性以及支持并发程序等优良特性。工资管理系统适合于中、小型企业公司职工工资信息管理,录入功能具有多重提示,已录入职工工资信息提示,工资信息有误提示;若文件中没有所查职工的工资信息,当修改与删除此职工信息时可以提示没有此职工的工资信息,等等。这个程序应用了基于Swing的图形化用户界面,利用了容器、组件以及布局管理器构建用户界面,实现了用户在GUI 操作的响应。
关键词:Java语言;工资管理系统;Swing图形化用户界面;GUI
目录
摘要 (2)
一、设计目的及内容要求 (4)
1.1 设计目的: (4)
1.2 内容要求: (4)
二、系统总体设计 (5)
三、系统详细设计(程序源代码) (6)
3.1 构造wage函数: (6)
3.2 用户登陆界面及主函数: (6)
3.3 工资管理的添加、删除、修改、查找、退出功能的实现:
(8)
四、运行结果及分析 (14)
4.1登录窗口 (14)
4.2初始化界面 (15)
4.3 添加窗口 (16)
4.4删除窗口 (17)
4.5查询窗口 (18)
4.6修改窗口 (19)
五、课程总结 (20)
六、致谢 (20)
七、参考文献 (20)
一、设计目的及内容要求
1.1设计目的:
通过这次的设计,主要是做出一个小型的员工工资管理系统,来加强对JAVA所学知识的巩固和融会贯通,也对一个学期所学知识做一个小结,锻炼了自己思考问题和解决问题的能力。
1.2 内容要求:
简单的公司工资管理系统的设计与实现
(1)公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、月工资、岗位、年龄、性别等信息。
(2)工资的计算办法:经理:固定月薪为8000;技术员:工作时间*小时工
资(100元每小时);销售员:销售额*4%提成;销售经理:底薪(5000)+所辖部门销售额总额*0.5%;
(3)类的层次如下:
(4)完成增删改、查询、持久化操作
二、系统总体设计
在程序中,JFrame为顶层容器,包括JLabel,Jpanel等常用组件。还有File控制“基本信息 txt”,并在程序开始,初始化容器、初始化组件,设置事件监听器。此程序首先确定一个类继承JFrame作为底层容器。
功能选项:
JTextField为文本框,JButton为页面控制按钮。首先初始化各组按钮及基本信息表,之后创建对象,定义文本框长度,注册监听器并用到this关键字,将对象的可编辑性定义为假。应用JComboBox下拉列表组件进行岗位与性别的选择。之后进行对象的调用,进行文件的存取和文本框内的输入输出,
并设置异常处理警示机制。
这个设计主要是实现员工工资信息的添加、删除、查询、修改四个方面的内容,分别增加了ActionListener 监听器来实现。层次如下:
三 、系统详细设计(程序源代码)
3.1 构造wage 函数:
import java.awt.Panel; @SuppressWarnings ("serial") class Wage extends Panel { String s1,s2,s3,s4; double s5,s6,s7,s8;
Wage(String s1,String s2,String s3,String s4,double s5,double s6,double s7,double s8)
{ this .s1=s1; this .s2=s2; this .s3=s3; this .s4=s4; this .s5=s5; this .s6=s6; this .s7=s7; this .s8=s8;
}
}
3.2 用户登陆界面及主函数:
import java.awt.BorderLayout; import java.awt.Container; import java.awt.Font;
工资管理系统
添加
删除
查询
修改
import java.awt.TextField;
import java.awt.event.*;
import javax.swing.*;
@SuppressWarnings("serial")
public class Worker extends JFrame
{
public JFrame frame;
public Container c;
public Worker()
{
frame = new JFrame("职工工资管理系统");
c = frame.getContentPane();
c.setLayout(null);
frame.setResizable(false);
JLabel information0= new
JLabel("欢迎进入职工工资管理系统",JLabel.CENTER);
information0.setFont(new Font("宋体",Font.BOLD,25));
information0.setSize(350,50);
information0.setLocation(0,0);
c.add(information0);
JLabel yonghuL= new JLabel("用户名:",JLabel.CENTER);
yonghuL.setFont(new Font("宋体",Font.BOLD,18));
yonghuL.setSize(80,30);
yonghuL.setLocation(60,70);
c.add(yonghuL);
final TextField yonghuT=new TextField();
yonghuT.setSize(90,25);
yonghuT.setLocation(170,70);
c.add(yonghuT);
JLabel koulingL= new JLabel("口令:",JLabel.CENTER);
koulingL.setFont(new Font("宋体",Font.BOLD,18));
koulingL.setSize(80,30);
koulingL.setLocation(60,110);
c.add(koulingL);
final TextField koulingT=new TextField();
koulingT.setEchoChar('*');
koulingT.setSize(90,25);
koulingT.setLocation(170,110);
c.add(koulingT);
JButton registerButton = new JButton( "登录" );
registerButton.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent event )
{ String a,b;
a=yonghuT.getText();
b=koulingT.getText();
if((a.equals("工资管理系统")==true)&&(b.equals("123456")==true)) {
z2 win=new z2();
win.setSize(500,400);
win.setVisible(true);
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
win.setResizable(false);
win.setLocation(100,100);
}
else
JOptionPane.showMessageDialog(null,
"对不起,你输入的信息错误!");
} });
registerButton.setLocation(40,150);
registerButton.setSize(80,30);
registerButton.setFont(new Font("宋体",Font.BOLD,18));
c.add(registerButton, BorderLayout.CENTER);
JButton backButton = new JButton( "退出" );
backButton.addActionListener( new ActionListener()
{ public void actionPerformed( ActionEvent event )
{
System.exit(0);
}
} );
backButton.setLocation(190,150);
backButton.setSize(80,30);
backButton.setFont(new Font("宋体",Font.BOLD,18));
c.add(backButton, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(350,300);
frame.setLocation(100,100);
frame.setVisible(true);
}
public static void main(String[] args) {
new Worker();
}
}
3.3 工资管理的添加、删除、修改、查找、退出功能的实现:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
@SuppressWarnings("serial")
class z2 extends JFrame implements ActionListener
{ @SuppressWarnings("rawtypes")
LinkedList list=null;
public JFrame f;
PrintJob p=null;
Graphics g=null;
public Container con;
Object position[]={"经理","技术员","销售员","销售经理"};
@SuppressWarnings({ "rawtypes", "unchecked" })
JComboBox combobox_position= new JComboBox(position);
Object sex[]={"男","女"};
@SuppressWarnings({ "unchecked", "rawtypes" })
JComboBox combobox_sex= new JComboBox(sex);
JLabel L1 = new JLabel("ID:",JLabel.CENTER),
L2 = new JLabel("姓名:",JLabel.CENTER),
L3 = new JLabel("岗位:",JLabel.CENTER),
L4 = new JLabel("性别:",JLabel.CENTER),
L5 = new JLabel("年龄:",JLabel.CENTER),
L6 = new JLabel("销售额:",JLabel.CENTER),
L7 = new JLabel("工作时间:",JLabel.CENTER),
L8 = new JLabel("总工资:",JLabel.CENTER);
JTextField T1 = new JTextField("编号"),T2 = new JTextField("姓名"), T3 = new JTextField(),T4 = new JTextField(),
T5 = new JTextField("0"),T6 = new JTextField("0"),
T7= new JTextField("0"), T8= new JTextField("0");
JLabel L9 = new JLabel("职工工资管理系统",JLabel.CENTER);
JTextArea showT= new JTextArea(12,33);
JButton b_add=new JButton("添加");
JButton b_move=new JButton("删除");
JButton b_modify=new JButton("修改");
JButton b_xun=new JButton("查询");
JButton b_back=new JButton("退出");
@SuppressWarnings("rawtypes")
z2()
{ super("职工工资管理窗口");
list=new LinkedList ();
con=getContentPane();
JScrollPane pane=new JScrollPane(showT);
showT.setEditable(false);
T8.setEditable(false);
JPanel save=new JPanel(), p2=new JPanel(),p3=new JPanel(),
p4=new JPanel(), p5=new JPanel(), p6=new JPanel();
save.setLayout(new GridLayout(4,5));
save.add(L1);save.add(T1);save.add(L2);save.add(T2);
save.add(L3);save.add(combobox_position);
save.add(L4);save.add(combobox_sex);save.add(L5);save.add(T5);
save.add(L6);save.add(T6);save.add(L7);
save.add(T7);save.add(L8);save.add(T8);save.add(L9);
p6.add(L9);
p2.setLayout(new GridLayout(2,2));
p3.setLayout(new GridLayout(2,2));
p4.setLayout(new GridLayout(8,1));
p4.add(b_add);p4.add(b_move);p4.add(b_xun); p4.add(b_modify);p4.add(b_back); p5.add(pane);
JSplitPane split_one,split_two,split_three,split_four;
split_one=new JSplitPane(JSplitPane.VERTICAL_SPLIT,p6,p4);
split_two=new JSplitPane(JSplitPane.VERTICAL_SPLIT,p4,save);
split_three=new JSplitPane(JSplitPane.VERTICAL_SPLIT,save,p3);
split_four=new
JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,split_three,p5);
con.add(split_one,BorderLayout.NORTH);
con.add(split_two,BorderLayout.CENTER);
con.add(split_three,BorderLayout.SOUTH);
con.add(split_four,BorderLayout.EAST);
b_add.addActionListener(this);
b_xun.addActionListener(this);
b_move.addActionListener(this);
b_modify.addActionListener(this);
b_back.addActionListener(this);
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public void actionPerformed(ActionEvent e)
{
//添加方法
if(e.getSource()==b_add)
{
String ss1=null;
ss1=T1.getText();
if(combobox_position.getSelectedItem().equals("经理")){
}
else if(combobox_position.getSelectedItem().equals("技术员")){
}
else if(combobox_position.getSelectedItem().equals("销售员")){
}
else if(combobox_position.getSelectedItem().equals("销售经理")){
}
double securityWarningPointX = 0;
Wage cus=new Wage(ss1, ss1, ss1, ss1, ABORT, securityWarningPointX, BOTTOM_ALIGNMENT, ABORT);
if(cus.s1.equals("编号"))
{ JOptionPane.showMessageDialog(null,
"请输入职工信息!!!");}
else{
try{
FileInputStream come_in11=new FileInputStream("zhigong1.txt");
ObjectInputStream in11=new ObjectInputStream(come_in11);
list=( LinkedList)in11.readObject();
in11.close();
}
catch(ClassNotFoundException event){}
catch(IOException event){}
boolean b=true;
int number11=list.size();
P: for(int i=0;i { Wage cus_1=(Wage)list.get(i); if(cus_1.s1.equals(ss1)) { b=false;break P;} } if(b==false) {JOptionPane.showMessageDialog(null,"此ID已存在,请仔细核对!!!");} else { list.add(cus); {JOptionPane.showMessageDialog(null,"此职工工资信息已录入!!!");} try{ FileOutputStream file1=new FileOutputStream("zhigong1.txt"); ObjectOutputStream out1=new ObjectOutputStream(file1); out1.writeObject(list); out1.close(); } catch(IOException event){} } } T1.setText("编号");T2.setText("姓名"); T3.setText("");T4.setText(""); T5.setText("0");T6.setText("0");T7.setText("0"); } //删除方法 if(e.getSource()==b_move) { showT.setText(null); String ss10 = JOptionPane.showInputDialog(z2.this, "输入您需要删除职工信息的ID" ); try { F ileInputStream come_in22=new FileInputStream("zhigong1.txt"); ObjectInputStream in22 =new ObjectInputStream(come_in22); list=(LinkedList)in22.readObject(); boolean b2=true;int a2=0; int number2=list.size(); P: for(int i=0;i { Wage cus_2=(Wage)list.get(i); if(cus_2.s1.equals(ss10)) { a2=i; list.remove(a2); {JOptionPane.showMessageDialog(null,"此职工工资信息已删除!!!");} in22.close(); FileOutputStream file1=new FileOutputStream("zhigong1.txt"); ObjectOutputStream out1=new ObjectOutputStream(file1); out1.writeObject(list); out1.close(); b2=false; break P; } } if(b2==true) {JOptionPane.showMessageDialog(null,"没有此职工编号为"+ss10+"的工资信息!!!"); in22.close(); } } catch (IOException e1) { e1.printStackTrace(); } catch (ClassNotFoundException e1) { e1.printStackTrace(); } } //修改方法 else if(e.getSource()==b_modify) { showT.setText(null); String ss10 = JOptionPane.showInputDialog(z2.this, "输入您需要修改职工信息的ID" ); try{ FileInputStream come_in42=new FileInputStream("zhigong1.txt"); ObjectInputStream in42 =new ObjectInputStream(come_in42); list=(LinkedList)in42.readObject(); in42.close(); } catch(ClassNotFoundException event){} catch(IOException event){} boolean b4=true; int number4=list.size(); P: for(int i=0;i { Wage cus_4=(Wage)list.get(i); if(cus_4.s1.equals(ss10)) { b4=false;break P;} } if(b4==true) {JOptionPane.showMessageDialog(null,"没有此职工编号为"+ss10+"的工资!!!");} else{ } } //查询方法 if(e.getSource()==b_xun) { showT.setText(null); String ss10 = JOptionPane.showInputDialog(z2.this, "输入您需要查询职工信息的ID" ); try{ FileInputStream come_in42=new FileInputStream("zhigong1.txt"); ObjectInputStream in42 =new ObjectInputStream(come_in42); list=( LinkedList)in42.readObject(); in42.close(); } catch(ClassNotFoundException event){} catch(IOException event){} boolean b4=true;int a4=0; int number4=list.size(); P: for(int i=0;i { Wage cus_4=(Wage)list.get(i); if(cus_4.s1.equals(ss10)) { a4=i;b4=false;break P;} } if(b4==true) {JOptionPane.showMessageDialog(null,"没有此职工编号为"+ss10+"的工资!!!");} else { Wage cha=(Wage)list.get(a4); showT.append("\t职工工资条"); showT.append("\n "); showT.append("ID:"+cha.s1); showT.append("\t姓名:"+cha.s2); showT.append("\n "); showT.append("岗位:"+combobox_position.getSelectedItem()); showT.append("\t性别:"+combobox_sex.getSelectedItem()); showT.append("\n "); showT.append("年龄:"+cha.s5); showT.append("\t销售额:"+cha.s6); showT.append("\n "); showT.append("工作时间:"+cha.s7); showT.append("\t总工资:"+cha.s8); } } //退出方法 else if(e.getSource()==b_back) System.exit(0); } } 四、运行结果及分析 4.1登录窗口 进入工资管理系统界面,用户名和密码正确才可进入,否则显示输入信息错误 4.2初始化界面 4.3 添加窗口 添加信息时如果ID相同则提示此ID已存在,请仔细核对,如果没输入信息,则提示请输入职工工资信息,如果正确输入则提示此职工信息已录入4.4删除窗口 输入需删除员工的ID进行删除4.5查询窗口 输入需查询的员工ID进行查询4.6修改窗口 输入需修改信息的员工ID进行修改信息 五、课程总结 通过这次设计,我深深的意识到自己在Java方面有多么的薄弱,同时深刻的体会到平时多做练习的重要性,这次设计让对Java有了更全面的了解,在解决实际问题上能够统筹全局,逐步解决。 虽然这次课设做的程序不是很完美,没有实现所有要求的功能,但是通过我查找资料、认真修改,是我在Java上有显著的提高。