IL.Xác định yêu cầu Xây dựng một ứng dụng để quản lý học viên của Trung tâm tiếng Anh BaL nhằm lưu trữ và quản lý các thông tin về học viên đang theo học tại các lớp của các khóa học và
Trang 1BO THONG TIN VA TRUYEN THONG
HOC VIEN CONG NGHE BUU CHINH VIEN THONG
ext
—mỪy——
BAO CÁO BÀI TẬP LỚN MÔN LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
Đề tài: Xây dựng phần mềm Quản lý sinh viên
Nhóm 1
Giáo viên hướng dẫn: TS Đỗ Thị Liên
Thành viên: 1 B22DCD T178 Phạm Như Linh
2 B22DCD T179 Vũ Ngọc Linh
34 B22DCVT310 Trịnh Diệu Linh
HÀ NỘI -— 2024
Trang 2IL.Xác định yêu cầu
Xây dựng một ứng dụng để quản lý học viên của Trung tâm tiếng Anh BaL nhằm lưu trữ
và quản lý các thông tin về học viên đang theo học tại các lớp của các khóa học và giáo viên giảng đạy
Ứng dụng được sử dụng bởi nhân viên ở bộ phận quản lý, đăng nhập vào hệ thống sử dụng tài khoản admin được cấp sẵn trong cơ sở dữ liệu Những nhân viên có quyền truy
cập vào hệ thống có thê:
nhận
Quản lý khóa học: Ghi lại thông tin các khóa học, và danh sách lớp của khóa học Quản lý lớp học: Theo đõi danh sách lớp học, giáo viên phụ trách, và học viên tham gia
e© Quản lý điểm số: Lưu trữ và quản lý điểm số của học viên theo các môn học hoặc
II.Yêu cầu chức năng chỉ tiết
Sau khi đăng nhập vào hệ thống bằng tài khoản admin, người dùng có thể:
thống
° Tổng số lớp học: Thống kê số lượng lớp học hiện có
2 _ Quản lý giáo viên
2.1 Chức năng: Thêm mới giáo viên
e Người dùng nhập thông tin giáo viên:
o Ngay sinh (dob): Chuỗi ký tự không rong
sách
© _ Tự động tạo mã giáo viên (ID giáo viên) theo quy tắc:
Trang 3m Mã giáo viên là "TC" + số thứ tự tăng dần (VD: TC001,
TC002)
m Nếu hiện tại có 10 giáo viên, mã tiếp theo sẽ là "TCOIL"
© _ Tự động viết hoa mã giáo viên đề đảm bảo tính nhất quán (VD: tc012 — TC012)
m Xóa khoảng trắng thừa
m Viết hoa chữ cái đầu của từng từ (VD: "ngUYễn vAn A " >
"Nguyễn Văn A")
o_ Kiểm tra và thêm số "0" vào đầu số điện thoại nếu thiểu (VD:
"987654321" — "0987654321")
m Hệ thống đọc dữ liệu từ file và tự động chuẩn hóa thông tin
như trên trước khi lưu vào cơ sở đữ liệu
2.2 Chức năng: Hiển thị thông tin của tat cả giáo viên: Danh sách bao gồm thông
tin cơ bản và các lớp học mà họ đảm nhận
e_ Hiển thị danh sách giáo viên:
2.3 Chức năng: Xóa giáo viên:
Quan ly hoc vién
3.1 Chức năng: Thêm mới học viên
e Nhập thông tin sinh viên:
o Ngay sinh (dob): Chuỗi ký tự không rong
o Kiém tra và thêm số "0" vào đầu số điện thoại nếu thiếu
o Cho phép tải fñle đữ liệu danh sách học viên lên:
m Hệ thống đọc dữ liệu từ file và tự động chuẩn hóa thông tin
như trên trước khi lưu vào cơ sở đữ liệu
3.2 Chức năng: Hiền thị đanh sách học viên: Bao gồm thông tin cá nhân và đanh sách lớp học đang tham gia
e_ Nhập mã sinh vién (studentld)
e Hiển thị:
Trang 43.3 Chức năng: Xóa học viên:
Quản lý khóa học
4.1 Chức năng: Thêm mới khóa học
e_ Người dùng nhập thông tin lớp học:
o_ Tự động viết hoa mã khóa học đê đảm bảo tính nhất quán
Ielts Preparation)
o_ Kiểm tra ID khóa học đã tồn tại hay chưa trước khi thêm
m Dữ liệu sẽ được kiểm tra và thêm vào cơ sở dữ liệu nêu hợp
lệ
4.2 Chức năng: Hiển thị danh sách khóa học:
o Makhoa hoc, tén khéa hoc, s6 budi học
4.3 Chức năng: Xóa khóa hoc:
© Ngày bắt đầu và ngày kết thúc (startDate, endDate): Ngày hợp
lệ
e _ Hệ thống tự động gán giáo viên và học viên vào lớp dựa trên thông tin trong file
@ Cho phép luu danh sach Iép hoc ra file dtr ligu
5.2 Chức năng: Hiển thị danh sách lớp học:
gia, ngày bắt đầu và ngày kết thúc lớp học
Trang 57 Diém chuyên cần (attendance): Số thập phân
m Điểm bài tập (homework): Số thập phân
" Điểm giữa khóa (midTerm): Số thập phân
m Điểm cuối khóa (endTerm): Số thập phân
finalScore = attendance x 9.1 + homework x 9.2 + midTerm x @.2 + endTerm x 0.5
Điểm hiển thị làm tròn 2 chữ số thập phân
e Nếu điểm chuyên cần lớn hơn 5 thì kết quả sẽ hién thi “Passed” con néu
ngược lại thì kết qua sé 1a “Failed”
II Phân tích thiết kế ra lớp:
Gồm 7 lép: Person, Teacher, Student, Course, Class, Score, Users
1 Lớp Person (Lớp cha trừu tượng)
Biến
e name (String): Tên cá nhân, được chuẩn hóa
® phoneNum (9g): Số điện thoại, được chuẩn hóa đề đám bảo luôn bắt
đầu bằng 0
Hàm khởi tạo
e© Không tham số: Tạo một đối tượng mặc định
Phương thức
e Chuẩn hóa dữ liệu:
đầu và các chữ cái còn lại viết thường
từ nhiều định đạng khác
dau bang 0
Trang 6©_ getldQ), getName(Q), getDob(), getPhoneNumQ) trả về các giá trị tương ứng
liệu vào file
©_ toStringQ: Trả vẻ chuỗi biểu diễn thông tin cơ bản của cá nhân
2 Lớp Student (Kế thừa Person)
Biến
® cnt (static int): B6 đếm đề tạo ID tự động cho học viên
tham gia, lưu theo dang classId -> Score
theo ID
Hàm khởi tạo
e© Không tham số: Tạo đối tượng mặc định
e (6 tham sé name, dob, phoneNum: Khởi tạo học viên với ID tự động dạng
STxxx
Phuong thirc
tham gia nếu hợp lệ
e printStudentResult(): In chi tiết kết quả của hoc viên (các lớp tham gia và điểm sô)
thứ tự từ điền
3 Lớp Teacher (Kế thừa Person)
Biến
® cnt (static int): B6 dém tur động tạo ID cho giáo viên
e teachingCourses (7reeSet<String>): Danh sach các lớp mà giáo viên đang
đạy
e email (Sting): Email duoc tu déng sinh dựa trên tên và ID giáo viên
theo ID
Hàm khởi tạo
e© Không tham số: Tạo đối tượng mặc định
và emaIl tự động
Phương thức
Trang 7e addTeachingClass(Strng class[D): Thêm lớp mà giáo viên dạy vào danh sách
4 Lớp Course
Biến
® cnt (static int): B6 dém tur déng tao ID cho khéa hoc
hoc
id (String): ID cua khéa học
name (String): Tén cua khoa hoe (duge chuan hoa)
totalSessions (int): Téng sé budi hoc
e classes (Set<Class>): Danh sach các lớp thuộc khóa học này
Hàm khởi tạo
e© Không tham số: Tạo đối tượng mặc định
e Có tham số đầy đủ: Khởi tạo khóa học và tự động thêm vào danh sách
chung
Phương thức
©_ toStringQ: Hiền thị thông tin chỉ tiết khóa học (bao gồm các lớp còn trồng)
Š Lớp Class
Biến
MAX STUDENTS (static int): Gidi hạn số sinh viên trong một lớp allClasses (static TreeMap<String, Class>): Danh sach tat cả các lớp classId (String): ID cua lop hoc
courseld (S/ri›g): ID của khóa học mà lớp thuộc vẻ
teacherld (String): ID giao viên dạy lớp
studentList (TreeSet<Student>): Danh sách sinh viên trong lớp
Hàm khởi tạo
e© Không tham số: Tạo đối tượng mặc định
e Có tham số đầy đủ: Khởi tạo lớp học với classld tự động và thêm vào danh
sách chung
Phương thức
addStudent(Student stu): Thêm sinh viên vào lớp nếu chưa đây
@ removeStudent(Student stu): Xoa sinh vién khỏi lớp
e removeExpiredClasses(Class x): Kiểm tra và loại bỏ các lớp đã kết thúc
Trang 8© save(): Tra vé thong tin lớp dưới đạng chuỗi đề lưu ñle
©_ toStringQ: Hiền thị thông tin chỉ tiết lớp học
6 Lớp Score
Biến
e result (String): Két qua (pass/fail/not graded)
Hàm khởi tạo
e© Không tham số: Tạo điểm với giá trị mặc định
Phương thức
e toString(): Hién thi thông tin chỉ tiết điểm số
IV.Xây dựng biểu đồ lớp(UML)
Trang 9publ Teacher (String name, String dob, String phoneNum)
super("TC" + 3 format (" ++ont), name, dob, phoneNum) ;
public Student (String name, String dob, String phoneNum) {
super("ST" + String format ("S03d", ++cnt), name, dob,
addStudent ();
phoneNum) ;
2 Da hinh (Polymorphism)
Đa hình cho phép một phương thức được thực hiện theo nhiều cách khác nhau.Chương
trinh da sử dụng phương thức ghi đẻ (overriding) đề thay đôi hành vị của một phương
thức kế thừa từ lớp cha
@Override
public String teString() {
StringBuilder res = new StringBuilder();
for (Class x : this.classes) {
if (x.getStudentList().size() < 20 && x.removeExpiredClasses(x)) { res.append(x.getClassId()).append(" ");
}
return "ID Course: " + this.id
+ "\nCourse name: " + this.name
+ "\nNumber of sessions: " + this.totalSessions
+ "\nAvailable classes: " + res.toString().trim();
3 Dong goi (Encapsulation)
Trang 10Đóng gói giúp bảo vệ dữ liệu bên trong lớp và chỉ cho phớp truy cập thông qua các phương thức getter và setter Điều này giúp kiểm soát cách dữ liệu được thay đôi và đảm bảo tính nhất quán
lic Class me Comparable<¢
privat nal int # h 20;
it TreeMap<String, Class> ew TreeMap<>();
public String setClassId(String courseID) {
Course course Course getAllCourses().get(courselID);
4 Trừu tượng (Abstraction)
Trừu tượng giúp ân đi chi tiết thực thi và chí hiển thị các chức năng quan trong Diéu nay
có thê được thực hiện qua việc sử dụng lớp trừu tượng
Trang 11private String id;
private String name;
private String dob;
private String phoneNum;
public Person(String id, String name, String dob, String phoneNum) { this.id = id;
this.name = setName (name);
this.dob = setDob (dob);
this.phoneNum = setPhoneNumber (phoneNum) ;
V.Hướng dẫn sử dụng app Quản lý học viên
1 ĐĂNG NHẬP VÀO GIAO DIỆN CHÍNH
e_ Giao diện chính xuất hiện với tài khoản admin là tài khoản mặc định được lưu
trong khối static của class Users
Vui lòng sử dụng tài khoản
CD Hién thị mật khẫu
Đăng nhập
Trang 12e_ Click hiển thị mật khẩu đề hiển thị mật khâu
Quan ly hoc vién
Tén dang nhap Chào mừng bạn!
admin Vui lòng sử dụng tài khoản
admin123 (V] Hiễn thị mật khẫu Đăng nhập
e_ Giao diện trang chủ của admin
Quan ly hoc vién
ME
Quản lý giáo viên
& Quản lý học viên
Trang 13EU ee ID Họ và tôn Ngày sinh Số điện thoại Các lớp đang dạy
e Thông tm nhập vào đã được tự động chuẩn hoa trước khi đưa vào danh sách
(S) Quan ly hoc viên
Quan ly hoc vién
l=} Quản lý khóa học ID Họ và tên Ngày Sinh Số điện thoại Các lớp đang day
- - a
TC001 Vũ Ngọc Linh 02/12/1990 0987654321 Hiện không có lớp
c Quản lý lớp học
TC002 Nguyen Van An 01/03/1980 0901234567 Hiện không có lớp
E Quản lý điểm TC003 Tran Thi Binh 15/07/1975 0912345678 Hiện không có lớp
giáo viên tại trung tâm, các khóa học đang giảng dạy
Trang 14[Source Hitoy Tei RỆ - - gi H6iý £@$9,
Trang 15LS) Quan ly hoc viên - x
Quan ly hoc vién
Quản lý giáo viên
=| Quản lý khóa học ID Họ và tên Ngày Sinh Số điện thoại Các lớp đang dạy
TC001 Vũ Ngọc Linh 02/12/1990 0987654321 liện không có lớp
bee Quản lý lớp học
TC002 Nguyen Van An 01/03/1980 0904234587 Hiện không có lớp
E Quản lý điểm TC003 Tran Thi Binh 15/07/1975 0912345678 Hiện không có lớp
=| Quản lý khóa học ID Họ và tên Ngày sinh Số điện thoại Các lớp đang dạy
a
ee Quản lý lớp học TC004 Le Minh Hoang 22/11/1985 0923456789 Hiện không có lớp
TC005 Pham Yan Cuong 09/05/1990 0934587890 Hiện không có lớp
đữ liệu đồng thời sẽ được lưu vào file Teacherlnput.in dé lưu đanh sách cho lần sử dụng sau
Trang 17e_ Dữ liệu file TeacherOutput.m khi được lưu lại
file” dé hiển thị lên những thông tin đã làm việc trước đó
® Sau khi đữ liệu được ghi lại sẽ có thông báo lưu thành công
VD: Xoá giáo viên Trần Bích Ngọc ấn vào dòng chứa thông tin giáo viên đó rồi click “Xoá giáo viên”
Trang 18é] Quản lý học viên
Quản lý học viên
rang chủ Tên giáo viên
> Quản lý giáo viên
Sô điện thoại
B4 Quản tý khóa học ID Họ và tên oo, ai Các lớp đang dạy
Đ ido viên thành côn! ———_— „
a
ee Quan ly I6p hoc TC003 Tran Thi Binh ( œ ) Hiện không có lớp
TC004 Le Minh Hoang Hiện không có lớp
Bet] auin ly khéa hee
ID Họ và tên Ngày sinh Số điện thoại Các lớp đang học
Trang 19e Tương tự như giao điện Quản lý giáo viên đầu tiên ta sẽ phải an “Tải ñle lên” đề hiện thị thông tin những học viên trước đó từ file StudentInput.in
$ Tà T2 =2 ren Ngày sinh
š _ Quản lý giáo viên
Số điện thoại
.— 11 1
ID Họ và tên Ngày sinh Số điện thoại Các lớp đang học
+ fete Nall ait ST001 Trịnh Diệu Linh 24/07/2004 0123456789 Chưa cập nhật
ST002 Hoang Minh Tuan 12/09/2002 0987123458 Chưa cập nhật
3 Quan ly diém
as $T003 Le Thi Hoa 08/03/2001 0988234567 Chưa cập nhật
1) 0Ä 7 xố ST004 Nguyen Van Nam 22/11/2000 0989345678 Chưa cập nhật
e Thêm học viên mới vào danh sách và ân nút “Thêm học viên”
Quan ly hoc vién
Trang chủ Tên học viên : Phạm Nguyên Khôi
Ngày sinh : 08/08/2006
Số điệnthoại = 0941523763|
Quan ly khéa hoc
pelt T Sel CAU
ID Họ và tên Ngày sinh Số điện thoại Các lớp đang học
Quan ly lốp học ST015 Trân Quang Hu/ 22/08/2002 0978456123 Chưa cập nhật
ST018 Lê Thị Thu Hà 05/05/2001 0918567345 Chưa cập nhật
Quản lý điểm |
ST017 Phạm Xuân Hòa 30/07/2004 0906789456 Chưa cập nhật
ST018 Dang Bao Khánh 12/03/2005 0937456123 Chua cap nhat
Thoát
e_ Thông tn sinh viên mới đã được lưu vào cuối danh sách
Trang 20|S) Quan ly hoc vién _— x
cae Seen (aie en Lumwene [temns-ven,)
Bet] Quản lý khóa học
ID Họ và tên Ngày Sinh Số điện thoại Cac lớp đang học
| ee ee ST018 Lê Thị Thu Hà 05/05/2001 0918567345 Chưa câp nhật
ST017 Pham Xuân Hòa 30/07/2004 0906789456 Chưa cập nhật
2 ST018 Bang Bao Khanh 12/03/2005 0937456123 Chua cap nhat
” ST020 Pham Nguyên Khôi 08/08/2006 0941523703 Chưa cập nhật
v roan Thêm vào lớp
Trang 214 GIAO DIEN QUAN LY KHOA HQC
4 Quan ly khéa hoc
ID khóa học Tên khóa học Số buỗi học
ENG002 Toeic Preparation 30
E Quản lý điểm
ENG003 English For Travel 20
khi đưa vào danh sách
click vào “lưu ñle”, sắp xếp theo thứ tự từ điển của từ điện của ID khoá học.Bao gồm các thông tin đã nhập và các lớp đang còn trồng( các lớp chưa kết thúc nên chưa có thông tin cho dòng này)
Xoá khoá học cũng làm tương tự như trên
GIAO DIEN QUAN LY LOP HỌC
Ta cũng làm tương tự như các chức năng trước
Nếu ID khoá học hoặc ID giáo viên nhập vào không có trong dữ liệu thì sẽ hiển thị
thông báo
sách ID lớp học được tạo dựa trên ID khoá họcTstt của lớp trong khóa học