Hướng đối tượng Java - Quản lý thí sinh
Quản lý thí sinh
Các thí sinh dự thi đại học bao gồm các thí sinh thi khối A, B, và khối C. Các thí sinh cần quản lý các thông tin sau: Số báo danh, họ tên, địa chỉ, mức ưu tiên.
Thí sinh thi khối A thi các môn: Toán, Lý, Hoá.
Thí sinh thi khối B thi các môn: Toán, Hoá, Sinh.
Thí sinh thi khối C thi các môn: Văn, Sử, Địa.
Yêu cầu 1: Xây dựng các lớp để quản lý các thi sinh dự thi đại học.
Yêu cầu 2: Xây dựng lớp TuyenSinh có các chức năng:
- Thêm mới thí sinh.
- Hiện thị thông tin của thí sinh và khối thi của thí sinh.
- Tìm kiếm theo số báo danh.
- Thoát khỏi chương trình.
1. Xây dựng lớp Candidate.java
package b3;
public class Candidate {
protected String id;
protected String name;
protected String address;
protected int priority;
public Candidate(String id, String name, String address, int priority) {
this.id = id;
this.name = name;
this.address = address;
this.priority = priority;
}
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 String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getPriority() {
return priority;
}
public void setPriority(int priority) {
this.priority = priority;
}
}
2. Xây dựng lớp CandidateA.java
package b3;
public class CandidateA extends Candidate {
public static final String MON_TOAN = "Toan";
public static final String MON_LY = "Ly";
public static final String MON_HOA = "Hoa";
public CandidateA(String id, String name, String address, int priority) {
super(id, name, address, priority);
}
@Override
public String toString() {
return "CandidateA{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", address='" + address + '\'' +
", priority=" + priority + ", Subject: " + MON_TOAN + " - " + MON_LY + " - " + MON_HOA +
'}';
}
}
2. Xây dựng lớp CandidateB.java
package b3;
public class CandidateB extends Candidate {
public static final String MON_TOAN = "Toan";
public static final String MON_HOA = "Hoa";
public static final String MON_SINH = "Sinh";
public CandidateB(String id, String name, String address, int priority) {
super(id, name, address, priority);
}
@Override
public String toString() {
return "CandidateB{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", address='" + address + '\'' +
", priority=" + priority + ", Subject: " + MON_TOAN + " - " + MON_SINH + " - " + MON_HOA +
'}';
}
}
3. Xây dựng lớp CandidateC.java
package b3;
public class CandidateC extends Candidate {
public static final String MON_VAN = "Van";
public static final String MON_SU = "Su";
public static final String MON_DIA = "Dia";
public CandidateC(String id, String name, String address, int priority) {
super(id, name, address, priority);
}
@Override
public String toString() {
return "CandidateC{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", address='" + address + '\'' +
", priority=" + priority + ", Subject: " + MON_VAN + " - " + MON_SU + " - " + MON_DIA +
'}';
}
}
4. Xây dựng lớp ManagerCandidate.java
package b3;
import java.util.ArrayList;
import java.util.List;
public class ManagerCandidate {
List<Candidate> candidates;
public ManagerCandidate() {
this.candidates = new ArrayList<>();
}
public void add(Candidate candidate) {
this.candidates.add(candidate);
}
public void showInfor() {
this.candidates.forEach(candidate -> System.out.println(candidate.toString()));
}
public Candidate searchById(String id) {
return this.candidates.stream().filter(candidate -> candidate.getId().equals(id)).findFirst().orElse(null);
}
}
5. Xây dựng lớp Main.java
package b3;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ManagerCandidate managerCandidate = new ManagerCandidate();
while (true) {
System.out.println("Application Manager Candidate");
System.out.println("Enter 1: To insert candidate");
System.out.println("Enter 2: To show information of candidate: ");
System.out.println("Enter 3: To search candidate by id");
System.out.println("Enter 4: To exit:");
String line = scanner.nextLine();
switch (line) {
case "1": {
System.out.println("Enter a: to insert Candidate A");
System.out.println("Enter b: to insert Candidate B");
System.out.println("Enter c: to insert Candidate C");
String type = scanner.nextLine();
switch (type) {
case "a": {
managerCandidate.add(createCadidate(scanner, "a"));
break;
}
case "b": {
managerCandidate.add(createCadidate(scanner, "b"));
break;
}
case "c": {
managerCandidate.add(createCadidate(scanner, "c"));
break;
}
default:
System.out.println("Invalid");
break;
}
break;
}
case "2": {
managerCandidate.showInfor();
break;
}
case "3": {
System.out.print("Enter ID: ");
String id = scanner.nextLine();
Candidate candidate = managerCandidate.searchById(id);
if (candidate == null) {
System.out.println("Not found");
} else {
System.out.println(candidate.toString());
}
break;
}
case "4": {
return;
}
default:
System.out.println("Invalid");
continue;
}
}
}
public static Candidate createCadidate(Scanner scanner, String cate) {
System.out.print("Enter ID: ");
String id = scanner.nextLine();
System.out.print("Enter name: ");
String name = scanner.nextLine();
System.out.print("Enter address: ");
String address = scanner.nextLine();
System.out.print("Enter Priotity: ");
int priority = scanner.nextInt();
scanner.nextLine();
if (cate.equals("a")) {
return new CandidateA(id, name,address,priority);
} else if (cate.equals("b")) {
return new CandidateB(id, name,address,priority);
} else {
return new CandidateC(id, name,address,priority);
}
}
}