lOMoARcPSD| 47205411
1
TRƯỜNG ĐẠI HỌC THƯƠNG MẠI
KHOA HTTT KINH TẾ & TMĐT
BỘ MÔN: LẬP TRÌNH PYTHON
BÀI TẬP LỚN/DỰ ÁN
HỌC PHẦN: Lập trình với python
MÃ LỚP HỌC PHẦN: Lớp: 231_INFO451_02
GVGD: Đinh Thị Thu Hà
Nhóm: 16
MÃ SỐ ĐỀ/TÊN ĐỀ TÀI: Xây dựng chương trình quản lý nhân
sự của công ty xây dựng COTECCONS
SỐ
BÁO
DANH
Họ và tên
Mã số
SV/HV
Lớp
hành
chính
nộp
Điểm bài tập/
dự án
Điểm
kết
luận
Chấm
1
Chấ
m 2
Đỗ Vương Trọng
23D190141
K59S3
Vũ Thị Yến Thảo
23D190136
K59S3
Vũ Thị Hương Giang
23D190111
K59S3
Trần Phan Yến Nhi
23D190175
K59S4
An Hoàng Duy
23D190
K59S4
Nội, ngày … tháng … năm 20…
Cán bộ chấm 1 n bộ chấm 2
(Ký & ghi rõ họ tên) (Ký & ghi rõ họ tên)
lOMoARcPSD| 47205411
1
HỌC KỲ 1 NĂM HỌC 2023-2024
MỤC LỤC
LỜI CẢM ƠN
LỜI MỞ ĐẦU
BÀI TOÁN ĐẶT RA
CHƯƠNG I: PHÂN TÍCH BÀI TOÁN
1. Phân tích bài toán
1.1. Nhập thông tin nhân viên
1.2. Xoá thông tin nhân viên
1.3. Cập nhật thông tin nhân viên
1.4. Tìm kiếm thông tin nhân viên
1.5. Hiển thị danh sách thông tin nhân viên
1.6. Thoát chương trình
2. Sơ đồ chức năng của chương trình
3. Đặc tả các chức năng chính của chương trình
CHƯƠNG II: CÀI ĐẶT CHƯƠNG TRÌNH
1. Mô tả cấu trúc của chương trình
2. Mô tả chi tiêt các hàm chính của chương trình
KẾT LUẬN
TÀI LIỆU THAM KHẢO
LỜI CẢM ƠN
Lời đầu tiên, nhóm xin gửi lời cảm ơn chân thành tới cô. Trong quá trình học tập thực
hiện đề tài này, chúng em đã nhận được sự quan tâm giúp đỡ, hướng dẫn tận tình, tâm huyết
của cô. Nhờ sự giúp đỡ của cô, chúng em đã vượt qua những khó khăn ban đầu khi bắt
đầu học về lập trình. Từ cách sử dụng Python cho đến các kỹ thuật lập trình phức tạp hơn,
cô đã cung cấp cho em những kiến thức chi tiết hướng dẫn cần thiết để em hiểu rõ hơn
về chức năng cách hoạt động của Python. Em hy vọng sẽ thêm nhiều cơ hội được học
hỏi và nâng cao kinh nghiệm từ cô trong tương lai.
Để hoàn thành được đề tài này, nhóm chúng em đã cùng nhau nghiên cứu, thảo luận, áp
dụng những kiến thức được học trên lớp cùng với các nguồn tài liệu trên Internet cả
lOMoARcPSD| 47205411
1
những trải nghiệm của bản thân. Chúng em rất mong sẽ nhận được những lời nhận xét, góp
ý từ thầy cô và bạn đọc để đề tài này có thể hoàn thiện hơn nữa.
Một lần nữa, em cảm ơn cô rất nhiều.
Nhóm sinh viên thực hiện.
LỜI MỞ ĐẦU
Việc xây dựng một hệ thống quản lý nhân viên hiệu quả là một phần quan trọng trong việc
định hình và phát triển sự thành công của mọi doanh nghiệp, đặc biệt là trong ngữ cảnh
đầy thách thức và cơ hội của thị trường xây dựng ngày nay. Công ty chúng tôi, với tên gọi
là Coteconn, không chỉ là một đơn vị kinh doanh mà còn là một cộng đồng người làm
việc đồng lòng và hỗ trợ nhau. Trong tinh thần đó, chúng tôi quyết định tập trung vào việc
xây dựng một chương trình quản lý nhân viên đồng bộ, chuyên nghiệp và hiệu quả.
Chương trình của chúng tôi sẽ không chỉ giúp lưu trữ thông tin chi tiết về từng nhân viên
mà còn tập trung vào theo dõi tiến trình công việc, đánh giá hiệu suất và cung cấp các
công cụ báo cáo để quản lý có thể đưa ra quyết định dựa trên dữ liệu chính xác đầy đủ.
Chúng tôi tin rằng việc xây dựng chương trình quản lý nhân viên này không chỉ là sự tích
hợp công nghệ vào quy trình làm việc mà còn là việc xây dựng cộng đồng làm việc tích
cực và đồng thuận. Điều này sẽ giúp chúng tôi tối ưu hóa tài nguyên nhân sự, cải thiện sự
hiệu quả và hỗ trợ sự phát triển bền vững của công ty.
Chúng tôi hứa sẽ nỗ lực hết mình trong quá trình xây dựng và triển khai chương trình
quản lý nhân viên này, với hy vọng rằng nó sẽ là một công cụ hữu ích, góp phần quan
trọng vào sự phồn thịnh và thành công của công ty COTECCONS trong thời gian tới.
BÀI TOÁN ĐẶT RA
Chương trình quản nhân viên của một công ty cần đáp ứng một số nhu cầu của người
dùng về các chức năng cơ bản, hỗ trợ cho các hoạt động nghiệp vụ của công ty như: thêm,
xoá bỏ, cập nhật thông tin, tìm kiếm thông tin nhân viên trong việc quản nhân viên, quản
lý nhân viên, các dịch vụ.
Quản lý nhân viên một phần quan trọng trong việc tổ chức điều hành hoạt động của
công ty. Đối mặt với sự phức tạp của môi trường kinh doanh hiện đại, một chương trình
quản nhân viên hiệu quả không chỉ giúp giảm bớt gánh nặng ng việc của quản
lOMoARcPSD| 47205411
1
còn tạo điều kiện thuận lợi cho sự tương c hợp tác giữa các thành viên trong tổ chức.
Quản lý thông tin nhân viên bước quan trọng để đảm bảo rằng mọi người đều được đối
xử công bằng hội phát triển. Việc lưu trữ thông tin nhân tiến độ công việc
trong hệ thống không chỉ giúp quản lý dễ dàng theo dõi hiệu suất cá nhân mà còn tạo ra
sở dữ liệu chung cho toàn bộ tổ chức.
Thông qua việc gán quyền hạn và vai trò cho từng nhóm nhân viên, chương trình giúp bảo
đảm tính an toàn và bảo mật thông tin. Quản lý có thể chủ động kiểm soát quyền truy cập,
giúp ngăn chặn việc truy cập trái phép và đồng thời tối ưu hóa quy trình làm việc.
CHƯƠNG I: PHÂN TÍCH BÀI TOÁN
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:
1.1. Nhập thông tin nhân viên:
Người quản lý điền các thông tin cơ bản: Họ và tên nhân viên, mã nhân viên, giới
tính, quê quán, email…để nhập thông tin nhân viên.
1.2. Xoá thông tin nhân viên:
Cho phép người quản lý xoá thông tin nhân viên đã thêm trước đó.
1.3. Cập nhật thông tin nhân viên:
Cho phép người quản lý cập nhật thông tin nhân viên đã thêm trước đó khi cần
chỉnh sửa.
1.4. Tìm kiếm thông tin nhân viên:
Người quản lý có thể tìm kiếm thông tin nhân viên theo CMT/CCCD nhân viên
1.5. Hiển thị danh sách thông tin nhân viên
Chương trình sẽ hiển thị danh sách nhân viên có trong công ty
1.6. Thoát chương trình
Kết thúc và thoát chương trình
lOMoARcPSD| 47205411
1
2. Sơ đồ chức năng của chương trình: Đây là sơ đồ chức năng của chương trình quản lí
nhân viên gồm có: thêm thông tin nhân viên, xoá thông tin nhân viên, thay đổi và cập
nhật thông tin nhân viên, tìm kiếm thông tin nhân viên, hiển thị danh sách thông tin
nhân viên, thoát chương trình.
3. Đặc tả các chức năng chính của chương trình:
3.1. Chức năng nhập thông tin nhân viên:
Mô tả: Chương trình cho phép người quản lý nhập thông tin nhân viên: Họ và tên, Ngày
tháng năm sinh, quốc tịch,… CMT/CCCD là duy nhất
lOMoARcPSD| 47205411
1
Hình 2. biểu đồ hoạt động của nhập thông tin nhân viên
Luồng sự kiện:
*Luồng cơ bản
- Người quản lý gửi yêu cầu nhập thông tin nhân viên tới chương trình.
- Chương trình hiển thị nhập trường CMT/CCCD nhân viên - Người quản lý điền
CMT/CCCD nhân viên.
- Chương trình kiểm tra CMT/CCCD nhân viên người quản lý vừa nhập.
- ID hợp lệ, người quản lý điền đầy đủ các thông tin còn lại: Họ và tên, giới tính,ngày
tháng năm sinh, quê quán, CCCD/CMT.
- Người quản lý thêm mới thông tin nhân viên thành công.
*Luồng thay thế
- Nếu trong luồng cơ bản, người quản lý nhập ID trùng với ID của nhân viêntrước đó,
chương trình sẽ kiểm tra lại thông tin.
lOMoARcPSD| 47205411
1
Người quản lý cần điền lại CMT/CCCD nhân viên đúng yêu cầu.
•Tiền điều kiện: Người quản lý điền 1 (chức năng nhập thông tin nhân viên) trên
màn hình chương trình hiển thị.
•Hậu điều kiện:
- Nếu thành công: Dữ liệu được lưu vào chương trình.
- Nếu thất bại: Chương trình không có gì thay đổi.
3.2. Chức năng xoá thông tin nhân viên:
Mô tả: Chương trình cho phép người quản lý xoá thông tin nhân viên bằng CMT/CCCD
nhân viên.
Hình 3. Biểu đồ hoạt động của chức năng xóa thông tin nhân viên
Luồng sự kiện:
*Luồng cơ bản
- Người quản lý gửi yêu cầu xoá thông tin nhân viên tới chương trình.
- Chương trình hiển thị xoá thông tin nhân viên với CMT/CCCD nhân viên.
- Người quản lý điền CMT/CCCD nhân viên cần xoá.
lOMoARcPSD| 47205411
1
- Chương trình kiểm tra CMT/CCCD nhân viên mà người quản lý yêu cầu xoá.
- ID hợp lệ, người quản lý xoá thông tin nhân viên thành công.
*Luồng thay thế
- Nếu trong luồng cơ bản, người quản lý nhập sai CMT/CCCD nhân viên, chương trình
sẽbáo lỗi “thông tin nhân viên còn tồn tại”.
•Tiền điều kiện: Người quản lý điền 2 (chức năng xoá thông tin nhân viên) trên
màn hình chương trình hiển thị.
•Hậu điều kiện:
- Nếu thành công: Dữ liệu được xoá khỏi chương trình.
- Nếu thất bại: Chương trình không có gì thay đổi.
3.3. Chức năng cập nhật thông tin nhân viên:
Mô tả: Chương trình cho phép người quản lý cập nhật thông tin nhân viên bằng
CMT/CCCD nhân viên.
Hình 4. Biểu đồ hoạt động của chức năng cập nhật thông tin nhân viên Luồng
sự kiện:
*Luồng cơ bản
lOMoARcPSD| 47205411
1
- Người quản lý gửi yêu cầu cập nhật thông tin nhân viên tới chương trình.
- Chương trình hiển thị cập nhật thông tin nhân viên với trường CMT/CCCD nhân viên-
Người quản lý điền CMT/CCCD nhân viên cần cập nhật.
- Chương trình kiểm tra CMT/CCCD nhân viên người quản lý yêu cầu chỉnh sửa.-
CMT/CCCD hợp lệ, người quản lý điền các thông tin nhân viên cần chỉnh sửa: tên sinh
viên, giới tính, ngày tháng năm sinh, quê quán, CMT/CCCD.
- Người quản lý cập nhật thông tin nhân viên thành công.
*Luồng thay thế
- Nếu trong luồng cơ bản, người quản lý nhập sai CMT/CCCD nhân viên, chương trình
sẽbáo lỗi là “CMT/CCCD không tồn tại”.
•Tiền điều kiện: Người quản lý cần điền 3 (chức năng cập nhật thông tin nhân viên) trên
màn hình chương trình hiển thị.
•Hậu điều kiện:
- Nếu thành công: Dữ liệu được cập nhật.- Nếu thất bại: Chương trình không có gì thay
đổi
3.4. Chức năng tìm kiếm thông tin nhân viên:
Mô tả: Chương trình cho phép người quản lý tìm kiếm thông tin nhân viên bằng
CMT/CCCD nhân viên.
lOMoARcPSD| 47205411
1
Hình 5. Biểu đồ hoạt động của chức năng tìm kiếm thông tin nhân viên bằng
CMT/CCCD
Luồng sự kiện:
*Luồng cơ bản
- Người quản lý gửi yêu cầu tìm kiếm thông tin nhân viên tới chương trình.
- Chương trình hiển thị tìm kiếm thông tin nhân viên với CMT/CCCD nhân viên.
- Người quản lý điền CMT/CCCD nhân viên cần tìm.
- Chương trình kiểm tra CMT/CCCD nhân viên mà người quản lý cần tìm.
- CMT/CCCD hợp lệ, chương trình hiển thị thông tin nhân viên đúng theo yêu cầu.
*Luồng thay thế
- Nếu trong luồng cơ bản, người quản lý nhập sai CMT/CCCD nhân viên, chương trình
sẽbáo lỗi là “CMT/CCCD nhân viên không tồn tại”.
•Tiền điều kiện: Người quản lý điền 4 (chức năng tìm kiếm thông tin nhân viên)
trên màn hình chương trình hiển thị.
•Hậu điều kiện:
lOMoARcPSD| 47205411
1
- Nếu thành công: Dữ liệu hiển thị ra màn hình.
- Nếu thất bại: Chương trình không có gì thay đổi.
Hình 6. Biểu đồ hoạt động của chức năng hiển thị danh sách thông tin nhân viên
Luồng sự kiện:
*Luồng cơ bản:
-Người quản lý gửi yêu cầu hiển thị danh sách nhân viên tới chương trình bằng cách nhập
số “5” từ menu.
-Chương trình sẽ gọi hàm showList() để thực hiện việc hiển thị danh sách nhân viên.
Hàm showList() mở file “danhsachnhanvien.txt” và đọc từng dòng.
-Mỗi dòng đại diện cho thông tin của một nhân viên, được phân tách bằng dấu phẩy (,).
-Chương trình sẽ in ra thông tin của mỗi nhân viên theo định dạng đã cho.
-Quá trình này tiếp tục cho đến khi không còn dòng nào để đọc trong file.
-Cuối cùng, file được đóng lại.
*Luồng thay thế:
- Nếu trong luồng cơ bản, file “danhsachnhanvien.txt” không tồn tại hoặc không thể mở,
chương trình sẽ báo lỗi là “Không thể mở file”.
lOMoARcPSD| 47205411
1
•Tiền điều kiện: Người quản lý điền 5 (chức năng hiển thị danh sách nhân viên) trên màn
hình chương trình hiển thị.
•Hậu điều kiện:
- Nếu thành công: Danh sách nhân viên hiển thị ra màn hình.
- Nếu thất bại: Chương trình không có gì thay đổi và sẽ quay lại menu chính
Hình 7. Biểu đồ chương trình kết thúc và thoát chương trình
Luồng sự kiện:
*Luồng cơ bản:
- Hiển thị menu cho người dùng.
- Người dùng nhập lựa chọn của mình.
- Dựa trên lựa chọn của người dùng, chương trình thực hiện một trong các hàm sau:
addstaff(), deletestaff(), updatestaff(), findstaff(), showList().
- Nếu người dùng nhập “0”, chương trình sẽ kết thúc với thông báo “Exiting the program.
Goodbye!” và thoát khỏi vòng lặp.
*Luồng thay thế: Nếu người dùng nhập một lựa chọn không hợp lệ (không phải là số từ 0
đến 5), chương trình sẽ in ra thông báo “Invalid choice. Please enter a number between 0
and 5.” và quay lại bước 1 của luồng cơ bản.
lOMoARcPSD| 47205411
1
Tiền điều kiện: Chương trình được khởi động và hàm main() được gọi.
luồng cơ bản.
Hậu điều kiện: Chương trình kết thúc hoặc tiếp tục thực hiện vòng lặp, tùy thuộc vào
lựachọn của người dùng
CHƯƠNG II: CÀI ĐẶT CHƯƠNG TRÌNH
1. Mô tả cấu trúc của chương trình
Chương trình xây dựng chương trình quản lý khách sạn Mường Thanh sử dụng file
danhsachnhanvien.txt để có thể lưu được các thông tin của nhân viên vào file, tránh
trường hợp khi thoát chương trình thì sẽ mất hết dữ liệu của nhân viên vừa nhập. Thông
tin nhân viên sẽ được lưu trữ trong file. Có thể xóa, cập nhập, tìm kiếm thông tin nhân
viên trong file danhsachnhanvien.txt bằng chương trình. Nhóm có sử dụng thư viện data
để chứa các hàm thêm thông tin nhân viên, xóa nhân viên, cập nhật thông tin nhân viên,
tìm kiếm nhân viên, hiển thị danh sách nhân viên.
2. Mô tả chi tiết các hàm chính của chương trình Hàm thêm
nhân viên:
def addstaff(): #1
hoTen=input("Nhập họ và tên của nhân viên: ")
while (hoTen==""):
hoTen=input("Thông tin không được bỏ trống! Nhập họ và tên của nhân viên: ")
namSinh=input("Nhập năm sinh: ") while (namSinh==""):
namSinh=input("Thông tin không được bỏ trống! Nhập năm sinh: ")
quocTich=input("Nhập quốc tịch: ") while (quocTich==""):
quocTich=input("Thông tin không được bỏ trống! quốc tịch: ") cmt=input("Nhập
số chứng minh nhân dân hoặc căn cước công dân: ") while (cmt==""):
cmt=input("Thông tin không được bỏ trống! Nhập số chứng minh nhân dân hoặc căn
cước công dân:")
lOMoARcPSD| 47205411
1
soDienThoai=input("Nhập số điện thoại liên hệ: ") while (soDienThoai==""):
soDienThoai=input("Thông tin không được bỏ trống! Nhập số điện thoại liên hệ: ")
email=input("Nhập Email: ") while (email==""):
email=input("Thông tin không được bỏ trống! Nhập Email: ")
print("")
print(' Đã nhập thành công thông tin nhân viên!')
print("")
file = open("E:/danhsachnhanvien.txt",mode="a",encoding="utf-8")
file.write(hoTen+","+namSinh+","+quocTich+","+cmt+","+soDienThoai+","+email+"\
n")
file.close()
return
Mô tả chi tiết: Nhập thông tin nhân viên vào, sau đó kiểm tra thông tin sẽ kiểm tra. Nếu
như thông tin bị bỏ trống sẽ phải nhập lại thông tin. Sau khi nhập xong thông tin nhân
viên thì chương trình sẽ hiện dòng chữ “Đã nhập thành công thông tin nhân viên” để
thông báo rằng thông tin nhân viên đã được nhập thành công. Tiếp theo đó sẽ mở file
danhsachnhanvien.txt và thông tin nhân viên sẽ được lưu vào file với mode:a(Mở tệp để
ghi dữ liệu vào tệp; nếu tệp chưa tồn tại thì sẽ tạo tệp, nếu tệp đã tồn tại thì sẽ ghi dữ liệu
vào cuối tệp (ghi nối đuôi)). Sau khi lưu file thì sẽ đóng file, tránh phát sinh lỗi.
Hàm xóa nhân viên:
def deletestaff(): #2
list=[] k=0
delete = input("Nhập CMT/CCCD nhân viên cần xóa:") file =
open("E:/danhsachnhanvien.txt",mode="r",encoding="utf-8") read
= file.readline() while read!="":
lOMoARcPSD| 47205411
1
read_new = read.split(",")
list.append(read_new)
read = file.readline()
file.close() for ds in list:
if (delete+"'" == ds[3]):
k=1
list.remove(ds)
roomList.append(ds[6])
print("")
print(' Đã xóa thành công thông tin nhân viên!')
print("") if (k==0):
print("CMT/CCCD của nhân viên không tồn tại.")
file = open("E:/danhsachnhanvien.txt",mode="w",encoding="utf-8")
for row in range (len(list)):
file.write(list[row][0]+","+list[row][1]+","+list[row][2]+","+list[row]
[3]+","+list[row][4]+","+list[row][5]+"\n")
file.close() list.clear()
Mô tả chi tiết: Đầu tiên sẽ tạo ra một danh sách trống. Tiếp theo đó là nhập chứng minh
thư hoặc căn cước công dân của nhân viên cần xóa. Sau đó mở file danhsachnhanvien.txt
với mode:r (đọc dữ liệu trong file). Dùng vòng lặp “While” để thêm thông tin của từng
nhân viên vào danh sách trống vừa mới tạo ra cho tới khi thông tin trống sẽ dừng vòng lặp
và danh sách này sẽ phục vụ cho câu lệnh cho câu lệnh xóa nhân viên, đóng file. Sau đó
sử dụng vòng lặp “for” để lấy thông tin của từng nhân viên có trong danh sách. Sau đó sử
dụng lệnh “if” để so sánh giữa CMT/CCCD của nhân viên cần xóa và CMT/CCCD của
nhân viên có trong danh sách. Nếu đúng thì sẽ xóa thông tin của nhân viên và in ra dòng
chữ “ Đã xóa thông tin nhân viên thành công!” , nếu không đúng thì sẽ thông báo
lOMoARcPSD| 47205411
1
“CMT/CCCD của nhân viên không tồn tại” và quay trở về Menu. Sau đó mở file
danhsachnhanvien.txt với mode: w (Mở tệp để ghi dữ liệu vào tệp; nếu tệp chưa tồn tại thì
sẽ tạo tệp mới, nếu tệp đã tồn tại thì tất cả dữ liệu cũ trong tệp sẽ bị xóa), ghi thông tin
nhân viên trong danh sách vào file danhsachnhanvien.txt và đóng file. Cuối cùng sẽ xóa
hết các phần tử trong danh sách đã được tạo ban đầu bằng hàm clear().
Hàm cập nhật thông tin nhân viên:
def updatestaff(): #3
list=[] k=0
update = input("Nhập CMT/CCCD nhân viên cần thay đổi/ cập nhật thông tin:")
file = open("E:/danhsachnhanvien.txt",mode="r",encoding="utf-8") read =
file.readline() while read!="":
read_new = read.split(",")
list.append(read_new) read
= file.readline() file.close()
for ds in range (len(list)): if
(list[ds][3] == update+"'"):
k=1
print("-----Menu----- \n0. Sửa họ tên \n1. Sửa năm sinh \n2. Sửa quốc tịch \n3. Sửa
Chứng minh thư \n4. Sửa số điện thoại \n5. Sửa email ") n=int(input("Lựa chọn
của bạn là: ")) a=input("Nhập thông tin cần thay đổi: ") list[ds][n] = a
print("")
print(' Đã cập nhật thành công thông tin nhân viên!')
print("") if (k==0):
print(' CMT/CCCD này không tồn tại! ')
lOMoARcPSD| 47205411
1
file = open("E:/danhsachnhanvien.txt",mode="w",encoding="utf-8")
for row in range (len(list)):
file.write(list[row][0]+","+list[row][1]+","+list[row][2]+","+list[row]
[3]+","+list[row][4]+","+list[row][5])
file.close()
list.clear()
return
Mô tả chi tiết: Đầu tiên sẽ tạo ra một danh sách trống. Tiếp theo đó là nhập chứng minh
thư hoặc căn cước công dân của nhân viên cần cập nhật thông tin. Sau đó mở file
danhsachnhanvien.txt với mode:r (đọc dữ liệu trong file).Dùng vòng lặp “While” để thêm
thông tin của từng nhân viên vào danh sách trống vừa mới tạo ra cho tới khi thông tin
trống sẽ dừng vòng lặp và danh sách này sẽ phục vụ cho câu lệnh cập nhật thông tin nhân
viên, đóng file. Sau đó sử dụng vòng lặp “for” để lấy thông tin của từng nhân viên
trong danh sách.Sử dụng lệnh “if” để so sánh giữa CMT/CCCD của nhân viên cần cập
nhật/ thay đổi thông tin và CMT/CCCD của nhân viên có trong danh sách. Nếu đúng, sau
đó hiện ra menu lựa chọn thông tin cần thay đổi với số thứ tự từ 0. Sửa họ tên, 1. Sửa năm
sinh, 2. Sửa quốc tịch, 3. Sửa Chứng minh thư, 4. Sửa số điện thoại, 5. Sửa email. Nhập
lựa chọn và nhập thông tin cần thay đổi. Sau khi thông tin được thay đổi thành công thì sẽ
hiện ra một dòng thông báo “ Đã cập nhật thành công thông tin của nhân viên!”. Nếu như
sai sẽ hiện ra “CMT/CCCD không tồn tại!”. Tiếp theo mở file danhsachnhanvien.txt với
mode:w, ghi thông tin nhân viên từ danh sách đã được tạo ở đầu rồi đóng file, sau đó đóng
file. Sau khi lưu thông tin nhân viên xong sẽ xóa toàn bộ các phần tử trong danh sách đã
được tạo ban đầu.
Hàm tìm kiếm thông tin nhân viên:
def findstaff(): #4
k=0
file2 = open("E:/danhsachnhanvien.txt",mode="r",encoding="utf-8")
read = file2.readline()
lOMoARcPSD| 47205411
1
n=input("Nhập số CMT/CCCD của người cần tìm:")
while read!="":
read_new = read.split(",")
for i in range (len(read_new)):
if (n+"'"==read_new[3]):
k=1
print("Ho va ten".center(25),end=' ')
print("Nam sinh".center(10),end=' ')
print("Quoc tich".center(10),end=' ')
print("CMT/CCCD".center(13),end=' ')
print("So dien thoai".center(11),end=' ')
print("Email".center(15),end=' ') print('\n')
print(read_new[0].center(25),end=' ')
print(read_new[1].center(10),end=' ')
print(read_new[2].center(10),end=' ')
print(read_new[3].center(13).strip("'"),end=' ')
print(read_new[4].center(11).strip("'"),end=' ')
print(read_new[5].center(15),end=' ') break
read = file2.readline() if (k==0):
print(' Không có nhân viên này trong hệ thống!')
file2.close() return
Mô tả chi tiết: Nhập chứng minh thư hoặc căn cước công dân của nhân viên tìm kiếm
thông tin. Sau đó mở file danhsachnhanvien.txt với mode:r (đọc dữ liệu trong file), Dùng
vòng lặp “While” để hỗ trợ cho vòng lặp “for” so sánh giữa CMT/CCCD của nhân viên
trong file và CMT/CCCD của nhân viên cần tìm kiếm. Nếu đúng thì sẽ in ra thông tin
lOMoARcPSD| 47205411
1
của nhân viên. Nếu không đúng thì in ra thông báo “Không có nhân viên trong hệ
thông!”. Sau đó đóng file.
Hàm hiển thị danh sách nhân viên:
def showList():#5
file2 = open("E:/danhsachnhanvien.txt",mode="r",encoding="utf-8")
read = file2.readline() while read!="":
read_new = read.split(",")
print(read_new[0].center(25),end=' ')
print(read_new[1].center(10),end=' ')
print(read_new[2].center(10),end=' ')
print(read_new[3].center(13).strip("'"),end=' ')
print(read_new[4].center(11).strip("'"),end=' ')
print(read_new[5].center(15),end=' ') print('\n')
read = file2.readline() file2.close() return
def main():
while True:
print("\n----- Menu -----")
print("1. Thêm Staff")
print("2. Xóa Staff")
print("3. Cập nhật Staff")
print("4. Tìm kiếm Staff")
print("5. Hiện danh sách Staff ")
print("0. Thoát")
choice = input("Enter your choice (0-5): ")
lOMoARcPSD| 47205411
1
if choice == "1":
addstaff()
elif choice == "2":
deletestaff()
elif choice == "3":
updatestaff() elif
choice == "4":
findstaff() elif
choice == "5":
showList()
elif choice == "0":
print("Exiting the program. Goodbye!")
break else:
print("Invalid choice. Please enter a number between 0 and 5.")
if __name__ == "__main__":
main()
Mô tả chi tiết:Mở file danhsachnhanvien.txt với mode:r (đọc dữ liệu trong file), Dùng
vòng lặp “While” để in thông tin của từng nhân viên cho tới khi hết danh sách. Sau đó
đóng file.

Preview text:

lOMoAR cPSD| 47205411 1
TRƯỜNG ĐẠI HỌC THƯƠNG MẠI
KHOA HTTT KINH TẾ & TMĐT
BỘ MÔN: LẬP TRÌNH PYTHON
BÀI TẬP LỚN/DỰ ÁN
HỌC PHẦN: Lập trình với python
MÃ LỚP HỌC PHẦN: Lớp: 231_INFO451_02
GVGD: Đinh Thị Thu Hà Nhóm: 16
MÃ SỐ ĐỀ/TÊN ĐỀ TÀI: Xây dựng chương trình quản lý nhân
sự của công ty xây dựng COTECCONS Điểm bài tập/ SỐ Lớp dự án Điểm Mã số Ghi BÁO Họ và tên hành Chấm Chấ kết SV/HV nộp chú DANH chính m 2 luận 1 Đỗ Vương Trọng 23D190141 K59S3 Vũ Thị Yến Thảo 23D190136 K59S3 Vũ Thị Hương Giang 23D190111 K59S3 Trần Phan Yến Nhi 23D190175 K59S4 An Hoàng Duy 23D190 K59S4
Hà Nội, ngày … tháng … năm 20…
Cán bộ chấm 1 Cán bộ chấm 2
(Ký & ghi rõ họ tên) (Ký & ghi rõ họ tên) lOMoAR cPSD| 47205411 1
HỌC KỲ 1 NĂM HỌC 2023-2024 MỤC LỤC LỜI CẢM ƠN LỜI MỞ ĐẦU BÀI TOÁN ĐẶT RA
CHƯƠNG I: PHÂN TÍCH BÀI TOÁN
1. Phân tích bài toán
1.1. Nhập thông tin nhân viên
1.2. Xoá thông tin nhân viên
1.3. Cập nhật thông tin nhân viên
1.4. Tìm kiếm thông tin nhân viên
1.5. Hiển thị danh sách thông tin nhân viên 1.6. Thoát chương trình
2. Sơ đồ chức năng của chương trình
3. Đặc tả các chức năng chính của chương trình
CHƯƠNG II: CÀI ĐẶT CHƯƠNG TRÌNH
1. Mô tả cấu trúc của chương trình
2. Mô tả chi tiêt các hàm chính của chương trình KẾT LUẬN
TÀI LIỆU THAM KHẢO LỜI CẢM ƠN
Lời đầu tiên, nhóm xin gửi lời cảm ơn chân thành tới cô. Trong quá trình học tập và thực
hiện đề tài này, chúng em đã nhận được sự quan tâm giúp đỡ, hướng dẫn tận tình, tâm huyết
của cô. Nhờ có sự giúp đỡ của cô, chúng em đã vượt qua những khó khăn ban đầu khi bắt
đầu học về lập trình. Từ cách sử dụng Python cho đến các kỹ thuật lập trình phức tạp hơn,
cô đã cung cấp cho em những kiến thức chi tiết và hướng dẫn cần thiết để em hiểu rõ hơn
về chức năng và cách hoạt động của Python. Em hy vọng sẽ có thêm nhiều cơ hội được học
hỏi và nâng cao kinh nghiệm từ cô trong tương lai.
Để hoàn thành được đề tài này, nhóm chúng em đã cùng nhau nghiên cứu, thảo luận, áp
dụng những kiến thức được học trên lớp cùng với các nguồn tài liệu trên Internet và cả lOMoAR cPSD| 47205411 1
những trải nghiệm của bản thân. Chúng em rất mong sẽ nhận được những lời nhận xét, góp
ý từ thầy cô và bạn đọc để đề tài này có thể hoàn thiện hơn nữa.
Một lần nữa, em cảm ơn cô rất nhiều.
Nhóm sinh viên thực hiện. LỜI MỞ ĐẦU
Việc xây dựng một hệ thống quản lý nhân viên hiệu quả là một phần quan trọng trong việc
định hình và phát triển sự thành công của mọi doanh nghiệp, đặc biệt là trong ngữ cảnh
đầy thách thức và cơ hội của thị trường xây dựng ngày nay. Công ty chúng tôi, với tên gọi
là Coteconn, không chỉ là một đơn vị kinh doanh mà còn là một cộng đồng người làm
việc đồng lòng và hỗ trợ nhau. Trong tinh thần đó, chúng tôi quyết định tập trung vào việc
xây dựng một chương trình quản lý nhân viên đồng bộ, chuyên nghiệp và hiệu quả.
Chương trình của chúng tôi sẽ không chỉ giúp lưu trữ thông tin chi tiết về từng nhân viên
mà còn tập trung vào theo dõi tiến trình công việc, đánh giá hiệu suất và cung cấp các
công cụ báo cáo để quản lý có thể đưa ra quyết định dựa trên dữ liệu chính xác và đầy đủ.
Chúng tôi tin rằng việc xây dựng chương trình quản lý nhân viên này không chỉ là sự tích
hợp công nghệ vào quy trình làm việc mà còn là việc xây dựng cộng đồng làm việc tích
cực và đồng thuận. Điều này sẽ giúp chúng tôi tối ưu hóa tài nguyên nhân sự, cải thiện sự
hiệu quả và hỗ trợ sự phát triển bền vững của công ty.
Chúng tôi hứa sẽ nỗ lực hết mình trong quá trình xây dựng và triển khai chương trình
quản lý nhân viên này, với hy vọng rằng nó sẽ là một công cụ hữu ích, góp phần quan
trọng vào sự phồn thịnh và thành công của công ty COTECCONS trong thời gian tới. BÀI TOÁN ĐẶT RA
Chương trình quản lý nhân viên của một công ty cần đáp ứng một số nhu cầu của người
dùng về các chức năng cơ bản, hỗ trợ cho các hoạt động nghiệp vụ của công ty như: thêm,
xoá bỏ, cập nhật thông tin, tìm kiếm thông tin nhân viên trong việc quản lý nhân viên, quản
lý nhân viên, các dịch vụ.
Quản lý nhân viên là một phần quan trọng trong việc tổ chức và điều hành hoạt động của
công ty. Đối mặt với sự phức tạp của môi trường kinh doanh hiện đại, một chương trình
quản lý nhân viên hiệu quả không chỉ giúp giảm bớt gánh nặng công việc của quản lý mà lOMoAR cPSD| 47205411 1
còn tạo điều kiện thuận lợi cho sự tương tác và hợp tác giữa các thành viên trong tổ chức.
Quản lý thông tin nhân viên là bước quan trọng để đảm bảo rằng mọi người đều được đối
xử công bằng và có cơ hội phát triển. Việc lưu trữ thông tin cá nhân và tiến độ công việc
trong hệ thống không chỉ giúp quản lý dễ dàng theo dõi hiệu suất cá nhân mà còn tạo ra cơ
sở dữ liệu chung cho toàn bộ tổ chức.
Thông qua việc gán quyền hạn và vai trò cho từng nhóm nhân viên, chương trình giúp bảo
đảm tính an toàn và bảo mật thông tin. Quản lý có thể chủ động kiểm soát quyền truy cập,
giúp ngăn chặn việc truy cập trái phép và đồng thời tối ưu hóa quy trình làm việc.
CHƯƠNG I: PHÂN TÍCH BÀI TOÁN
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:
1.1. Nhập thông tin nhân viên:
Người quản lý điền các thông tin cơ bản: Họ và tên nhân viên, mã nhân viên, giới
tính, quê quán, email…để nhập thông tin nhân viên.
1.2. Xoá thông tin nhân viên:
Cho phép người quản lý xoá thông tin nhân viên đã thêm trước đó.
1.3. Cập nhật thông tin nhân viên:
Cho phép người quản lý cập nhật thông tin nhân viên đã thêm trước đó khi cần chỉnh sửa.
1.4. Tìm kiếm thông tin nhân viên:
Người quản lý có thể tìm kiếm thông tin nhân viên theo CMT/CCCD nhân viên
1.5. Hiển thị danh sách thông tin nhân viên
Chương trình sẽ hiển thị danh sách nhân viên có trong công ty 1.6. Thoát chương trình
Kết thúc và thoát chương trình lOMoAR cPSD| 47205411 1
2. Sơ đồ chức năng của chương trình: Đây là sơ đồ chức năng của chương trình quản lí
nhân viên gồm có: thêm thông tin nhân viên, xoá thông tin nhân viên, thay đổi và cập
nhật thông tin nhân viên, tìm kiếm thông tin nhân viên, hiển thị danh sách thông tin
nhân viên, thoát chương trình.
3. Đặc tả các chức năng chính của chương trình:
3.1. Chức năng nhập thông tin nhân viên:
Mô tả: Chương trình cho phép người quản lý nhập thông tin nhân viên: Họ và tên, Ngày
tháng năm sinh, quốc tịch,… CMT/CCCD là duy nhất lOMoAR cPSD| 47205411 1
Hình 2. biểu đồ hoạt động của nhập thông tin nhân viên Luồng sự kiện: *Luồng cơ bản
- Người quản lý gửi yêu cầu nhập thông tin nhân viên tới chương trình.
- Chương trình hiển thị nhập trường CMT/CCCD nhân viên - Người quản lý điền CMT/CCCD nhân viên.
- Chương trình kiểm tra CMT/CCCD nhân viên người quản lý vừa nhập.
- ID hợp lệ, người quản lý điền đầy đủ các thông tin còn lại: Họ và tên, giới tính,ngày
tháng năm sinh, quê quán, CCCD/CMT.
- Người quản lý thêm mới thông tin nhân viên thành công. *Luồng thay thế
- Nếu trong luồng cơ bản, người quản lý nhập ID trùng với ID của nhân viêntrước đó,
chương trình sẽ kiểm tra lại thông tin. lOMoAR cPSD| 47205411 1
Người quản lý cần điền lại CMT/CCCD nhân viên đúng yêu cầu.
•Tiền điều kiện: Người quản lý điền 1 (chức năng nhập thông tin nhân viên) trên
màn hình chương trình hiển thị. •Hậu điều kiện:
- Nếu thành công: Dữ liệu được lưu vào chương trình.
- Nếu thất bại: Chương trình không có gì thay đổi.
3.2. Chức năng xoá thông tin nhân viên:
Mô tả: Chương trình cho phép người quản lý xoá thông tin nhân viên bằng CMT/CCCD nhân viên.
Hình 3. Biểu đồ hoạt động của chức năng xóa thông tin nhân viên Luồng sự kiện: *Luồng cơ bản
- Người quản lý gửi yêu cầu xoá thông tin nhân viên tới chương trình.
- Chương trình hiển thị xoá thông tin nhân viên với CMT/CCCD nhân viên.
- Người quản lý điền CMT/CCCD nhân viên cần xoá. lOMoAR cPSD| 47205411 1
- Chương trình kiểm tra CMT/CCCD nhân viên mà người quản lý yêu cầu xoá.
- ID hợp lệ, người quản lý xoá thông tin nhân viên thành công. *Luồng thay thế
- Nếu trong luồng cơ bản, người quản lý nhập sai CMT/CCCD nhân viên, chương trình
sẽbáo lỗi “thông tin nhân viên còn tồn tại”.
•Tiền điều kiện: Người quản lý điền 2 (chức năng xoá thông tin nhân viên) trên
màn hình chương trình hiển thị. •Hậu điều kiện:
- Nếu thành công: Dữ liệu được xoá khỏi chương trình.
- Nếu thất bại: Chương trình không có gì thay đổi.
3.3. Chức năng cập nhật thông tin nhân viên:
Mô tả: Chương trình cho phép người quản lý cập nhật thông tin nhân viên bằng CMT/CCCD nhân viên.
Hình 4. Biểu đồ hoạt động của chức năng cập nhật thông tin nhân viên Luồng sự kiện: *Luồng cơ bản lOMoAR cPSD| 47205411 1
- Người quản lý gửi yêu cầu cập nhật thông tin nhân viên tới chương trình.
- Chương trình hiển thị cập nhật thông tin nhân viên với trường CMT/CCCD nhân viên-
Người quản lý điền CMT/CCCD nhân viên cần cập nhật.
- Chương trình kiểm tra CMT/CCCD nhân viên người quản lý yêu cầu chỉnh sửa.-
CMT/CCCD hợp lệ, người quản lý điền các thông tin nhân viên cần chỉnh sửa: tên sinh
viên, giới tính, ngày tháng năm sinh, quê quán, CMT/CCCD.
- Người quản lý cập nhật thông tin nhân viên thành công. *Luồng thay thế
- Nếu trong luồng cơ bản, người quản lý nhập sai CMT/CCCD nhân viên, chương trình
sẽbáo lỗi là “CMT/CCCD không tồn tại”.
•Tiền điều kiện: Người quản lý cần điền 3 (chức năng cập nhật thông tin nhân viên) trên
màn hình chương trình hiển thị. •Hậu điều kiện:
- Nếu thành công: Dữ liệu được cập nhật.- Nếu thất bại: Chương trình không có gì thay đổi
3.4. Chức năng tìm kiếm thông tin nhân viên:
Mô tả: Chương trình cho phép người quản lý tìm kiếm thông tin nhân viên bằng CMT/CCCD nhân viên. lOMoAR cPSD| 47205411 1
Hình 5. Biểu đồ hoạt động của chức năng tìm kiếm thông tin nhân viên bằng CMT/CCCD Luồng sự kiện: *Luồng cơ bản
- Người quản lý gửi yêu cầu tìm kiếm thông tin nhân viên tới chương trình.
- Chương trình hiển thị tìm kiếm thông tin nhân viên với CMT/CCCD nhân viên.
- Người quản lý điền CMT/CCCD nhân viên cần tìm.
- Chương trình kiểm tra CMT/CCCD nhân viên mà người quản lý cần tìm.
- CMT/CCCD hợp lệ, chương trình hiển thị thông tin nhân viên đúng theo yêu cầu. *Luồng thay thế
- Nếu trong luồng cơ bản, người quản lý nhập sai CMT/CCCD nhân viên, chương trình
sẽbáo lỗi là “CMT/CCCD nhân viên không tồn tại”.
•Tiền điều kiện: Người quản lý điền 4 (chức năng tìm kiếm thông tin nhân viên)
trên màn hình chương trình hiển thị. •Hậu điều kiện: lOMoAR cPSD| 47205411 1
- Nếu thành công: Dữ liệu hiển thị ra màn hình.
- Nếu thất bại: Chương trình không có gì thay đổi.
Hình 6. Biểu đồ hoạt động của chức năng hiển thị danh sách thông tin nhân viên Luồng sự kiện: *Luồng cơ bản:
-Người quản lý gửi yêu cầu hiển thị danh sách nhân viên tới chương trình bằng cách nhập số “5” từ menu.
-Chương trình sẽ gọi hàm showList() để thực hiện việc hiển thị danh sách nhân viên.
Hàm showList() mở file “danhsachnhanvien.txt” và đọc từng dòng.
-Mỗi dòng đại diện cho thông tin của một nhân viên, được phân tách bằng dấu phẩy (,).
-Chương trình sẽ in ra thông tin của mỗi nhân viên theo định dạng đã cho.
-Quá trình này tiếp tục cho đến khi không còn dòng nào để đọc trong file.
-Cuối cùng, file được đóng lại. *Luồng thay thế:
- Nếu trong luồng cơ bản, file “danhsachnhanvien.txt” không tồn tại hoặc không thể mở,
chương trình sẽ báo lỗi là “Không thể mở file”. lOMoAR cPSD| 47205411 1
•Tiền điều kiện: Người quản lý điền 5 (chức năng hiển thị danh sách nhân viên) trên màn
hình chương trình hiển thị. •Hậu điều kiện:
- Nếu thành công: Danh sách nhân viên hiển thị ra màn hình.
- Nếu thất bại: Chương trình không có gì thay đổi và sẽ quay lại menu chính
Hình 7. Biểu đồ chương trình kết thúc và thoát chương trình Luồng sự kiện: *Luồng cơ bản:
- Hiển thị menu cho người dùng.
- Người dùng nhập lựa chọn của mình.
- Dựa trên lựa chọn của người dùng, chương trình thực hiện một trong các hàm sau:
addstaff(), deletestaff(), updatestaff(), findstaff(), showList().
- Nếu người dùng nhập “0”, chương trình sẽ kết thúc với thông báo “Exiting the program.
Goodbye!” và thoát khỏi vòng lặp.
*Luồng thay thế: Nếu người dùng nhập một lựa chọn không hợp lệ (không phải là số từ 0
đến 5), chương trình sẽ in ra thông báo “Invalid choice. Please enter a number between 0
and 5.” và quay lại bước 1 của luồng cơ bản. lOMoAR cPSD| 47205411 1
• Tiền điều kiện: Chương trình được khởi động và hàm main() được gọi. luồng cơ bản.
• Hậu điều kiện: Chương trình kết thúc hoặc tiếp tục thực hiện vòng lặp, tùy thuộc vào
lựachọn của người dùng
CHƯƠNG II: CÀI ĐẶT CHƯƠNG TRÌNH
1. Mô tả cấu trúc của chương trình
Chương trình xây dựng chương trình quản lý khách sạn Mường Thanh sử dụng file
danhsachnhanvien.txt để có thể lưu được các thông tin của nhân viên vào file, tránh
trường hợp khi thoát chương trình thì sẽ mất hết dữ liệu của nhân viên vừa nhập. Thông
tin nhân viên sẽ được lưu trữ trong file. Có thể xóa, cập nhập, tìm kiếm thông tin nhân
viên trong file danhsachnhanvien.txt bằng chương trình. Nhóm có sử dụng thư viện data
để chứa các hàm thêm thông tin nhân viên, xóa nhân viên, cập nhật thông tin nhân viên,
tìm kiếm nhân viên, hiển thị danh sách nhân viên.
2. Mô tả chi tiết các hàm chính của chương trình Hàm thêm nhân viên: def addstaff(): #1
hoTen=input("Nhập họ và tên của nhân viên: ") while (hoTen==""):
hoTen=input("Thông tin không được bỏ trống! Nhập họ và tên của nhân viên: ")
namSinh=input("Nhập năm sinh: ") while (namSinh==""):
namSinh=input("Thông tin không được bỏ trống! Nhập năm sinh: ")
quocTich=input("Nhập quốc tịch: ") while (quocTich==""):
quocTich=input("Thông tin không được bỏ trống! quốc tịch: ") cmt=input("Nhập
số chứng minh nhân dân hoặc căn cước công dân: ") while (cmt==""):
cmt=input("Thông tin không được bỏ trống! Nhập số chứng minh nhân dân hoặc căn cước công dân:") lOMoAR cPSD| 47205411 1
soDienThoai=input("Nhập số điện thoại liên hệ: ") while (soDienThoai==""):
soDienThoai=input("Thông tin không được bỏ trống! Nhập số điện thoại liên hệ: ")
email=input("Nhập Email: ") while (email==""):
email=input("Thông tin không được bỏ trống! Nhập Email: ") print("")
print(' Đã nhập thành công thông tin nhân viên!') print("")
file = open("E:/danhsachnhanvien.txt",mode="a",encoding="utf-8")
file.write(hoTen+","+namSinh+","+quocTich+","+cmt+","+soDienThoai+","+email+"\ n") file.close() return
Mô tả chi tiết: Nhập thông tin nhân viên vào, sau đó kiểm tra thông tin sẽ kiểm tra. Nếu
như thông tin bị bỏ trống sẽ phải nhập lại thông tin. Sau khi nhập xong thông tin nhân
viên thì chương trình sẽ hiện dòng chữ “Đã nhập thành công thông tin nhân viên” để
thông báo rằng thông tin nhân viên đã được nhập thành công. Tiếp theo đó sẽ mở file
danhsachnhanvien.txt và thông tin nhân viên sẽ được lưu vào file với mode:a(Mở tệp để
ghi dữ liệu vào tệp; nếu tệp chưa tồn tại thì sẽ tạo tệp, nếu tệp đã tồn tại thì sẽ ghi dữ liệu
vào cuối tệp (ghi nối đuôi)). Sau khi lưu file thì sẽ đóng file, tránh phát sinh lỗi.
Hàm xóa nhân viên: def deletestaff(): #2 list=[] k=0
delete = input("Nhập CMT/CCCD nhân viên cần xóa:") file =
open("E:/danhsachnhanvien.txt",mode="r",encoding="utf-8") read
= file.readline() while read!="": lOMoAR cPSD| 47205411 1 read_new = read.split(",") list.append(read_new) read = file.readline() file.close() for ds in list: if (delete+"'" == ds[3]): k=1 list.remove(ds) roomList.append(ds[6]) print("")
print(' Đã xóa thành công thông tin nhân viên!') print("") if (k==0):
print("CMT/CCCD của nhân viên không tồn tại.")
file = open("E:/danhsachnhanvien.txt",mode="w",encoding="utf-8") for row in range (len(list)):
file.write(list[row][0]+","+list[row][1]+","+list[row][2]+","+list[row]
[3]+","+list[row][4]+","+list[row][5]+"\n") file.close() list.clear()
Mô tả chi tiết: Đầu tiên sẽ tạo ra một danh sách trống. Tiếp theo đó là nhập chứng minh
thư hoặc căn cước công dân của nhân viên cần xóa. Sau đó mở file danhsachnhanvien.txt
với mode:r (đọc dữ liệu trong file). Dùng vòng lặp “While” để thêm thông tin của từng
nhân viên vào danh sách trống vừa mới tạo ra cho tới khi thông tin trống sẽ dừng vòng lặp
và danh sách này sẽ phục vụ cho câu lệnh cho câu lệnh xóa nhân viên, đóng file. Sau đó
sử dụng vòng lặp “for” để lấy thông tin của từng nhân viên có trong danh sách. Sau đó sử
dụng lệnh “if” để so sánh giữa CMT/CCCD của nhân viên cần xóa và CMT/CCCD của
nhân viên có trong danh sách. Nếu đúng thì sẽ xóa thông tin của nhân viên và in ra dòng
chữ “ Đã xóa thông tin nhân viên thành công!” , nếu không đúng thì sẽ thông báo lOMoAR cPSD| 47205411 1
“CMT/CCCD của nhân viên không tồn tại” và quay trở về Menu. Sau đó mở file
danhsachnhanvien.txt với mode: w (Mở tệp để ghi dữ liệu vào tệp; nếu tệp chưa tồn tại thì
sẽ tạo tệp mới, nếu tệp đã tồn tại thì tất cả dữ liệu cũ trong tệp sẽ bị xóa), ghi thông tin
nhân viên trong danh sách vào file danhsachnhanvien.txt và đóng file. Cuối cùng sẽ xóa
hết các phần tử trong danh sách đã được tạo ban đầu bằng hàm clear().
Hàm cập nhật thông tin nhân viên: def updatestaff(): #3 list=[] k=0
update = input("Nhập CMT/CCCD nhân viên cần thay đổi/ cập nhật thông tin:")
file = open("E:/danhsachnhanvien.txt",mode="r",encoding="utf-8") read =
file.readline() while read!="": read_new = read.split(",") list.append(read_new) read
= file.readline() file.close()
for ds in range (len(list)): if (list[ds][3] == update+"'"): k=1
print("-----Menu----- \n0. Sửa họ tên \n1. Sửa năm sinh \n2. Sửa quốc tịch \n3. Sửa
Chứng minh thư \n4. Sửa số điện thoại \n5. Sửa email ") n=int(input("Lựa chọn
của bạn là: ")) a=input("Nhập thông tin cần thay đổi: ") list[ds][n] = a print("")
print(' Đã cập nhật thành công thông tin nhân viên!') print("") if (k==0):
print(' CMT/CCCD này không tồn tại! ') lOMoAR cPSD| 47205411 1
file = open("E:/danhsachnhanvien.txt",mode="w",encoding="utf-8") for row in range (len(list)):
file.write(list[row][0]+","+list[row][1]+","+list[row][2]+","+list[row]
[3]+","+list[row][4]+","+list[row][5]) file.close() list.clear() return
Mô tả chi tiết: Đầu tiên sẽ tạo ra một danh sách trống. Tiếp theo đó là nhập chứng minh
thư hoặc căn cước công dân của nhân viên cần cập nhật thông tin. Sau đó mở file
danhsachnhanvien.txt với mode:r (đọc dữ liệu trong file).Dùng vòng lặp “While” để thêm
thông tin của từng nhân viên vào danh sách trống vừa mới tạo ra cho tới khi thông tin
trống sẽ dừng vòng lặp và danh sách này sẽ phục vụ cho câu lệnh cập nhật thông tin nhân
viên, đóng file. Sau đó sử dụng vòng lặp “for” để lấy thông tin của từng nhân viên có
trong danh sách.Sử dụng lệnh “if” để so sánh giữa CMT/CCCD của nhân viên cần cập
nhật/ thay đổi thông tin và CMT/CCCD của nhân viên có trong danh sách. Nếu đúng, sau
đó hiện ra menu lựa chọn thông tin cần thay đổi với số thứ tự từ 0. Sửa họ tên, 1. Sửa năm
sinh, 2. Sửa quốc tịch, 3. Sửa Chứng minh thư, 4. Sửa số điện thoại, 5. Sửa email. Nhập
lựa chọn và nhập thông tin cần thay đổi. Sau khi thông tin được thay đổi thành công thì sẽ
hiện ra một dòng thông báo “ Đã cập nhật thành công thông tin của nhân viên!”. Nếu như
sai sẽ hiện ra “CMT/CCCD không tồn tại!”. Tiếp theo mở file danhsachnhanvien.txt với
mode:w, ghi thông tin nhân viên từ danh sách đã được tạo ở đầu rồi đóng file, sau đó đóng
file. Sau khi lưu thông tin nhân viên xong sẽ xóa toàn bộ các phần tử trong danh sách đã được tạo ban đầu.
Hàm tìm kiếm thông tin nhân viên: def findstaff(): #4 k=0
file2 = open("E:/danhsachnhanvien.txt",mode="r",encoding="utf-8") read = file2.readline() lOMoAR cPSD| 47205411 1
n=input("Nhập số CMT/CCCD của người cần tìm:") while read!="": read_new = read.split(",")
for i in range (len(read_new)): if (n+"'"==read_new[3]): k=1
print("Ho va ten".center(25),end=' ') print("Nam sinh".center(10),end=' ') print("Quoc tich".center(10),end=' ')
print("CMT/CCCD".center(13),end=' ')
print("So dien thoai".center(11),end=' ')
print("Email".center(15),end=' ') print('\n')
print(read_new[0].center(25),end=' ')
print(read_new[1].center(10),end=' ')
print(read_new[2].center(10),end=' ')
print(read_new[3].center(13).strip("'"),end=' ')
print(read_new[4].center(11).strip("'"),end=' ')
print(read_new[5].center(15),end=' ') break
read = file2.readline() if (k==0):
print(' Không có nhân viên này trong hệ thống!') file2.close() return
Mô tả chi tiết: Nhập chứng minh thư hoặc căn cước công dân của nhân viên tìm kiếm
thông tin. Sau đó mở file danhsachnhanvien.txt với mode:r (đọc dữ liệu trong file), Dùng
vòng lặp “While” để hỗ trợ cho vòng lặp “for” so sánh giữa CMT/CCCD của nhân viên
có trong file và CMT/CCCD của nhân viên cần tìm kiếm. Nếu đúng thì sẽ in ra thông tin lOMoAR cPSD| 47205411 1
của nhân viên. Nếu không đúng thì in ra thông báo “Không có nhân viên trong hệ
thông!”. Sau đó đóng file.
Hàm hiển thị danh sách nhân viên: def showList():#5
file2 = open("E:/danhsachnhanvien.txt",mode="r",encoding="utf-8")
read = file2.readline() while read!="": read_new = read.split(",")
print(read_new[0].center(25),end=' ')
print(read_new[1].center(10),end=' ')
print(read_new[2].center(10),end=' ')
print(read_new[3].center(13).strip("'"),end=' ')
print(read_new[4].center(11).strip("'"),end=' ')
print(read_new[5].center(15),end=' ') print('\n')
read = file2.readline() file2.close() return def main(): while True: print("\n----- Menu -----") print("1. Thêm Staff") print("2. Xóa Staff")
print("3. Cập nhật Staff") print("4. Tìm kiếm Staff")
print("5. Hiện danh sách Staff ") print("0. Thoát")
choice = input("Enter your choice (0-5): ") lOMoAR cPSD| 47205411 1 if choice == "1": addstaff() elif choice == "2": deletestaff() elif choice == "3": updatestaff() elif choice == "4": findstaff() elif choice == "5": showList() elif choice == "0":
print("Exiting the program. Goodbye!") break else:
print("Invalid choice. Please enter a number between 0 and 5.") if __name__ == "__main__": main()
Mô tả chi tiết:Mở file danhsachnhanvien.txt với mode:r (đọc dữ liệu trong file), Dùng
vòng lặp “While” để in thông tin của từng nhân viên cho tới khi hết danh sách. Sau đó đóng file.