Đặt vấn đề Trong xã hội ngày càng phát triển như hiện nay, nhu cầu về nâng cao trình độ học vấn, đặc biệt là các kỹ năng về ngoại ngữ ngày càng gia tăng, theo đó, các trung tâm giảng dạy ngoại ngữ đang ngày càng được thành lập và phát triển rộng. Điều này đặt ra vấn đề cho việc quản lý hệ thống các trung tâm ngoại ngữ ấy, làm sao để hệ thống có thể hoạt động một cách hiệu quả cũng như có giúp việc quản lý học viên, giảng viên trong trung tâm một cách thuận tiện, chính xác, hỗ trợ học viên đăng ký khóa học nhanh chóng và hệ thống phải phù hợp với thời đại công nghệ phát triển như hiện nay. Với cách quản lý truyền thống, người quản trị viên sẽ gặp không ít khó khăn khi dò tìm thông tin cần thiết trong các sổ sách và học viên khi cần đăng ký một khóa học trong trung tâm sẽ e ngại vì thủ tục quá rắc rối. Những khó khăn này làm các trung tâm hoạt động kém hiệu quả và trung tâm sẽ mất đi nhiều học viên tiềm năng, việc này ảnh hưởng đến công việc kinh doanh đáng kể.
Vì vậy, việc xây dựng một phần mềm quản lý trung tâm ngoại ngữ giải quyết được các vấn đề nói trên, nâng cao hiệu suất làm việc cho trung tâm, là việc hết sức cần thiết. Hệ thống quản lý trung tâm tiếng anh đang cần quản lý rất nhiều thông tin như: thông tin học viên, thông tin khóa học, thông tin giảng viên, ….và hệ thống cần được xây dựng dựa trên yêu cầu của người dùng, hỗ trợ lưu trữ và truy xuất thông tin một cách dễ dàng hơn, tránh rủi ro mất dữ liệu. Hệ thống cần giải quyết được các vấn đề trên một cách nhanh chóng và tối ưu. Đem lại một giao diện thân thiện cho người dùng, giúp học viên đăng ký học một cách dễ dàng hơn, hỗ trợ giảm thiểu các công việc cho người quản trị viên, nâng cao hiệu suất làm việc.
Bên cạnh đó, hệ thống cũng phải giải quyết được các vấn đề sai sót dữ liệu xảy ra do truy xuất đồng thời giữa các người dùng trong hệ thống, như việc đăng ký khóa học giữa các học viên, thêm và cập nhật thông tin giữa các quản trị viên. Hơn nữa, hệ thống cũng cần hỗ trợ việc sao lưu và phục hồi dữ liệu một cách nhanh chóng và đáng tin cậy. 6 Ngoài ra, hệ thống cũng cần phải có tính linh động để có thể chuyển sang các hệ thống khác liên quan khi cần như hệ thống quản lý trường học, quản lý trung tâm luyện thi, … để tiết kiệm chi phí và thời gian.2 Giải pháp Để có thể giải quyết các vấn đề đưa ra, nhóm chúng em đề xuất giải pháp là xây dựng một ứng dụng hỗ trợ việc quản lý trung tâm với đầy đủ các chức năng để phục vụ cho các nghiệp vụ của trung tâm, tin học hóa các việc lưu trữ và truy xuất thông tin, giúp cho công việc kinh doanh của trung tâm trở nên thuận tiện, chuyên nghiệp hơn. Học viên có thể đăng ký các khóa học, quản trị viên có thể đưa thông tin vào hệ thống một cách đồng thời nhưng vẫn chính xác, tránh các sự cố liên quan đến dữ liệu.3 Phần mềm sử dụng, hỗ trợ Trong quá trình thực hiện đồ án, nhóm đã sử dụng một số phần mềm phục vụ cho việc tìm hiểu và xây dựng đề tài bao gồm: - Phần mềm SQL developer (Oracle).
- Phần mềm Netbeans: để thực hiện phần mềm Java. - Driver: ojdbc11 Tất cả phần mềm được nhóm cài đặt trên hệ điều hành Windows 11. Xác định và phân tích yêu cầu 2. Phân tích yêu cầu - Học viên: thêm, xóa, sửa, tra cứu học viên, xem thông tin các khóa học và chương trình khuyến mãi đang được mở, xem được thông tin cá nhân và điểm số.
- Giảng viên: thêm, xóa, sửa, tra cứu giảng viên, hỗ trợ giảng viên nhập điểm cho sinh viên, chấm công, xem thông tin cá nhân của giảng viên và tính lương cho giảng viên đó. - Chấm công: thêm, xóa, sửa, tra cứu thời gian giảng viên chấm công và dựa vào đó để tính lương cho giảng viên 7 - Lịch dạy: thêm, xóa, sửa, tra cứu một lịch giảng dạy, hỗ trợ giảng viên biết được mình đang phụ trách khóa học nào. - Khóa học: thêm, xóa, sửa, tra cứu các khóa học hiện đang được mở tại trung tâm và lưu trữ thông tin các khóa học đã kết thúc. Một khóa học được mở có thể cho nhiều học viên đăng ký và học viên cũng có thể đăng ký nhiều khóa học - Khuyến mãi: thêm, xóa, sửa, tra cứu các khuyến mãi đã diễn ra và lưu trữ thông tin các khuyến mãi đã hết hạn.
Một khuyến mãi được mở cho nhiều học viên áp dụng khi đăng ký khóa học, nhưng một học viên chỉ được áp dụng 1 khuyến mãi/1 khóa học. - Điểm số học viên: thêm, xóa, sửa và tra cứu điểm số của học viên. Trong một khóa học, học viên có thể tham gia nhiều bài kiểm tra và hệ thống sẽ lưu lại thông tin bài kiểm tra đó thông qua giảng viên phụ trách. - Báo cáo: hỗ trợ báo cáo thống kê doanh thu theo ngày, tháng, năm.2 Yêu cầu chức năng • Chức năng lưu trữ dữ liệu - Tính năng lưu trữ được lưu trên hệ quản trị cơ sở dữ liệu Oracle, chứa các thông tin quan trọng, như thông tin học viên, giảng viên, chương trình khuyến mãi, rạp, nhân viên, … Giúp dễ dàng cho việc truy xuất dữ liệu.
• Chức năng thống kê, tính toán - Hỗ trợ tính lương cho giảng viên: tính toán và đưa ra lương tháng cho giảng viên dựa trên thông tin chấm công của họ trong tháng được lưu trữ trong hệ thống - Hỗ trợ tính điểm trung bình cho học viên khi tham gia khóa học: hệ thống lấy thông tin các bài kiểm tra được thêm bởi giảng viên và tính toán đưa ra điểm trung bình. - Hỗ trợ báo cáo, thống kê: hệ thống tính toán, đưa ra các báo cáo thống kê dựa trên các khóa học được bán ra. Các thống kê, báo cáo được đưa ra dựa theo từng tháng, hoặc từng năm • Chức năng tìm kiếm, tra cứu: - Nhân viên quản lý có thể thực hiện các chức năng tìm kiếm, tra cứu thông tin: Học viên, giảng viên, khóa học, lịch dạy,. • Chức năng xử lý đồng thời - Khi một học viên đang đăng ký khóa học thì một học viên khác không được vào 8 - Xử lý các vấn đề gây mất nhất quán dữ liệu lost update, uncommitted, deadlock, phantom, dirty read 2.3 Yêu cầu phi chức năng *Yêu cầu về chất lượng: - Tính tiến hoá: dễ dàng nâng cấp, cập nhật hệ thống, có thể nâng cấp lên hệ thống quản lý trung tâm trên nền tảng online.
- Tính hiệu quả: ứng dụng hoạt động tốt và đáng tin cậy. - Tính tiện dụng: dễ dàng sử dụng, tốc độ xử lý dữ liệu nhanh. - Tính tương thích: Hoạt động tốt trên các hệ điều hành phổ biến như Window, Linux. *Yêu cầu về giao diện: - Gần gũi, thân thiện với người dùng.
- Các thông tin cần thiết được hiển thị một cách rõ ràng, chi tiết. Thiết kế mô hình quan hệ, bảng thuyết minh quan hệ và thuộc tính, mô tả ràng buộc toàn vẹn 3.1 Mô hình ERD 9 3.2 Mô hình quan hệ STUDENT(S_ID, S_NAME, S_PHONE, S_BIRTH, S_MAIL, S_LEVEL, S_SEX, S_ADDR) COURSE(C_ID, C_NAME, C_LEVEL, C_START, C_END, C_FEE) RESULT(C_ID, S_ID, R_DATE, R_TEST, R_SCORE) TEACHERSTAFF(T_ID, T_NAME, T_PHONE, T_BIRTH, T_STARTDATE ,T_MAIL, T_ICNUM, T_SALARY, T_SEX, T_ADDR, T_PORTION) DISCOUNT(D_ID, D_NAME, D_PERCENTAGE, D_START, D_END) JOIN_COURSE (S_ID, C_ID, D_ID, S_FEE, STATUS) WORKING (W_ID, T_ID, W_HOURS, W_CHECKIN, W_CHECKOUT) TEACHING (TE_ID, T_ID, C_ID) ACCOUNT (A_MAIL, A_PASS, A_KIND, A_IMG) ADMIN (Q_ID, Q_NAME, Q_PHONE,Q_BIRTH, Q_STARTDATE, Q_ICNUM, Q_SALARY, Q_MAIL, Q_SEX, Q_ADDR, Q_PORTION) 3.3 Bảng thuyết minh quan hệ và thuộc tính 3.1 Table: STUDENT Thuộc tính Kiểu dữ liệu Ý nghĩa Ràng buộc S_ID varchar2(10) Mã học viên Khóa chính S_NAME nvarchar2(30) Tên học viên S_PHONE varchar2(15) Số điện thoại S_BIRTH date Ngày sinh S_MAIL varchar2(40) Email S_LEVEL varchar2(20) Trình độ học viên 10 S_SEX nvarchar2(10) Giới tính S_ADDR Nvarchar(100) Địa chỉ 3.2 Table: COURSE Thuộc tính Kiểu dữ liệu Ý nghĩa Ràng buộc C_ID varchar2(10) Mã khóa học Khóa chính C_NAME varchar2(30) Tên khóa học C_LEVEL varchar2(20) Cấp độ khóa học C_START date Ngày bắt đầu khóa học C_END date Ngày kết thúc khóa học C_FEE Number(20) Học phí C_CAPACITY Number(10) Sức chứa C_NUM Number(10) Sĩ số 11 3.3 Table: RESULT Thuộc tính Kiểu dữ liệu Ý nghĩa Ràng buộc C_ID varchar2(10) Mã khóa học Khóa chính, khóa ngoại tham chiếu đến khóa chính C_ID của bảng COURSE S_ID varchar2(10) Mã học viên Khóa chính, khóa ngoại tham chiếu đến khóa chính S_ID của bảng COURSE R_DATE date Ngày kiểm tra Khóa chính R_TEST varchar2(20) Loại bài kiểm Khóa chính tra R_SCORE Number(4,2) Điểm 3.4 Table: JOIN_COURSE Thuộc tính Kiểu dữ liệu Ý nghĩa Ràng buộc S_ID varchar2(10) Mã học viên Khóa chính, khóa ngoại tham chiếu đến khóa chính S_ID của bảng STUDENT 12 C_ID varchar2(10) Mã khóa học Khóa chính, khóa ngoại tham chiếu đến khóa chính C_ID của bảng COURSE D_ID varchar2(10) Mã khuyến mãi Khóa ngoại tham chiếu đến khóa chính D_ID của bảng DISCOUNT S_FEE date Học phí sau khi khuyến mãi STATUS Varchar2(20) Tình trạng của khóa (Còn diễn ra hay đã kết thúc) 3.5 Table: TEACHERSTAFF Thuộc tính Kiểu dữ liệu Ý nghĩa Ràng buộc T_ID varchar2(15) Mã giảng viên Khóa chính T_NAME nvarchar2(30) Tên giảng Not null viên T_PHONE varchar2(200) Số điện thoại T_BIRTH date Ngày sinh T_STARTDATE date Ngày vào làm T_MAIL varchar(40) Email 13 T_ICNUM varchar(12) Số chứng minh nhân dân T_SALARY number(20) Lương cơ bản T_SEX varchar(10) Giới tính T_ADDR nvarchar(40) Địa chỉ T_PORTION number(4,2) Hệ số lương 3.6 Table: WORKING Thuộc tính Kiểu dữ liệu Ý nghĩa Ràng buộc W_ID varchar2(10) Mã chấm công Khóa chính T_ID date Mã nhân viên Khóa ngoại tham chiếu đến khóa chính T_ID của bảng TEACHERSTAFF W_HOURS int W_CHECKIN timestamp Thời gian check-in W_CHECKOUT timestamp Thời gian check-out 14 3.7 Table: DISCOUNT Thuộc tính Kiểu dữ liệu Ý nghĩa Ràng buộc D_ID varchar2(10) Mã khuyến Khóa chính mãi D_NAME Varchar2(30) Tên khuyến Not null mãi D_PERCENTAGE varchar2(100) Phần trăm giảm D_START date Ngày bắt đầu khuyến mãi D_END date Ngày kết thúc khuyến mãi 3.8 Table: TEACHING Thuộc tính Kiểu dữ liệu Ý nghĩa Ràng buộc TE_ID varchar2(10) Mã lịch dạy Khóa chính T_ID varchar2(20) Mã giảng viên Khóa ngoại tham chiếu đến khóa chính T_ID của bảng TEACHERSTAFF C_ID varchar2(20) Mã khóa học 15 3.9 Table: ADMIN Thuộc tính Kiểu dữ liệu Ý nghĩa Ràng buộc Q_ID varchar2(10) Mã quản trị Khóa chính viên Q_NAME Varchar2(50) Tên quản trị viên Q_PHONE Varchar2(20) Số điện thoại Q_BIRTH Date Ngày sinh Q_STARTDA date Ngày vào làm TE Q_ICNUM Varchar2(20) Số chứng minh nhân dân 16 Q_SALARY number Lương cơ bản Q_MAIL Varchar2(30) Email Q_SEX Varchar2(20) Giới tính Q_ADDR Varchar2(10 Địa chỉ 0) Q_PORTION number Hệ số lương 3.