席位分配之图形界面程序:
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
class Dinterface extends JFrame implements
ActionListener {
TextField
tf1;
//文本框1,用于输入第一部分人数。
TextField
tf2;
//文本框2,用于输入第二部分人数。
TextField
tf3;
//文本框3,用于输入第三部分人数。
TextField
tf4;
//文本框4,用于输入席位数。
TextArea ta;
//用于显示席位分配结果。
JButton
btnReset;
//重置按钮
JButton
btnTradition;
//惯例分配法按钮
JButton
btnQway; //Q值法按钮
JButton
btnDhondt;
//D'Hondt方法按钮
JButton
btnClear; //清空按钮
JButton
btnExit;
//退出按钮
JButton
btnAbout; //关于按钮
JDialog about=new JDialog(this);
//关于对话框
static int seatA,seatB,seatC;
static float tseatA,tseatB,tseatC;
public void init() {
tf1 = new
TextField("此处输入第一组人数",15);
tf2 = new
TextField("此处输入第二组人数",15);
tf3 = new
TextField("此处输入第三组人数",15);
tf4 = new
TextField("此处输入席位数",10);
ta = new
TextArea(20,60);
ta.setEditable(false);
btnReset = new
JButton("重置");
btnTradition = new
JButton("惯例分配法");
btnQway = new
JButton("Q值法");
btnDhondt = new
JButton("D’Hondt方法");
btnClear = new
JButton("清空");
btnExit = new
JButton("退出");
btnAbout = new
JButton("关于");
setBackground(Color.black);
//设置背景色
setLayout(new
FlowLayout());
//设置工作区
add(tf1);
//添加
add(tf2);
add(tf3);
add(tf4);
add(btnReset);
add(ta);
add(btnTradition);
add(btnQway);
add(btnDhondt);
add(btnClear);
add(btnAbout);
add(btnExit);
btnReset.addActionListener(this);
//设置监听
btnClear.addActionListener(this);
btnTradition.addActionListener(this);
btnQway.addActionListener(this);
btnDhondt.addActionListener(this);
btnAbout.addActionListener(this);
btnExit.addActionListener(this);
}
public void
actionPerformed(java.awt.event.ActionEvent
ae) {
if(ae.getActionCommand().equals("清空"))
ta.setText("");
if(ae.getActionCommand().equals("退出"))
System.exit(0);
if(ae.getActionCommand().equals("关于")) {
initAboutDialog();
//初始化about
about.setSize(220,150);
about.setVisible(true);
}
if(ae.getActionCommand().equals("重置")) {
tf1.setText("");
tf2.setText("");
tf3.setText("");
tf4.setText("");
}
if(ae.getActionCommand().equals("惯例分配法")) {
int numA =
Integer.parseInt(tf1.getText());
int numB =
Integer.parseInt(tf2.getText());
int numC =
Integer.parseInt(tf3.getText());
int
commissary = Integer.parseInt(tf4.getText());
tradition(numA,numB,numC,commissary);
ta.append("按惯例分配法分配如下:\n");
ta.append("学生A宿舍分配委员数:"
+ (int)tseatA + "人\n");
ta.append("学生B宿舍分配委员数:"
+ (int)tseatB + "人\n");
ta.append("学生C宿舍分配委员数:"
+ (int)tseatC + "人\n\n");
}
if(ae.getActionCommand().equals("Q值法")) {
int numA =
Integer.parseInt(tf1.getText());
int numB =
Integer.parseInt(tf2.getText());
int numC =
Integer.parseInt(tf3.getText());
int
commissary = Integer.parseInt(tf4.getText());
qWay(numA,numB,numC,commissary);
ta.append("按Q值法分配如下:\n");
ta.append("学生A宿舍分配委员数:"
+ seatA + "人\n");
ta.append("学生B宿舍分配委员数:"
+ seatB + "人\n");
ta.append("学生C宿舍分配委员数:"
+ seatC + "人\n\n");
}