문제
조건. 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;
}
}
'2024_풀스택학원 > Back-end' 카테고리의 다른 글
[DataBase]sysdate, like, between, in, like, order by (0) | 2024.04.19 |
---|---|
[Java] Timestamp, static, Network (0) | 2024.04.15 |
[Java] ArrayList (0) | 2024.04.09 |
[Java] 상속 (0) | 2024.04.08 |
[Java] 생성자 & 게터 세터(Constructor & Getter Setter) (0) | 2024.04.04 |