응용 SoftWare/JAVA

[예제] 은행 대기열 만들기

Hyun CHO 2016. 12. 14. 17:03

화면 1. 메인

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Calendar;

import java.util.LinkedList;


import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;


public class QueueEx extends JFrame implements ActionListener{

JPanel leftPane = new JPanel(new GridLayout(4, 1));

JButton createBtn = new JButton("번호표 뽑기");

JLabel createNum = new JLabel();

JLabel viewNum = new JLabel("대기인수 : 0명", JLabel.CENTER);

JPanel rigthPane = new JPanel(new GridLayout(6, 1));

JButton sawon1 = new JButton("은행원 1");

JButton sawon2 = new JButton("은행원 2");

JButton sawon3 = new JButton("은행원 3");

JLabel msg1 = new JLabel();

JLabel msg2 = new JLabel();

JLabel msg3 = new JLabel();

int n = 0;

LinkedList<GuestInfo> queue = new LinkedList<GuestInfo>();

public QueueEx() {

setLayout(new GridLayout(1, 3));

leftPane.add(new JLabel());

leftPane.add(createBtn);

leftPane.add(createNum);

add(leftPane);

add(viewNum);

rigthPane.add(sawon1);

rigthPane.add(msg1);

rigthPane.add(sawon2);

rigthPane.add(msg2);

rigthPane.add(sawon3);

rigthPane.add(msg3);

add(rigthPane);

setSize(500, 300);

setVisible(true);

createBtn.addActionListener(this);

sawon1.addActionListener(this);

sawon2.addActionListener(this);

sawon3.addActionListener(this);

}

public void actionPerformed(ActionEvent ae) {

Object eventobj = ae.getSource();

if(eventobj == createBtn){

numberProcess();

}else if(eventobj == sawon1){

sawonProcess(msg1);

}else if(eventobj == sawon2){

sawonProcess(msg2);

}else if(eventobj == sawon3){

sawonProcess(msg3);

}

}

public void sawonProcess(JLabel msgLbl){

if(queue.size()<=0){

msgLbl.setText("대기자가 없습니다.");

}else{

GuestInfo guest = queue.poll();

msgLbl.setText(createMsg(guest.getNum(), guest.getCal()));

}

viewNum.setText("대기인수 : "+queue.size()+"명");

}

public void numberProcess(){

n++;

Calendar cal = Calendar.getInstance();

GuestInfo info = new GuestInfo();

info.setNum(n);

info.setCal(cal);

queue.offer(info);

viewNum.setText("대기인수 : "+queue.size()+"명");

createNum.setText(createMsg(n, cal));

}

public String createMsg(int n, Calendar cal){

String msg = "번호 : "+n+" (";

msg += cal.get(Calendar.YEAR)+"/"+(cal.get(Calendar.MONTH)+1)+"/";

msg += cal.get(Calendar.DATE)+" "+cal.get(Calendar.HOUR)+":";

msg += cal.get(Calendar.MINUTE)+":"+cal.get(Calendar.SECOND)+")";

return msg;

}

public static void main(String[] args) {

new QueueEx();


}




}

=====================================================================
화면 2. 순번과 달력(시간)

import java.util.Calendar;
import java.util.function.Predicate;
import javax.management.loading.PrivateClassLoader;

public class GuestInfo {
private int num;
private Calendar cal;
public int getNum() {
return num;
}

public void setNum(int num) {
this.num = num;
}

public Calendar getCal() {
return cal;
}

public void setCal(Calendar cal) {
this.cal = cal;
}

public GuestInfo() {

}

}