---
# System prepended metadata

title: BÀI TẬP C

---


**Đề bài: Quản lý thông tin nhân viên TemporaryEmp**

**Phần A - Tạo một struct TemporaryEmp (6 điểm):**

Hãy định nghĩa một struct `TemporaryEmp` để lưu trữ thông tin về nhân viên tạm thời (Temporary Employee) với các trường sau:

- `empID`: Mã nhân viên (kiểu int).
- `empName`: Tên nhân viên (kiểu mảng ký tự, có độ dài tối đa 50).
- `dob`: Ngày sinh (kiểu mảng ký tự, có định dạng "dd/mm/yyyy").
- `department`: Phòng ban (kiểu mảng ký tự, có độ dài tối đa 50).
- `numWork`: Số năm làm việc (kiểu int).
- `workDay`: Số ngày làm việc (kiểu int).
- `salary`: Lương (kiểu double).

**Phần B - Thực hiện các chức năng cho lớp TemporaryEmp (12 điểm):**

1. Viết hàm `void inputTemporaryEmp(struct TemporaryEmp *emp)` để nhập thông tin cho một nhân viên `TemporaryEmp` từ bàn phím. Hàm này phải yêu cầu người dùng nhập thông tin về mã nhân viên, tên nhân viên, ngày sinh, phòng ban, số năm làm việc và số ngày làm việc.

2. Viết hàm `void displayTemporaryEmp(struct TemporaryEmp emp)` để hiển thị thông tin của một nhân viên `TemporaryEmp` ra màn hình. Thông tin bao gồm mã nhân viên, tên nhân viên, ngày sinh, phòng ban, số năm làm việc, số ngày làm việc và lương.

3. Viết hàm `void calculateSalary(struct TemporaryEmp *emp)` để tính lương cho một nhân viên `TemporaryEmp` dựa trên số ngày làm việc theo các quy tắc sau:
   - Nếu `workDay` <= 25: `salary` = `workDay` * 50,000.
   - Nếu `workDay` > 25: `salary` = 25 * 50,000 + (`workDay` - 25) * 100,000.

4. Viết hàm `void sortByWorkDay(struct TemporaryEmp *employees, int numEmployees)` để sắp xếp danh sách nhân viên `TemporaryEmp` theo số ngày làm việc tăng dần.

5. Viết hàm `void searchByName(const struct TemporaryEmp *employees, int numEmployees, const char *name)` để tìm kiếm và hiển thị thông tin của nhân viên có tên chứa chuỗi `name` (không phân biệt chữ hoa/chữ thường) trong danh sách nhân viên `TemporaryEmp`.

**Phần C - Chương trình chính (4 điểm):**

1. Viết một chương trình chính (`main`) để thực hiện các chức năng sau:

   a. Tạo một mảng chứa thông tin của nhân viên `TemporaryEmp`.

   b. Hiển thị menu cho người dùng với các lựa chọn sau:
      - 1. Thêm nhân viên mới.
      - 2. Hiển thị danh sách nhân viên.
      - 3. Sắp xếp theo số ngày làm việc.
      - 4. Tìm kiếm nhân viên theo tên.
      - 5. Thoát.

   c. Dựa trên lựa chọn của người dùng, thực hiện các chức năng tương ứng.
