Tải bản đầy đủ (.pdf) (38 trang)

Bài tập lớn lâp trình hướng đối tượng quản lý tuyển sinh đại học

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.68 MB, 38 trang )

TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
----------------------

BÁO CÁO BÀI TẬP LỚN
MƠN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Đề tài: Quản lý tuyển sinh đại học

Hà Nội – Năm 2021


MỤC LỤC
I.

Phát biểu bài toán............................................................................................................ 2

II.

Xác định các lớp của bài toán........................................................................................2

1.

Class Nguoi.................................................................................................................. 2

2.

Class ThiSinh kế thừa từ class Nguoi.............................................................................2

3.

class GiamThi kế thừa từ class Người............................................................................3



4.

Class NguyenVong........................................................................................................3

5.

class QuanLy................................................................................................................ 3

III.

Mô tả thuật tốn thao tác..............................................................................................6

1.

Chỉnh sửa thơng tin thí sinh, nguyện vọng, giám thị.......................................................6

2.

Hiện ra các thí sinh trúng tuyển, input: Mã ngành và điểm chuẩn ngành.......................6

3.

Sắp xếp các nguyện vọng trúng tuyển ngành theo điểm thi giảm dần..............................6

4.

Hiện ra các giám thị có quê quán ở Hà Nội....................................................................6

IV.


Cài đặt bài toán............................................................................................................ 7

1.

Class Nguoi.................................................................................................................. 7

2.

Class ThiSinh............................................................................................................... 9

package bt.quanlituyensinhdh;....................................................................................................9
3.

Class NguyenVong......................................................................................................11

package bt.quanlituyensinhdh;..................................................................................................11
4.

Class GiamThi............................................................................................................ 14

package bt.quanlituyensinhdh;..................................................................................................14
5.

Class Sapxepdiemthi...................................................................................................15

package bt.quanlituyensinhdh;..................................................................................................15
6.

Class DSNguoi............................................................................................................ 16


package bt.quanlituyensinhdh;..................................................................................................16
7.

Class QuanLy.............................................................................................................21

package bt.quanlituyensinhdh;..................................................................................................21
8.

Class Main................................................................................................................. 29

package bt.quanlituyensinhdh;..................................................................................................29
V.

Kiểm thử lập bộ test.......................................................................................................32

2


I.

Phát biểu bài toán
Hằng năm, Tuyển Sinh Đại Học là một vấn đề quan trọng mà nhiều người quan
tâm, có hang ngàn thí sinh và vơ số các ngành, các trường Đại học, Cao đẳng
tuyển sinh. Vậy làm thế nào để giải bài toán quản lý tuyển sinh Đại học, Cao
đẳng. Đây là đề tài của nhóm chúng em, sẽ giải đáp trong những phần dưới đây
Kỳ thi bao gồm 2 giai đoạn thi và dung kết quả thi để xét tuyển vào Đại học.
Các đối tượng cần quản lý:
Thí sinh: mỗi thí sinh gồm có Số báo danh(duy nhất), họ tên , giới tính, năm
sinh, quê quán, điểm thi, điểm ưu tiên.

Nguyện vọng: Một thí sinh có thể có nhiều nguyện vọng. Mỗi nguyện vọng
bao gồm: mã ngành, tên ngành, mã trường, khối xét tuyển, điểm thi ứng với
nguyện vọng sau kỳ thi.
Giám thị : Các giám thị được phân công coi thi, gồm mã giám thị(là duy nhất),
đơn vị cơng tác, họ tên, giới tính, năm sinh, q qn.
Thí Sinh và Giám thị cùng có các thuộc tính như Họ tên, quê quán, năm sinh,
giới tính nên được kế thừa từ lớp Người
 Tính kế thừa
ArrayList<Nguoi> quản lý cả Thí Sinh và Người, khi nhập ta có thể nhập tùy
theo Đối tượng Thí Sinh hoặc Người vào ArrayList này
Tính đa hình

II.

Xác định các lớp của bài tốn

1. Class Nguoi
 Thuộc tính: String hoTen, queQuan, int namSinh, gioiTinh
 phương thức:
 Constructor: Hàm tạo có đối số và hàm tạo không đối số
 Getter, Setter: Phương thức get, set cho các thuộc tính kiểu private
 Nhap: nhập thơng tin các thuộc tính
 Hien: Hiện ra các thơng tin
2. Class ThiSinh kế thừa từ class Nguoi
 Thuộc tính: String SBD, float diemUuTien, ArrayList<NguyenVong>
nv, NguyenVong nguyenvonga
 Phương thức:
 Nhap: override nhap() ở class Nguoi
 Hien: override hien() ở class Nguoi, hiện thông tin thí sinh và các
nguyện vọng của thí sinh


3


 nhapDSNguyenVong: nhập các nguyện vọng của thí sinh, gọi hàm
nhapNguyenVong từ class NguyenVong
 hienDSNguyenVong: hiện danh sách các nguyện vọng đã nhập của thí
sinh này, gọi hàm hienNguyenVong từ class NguyenVong
 hienThongTinTS: chỉ hiện thơng tin Thí Sinh
3. class GiamThi kế thừa từ class Người
 Thuộc tính: String maGT, String donviCT
 Phương thức:
 Nhap: override phương thức nhap() ở class Nguoi, nhập thông tin
giám thị
 Hien: override phương thức hien() ở class Nguoi, hiện thị thông
tin giám thị
4. Class NguyenVong
 Thuộc tính: String maNganh, maTruong, khoiXT, int maNv, float
diemThi
 Phương thức:
 nhapNguyenVong(): nhập thông tin nguyện vọng
 hienNguyenVong(): hiện thơng tin nguyện vọng
5. class QuanLy
 Thuộc tính:
 ArrayList<Nguoi> person
 ArrayList<ThiSinh> dsTrungTuyenNganh
 ArrayList<NguyenVong> nvTrungTuyen
 Phương thức:
 themDSNguoi(): thêm Người, có thể là Thí Sinh hoặc Giám Thị
vào ArrayList<Nguoi>

 menuSuaDoi(): Menu hiện thị các chức năng sửa đổi ở SuaDoi()
 SuaDoi(): Thêm, Sửa, Xóa các thơng tin như Thí Sinh, Nguyện
Vọng, Giám Thị
 suaNguyenVong(): sửa Nguyện Vọng của thí sinh
 xoaNguyenVong(): xóa nguyện vọng theo mã nguyện vọng
 themNguyenVong(): thêm nguyện vọng cho thí sinh
 suaThiSinh(): sửa thơng tin thí sinh và nhập lại
 xoaThiSinh(): xóa thí sinh theo số báo danh
 suaGiamThi(): sửa thông tin giám thị
 hienDSGiamThi(): hiển thị danh sách giám thị
 hienDS(): hiện danh sách gồm cả thí sinh và giám thị được lưu
trong ArrayList<Nguoi>
 hienDSHoSothiSinh(): Hiện danh sách các hồ sơ tuyển sinh: bao
gồm thông tin thí sinh và các nguyện vọng của từng thí sinh
4


hienDSThiSinh(): hiện thơng tin các thí sinh dự tuyển
ghiFile(): ghi file ArrayList<Nguoi> đã được nhập
docFile(): đọc file ArrayList<Nguoi>
hienDSTrungTuyen: hiện thị danh sách thí sinh trúng tuyển
ngành theo mã ngành và điểm chuẩn được nhập từ bàn phím
 hienDSTTNganh(): hiển thị danh sách trúng tuyển ngành trong
ArrayList<ThiSinh> dsTrungTuyenNganh
 SapXepTheoDiem(): Sắp xếp các nguyện vọng của thí sinh đã
trúng tuyển ngành theo điểm thi giảm dần, sử dụng Collections
Sort trong ArrayList<NguyenVong> nvTrungTuyen






Nguoi
-String hoTen
-String queQuan
- int namSinh
- int gioiTinh
+ Constructor()
+ Setter(), Getter()
+ nhap()
+ hien()
ThiSinh
- String SBD
+ float diemUuTien
- ArrayList<NguyenVong> nv
+ NguyenVong nguyenvonga
+ Constructor()
+ Setter(), Getter()
+ nhap()
+ hien()
+ nhapDSNguyenVong()
+ hienDSNguyenVong
+ hienThongtinTS

GiamThi
- String maGT
- String donviCT
+ Constructor()
+ Setter(), Getter()
+ nhap()

5


+ hien()
NguyenVong
- String maNganh, maTruong,
tenNganh, khoiXT
- float diemThi
- int maNv
+ Constructor()
+ Setter(), Getter()
+ nhapNguyenVong()
+ hienNguyenVong()

person
> dsTrungTuyenNganh
Vong> nvTrungTuyen

+ suaNguyenVong()
+ xoaNguyenVong()
+ themNguyenVong()
+ suaThiSinh()
+ xoaThiSinh()
+ suaGiamThi()
+ hienDSGiamThi()
+ hienDS()
+ hienDSHoSothiSinh()
+ hienDSThiSinh()
+ ghiFile()
+ docFile()

+ hienDSTrungTuyen
+ hienDSTTNganh
+ SapXepTheoDiem
+ hienGiamThioHaNoi
+ menuChinh
SapXepTheoDiemThi
Collections Sort

III.

Mơ tả thuật tốn thao tác
1. Chỉnh sửa thơng tin thí sinh, nguyện vọng, giám thị
Thuật tốn:
 Nhập vào SBD/ maNV/ MaGT cần tìm để chỉnh sửa
 Dùng vòng lặp và câu lệnh so sánh, nếu từ khóa truyền vào trùng với dữ
liệu đã có sẽ hiện thị ra để thao tác chỉnh sửa, khơng có sẽ khơng thơng bảo

 Thêm: Nhập vào thơng tin đối tượng mới
6


 Xóa: Trong ArrayList dùng phép remove
 Sửa : Nhập lại thơng tin mới

2. Hiện ra các thí sinh trúng tuyển, input: Mã ngành và điểm chuẩn
ngành
Thuật toán:
 Trong ArrayList đã nhập, tìm kiếm và hiện ra những thí sinh có điểm chuẩn
và mã ngành trùng với thơng tin nhập vào.


3. Sắp xếp các nguyện vọng trúng tuyển ngành theo điểm thi giảm dần
Thuật toán:
 Sử dụng Collections Sort trong ArrayList<nvTrungTuyen>
 Tạo class SapXepTheoDiemThi, với phương thức int
compare( Nguyenvong a1, Nguyenvong a2)
 Đặt sub= a1.getDiemXT()- a2.getDiemXT()
 Nếu sub < 0 return -1
 Nếu sub > 0 return 1
 Nếu sub =0 return 0

4. Hiện ra các giám thị có quê quán ở Hà Nội
Thuật toán:
 Trong ArrayList<Nguoi>, lọc ra Người là Giám thị bằng phép instance of
 Sử dụng vòng lặp foreach, lấy quê quán của giám thị so sánh quê quán của
giám thị với chuỗi “Ha Noi” bằng lệnh compareIgnoreCase
 Nếu giám thị quê quán ở Hà Nội sẽ hiện ra màn hình

IV.

Cài đặt bài tốn
1. Class Nguoi
package bt.quanlituyensinhdh;
import java.io.Serializable;
import java.util.Scanner;
public class Nguoi implements Serializable{
private String hoTen, queQuan;
private int namSinh, gioiTinh;

7



public Nguoi()
{
}
public Nguoi(String hoTen, String queQuan, int namSinh, int gioiTinh)
{
this.gioiTinh= gioiTinh;
this.hoTen= hoTen;
this.namSinh= namSinh;
this.queQuan= queQuan;
}
public String getHoTen() {
return hoTen;
}
public void setHoTen(String hoTen) {
this.hoTen = hoTen;
}
public String getQueQuan() {
return queQuan;
}
public void setQueQuan(String queQuan) {
this.queQuan = queQuan;
}
public int getNamSinh() {
return namSinh;
}
public void setNamSinh(int namSinh) {
this.namSinh = namSinh;
}
public String getGioiTinh() {

if(gioiTinh ==1)
return "Nam";
else if(gioiTinh==0)
8


return "Nữ";
else return null;
}
public void setGioiTinh(int gioiTinh) {
this.gioiTinh = gioiTinh;
}
public void nhap()
{
Scanner sc= new Scanner(System.in);
System.out.print("Họ tên: ");
hoTen= sc.nextLine();
System.out.print("Quê quán: ");
queQuan= sc.nextLine();
System.out.print("Năm sinh: ");
namSinh= sc.nextInt();
do
{
System.out.print("Giới tính(nam: 1/ nữ: 0) ");
gioiTinh= sc.nextInt();
}
while(gioiTinh!=1 && gioiTinh!=0);
}
public void hien()
{

System.out.print("{hoTen: "+ getHoTen() + ", gioiTinh: "+
getGioiTinh() +", namSinh: "+ getNamSinh()+ ", queQuan: "+
getQueQuan() + "}");
}
}

2. Class ThiSinh
package bt.quanlituyensinhdh;
import java.util.ArrayList;
import java.util.Scanner;
public class ThiSinh extends Nguoi{
private String SBD;
public float diemUuTien;
9


private ArrayList<NguyenVong> nv;
NguyenVong nguyenvonga;
public ThiSinh() {
super();
}
public ThiSinh(String SBD, float diemUuTien, ArrayList<NguyenVong>
nv, String hoTen, String queQuan, int namSinh, int gioiTinh) {
super(hoTen, queQuan, namSinh, gioiTinh);
this.SBD = SBD;
this.diemUuTien = diemUuTien;
this.nv = nv;
}
public String getSBD() {
return SBD;

}
public void setSBD(String SBD) {
this.SBD = SBD;
}
public float getDiemUuTien() {
return diemUuTien;
}
public void setDiemUuTien(float xx) {
diemUuTien = xx;
}
public ArrayList<NguyenVong> getNv() {
return nv;
}
public void setNv(ArrayList<NguyenVong> nv) {
this.nv = nv;
}
public NguyenVong getNguyenvonga() {
10


return nguyenvonga;
}
public void setNguyenvonga(NguyenVong nguyenvonga) {
this.nguyenvonga = nguyenvonga;
}
@Override
public void nhap()
{
Scanner sc= new Scanner(System.in);
super.nhap();

System.out.print("SBD: ");
SBD = sc.nextLine();
System.out.print("Điểm ưu tiên: ");
diemUuTien= sc.nextFloat();
setDiemUuTien(diemUuTien);
nhapDSNguyenVong();
}
public void nhapDSNguyenVong()
{
Scanner sc= new Scanner(System.in);
System.out.print("Nhập số nguyện vọng cần thêm: ");
int n = sc.nextInt();
nv = new ArrayList<>();
for(int i=0; i{
nguyenvonga= new NguyenVong();
nguyenvonga.nhapNguyenVong();
nv.add(nguyenvonga);
}
}
public void hienDSNguyenVong()
{
for(NguyenVong x: nv)
{
x.hienNguyenVong();
}
}
@Override
11



public void hien()
{
super.hien();
System.out.println("{SBD: "+ getSBD()+ ", diemUuTien: "+
getDiemUuTien());
hienDSNguyenVong();
}
public void hienThongtinTS()
{
super.hien();
System.out.println("{SBD: "+ getSBD()+ ", diemUuTien: "+
getDiemUuTien());
}
}

3. Class NguyenVong
package bt.quanlituyensinhdh;
import java.io.Serializable;
import java.util.Scanner;
public class NguyenVong implements Serializable{
private String maNganh, maTruong, tenNganh, khoiXT;
private float diemThi;
private int maNv;
public NguyenVong() {
}
public NguyenVong(int maNv, String maNganh, String maTruong, String
tenNganh, String khoiXT, float diemThi) {
this.maNv = maNv;
this.maNganh = maNganh;

this.maTruong = maTruong;
this.tenNganh = tenNganh;
this.khoiXT = khoiXT;
this.diemThi = diemThi;
}
12


public int getMaNv() {
return maNv;
}
public void setMaNv(int maNv) {
this.maNv = maNv;
}
public String getMaNganh() {
return maNganh;
}
public void setMaNganh(String maNganh) {
this.maNganh = maNganh;
}
public String getMaTruong() {
return maTruong;
}
public void setMaTruong(String maTruong) {
this.maTruong = maTruong;
}
public String getTenNganh() {
return tenNganh;
}
public void setTenNganh(String tenNganh) {

this.tenNganh = tenNganh;
}
public String getKhoiXT() {
return khoiXT;
}
public void setKhoiXT(String khoiXT) {
this.khoiXT = khoiXT;
}
13


public float getDiemXetTuyen() {
return diemThi;
}
public void nhapNguyenVong() {
Scanner sc = new Scanner(System.in);
System.out.println("Mã nguyện vọng: từ 1 tăng dần: ");
System.out.print("Mã trường: ");
maTruong = sc.nextLine();
System.out.print("Mã ngành: ");
maNganh = sc.nextLine();
System.out.print("Tên ngành: ");
tenNganh = sc.nextLine();
System.out.print("Khối xét tuyển: ");
khoiXT = sc.nextLine();
System.out.print("Điểm thi: ");
diemThi = sc.nextFloat();
}
public void hienNguyenVong()
{

System.out.println("Mã trường: "+ getMaTruong()+ ", Mã ngành: "+
getMaNganh()+ ", tên ngành: "+ getTenNganh()+ "\n Khối xét tuyển: "+
getKhoiXT()+ ", điểm Xét tuyển: "+ getDiemXetTuyen());
}
}

4. Class GiamThi
package bt.quanlituyensinhdh;
import java.util.Scanner;
public class GiamThi extends Nguoi {
private String maGT, donviCT;
public GiamThi()
{
}

14


public GiamThi(String maGT, String donviCT, String hoTen, String
queQuan, int namSinh, int gioiTinh)
{
super(hoTen, queQuan, namSinh, gioiTinh);
this.donviCT= donviCT;
this.maGT= maGT;
}
public String getMaGT() {
return maGT;
}
public void setMaGT(String maGT) {
this.maGT = maGT;

}
public String getDonviCT() {
return donviCT;
}
public void setDonviCT(String donviCT) {
this.donviCT = donviCT;
}
@Override
public void nhap()
{
super.nhap();
Scanner sc= new Scanner(System.in);
System.out.print("Mã giám thị: ");
maGT= sc.nextLine();
System.out.print("Đơn vị công tác: ");
donviCT= sc.nextLine();
}
@Override
public void hien()
{
super.hien();
System.out.println("\n{maGT: "+ getMaGT()+ ", donviCongtac: "+
getDonviCT()+ "}");
15


}
}

5. Class Sapxepdiemthi

package bt.quanlituyensinhdh;
import java.util.Comparator;
public class SapXepTheoDiemThi implements Comparator<NguyenVong>
{
@Override
public int compare(NguyenVong a1, NguyenVong a2) {
float sub= a1.getDiemXetTuyen()- a2.getDiemXetTuyen();
if(sub< 0)
return -1;
else if(sub ==0)
return 0;
else
return 1;
}
}

6. Class DSNguoi
package bt.quanlituyensinhdh;
import java.util.ArrayList;
import java.util.Scanner;
public class DSNguoi {
ArrayList<Nguoi> person;
public DSNguoi() {
person = new ArrayList<>();
}
public void themDSNguoi(Nguoi a) {
Scanner sc = new Scanner(System.in);
System.out.print("Nhập số lượng cần thêm: ");
int n = sc.nextInt();
for (int i = 0; i < n; i++) {

16


System.out.println("Lần nhập thứ " + (i + 1) + ": ");
a.nhap();
person.add(a);
}
}
public void menuSuaDoi() {
System.out.println("-------------Mời bạn lựa chọn -----------");
System.out.println("1. Sửa thông tin thí sinh");
System.out.println("2. Xóa thí sinh");
System.out.println("3. Sửa thơng tin giám thị");
System.out.println("4. Xóa giám thị");
System.out.println("5. Sửa nguyện vọng");
System.out.println("6. Thêm nguyện vọng");
System.out.println("7. Xóa nguyện vọng");
System.out.println("----------- Chọn số 0 để thốt ----------");
}
public void SuaDoi() {
Scanner sc = new Scanner(System.in);
int n;
do {
menuSuaDoi();
System.out.print("Chọn: ");
n = sc.nextInt();
switch (n) {
case 1: {
String sbd;
System.out.print("Nhập SBD của thí sinh cần sửa: ");

sc.nextLine();
sbd = sc.nextLine();
suaThiSinh(sbd);
break;
}
case 2: {
String sbd;
System.out.print("Nhập SBD của thí sinh cần sửa: ");
sc.nextLine();
sbd = sc.nextLine();
xoaThiSinh(sbd);
17


break;
}
case 3: {
String maGT;
System.out.print("Nhập mã giám thị cần sửa thông tin: ");
sc.nextLine();
maGT = sc.nextLine();
suaGiamThi(maGT);
break;
}
case 4: {
String maGT;
System.out.print("Nhập mã giám thị cần sửa thông tin: ");
sc.nextLine();
maGT = sc.nextLine();
xoaGiamThi(maGT);

break;
}
case 5: {
System.out.println("Nhập SBD của thí sinh: ");
sc.nextLine();
String sbd = sc.nextLine();
System.out.println("Nhập mã nguyện vọng");
int maNv = sc.nextInt();
suaNguyenVong(maNv, sbd);
break;
}
case 6: {
System.out.println("Nhập SBD của thí sinh: ");
sc.nextLine();
String sbd = sc.nextLine();
themNguyenVong(sbd);
break;
}
case 7: {
System.out.println("Nhập SBD của thí sinh: ");
sc.nextLine();
String sbd = sc.nextLine();
System.out.println("Nhập mã nguyện vọng");
int maNv = sc.nextInt();
18


xoaNguyenVong(maNv, sbd);
break;
}

default:
break;
}
} while (n != 0);
}
public void suaNguyenVong(int maNV, String sbd) {
for (Nguoi x : person) {
if (((ThiSinh) x).getSBD().compareTo(sbd) == 0) {
for (int i = 0; i < ((ThiSinh) x).getNv().size(); i++) {
if (((ThiSinh) x).getNv().get(i).getMaNv() == maNV) {
((ThiSinh) x).getNv().get(i).nhapNguyenVong();
}
}
}
}
}
public void xoaNguyenVong(int maNV, String sbd) {
for (Nguoi x : person) {
if (((ThiSinh) x).getSBD().compareTo(sbd) == 0) {
for (int i = 0; i < ((ThiSinh) x).getNv().size(); i++) {
if (((ThiSinh) x).getNv().get(i).getMaNv() == maNV) {
((ThiSinh) x).getNv().remove(i);
}
}
}
}
}
public void themNguyenVong(String sbd) {
for (Nguoi x : person) {
if (x instanceof ThiSinh) {

((ThiSinh) x).nhapDSNguyenVong();
19


}
}
}
public void suaThiSinh(String sbd) {
for (Nguoi x : person) {
if (x instanceof ThiSinh) {
if (((ThiSinh) x).getSBD().compareTo(sbd) == 0) {
x.nhap();
}
}
}
}
public void xoaThiSinh(String sbd) {
for (Nguoi x : person) {
if (x instanceof ThiSinh) {
if (((ThiSinh) x).getSBD().compareTo(sbd) == 0) {
person.remove(x);
}
}
}
}
public void suaGiamThi(String maGT) {
for (Nguoi x : person) {
if (x instanceof GiamThi) {
if (((GiamThi) x).getMaGT().compareTo(maGT) == 0) {
x.nhap();

}
}
}
}
public void xoaGiamThi(String maGT) {
for (Nguoi x : person) {
if (x instanceof GiamThi) {
if (((GiamThi) x).getMaGT().compareTo(maGT) == 0) {
person.remove(x);
}
20


}
}
}
public void hienDSGiamThi(Nguoi a) {
System.out.println("----------------------------------------------");
for (Nguoi x : person) {
if (x instanceof GiamThi) {
x.hien();
}
}
}
public void hienDS(Nguoi a) {
System.out.println("----------------------------------------------");
for (Nguoi x : person) {
x.hien();
}
}

public void hienDSThiSinh(Nguoi a) {
System.out.println("----------------------------------------------");
for (Nguoi x : person) {
if (x instanceof ThiSinh) {
x.hien();
}
}
}
public void menuChinh()
{
System.out.println("------CHƯƠNG TRÌNH QUẢN LÝ TUYỂN
SINH ĐẠI HỌC 2021------");
System.out.println("1. Nhập danh sách thí sinh và nguyện vọng của thí
sinh");
System.out.println("2. Nhập danh sách giám thị coi thi");
System.out.println("3. Hiển thị danh sách các hồ sơ dự thi");
System.out.println("4. Hiển thị danh sách các giám thị");
System.out.println("5. Chỉnh sửa thơng tin (Thí Sinh, Nguyện Vọng,
Giám Thị)");
System.out.println("6. Lưu file đã nhập");
21


System.out.println("7. Đọc dữ liệu từ file");
System.out.println("8. Hiện ra danh sách trúng tuyển( input: mà ngành,
điểm chuẩn)");
System.out.println("9. Sắp xếp danh sách trúng tuyển theo điểm thi
giảm dần");
System.out.println("10. Thống kê các giám thị cơng tác ở Hà Nội");
System.out.println("-----Nhấn phím 0 để thốt chương trình, xin cảm

ơn!-----");
}
}

7. Class QuanLy
package bt.quanlituyensinhdh;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
//import java.lang.ClassCastException;
public class QuanLy {
ArrayList<Nguoi> person;
ArrayList<ThiSinh> dsTrungTuyenNganh;
ArrayList<NguyenVong> nvTrungTuyen;
public QuanLy() {
person = new ArrayList<>();
}
public void themDSNguoi(Nguoi a) {
Scanner sc = new Scanner(System.in);
System.out.print("Nhập số lượng cần thêm: ");
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
System.out.println("Lần nhập thứ " + (i + 1) + ": ");
if (a instanceof ThiSinh) {
a = new ThiSinh();

22


a.nhap();
} else if (a instanceof GiamThi) {
a = new GiamThi();
a.nhap();
}
person.add(a);
}
}
public void menuSuaDoi() {
System.out.println("-------------Mời bạn lựa chọn -----------");
System.out.println("1. Sửa thông tin thí sinh");
System.out.println("2. Xóa thí sinh");
System.out.println("3. Sửa thơng tin giám thị");
System.out.println("4. Xóa giám thị");
System.out.println("5. Sửa nguyện vọng");
System.out.println("6. Thêm nguyện vọng");
System.out.println("7. Xóa nguyện vọng");
System.out.println("----------- Chọn số 0 để thoát ----------");
}
public void SuaDoi() {
Scanner sc = new Scanner(System.in);
int n;
do {
menuSuaDoi();
System.out.print("Chọn: ");
n = sc.nextInt();
switch (n) {

case 1: {
String sbd;
System.out.print("Nhập SBD của thí sinh cần sửa: ");
sc.nextLine();
sbd = sc.nextLine();
suaThiSinh(sbd);
break;
}
case 2: {
String sbd;
System.out.print("Nhập SBD của thí sinh cần sửa: ");
23


sc.nextLine();
sbd = sc.nextLine();
xoaThiSinh(sbd);
break;
}
case 3: {
String maGT;
System.out.print("Nhập mã giám thị cần sửa thông tin: ");
sc.nextLine();
maGT = sc.nextLine();
suaGiamThi(maGT);
break;
}
case 4: {
String maGT;
System.out.print("Nhập mã giám thị cần sửa thông tin: ");

sc.nextLine();
maGT = sc.nextLine();
xoaGiamThi(maGT);
break;
}
case 5: {
System.out.println("Nhập SBD của thí sinh: ");
sc.nextLine();
String sbd = sc.nextLine();
System.out.println("Nhập mã nguyện vọng");
int maNv = sc.nextInt();
suaNguyenVong(maNv, sbd);
break;
}
case 6: {
System.out.println("Nhập SBD của thí sinh: ");
sc.nextLine();
String sbd = sc.nextLine();
themNguyenVong(sbd);
break;
}
case 7: {
System.out.println("Nhập SBD của thí sinh: ");
sc.nextLine();
24


String sbd = sc.nextLine();
System.out.println("Nhập mã nguyện vọng");
int maNv = sc.nextInt();

xoaNguyenVong(maNv, sbd);
break;
}
default:
break;
}
} while (n != 0);
}
public void suaNguyenVong(int maNV, String sbd) {
for (Nguoi x : person) {
if (((ThiSinh) x).getSBD().compareTo(sbd) == 0) {
for (int i = 0; i < ((ThiSinh) x).getNv().size(); i++) {
if (((ThiSinh) x).getNv().get(i).getMaNv() == maNV) {
((ThiSinh) x).getNv().get(i).nhapNguyenVong();
}
}
}
}
}
public void xoaNguyenVong(int maNV, String sbd) {
for (Nguoi x : person) {
if (((ThiSinh) x).getSBD().compareTo(sbd) == 0) {
for (int i = 0; i < ((ThiSinh) x).getNv().size(); i++) {
if (((ThiSinh) x).getNv().get(i).getMaNv() == maNV) {
((ThiSinh) x).getNv().remove(i);
}
}
}
}
}

public void themNguyenVong(String sbd) {
25


×