Daily coding

Java Basic : day 10 - Example02: 학생성적관리 ArrayList로 작성 본문

Language/Java_basic

Java Basic : day 10 - Example02: 학생성적관리 ArrayList로 작성

sunnnkim 2019. 11. 29. 18:28
package day10.example2;

import java.util.Scanner;


public class mainClass {
	public static void main(String[] args) {
	
		StudentDAO test = new StudentDAO();
		Scanner sc = new Scanner(System.in);
		while (true) {
			System.out.println("1. 학생정보 입력");
			System.out.println("2. 학생정보 삭제");
			System.out.println("3. 학생정보 검색");
			System.out.println("4. 학생정보 수정");
			System.out.println("5. 학생 목록 보기");
			System.out.println("6. 파일로 저장하기");
			System.out.println("7. 학생정보 파일 불러오기");
			System.out.println("0. 종료");

			System.out.print(">> ");
			int choice;
			try {
				choice = sc.nextInt();
			} catch (Exception e) {
				choice = -1;
			}

			if (choice == 1) {
				test.userInsert();
			} else if (choice == 2) {
				test.userDelete();
			} else if (choice == 3) {
				test.userSelect();
			} else if (choice == 4) {
				test.userUpdate();
			} else if (choice == 5) {
				test.printAll();
			} else if (choice == 6) {
				try {
					test.dataSave();
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			} else if (choice == 7) {
				test.dataLoad();
			} else if (choice == 0) {
				System.out.println("종료합니다.");
				sc.close();
				System.exit(0);
			} else {
				System.out.println("잘못 선택했습니다.");
			}

		}

		
		
		
}
}
​
package day10.example2;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Scanner;

public class FileClass {
	
	private File file;
	private String dir;
	private String fileName;
	
	public FileClass() {
		file = new File("d:\\");
	}
	
	public FileClass(String dir,String fileName) {
		file = new File("d:\\" + dir + "\\" + fileName+".txt");
		this.dir = "d:\\" + dir;
		this.fileName = fileName +".txt";
	}
	
	
	
	// 파일명이 있는지 확인하기
	public boolean check(File file) {
		if(file.exists()) {
			return true; 
		}
			return false;
	}
	
	// creat
	public void create() throws Exception{
		boolean exist = check(file);
		if(exist) {
			file.delete();
			file.createNewFile();
		}
		else {
			file = new File(dir);
			file.mkdirs();
			file = new File(dir+"\\" + fileName);
			file.createNewFile();
		}
	}
	
	
	
	// read
	public void read() throws Exception{
		boolean exist = check(file);
		if(exist) {
			FileReader fr = new FileReader(file);
			BufferedReader bw = new BufferedReader(fr);
			String str;
			while((str = bw.readLine()) != null ){
				System.out.println(str);
			}
			bw.close();
		}else {
			System.out.println("읽을 파일이 없습니다.");
		}
		
	}
	
	
	// write 
	
	public void write(String str) throws Exception{
		FileWriter fw = new FileWriter(file);
		PrintWriter pw = new PrintWriter(fw);
		pw.println(str);
		fw.close();
		
	}

}

// memberDAO 랑 연결해서 사용하기

// 만들 메소드
// creatfile
// read
// write

​
package day10.example2;

import java.util.ArrayList;
import java.util.Scanner;

import javax.management.loading.MLet;

public class StudentDAO {
	
	Scanner sc = new Scanner(System.in);
	private ArrayList<StudentDTO> slist;
	FileClass file = new FileClass("Student","Student_Grade");
	
	// id,  name,  age,  kor,  eng,  math
	public StudentDAO() {
		slist = new ArrayList<StudentDTO>();
		
		// 기본데이터
		StudentDTO s1 = new StudentDTO(0,"테스트1",11,100,90,80);
		StudentDTO s2 = new StudentDTO(1,"테스트2",22,90,89,91);
		StudentDTO s3 = new StudentDTO(2,"테스트3",33,85,77,55);
		StudentDTO s4 = new StudentDTO(3,"테스트4",44,77,68,85);
		
		slist.add(s1);
		slist.add(s2);
		slist.add(s3);
		slist.add(s4);
	
	}
	
	// insert
	public void insert(StudentDTO s) {
		slist.add(s);
	}
	
	
	// delete
	public void delete(int index) {
		slist.remove(index);
	}
	
	// select
	public StudentDTO select(int index) {
		return slist.get(index);
	}
	
	// update 
	public void update(int index, StudentDTO s) {
		slist.set(index, s);
	}
	
	// print all
	public void printAll() {
		System.out.println(" 이름\t 나이\t 국어\t 영어 \t수학\n"
				+ "-------------------------------------");
		for (int i = 0; i < slist.size(); i++) {
			System.out.println(slist.get(i).toString());
		}
	}
	
	// serch
	public int searchIndex() {
		int index = -1;
		System.out.println("학생의 이름을 입력하세요");
		System.out.print(">> ");
		String name = sc.next();
		for (int i = 0; i < slist.size(); i++) {
			if(slist.get(i).getName().equals(name)) {
				index = i;
				break;
			}
		}
		return index;
	}
	
	
	
	// 메뉴
	
	public void userInsert() {
		StudentDTO s = new StudentDTO();
		s.setId(slist.size()-1);
		System.out.println("< 학생 추가하기 > ");
		System.out.print("이름 : ");
		s.setName(sc.next());
		System.out.print("나이 : ");
		s.setAge(sc.nextInt());
		System.out.print("국어점수 : ");
		s.setKor(sc.nextInt());
		System.out.print("영어점수 : ");
		s.setEng(sc.nextInt());
		System.out.print("수학점수 : ");
		s.setMath(sc.nextInt());
		
		insert(s);
		System.out.println("학생이 추가되었습니다.");
	}
	
	// 학생정보 보기
	public void userSelect() {
		System.out.println("< 학생정보 보기 >");
		int index = searchIndex();
		if(index == -1) {
			System.out.println("찾는 학생이 없습니다.");
		}else {
			System.out.println(" 이름\t 나이\t 국어\t 영어 \t수학\n"
					+ "-------------------------------------");
			StudentDTO s = select(index);
			System.out.println(s);
		}
	}
	
	
	// 학생정보  삭제하기
	public void userDelete() {
		System.out.println("< 학생정보 삭제 >");
		int index = searchIndex();
		if(index == -1) {
			System.out.println("찾는 학생이 없습니다.");
		}else {
			String name = slist.get(index).getName();
			delete(index);
			System.out.println(name+" 학생정보를 삭제했습니다.");
		}
	}

	
	// 학생정보 수정
	public void userUpdate() {
		System.out.println("< 학생정보 수정 >");
		int index = searchIndex();
		if(index == -1) {
			System.out.println("찾는 학생이 없습니다.");
		}else {
			StudentDTO s = new StudentDTO();
			s.setId(slist.get(index).getId());
			s.setName(slist.get(index).getName());
			s.setAge(slist.get(index).getAge());
			
			System.out.println("<" + slist.get(index).getName()+ "학생의 정보수정 >");
			System.out.print("국어점수 : ");
			s.setKor(sc.nextInt());
			System.out.print("영어점수 : ");
			s.setEng(sc.nextInt());
			System.out.print("수학점수 : ");
			s.setMath(sc.nextInt());
			update(index, s);
			
		}
	}
	
	//file 
	
	// File method
	
		public void dataSave() throws Exception{
			file.create();
			String str = " 이름\t 나이\t 국어\t 영어 \t수학\n"
					+ "-------------------------------------\n";
			for (int i = 0; i < slist.size(); i++) {
						str += slist.get(i).toString()+"\n";
			}
			file.write(str);
			System.out.println("데이터를 저장했습니다.");

			
		}
		
		public void dataLoad() {
			try {
				file.read();
			} catch (Exception e) {
				System.out.println("읽을 파일이 없습니다.");
			}
		}
		
	
}
package day10.example2;

public class StudentDTO {
	private int id;
	private String name;
	private int age;
	private int kor;
	private int eng;
	private int math;
	
	public StudentDTO() {
	}
	
	
	public int getAge() {
		return age;
	}


	public void setAge(int age) {
		this.age = age;
	}


	public StudentDTO(int id, String name, int age, int kor, int eng, int math) {
		this.id = id;
		this.name = name;
		this.kor = kor;
		this.eng = eng;
		this.math = math;
		this.age = age;
	}


	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getKor() {
		return kor;
	}
	public void setKor(int kor) {
		this.kor = kor;
	}
	public int getEng() {
		return eng;
	}
	public void setEng(int eng) {
		this.eng = eng;
	}
	public int getMath() {
		return math;
	}
	public void setMath(int math) {
		this.math = math;
	}


	@Override
	public String toString() {
		return " "+name + " \t " + age + "\t " + kor + "\t " + eng + "\t " + math;
	}
	
	
	
	
	
	
	
}