본문 바로가기

2024_풀스택학원/Back-end

[Java] 학생 관리 시스템 만들기

문제

조건. MVC1 구조를 적용하여 만드세요.
<< 학생 관리 시스템 >>
1. 신규 정보 입력(MemberField : 학번/ 이름/ 국어/ 영어/ 수학)
2. 학생 목록 출력 ( 학번/ 이름/ 국어 / 영어/ 수학/ 합계 / 평규)
3. 학생 정보 검색( 이름으로 검색 )
4. 학생 정보 삭제( 학번으로 삭제 )
5. 학생 정보 수정( 학번으로 수정 )

 

Main클래스

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

public class Main {
//	public static void printStudents(ArrayList<Student> stds) {
//		for(Student std : stds) {
//			System.out.println("학번\t이름\t국어\t영어\t수학\t합계\t평균");
//			System.out.println(std.getId()+"\t"+ std.getName() +"\t"+std.getKor()+"\t"+ std.getEng() +"\t"+std.getMath()+"\t"+std.getSum()+"\t"+std.getAvg());
//		}
//	}
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Manager manager = new Manager();
		
		while(true) {
		System.out.println("<<학생 관리 시스템>>");
		System.out.println("1. 신규 정보 입력");
		System.out.println("2. 학생 목록 출력");
		System.out.println("3. 학생 정보 검색( 이름으로 검색 )");
		System.out.println("4. 학생 정보 삭제( 학번으로 삭제 )");
		System.out.println("5. 학생 정보 수정( 학번으로 수정 )");
		System.out.println("0. 시스템 종료");
		int menu =Integer.parseInt(sc.nextLine());
		
		if(menu == 1) {
			manager.add(new Student(1000, "Alice", 100, 90, 80));
			manager.add(new Student(1001, "Mike", 90, 80, 70));
			manager.add(new Student(1002, "Tom", 100, 90, 80));
			manager.add(new Student(1003, "minseo", 100, 90, 80));
			manager.add(new Student(1004, "minjoo", 100, 90, 80));
			manager.add(new Student(1005, "Jack", 100, 90, 80));
			
		} else if(menu == 2) {
			ArrayList<Student> stds = manager.getStds();
			for(Student std : stds) {
				System.out.println("학번\t이름\t국어\t영어\t수학\t합계\t평균");
				System.out.println(std.getId()+"\t"+ std.getName() +"\t"+std.getKor()+"\t"+ std.getEng() +"\t"+std.getMath()+"\t"+std.getSum()+"\t"+std.getAvg());
			}
			
		} else if(menu == 3) {
			System.out.print("검색할 학생의 이름 : ");
			String name = sc.nextLine();
			ArrayList<Student> stds = manager.searchByName(name);
			if(stds.size() == 0) {
				System.out.println(name + "학생이 존재하지 않습니다.");
				
			} else {
				for(Student std : stds) {
					System.out.println("학번\t이름\t국어\t영어\t수학\t합계\t평균");
					System.out.println(std.getId()+"\t"+ std.getName() +"\t"+std.getKor()+"\t"+ std.getEng() +"\t"+std.getMath()+"\t"+std.getSum()+"\t"+std.getAvg());
				}
			}
		} else if(menu == 4) {
			System.out.println("삭제 할 학생의 학번 : ");
			int id = Integer.parseInt(sc.nextLine());
			manager.deleteById(id);
			
		} else if(menu == 5) {
			System.out.println("수정할 학생의 학번 : ");
			int id = Integer.parseInt(sc.nextLine());
			System.out.println("국 어 :");
			int kor = Integer.parseInt(sc.nextLine());
			System.out.println("영 어 : ");
			int eng = Integer.parseInt(sc.nextLine());
			System.out.println("수 학 : ");
			int math = Integer.parseInt(sc.nextLine());
			
			Student std = new Student(id, null, kor, eng, math);
			// 새로운 학생 객체 생성, 이름은 입력하지 않으므로 null로 설정
			manager.updateById(std);
			// 생성된 학생 객체를 사용하여 Manager클래스의 updataById 메서드 호출후 
			// 해당 학번의 학생 정보를 업데이트
			
		} else {
			System.out.println("시스템 종료");
			System.exit(0);
		}
		 
		}
		
		
		
		
		
		
		
	}
}

 

Student클래스

public class Student {
	private int id;
	private String name;
	private int kor;
	private int eng;
	private int math;
	
	public Student() {}
	
	public Student(int id, String name, int kor, int eng, int math) {
		super();
		this.id = id;
		this.name = name;
		this.kor = kor;
		this.eng = eng;
		this.math = math;
	}

	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;
	}
	
	public double getSum() {
		return this.kor + this.eng + this.eng;
	}
	public double getAvg() {
		return this.getSum()/3.0;
	}
	
	
}

 

Manager클래스

import java.util.ArrayList;

public class Manager {
	private ArrayList<Student> stds = new ArrayList<>();
	
	// 입력 메소드
	public void add(Student std) {
		this.stds.add(std);
	}
	
	
	// 출력 메소드
	public ArrayList<Student> getStds(){
		return this.stds;
	}
	
	// 검색 메소드
	public ArrayList<Student> searchByName(String name){
		ArrayList<Student> result = new ArrayList<>();
		for(Student std :stds) {
			if(std.getName().equals(name)) {
				result.add(std);
			}
		}
		return result;
	}
	
	//삭제 메소드
	public void deleteById(int id) {
		for(Student std : stds) {
			if(std.getId() == id) {
				stds.remove(std);
				break;
			}
		}
	}
	
	//수정 메소드
	public void updateById(Student param) {
		for(Student std : stds) {
			if(std.getId() == param.getId()) {
				// 현재 반복중인 학생 객체의 학번과 
				// param 객체의 학번을 비교하여 같은 지 확인함
				
				std.setKor(param.getKor());
				std.setEng(param.getEng());
				std.setMath(param.getMath());
				// 학번이 일치하는 경우에 해당 학생의 국어, 영어, 수학 성적을
				// param 객체의 성적으로 업데이트
				
				break;
				// 업데이트가 완료되었으므로 더 이상 반복할 필요가 없으므로 반복문 종료
			}
		}
	}
}

 

 


 

같은 학생 관리 시스템  - DTO, DAO,MAIN 패키지로 나눠서 다시 풀어보기 

 

Day_12_종합실습2

main패키지

Main.java

package main;


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

import dao.StudentDAO;
import dto.StudentDTO;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		StudentDAO dao = new StudentDAO();
		
		while(true) {
		System.out.println("<<학생 관리 시스템>>");
		System.out.println("1. 신규 정보 입력");
		System.out.println("2. 학생 목록 출력");
		System.out.println("3. 학생 정보 검색( 이름으로 검색 )");
		System.out.println("4. 학생 정보 삭제( 학번으로 삭제 )");
		System.out.println("5. 학생 정보 수정( 학번으로 수정 )");
		System.out.println("0. 시스템 종료");
		int menu =Integer.parseInt(sc.nextLine());
		
		if(menu == 1) {
			dao.add(new StudentDTO("1000","Jack",100,90,80));
			dao.add(new StudentDTO("1001","Alice",100,90,80));
			dao.add(new StudentDTO("1002","Tom",100,90,80));
			dao.add(new StudentDTO("1003","Bella",100,90,80));
			dao.add(new StudentDTO("1004","Kam",100,90,80));
			
		} else if(menu == 2) {
			System.out.println("아이디\t이름\t국어\t영어\t수학\t합계\t평균");
			ArrayList<StudentDTO> students = dao.getAdd();
			for(StudentDTO std : students) {
			System.out.println(std.getId() + "\t" + std.getName() +"\t"+
								std.getKor() + "\t" + std.getEng() + "\t" + std.getMath()+"\t"+
										std.getSum() + "\t" +  std.getAvg());
			}
			
		} else if(menu == 3) {
			System.out.print("검색할 학생의 이름 : ");
			String name = sc.nextLine();
			
			ArrayList<StudentDTO> students = dao.searchByName(name);
			if(students.size() == 0) {
				System.out.println(name + "학생이 존재하지 않습니다.");
			} else {
				for(StudentDTO std : students) {
					System.out.println(std.getId() + "\t" + std.getName() +"\t"+
										std.getKor() + "\t" + std.getEng() + "\t" + std.getMath()+"\t"+
												std.getSum() + "\t" +  std.getAvg());
					}
			}


			
		} else if(menu == 4) {
			System.out.println("삭제 할 학생의 학번 : ");
			String id = sc.nextLine();
			dao.deleteById(id);
			
		} else if(menu == 5) {
			System.out.println("수정할 학생의 학번 : ");
			String id = sc.nextLine();

			System.out.println("국 어 :");
			int kor = Integer.parseInt(sc.nextLine());
			System.out.println("영 어 : ");
			int eng = Integer.parseInt(sc.nextLine());
			System.out.println("수 학 : ");
			int math = Integer.parseInt(sc.nextLine());
			
			dao.updateList(id,null,kor,eng,math);
			
			
		} else {
			System.out.println("시스템 종료");
			System.exit(0);
		}
		 
		}
		
		
		
		
		
		
		
	}
}

 

 

dao 패키지

StudentDAO.java

package dao;

import java.util.ArrayList;

import dto.StudentDTO;
public class StudentDAO {


	ArrayList<StudentDTO> stds = new ArrayList<StudentDTO>();


	// 입력 메소드
	public void add(StudentDTO std) {
		this.stds.add(std);
	}


	// 출력 메소드
	public ArrayList<StudentDTO> getAdd() {
		return this.stds;
	}


	// 검색 메소드 
	// 검색할 학생 이름 name으로 받아서, 목록에 있는지 확인 후에 name과 일치하는 이름 있다면 출력

	public ArrayList<StudentDTO> searchByName(String name){
		ArrayList<StudentDTO> result = new ArrayList<>();
		for(StudentDTO std: stds) {
			if(std.getName().equals(name)) {
				result.add(std);
			}
		}
		return result;
	}

	/**
	 * 삭제할 학생 id 받고, 목록에 동일한 id 있다면 삭제
	 */
	// 삭제 메소드 
	// 삭제할 학생 id받고, 목록에 동일한 id 있다면 삭제
	
	
	// 내가 짠 말도안되는 삭제 메소드
	//	public ArrayList<StudentDTO> deleteById(int id){
	//		ArrayList<StudentDTO> result = new ArrayList<>();
	//		for(StudentDTO std:stds) {
	//			if(std.getId() == id ) {
	//				result.remove(id);
	//			}
	//		}
	//		return result;
	//	}
	
	public void deleteById(String id) {
		for(StudentDTO std : stds) {
			if(std.getId().equals(id)) {
				stds.remove(std);
				break;
			}
		}
	}

	// 수정 메소드
	// 수정할 학생의 id를 받고, 동일한 id 있으면 수정
	
	
		//내가 짠 쓰레기 수정메서드 
	//	public ArrayList<StudentDTO> updateList(int id){
	//		ArrayList<StudentDTO> result = new ArrayList<>();
	//		for(StudentDTO std:stds) {
	//			if(std.getId() == id) {
	//				std.setId(id);
	//				std.setKor(id);
	//				std.setEng(id);
	//				std.setMath(id);
	//			}
	//		}
	//		return result;
	//	}

	public void updateList(String id, String name, int kor, int eng, int math) {
		for(StudentDTO std: stds) {
			if(std.getId().equals(id)) {
				std.setKor(kor);
				std.setEng(eng);
				std.setMath(math);
				break;
			}
		}
	}
}

 

 

dto패키지

StudentDTO.java

package dto;

public class StudentDTO {
	private String id;
	private String name;
	private int kor;
	private int eng;
	private int math;

	public StudentDTO() {
	}

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

	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 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;
	}

	public int getSum() {
		return kor + eng + math;
	}

	public double getAvg() {
		return getSum() / 3.0;
	}

}