lOMoARcPSD| 47205411
lOMoARcPSD| 47205411
MỞ Ầ Đ U
Trong thời đại cách mạng công nghiệp 4.0, công nghệ thông tin đã trở thành nền
tảng quan trọng trong mọi lĩnh vực, đặc biệt quản vận hành doanh nghiệp. Ngành
khách sạn, với đặc thù đòi hỏi khả năng tổ chức quản lý nhân sự phức tạp, luôn đứng
trước những thách thức trong việc tối ưu hóa hiệu quả vận hành. Việc quản nhân sự
thủ công, sử dụng giấy tờ hoặc các công cụ truyền thống, không chỉ gây lãng phí thời
gian mà còn tiềm ẩn nhiều nguy sai sót, từ việc nhập liệu đến việc lưu trữ tìm kiếm
thông tin. Trong bối cảnh đó, ứng dụng các công nghệ hiện đại để xây dựng hệ thống
quản lý nhân sự đã trở thành một nhu cầu cấp thiết, không chỉ giúp tối ưu hóa hiệu quả
hoạt động mà còn cải thiện trải nghiệm người lao động.
Ngôn ngữ lập trình Python, với sự linh hoạt, dễ học, và khả năng tích hợp mạnh
mẽ, nổi lên như một lựa chọn hàng đầu cho việc phát triển các ứng dụng quản lý. Đề tài
"Xây dựng chương trình quản nhân sự của Khách sạn Hacinco Nội" được chọn
với mục tiêu áp dụng Python vào việc thiết kế một hệ thống quản lý nhân sự toàn diện,
đáp ứng các u cầu bản như thêm, xóa, cập nhật tìm kiếm thông tin nhân viên.
Việc chọn đề tài không chỉ nhằm khai thác sức mạnh công nghệ để giải quyết một vấn
đề thực tiễn mà còn mang tính học thuật cao, giúp nâng cao kiến thức lập trình và thiết
kế hệ thống cho người thực hiện. Đề tài hướng tới việc y dựng một chương trình quản
nhân sự toàn diện cho Khách sạn Hacinco Nội với các mục tiêu cụ thể như sau:
Phân tích bài toán và xác định các yêu cầu chức năng cần thiết trong việc quản nhân
sự của khách sạn, Thiết kế xây dựng hệ thống quản nhân sự bao gồm các chức
năng bản như nhập liệu, xóa thông tin, cập nhật tìm kiếm nhân viên Tổ chức
chương trình dưới dạng các module hàm, đảm bảo tính logic, dễ mở rộngbảo trì
trong tương lai.
Để thực hiện đề tài, các phương pháp nghiên cứu được áp dụng bao gồm:
Chương 1: Đặt bài toán
Chương 2: Phân tích bài toán và thiết kế hệ thống .
Chương 3: Cài đặt chương trình
Với nội dung nghiên cứu cụ thể và áp dụng thực tiễn, đề tài không chỉ góp phần
giải quyết bài toán quản lý nhân sự cho Khách sạn Hacinco mà còn mở ra những hướng
phát triển mới trong việc ứng dụng Python vào lĩnh vực quản lý doanh nghiệp.
Trong quá trình làm bài sẽ không tránh khỏi những thiếu sót, rất mong thầy
các bạn đóng góp ý kiến để bài thảo luận của chúng em được hoàn thiện hơn.
Chúng em xin chân thành cảm ơn!
lOMoARcPSD| 47205411
CHƯƠNG 1: ĐẶT BÀI TOÁN
1.1. Đặt bài toán
Quản lý nhân sự là một trong những nhiệm vụ quan trọng và phức tạp trong lĩnh
vực kinh doanh khách sạn. Tại Khách sạn Hacinco Hà Nội, việc quản lý thông tin nhân
sự hiện tại còn phụ thuộc nhiều vào phương pháp thủ công hoặc các công cụ không tối
ưu, dẫn đến các vấn đề như thiếu chính xác trong thông tin, khó khăn trong việc truy
xuất, và tốn kém về thời gian. Với sự phát triển của công nghệ thông tin, đặc biệt ngôn
ngữ lập trình Python, việc xây dựng một hệ thống quản lý nhân sự hiệu quả và hiện đại
là rất cần thiết.
Hệ thống quản nhân sự không chỉ giúp lưu trữ, tổ chức dữ liệu nhân sự một
cách khoa học còn cung cấp các chức năng như tìm kiếm, cập nhật, thêm mới,
xóa thông tin nhân viên. Điều này sẽ góp phần nâng cao năng suất làm việc của bộ phận
nhân sự tối ưu hóa hoạt động quản của khách sạn. Vì vậy, bài toán đặt ra là: y
dựng chương trình quản lý nhân sự của Khách sạn HacincoNội, sử dụng ngôn
ngữ lập trình Python, với khả năng thực hiện các chức năng quản lý cơ bản và đáp ứng
nhu cầu sử dụng thực tiễn
1.2. Mô tả bài toán
1.2.1. Mô tả bài toán
Bài toán yêu cầu xây dựng một hệ thống quản lý nhân sự cho Khách sạn Hacinco Hà
Nội, tập trung vào các chức năng bản liên quan đến thông tin nhân viên. Chương
trình cần có khả năng lưu trữ, truy xuất và xử lý thông tin một cách hiệu quả.
Đầu vào (Input): Thông tin nhân viên cần quản lý, bao gồm các trường dữ liệu
như mã nhân viên, tên, ngày sinh, vị trí, mức lương, phòng ban, và thông tin liên
lạc.
Đầu ra (Output): Chương trình cần hỗ trợ các chức năng sau:
1. Nhập thông tin nhân viên mới.
2. Xóa thông tin nhân viên.
3. Cập nhật thông tin nhân viên.
4. Tìm kiếm thông tin nhân viên theo các tiêu chí (mã nhân viên, tên,phòng
ban).
1.2.2. Các thông tin cần quản lý
Chương trình sẽ quản lý các thông tin cụ thể của nhân viên như sau:
Mã nhân viên (ID): Định danh duy nhất cho mỗi nhân viên.
Họ và tên: Tên đầy đủ của nhân viên.
Ngày sinh: Dạng dd/mm/yyyy. Giới tính: Nam/Nữ
lOMoARcPSD| 47205411
Phòng ban: Bộ phận làm việc (Lễ tân, Buồng phòng, Kỹ thuật, Quản lý, v.v.).
Chức vụ: Vị trí công tác (Nhân viên, Trưởng phòng, Quản lý, v.v.).
Mức lương: Lương cơ bản hoặc tổng thu nhập. ● Thông tin liên lạc: Số
điện thoại, email.
1.2.3. Các ràng buộc liên quan đến thông tin
Để đảm bảo tính chính xác và hiệu quả của hệ thống, chương trình cần tuân thủ các
ràng buộc sau:
Mã nhân viên là duy nhất: Không được phép trùng lặp mã giữa các nhân viên.
Dữ liệu không được rỗng: Các trường bắt buộc như nhân viên, họ tên,
phòng ban phải được nhập đầy đủ.
Thông tin hợp lệ:
Ngày sinh phải đúng định dạng và logic (không vượt quá ngày hiện tại).
Số điện thoại và email phải theo đúng quy chuẩn.
Xóa cập nhật: Các thao tác này chỉ thực hiện được nếu thông tin nhân viên tồn
tại trong hệ thống.
1.2.4. Chức năng của chương trình quản lý
Chương trình được thiết kế để đáp ứng các chức năng quản nhân sự bản, bao
gồm:
1. Thêm nhân viên mới: Người dùng nhập thông tin chi tiết để thêm một nhân
viênvào hệ thống.
2. Xóa nhân viên: Tìm kiếm nhân viên theo mã và xóa thông tin khỏi hệ thống.
3. Cập nhật thông tin: Chỉnh sửa hoặc thay đổi thông tin của một nhân viên cụ thể.
4. Tìm kiếm nhân viên: m kiếm hiển thị thông tin nhân viên dựa trên các tiêuchí
như mã nhân viên, tên, hoặc phòng ban.
Bài toán không chỉ yêu cầu việc xây dựng chương trình mà còn đòi hỏi việc tổ chức
hệ thống dưới dạng các module hàm, đảm bảo tính logic, dễ mở rộng, khả năng
áp dụng thực tế tại Khách sạn Hacinco Hà Nội.
CHƯƠNG 2: PHÂN TÍCH BÀI TN
lOMoARcPSD| 47205411
2.1. Sơ ồ đ khối giao di n chínhệ
lOMoARcPSD| 47205411
2.2. Sơ đồ khối đọc thông tin từ file
lOMoARcPSD| 47205411
2.3. Sơ đồ khối thao tác nhập thông tin quản lý
lOMoARcPSD| 47205411
2.4. Sơ đồ khối thao tác xóa thông tin quản lý
lOMoARcPSD| 47205411
2.5. Sơ ồ đ khối thao tác c p nh t thông n qu n lýậ
lOMoARcPSD| 47205411
lOMoARcPSD| 47205411
lOMoARcPSD| 47205411
2.6. Sơ ồ đ khối thao tác m ki m thông qu n lýế
lOMoARcPSD| 47205411
2.7. Sơ ồ đ khối hi n th thông nể
lOMoARcPSD| 47205411
CHƯƠNG 3: CÀI ĐẶT CHƯƠNG TRÌNH
3.1 Xây dựng các hàm
3.1.1 Đọc thông tin từ file
Trên đây đoạn đầu tiên của chương trình, với chức năng lưu dữ liệu vào file
đọc dữ liệu từ file bao gồm 2 hàm:
- Lưu Dữ Liệu: Hàm luu_du_lieu() giúp ghi dữ liệu vào tệp JSON theo định dạng
thể đọc được và dễ dàng quản lý, sử dụng mã hóa UTF-8 để hỗ trợ c ký tự đặc biệt.
Mô tả:
+ Hàm nhận vào một tham số là data, đây là dữ liệu sẽ được lưu trữ vào tệp JSON.
+ Hàm sử dụng biến toàn cục FILE_NAME để xác định tên file lưu trữ.
+ Hàm sử dụng json.dump() để ghi dữ liệu vào file với định dạng dễ đọc (dấu cách
và xuống dòng).
+ Hàm mở file ở chế độ ghi ("w"), đảm bảo ghi đè lên dữ liệu cũ.
+ encoding="utf-8" đảm bảo tệp được lưu với hóa UTF-8, giúp htrợ tiếng Việt
và các ký tự Unicode khác.
=> Sau khi thực hiện, dữ liệu sẽ được lưu vào file JSON một cách chính xác để sử dụng
sau.
- Đọc Dữ Liệu: Hàm doc_du_lieu() giúp đọc dữ liệu từ tệp JSON chuyển đổi
thành kiểu dữ liệu Python. Nếu tệp không tồn tại, sẽ tạo một tệp mới với dữ liệu
khởi tạo (danh sách rỗng).
Mô tả:
+ Hàm cố gắng mở file nhan_vien.json ở chế độ đọc ("r").
lOMoARcPSD| 47205411
+ Nếu file tồn tại, hàm sử dụng json.load() đtải trả về dữ liệu từ file (có thể
danh sách hoặc từ điển, tùy vào cách dữ liệu được lưu).
+ Nếu file không tồn tại (gặp lỗi FileNotFoundError), hàm sẽ trả về một danh sách
rỗng ([]) thay vì gây lỗi.
=> Sau khi thực hiện hàm này, dữ liệu từ file JSON sẽ được trả về để người dùng có thể
sử dụng tiếp.
3.1.2 Chương trình nhập thông tin nhân viên
- Trên đây là 3 hàm dùng để kiểm tra định dạng của các yếu tố được nhập vào bao
gồm:
+ Hàm kiểm tra định dạng ngày: Hàm kiem_tra_ngay(ngay) sử dụng
datetime.strptime() đ chuyển chuỗi văn bản thành datetime theo định dạng
ngày tháng năm. Nếu định dạng đúng, hàm không gặp lỗi và trả về True. Ngược
lại, nếu sai định dạng, hàm sẽ trả về False
+ Hàm kiểm tra email: Hàm kiem_tra_email(email) sử dụng biểu thức chính quy
"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$" để kiểm tra các điều
kiện hợp lệ đối với một email như đầu chuỗi phải là một chuỗi các ký tự chữ cái
hoặc chữ số, tiếp là ký tự @, sau đó là tên miền.
+ Hàm kiểm tra trùng lặp nhân viên: m kiem_tra_trung_ma_nv sử dụng
tham số đầu vào ma_nv để kiểm tra, đồng thời sử dụng hàm doc_du_lieu( )
để duyệt qua từng nhân viên trong danh sách, nếu nhân viên trùng với nhân
viên đã tồn tại trong danh sách thì hàm trả về True, nghĩa là đã tồn tại và ngược
lại.
lOMoARcPSD| 47205411
lOMoARcPSD| 47205411
- Hàm nhap_thong_tin() chức năng nhập thông tin nhân viên thêm vào danh
sách nhân viên.
Mô tả:
- Hàm gọi doc_du_lieu() để đọc dữ liệu nhân viên hiện có từ file.
- Sau đó, hàm yêu cầu người dùng nhập các thông tin nhân viên như nhân viên,
họ tên, ngày sinh, phòng ban, chức vụ, mức lương, số điện thoại và email.
- Đối với mỗi thông tin, hàm sử dụng vòng lặp while để kiểm tra tính hợp lệ của
dữ liệu người dùng nhập, đảm bảo các giá trị này đáp ứng các yêu cầu như:
+ Mã nhân viên phải chỉ chứa chữ và số.
+ Họ tên, phòng ban, chức vụ không được để trống.
+ Ngày sinh phải có định dạng hợp lệ.
+ Mức lương phải là số dương.
+ Số điện thoại phải đảm bảo có ít nhất 10 chữ số.
lOMoARcPSD| 47205411
+ Email phải hợp lệ.
- Sau khi nhận đủ thông tin hợp lệ, hàm tạo một từ điển nhan_vien chứa thông tin
nhân viên.
- Dữ liệu nhân viên mới được thêm vào danh sách data (được đọc từ file trước đó)
bằng cách sử dụng phương thức append().
- Hàm gọi luu_du_lieu(data) để lưu lại danh sách nhân viên đã cập nhật vào file.
- Cuối cùng, hàm thông báo "Thêm nhân viên thành công!" khi quá trình nhập
lưu dữ liệu hoàn tất.
=> Sau khi thực hiện hàm này, thông tin nhân viên mới sẽ được thêm vào danh sách và
lưu trữ trong file JSON.
3.1.3 Hàm xoá thông tin nhân viên
- Hàm xoa_thong_tin( ) có chức năng xóa thông tin nhân viên khỏi danh sách.
Mô tả:
- Hàm gọi doc_du_lieu() để đọc dữ liệu nhân viên hiện có từ file.
- Sau đó, hàm yêu cầu người dùng nhập mã nhân viên cần xóa.
- Hàm kiểm tra tính hợp lệ của mã nhân viên bằng cách yêu cầu người dùng nhập
lại nếu mã nhân viên trống.
- Sau khi nhân viên hợp lệ, hàm sử dụng vòng lặp for để duyệt qua tất cả các
nhân viên trong danh sách data. Nếu nhân viên khớp với nhập vào, hàm
sẽ xóa nhân viên đó khỏi danh sách bằng cách sử dụng remove().
- Sau khi xóa thành ng, hàm gọi luu_du_lieu(data) để lưu lại danh sách nhân
viên đã được cập nhật vào file JSON.
lOMoARcPSD| 47205411
- Hàm in ra thông báo "Xóa nhân viên thành công!" khi xóa thành công dừng
thực hiện.
- Nếu không tìm thấy nhân viên có mã khớp, hàm in ra thông báo "Không tìm thấy
nhân viên!".
=> Sau khi thực hiện hàm này, nhân viên sẽ bị xóa khỏi danh sách dữ liệu sẽ được
lưu lại vào file JSON.
3.1.4 Hàm cập nhật thông tin nhân viên
lOMoARcPSD| 47205411
- Hàm CapNhatThongTinNhanVien() có chức năng cập nhật thông tin của nhân
viên trong danh sách.
Mô tả:
- Hàm gọi doc_du_lieu() để đọc dữ liệu nhân viên hiện có từ file.
- Sau đó, hàm yêu cầu người dùng nhập mã nhân viên cần cập nhật.
- Hàm kiểm tra tính hợp lệ của mã nhân viên, yêu cầu người dùng nhập lại nếu mã
nhân viên trống.
- Sau khi nhân viên hợp lệ, hàm sử dụng vòng lặp for để duyệt qua tất cả các
nhân viên trong danh sách data. Nếu nhân viên khớp với nhập vào, hàm
sẽ yêu cầu người dùng nhập các thông tin mới (họ tên, ngày sinh, phòng ban,
chức vụ, mức lương, số điện thoại và email).
+ Các thông tin nhập vào được kiểm tra tính hợp lệ (như đã mô tả ở các hàm
nhập khác).
- Sau khi nhận đầy đủ thông tin hợp lệ, hàm cập nhật các trường thông tin của nhân
viên trong từ điển với thông tin mới.

Preview text:

lOMoAR cPSD| 47205411 lOMoAR cPSD| 47205411 MỞ Ầ Đ U
Trong thời đại cách mạng công nghiệp 4.0, công nghệ thông tin đã trở thành nền
tảng quan trọng trong mọi lĩnh vực, đặc biệt là quản lý và vận hành doanh nghiệp. Ngành
khách sạn, với đặc thù đòi hỏi khả năng tổ chức và quản lý nhân sự phức tạp, luôn đứng
trước những thách thức trong việc tối ưu hóa hiệu quả vận hành. Việc quản lý nhân sự
thủ công, sử dụng giấy tờ hoặc các công cụ truyền thống, không chỉ gây lãng phí thời
gian mà còn tiềm ẩn nhiều nguy cơ sai sót, từ việc nhập liệu đến việc lưu trữ và tìm kiếm
thông tin. Trong bối cảnh đó, ứng dụng các công nghệ hiện đại để xây dựng hệ thống
quản lý nhân sự đã trở thành một nhu cầu cấp thiết, không chỉ giúp tối ưu hóa hiệu quả
hoạt động mà còn cải thiện trải nghiệm người lao động.
Ngôn ngữ lập trình Python, với sự linh hoạt, dễ học, và khả năng tích hợp mạnh
mẽ, nổi lên như một lựa chọn hàng đầu cho việc phát triển các ứng dụng quản lý. Đề tài
"Xây dựng chương trình quản lý nhân sự của Khách sạn Hacinco Hà Nội" được chọn
với mục tiêu áp dụng Python vào việc thiết kế một hệ thống quản lý nhân sự toàn diện,
đáp ứng các yêu cầu cơ bản như thêm, xóa, cập nhật và tìm kiếm thông tin nhân viên.
Việc chọn đề tài không chỉ nhằm khai thác sức mạnh công nghệ để giải quyết một vấn
đề thực tiễn mà còn mang tính học thuật cao, giúp nâng cao kiến thức lập trình và thiết
kế hệ thống cho người thực hiện. Đề tài hướng tới việc xây dựng một chương trình quản
lý nhân sự toàn diện cho Khách sạn Hacinco Hà Nội với các mục tiêu cụ thể như sau:
Phân tích bài toán và xác định các yêu cầu chức năng cần thiết trong việc quản lý nhân
sự của khách sạn, Thiết kế và xây dựng hệ thống quản lý nhân sự bao gồm các chức
năng cơ bản như nhập liệu, xóa thông tin, cập nhật và tìm kiếm nhân viên và Tổ chức
chương trình dưới dạng các module và hàm, đảm bảo tính logic, dễ mở rộng và bảo trì trong tương lai.
Để thực hiện đề tài, các phương pháp nghiên cứu được áp dụng bao gồm:
Chương 1: Đặt bài toán
Chương 2: Phân tích bài toán và thiết kế hệ thống .
Chương 3: Cài đặt chương trình
Với nội dung nghiên cứu cụ thể và áp dụng thực tiễn, đề tài không chỉ góp phần
giải quyết bài toán quản lý nhân sự cho Khách sạn Hacinco mà còn mở ra những hướng
phát triển mới trong việc ứng dụng Python vào lĩnh vực quản lý doanh nghiệp.
Trong quá trình làm bài sẽ không tránh khỏi những thiếu sót, rất mong thầy và
các bạn đóng góp ý kiến để bài thảo luận của chúng em được hoàn thiện hơn.
Chúng em xin chân thành cảm ơn! lOMoAR cPSD| 47205411
CHƯƠNG 1: ĐẶT BÀI TOÁN 1.1. Đặt bài toán
Quản lý nhân sự là một trong những nhiệm vụ quan trọng và phức tạp trong lĩnh
vực kinh doanh khách sạn. Tại Khách sạn Hacinco Hà Nội, việc quản lý thông tin nhân
sự hiện tại còn phụ thuộc nhiều vào phương pháp thủ công hoặc các công cụ không tối
ưu, dẫn đến các vấn đề như thiếu chính xác trong thông tin, khó khăn trong việc truy
xuất, và tốn kém về thời gian. Với sự phát triển của công nghệ thông tin, đặc biệt là ngôn
ngữ lập trình Python, việc xây dựng một hệ thống quản lý nhân sự hiệu quả và hiện đại là rất cần thiết.
Hệ thống quản lý nhân sự không chỉ giúp lưu trữ, tổ chức dữ liệu nhân sự một
cách khoa học mà còn cung cấp các chức năng như tìm kiếm, cập nhật, thêm mới, và
xóa thông tin nhân viên. Điều này sẽ góp phần nâng cao năng suất làm việc của bộ phận
nhân sự và tối ưu hóa hoạt động quản lý của khách sạn. Vì vậy, bài toán đặt ra là: Xây
dựng chương trình quản lý nhân sự của Khách sạn Hacinco Hà Nội
, sử dụng ngôn
ngữ lập trình Python, với khả năng thực hiện các chức năng quản lý cơ bản và đáp ứng
nhu cầu sử dụng thực tiễn
1.2. Mô tả bài toán
1.2.1. Mô tả bài toán
Bài toán yêu cầu xây dựng một hệ thống quản lý nhân sự cho Khách sạn Hacinco Hà
Nội, tập trung vào các chức năng cơ bản liên quan đến thông tin nhân viên. Chương
trình cần có khả năng lưu trữ, truy xuất và xử lý thông tin một cách hiệu quả.
● Đầu vào (Input): Thông tin nhân viên cần quản lý, bao gồm các trường dữ liệu
như mã nhân viên, tên, ngày sinh, vị trí, mức lương, phòng ban, và thông tin liên lạc.
● Đầu ra (Output): Chương trình cần hỗ trợ các chức năng sau:
1. Nhập thông tin nhân viên mới.
2. Xóa thông tin nhân viên.
3. Cập nhật thông tin nhân viên.
4. Tìm kiếm thông tin nhân viên theo các tiêu chí (mã nhân viên, tên,phòng ban).
1.2.2. Các thông tin cần quản lý
Chương trình sẽ quản lý các thông tin cụ thể của nhân viên như sau:
● Mã nhân viên (ID): Định danh duy nhất cho mỗi nhân viên.
● Họ và tên: Tên đầy đủ của nhân viên.
● Ngày sinh: Dạng dd/mm/yyyy. ● Giới tính: Nam/Nữ lOMoAR cPSD| 47205411
● Phòng ban: Bộ phận làm việc (Lễ tân, Buồng phòng, Kỹ thuật, Quản lý, v.v.).
● Chức vụ: Vị trí công tác (Nhân viên, Trưởng phòng, Quản lý, v.v.).
● Mức lương: Lương cơ bản hoặc tổng thu nhập. ● Thông tin liên lạc: Số điện thoại, email.
1.2.3. Các ràng buộc liên quan đến thông tin
Để đảm bảo tính chính xác và hiệu quả của hệ thống, chương trình cần tuân thủ các ràng buộc sau:
● Mã nhân viên là duy nhất: Không được phép trùng lặp mã giữa các nhân viên.
● Dữ liệu không được rỗng: Các trường bắt buộc như mã nhân viên, họ và tên, và
phòng ban phải được nhập đầy đủ. ● Thông tin hợp lệ:
○ Ngày sinh phải đúng định dạng và logic (không vượt quá ngày hiện tại).
○ Số điện thoại và email phải theo đúng quy chuẩn.
● Xóa và cập nhật: Các thao tác này chỉ thực hiện được nếu thông tin nhân viên tồn tại trong hệ thống.
1.2.4. Chức năng của chương trình quản lý
Chương trình được thiết kế để đáp ứng các chức năng quản lý nhân sự cơ bản, bao gồm:
1. Thêm nhân viên mới: Người dùng nhập thông tin chi tiết để thêm một nhân viênvào hệ thống.
2. Xóa nhân viên: Tìm kiếm nhân viên theo mã và xóa thông tin khỏi hệ thống.
3. Cập nhật thông tin: Chỉnh sửa hoặc thay đổi thông tin của một nhân viên cụ thể.
4. Tìm kiếm nhân viên: Tìm kiếm và hiển thị thông tin nhân viên dựa trên các tiêuchí
như mã nhân viên, tên, hoặc phòng ban.
Bài toán không chỉ yêu cầu việc xây dựng chương trình mà còn đòi hỏi việc tổ chức
hệ thống dưới dạng các module và hàm, đảm bảo tính logic, dễ mở rộng, và có khả năng
áp dụng thực tế tại Khách sạn Hacinco Hà Nội.
CHƯƠNG 2: PHÂN TÍCH BÀI TOÁN lOMoAR cPSD| 47205411
2.1. Sơ ồ đ khối giao di n chínhệ lOMoAR cPSD| 47205411
2.2. Sơ đồ khối đọc thông tin từ file lOMoAR cPSD| 47205411
2.3. Sơ đồ khối thao tác nhập thông tin quản lý lOMoAR cPSD| 47205411
2.4. Sơ đồ khối thao tác xóa thông tin quản lý lOMoAR cPSD| 47205411 2.5. Sơ ồ đ
khối thao tác c p nh t thông tin qu n lýậ lOMoAR cPSD| 47205411 lOMoAR cPSD| 47205411 lOMoAR cPSD| 47205411 2.6. Sơ ồ đ
khối thao tác tìm ki m thông qu n lýế ả lOMoAR cPSD| 47205411
2.7. Sơ ồ đ khối hi n th thông tinể lOMoAR cPSD| 47205411
CHƯƠNG 3: CÀI ĐẶT CHƯƠNG TRÌNH
3.1 Xây dựng các hàm
3.1.1 Đọc thông tin từ file
Trên đây là đoạn mã đầu tiên của chương trình, với chức năng lưu dữ liệu vào file và
đọc dữ liệu từ file bao gồm 2 hàm:
- Lưu Dữ Liệu: Hàm luu_du_lieu() giúp ghi dữ liệu vào tệp JSON theo định dạng có
thể đọc được và dễ dàng quản lý, sử dụng mã hóa UTF-8 để hỗ trợ các ký tự đặc biệt. Mô tả:
+ Hàm nhận vào một tham số là data, đây là dữ liệu sẽ được lưu trữ vào tệp JSON.
+ Hàm sử dụng biến toàn cục FILE_NAME để xác định tên file lưu trữ.
+ Hàm sử dụng json.dump() để ghi dữ liệu vào file với định dạng dễ đọc (dấu cách và xuống dòng).
+ Hàm mở file ở chế độ ghi ("w"), đảm bảo ghi đè lên dữ liệu cũ.
+ encoding="utf-8" đảm bảo tệp được lưu với mã hóa UTF-8, giúp hỗ trợ tiếng Việt
và các ký tự Unicode khác.
=> Sau khi thực hiện, dữ liệu sẽ được lưu vào file JSON một cách chính xác để sử dụng sau.
- Đọc Dữ Liệu: Hàm doc_du_lieu() giúp đọc dữ liệu từ tệp JSON và chuyển đổi nó
thành kiểu dữ liệu Python. Nếu tệp không tồn tại, nó sẽ tạo một tệp mới với dữ liệu
khởi tạo (danh sách rỗng). Mô tả:
+ Hàm cố gắng mở file nhan_vien.json ở chế độ đọc ("r"). lOMoAR cPSD| 47205411
+ Nếu file tồn tại, hàm sử dụng json.load() để tải và trả về dữ liệu từ file (có thể là
danh sách hoặc từ điển, tùy vào cách dữ liệu được lưu).
+ Nếu file không tồn tại (gặp lỗi FileNotFoundError), hàm sẽ trả về một danh sách
rỗng ([]) thay vì gây lỗi.
=> Sau khi thực hiện hàm này, dữ liệu từ file JSON sẽ được trả về để người dùng có thể sử dụng tiếp.
3.1.2 Chương trình nhập thông tin nhân viên
- Trên đây là 3 hàm dùng để kiểm tra định dạng của các yếu tố được nhập vào bao gồm:
+ Hàm kiểm tra định dạng ngày: Hàm kiem_tra_ngay(ngay) sử dụng
datetime.strptime() để chuyển chuỗi văn bản thành datetime theo định dạng
ngày tháng năm. Nếu định dạng đúng, hàm không gặp lỗi và trả về True. Ngược
lại, nếu sai định dạng, hàm sẽ trả về False
+ Hàm kiểm tra email: Hàm kiem_tra_email(email) sử dụng biểu thức chính quy
"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$" để kiểm tra các điều
kiện hợp lệ đối với một email như đầu chuỗi phải là một chuỗi các ký tự chữ cái
hoặc chữ số, tiếp là ký tự @, sau đó là tên miền.
+ Hàm kiểm tra trùng lặp mã nhân viên: Hàm kiem_tra_trung_ma_nv sử dụng
tham số đầu vào là ma_nv để kiểm tra, đồng thời sử dụng hàm doc_du_lieu( )
để duyệt qua từng nhân viên trong danh sách, nếu mã nhân viên trùng với nhân
viên đã tồn tại trong danh sách thì hàm trả về True, nghĩa là đã tồn tại và ngược lại. lOMoAR cPSD| 47205411 lOMoAR cPSD| 47205411
- Hàm nhap_thong_tin() có chức năng nhập thông tin nhân viên và thêm vào danh sách nhân viên. Mô tả:
- Hàm gọi doc_du_lieu() để đọc dữ liệu nhân viên hiện có từ file.
- Sau đó, hàm yêu cầu người dùng nhập các thông tin nhân viên như mã nhân viên,
họ tên, ngày sinh, phòng ban, chức vụ, mức lương, số điện thoại và email.
- Đối với mỗi thông tin, hàm sử dụng vòng lặp while để kiểm tra tính hợp lệ của
dữ liệu người dùng nhập, đảm bảo các giá trị này đáp ứng các yêu cầu như:
+ Mã nhân viên phải chỉ chứa chữ và số.
+ Họ tên, phòng ban, chức vụ không được để trống.
+ Ngày sinh phải có định dạng hợp lệ.
+ Mức lương phải là số dương.
+ Số điện thoại phải đảm bảo có ít nhất 10 chữ số. lOMoAR cPSD| 47205411 + Email phải hợp lệ.
- Sau khi nhận đủ thông tin hợp lệ, hàm tạo một từ điển nhan_vien chứa thông tin nhân viên.
- Dữ liệu nhân viên mới được thêm vào danh sách data (được đọc từ file trước đó)
bằng cách sử dụng phương thức append().
- Hàm gọi luu_du_lieu(data) để lưu lại danh sách nhân viên đã cập nhật vào file.
- Cuối cùng, hàm thông báo "Thêm nhân viên thành công!" khi quá trình nhập và lưu dữ liệu hoàn tất.
=> Sau khi thực hiện hàm này, thông tin nhân viên mới sẽ được thêm vào danh sách và lưu trữ trong file JSON.
3.1.3 Hàm xoá thông tin nhân viên
- Hàm xoa_thong_tin( ) có chức năng xóa thông tin nhân viên khỏi danh sách. Mô tả:
- Hàm gọi doc_du_lieu() để đọc dữ liệu nhân viên hiện có từ file.
- Sau đó, hàm yêu cầu người dùng nhập mã nhân viên cần xóa.
- Hàm kiểm tra tính hợp lệ của mã nhân viên bằng cách yêu cầu người dùng nhập
lại nếu mã nhân viên trống.
- Sau khi mã nhân viên hợp lệ, hàm sử dụng vòng lặp for để duyệt qua tất cả các
nhân viên trong danh sách data. Nếu mã nhân viên khớp với mã nhập vào, hàm
sẽ xóa nhân viên đó khỏi danh sách bằng cách sử dụng remove().
- Sau khi xóa thành công, hàm gọi luu_du_lieu(data) để lưu lại danh sách nhân
viên đã được cập nhật vào file JSON. lOMoAR cPSD| 47205411
- Hàm in ra thông báo "Xóa nhân viên thành công!" khi xóa thành công và dừng thực hiện.
- Nếu không tìm thấy nhân viên có mã khớp, hàm in ra thông báo "Không tìm thấy nhân viên!".
=> Sau khi thực hiện hàm này, nhân viên sẽ bị xóa khỏi danh sách và dữ liệu sẽ được lưu lại vào file JSON.
3.1.4 Hàm cập nhật thông tin nhân viên lOMoAR cPSD| 47205411
- Hàm CapNhatThongTinNhanVien() có chức năng cập nhật thông tin của nhân viên trong danh sách. Mô tả:
- Hàm gọi doc_du_lieu() để đọc dữ liệu nhân viên hiện có từ file.
- Sau đó, hàm yêu cầu người dùng nhập mã nhân viên cần cập nhật.
- Hàm kiểm tra tính hợp lệ của mã nhân viên, yêu cầu người dùng nhập lại nếu mã nhân viên trống.
- Sau khi mã nhân viên hợp lệ, hàm sử dụng vòng lặp for để duyệt qua tất cả các
nhân viên trong danh sách data. Nếu mã nhân viên khớp với mã nhập vào, hàm
sẽ yêu cầu người dùng nhập các thông tin mới (họ tên, ngày sinh, phòng ban,
chức vụ, mức lương, số điện thoại và email).
+ Các thông tin nhập vào được kiểm tra tính hợp lệ (như đã mô tả ở các hàm nhập khác).
- Sau khi nhận đầy đủ thông tin hợp lệ, hàm cập nhật các trường thông tin của nhân
viên trong từ điển với thông tin mới.