using System; using System.Collections.Generic; public class VienChuc { public string MaVienChuc { get; set; } public string HoTen { get; set; } public int Tuoi { get; set; } public VienChuc() { } public VienChuc(string ma, string hoTen, int tuoi) { MaVienChuc = ma; HoTen = hoTen; Tuoi = tuoi; } public virtual void Nhap() { Console.Write("Nhập mã viên chức: "); MaVienChuc = Console.ReadLine(); Console.Write("Nhập họ tên: "); HoTen = Console.ReadLine(); Console.Write("Nhập tuổi: "); Tuoi = int.Parse(Console.ReadLine()); } public virtual void Xuat() { Console.Write($"{MaVienChuc,-10}{HoTen,-20}{Tuoi,-10}"); } } public class GiangVien : VienChuc { public string TrinhDo { get; set; } public int SoTietGiang { get; set; } public double Luong { get; set; } public GiangVien() { } public GiangVien(string ma, string hoTen, int tuoi, string trinhDo, int soTietGiang) : base(ma, hoTen, tuoi) { TrinhDo = trinhDo; SoTietGiang = soTietGiang; TinhLuong(); } public override void Nhap() { base.Nhap(); Console.Write("Nhập trình độ: "); TrinhDo = Console.ReadLine(); Console.Write("Nhập số tiết giảng: "); SoTietGiang = int.Parse(Console.ReadLine()); TinhLuong(); } private void TinhLuong() { int tiet = SoTietGiang; if (tiet <= 100) Luong = tiet * 200000; else if (tiet <= 150) Luong = 100 * 200000 + (tiet - 100) * 150000; else if (tiet <= 180) Luong = 100 * 200000 + 50 * 150000 + (tiet - 150) * 130000; else Luong = 100 * 200000 + 50 * 150000 + 30 * 130000 + (tiet - 180) * 100000; } public override void Xuat() { base.Xuat(); Console.WriteLine($"{TrinhDo,-15}{SoTietGiang,-10}{Luong,15:N0}đ"); } } class Program { static void Main() { List danhSach = new List(); // a. Tạo 1 đối tượng thuộc lớp giảng viên, nhập và xuất Console.WriteLine("=== a. Nhập và xuất 1 giảng viên ==="); GiangVien gv1 = new GiangVien(); gv1.Nhap(); Console.WriteLine("\nThông tin giảng viên vừa nhập:"); Console.WriteLine($"{"Mã",-10}{"Họ tên",-20}{"Tuổi",-10}{"Trình độ",-15}{"Số tiết",-10}{"Lương",15}"); gv1.Xuat(); // b. Nhập danh sách giảng viên (0 < n ≤ 10) Console.WriteLine("\n\n=== b. Nhập danh sách giảng viên ==="); Console.Write("Nhập số lượng giảng viên (0 < n ≤ 10): "); int n = int.Parse(Console.ReadLine()); for (int i = 0; i < n; i++) { Console.WriteLine($"\n--- Nhập giảng viên thứ {i + 1} ---"); GiangVien gv = new GiangVien(); gv.Nhap(); // Kiểm tra trùng mã bool trung = false; foreach (var item in danhSach) { if (item.MaVienChuc == gv.MaVienChuc) { Console.WriteLine("❌ Lỗi: Mã giảng viên bị trùng. Không thêm vào danh sách!"); trung = true; break; } } if (!trung) danhSach.Add(gv); } // c. Hiển thị danh sách giảng viên (mỗi người 1 dòng) Console.WriteLine("\n===== DANH SÁCH GIẢNG VIÊN ====="); Console.WriteLine($"{"Mã",-10}{"Họ tên",-20}{"Tuổi",-10}{"Trình độ",-15}{"Số tiết",-10}{"Lương",15}"); foreach (var gv in danhSach) { gv.Xuat(); } // d. Nhập tuổi cần tìm và hiển thị giảng viên có tuổi đó Console.Write("\n\nNhập tuổi giảng viên cần tìm: "); int tuoiCanTim = int.Parse(Console.ReadLine()); bool timThay = false; Console.WriteLine("\n===== KẾT QUẢ TÌM KIẾM ====="); Console.WriteLine($"{"Mã",-10}{"Họ tên",-20}{"Tuổi",-10}{"Trình độ",-15}{"Số tiết",-10}{"Lương",15}"); foreach (var gv in danhSach) { if (gv.Tuoi == tuoiCanTim) { gv.Xuat(); timThay = true; } } if (!timThay) { Console.WriteLine($"❌ Không tìm thấy giảng viên nào có tuổi {tuoiCanTim}."); } } }