1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo bài tập lớn kỹ thuật lập trình khai báo thư viện và hằng số

22 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Khai báo thư viện và hằng số
Tác giả Nguyễn Việt Thắng, Lã Nguyễn Nam Sơn, Hoàng Linh Nam Khánh, Nguyễn Bá Phước
Người hướng dẫn TS. Nguyễn Thị Kim Thoa
Trường học Trường Đại học Bách Khoa Hà Nội
Chuyên ngành Kỹ Thuật Lập Trình
Thể loại Báo cáo bài tập lớn
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 22
Dung lượng 2,13 MB

Nội dung

2 Lớp `NhanVien` Đoạn mã này định nghĩa một lớp NhanVien Nhân Viên trong C++ với các thuộc tính chính được khai báo ở phạm vi private.. Đây là phần chi tiết và giải thích từng thuộc tính

Trang 1

TRƯỜNG ĐIỆN -ĐIỆN TỬ

BÁO CÁO BÀI TẬP LỚN KỸ THUẬT LẬP TRÌNH

Nhóm 9 - Lớp: CTTN Điện tử - Viễn thông

Giảng viên hướng dẫn : TS.Nguyễn Thị Kim Thoa

Hà Nội, 06/2024

Trang 2

1 Khai báo thư viện và hằng số 3

1.1 Định nghĩa một số thư viện 4

2 Lớp `NhanVien` 5

2.1 Các thuộc tính của lớp NhanVien 5

2.2 Giải thích các thuộc tính 6

2.3 Lý do sử dụng kiểu dữ liệu cụ thể 6

3 Các phương thức của Lớp `NhanVien` 7

3.1 Phương thức `nhap()` 7

3.2 Phương thức `xuat() const` 7

3.3 Các phương thức getter 7

3.4 Phương thức `static` `readFile` và `writeFile` 8

4 Các hàm quản lý danh sách nhân viên 9

4.1 Hàm `nhapds` 9

4.2 Hàm `xuatds` 10

4.3 Hàm `TKMaNV` 10

4.4 Hàm `TKCCCD` 11

4.5 Hàm `TKTen` 11

4.6 Hàm `sapxep` 12

4.7 Hàm `tongluong` 12

4.8 Hàm `thucLinhmax` 13

4.9 Hàm `timphucap` 13

4.10 Hàm `xoa` 14

4.11 Hàm `them` 14

4.12 Hàm `sua` 15

5 Hàm `Menu` 16

5.1 Chi tiết về hàm `menu` 17

5.1.1 Khai báo các biến cục bộ: 17

5.1.2 Vòng lặp do-while: 17

5.1.3 Hiển thị menu: 17

5.1.4 Xử lý lựa chọn của người dùng (switch-case): 18

Trang 3

1 Khai báo thư viện và hằng số

 Khai báo các thư viện cần thiết để xử lý luồng nhập/xuất, đọc/ghi file, chuỗi, và các phép toán

 Định nghĩa hằng số MAX_SIZE là 1000, là số lượng nhân viên tối đa có thể quản lý

1.1 Định nghĩa một số thư viện

- iostream: Thư viện cung cấp các đối tượng, hàm và toán tử để thực hiện các hoạt động

vào ra với luồng dữ liệu (input/output) Trong đoạn code này, iostream được sử dụng để làm việc với đầu vào và đầu ra từ bàn phím hoặc console

- fstream: Thư viện cung cấp các lớp để thực hiện các hoạt động đầu vào và đầu ra với

file Cụ thể, ifstream và ofstream là các lớp con của fstream, được sử dụng để đọc và ghi

dữ liệu vào file trong đoạn code

- sstream: Thư viện này cung cấp lớp stringstream để xử lý chuỗi như một luồng

stringstream cho phép đọc và ghi vào chuỗi dưới dạng như luồng dữ liệu Trong đoạn code, stringstream được sử dụng để phân tích cú pháp và xử lý dữ liệu từng dòng trong file

- iomanip: Thư viện này cung cấp các hàm để điều chỉnh định dạng dữ liệu như

setprecision để xác định số lượng chữ số thập phân cho các giá trị số Trong đoạn code, setprecision được sử dụng để định dạng lại lương của nhân viên khi ghi vào file

Trang 4

- Windows.h: Đây là một thư viện dành riêng cho hệ điều hành Windows, cung cấp các

hàm và định nghĩa cho việc điều khiển giao diện và đầu ra trong console Windows Trong đoạn code, Windows.h được sử dụng để điều khiển màu sắc của văn bản trên console

2 Lớp `NhanVien`

Đoạn mã này định nghĩa một lớp NhanVien (Nhân Viên) trong C++ với các thuộc tính chính được khai báo ở phạm vi private Đây là phần chi tiết và giải thích từng thuộc tính của lớp:

2.1 Các thuộc tính của lớp NhanVien

long long maNV

o Mã nhân viên: Đây là một số duy nhất để xác định từng nhân viên trong hệ (kiểu

o Phụ cấp: Đây là khoản phụ cấp thêm vào lương cơ bản mà nhân viên có thể nhận

được (kiểu ` float `)

long long CCCD

Trang 5

o Số căn cước công dân: Đây là số nhận dạng cá nhân của nhân viên theo căn cước

công dân (kiểu ` long long `)

o Thực lĩnh: Đây là tổng lương thực nhận của nhân viên sau khi cộng lương cơ bản

và phụ cấp ThucLinh được tính bằng công thức ThucLinh = LuongCB + Phucap (kiểu `float`)

2.2 Giải thích các thuộc tính

Mục đích của các thuộc tính là để lưu trữ thông tin cá nhân và lương của nhân viên

trong một công ty hoặc tổ chức Các thuộc tính này giúp quản lý và theo dõi thông tin nhân viên một cách chi tiết và có hệ thống

Trang 6

Phạm vi truy cập private đảm bảo rằng các thuộc tính này chỉ có thể được truy cập từ

bên trong lớp NhanVien Điều này giúp bảo vệ dữ liệu và duy trì tính toàn vẹn của thông tin nhân viên

2.3 Lý do sử dụng kiểu dữ liệu cụ thể

long long được sử dụng cho maNV và CCCD vì các giá trị này có thể rất lớn, đặc biệt

trong các hệ thống lớn với nhiều nhân viên

float được sử dụng cho các thuộc tính liên quan đến lương (LuongCB, Phucap,

ThucLinh) để lưu trữ các giá trị có phần thập phân

string được sử dụng cho các thuộc tính chứa thông tin văn bản như họ tên, địa chỉ, giới

tính, ngày sinh, email và số điện thoại

Bằng cách sử dụng các thuộc tính này, lớp NhanVien có thể lưu trữ và quản lý thông tin chi tiết về nhân viên một cách hiệu quả Các phương thức trong lớp sẽ được sử dụng để nhập, xuất, và xử lýthông tin này

3 Các phương thức của Lớp `NhanVien`

3.1 Phương thức `nhap()`

 Sử dụng `cin` và `getline(cin, )` để nhập dữ liệu từ người dùng

Trang 7

 `cin.ignore()` được sử dụng để bỏ qua ký tự newline còn sót lại trong bộ đệm sau khi sử dụng cin.

 Sau khi nhập tất cả thông tin, `ThucLinh`(thực lĩnh) được tính bằng cách cộng

`LuongCB` (lương cơ bản) và Phucap (phụ cấp)

3.2 Phương thức `xuat() const`

 Phương thức `xuat()` dùng để xuất thông tin của nhân viên ra màn hình

 `setw()` định dạng độ rộng của cột khi xuất dữ liệu, giúp hiển thị dữ liệu có trật tự và dễ đọc

 Phương thức này được đánh dấu `const`, có nghĩa là nó không thay đổi trạng thái của đối tượng

Trang 8

3.4 Phương thức `static` `readFile` và `writeFile`

3.4.1 Phương thức `readFile` và các tham số:

~code~

static void readFile(const string& filename, NhanVien employees[], int& size)

Trang 9

 `static void readFile`: Khai báo một phương thức tĩnh (static method) có kiểu trả

về là `void`

filename`: Tham số

`filename` là một chuỗi hằng (constant string) tham chiếu, đại diện cho tên tệp tin cần đọc

 `if (!file)`: Kiểm tra xem tệp tin có mở thành công hay không

 `cout << "Khong mo duoc file." << endl; `Nếu tệp tin không mở được, in ra thông báo lỗi

và thoát khỏi phương thức

a. Khởi tạo kích thước mảng và đọc từng dòng của tệp tin:

Trang 10

 string line: Khai báo một biến line kiểu chuỗi để lưu trữ từng dòng của tệp tin.

 size = 0;: Đặt kích thước ban đầu của mảng employees là 0

 while (getline(file, line) && size < MAX_SIZE): Đọc từng dòng của tệp tin cho đến khi hết dòng hoặc đạt kích thước tối đa MAX_SIZE

3.4.3 Xử lý từng dòng và gán giá trị cho các thuộc tính của đối tượng NhanVien:

iss là một đối tượng của lớp istringstream, được sử dụng để phân tích cú pháp một chuỗi dòng

(line) từ tệp tin Lớp istringstream thuộc thư viện <sstream> và cung cấp các phương thức để đọc

dữ liệu từ chuỗi theo cách tương tự như đọc từ ifstream (dòng nhập từ tệp tin) hoặc cin (dòng nhập từ bàn phím)

 istringstream iss(line): Tạo một đối tượng istringstream từ chuỗi line để phân tích cú pháp

 NhanVien& nv = employees[size]: Tham chiếu đến phần tử NhanVien tại vị trí size trongmảng employees

 iss >> nv.maNV >> nv.LuongCB >> nv.Phucap >> nv.CCCD: Đọc các giá trị thuộc tính maNV, LuongCB, Phucap, và CCCD từ dòng hiện tại

 iss.ignore(): Bỏ qua ký tự phân cách

Trang 11

 getline(iss, nv.HovaTen, ','): Đọc giá trị của thuộc tính HovaTen từ dòng hiện tại, sử dụngdấu phẩy , làm ký tự phân cách.

 getline(iss, nv.DiaChi, ','): Đọc giá trị của thuộc tính DiaChi từ dòng hiện tại, sử dụng dấuphẩy , làm ký tự phân cách

 getline(iss, nv.GioiTinh, ','): Đọc giá trị của thuộc tính GioiTinh từ dòng hiện tại, sử dụngdấu phẩy , làm ký tự phân cách

 getline(iss, nv.NgaySinh, ','): Đọc giá trị của thuộc tính NgaySinh từ dòng hiện tại, sử dụng dấu phẩy , làm ký tự phân cách

 getline(iss, nv.Email, ','): Đọc giá trị của thuộc tính Email từ dòng hiện tại, sử dụng dấu phẩy , làm ký tự phân cách

 getline(iss, nv.SoDT, ','): Đọc giá trị của thuộc tính SoDT từ dòng hiện tại, sử dụng dấu phẩy , làm ký tự phân cách

3.4.4 Đóng tệp tin:

Đóng tệp tin sau khi hoàn thành việc đọc dữ liệu

Trang 12

4 Các hàm quản lý danh sách nhân viên

 `size`: Tham chiếu đến biến lưu kích thước hiện tại của mảng

 Các bước thực hiện:

1 Nhập số lượng nhân viên mới `n`

2 Kiểm tra nếu n vượt quá giới hạn MAX_SIZE của mảng thì thông báo lỗi và thoát

3 Dùng vòng lặp để nhập thông tin cho từng nhân viên mới và cập nhật kích thước size

4.2 Hàm `xuatds`

Trang 13

 Tham số:

Trang 14

 nv[]: Mảng chứa danh sách nhân viên.

Trang 15

1 Sử dụng hàm sort với lambda function để sắp xếp.

2 Xuất danh sách nhân viên sau khi sắp xếp

Trang 16

 size: Tham chiếu đến biến lưu kích thước hiện tại của mảng.

Trang 17

 size: Tham chiếu đến biến lưu kích thước hiện tại của mảng.

Trang 18

5 Hàm `Menu`

Trang 20

5.1 Chi tiết về hàm `menu`

5.1.1 Khai báo các biến cục bộ:

5.1.2 Vòng lặp do-while:

- Vòng lặp này sẽ tiếp tục chạy cho đến khi người dùng chọn thoát chương trình (choice == 15)

5.1.3 Hiển thị menu:

Trang 21

- Yêu cầu người dùng nhập lựa chọn từ 1 đến 15.

5.1.4 Xử lý lựa chọn của người dùng (switch-case):

- Dựa vào giá trị của choice, thực hiện các thao tác tương ứng:

1 Nhập danh sách nhân viên: Gọi hàm nhapds để nhập danh sách nhân

viên, sau đó ghi danh sách này ra file "NhanVien.txt"

2 Hiển thị danh sách nhân viên: Gọi hàm xuatds để xuất danh sách nhân

viên ra màn hình

3 Tìm kiếm nhân viên theo mã nhân viên: Gọi hàm TKMaNV để tìm

kiếm và xuất thông tin nhân viên theo mã

4 Tìm kiếm nhân viên theo CCCD: Gọi hàm TKCCCD để tìm kiếm và

xuất thông tin nhân viên theo số CCCD

5 Tìm kiếm nhân viên theo tên: Gọi hàm TKTen để tìm kiếm và xuất

thông tin nhân viên theo tên

6 Sắp xếp lương nhân viên tăng dần: Gọi hàm sapxep để sắp xếp và

xuất danh sách nhân viên theo lương thực lĩnh tăng dần

7 Tính tổng lương nhân viên: Gọi hàm tongLuong để tính và xuất tổng

lương của tất cả nhân viên

8 Tìm kiếm nhân viên có thu nhập cao nhất: Gọi hàm thucLinhmax để

tìm và xuất thông tin nhân viên có thu nhập cao nhất

9 Tìm kiếm nhân viên có phụ cấp > 100.000: Gọi hàm timphucap để

tìm và xuất thông tin nhân viên có phụ cấp lớn hơn 100.000

10 Xóa nhân viên: Gọi hàm xoa để xóa nhân viên theo mã và ghi danh

sách nhân viên còn lại ra file "NhanVien.txt"

11 Thêm nhân viên: Gọi hàm them để thêm nhân viên mới vào danh

sách và ghi danh sách này ra file "NhanVien.txt"

12 Sửa thông tin một nhân viên: Gọi hàm sua để sửa thông tin nhân

viên theo mã và ghi danh sách nhân viên đã sửa ra file "NhanVien.txt"

13 Ghi danh sách nhân viên ra file khác: Yêu cầu người dùng nhập tên

file mới và ghi danh sách nhân viên vào file đó

Trang 22

14 Quay lại menu chính: Gán backToMenu = true để quay lại menu

Chờ người dùng tiếp tục: Sau khi thực hiện xong một thao tác (trừ khi

người dùng chọn quay lại menu hoặc thoát), yêu cầu người dùng nhấn ENTER để tiếp tục

Ngày đăng: 26/10/2024, 10:19

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w