管别人要的一道考试题.实现起来比较简单.
只不过要求比较多.而且从起名字到封装全部要按照要求来做.要不然会扣分的.
请哪位高人.顺便小练下手...给个正确的答案..谢谢..题目:薪水计算
一、 语言和环境
A、 实现语言
JA VA
B、 环境要求:
1、 JDK1.4或者以上版本开发环境
二、 要求
使用Swing设计界面,选择雇员(employee)或经理(manager),在文本框中显示雇员或经理的薪水。
其中雇员的薪水只有工资(wage);
经理的薪水为工资(wage)和津贴(allowance)的总和;
为简化操作:
定义雇员的薪水(工资)为300
经理的工资为300,津贴为200
程序功能要求:
1) 当用户选择雇员按钮(JRadioButton)时,文本框中显示300,当用户选择经理按钮时,文本框显示为500
2) 设计雇员类和经理类,其中经理类继承雇员类(extends)
3) 设计展示界面,包括两个Radio按钮(JRadiobutton),标签(Jlabel),文本框(JTextFidld)
三、 推荐实现步骤
1、 建立雇员类(Employee)
A、 建立构造方法Emplyee(),在构造方法中初始化类成员变量wage=300;
B、 设计类成员方法:getSalary(),该方法用于返回雇员的薪水;
C、 设计类成员变量,wage表示工资数额,因为涉及到类的继承,访问权限定义为protected.
2、 建立经理类(Manger)
A、 建立构造方法Mange(),在构造方法中初始化类成员allowance=200
B、 设计类成员方法(覆盖父类成员方法getSalary):getSalary.  该方法用于返回经理的薪水,应该返回工资+津贴。
C、 设计类成员,因为已经继承了父类的工资,所在这里只要定义一个成员变量allowance,表示津贴的数额,注意访问权限定义为private。
3、 建立窗口类;
A、 继承Jframe
B、 窗口类中定义布局方式,边界布局(borderLayout)
C、 构造两个Jpanel,并加入到窗口类的North位置,和Center位置
D、 两个Jpanel定义为流式布局
E、 在North位置的Jpanel中加入两个JpadioButton,并编组(使用ButtonGroup)
F、 在Center位置的Jpanel中加入文本框和标签框,即完成界面设计
G、 必须在窗口类中加入一个Employee引用,作为类成员变量
方法为:Employee emp;
在程序中表现为:
H、为两个Jradio按钮分别加入侦听器,使用addActionListener
I、为两个Jradio分别撰写事件处理程序,注意:需要在事件处理程序中构造职员对象,在不同的事件处理程序中分别使用
This.emp=new Emplyee();//在雇员按钮的事件处理程序中
This.emp=new Manager();//在经理按钮的事件处理程序中
J、在事件处理程序中使用文本框的SetText方法为设置文本内容
窗口类的代码结构如下:
public class frmShow extends Jframe{
………//布局对象,组件对象的定义
employee emp;//必须加入一个引用,用于在代码中显示不同对象的薪水
public frmShow(){  //构造方法
……..//构造布局,显示组建,并加入事件侦听程序

public static void main(String args[]){ //执行程序
frmShow fs =new frmShow();
fs.setSize(250,200);
fs.setvisible(trud);
}void rdbtnManager_actionPerformed(ActionEvent e){ //经理按钮的事件处理程序
 this.emp=new manger();  //构造一个经理类对象
setTextValue(this.emp);
}void rdbtnEmployee_actionPerformed(ActionEvent e){ //雇员按钮的事件处理程序
 this.emp=new  emplyee();  //构造一个雇员类对象
setTextValue(this.emp);
}public void setTextValue(employee e) { //用于设置文本框中返回的薪水数值
this.txtSalary.setText(Double.toString(e.getSalary())); //txtSalary为文本域名称,仅作参考


 
4、提示
因为文本中的内容为String类型,所以需要使用Double.toString(this.emp.getsalary())将职工的薪水转换为String类型
四、 注意事项
请注意代码的书写、命名符合规范

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.text.*;
    import java.applet.*;
    import java.util.*;public class Employee extends JApplet
    {
    JLabel Lb;
    JTextField Text1;

    JRadioButton JB1;
    JRadioButton JB2;

    JPanel p1,p2,p3;
    public void init()
    {

    JB1=new JRadioButton("雇员",false);
    JB2=new JRadioButton("经理",true);
    Lb=new JLabel("薪水:");
    Text1=new JTextField(10);

    p1=new JPanel();
    p2=new JPanel();
    p3=new JPanel();
    p1.add(JB1);
    p1.add(JB2);
    p2.add(Lb);
    p2.add(Text1);

    Container cp=getContentPane();
    cp.setLayout(new BorderLayout());
    cp.add(p1,BorderLayout.NORTH);
    cp.add(p2,BorderLayout.CENTER);
    cp.add(p3,BorderLayout.SOUTH);

    JB1.addActionListener(new JBListener());
    }
    class JBListener implements ActionListener
    {
    public void actionPerformed(ActionEvent event)
    {
    if(JB1.isSelected())//--------------以下有问题
    {
    Text1.setText("200");
    }
    else if(JB2.isSelected())
    {
    Text1.setText("300");
    }
    }
    }
    public static void main(String args[])
    {
    JFrame EmpFrame=new JFrame();
    EmpFrame.setTitle("薪水计算");
    EmpFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Employee m1=new Employee();
    EmpFrame.getContentPane().add(m1);
    m1.init();
    EmpFrame.setSize(300,200);
    EmpFrame.setVisible(true);
    }
    }
    谁帮我改改啊.........就要成功了...