Yêu cầu chức năng và yêu cầu phi chức năngYêu cầu chức năng: - Đăng nhập- Thêm cán bộ mới phía quản trị.- Thay đổi thông tin cán bộ phía người dung và phía người quản trị.- Xóa cán bộ ph
Trang 1MỤC LỤC
Mục lục 1
Lời nói đầu 3
Danh mục hình ảnh 4
CHƯƠNG 1 Tổng quan về đề tài 5
1.1 Yêu cầu bài toán 5
1.2 Yêu cầu chức năng và yêu cầu phi chức năng 5
1.3 Phân công nhiệm vụ 6
CHƯƠNG 2 Mô tả và phân tích chương trình 8
2.1 Biểu đồ usecase tổng quát của hệ thống 8
2.2 Use case Đăng nhập 8
2.2.1 Mô tả use case 8
2.2.2 Phân tích use case 9
2.3 Use case quản lý nhân sự phía người quản trị 9
2.3.1 Mô tả use case 9
2.3.2 Phân tích use case 12
2.4 Use case tìm kiếm 15
2.4.1 Mô tả use case 15
2.4.2 Phân tích use case 17
CHƯƠNG 3 Xây dựng chương trình 18
Trang 23.1.2 Giao diện hiển thị phía người dùng 27
3.2 Thiết kế cơ sở dữ liệu MySQL và JDBC 33
3.3 Xây dựng các chức năng của bài toán 38
3.3.1 Tương tác dữ liệu và các phương thức chính 38
3.3.2 Đăng nhập và phân chia quyền khi đăng nhập 39
3.3.3 Hiển thị dữ liệu phía người dùng 43
3.3.4 Tìm kiếm 46
3.3.5 Cập nhật thông tin cá nhân – phía người dùng 48
3.3.6 Hiển thị dữ liệu phía người quản trị 53
3.3.7 Thêm nhân sự 56
3.3.8 Thay đổi thông tin phía người quản trị 60
3.3.9 Xóa nhân sự 65
CHƯƠNG 4 Kết quả đạt được 69
TÀI LIỆU THAM KHẢO 70
Trang 3LỜI NÓI ĐẦU
Dựa trên thực tế của xã hội, các công ty, tổ chức khi mở rộng phát triển
vì vậy số lượng nhân viên, cán bộ trong tổ chức từ đó mà tăng lên, đòi hỏi việc quản lý hồ sơ cần nhanh gọn, trực quan đáp ứng đủ về số lượng và chất lượng Việc lưu trữ thông tin thủ công trên hồ sơ giấy tờ với số lượng lớn trở lên khó khăn
Hệ thống quản lý cán bộ là hệ thống giúp cho nhóm, công ty dễ dàng trong việc quản lý hồ sơ cán bộ, giảm thiểu công việc liên quan đến giấy tờ, đẩy nhanh tiến độ công việc Chương trình là công cụ hữu dụng giúp cho người quản lý cũng như nhân viên có thể quản lý, quan sát rõ thông tin Giao diện đơn giản, dễ sử dụng nhưng vẫn đầy đủ chức năng cho người dung
Nhóm sinh viên thực hiện
Trang 4DANH MỤC HÌNH ẢNH
Hình 3.1 Giao diện chính phía người quản trị 16
Hình 3.2 Giao diện menu phía người quản trị 19
Hình 3.3 Giao diện menu quản lý nhân sự 19
Hình 3.4 Giao diện thêm nhân sự 21
Hình 3.5Giao diện thay đổi thông tin phía người quản trị 23
Hình 3.6 Giao diện menu chính của hệ thống quản lý nhân sự (user) .25 Hình 3.7 Giao diện "Menu" trên thanh công cụ 28
Hình 3.8 Dialog đăng xuất 28
Hình 3.9 Dialog xác nhận thoát chương trình 28
Hình 3.10 Tìm kiếm 29
Hình 3.11 Giao diện thay đổi thông tin phía người dùng 30
Hình 3.12 Tạo database và bảng lưu trữ dữ liệu 34
Hình 3.13 Bảng dữ liệu ban đầu 35
Hình 3.14 Kết nối database với JDBC 35
Hình 3.15 Giao diện đăng nhập 37
Hình 3.16 Hàm IsAdmin 39
Hình 3.17 Hàm IsUser 40
Hình 3.18 Hàm getKySu() 41
Hình 3.19 Hàm getCongNhan() 42
Hình 3.20 Hàm getNhanVien() 42
Hình 3.21 Hàm hienThiDanhSachKySu() 43
Hình 3.22Hàm hienThiDanhSachCongNhan() 43
Hình 3.23 Hàm hienThiDanhSachNhanVien() 44
Hình 3.24 Hàm search() 45
Hình 3.25 Hàm updatePersonUser () 49
Hình 3.26 Hàm getKySu() 51
Hình 3.27 Hàm getCongNhan() 52
Hình 3.28 Hàm getNhanVien() 52
Trang 5Hình 3.29 Xử lý sự kiện xóa ở giao diện chính 65
CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 1.1 Yêu cầu bài toán
Bài toán quản lý nhân sự gồm có công nhân, kỹ sư và nhân viên Mỗi cán bộ cần quản lý lý các thuộc tính: Họ tên, năm sinh, giới tính, địa chỉ
- Các công nhân cần quản lý: Bậc (công nhân bậc 3/7, bậc 4/7 )
- Các kỹ sư cần quản lý: Ngành đào tạo
- Các nhân viên phục vụ cần quản lý thông tin: công việc
Đối tượng sử dụng: Người quản lý nhân sự, nhân sự
1.2 Yêu cầu chức năng và yêu cầu phi chức năng
Yêu cầu chức năng:
- Đăng nhập
- Thêm cán bộ mới phía quản trị
- Thay đổi thông tin cán bộ phía người dung và phía người quản trị
- Xóa cán bộ phía quản trị
- Tìm kiếm cán bộ
- Xem thông tin chi tiết của cán bộ
- Sắp xếp danh sách cán bộ theo năm và theo tuổi
- Hiển thị danh sách cán bộ đang quản lý phía người dùng và phía người quản trị
- Chương trình có hai chế độ quản lý: người quản trị và người
Trang 6Yêu cầu phi chức năng:
- Phần mềm dễ sử dụng với người mới tiếp cận, có ít kinh nghiệm
về công nghệ thông tin
- Giao diện dễ hiểu, rõ ràng, bố cục rõ ràng với khả năng truy cập nhanh
1.3 Phân công nhiệm vụ
STT Người thực hiện Nội dung công việc
Hoàng Phi Hùng
Đinh Văn Hiệp
Đinh Văn Hiệp +Hoàng Phi HùngNguyễn Huy HưngNguyễn Huy Hưng
Đinh Văn HiệpHoàng Phi Hùng
- Tổng quan, phân tích đề tài và xácđịnh các mục tiêu cần thực hiện, chuẩn bị kiến thức, công cụ thực hiện
- Xác định yêu cầu chức năng và phi chức năng của hệ thống
- Mô tả và phân tích các use case chính của bài toán quản lý cán bộ
- Thiểt kế giao diện của người dùng, sử dụng Swing
- Thiết kế giao diện phía quản trị
- Thiết kế cơ sở dữ liệu MySQL vớiJDBC, phân chia chế độ quản trị
và người dùng
- Xử lý kết nối database lấy dữ liệu
- Tìm kiếm thông tin cán bộ (phía người dùng)
Trang 7Hoàng Phi Hùng
Đinh Văn HiệpNguyễn Huy HưngĐinh Văn HiệpNguyễn Huy Hưng
- Thêm cán bộ mới phía quản trị
- Thay đổi thông tin cán bộ phía quản trị
- Tìm kiếm thông tin cán bộ (phía quản trị)
- Xóa cán bộ phía quản trị
Hoàn thiện báo cáo
Bảng 1.1 Bảng phân công nhiệm vụ
Các công việc cần được thực hiện có trình tự và móc nối với nhau Cần xây dựng database song song với việc xây dựng giao diện để tối ưu thời gian làm dự án
Cần xây dựng phương thức kết nối database sớm để kịp thời xây dựng các phương thức khác đáp ứng nhu cầu bài toán
Trang 8CHƯƠNG 2 MÔ TẢ VÀ PHÂN TÍCH CHƯƠNG TRÌNH 2.1 Biểu đồ usecase tổng quát của hệ thống
Quan ly nhan su Admin
Cap Nhat Thong Tin Ca Nhan
Tim kiem nhan su
Dang Nhap
NguoiDung
Xem thong tin nhan su
CSDL
2.2 Use case Đăng nhập
2.2.1 Mô tả use case
Tên use case
Đăng Nhập
Mô tả chi tiết use case:
Use case này cho phép người dùng đăng nhập vào hệ thống
Luồng sự kiện:
1 Use case bắt đầu khi người dùng chạy chương trình Hệ thống hiển thị màn hình đăng nhập
Trang 92 Người dùng nhập tên đăng nhập, mật khẩu và kích nút
“Đăng nhập” Hệ thống kiểm tra thông tin đăng nhập, nếu hợp lệ cho phép người dùng truy cập vào hệ thống
Use case kết thúc
1 Tại bước 2 luồng cơ bản, nếu người dùng nhập thông tin không hợp lệ Hệ thống hiển thị thông báo yêu cầu người dùng nhập lại
2 Tại bất kì thời điểm nào trong quá trình thực hiện use case nếu không kết nối với cơ sở dữ liệu thì hệ thống sẽ hiển thị một thông báo lỗi và use kết thúc
Các yêu cầu đặc biệt:
2.3 Use case quản lý nhân sự phía người quản trị
2.3.1 Mô tả use case
Trang 10Luồng sự kiện
Luồng cơ bản :
(1) Use case này bắt đầu khi người quản trị kích đăng nhập với tư cách admin Hệ thống sẽ lấy thông tin các nhân sự bao gồm: IDCanbo, họ tên, năm sinh, giới tính, địa chỉ, chức vụ, mô tả, username, password,isadmin từ bảng CanBo và hiển thị lên màn hình
(2) Thêm nhân sự
Người quản trị nhập thông tin cho nhân sự mới và kích nút “Thêm mới” Hệ thống sẽ thêm một bản ghi mới vào bảngCanbo sau đó lấy thông tin về các nhân sự bao gồm
:IDCanbo,họ tên,năm sinh, giới tính, địa chỉ, chức vụ, mô tả, username, password, isadmin từ bảng CanBo và hiển thị ra màn hình
(3) Thay đổi thông tin
Người quản trị kích vào một dòng thông tin của bất kì một nhân sự nào trong danh sách các nhân sự và chọn thay đổi thông tin trên màn hình Hệ thống lấy thông tin nhân sự bao gồm: ID,username, họ tên, năm sinh, giới tính, địa chỉ, chức vụ cũ của nhân sự được chọn từ bảng cán bộ và hiển thị lên màn hình trong hộp Textbox
Người quản trị sửa thông tin cần sửa sau đó kich vào nút “Cập nhật” Hệ thống cập nhật thông tin nhân sự vào bảngCanBo sau đó lấy thông tin về các cán bộ và hiển thị lên màn hình
(4) Xoá nhân sự
Người quản trị kích vào một dòng nhân sự trong danh sách nhân sự đã hiển thị và click “xoá nhân sự”
Trang 11Người quản trị kích nút “Xoá” ,hệ thống hiển thị thông báo xác nhận có muốn xoá hay không và kèm theo hiển thị IDnhân sự được xóa Người quản trị chọn “ Xóa” để xoá nhân
sự đó Hệ thống xoá nhân sự đã được chọn ở bảng Canbo sau
đó lấy thông tin các nhân sự và hiển thị lên màn hình
(5) Use case kết thúc
Luồng rẽ nhánh:
1) Tại bất kỳ thời điểm nào trong quá trình thực hiện use case nếu không kết nối được với cơ sở dữ liệu thì hệ thống sẽ hiển thị một thông báo lỗi và use case kết thúc
2) Tại bước 1 trong luồng cơ bản nếu không tìm thấy bản ghi nào trong bảng CanBo hệ thống sẽ hiển thị thông báo “Không
có bản ghi nào!” và use case kết thúc
3) Tại bước 2a và 3b trong luồng cơ bản khi người quản trị nhập thông tin nhân sự không hợp lệ, hệ thống sẽ hiển thị một thông báo lỗi yêu cầu nhập lại Người quản trị có thể chọn
“Yes” để tiếp tục hoặc kích vào nút “No” để kết thúc
4) Tại bước 4b trong luồng cơ bản nếu không thể xóa được sinh viên hệ thống sẽ hiển thị một thông báo lỗi và use case kết thúc
Các yêu cầu đặc biệt:
Cần kiểm soát quyền thực hiện use case này để đảm bảo tính an toàn và bảo mật
Tiền điều kiện:
Người quản trị cần đăng nhập với quyền quản trị trước khi thực hiện use case
Trang 12Sau khi use case kết thúc thành công thì các thông tin về nhân sự được cập nhập vào bảng CanBo
Điểm mở rộng: Không có
2.3.2 Phân tích use case
Biểu đồ lớp phân tích tổng quan:
Trang 13(from Use Case Vi ew)
QuanLyNhanSuUI
ICSDL
QuanLyNhanSuController
1 1
*
1
CanBo ID hoTen namSinh gioiTinh diaChi chucVu moTa username password isAdmin getID() setID() getHoTen() setHoTen() getNamSinh() setNamSinh() getGioiTinh() setGioiTinh() getDiaChi() setDiaChi() getChucVu() setChucVu() getMoTa() setMoTa() getUsername() setUsername() getPassword()
* 1
Trang 14Biểu đồ trình tự:
Trang 15Biểu đồ VOPC
QuanlynhansuUI kich nut "Quan ly nhan su"()
kich nut"Them nhan su"()
hien thi man hình nhap thong tin nhan su()
kich nut"Them moi"()
hien thi danh sach nhan su()
kich nut"Thay doi thong tin "()
hien thi man hinh cap nhap thong tin()
kich nut"cap nhap"()
kich nut "xoa nhan su"()
hien thi man hinh xac nhan xoa()
kich nut"xoa"()
<<boundary>>
CanBo IDCanBo HoTen NamSinh GioiTinh DiaChi ChucVu MoTA Username Password isAdmin getIDCanBo() setIDCanBo() getHoTen() setHoTen() getNamSinh() setNamSinh() getGioiTinh() setGioiTinh() getDiaChi() setDiaChi() getChucVu() setChucVu() getMoTa() setMoTA() getUsername() setUsername() getPassword() setPassword() getisAdmin() setisAdmin() getCanBo() createCanBo() getCanBoByID() setCanBoByID() deleteCanBoByID()
<<entity>>
QuanlynhansuController Sinh ra IDCanBo() Tao can bo moi() lay thong tin cua nhan su duoc chon() sua thong tin nhan su()
xoa nhan su duoc chon()
<<control>>
1
1 11
*
1
ICsdl cap nhap bang CanBo()
<<boundary>>
* 1
* 1
2.4 Use case tìm kiếm
2.4.1 Mô tả use case
Trang 16 Luồng cơ bản:
1) Use case này bắt đầu khi khách hàng điền kí tự chữ cái, hoặc tên nhân sự muốn tìm kiếm vào ô textbox
2) Khách hàng nhập tên nhân sự vào textbox hộp thoại tìm kiếm sau
đó kích vào nút “Tìm kiếm” Hệ thống sẽ lấy hiển thị thông tin nhân sự được tìm kiếm bao gồm: ID,username, họ tên, năm sinh, giới tính, địa chỉ, chức vụ, mô tả, username , Isadmin
3) Use case kết thúc
Luồng rẽ nhánh:
1) Tại bất kỳ thời điểm nào trong quá trình thực hiện use case, nếu không kết nối được với cơ sở dữ liệu thì hệ thống sẽ hiển thị một thông báo lỗi và use case kết thúc
2) Tại bước 2 trong luồng cơ bản, nếu hệ thống không tìm thấy nhân sự nào theo tên đã nhập vào thì hệ thống sẽ hiển thị một thông báo “Không tìm thấy cán bộ nào!” và use case kết thúc
Các yêu cầu đặc biệt:
Trang 172.4.2 Phân tích use case
2.4.3
Trang 18CHƯƠNG 3 XÂY DỰNG CHƯƠNG TRÌNH 3.1 Xây dựng giao diện với Java Swing
3.1.1 Giao diện phía người quản trị
Hình 3.1 Giao diện chính phía người quản trị
Phần title “DANH SÁCH NHÂN SỰ - ADMIN: Đinh Văn Hiệp”,
“Xin chào, Đinh Văn Hiệp“ là 1 label được setText là họ tên của tài khoản đăng nhập của admin
Để làm được điều này đầu tiên ta tạo 1 class ToanCuc để lưu trữ tên của admin hoặc user đã đăng nhập
Và phương thức getter, setter
Trang 19Tạo hàm getName, lấy ra họ tên của admin hoặc user đã đăng nhập theo username đã nhập
Tiếp đến, ta sẽ lưu họ tên
Và gán vào txt_fullname
Chương trình set title, tạo nội dung cho bảng
Trang 20- “Model” hiển thị danh sách kỹ sư
- “model2” hiển thị danh sách công nhân
- “model3” hiển thị danh sách nhân viên phục vụ”3.1.1.1 Giao diện menu
Thanh tab menu gồm 3 menu là: “Menu”, “Quản lý nhân sự”
Trang 21“Menu” gổm 2 menuItem con là:
“Đăng xuất”: cho phép người quản trị (admin) đóng cửa sổ menu chính, trở về màn hình login ban đầu
“Thoát”: cho phép người quản trị đóng toàn bộ các cửa sổ giao diện
Hình 3.2 Giao diện menu phía người quản trị
“Quản lý nhân sự” gồm 3 menuItem con là
“Thêm nhân sự” : cho phép người quản trị thêm mới nhân sự
“Thay đổi thông tin”: cho phép người quản trị thay đổi thông tin của nhân sự
“ Xoá nhân sự": cho phép người quản trị nhập ID của nhân sựmuốn xoá và thực hiện xoá nhân sự đó
Hình 3.3 Giao diện menu quản lý nhân sự
Khi người quản trị di chuột vào 1 menu trên thanh tab menu thì
sẽ hiển thị message ở ngay dưới
Khi người quản trị chọn chức năng “Đăng xuất” hệ thống sẽ hiểnthị thông báo xác nhận, nếu chọn “Yes” thì đóng cửa sổ hiện tại và trở
về màn hình login
Trang 22Khi người quản trị chọn chức năng “Thoát,hệ thống sẽ hiển thị thông báo xác nhận ,nếu chọn “ Yes” thì đóng toàn bộ chương trình
Các chức năng chính có trong giao diện:
- Chức năng Thêm nhân viên
- Chức năng Xoá nhân viên
- Chức năng Thay đổi thông tin
- Chức năng Tìm kiếm
Ba bảng chứa thông tin nhân sự gồm:
- Danh sách kỹ sư
- Danh sách công nhân
- Danh sách nhân viên
Trang 23Mỗi bảng gồm các trường: STT, ID, Họ tên, Năm sinh, Giới tính,Địa chỉ, Chức vụ, Mô tả, UserName, Password, IsAdmin.
3.1.1.2 Giao diện thêm nhân sự
Hình 3.4 Giao diện thêm nhân sự
Trang 24- Label :UserName, Password, Họ tên, Năm sinh, Giới tính, Địa chỉ, Chức vụ, Bậc(*Công nhân), Nhành đào tạo(* Kỹ sư), Công việc (*Nhân viên phục vụ), Cấp quyền admin.
- Các ô texbox để nhập thông tin : UserName, Password,Họ
tên,Địa chỉ ,Bậc,Nhành đào tạo, Công việc được tạo bởi
jTextField
- 1 ComboBox để chọn năm sinh được tạo bởi jComboBox
- Các ô RadioButton để chọn giới tính và chức vụ được tạo bởi jRadioButton
- Ô checkbox để chọn quyền admin được tạo bởi jCheckBox
- Button “Thoát” khi kích nút sẽ trở về màn hình chính
- Button “Thêm mới” sau khi “click”,các dữ liệu được nhập ở bảng này sẽ đươc thêm vào bảng dữ liệu và hiển thị thông
báo”Thêm mới thành công” và hiển thị thông báo “Bạn có muốn tiếp tục” ,chọn “Yes” để tiếp tục thêm, “No” để trở về màn hình chính
Trang 253.1.1.3 Giao diện thay đổi thông tin phía người quản trị
Hình 3.5 Giao diện thay đổi thông tin phía người quản trị
Gồm:
- ID và Username : được set giá trị sẵn,giá trị truyền vào đó là
ID và Username người dùng nhập ban đầu khi đăng nhập
- Label :UserName, Họ tên, Năm sinh, Giới tính, Địa chỉ, Chức
vụ, Bậc(*Công nhân), Nhành đào tạo(* Kỹ sư), Công việc
Trang 26- Các ô texbox để nhập các thông tin cần sửa như : UserName,
Họ tên,Địa chỉ ,Bậc,Nhành đào tạo, Công việc được tạo bởi jTextField
- 1 ComboBox để chọn năm sinh được tạo bởi jComboBox
- Các ô RadioButton để chọn giới tính và chức vụ được tạo bởi jRadioButton
- Button “Thoát” khi kích nút sẽ trở về màn hình chính
Trang 273.1.2 Giao diện hiển thị phía người dùng
Hình 3.6 Giao diện menu chính của hệ thống quản lý nhân sự (user)
Giao diện bao gồm:
- Khu vực tìm kiếm cán bộ theo tên và làm mới danh sách
- Nút bấm thực hiện chức năng cập nhật thông tin người dùng
- Các bảng chứa thông tin cán bộ, gồm 3 bảng: Bảng chứa danh sách kỹ sư, bảng chứa danh sách công nhân, bảng chứa danh sách nhân viên Mỗi bảng gồm các trường: STT, ID, Họ tên, Năm sinh, Giới tính, Địa chỉ, Chức vụ,
Mô tả,Username, Password, isAdmin
Phần title “DANH SÁCH NHÂN SỰ - USER”, “Xin chào, Hoàng Phi Hùng“ là 1 label được setText là họ tên của tài khoản đăng nhập của người dùng
Trang 28Chương trình set title, tạo nội dung cho bảng
Trang 29- “Model” hiển thị danh sách kỹ sư
- “model2” hiển thị danh sách công nhân
- “model3” hiển thị danh sách nhân viên phục vụ”
3.1.2.1 Giao diện menu
Giao diện màn menu hính: Thanh tab menu gồm 2 menu là: “Menu”
“Menu”: gồm 3 menuItem con là:
“Cập nhật thông tin cá nhân”: cho phép user thực hiện chức năngcập nhật thông tin bằng cách kích chuột vào nó
“Đăng xuất”: cho phép người dùng đóng cửa sổ menu chính, trở
Trang 30 “Thoát”: cho phép người dùng đóng toàn bộ các cửa sổ giao diện.
Hình 3.7 Giao diện "Menu" trên thanh công cụ
Khi người dùng chọn chức năng đăng xuất hệ thống sẽ hiển thị thông báo xác nhận, nếu chọn yes thì đóng cửa ổ hiện tại và trở về màn hình login
Hình 3.8 Dialog đăng xuất
Khi người dùng chọn chức năng thoát, hệ thống sẽ hiển thị thôngbáo xác nhận, nếu chọn yes thì đóng toàn bộ chương trình
Hình 3.9 Dialog xác nhận thoát chương trình
Trang 313.1.2.2 Giao diện tìm kiếm
Hình 3.10 Tìm kiếm
Gồm :
- Label “Họ và tên”
- 1 ô textbox để nhập họ tên cần tìm được tảo bởi jTextField
- Button “Tìm kiếm”: kích nút hệ thống sẽ hiển thị danh sách cán bộ cần tìm
Trang 323.1.2.3 Giao diện thay đổi thông tin phía người dùng
Hình 3.11 Giao diện thay đổi thông tin phía người dùng
Gồm:
- 2 jTextField là jTxtID và jTxtUsername được set giá trị sẵn, giá trị tuyền vào đó là ID và password người dùng nhập ban đầu khi đăng nhập
- jTxtPassword cho phép nhập password sửa, jTextField1 cho phép nhập tên, jTextField3 cho phép nhập địa chỉ
- combox chứa các giá trị năm sinh
- Các radioButton chứa giá trị nam và nữ
- Button “thoát” và “cập nhật”
Trang 33Các sự kiện :Khi click “Cập nhật”
- Người dùng điền đầy đủ thông tin màn hình đưa ra thông báothành công
- Ngược lại thì trở về giao diện cập nhật thông tin ban đầu
- Khi click nút “Thoát”: hiển thị dialog thông báo, nếu chọn Yes thì chương trình kết thúc
3.2 Thiết kế cơ sở dữ liệu MySQL và JDBC
Trong đề tài này nhóm sử dụng MySQL để thiết kế cơ sở dữ liệu Cở sở
dữ liệu lưu trữ dưới dạng bảng bao gồm các thông tin đáp ứng yêu cầu đề bài: