2, Enum: Từ khóa Enum sử dụng để định nghĩa một bảng dạng liệt kê
1.11.4: Phép toán typeof:
Phép toán typeof dùng để lấy kiểu của đối tượng. Giá trị trả về là System.Type cho phép bạn liệt kê danh sách thuộc tính, phương thức của đối tượng đó.
Ví dụ, khai báo một số thuộc tính và phương thức trong Class1 rồi sue dụng phép toán typeof như ví dụ sau đây:
using System;
using System.Collections.Generic; using System.Linq;
using System.Text;
using x = System.Console; using System.Reflection;
namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
//Sử dụng phép toán typeof. Type t = typeof(Class1); //Duyệt trên từng trường.
foreach(FieldInfo f in t.GetFields())
x.WriteLine("Method is {0}.", f.Name); //Duyệt trên từng phương thức.
foreach (MethodInfo f in t.GetMethods()) x.WriteLine("Method is {0}.", f.Name); x.ReadLine();
} } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace QuanLyCacLoaiMayTinh { class Program {
static void Main(string[] args) {
BangMenu(); XuLyMenu(); }
public enum Menu {
Exit, ShowList, ShowMenu }
public static void BangMenu() {
Console.WriteLine("\n\a=============================== Danh Sach Ung Dung ============================="); Console.WriteLine(" 00.Thoat Khoi Chuong Trinh!!! ");
Console.WriteLine("==================================== ============================================");
}
public static int ChonMenu() {
string Ch; int Chon; while (true) {
Console.WriteLine("\n Chu y: lenh 'show' de xem lai danh sach!\n Dau '?' de xem lai menu ung dung");
Console.Write(" Nhap vao chon thu tu ung dung: ");
Console.Write("?\b"); Ch = Console.ReadLine();
if ((Ch.CompareTo("?") == 0)) Ch =
((int)Menu.ShowMenu).ToString();
if (Ch.CompareTo("") == 0) Ch =
((int)Menu.ShowMenu).ToString();
if (!(Ch.CompareTo("show") == -1)) Ch =
((int)Menu.ShowList).ToString();
Chon = int.Parse(Ch); if (Chon >= 0 && Chon <= (int)Menu.ShowMenu)
break; }
return Chon; }
public static void XuLyMenu() {
BangMenu(); while (true) {
int Chon = ChonMenu(); switch (Chon)
{
case (int)Menu.Exit:
Console.WriteLine("\nBan Da Thoat!!!"); return; } } } } }
Câu 16: Bạn tạo tiếp File. Kieu Enum.cs:
using System;
using System.Collections.Generic; using System.Text;
namespace QuanLyCacLoaiMayTinh {
public enum KieuSapXepMayTinh {
GiamTheoTenMayTinh, TangTheoDungLuongRam, GiamTheoDungLuongRam, TangTheoTocDoCPU, GiamTheoTocDoCPU } }
Câu 17: Bạn tạo tiếp File IlinhKien.cs:
using System; using System.Collections.Generic; using System.Text; namespace QuanLyCacLoaiMayTinh { class ILinhKien { float gia;
public float Gia {
get { return gia; } set { gia = value; } }
int namSanXuat;
public int NamSanXuat {
get { return namSanXuat; } set { namSanXuat = value; } }
public ILinhKien() { }
public ILinhKien(float gia, int namlamviec) { Gia = gia; NamSanXuat = namlamviec; } } }
Câu 18: Bạn tạo tiếp File CPU.cs:
using System;
using System.Collections.Generic; using System.Text;
namespace QuanLyCacLoaiMayTinh {
class CPU:ILinhKien {
string ten;
public string Ten {
get { return ten; } set { ten = value; } }
string tocDo;
public string TocDo {
get { return tocDo; } set { tocDo = value; } }
public CPU() {
}
public CPU(string ten, string tocdo, float gia, int namsanxuat) { Ten = ten; TocDo = tocdo; Gia = gia; NamSanXuat = namsanxuat; }
public override string ToString() {
string s = " CPU: {0}, Toc Do: {1}GHz, Gia: {2}$USD, Nam San Xuat: {3}";
return string.Format(s, Ten, TocDo, Gia, NamSanXuat);
} } }
Câu 19: Bạn tạo tiếp File Ram.cs:
using System;
using System.Collections.Generic; using System.Text;
namespace QuanLyCacLoaiMayTinh {
class Ram:ILinhKien {
string ten;
public string Ten {
get { return ten; } set { ten = value; } }
float dungLuong;
public float DungLuong {
get { return dungLuong; } set { dungLuong = value; } }
public Ram() { }
public Ram(string ten, float dungluong, float gia, int namsanxuat)
{ Ten = ten; DungLuong = dungluong; Gia = gia; NamSanXuat = namsanxuat; }
public override string ToString() {
string s = " Ram: {0}, Dung Luong: {1}GB, Gia: {2}$USD, NamSanXuat: {3}";
return string.Format(s, Ten, DungLuong,Gia,NamSanXuat);
} } }
Câu 20: Bạn tạo tiếp File MayTinh.cs.
using System;
using System.Collections.Generic; using System.Text;
namespace QuanLyCacLoaiMayTinh {
class MayTinh:ILinhKien {
List<ILinhKien> DS = new List<ILinhKien>(); string ten;
public string Ten {
get { return ten; } set { ten = value; } }
public MayTinh() { }
public MayTinh(string ten) {
Ten = ten; }
public void ThemLinhKien(ILinhKien LK) {
DS.Add(LK); }
public float GiaMayTinh() { float Tong=0; foreach (ILinhKien LK in DS) Tong += LK.Gia; return Tong; }
public override string ToString() {
string s = "\n\n May Tinh: {0} --->> Gia Ban: {1} $USD";
s= string.Format(s,Ten,GiaMayTinh()); foreach (ILinhKien LK in DS)
s += "\n" + LK; return s;
}
public int DemLinhKien() {
int Dem = 0;
foreach (ILinhKien LK in DS) Dem++;
}
public float GiaRam() {
float Tong = 0;
foreach (ILinhKien LK in DS) {
if (LK is Ram && Tong < LK.Gia) Tong = LK.Gia;
}
return Tong; }
public float TongGiaRam() { float Tong = 0; foreach (ILinhKien LK in DS) { if (LK is Ram ) Tong += LK.Gia; } return Tong; }
public float TongDungLuongRam() {
float Tong = 0;
foreach(ILinhKien LK in DS) {
if (LK is Ram)
Tong += ((Ram)LK).DungLuong; }
return Tong; }
public string TongTocDoCPU() { string s=""; foreach (ILinhKien LK in DS) { if (LK is CPU) s += ((CPU)LK).TocDo; } return s; }
public int DemRam() {
int Dem = 0; foreach(ILinhKien LK in DS) { if (LK is Ram) Dem++; } return Dem; }
public bool TimMayTinhTheoTenCPU(string Ten) { foreach (ILinhKien LK in DS) { if (LK is CPU && ((CPU)LK).Ten.CompareTo(Ten) == 0) return true; } return false; } } }
Câu 21: Bạn tạo tiếp File HangSanXuat.cs:
using System; using System.Collections.Generic; using System.Text; using System.IO; namespace QuanLyCacLoaiMayTinh {
class HangSanXuat:IComparer<MayTinh> {
List<MayTinh> HSX = new List<MayTinh>(); CPU cpu = new CPU();
Ram ram = new Ram();
public void ThemMayTinh(MayTinh MT) {
HSX.Add(MT); }
public void NhapDuLieuTinh() {
//================================ MayTinh Acser = new MayTinh("Acser"); Acser.ThemLinhKien(new
Acser.ThemLinhKien(new Ram("King Max",2,39,2005));
Acser.ThemLinhKien(new Ram("DDR2", 2, 40, 2004));
ThemMayTinh(Acser);
//================================ MayTinh Dell = new MayTinh("Dell");
Dell.ThemLinhKien(new CPU("E6400", "2.8", 130, 2006));
Dell.ThemLinhKien(new Ram("DDR2",1,13, 2005));
Dell.ThemLinhKien(new Ram("DDR2", 1, 13, 2005));
ThemMayTinh(Dell);
//================================ MayTinh Pc = new MayTinh("Pc");
Pc.ThemLinhKien(new CPU("E7400", "2.9", 150, 2009));
Pc.ThemLinhKien(new Ram("DDR3", 3, 39, 2004));
ThemMayTinh(Pc);
//================================ MayTinh Pc1 = new MayTinh("HP");
Pc1.ThemLinhKien(new CPU("E7400", "2.9", 160, 2010));
Pc1.ThemLinhKien(new Ram("DDR2", 2, 35, 2008));
Pc1.ThemLinhKien(new Ram("DDR2", 2, 35, 2008));
ThemMayTinh(Pc1);
//================================
MayTinh Asus = new MayTinh("Asus Eee PC T101MT");
Asus.ThemLinhKien(new CPU("Intel Atom N450","1.66",100,2000));
Asus.ThemLinhKien(new Ram("DDR2",1,12,2003));
Asus.ThemLinhKien(new Ram("DDR2", 1, 12, 2003));
Asus.ThemLinhKien(new Ram("DDR2", 1, 12, 2003));
Asus.ThemLinhKien(new Ram("DDR2", 1, 12, 2003));
ThemMayTinh(Asus);
//================================
MayTinh Lenovo=new MayTinh("Lenovo ThinkPad X201");
Lenovo.ThemLinhKien(new CPU("Intel Core i7- 620LM", "2", 1000, 2009));
Lenovo.ThemLinhKien(new Ram("KingMax DDR3", 2, 70, 2010));
Lenovo.ThemLinhKien(new Ram("KingMax DDR3", 2, 70, 2010));
ThemMayTinh(Lenovo);
//================================ MayTinh Hp = new MayTinh("HP");
Hp.ThemLinhKien(new CPU("Core i3 530", "2.93", 98, 2008));
Hp.ThemLinhKien(new Ram("Ram VDATA", 2, 38, 2009));
ThemMayTinh(Hp);
//================================ MayTinh Sony = new MayTinh("Sony");
Sony.ThemLinhKien(new CPU("Intel core i3- 330M", "2.13", 90, 2007));
Sony.ThemLinhKien(new Ram("KingMax DDR3", 3, 141, 2010));
Sony.ThemLinhKien(new Ram("KingMax DDR3", 3, 138, 2010));
ThemMayTinh(Sony); }
int ToInt(string s) {
s = s.Trim();
return int.Parse(s); }
float ToFloat(string s) {
s = s.Trim();
return float.Parse(s); }
public void DocFile(string Path) {
FileStream fs = File.Open(Path, FileMode.Open);
string s = sr.ReadLine(); while (s != null) { if (s.IndexOf("MayTinh") == 0) { string[] M = s.Split(';');
MayTinh Mt = new MayTinh(M[1]); while ((s = sr.ReadLine()) != null) {
if (s.IndexOf("Ram") == 0) {
string[] a = s.Split(';'); Mt.ThemLinhKien(new
Ram(a[1], ToFloat(a[2]), ToFloat(a[3]), ToInt(a[4]))); }
if (s.IndexOf("CPU") == 0) {
string[] b = s.Split(';'); Mt.ThemLinhKien(new
CPU(b[1], b[2], ToFloat(b[3]), ToInt(b[4]))); } } ThemMayTinh(Mt); } } }
public override string ToString() {
string s = "\n !!=================== Danh Sach May Tinh ==================!!";
foreach (MayTinh MT in HSX) s += "\n" + MT;
return s; }
public int DemMayTinh() { int Dem = 0; foreach (MayTinh Mt in HSX) Dem++; return Dem; } KieuSapXepMayTinh KieuSXMT = KieuSapXepMayTinh.TangTheoDungLuongRam;
public void SapXep(KieuSapXepMayTinh KSX) {
KieuSXMT = KSX; HSX.Sort(this); }
public int Compare(MayTinh A, MayTinh B) { if (KieuSXMT == KieuSapXepMayTinh.TangTheoDungLuongRam) return A.TongDungLuongRam().CompareTo(B.TongDungLuongRam()); if (KieuSXMT == KieuSapXepMayTinh.GiamTheoDungLuongRam) return -A.TongDungLuongRam().CompareTo(B.TongDungLuongRam()); if (KieuSXMT == KieuSapXepMayTinh.TangTheoTocDoCPU) return A.TongTocDoCPU().CompareTo(B.TongTocDoCPU()); return -A.TongTocDoCPU().CompareTo(B.TongTocDoCPU()); }
public float MaytinhGiaCao() { float Gia = 0; foreach (MayTinh Mt in HSX) { if (Gia < Mt.GiaMayTinh()) Gia = Mt.GiaMayTinh(); } return Gia; }
public HangSanXuat XuatMayTinhGiaCao() {
HangSanXuat MT = new HangSanXuat(); foreach (MayTinh Mt in HSX) { if (Mt.GiaMayTinh() == MaytinhGiaCao()) MT.ThemMayTinh(Mt); } return MT; }
{
HangSanXuat MT = new HangSanXuat(); foreach (MayTinh Mt in HSX) { if (Mt.DemRam() == 2) MT.ThemMayTinh(Mt); } return MT; }
public float GiaRamMax() { float GiaRam = 0; foreach (MayTinh Mt in HSX) { if (0 < Mt.TongGiaRam()) GiaRam = Mt.TongGiaRam(); } return GiaRam; }
public HangSanXuat MayTinhGiaRamMax() {
HangSanXuat MT = new HangSanXuat(); foreach (MayTinh Mt in HSX) { if (Mt.TongGiaRam() == GiaRamMax()) MT.ThemMayTinh(Mt); } return MT; }
//== Dem may nao lap nhieu linh kien hon public int DemMayNhieuLinhKien()
{ int Dem = 0; foreach (MayTinh MT in HSX) { if (Dem < MT.DemLinhKien()) Dem = MT.DemLinhKien(); } return Dem; }
public HangSanXuat MayNhieuLinhKien() {
foreach (MayTinh Mt in HSX) { if (Mt.DemLinhKien() == DemMayNhieuLinhKien()) MT.ThemMayTinh(Mt); } return MT; }
public int DemMayTinhTheoTenCPU(string Ten) { int Dem=0; foreach (MayTinh Mt in HSX) { if (Mt.TimMayTinhTheoTenCPU(Ten)) Dem++; } return Dem; }
#region IComparer<MayTinh> Members
int IComparer<MayTinh>.Compare(MayTinh x, MayTinh y)
{
throw new NotImplementedException(); }
#endregion }
}
Câu 22: Bạn hãy tạo một dự án quản lý nhân viên: Đầu tiên bạn nên tạo cái sườn cho bài này như sau: File Program.cs Như sau:
//Khai báo các thư viện để gọi hàm ra sử dụng. using System;
using System.Collections.Generic; using System.Text;
using System.Linq;
//Khai báo không gian tên của ứng dụng. namespace QuanLyNhanVien
{
{
static void Main(string[] args) //Tạo một hàm Main() để thực thi chương trình.
{
XuLyMenu(); }
public enum Menu //Tạo một hàm enum chứa các thực đơn của Menu.
{
Exit, //Nếu không cho giá trị VD như Exit = 1, thì mặc định mà Microsoft quy định là 0 cho thực đơn đứng ở vị trí đầu tiên, thực đơn tiếp theo là 1,
2,...,n All Đều là số nguyên. ShowList,
ShowMenu }
public static void BangMenu() //Đưa ra thông tin về Menu chương trình cho người dùng sử dụng.
{
Console.WriteLine("==================================== = MENU =====================================");
Console.WriteLine(" 00.Thoat khoi Chuong Trinh ");
Console.WriteLine("==================================== = MENU =====================================");
}
public static int ChonMenu() //Tạo một hàm để máy tính xử lý cho việc chọn Menu.
{
string Nhap; //Tạo một biến trung gian để nhập dữ liệu, sau đó chuyển qua biến Chon để xử lý. int Chon;
while (true) //Vòng lặp này luôn luôn diễn ra nếu người dùng không chon đúng thực đơn thích hợp. {
Console.Write("\nNhap vao lua chon: "); Nhap = Console.ReadLine();
Chon = int.Parse(Nhap); if (Chon >= 0 && Chon <= (int)Menu.ShowMenu)
else
Console.WriteLine("\nYeu cau khong hop le!!!");
}
return Chon; }
public static void XuLyMenu() {
BangMenu(); while (true) {
int Chon = ChonMenu();
switch (Chon) //Đưa biến Chon vào để switch xử lý, nó sẽ kiếm trong phần main của nó có cái thứ tự nào trùng với yêu cầu hay không, nếu có, thì nó sẽ đưa ra kết quả, hay yêu cầu nào đó mà thực đơn tìm được yêu cầu, còn nếu không thì nó chạy lên hàm
ChonMenu() và xuất ra câu "Yeu cau khong hop le!!!" như đã lập trình.
{
case (int)Menu.Exit:
Console.WriteLine("\nThoat khoi Chuong trinh!!!"); //Đưa ra thông báo đang thoát chương trình.
return; //return về rỗng (null) để thoát khỏi chương trình.
} } } } }
Bạn đặt tên là KieuEnum.cs và Click Add để thêm vào.
Đoạn code Microsoft tạo sẵn cần phải chỉnh lại một tí:
using System;
using System.Collections.Generic; using System.Linq;
using System.Text;
{
class KieuEnum {
} }
Sửa lại như sau:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace QuanLyNhanVien {
public enum KieuSapXep { TangTheoTen, GiamTheoTen, TangTheoPhuCap, GiamTheoPhuCap, TangTheoLuongThangBK, GiamTheoLuongThangBK } }
Tiếp theo, làm tương tự bạn tạo File KieuNhanVien.cs:
using System;
using System.Collections.Generic; using System.Text;
namespace DuAnQuanLiNhanVien {
public enum KieuNhanVien { NVSanXuat, NVVanPhong } } Và File NhanVien.cs: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace QuanLyNhanVien
{
class NhanVien {
string ten;
public string Ten {
get { return ten; } set { ten = value; } }
int namLamViec;
public int NamLamViec {
get { return namLamViec; } set { namLamViec = value; } }
public NhanVien() {
}
public NhanVien(string ten, int namlamviec) { Ten = ten; NamLamViec = namlamviec; } } }
Chương trình sẽ tạo cho bạn đoạn code như sau: using System; namespace QuanLyNhanVien { interface INhanVien {
int NamLamViec { get; set; } string Ten { get; set; } }
}
Bạn phải xóa cái dòng code ở bên file NhanVien.cs như sau:
Xóa cái dòng bôi xanh ấy đi là Ok. Nếu bạn lì không chịu xóa thì sẽ nhận hậu quả sau:
Rồi bạn thêm vào Fie INhanVien.cs code như sau: using System; namespace QuanLyNhanVien { interface INhanVien {
int NamLamViec { get; set; } string Ten { get; set; }
float TinhLuongTheoThang(int t); float TinhphuCap();
} }
Bạn tạo tiếp File ChamCongSX.cs:
using System; using System.Collections.Generic; using System.Text; namespace DuAnQuanLiNhanVien { class ChamCongSX { int soSP;
public int SoSP {
get { return soSP; } set { soSP = value; } }
int thang;
public int Thang {
get { return thang; } set { thang = value; } }
{ }
public ChamCongSX(int sp, int t) {
SoSP = sp; Thang=t; }
public override string ToString() {
string s = " {0} -> {1}";
return string.Format(s, SoSP, Thang); }
} }
Tạo tiếp File ChamCongVP.cs:
using System; using System.Collections.Generic; using System.Text; namespace DuAnQuanLiNhanVien { class ChamCongVP { int soNgayNghi;
public int SoNgayNghi {
get { return soNgayNghi; } set { soNgayNghi = value; } }
int thang;
public int Thang {
get { return thang; } set { thang = value; } }
public ChamCongVP() {
}
public ChamCongVP(int t,int songaynghi) {
SoNgayNghi = songaynghi; }
public override string ToString() {
string s = " {0} -> {1}";
return string.Format(s, Thang, SoNgayNghi); } } } File NVVanPhong.cs: using System; using System.Collections.Generic; using System.Text; namespace DuAnQuanLiNhanVien {
class NVVanPhong:NhanVien,INhanVien {
float mucLuong;
public float MucLuong {
get { return mucLuong; } set { mucLuong = value; } }
public List<ChamCongVP> ds = new List<ChamCongVP>();
public NVVanPhong() {
}
public NVVanPhong(string hoten, int nam, float mucluong)
: base(hoten, nam) {
MucLuong = mucluong; }
public void ThemChamCong(ChamCongVP cc) {
ds.Add(cc); }
public override string ToString() {
string s = " NVVP: {0} , Nam: {1} , Muc Luong: {2}\n Thang SNNghi ";
s = string.Format(s, HoTen, NamLamViec, MucLuong);
foreach (ChamCongVP cc in ds) s += "\n " + cc;
return s; }
public float TinhphuCap() {
return 100000 + (2010 - NamLamViec) * 20000;
}
public float TinhLuongTheoThang(int t) { int sonn = 0; foreach (ChamCongVP cc in ds) { if (cc.Thang == t) { sonn = cc.SoNgayNghi; break; } }
return MucLuong - sonn * 100000 + TinhphuCap(); } } } File NVSanXuat.cs: using System; using System.Collections.Generic; using System.Text; namespace DuAnQuanLiNhanVien {
class NVSanXuat : NhanVien,INhanVien {
public List<ChamCongSX> ds = new List<ChamCongSX>();
public NVSanXuat() {
public NVSanXuat(string hovaten,int nam):base(hovaten,nam)
{ }
public void ThemChamCong(ChamCongSX cc) {
ds.Add(cc); }
public override string ToString() {
string s = " NVSX {0} , Nam Lam Viec {1}\n Thang SoSP "; s = string.Format(s,HoTen,NamLamViec); foreach (ChamCongSX cc in ds) s += "\n " + cc; return s; }
public float TinhLuongTheoThang(int t) { int sosp = 0; foreach (ChamCongSX cc in ds) { if (cc.Thang == t) { sosp = cc.SoSP; break; } }
return 10000 * sosp + TinhphuCap(); }
public float TinhphuCap() { return 100000 + (2010 - NamLamViec) * 20000; } } }
Tạo File DanhSachNhanVien.cs:
using System;
using System.Collections.Generic; using System.Text;
using System.IO;
{
class DSNhanVien:IComparer<INhanVien> {
List<INhanVien> ds = new List<INhanVien>(); public void ThemNV(INhanVien Nv)
{
ds.Add(Nv); }
public void NhapDuLieuTinh() {
NVSanXuat nv1=new NVSanXuat("Nguyen Van Teo",2005);
nv1.ThemChamCong(new ChamCongSX(10,1)); nv1.ThemChamCong(new ChamCongSX(20, 2)); ThemNV(nv1);
//||||||||||||||||||||||||||||||||||||||||| |||||||
NVVanPhong a=new NVVanPhong("Nguyen Van Ty",2005,500000);
a.ThemChamCong(new ChamCongVP(5, 1)); a.ThemChamCong(new ChamCongVP(4, 2)); ThemNV(a);
//||||||||||||||||||||||||||||||||||||||||| |||||||
NVSanXuat nv2 = new NVSanXuat("Nguyen Van Teo", 2005);
nv2.ThemChamCong(new ChamCongSX(15, 1)); nv2.ThemChamCong(new ChamCongSX(26, 2)); ThemNV(nv2);
//||||||||||||||||||||||||||||||||||||||||| |||||||
NVSanXuat nv3 = new NVSanXuat("Nguyen Van A", 2005);
nv3.ThemChamCong(new ChamCongSX(50, 1)); nv3.ThemChamCong(new ChamCongSX(55, 2)); nv3.ThemChamCong(new ChamCongSX(55, 2)); ThemNV(nv3);
//||||||||||||||||||||||||||||||||||||||||| |||||||
NVVanPhong b = new NVVanPhong("Nguyen Van B", 2005, 600000);
b.ThemChamCong(new ChamCongVP(2, 1)); b.ThemChamCong(new ChamCongVP(3, 2));
b.ThemChamCong(new ChamCongVP(5, 3)); b.ThemChamCong(new ChamCongVP(1, 4)); ThemNV(b);
}
int ToInt(string s) {
s = s.Trim();
return int.Parse(s); }
float ToFloat(string s) {
s = s.Trim();
return float.Parse(s); }
public void DocTuFile(string Path) {
FileStream fs = File.Open(Path, FileMode.Open);
StreamReader sr = new StreamReader(fs); string s = sr.ReadLine(); while (s!= null) { if (s.IndexOf("VP") == 0) { string[] a = s.Split(';'); NVVanPhong vp = new NVVanPhong(a[1],ToInt(a[2]),ToFloat(a[3]));
while((s=sr.ReadLine())!=null) {
if (s.IndexOf("CC") != 0)break; string[] b = s.Split(';');
vp.ThemChamCong(new ChamCongVP(ToInt(b[1]), ToInt(b[2])));
} ThemNV(vp); } if (s.IndexOf("SX") == 0) { string[] a = s.Split(';'); NVSanXuat SX = new NVSanXuat(a[1],ToInt(a[2]));
while ((s=sr.ReadLine()) != null) {
if(s.IndexOf("CC")!=0) break; string[] b = s.Split(';'); SX.ThemChamCong(new
ChamCongSX(ToInt(b[1]), ToInt(b[2]))); }
ThemNV(SX); }
} }
public override string ToString() {
string s = "\n\n *********************** Danh sach nhan vien *********************\n";
foreach (INhanVien Nv in ds) s += "\n" + Nv;
return s; }
//xuat nv van phong
public DSNhanVien XuatNVRieng(KieuNhanVien H) {
DSNhanVien kq=new DSNhanVien(); foreach (INhanVien Nv in ds) { if (LayKieu(Nv)==H) kq.ThemNV(Nv); } return kq; }
//tong phai tra mot thang nao do cua nam nao do cong ty
public float TongphaiTra(int thang) { float Tong = 0; foreach (INhanVien Nv in ds) { Tong += Nv.TinhLuongTheoThang(thang); } return Tong; }
KieuSapXep KieuSX = KieuSapXep.TangTheoTen; public void SapXep(KieuSapXep K)
KieuSX = K; ds.Sort(this); }
public int Compare(INhanVien x, INhanVien y) {
if (KieuSX == KieuSapXep.TangTheoTen) return x.HoTen.CompareTo(y.HoTen); if (KieuSX == KieuSapXep.GiamTheoTen) return -x.HoTen.CompareTo(y.HoTen); if (KieuSX == KieuSapXep.TangTheoPhuCap) return
x.TinhphuCap().CompareTo(y.TinhphuCap()); return
-x.TinhphuCap().CompareTo(y.TinhphuCap()); }
//ley kieu cua nhan vien
public KieuNhanVien LayKieu(INhanVien NV) {
if (NV is NVSanXuat) {