[code]
package eun;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
//수정 다이얼로그 1번째-------------------------------------------------
class suDialog extends JDialog{
JPanel p = new JPanel();
JLabel la = new JLabel("수정할 ID : ");
JTextField tf = new JTextField();
JButton ok1 = new JButton("수정");
JButton ok2 = new JButton("취소");
suDialog(JFrame frame, String title){
super(frame,title,true); //모델다이얼로그
this.add(p);
p.setLayout(null);
p.add(la);
la.setBounds(5,-5,80,50);
p.add(tf);
tf.setBounds(70,6,180,28);
p.add(ok1);
ok1.setBounds(125,125,60,30);
p.add(ok2);
ok2.setBounds(190,125,60,30);
this.setSize(270,200);
ok1.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
suDialog2 di = new suDialog2(null, "수정");
di.setVisible(true);
}
});
ok2.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
dispose();
}
});
}
}
//수정 다이얼로그 1번째-------------------------------------------------
//수정다이얼로그 2번째--------------------------------------------------
class suDialog2 extends JDialog{
JPanel p = new JPanel();
JLabel la1 = new JLabel("ID : ");
JLabel la2 = new JLabel("이름 : ");
JLabel la3 = new JLabel("성적 : ");
JTextField tf1 = new JTextField();
JTextField tf2 = new JTextField();
JTextField tf3 = new JTextField();
JButton ok1 = new JButton("수정완료");
JButton ok2 = new JButton("취소");
suDialog2(JFrame frame, String title){
super(frame,title,true); //모델다이얼로그
this.add(p);
p.setLayout(null);
p.add(la1); //ID
la1.setBounds(25,-5,80,50);
p.add(tf1);
tf1.setBounds(50,5,200,28);
p.add(la2);
la2.setBounds(10,28,80,50);
p.add(tf2);
tf2.setBounds(50,40,200,28);
p.add(la3);
la3.setBounds(10,60,80,50);
p.add(tf3);
tf3.setBounds(50,72,200,28);
p.add(ok1);
ok1.setBounds(90,105,95,30);
p.add(ok2);
ok2.setBounds(190,105,60,30);
this.setSize(270,180);
ok2.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
dispose();
}
});
}
}
//수정다이얼로그 2번째--------------------------------------------------
//삭제 다이얼로그------------------------------------------------------------
class rmDialog extends JDialog{
JPanel p = new JPanel();
JLabel la = new JLabel("삭제할 ID : ");
JTextField tf = new JTextField();
JButton ok1 = new JButton("삭제");
JButton ok2 = new JButton("취소");
rmDialog(JFrame frame, String title){
super(frame,title,true); //모델다이얼로그
this.add(p);
p.setLayout(null);
p.add(la);
la.setBounds(5,10,70,20);
p.add(tf);
tf.setBounds(70,8,160,25);
p.add(ok1);
ok1.setBounds(100, 40, 60, 30);
p.add(ok2);
ok2.setBounds(167, 40, 60, 30);
this.setSize(250,120);
ok2.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
dispose();
}
});
}
}
//---------------------------------------------------------------------
public class eun extends JFrame {
JPanel p = new JPanel();
JLabel la1 = new JLabel(" ID : ");
JLabel la2 = new JLabel("이름 : ");
JLabel la3 = new JLabel("성적 : ");
JTextField tx1 = new JTextField(); //아이디 텍스트필드
JTextField tx2 = new JTextField(); //이름 텍스트필드
JTextField tx3 = new JTextField(); //성적 텍스트필드
JTextArea tx4 = new JTextArea(); //빈공간 텍스트에어리어
JButton btn1 = new JButton("등록");
JButton btn2 = new JButton("수정");
JButton btn3 = new JButton("삭제");
JButton btn4 = new JButton("저장");
JButton btn5 = new JButton("불러오기");
JButton btn6 = new JButton("종료");
JButton btn7 = new JButton("전체보기");
suDialog sm = new suDialog(this,"수정"); //수정 다이얼로그
suDialog2 sm2 = new suDialog2(this,"수정"); //수정 다이얼로그 2번째
rmDialog rm = new rmDialog(this,"삭제"); //삭제 다이얼로그
eun(){
this.setTitle("학생관리시스템");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.formDesign();
this.eventHandler();
this.setSize(550,250);
this.setVisible(true);
}
//setbound (가로위치, 세로위치, 폭, 높이) , 폼디자인
public void formDesign() {
this.add(p);
p.setLayout(null);
p.add(la1);
la1.setBounds(4,0,40,40);
p.add(tx1);
tx1.setBounds(45,7,35,25);
p.add(la2);
la2.setBounds(4,15,40,70);
p.add(tx2);
tx2.setBounds(45,38,35,25);
p.add(la3);
la3.setBounds(4,30,50,100);
p.add(tx3);
tx3.setBounds(45,68,35,25);
p.add(tx4);
tx4.setText("ID를 입력해주세요");
tx4.setBounds(80,38,450,120);
p.add(btn1);
btn1.setBounds(100,160,60,30);
p.add(btn2);
btn2.setBounds(165,160,60,30);
p.add(btn3);
btn3.setBounds(230,160,60,30);
p.add(btn4);
btn4.setBounds(295,160,60,30);
p.add(btn5);
btn5.setBounds(360,160,90,30);
p.add(btn6);
btn6.setBounds(455,160,60,30);
p.add(btn7);
btn7.setBounds(85,10,90,25);
}
public void eventHandler(){
//수정 이벤트-----------------------------------------------------
btn2.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
sm.setVisible(true);
}
});
//수정 이벤트-----------------------------------------------------
//삭제 이벤트------------------------------------------------------
btn3.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
rm.setVisible(true);
}
});
//삭제 이벤트------------------------------------------------------
//종료 이벤트-------------------------------------------------------
btn6.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
}
//종료 이벤트 -------------------------------------------------------
public static void main(String[] args) {
new eun();
}
}
[/code]
===============================================위 코드가 GUI 코드
[code]
package si;
public class Student {
private String id; //학생ID
private String name; //학생 이름
private int score; //학생 성적
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public Student(String id, String name, int score) {
// TODO Auto-generated constructor stub
this.id = id;
this.name = name;
this.score = score;
}
public String toString(){
return id +":" +name+":" + score;
}
public boolean equals(Student stu){
boolean result = false;
if(id.equals(stu.id)){
return true;
}
return result;
}
}
====================================== Student 코드
package si;
import java.util.Arrays;
public class StudentDAO {
Student[] list; //학생 리스트
private int cnt; //등록된 학생수
public StudentDAO(){
list = new Student[100]; //학생을 100명 만듦
}
//학생 데이터 등록 메소드
public boolean add(Student stu, boolean ins) {
// TODO Auto-generated method stub
if(cnt >list.length -1){
System.out.println("더이상 등록할 수 없습니다.");
return false;
}
//id가 이미 존재하면 등록 안함
for(int i = 0; i < cnt; i++){
if(stu.equals(list[i])& !ins){
System.out.println("등록된 id 입니다");
return false;
}
}
list[cnt++] = stu;
return true;
}
public Student[] getList() {
return list;
}
public void setList(Student[] list) {
this.list = list;
}
public int getCnt() {
return cnt;
}
public void setCnt(int cnt) {
this.cnt = cnt;
}
//학생 데이터 수정 메소드
public void update(Student new_stu, int i) {
// TODO Auto-generated method stub
list[i] = new_stu;
}
//등록된 학생 ID 삭제
public void delete(int i) {
list[i] = null;
for(int j = 0; j < cnt; j++){
list[i] = list[j + 1];
}
cnt--;
}
//list = 학생리스트 , cng = 등록된 학생수
//compareTo 두 이름 비교
//a와 b가 같으면 0을 반환 a가 더크면 양수, b가더크면 음수
public void sortId(){
// TODO Auto-generated method stub
Arrays.sort(list, 0, cnt, (a,b)-> b.getId().compareTo(a.getId()));
}
public void sortName(){
// TODO Auto-generated method stub
Arrays.sort(list, 0, cnt, (a,b)-> b.getName().compareTo(a.getName()));
}
public void sortScore() {
// TODO Auto-generated method stub
Arrays.sort(list, 0, cnt, (a, b) -> b.getScore() - a.getScore());
}
}
[/code]
=======================================학생관련 코드
[code]
package si;
import java.awt.List;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class StudentUI {
private Scanner scan;
private StudentDAO dao;
private Student[] temp;
public StudentUI(){
scan = new Scanner(System.in);
dao = new StudentDAO();
temp = dao.list;
}
private void showUsage() throws IOException {
// TODO Auto-generated method stub
boolean bFlag = true;
while(true){
System.out.println("==사용 방법==");
System.out.println("1.등록 2.조회 3.수정 4.삭제 5.종료 6.검색 7.정렬 8.저장");
String menu = scan.nextLine();
if(menu.equals("5") == true){
System.out.println("5. 종료");
bFlag = false;
return;
}
else{
getInput(menu);
}
}
}
//사용자 입력받기
public void getInput(String strMenu) throws IOException{
if(strMenu.equals("1")){
System.out.println("1. 등록");
System.out.print("학생ID를 입력하세요.");
String id = scan.nextLine();
System.out.print("학생 이름을 입력하세요.");
String name = scan.nextLine();
System.out.print("자바 성적을 입력하세요.");
int score = scan.nextInt();
Student stu = new Student(id, name, score);
if(dao.add(stu, false))
System.out.println("등록이 완성되었습니다.");
}
else if(strMenu.equals("2")){
System.out.println("2. 조회");
for(int i = 0; i< dao.getCnt(); i++){
System.out.println("ID : " + temp[i].getId() + "이름 :" + temp[i].getName()+ "성적 :" +temp[i].getScore());
}
}
else if(strMenu.equals("3") == true){
System.out.println("3. 수정");
String id = scan.nextLine();
for(int i = 0; i < dao.getCnt(); i++){
System.out.print("ID : ");
String new_id = scan.nextLine();
System.out.print("이름 : ");
String new_name = scan.nextLine();
System.out.print("자바 성적");
int new_score = scan.nextInt();
Student new_stu = new Student(new_id,new_name,new_score);
dao.update(new_stu, i);
System.out.println("수정이 완료됨");
}
}
else if(strMenu.equals("4")){
System.out.println("4. 삭제할 ID를 입력하세요.");
String del_id = scan.nextLine();
int tempIndex = 0;
for(int i = 0; i<dao.getCnt(); i++){
if(del_id.equals(temp[i].getId())){
tempIndex = i;
}
}
dao.delete(tempIndex);
System.out.println("등록된 ID가 삭제 되었습니다.");
}
else if(strMenu.equals("6")){
System.out.println("6. 검색할 ID 또는 이름을 입력하세요.");
String find_name = scan.nextLine();
for(int i = 0; i< dao.getCnt(); i++){
if(find_name.equals(temp[i].getId())){
System.out.println("ID : " + temp[i].getId() + "이름 :" + temp[i].getName());
}
else if(find_name.equals(temp[i].getName())){
System.out.println("이름 :" + temp[i].getName()+ "ID :" + temp[i].getId());
}
}
}
//dao.list는 학생의 수 , dao.cnt 등록된 학생수
//temp = dao.list
else if(strMenu.equals("7")){
System.out.println("1. 이름순서로 정렬 / 2. 성적순서로 정렬 ");
String number = scan.nextLine();
if (number.equals("1")) {
dao.sortName();
//dao에서 등록된 학생의 수만큼 반복 2개면 2회를 돌린후 temp(dao의 학생수에서 이름을 가져온다)
for(int i = 0; i< dao.getCnt(); i++){
System.out.println("이름 : " +temp[i].getName() + "성적:" + temp[i].getScore());
}
}
else if (number.equals("2")) {
dao.sortScore();
for(int i = 0; i< dao.getCnt(); i++){
System.out.println("이름 : " +temp[i].getName() + "성적:" + temp[i].getScore());
}
}
}
else if(strMenu.equals("8")) {
System.out.println("저장합니다.");
try {
//ro폴더를 만들고 안에 저장
FileOutputStream fos = new FileOutputStream("C:\\ro\\aa.txt");
OutputStreamWriter os = new OutputStreamWriter(fos);
for(int i = 0; i< dao.getCnt(); i++){
os.write("ID : " + temp[i].getId()+ "이름 :" + temp[i].getName()+ "성적 :" +temp[i].getScore());
os.write("\r\n");
}
System.out.println("저장완료 했습니다.");
os.close();
fos.close();
}
catch(Exception e) {
e.printStackTrace();
}
try {
FileInputStream fis = new FileInputStream("aa.txt");
InputStreamReader ois = new InputStreamReader(fis);
ois.close();
fis.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
private char[] sortScore() {
// TODO Auto-generated method stub
return null;
}
private char[] sortName() {
// TODO Auto-generated method stub
return null;
}
public static void main(String[] args) throws IOException {
StudentUI ui = new StudentUI();
ui.showUsage();
}
}
[/code]
===============전체적인 등록 삭제 등등 기능을 구현하는 코드 입니다.
혼자 기능을 어떻게 구현해야 할지 몰라서 답답한 관계로 도저히 안되서 질문 올립니다.
gui디자인도 만들었고 기본적인 기능 구현까진 했는데 버튼을 눌렀을 대 이 기능이 어떤식으로
코드를 넣어야 그 기능이 구현되는지 알고 싶습니다.. 도와주세요
기능은 scan 이나 nextLine 등 이런걸 넣으면 됐는데 gui와 기능 구현 코드랑 병합 시켜서 버튼을 누르면 출력되게끔 gui에 작동시키고 싶은데
너무 어려워서 도와주셨으면 좋겠습니다
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.