lOMoARcPSD| 45315597
lOMoARcPSD| 45315597
2
LỜI CẢM ƠN
Trong quá trình tiên hành nghiên cứu ề tài này, chúng em ã nhận ược những sự giúp ỡ,
hướng dẫn tận tình những lời góp ý, chia sẻ chân thành của nhiều người ể có ược kết quả
như ngày hôm nay.
Trước hết, nhóm 09 xin phép gửi lời cảm ơn sâu sắc ến Đinh Thị - người ã trực
tiếp giảng dạy, nhiệt tình hướng dẫn và truyền ạt kinh nghiệm cho chúng em. Nhóm em cũng
xin gửi lời cảm ơn chân thành ến Trường Đại học Thương Mại ã ưa học phần “Lập trình
với Python" vào trong chương trình giảng dạy ể chúng em có thể biết ến, làm quen và tiếp cận
ược với những kiến thức của học phần. Về học phần “Lập trình với Python", ây học phần
tính thực tế cùng cao, cung cấp một lượng lớn kiến thức gắn liền với nhu cầu thực
tiễn của sinh viên. Tuy vậy do vốn kiến thức còn nhiều hạn chế và còn bỡ ngvới phương
thức học của môi trường mới nên không thể tránh khỏi bài tập lớn vẫn còn nhiều iểm thiếu
sót chưa thực sự hoàn thiện một cách chỉn chu. Chúng em rất mong nhận ược sự góp ý,
giúp ỡ ý kiến ánh giá xác áng của các thầy cô ể nhóm có thêm vốn kinh nghiệm cho những
ề tài tiếp theo.
Nhóm em xin chân thành cảm ơn!
MỤC LỤC
LỜI CẢM ƠN .........................................................................................................................
2
MỤC LỤC ...............................................................................................................................
3 LỜI MỞ ĐẦU
......................................................................................................................... 5
I. ĐẶT BÀI TOÁN .............................................................................................................
6
1.1. Đặt vấn ề ..................................................................................................................... 6
1.2. Các thông tin cần quản lý .............................................................................................
6
1.3. Ràng buộc liên quan ến các thông tin......................................................................... 7
1.4. Chức năng của chương trình quản lí nhân viên ............................................................
7
II. PHÂN TÍCH BÀI TOÁN VÀ TRÌNH BÀY QUY TRÌNH CÁC THAO TÁC DƯỚI
DẠNG SƠ ĐỒ KHỐI..............................................................................................................
9
2.1. Phân tích bài toán .........................................................................................................
9
lOMoARcPSD| 45315597
3
2.1.1. Nhập thông tin nhân viên ......................................................................................
9
2.1.2. Xóa thông tin nhân viên ........................................................................................
9
2.1.3. Cập nhật thông tin nhân viên .................................................................................
9
2.1.4. Tìm kiếm thông tin nhân viên ...............................................................................
9
2.2. Sơ ồ khối thể hiện các chức năng chính của chương trình ....................................... 10
2.3. Đặc tả các chức năng chính của chương trình ............................................................
12
2.3.1. Sơ ồ khối chức năng nhập thông tin nhân viên ................................................. 12
2.3.2. Sơ ồ khối chức năng xóa thông tin nhân viên ................................................... 15
2.3.3. Sơ ồ khối chức năng cập nhật thông tin nhân viên ............................................ 16
2.3.4. Sơ ồ khối chức năng tìm kiếm thông tin nhân viên ........................................... 17
III. CÀI ĐẶT CHƯƠNG TRÌNH TRÊN PYTHON .............................................................
18
3.1. Xây dựng các hàm liên quan ......................................................................................
18
3.1.1. Danh sách lưu trữ nhân viên ................................................................................
18
3.1.2. Quy tắc xác minh dữ liệu..................................................................................... 18
3.1.3. Hàm xác minh dữ liệu từ quy tắc ........................................................................
20
3.1.4. Hàm kiểm tra tính duy nhất của trường ...............................................................
21
3.2. Xây dựng các hàm chức năng chính...........................................................................
21
3.2.1. Hàm thêm nhân viên............................................................................................ 21
3.2.2. Hàm hiển thị tất cả nhân viên ..............................................................................
21
3.2.3. Hàm xóa nhân viên ..............................................................................................
22
3.2.4. Hàm cập nhật thông tin nhân viên .......................................................................
22
3.2.5. Hàm tìm kiếm nhân viên .....................................................................................
23
lOMoARcPSD| 45315597
4
3.3. Xây dựng hàm Menu chính ........................................................................................ 24
3.4. Hình ảnh chạy chương trình ....................................................................................... 26
3.4.1. Chức năng thêm nhân viên ..................................................................................
26
3.4.2. Hiển thị danh sách nhân viên ..............................................................................
26
3.4.3. Chức năng xóa nhân viên ....................................................................................
26
3.4.4.Chức năng cập nhật thông tin nhân viên ..............................................................
27
3.4.5. Chức năng tìm kiếm thông tin nhân viên ............................................................
27
PHỤ LỤC HÌNH ẢNH .........................................................................................................
28
KẾT LUẬN ...........................................................................................................................
29
BẢNG ĐÁNH GIÁ VÀ PHÂN CÔNG NHIỆM VỤ THÀNH VIÊN ..................................
29
LỜI MỞ ĐẦU
Trong bối cảnh nền kinh tế toàn cầu phát triển và hội nhập, ngành du lịch tại Việt Nam
ã ang chứng kiến sự tăng trưởng mạnh mẽ, trở thành một trong những ngành kinh tế mũi
nhọn của ất nước. Theo thống từ Tổng cục Du lịch Việt Nam, lượng khách du lịch nội ịa
quốc tế ngày càng gia tăng, tạo nên áp lực cũng như cơ hội phát triển cho các doanh nghiệp
hoạt ộng trong lĩnh vực này. Một trong những yếu tố quyết ịnh ến sự thành công và bền vững
của doanh nghiệp du lịch chính là nguồn nhân lực.
Với hơn 25 năm hoạt ộng trong lĩnh vực du lịch, Vietravel ã khẳng ịnh vị thế một
trong những công ty hàng ầu tại Việt Nam, phục vụ hàng triệu khách hàng mỗi năm. Để áp
ứng nhu cầu ngày càng a dạng của thị trường, Vietravel không ngừng ầu tư vào việc nâng cao
chất lượng nhân sự, từ tuyển dụng, ào tạo, ến quản phát triển. Tuy nhiên, sự gia tăng quy
tính phức tạp trong hoạt ộng nhân sự ã ặt ra yêu cầu về việc xây dựng một hệ thống
quản lý nhân sự hiệu quả, hiện ại và phù hợp với xu hướng công nghệ số hóa.
Đề tài “Xây dựng chương trình quản nhân scủa công ty du lịch Vietravel” ược thực
hiện với mục tiêu nghiên cứu và ề xuất một hệ thống quản lý nhân sự, giúp công ty Vietravel
quản thông tin nhân viên, thông qua các yêu cầu nhập thông tin, xóa thông tin, cập nhật
lOMoARcPSD| 45315597
5
thông tin và tìm kiếm thông tin. Đây là ề tài giúp nhóm chúng em có cơ hội tìm hiểu và củng
cố lại kiến thức xuyên suốt quá trình học tập của học phần này trong thời gian vừa qua
I. ĐẶT BÀI TOÁN
1.1. Đặt vấn ề
Vietravel là một trong những thương hiệu du lịch hàng ầu tại Việt Nam, ược biết ến với
những hành trình du lịch a dạng, chất ợng cao dịch vchuyên nghiệp. Thành lập o
năm 1995, Vietravel ã không ngừng lớn mạnhkhẳng ịnh vị thế của mình trên thị trường du
lịch trong nước và quốc tế.
Để áp ứng nhu cầu ngày càng a dạng, mở rộng của thị trường, Vietravel không ngừng
ầu vào việc nâng cao chất lượng nhân sự, từ tuyển dụng, ào tạo, ến quản phát triển.
Tuy nhiên trước sự gia tăng quy tính phức tạp trong hoạt ộng nhân sự, công ty Vietravel
cần xây dựng một hệ thống quản lý nhân sự hiệu quả ể:
Theo dõi thông tin nhân viên: Cập nhật, lưu trữ quản các thông tin nhân, liên hệ,
thông tin về công việc của từng nhân viên.
Quản lý quá trình làm việc: Theo dõi lịch sử công việc, ánh giá hiệu quả làm việc, quản lý
quá trình ào tạo và phát triển.
Hỗ trợ các hoạt ộng quản lý nhân sự: Tính lương, quản lý chấm công, hỗ trợ các hoạt ộng
tuyển dụng, ào tạo.
1.2. Các thông tin cần quản lý
Thông tin cá nhân
Mã nhân viên: emp_id
Họ và tên: name
Giới tính: gender
Ngày sinh: dob
Quê quán: address
Số CCCD/CMND: cccd
Số iện thoại: phone
Email: email
Phòng ban: department
Chức vụ: position
lOMoARcPSD| 45315597
6
1.3. Ràng buộc liên quan ến các thông tin
Mã nhân viên: 1 - 10 ký tự, không ký tự ặc biệt.
Họ và tên: 5 - 50 ký tự, không ký tự ặc biệt.
Giới tính: “Nam” hoặc “Nữ”.
Ngày sinh: Định dạng DD/MM/YYYY.
Quê quán: 2 - 20 ký tự.
Số CCCD/CMND/Hộ chiếu: Một dãy số hợp lệ gồm 12 chữ số.
Số iện thoại: Một dãy số gồm 10 - 15 chữ số.
Email: ịnh dạng là một email hợp lệ (bao gồm “@” và “.com”).
Phòng ban: 2 - 20 ký tự.
Chức vụ: 2 - 20 ký tự.
1.4. Chức năng của chương trình quản lí nhân viên
Chương trình quản lý nhân viên bao gồm 4 chức năng chính: Nhập thông tin nhân viên,
Xóa thông tin nhân viên, Cập nhật thông tin nhân viên Tìm kiếm thông tin nhân viên. Trong
ó, ể thực hiện các chức năng xóa, cập nhật và tìm kiếm thông tin nhân viên, ta luôn nhập mã
nhân viên và lấy nó làm cơ sở cho các bước tiếp theo.
a. Nhập thông tin nhân viên
Cho phép bộ phận quản lý thông tin nhập thông tin cá nhân của nhân viên.
- Đầu vào: Thông tin của nhân viên.
- Đâu ra: “Nhân viên ã ược thêm thành công".
Trường hợp có thể xảy ra:
Bộ phận quản lý thông tin nhập ầy ủ các thông tin hợp lệ.
Bộ phận quản lý thông tin nhập thiếu thông tin.
Bộ phận quản lý thông tin nhập thông tin không hợp lệ.
b. Xóa thông tin nhân viên.
Cho phép bộ phận quản lý thông tin xóa thông tin của nhân viên ã nhập trước ó.
- Đầu vào: Mã nhân viên.
- Đầu ra: Thông báo về kết quả xóa thông tin nhân viên.
Trường hợp có thể xảy ra:
Mã nhân viên không tồn tại.
lOMoARcPSD| 45315597
7
c. Cập nhật thông tin nhân viên.
Cho phép bộ phận quản lý thông tin cập nhật thông tin của nhân viên khi cần chỉnh sửa.
- Đầu vào: Mã nhân viên, các thông tin cần cập nhật.
- Đầu ra: Thông tin nhân viên ã ược cập nhật.
Trường hợp có thể xảy ra:
Mã nhân viên không tồn tại.
Bộ phận quản lý thông tin không cập nhật bất kì thông tin nào.
Bộ phận quản lý thông tin cập nhật thông tin không hợp lệ.
d. Tìm kiếm thông tin nhân viên
Cho phép bộ phận quản lý thông tin tìm kiếm thông tin của nhân viên khi cần tra cứu.
- Đầu vào: Mã nhân viên.
- Đầu ra: Các thông tin tương ứng với mã nhân viên.
Các trường hợp có thể xảy ra:
Không tìm thấy bất kỳ thông tin nào.
II. PHÂN TÍCH BÀI TOÁN VÀ TRÌNH BÀY QUY TRÌNH CÁC THAO TÁC
DƯỚI DẠNG SƠ ĐỒ KHỐI
2.1. Phân tích bài toán
Chương trình bao gồm các chức năng chính sau ây:
2.1.1. Nhập thông tin nhân viên
Nhận ầu vào từ người quản lý: Họ và tên nhân viên, giới tính, ịa chỉ, email...
Kiểm tra ràng buộc dữ liệu.
Tạo nhân viên mới.
Lưu nhân viên vào cơ sở dữ liệu
2.1.2. Xóa thông tin nhân viên
Tiếp nhận mã nhân viên
Kiểm tra mã nhân viên
Xóa thông tin nhân viên khỏi cơ sở dữ liệu.
2.1.3. Cập nhật thông tin nhân viên
Nhận mã nhân viên và các thông tin cần cập nhật từ người quản lý.
lOMoARcPSD| 45315597
8
Kiểm tra mã nhân viên.
Cập nhật thông tin nhân viên trong cơ sở dữ liệu.
2.1.4. Tìm kiếm thông tin nhân viên
Nhận mã nhân viên từ người quản lý
In thông tin nhân viên phù hợp với mã nhân viên tìm kiếm từ cơ sở dữ liệu.
lOMoARcPSD| 45315597
9
2.2. Sơ ồ khi thhiện các chức năng chính của chương trình
Hình 2.2. Sơ ồ khối chức năng chính
Mô tả sơ ồ khối:
Khi chương trình bắt u, người dùng sẽ ược yêu cầu nhập lựa chọn của mình. Nếu lựa
chọn của người dùng 1, chương trình sẽ yêu cầu người dùng nhập thông tin khách hàng,
lOMoARcPSD| 45315597
10
bao gồm họ tên, ngày sinh, giới tính, quê quán, số CCCD/CMND/Hộ chiếu, số iện thoại,
Email,...
Nếu lựa chọn của người dùng 2, chương trình sẽ hiển thị danh sách thông tin nhân
viên.
Nếu lựa chọn của người dùng là 3, chương trình sẽ xóa thông tin nhân viên có mã nhân
viên với lựa chọn của người dùng.
Nếu lựa chọn của người dùng là 4, chương trình sẽ cập nhật thông tin nhân viên có
nhân viên tương ứng với lựa chọn của người dùng.
Nếu lựa chọn của người dùng là 5, chương trình sẽ tìm kiếm thông tin nhân viên có mã
nhân viên tương ứng với lựa chọn của người dùng.
Chương trình sẽ tiếp tục cho ến khi người dùng chọn lựa chọn 0 ể thoát chương trình.
lOMoARcPSD| 45315597
11
2.3. Đặc tcác chức năng chính của chương trình
2.3.1. Sơ ồ khối chức năng nhập thông tin nhân viên
Hình 2.3.1. Sơ ồ khối nhập thông tin nhân viên
Mô tả sơ ồ khối:
Bước 1: Bắt ầu
Bước 2: Nhập Mã nhân viên
lOMoARcPSD| 45315597
12
- Nếu không hợp lệ (từ 1-10 kí tự gồm chữ và số), hiển thị thông báo lỗi và yêu cầu nhập lại.
- Nếu hợp lệ, tiếp tục kiểm tra xem dữ liệu ã tồn tại hay chưa
Nếu ã tồn tại, thông báo lỗi và yêu cầu nhập lại
Nếu chưa tồn tại, tiếp tục Bước 3: Nhập Họ và tên:
- Nếu không hợp lệ (chứa ký tự ặc biệt, từ 5-50 kí tự), hiển thị thông báo lỗi và yêu cầu nhập
lại
- Nếu hợp lệ, tiếp tục.
Bước 4: Nhập Giới tính:
- Nếu không hợp lệ (không phải "Nam" hoặc "Nữ"), hiển thị thông báo lỗi và yêu cầu nhập
lại.
- Nếu hợp lệ, tiếp tục.
Bước 5: Nhập Ngày sinh:
- Nếu không hợp lệ (không úng ịnh dạng DD/MM/YY), hiển thị thông báo lỗi yêu cầu
nhập lại.
- Nếu hợp lệ, tiếp tục.
Bước 6: Nhập Quê quán
- Nếu không hợp lệ (chứa từ 2-20 kí tự), hiển thị thông báo lỗi và yêu cầu nhập lại.
- Nếu hợp lệ, tiếp tục.
Bước 7: Nhập Số CCCD/CMND/Hộ chiếu.
- Nếu không hợp lệ (chứa 12 số), hiển thị thông báo lỗi và yêu cầu nhập lại.
- Nếu hợp lệ, tiếp tục kiểm tra xem dữ liệu ã tồn tại hay chưa.
Nếu ã tồn tại, thông báo lỗi và yêu cầu nhập lại
Nếu chưa tồn tại, tiếp tục Bước 8: Nhập Số iện thoại:
- Nếu không hợp lệ (không úng ịnh dạng hoặc không có 10 chữ số), hiển thị thông báo lỗi
yêu cầu nhập lại.
- Nếu hợp lệ, tiếp tục kiểm tra xem dữ liệu ã tồn tại hay chưa
Nếu ã tồn tại, thông báo lỗi và yêu cầu nhập lại
Nếu chưa tồn tại, tiếp tục
Bước 9: Nhập Email:
- Nếu không hợp lệ (không úng ịnh dạng email), hiển thị thông báo lỗi và yêu cầu nhập lại.
- Nếu hợp lệ, tiếp tục kiểm tra xem dữ liệu ã tồn tại hay chưa
Nếu ã tồn tại, thông báo lỗi và yêu cầu nhập lại
Nếu chưa tồn tại, tiếp tục Bước 10: Nhập Phòng ban:
- Nếu không hợp lệ (chứa 2-20 kí tự), hiển thị thông báo lỗi và yêu cầu nhập lại.
- Nếu hợp lệ, tiếp tục.
Bước 11: Nhập Chức vụ:
lOMoARcPSD| 45315597
13
- Nếu không hợp lệ (chứa 2-20 kí tự), hiển thị thông báo lỗi và yêu cầu nhập lại.
- Nếu hợp lệ, tiếp tục.
Bước 12: Hiển thị thông tin ã nhập. (Hiển thị “ Nhân viên ã ược thêm thành công” và hiển thị
thông tin vừa ược nhập)
Bước 13: Kết thúc.
lOMoARcPSD| 45315597
2.3.
14
2. Sơ ồ khối chức năng xóa thông tin nhân viên
Hình 2.3.2. Sơ ồ khối xóa thông tin nhân viên
Mô tả sơ ồ khối
Bước 1: Bắt ầu chức năng xóa thông tin nhân viên.
Bước 2: Khởi tạo hàm xóa thông tin nhân viên.
Bước 3: Nhập mã nhân viên cần xóa.
Bước 4: Kiểm tra mã nhân viên có tồn tại trong CSDL hay không?
- Nếu không tồn tại, in ra màn hình “Mã nhân viên không tồn tại”
- Nếu mã nhân viên tồn tại, chương trình sẽ xóa các thông tin của nhân viên khỏi cơ sở
dữ liệu. Chương trình sẽ thông báo cho người dùng rằng thông tin nhân viên ã ược xóa
thành công. Bước 5: Kết thúc
lOMoARcPSD| 45315597
2.3.
15
3. Sơ ồ khối chức năng cập nhật thông tin nhân viên
Hình 2.3.3. Sơ ồ khối cập nhật thông tin nhân viên
Mô tả sơ ồ khối
Bước 1: Bắt ầu.
Bước 2: Khởi tạo hàm cập nhật thông tin nhân viên.
Bước 3: Kiểm tra mã nhân viên có tồn tại không?- Nếu không tồn tại: In “Mã nhân viên
không tồn tại” và kết thúc - Nếu tồn tại: Tới bước 4 Bước 4: Nhập thông tin mới của
nhân viên.
Bước 5: In “Cập nhật thông tin nhân viên thành công”.
Bước 6: Kết thúc
lOMoARcPSD| 45315597
2.3.
16
4. Sơ ồ khối chức năng tìm kiếm thông tin nhân viên
Hình 2.3.4. Sơ ồ khối tìm kiếm thông tin nhân viên
Mô tả sơ ồ khối
Bước 1: Bắt ầu chức năng tìm kiếm thông tin nhân viên.
Bước 2: Khởi tạo hàm tìm kiếm
Bước 3: Nhập mã nhân viên cần tìm.
Bước 4: Kiểm tra mã nhân viên có tồn tại hay không?
Nếu không tồn tại, in ra màn hình “Mã nhân viên không tồn tại”.
Nếu tồn tại, chương trình sẽ in ra thông tin nhân viên.
lOMoARcPSD| 45315597
2.3.
17
Bước 7: Kết thúc.
lOMoARcPSD| 45315597
18
III. CÀI ĐẶT CHƯƠNG TRÌNH TRÊN PYTHON
3.1. Xây dựng các hàm liên quan
3.1.1. Danh sách lưu trữ nhân viên
employees = [] # Mỗi nh n viŒn l một dictionary
3.1.2. Quy tắc xác minh dữ liệu
validation_rules = {
"Mª NV": {
"prompt": "Nhập mª nh n viŒn (1-10 k tự, kh ng k tự đặc
biệt): ",
"condition": lambda x: 1 <= len(x) <= 10 and x.isalnum(),
"error": "Lỗi: Mª nh n viŒn phải c từ 1-10 k tự, kh ng
chứa k tự đặc biệt.",
"unique": True },
"Họ v tŒn": {
"prompt": "Nhập họ v tŒn (5-50 k tự, kh ng k tự đặc biệt):
",
"condition": lambda x: 5 <= len(x) <= 50 and
all(ch.isalnum() or ch.isspace() for ch in x),
"error": "Lỗi: Họ v tŒn phải c từ 5-50 k tự, kh ng chứa k
tự đặc biệt." },
"Giới t nh": {
"prompt": "Nhập giới t nh (Nam hoặc Nữ): ",
"condition": lambda x: x in ["Nam", "Nữ"],
lOMoARcPSD| 45315597
19
"error": "Lỗi: Giới t nh chỉ được nhập ’Nam’ hoặc ’Nữ’."
},
"Ng y sinh": {
"prompt": "Nhập ng y sinh (DD/MM/YYYY): ",
"condition": lambda x: len(x.split(’/’)) == 3 and
all(part.isdigit() for part in x.split(’/’)),
"error": "Lỗi: Ng y sinh phải đúng định dạng DD/MM/YYYY."
},
"QuŒ quÆn": {
"prompt": "Nhập quŒ quÆn (2-20 k tự): ",
"condition": lambda x: 2 <= len(x) <= 20,
"error": "Lỗi: QuŒ quÆn phải c từ 2-20 k tự." },
"CCCD/CMND": {
"prompt": "Nhập số CCCD/CMND (12 chữ số): ",
"condition": lambda x: len(x) == 12 and x.isdigit(),
"error": "Lỗi: Số CCCD/CMND phải gồm 12 chữ số.",
"unique": True },
"Sđiện thoại": {
"prompt": "Nhập số điện thoại (10-15 chữ số): ",
"condition": lambda x: 10 <= len(x) <= 15 and x.isdigit(),
"error": "Lỗi: Số điện thoại phải c từ 10-15 chữ số.",
"unique": True },
lOMoARcPSD| 45315597
20
"Email": {
"prompt": "Nhập email liŒn lạc: ",
"condition": lambda x: "@" in x and ".com" in x,
"error": "Lỗi: Email phải có định dạng hợp lệ (bao gồm ’@’
v ’.com’).",
"unique": True },
"Ph ng ban": {
"prompt": "Nhập ph ng ban (2-20 k tự): ",
"condition": lambda x: 2 <= len(x) <= 20,
"error": "Lỗi: Ph ng ban phải c từ 2-20 k tự." },
"Chức vụ": {
"prompt": "Nhập chức vụ (2-20 k tự): ",
"condition": lambda x: 2 <= len(x) <= 20,
"error": "Lỗi: Chức vụ phải c từ 2-20 k tự." } }
3.1.3. Hàm xác minh dữ liệu từ quy tắc def
validate_field(field):
rule = validation_rules[field] while
True:
data = input(rule["prompt"]) if
rule"condition":
if rule.get("unique") and is_unique(field, data):

Preview text:

lOMoAR cPSD| 45315597 lOMoAR cPSD| 45315597 LỜI CẢM ƠN
Trong quá trình tiên hành nghiên cứu ề tài này, chúng em ã nhận ược những sự giúp ỡ,
hướng dẫn tận tình và những lời góp ý, chia sẻ chân thành của nhiều người ể có ược kết quả như ngày hôm nay.
Trước hết, nhóm 09 xin phép gửi lời cảm ơn sâu sắc ến cô Đinh Thị Hà - người ã trực
tiếp giảng dạy, nhiệt tình hướng dẫn và truyền ạt kinh nghiệm cho chúng em. Nhóm em cũng
xin gửi lời cảm ơn chân thành ến Trường Đại học Thương Mại vì ã ưa học phần “Lập trình
với Python" vào trong chương trình giảng dạy ể chúng em có thể biết ến, làm quen và tiếp cận
ược với những kiến thức của học phần. Về học phần “Lập trình với Python", ây là học phần
có tính thực tế vô cùng cao, cung cấp một lượng lớn kiến thức và gắn liền với nhu cầu thực
tiễn của sinh viên. Tuy vậy do vốn kiến thức còn nhiều hạn chế và còn bỡ ngỡ với phương
thức học của môi trường mới nên không thể tránh khỏi bài tập lớn vẫn còn nhiều iểm thiếu
sót và chưa thực sự hoàn thiện một cách chỉn chu. Chúng em rất mong nhận ược sự góp ý,
giúp ỡ và ý kiến ánh giá xác áng của các thầy cô ể nhóm có thêm vốn kinh nghiệm cho những ề tài tiếp theo.
Nhóm em xin chân thành cảm ơn! MỤC LỤC
LỜI CẢM ƠN ......................................................................................................................... 2
MỤC LỤC ............................................................................................................................... 3 LỜI MỞ ĐẦU
......................................................................................................................... 5 I.
ĐẶT BÀI TOÁN ............................................................................................................. 6
1.1. Đặt vấn ề ..................................................................................................................... 6
1.2. Các thông tin cần quản lý ............................................................................................. 6
1.3. Ràng buộc liên quan ến các thông tin......................................................................... 7
1.4. Chức năng của chương trình quản lí nhân viên ............................................................ 7
II. PHÂN TÍCH BÀI TOÁN VÀ TRÌNH BÀY QUY TRÌNH CÁC THAO TÁC DƯỚI
DẠNG SƠ ĐỒ KHỐI.............................................................................................................. 9
2.1. Phân tích bài toán ......................................................................................................... 9 2 lOMoAR cPSD| 45315597
2.1.1. Nhập thông tin nhân viên ...................................................................................... 9
2.1.2. Xóa thông tin nhân viên ........................................................................................ 9
2.1.3. Cập nhật thông tin nhân viên ................................................................................. 9
2.1.4. Tìm kiếm thông tin nhân viên ............................................................................... 9
2.2. Sơ ồ khối thể hiện các chức năng chính của chương trình ....................................... 10
2.3. Đặc tả các chức năng chính của chương trình ............................................................ 12
2.3.1. Sơ ồ khối chức năng nhập thông tin nhân viên ................................................. 12
2.3.2. Sơ ồ khối chức năng xóa thông tin nhân viên ................................................... 15
2.3.3. Sơ ồ khối chức năng cập nhật thông tin nhân viên ............................................ 16
2.3.4. Sơ ồ khối chức năng tìm kiếm thông tin nhân viên ........................................... 17
III. CÀI ĐẶT CHƯƠNG TRÌNH TRÊN PYTHON ............................................................. 18
3.1. Xây dựng các hàm liên quan ...................................................................................... 18
3.1.1. Danh sách lưu trữ nhân viên ................................................................................ 18
3.1.2. Quy tắc xác minh dữ liệu..................................................................................... 18
3.1.3. Hàm xác minh dữ liệu từ quy tắc ........................................................................ 20
3.1.4. Hàm kiểm tra tính duy nhất của trường ............................................................... 21
3.2. Xây dựng các hàm chức năng chính........................................................................... 21
3.2.1. Hàm thêm nhân viên............................................................................................ 21
3.2.2. Hàm hiển thị tất cả nhân viên .............................................................................. 21
3.2.3. Hàm xóa nhân viên .............................................................................................. 22
3.2.4. Hàm cập nhật thông tin nhân viên ....................................................................... 22
3.2.5. Hàm tìm kiếm nhân viên ..................................................................................... 23 3 lOMoAR cPSD| 45315597
3.3. Xây dựng hàm Menu chính ........................................................................................ 24
3.4. Hình ảnh chạy chương trình ....................................................................................... 26
3.4.1. Chức năng thêm nhân viên .................................................................................. 26
3.4.2. Hiển thị danh sách nhân viên .............................................................................. 26
3.4.3. Chức năng xóa nhân viên .................................................................................... 26
3.4.4.Chức năng cập nhật thông tin nhân viên .............................................................. 27
3.4.5. Chức năng tìm kiếm thông tin nhân viên ............................................................ 27
PHỤ LỤC HÌNH ẢNH ......................................................................................................... 28
KẾT LUẬN ........................................................................................................................... 29
BẢNG ĐÁNH GIÁ VÀ PHÂN CÔNG NHIỆM VỤ THÀNH VIÊN .................................. 29 LỜI MỞ ĐẦU
Trong bối cảnh nền kinh tế toàn cầu phát triển và hội nhập, ngành du lịch tại Việt Nam
ã và ang chứng kiến sự tăng trưởng mạnh mẽ, trở thành một trong những ngành kinh tế mũi
nhọn của ất nước. Theo thống kê từ Tổng cục Du lịch Việt Nam, lượng khách du lịch nội ịa
và quốc tế ngày càng gia tăng, tạo nên áp lực cũng như cơ hội phát triển cho các doanh nghiệp
hoạt ộng trong lĩnh vực này. Một trong những yếu tố quyết ịnh ến sự thành công và bền vững
của doanh nghiệp du lịch chính là nguồn nhân lực.
Với hơn 25 năm hoạt ộng trong lĩnh vực du lịch, Vietravel ã khẳng ịnh vị thế là một
trong những công ty hàng ầu tại Việt Nam, phục vụ hàng triệu khách hàng mỗi năm. Để áp
ứng nhu cầu ngày càng a dạng của thị trường, Vietravel không ngừng ầu tư vào việc nâng cao
chất lượng nhân sự, từ tuyển dụng, ào tạo, ến quản lý và phát triển. Tuy nhiên, sự gia tăng quy
mô và tính phức tạp trong hoạt ộng nhân sự ã ặt ra yêu cầu về việc xây dựng một hệ thống
quản lý nhân sự hiệu quả, hiện ại và phù hợp với xu hướng công nghệ số hóa.
Đề tài “Xây dựng chương trình quản lý nhân sự của công ty du lịch Vietravel” ược thực
hiện với mục tiêu nghiên cứu và ề xuất một hệ thống quản lý nhân sự, giúp công ty Vietravel
quản lý thông tin nhân viên, thông qua các yêu cầu nhập thông tin, xóa thông tin, cập nhật 4 lOMoAR cPSD| 45315597
thông tin và tìm kiếm thông tin. Đây là ề tài giúp nhóm chúng em có cơ hội tìm hiểu và củng
cố lại kiến thức xuyên suốt quá trình học tập của học phần này trong thời gian vừa qua I. ĐẶT BÀI TOÁN 1.1. Đặt vấn ề
Vietravel là một trong những thương hiệu du lịch hàng ầu tại Việt Nam, ược biết ến với
những hành trình du lịch a dạng, chất lượng cao và dịch vụ chuyên nghiệp. Thành lập vào
năm 1995, Vietravel ã không ngừng lớn mạnh và khẳng ịnh vị thế của mình trên thị trường du
lịch trong nước và quốc tế.
Để áp ứng nhu cầu ngày càng a dạng, mở rộng của thị trường, Vietravel không ngừng
ầu tư vào việc nâng cao chất lượng nhân sự, từ tuyển dụng, ào tạo, ến quản lý và phát triển.
Tuy nhiên trước sự gia tăng quy mô và tính phức tạp trong hoạt ộng nhân sự, công ty Vietravel
cần xây dựng một hệ thống quản lý nhân sự hiệu quả ể:
Theo dõi thông tin nhân viên: Cập nhật, lưu trữ và quản lý các thông tin cá nhân, liên hệ,
thông tin về công việc của từng nhân viên.
Quản lý quá trình làm việc: Theo dõi lịch sử công việc, ánh giá hiệu quả làm việc, quản lý
quá trình ào tạo và phát triển.
Hỗ trợ các hoạt ộng quản lý nhân sự: Tính lương, quản lý chấm công, hỗ trợ các hoạt ộng tuyển dụng, ào tạo.
1.2. Các thông tin cần quản lý
Thông tin cá nhân − Mã nhân viên: emp_id − Họ và tên: name − Giới tính: gender − Ngày sinh: dob − Quê quán: address − Số CCCD/CMND: cccd − Số iện thoại: phone − Email: email
− Phòng ban: department − Chức vụ: position 5 lOMoAR cPSD| 45315597
1.3. Ràng buộc liên quan ến các thông tin
− Mã nhân viên: 1 - 10 ký tự, không ký tự ặc biệt.
− Họ và tên: 5 - 50 ký tự, không ký tự ặc biệt.
− Giới tính: “Nam” hoặc “Nữ”.
− Ngày sinh: Định dạng DD/MM/YYYY.
− Quê quán: 2 - 20 ký tự.
− Số CCCD/CMND/Hộ chiếu: Một dãy số hợp lệ gồm 12 chữ số.
− Số iện thoại: Một dãy số gồm 10 - 15 chữ số.
− Email: ịnh dạng là một email hợp lệ (bao gồm “@” và “.com”).
− Phòng ban: 2 - 20 ký tự.
− Chức vụ: 2 - 20 ký tự.
1.4. Chức năng của chương trình quản lí nhân viên
Chương trình quản lý nhân viên bao gồm 4 chức năng chính: Nhập thông tin nhân viên,
Xóa thông tin nhân viên, Cập nhật thông tin nhân viên và Tìm kiếm thông tin nhân viên. Trong
ó, ể thực hiện các chức năng xóa, cập nhật và tìm kiếm thông tin nhân viên, ta luôn nhập mã
nhân viên và lấy nó làm cơ sở cho các bước tiếp theo.
a. Nhập thông tin nhân viên
Cho phép bộ phận quản lý thông tin nhập thông tin cá nhân của nhân viên.
- Đầu vào: Thông tin của nhân viên.
- Đâu ra: “Nhân viên ã ược thêm thành công".
Trường hợp có thể xảy ra:
• Bộ phận quản lý thông tin nhập ầy ủ các thông tin hợp lệ.
• Bộ phận quản lý thông tin nhập thiếu thông tin.
• Bộ phận quản lý thông tin nhập thông tin không hợp lệ.
b. Xóa thông tin nhân viên.
Cho phép bộ phận quản lý thông tin xóa thông tin của nhân viên ã nhập trước ó.
- Đầu vào: Mã nhân viên.
- Đầu ra: Thông báo về kết quả xóa thông tin nhân viên.
Trường hợp có thể xảy ra:
• Mã nhân viên không tồn tại. 6 lOMoAR cPSD| 45315597
c. Cập nhật thông tin nhân viên.
Cho phép bộ phận quản lý thông tin cập nhật thông tin của nhân viên khi cần chỉnh sửa.
- Đầu vào: Mã nhân viên, các thông tin cần cập nhật.
- Đầu ra: Thông tin nhân viên ã ược cập nhật.
Trường hợp có thể xảy ra:
• Mã nhân viên không tồn tại.
• Bộ phận quản lý thông tin không cập nhật bất kì thông tin nào.
• Bộ phận quản lý thông tin cập nhật thông tin không hợp lệ.
d. Tìm kiếm thông tin nhân viên
Cho phép bộ phận quản lý thông tin tìm kiếm thông tin của nhân viên khi cần tra cứu.
- Đầu vào: Mã nhân viên.
- Đầu ra: Các thông tin tương ứng với mã nhân viên.
Các trường hợp có thể xảy ra:
• Không tìm thấy bất kỳ thông tin nào.
II. PHÂN TÍCH BÀI TOÁN VÀ TRÌNH BÀY QUY TRÌNH CÁC THAO TÁC
DƯỚI DẠNG SƠ ĐỒ KHỐI
2.1. Phân tích bài toán
Chương trình bao gồm các chức năng chính sau ây:
2.1.1. Nhập thông tin nhân viên
• Nhận ầu vào từ người quản lý: Họ và tên nhân viên, giới tính, ịa chỉ, email...
• Kiểm tra ràng buộc dữ liệu. • Tạo nhân viên mới.
• Lưu nhân viên vào cơ sở dữ liệu
2.1.2. Xóa thông tin nhân viên
• Tiếp nhận mã nhân viên
• Kiểm tra mã nhân viên
• Xóa thông tin nhân viên khỏi cơ sở dữ liệu.
2.1.3. Cập nhật thông tin nhân viên
• Nhận mã nhân viên và các thông tin cần cập nhật từ người quản lý. 7 lOMoAR cPSD| 45315597
• Kiểm tra mã nhân viên.
• Cập nhật thông tin nhân viên trong cơ sở dữ liệu.
2.1.4. Tìm kiếm thông tin nhân viên
• Nhận mã nhân viên từ người quản lý
• In thông tin nhân viên phù hợp với mã nhân viên tìm kiếm từ cơ sở dữ liệu. 8 lOMoAR cPSD| 45315597
2.2. Sơ ồ khối thể hiện các chức năng chính của chương trình
Hình 2.2. Sơ ồ khối chức năng chính Mô tả sơ ồ khối:
Khi chương trình bắt ầu, người dùng sẽ ược yêu cầu nhập lựa chọn của mình. Nếu lựa
chọn của người dùng là 1, chương trình sẽ yêu cầu người dùng nhập thông tin khách hàng, 9 lOMoAR cPSD| 45315597
bao gồm họ và tên, ngày sinh, giới tính, quê quán, số CCCD/CMND/Hộ chiếu, số iện thoại, Email,...
Nếu lựa chọn của người dùng là 2, chương trình sẽ hiển thị danh sách thông tin nhân viên.
Nếu lựa chọn của người dùng là 3, chương trình sẽ xóa thông tin nhân viên có mã nhân
viên với lựa chọn của người dùng.
Nếu lựa chọn của người dùng là 4, chương trình sẽ cập nhật thông tin nhân viên có mã
nhân viên tương ứng với lựa chọn của người dùng.
Nếu lựa chọn của người dùng là 5, chương trình sẽ tìm kiếm thông tin nhân viên có mã
nhân viên tương ứng với lựa chọn của người dùng.
Chương trình sẽ tiếp tục cho ến khi người dùng chọn lựa chọn 0 ể thoát chương trình. 10 lOMoAR cPSD| 45315597
2.3. Đặc tả các chức năng chính của chương trình
2.3.1. Sơ ồ khối chức năng nhập thông tin nhân viên
Hình 2.3.1. Sơ ồ khối nhập thông tin nhân viên Mô tả sơ ồ khối:
Bước 1: Bắt ầu
Bước 2: Nhập Mã nhân viên 11 lOMoAR cPSD| 45315597
- Nếu không hợp lệ (từ 1-10 kí tự gồm chữ và số), hiển thị thông báo lỗi và yêu cầu nhập lại.
- Nếu hợp lệ, tiếp tục kiểm tra xem dữ liệu ã tồn tại hay chưa •
Nếu ã tồn tại, thông báo lỗi và yêu cầu nhập lại •
Nếu chưa tồn tại, tiếp tục Bước 3: Nhập Họ và tên:
- Nếu không hợp lệ (chứa ký tự ặc biệt, từ 5-50 kí tự), hiển thị thông báo lỗi và yêu cầu nhập lại
- Nếu hợp lệ, tiếp tục.
Bước 4: Nhập Giới tính:
- Nếu không hợp lệ (không phải là "Nam" hoặc "Nữ"), hiển thị thông báo lỗi và yêu cầu nhập lại.
- Nếu hợp lệ, tiếp tục.
Bước 5: Nhập Ngày sinh:
- Nếu không hợp lệ (không úng ịnh dạng DD/MM/YY), hiển thị thông báo lỗi và yêu cầu nhập lại.
- Nếu hợp lệ, tiếp tục.
Bước 6: Nhập Quê quán
- Nếu không hợp lệ (chứa từ 2-20 kí tự), hiển thị thông báo lỗi và yêu cầu nhập lại.
- Nếu hợp lệ, tiếp tục.
Bước 7: Nhập Số CCCD/CMND/Hộ chiếu.
- Nếu không hợp lệ (chứa 12 số), hiển thị thông báo lỗi và yêu cầu nhập lại.
- Nếu hợp lệ, tiếp tục kiểm tra xem dữ liệu ã tồn tại hay chưa. •
Nếu ã tồn tại, thông báo lỗi và yêu cầu nhập lại •
Nếu chưa tồn tại, tiếp tục Bước 8: Nhập Số iện thoại:
- Nếu không hợp lệ (không úng ịnh dạng hoặc không có 10 chữ số), hiển thị thông báo lỗi và yêu cầu nhập lại.
- Nếu hợp lệ, tiếp tục kiểm tra xem dữ liệu ã tồn tại hay chưa •
Nếu ã tồn tại, thông báo lỗi và yêu cầu nhập lại •
Nếu chưa tồn tại, tiếp tục
Bước 9: Nhập Email:
- Nếu không hợp lệ (không úng ịnh dạng email), hiển thị thông báo lỗi và yêu cầu nhập lại.
- Nếu hợp lệ, tiếp tục kiểm tra xem dữ liệu ã tồn tại hay chưa •
Nếu ã tồn tại, thông báo lỗi và yêu cầu nhập lại •
Nếu chưa tồn tại, tiếp tục Bước 10: Nhập Phòng ban:
- Nếu không hợp lệ (chứa 2-20 kí tự), hiển thị thông báo lỗi và yêu cầu nhập lại.
- Nếu hợp lệ, tiếp tục.
Bước 11: Nhập Chức vụ: 12 lOMoAR cPSD| 45315597
- Nếu không hợp lệ (chứa 2-20 kí tự), hiển thị thông báo lỗi và yêu cầu nhập lại.
- Nếu hợp lệ, tiếp tục.
Bước 12: Hiển thị thông tin ã nhập. (Hiển thị “ Nhân viên ã ược thêm thành công” và hiển thị
thông tin vừa ược nhập)
Bước 13: Kết thúc. 13 lOMoAR cPSD| 45315597 2.3.
2. Sơ ồ khối chức năng xóa thông tin nhân viên
Hình 2.3.2. Sơ ồ khối xóa thông tin nhân viên Mô tả sơ ồ khối
Bước 1: Bắt ầu chức năng xóa thông tin nhân viên.
Bước 2: Khởi tạo hàm xóa thông tin nhân viên.
Bước 3: Nhập mã nhân viên cần xóa.
Bước 4: Kiểm tra mã nhân viên có tồn tại trong CSDL hay không?
- Nếu không tồn tại, in ra màn hình “Mã nhân viên không tồn tại”
- Nếu mã nhân viên tồn tại, chương trình sẽ xóa các thông tin của nhân viên khỏi cơ sở
dữ liệu. Chương trình sẽ thông báo cho người dùng rằng thông tin nhân viên ã ược xóa
thành công. Bước 5: Kết thúc 14 lOMoAR cPSD| 45315597 2.3.
3. Sơ ồ khối chức năng cập nhật thông tin nhân viên
Hình 2.3.3. Sơ ồ khối cập nhật thông tin nhân viên Mô tả sơ ồ khối Bước 1: Bắt ầu.
Bước 2: Khởi tạo hàm cập nhật thông tin nhân viên.
Bước 3: Kiểm tra mã nhân viên có tồn tại không?- Nếu không tồn tại: In “Mã nhân viên
không tồn tại” và kết thúc - Nếu tồn tại: Tới bước 4 Bước 4: Nhập thông tin mới của nhân viên.
Bước 5: In “Cập nhật thông tin nhân viên thành công”. Bước 6: Kết thúc 15 lOMoAR cPSD| 45315597 2.3.
4. Sơ ồ khối chức năng tìm kiếm thông tin nhân viên
Hình 2.3.4. Sơ ồ khối tìm kiếm thông tin nhân viên Mô tả sơ ồ khối
Bước 1: Bắt ầu chức năng tìm kiếm thông tin nhân viên.
Bước 2: Khởi tạo hàm tìm kiếm
Bước 3: Nhập mã nhân viên cần tìm.
Bước 4: Kiểm tra mã nhân viên có tồn tại hay không?
• Nếu không tồn tại, in ra màn hình “Mã nhân viên không tồn tại”.
• Nếu tồn tại, chương trình sẽ in ra thông tin nhân viên. 16 lOMoAR cPSD| 45315597 2.3.
Bước 7: Kết thúc. 17 lOMoAR cPSD| 45315597
III. CÀI ĐẶT CHƯƠNG TRÌNH TRÊN PYTHON
3.1. Xây dựng các hàm liên quan
3.1.1. Danh sách lưu trữ nhân viên
employees = [] # Mỗi nh n viŒn l một dictionary
3.1.2. Quy tắc xác minh dữ liệu validation_rules = { "Mª NV": {
"prompt": "Nhập mª nh n viŒn (1-10 k tự, kh ng k tự đặc biệt): ",
"condition": lambda x: 1 <= len(x) <= 10 and x.isalnum(),
"error": "Lỗi: Mª nh n viŒn phải c từ 1-10 k tự, kh ng
chứa k tự đặc biệt.", "unique": True }, "Họ v tŒn": {
"prompt": "Nhập họ v tŒn (5-50 k tự, kh ng k tự đặc biệt): ",
"condition": lambda x: 5 <= len(x) <= 50 and
all(ch.isalnum() or ch.isspace() for ch in x),
"error": "Lỗi: Họ v tŒn phải c từ 5-50 k tự, kh ng chứa k tự đặc biệt." }, "Giới t nh": {
"prompt": "Nhập giới t nh (Nam hoặc Nữ): ",
"condition": lambda x: x in ["Nam", "Nữ"], 18 lOMoAR cPSD| 45315597
"error": "Lỗi: Giới t nh chỉ được nhập ’Nam’ hoặc ’Nữ’." }, "Ng y sinh": {
"prompt": "Nhập ng y sinh (DD/MM/YYYY): ",
"condition": lambda x: len(x.split(’/’)) == 3 and
all(part.isdigit() for part in x.split(’/’)),
"error": "Lỗi: Ng y sinh phải đúng định dạng DD/MM/YYYY." }, "QuŒ quÆn": {
"prompt": "Nhập quŒ quÆn (2-20 k tự): ",
"condition": lambda x: 2 <= len(x) <= 20,
"error": "Lỗi: QuŒ quÆn phải c từ 2-20 k tự." }, "CCCD/CMND": {
"prompt": "Nhập số CCCD/CMND (12 chữ số): ",
"condition": lambda x: len(x) == 12 and x.isdigit(),
"error": "Lỗi: Số CCCD/CMND phải gồm 12 chữ số.", "unique": True }, "Số điện thoại": {
"prompt": "Nhập số điện thoại (10-15 chữ số): ",
"condition": lambda x: 10 <= len(x) <= 15 and x.isdigit(),
"error": "Lỗi: Số điện thoại phải c từ 10-15 chữ số.", "unique": True }, 19 lOMoAR cPSD| 45315597 "Email": {
"prompt": "Nhập email liŒn lạc: ",
"condition": lambda x: "@" in x and ".com" in x,
"error": "Lỗi: Email phải có định dạng hợp lệ (bao gồm ’@’ v ’.com’).", "unique": True }, "Ph ng ban": {
"prompt": "Nhập ph ng ban (2-20 k tự): ",
"condition": lambda x: 2 <= len(x) <= 20,
"error": "Lỗi: Ph ng ban phải c từ 2-20 k tự." }, "Chức vụ": {
"prompt": "Nhập chức vụ (2-20 k tự): ",
"condition": lambda x: 2 <= len(x) <= 20,
"error": "Lỗi: Chức vụ phải c từ 2-20 k tự." } }
3.1.3. Hàm xác minh dữ liệu từ quy tắc def validate_field(field):
rule = validation_rules[field] while True:
data = input(rule["prompt"]) if rule"condition":
if rule.get("unique") and is_unique(field, data): 20