Tải bản đầy đủ (.doc) (27 trang)

FILE 20210805 165212 CTDL BTL 02 trần văn nhớ (1)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (226.55 KB, 27 trang )

TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI
TRUNG TÂM ĐÀO TẠO ELEARNING

----------------------

Nguyễn Văn Luân-Lê Đắc Lực-Trần Văn Nhớ-C513

Đề tài: Bài toán quản lý bán hàng
siêu thị

BÁO CÁO BÀI TẬP LỚN
MÔN: CẤU TRÚC DỮ LIỆU
Giảng viên hướng dẫn: Nguyễn Thị Kim Khánh

Hà Nội – 2021


MỤC LỤC
I. XÁC ĐỊNH BÀI TOÁN.............................................................................................2
II. XÁC ĐỊNH CTDL BIỂU DIỄN BÀI TOÁN............................................................2
III. XÁC ĐỊNH CÁC THUẬT TOÁN – CÁC CHỨC NĂNG......................................2
IV. LẬP TRÌNH – CÀI ĐẶT.........................................................................................5
Chương trình chính:...................................................................................................5
Lớp Sản phẩm..........................................................................................................14
V. KIỂM THỬ - LẬP BỘ TEST..................................................................................24
VII. KẾT LUẬN..........................................................................................................25
VIII. TÀI LIỆU THAM KHẢO...................................................................................26

1



I. XÁC ĐỊNH BÀI TOÁN
Siêu thị Vinmart nhập và bán hàng hóa liên tục, nhất là trong bối cảnh dịch bệnh
như thời điểm hiện nay, hàng hóa nhập về và tiêu thụ hết chỉ tính theo ngày, giờ. Loại
mặt hàng, số lượng thay đổi chóng mặt do sức mua của người tiêu dùng. Lực lượng
nhân sự của siêu thị cũng tương đối đa dạng, bao gồm thu ngân, bảo vệ, tài xế, quản
lý, nhân viên sơ chế, ở những siêu thị lớn cịn có thể có cả đầu bếp,… Đây là hai đối
tượng cơ bản cần quản lý trong nội bộ siêu thị.

II. XÁC ĐỊNH CTDL BIỂU DIỄN BÀI TOÁN
Đối tượng được quản lý của bài toán gồm: SẢN PHẨM, NHÂN VIÊN. Trong
đó:
- SẢN PHẨM: ID, tên sản phẩm, phân loại hàng hóa, giá bản, số lượng.
- NHÂN VIÊN: ID, họ tên, tuổi tác, chức vụ trong công ty, số năm kinh nghiệm
làm việc, số điện thoại, địa chỉ email.
Hai đối tượng trên được lưu trữ trong hai lớp danh sách sản phẩm và danh sách
nhân viên. Tất cả các thao tác, chức năng quản lý trong bài toán đều sẽ thực hiện trên
hai danh sách này.

III. XÁC ĐỊNH CÁC THUẬT TOÁN – CÁC CHỨC NĂNG
Sơ đồ phân cấp các chức năng dự kiến của chương trình:

2


Ngoài các chức năng trên, sau khi kết thúc tác vụ quản lý, hệ thống sẽ tự động
ghi lại danh sách sản phẩm và nhân viên vào hai file sanpham.txt và nhanvien.txt.
Chương trình khi chạy ban đầu xuất xuất hiện danh sách lựa chọn chức năng:
Chuong trinh quan ly ban hang sieu thi
0. Thoat
1. Hang hoa

2. Nhan vien
Nếu chọn số 0, thốt chương trình
Nếu chọn số 1, gồm các chức năng sau:
3


Nhap lua chon
1. Them san pham moi
2. Sua thong tin san pham
3. Xoa san pham
4. Tim kiem san pham
5. Sap xep san pham
6. Tinh toan
7. Xem danh muc san pham
8. Thốt
Một số chức năng như tìm kiếm, sắp xếp, tính tốn theo thơng tin cụ thể được em
tích hợp vào chung một tính năng lớn, khi người dùng chọn thì tiếp tục mở ra menu
mới để tiếp tục cụ thể hóa thơng tin đó.
Nếu tiếp tục chọn số 1, menu nhập thông tin sản phẩm được mở ra:
Nhap thong tin san pham:
Nhap ten san pham:
……
Nhap loai hang hoa:
1. Thuc pham
2. Hang may mac
3. Do gia dung
4. Do cong nghe
…… (Nhập số thứ tự tương ứng)
Nhap gia tien:
……

Nhap so luong:
……
Trên đây là một ví dụ nhỏ khi chạy chương trình, do chương trình có tương đối
nhiều tính năng nên em khơng thể minh họa hết ở đây được, mong cơ có thể thực
4


hiện chạy thử và đánh giá các tính năng cịn lại của em. Em xin chân thành cảm ơn.
IV. LẬP TRÌNH – CÀI ĐẶT
Tiến hành cài đặt bài tập, Liệt kê cấu trúc chương trình tổng quát và đưa ra một
số code xử lý chính
Chương trình chính:
/*
* Quản lý bán hàng siêu thị
* I. Sản phẩm: ID, tên, loại hàng hóa, giá bán, số lượng
* ** 1. Nhập và thêm thông tin sản phẩm mới vào danh sách
* ** 2. Sửa thông tin sản phẩm trong danh sách
* ** 3. Xóa sản phẩm trong danh sách
* ** 4. Tìm kiếm sản phẩm trong danh sách theo tên hoặc ID
* ** 5. Sắp xếp các sản phẩm theo ID, theo tên, theo giá bán hoặc theo số lượng
* ** 6. Tính toán số loại mặt hàng, tổng số lượng sản phẩm, mức giá trung bình, đưa
ra sản phẩm có giá thấp nhất, cao
* ***** nhất trong danh sách
* ** 7. In thơng tin tất cả các sản phẩm ra màn hình
* ** Ghi danh sách vào file sanpham.txt
*
* II. Nhân viên: ID, họ tên, tuổi, chức vụ, số năm kinh nghiệm, số điện thoại, địa chỉ
email
* ** 1. Nhập và thêm thông tin nhân viên mới vào danh sách
* ** 2. Sửa thông tin nhân viên trong danh sách

* ** 3. Xóa nhân viên trong danh sách
* ** 4. Tìm kiếm nhân viên theo ID, theo họ tên, theo số điện thoại hoặc theo địa chỉ
email
* ** 5. Sắp xếp các nhân viên theo họ tên, theo tuổi hoặc theo số năm kinh nghiệm
* ** 6. Thống kê độ tuổi, số năm kinh nghiệm trung bình của nhân viên, đưa ra nhân
viên có độ tuổi trẻ/lớn nhất, và
* ***** nhân viên có số năm kinh nghiệm nhiều/ít nhất trong danh sách
* ** 7. In thông tin tất cả các nhân viên ra màn hình
*/
using System;
using System.IO;

5


namespace QuanlyBanhang
{
class Program
{
// Tạo menu tương tác và nhận thông tin yêu cầu từ người dùng
static void Main(string[] args)
{
Console.WriteLine("Chuong trinh quan ly ban hang sieu thi");
Console.WriteLine("Chon muc ma ban muon quan ly:\n0. Thoat\n1. Hang hoa\n2.
Nhan vien");
DanhsachNhanvien danhsachNhanvien = new DanhsachNhanvien();
DanhsachSanpham danhsachSanpham = new DanhsachSanpham();
while (true)
{
int option = Convert.ToInt32(Console.ReadLine());

if (option == 0) break;
if (option == 1)
{
int lua_chon = 0;
while (lua_chon != 8)
{
Console.WriteLine("Nhap lua chon: ");
Console.WriteLine("1. Them san pham moi");
Console.WriteLine("2. Sua thong tin san pham");
Console.WriteLine("3. Xoa san pham");
Console.WriteLine("4. Tim kiem san pham");
Console.WriteLine("5. Sap xep san pham");
Console.WriteLine("6. Tinh toan");
Console.WriteLine("7. Xem danh muc san pham");
Console.WriteLine("8. Thoat");
lua_chon = Convert.ToInt32(Console.ReadLine());
switch (lua_chon)
{
case 1:
danhsachSanpham.them();
break;
case 2:
Sanpham sanpham = danhsachSanpham.tim_kiem();
if (sanpham == null)
{
Console.WriteLine("Khong tim thay san pham ban yeu cau!");

6



break;
}
Console.WriteLine("Ban muon thay doi thong tin nao?");
Console.WriteLine("1. Ten san pham\n2. Gia tien\n3. So luong");
int thong_tin = Convert.ToInt32(Console.ReadLine());
switch (thong_tin)
{
case 1:
Console.WriteLine("Nhap ten: ");
string ten_moi = Console.ReadLine();
sanpham.Ten_san_pham = ten_moi;
break;
case 2:
Console.WriteLine("Nhap gia tien: ");
double gia_tien = Convert.ToDouble(Console.ReadLine());
sanpham.Gia_tien = gia_tien;
break;
case 3:
Console.WriteLine("Nhap so luong: ");
int so_luong = Convert.ToInt32(Console.ReadLine());
sanpham.So_luong = so_luong;
break;
}
break;
case 3:
Sanpham sanpham1 = danhsachSanpham.tim_kiem();
if (sanpham1 == null)
{
Console.WriteLine("Khong tim thay san pham ban yeu cau!");
break;

}
danhsachSanpham.list.Remove(sanpham1);
break;
case 4:
Sanpham sanpham2 = danhsachSanpham.tim_kiem();
if (sanpham2 == null)
{
Console.WriteLine("Khong tim thay san pham ban yeu cau!");
break;
}
Console.WriteLine(sanpham2.To_string());
break;
case 5:
danhsachSanpham.sap_xep();

7


danhsachSanpham.in_ra_man_hinh();
break;
case 6:
if (danhsachSanpham.list.Count == 0)
{
Console.WriteLine("Chua co san pham nao");
break;
}
Console.WriteLine("Ban muon thong ke thong tin gi?");
Console.WriteLine("1. Tong so luong hang hoa\n" +
"2. Gia tri trung binh\n" +
"3. So loai mat hang\n" +

"4. Mat hang co gia tri lon nhat\n" +
"5. Mat hang co gia tri nho nhat");
int thong_tin_thong_ke = Convert.ToInt32(Console.ReadLine());
switch (thong_tin_thong_ke)
{
case 1:
int count = 0;
foreach (Sanpham sp in danhsachSanpham.list)
{
count += sp.So_luong;
}
Console.WriteLine($"Tong so luong hang hoa: {count}");
break;
case 2:
double tong_gia_tri = 0;
foreach (Sanpham sp in danhsachSanpham.list)
{
tong_gia_tri += sp.Gia_tien;
}
Console.WriteLine("Gia tri trung binh cac mat hang: " +
$"{tong_gia_tri / danhsachSanpham.list.Count}");
break;
case 3:
Console.WriteLine($"So loai mat hang:
{danhsachSanpham.list.Count}");
break;
case 4:
Sanpham sanpham3 = null;
double max_price = 0;
foreach (Sanpham sp in danhsachSanpham.list)

{
if (max_price < sp.Gia_tien)

8


{
max_price = sp.Gia_tien;
sanpham3 = sp;
}
}
Console.WriteLine("Mat hang co gia tri lon nhat: ");
Console.WriteLine(sanpham3.To_string());
break;
case 5:
Sanpham sanpham4 = null;
double min_price = Int32.MaxValue;
foreach (Sanpham sp in danhsachSanpham.list)
{
if (min_price > sp.Gia_tien)
{
min_price = sp.Gia_tien;
sanpham4 = sp;
}
}
Console.WriteLine("Mat hang co gia tri nho nhat: ");
Console.WriteLine(sanpham4.To_string());
break;
}
break;

case 7:
danhsachSanpham.in_ra_man_hinh();
break;
case 8:
break;
}
}
using StreamWriter data = new StreamWriter("sanpham.txt", append: true);
foreach (Sanpham sp in danhsachSanpham.list)
{
data.WriteLine(sp.To_string());
}
}
else
{
int lua_chon = 0;
while (lua_chon != 8)
{

9


Console.WriteLine("Nhap lua chon: ");
Console.WriteLine("1. Them nhan vien moi");
Console.WriteLine("2. Sua thong tin nhan vien");
Console.WriteLine("3. Xoa nhan vien");
Console.WriteLine("4. Tim kiem nhan vien");
Console.WriteLine("5. Sap xep nhan vien");
Console.WriteLine("6. Thong ke");
Console.WriteLine("7. Xem danh sach nhan vien");

Console.WriteLine("8. Thoat");
lua_chon = Convert.ToInt32(Console.ReadLine());
switch (lua_chon)
{
case 1:
danhsachNhanvien.them();
break;
case 2:
Nhanvien nhanvien = danhsachNhanvien.tim_kiem();
if (nhanvien == null)
{
Console.WriteLine("Khong tim thay nhan vien ban yeu cau!");
break;
}
Console.WriteLine("Nhap thong tin ma ban muon sua");
Console.WriteLine("1. Ho ten\n" +
"2. Tuoi\n" +
"3. Chuc vu\n" +
"4. So nam kinh nghiem\n" +
"5. So dien thoai\n" +
"6. Dia chi email");
int thong_tin = Convert.ToInt32(Console.ReadLine());
switch (thong_tin)
{
case 1:
Console.WriteLine("Nhap ten: ");
string ho_ten = Console.ReadLine();
nhanvien.Ho_ten = ho_ten;
break;
case 2:

Console.WriteLine("Nhap tuoi: ");
int tuoi = Convert.ToInt32(Console.ReadLine());
nhanvien.Tuoi = tuoi;
break;

10


case 3:
Console.WriteLine("Nhap chuc vu: ");
string chuc_vu = Console.ReadLine();
nhanvien.Chuc_vu = chuc_vu;
break;
case 4:
Console.WriteLine("Nhap so nam kinh nghiem: ");
int so_nam_kinh_nghiem = Convert.ToInt32(Console.ReadLine());
nhanvien.So_nam_kinh_nghiem = so_nam_kinh_nghiem;
break;
case 5:
Console.WriteLine("Nhap so dien thoai: ");
string so_dien_thoai = Console.ReadLine();
nhanvien.So_dien_thoai = so_dien_thoai;
break;
case 6:
Console.WriteLine("Nhap dia chi email: ");
string email = Console.ReadLine();
nhanvien.Email = email;
break;
}
break;

case 3:
Nhanvien nhanvien1 = danhsachNhanvien.tim_kiem();
if (nhanvien1 == null)
{
Console.WriteLine("Khong tim thay nhan vien ban yeu cau!");
break;
}
danhsachNhanvien.list.Remove(nhanvien1);
break;
case 4:
Nhanvien nhanvien2 = danhsachNhanvien.tim_kiem();
if (nhanvien2 == null)
{
Console.WriteLine("Khong tim thay nhan vien ma ban yeu cau!");
break;
}
Console.WriteLine(nhanvien2.To_string());
break;
case 5:
danhsachNhanvien.sap_xep();
danhsachNhanvien.in_ra_man_hinh();
break;

11


case 6:
if (danhsachNhanvien.list.Count == 0)
{
Console.WriteLine("Chua co nhan vien nao!");

break;
}
Console.WriteLine("Ban muon thong ke thong tin nao?");
Console.WriteLine("1. Tong so nhan vien\n" +
"2. Do tuoi trung binh cua cac nhan vien\n" +
"3. So nam kinh nghiem trung binh cua cac nhan vien\n" +
"4. Nhan vien tre nhat\n" +
"5. Nhan vien lon tuoi nhat\n" +
"6. Nhan vien co so nam kinh nghiem lau nhat\n" +
"7. Nhan vien co so nam kinh nghiem thap nhat");
int thong_tin_thong_ke = Convert.ToInt32(Console.ReadLine());
switch (thong_tin_thong_ke)
{
case 1:
Console.WriteLine($"Tong so nhan vien:
{danhsachNhanvien.list.Count}");
break;
case 2:
double tong_so_tuoi = 0;
foreach (Nhanvien nv in danhsachNhanvien.list)
{
tong_so_tuoi += nv.Tuoi;
}
Console.WriteLine("Do tuoi trung binh cua nhan vien: " +
$"{tong_so_tuoi / danhsachNhanvien.list.Count}");
break;
case 3:
double tong_so_nam_kinh_nghiem = 0;
foreach (Nhanvien nv in danhsachNhanvien.list)
{

tong_so_nam_kinh_nghiem += nv.So_nam_kinh_nghiem;
}
Console.WriteLine("Do tuoi trung binh cua nhan vien: " +
$"{tong_so_nam_kinh_nghiem /
danhsachNhanvien.list.Count}");
break;
case 4:
Nhanvien nhanvien3 = null;
int min_age = Int32.MaxValue;

12


foreach (Nhanvien nv in danhsachNhanvien.list)
{
if (min_age > nv.Tuoi)
{
min_age = nv.Tuoi;
nhanvien3 = nv;
}
}
Console.WriteLine("Nhan vien tre nhat: " + nhanvien3.To_string());
break;
case 5:
Nhanvien nhanvien4 = null;
int max_age = 0;
foreach (Nhanvien nv in danhsachNhanvien.list)
{
if (max_age < nv.Tuoi)
{

max_age = nv.Tuoi;
nhanvien4 = nv;
}
}
Console.WriteLine("Nhan vien lon tuoi nhat: " +
nhanvien4.To_string());
break;
case 6:
Nhanvien nhanvien5 = null;
int max_exp = 0;
foreach (Nhanvien nv in danhsachNhanvien.list)
{
if (max_exp < nv.So_nam_kinh_nghiem)
{
max_exp = nv.So_nam_kinh_nghiem;
nhanvien5 = nv;
}
}
Console.WriteLine("Nhan vien co so nam kinh nghiem lau nhat: "
+ nhanvien5.To_string());
break;
case 7:
Nhanvien nhanvien6 = null;
int min_exp = Int32.MaxValue;
foreach (Nhanvien nv in danhsachNhanvien.list)
{
if (min_exp > nv.So_nam_kinh_nghiem)

13



{
min_exp = nv.So_nam_kinh_nghiem;
nhanvien6 = nv;
}
}
Console.WriteLine("Nhan vien co so nam kinh nghiem thap nhat: "
+ nhanvien6.To_string());
break;
}
break;
case 7:
danhsachNhanvien.in_ra_man_hinh();
break;
case 8:
break;
}
using StreamWriter data = new StreamWriter("nhanvien.txt", append: true);
foreach (Sanpham sp in danhsachSanpham.list)
{
data.WriteLine(sp.To_string());
}
}
}
}
}
}
}

Lớp Sản phẩm

namespace QuanlyBanhang
{
class Sanpham
{
static int cnt = 1;
int ID;
string ten_san_pham;
string[] cac_loai_hang_hoa = { "Thuc pham", "Hang may mac", "Do gia dung", "Do cong nghe"
};
string loai_hang_hoa;
double gia_tien;

14


int so_luong;
// Constructor khởi tạo đối tượng
public Sanpham(string ten_san_pham, int loai_hang, double gia_tien, int so_luong)
{
this.ID = cnt++;
this.ten_san_pham = ten_san_pham;
this.loai_hang_hoa = cac_loai_hang_hoa[loai_hang];
this.gia_tien = gia_tien;
this.so_luong = so_luong;
}
public string Loai_hang_hoa { get => loai_hang_hoa; set => loai_hang_hoa = value; }
public double Gia_tien { get => gia_tien; set => gia_tien = value; }
public int So_luong { get => so_luong; set => so_luong = value; }
public int ID1 { get => ID; set => ID = value; }
public string Ten_san_pham { get => ten_san_pham; set => ten_san_pham = value; }

// Trích xuất thơng tin đối tượng dưới dạng string
public string To_string()
{
return $"ID: {this.ID}\n" +
$"Ten san pham: {this.ten_san_pham}\n" +
$"Loai hang hoa: {this.loai_hang_hoa}\n" +
$"Gia tien: {this.gia_tien}\n" +
$"So luong: {this.so_luong}";
}
}
}

Lớp quản lý Sản phẩm bằng ArrayList (mảng động)
using System;
using System.Collections;
namespace QuanlyBanhang
{
class DanhsachSanpham
{
public ArrayList list;
public DanhsachSanpham()
{

15


this.list = new ArrayList();
}
// Nhập và thêm mới nhân viên vào mảng động
public void them()

{
Console.WriteLine("Nhap thong tin san pham: ");
Console.WriteLine("Nhap ten san pham: ");
string ten_san_pham = Console.ReadLine();
Console.WriteLine("Nhap loai hang hoa: ");
Console.WriteLine("1. Thuc pham\n2. Hang may mac\n3. Do gia dung\n4. Do cong nghe");
int loai_hang = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Nhap gia tien: ");
double gia_tien = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Nhap so luong: ");
int so_luong = Convert.ToInt32(Console.ReadLine());
Sanpham sanpham = new Sanpham(ten_san_pham, loai_hang, gia_tien, so_luong);
this.list.Add(sanpham);
}
// Tìm kiếm sản phẩm theo một thuộc tính nào đó
public Sanpham tim_kiem()
{
Console.WriteLine("Ban muon tim kiem san pham theo thuoc tinh nao?");
Console.WriteLine("1. ID\n2. Ten san pham");
int option = Convert.ToInt32(Console.ReadLine());
if (option == 1)
{
Console.WriteLine("Nhap ID: ");
int ID = Convert.ToInt32(Console.ReadLine());
foreach (Sanpham sanpham in this.list) {
if (sanpham.ID1 == ID) return sanpham;
}
return null;
}
else

{

16


Console.WriteLine("Nhap ten san pham: ");
string ten_san_pham = Console.ReadLine();
foreach (Sanpham sanpham in this.list)
{
if (sanpham.Ten_san_pham.Equals(ten_san_pham)) return sanpham;
}
return null;
}
}
// Các Comparer dùng để so sánh hai sản phẩm theo một khía cạnh nào đó
class IDComparer : IComparer
{
// So sánh ID
int IComparer.Compare(object xx, object yy)
{
Sanpham x = (Sanpham)xx;
Sanpham y = (Sanpham)yy;
return x.ID1.CompareTo(y.ID1);
}
}
class NameComparer : IComparer
{
// So sánh theo thứ tự chữ cái trong tên
int IComparer.Compare(object xx, object yy)
{

Sanpham x = (Sanpham)xx;
Sanpham y = (Sanpham)yy;
return x.Ten_san_pham.CompareTo(y.Ten_san_pham);
}
}
class PriceComparer : IComparer
{
// So sánh theo giá
int IComparer.Compare(object xx, object yy)
{
Sanpham x = (Sanpham)xx;

17


Sanpham y = (Sanpham)yy;
return x.Gia_tien.CompareTo(y.Gia_tien);
}
}
class AmountComparer : IComparer
{
// So sánh theo số lượng
int IComparer.Compare(object xx, object yy)
{
Sanpham x = (Sanpham)xx;
Sanpham y = (Sanpham)yy;
return x.So_luong.CompareTo(y.So_luong);
}
}
// Phương thức sắp xếp

public void sap_xep()
{
// Sắp xếp sử dụng các Comparer ở trên để xếp hạng sản phẩm theo từng khía cạnh
Console.WriteLine("Ban muon sap xep san pham theo thong tin gi?");
Console.WriteLine("1. ID\n2. Ten san pham\n3. Gia tien\n4. So luong");
int option = Convert.ToInt32(Console.ReadLine());
if (option == 1)
{
this.list.Sort(new IDComparer());
}
else if (option == 2)
{
this.list.Sort(new NameComparer());
}
else if (option == 3)
{
this.list.Sort(new PriceComparer());
}
else this.list.Sort(new AmountComparer());
}

18


// In thông tin của tất cả các sản phẩm trong danh sách ra màn hình
public void in_ra_man_hinh()
{
Console.WriteLine("Danh sach san pham: ");
foreach (Sanpham sanpham in this.list)
{

Console.WriteLine(sanpham.To_string());
}
}
}
}

Lớp Nhân viên
namespace QuanlyBanhang
{
class Nhanvien
{
static int cnt = 1;
int ID;
string ho_ten;
int tuoi;
string chuc_vu;
int so_nam_kinh_nghiem;
string so_dien_thoai, email;
// Constructor khởi tạo đối tượng
public Nhanvien(string ho_ten, int tuoi, string chuc_vu, int so_nam_kinh_nghiem, string
so_dien_thoai, string email)
{
this.ID = cnt++;
this.ho_ten = ho_ten;
this.tuoi = tuoi;
this.chuc_vu = chuc_vu;
this.so_nam_kinh_nghiem = so_nam_kinh_nghiem;
this.so_dien_thoai = so_dien_thoai;
this.email = email;
}

public int ID1 { get => ID; set => ID = value; }
public string Ho_ten { get => ho_ten; set => ho_ten = value; }

19


public int Tuoi { get => tuoi; set => tuoi = value; }
public string Chuc_vu { get => chuc_vu; set => chuc_vu = value; }
public int So_nam_kinh_nghiem { get => so_nam_kinh_nghiem; set => so_nam_kinh_nghiem
= value; }
public string So_dien_thoai { get => so_dien_thoai; set => so_dien_thoai = value; }
public string Email { get => email; set => email = value; }
// Trích xuất thơng tin đối tượng dưới dạng string
public string To_string()
{
return $"ID: {this.ID}\n" +
$"Ho ten: {this.ho_ten}\n" +
$"Tuoi: {this.tuoi}\n" +
$"Chuc vu: {this.chuc_vu}\n" +
$"So nam kinh nghiem: {this.so_nam_kinh_nghiem}\n" +
$"So dien thoai: {this.so_dien_thoai}\n" +
$"Email: {this.email}";
}
}
}

Lớp Quản lý nhân viên sử dụng ArrayList (mảng động)
using System;
using System.Collections;
namespace QuanlyBanhang

{
class DanhsachNhanvien
{
public ArrayList list;
public DanhsachNhanvien()
{
this.list = new ArrayList();
}
// Nhập và thêm mới đối tượng Nhân viên vào danh sách
public void them()
{
Console.WriteLine("Nhap thong tin nhan vien: ");
Console.WriteLine("Nhap ho ten nhan vien: ");

20


string ho_ten = Console.ReadLine();
Console.WriteLine("Nhap tuoi nhan vien: ");
int tuoi = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Nhap chuc vu nhan vien: ");
string chuc_vu = Console.ReadLine();
Console.WriteLine("Nhap so nam kinh nghiem: ");
int so_nam_kinh_nghiem = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Nhap so dien thoai: ");
string so_dien_thoai = Console.ReadLine();
Console.WriteLine("Nhap dia chi email: ");
string email = Console.ReadLine();
Nhanvien nhanvien = new Nhanvien(ho_ten, tuoi, chuc_vu, so_nam_kinh_nghiem,
so_dien_thoai, email);

this.list.Add(nhanvien);
}
// Tìm kiếm theo một số thông tin
public Nhanvien tim_kiem()
{
Console.WriteLine("Ban muon tim kiem nhan vien theo thong tin nao?");
Console.WriteLine("1. ID\n2. Ho ten\n3. So dien thoai\n4. Dia chi email");
int option = Convert.ToInt32(Console.ReadLine());
if (option == 1)
{
Console.WriteLine("Nhap ID: ");
int ID = Convert.ToInt32(Console.ReadLine());
foreach (Nhanvien nhanvien in this.list)
{
if (nhanvien.ID1 == ID) return nhanvien;
}
return null;
}
else if (option == 2)
{
Console.WriteLine("Nhap ten nhan vien: ");
string ho_ten = Console.ReadLine();
foreach (Nhanvien nhanvien in this.list)
{
if (nhanvien.Ho_ten.Equals(ho_ten)) return nhanvien;
}
return null;

21



}
else if (option == 3)
{
Console.WriteLine("Nhap so dien thoai: ");
string so_dien_thoai = Console.ReadLine();
foreach (Nhanvien nhanvien in this.list)
{
if (nhanvien.So_dien_thoai.Equals(so_dien_thoai)) return nhanvien;
}
return null;
}
else
{
Console.WriteLine("Nhap dia chi email: ");
string email = Console.ReadLine();
foreach (Nhanvien nhanvien in this.list)
{
if (nhanvien.Email.Equals(email)) return nhanvien;
}
return null;
}
}
// Các Comparer sử dụng để so sánh hai nhân viên theo một thuộc tính nào đó
class NameComparer : IComparer
{
// So sánh theo tên
int IComparer.Compare(object xx, object yy)
{
Nhanvien x = (Nhanvien) xx;

Nhanvien y = (Nhanvien) yy;
return x.Ho_ten.CompareTo(y.Ho_ten);
}
}
class AgeComparer : IComparer
{
// So sánh theo tuổi
int IComparer.Compare(object xx, object yy)
{
Nhanvien x = (Nhanvien) xx;
Nhanvien y = (Nhanvien) yy;

22


return x.Tuoi.CompareTo(y.Tuoi);
}
}
class ExperienceComparer : IComparer
{
// So sánh theo kinh nghiệm
int IComparer.Compare(object xx, object yy)
{
Nhanvien x = (Nhanvien) xx;
Nhanvien y = (Nhanvien) yy;
return x.So_nam_kinh_nghiem.CompareTo(y.So_nam_kinh_nghiem);
}
}
// Phương thức sắp xếp theo một thuộc tính nào đó của nhân viên
public void sap_xep()

{
// Sắp xếp sử dụng các Comparer để xếp hạng các nhân viên
Console.WriteLine("Ban muon sap xep cac nhan vien theo thong tin gi?");
Console.WriteLine("1. Ho ten\n2. Tuoi\n3. So nam kinh nghiem");
int option = Convert.ToInt32(Console.ReadLine());
switch (option)
{
case 1:
this.list.Sort(new NameComparer());
break;
case 2:
this.list.Sort(new AgeComparer());
break;
case 3:
this.list.Sort(new ExperienceComparer());
break;
}
}
// Phương thức in thông tin của tất cả nhân viên trong danh sách ra màn hình
public void in_ra_man_hinh()
{
Console.WriteLine("Danh sach nhan vien: ");
foreach (Nhanvien nhanvien in this.list)
{

23


Console.WriteLine(nhanvien.To_string());
}

}
}
}

V. KIỂM THỬ - LẬP BỘ TEST
Thực hiện chạy với bộ dữ liệu mẫu (Input-Output) đã xác định ở phần 2.
Cho biết kết quả khi chạy từng chức năng tương ứng trên bộ dữ liệu Input đó
Chụp hình ảnh kết quả chương trình tương ứng

24


×