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上有显著的提高。

相关文档
最新文档