- Xây dựng lớp dữ liệu quản lí khách hàng
Để hỗ trợ hiện thực một hệ thống quản lý khách hàng [CRM – customer relation
management], chúng ta cần xây dựng một class Customer và một class CRM với mục đích
nhưsau:
- Customer: lưu trữ thông tin, những thuộc tính và phương thức cần thiết để thao tác với
các thực thể khách hàng như sau:
o Khách hàng có thểlà cá nhân hoặc đại diện cho một cơ quan, doanh nghiệp nào
đó.
o Trường hợp khách hàng mang tính chất cá nhân, cần lưu những thông tin cá nhân
sau: mã khách hàng, họ và tên, và các thông tin bổ sung như tên viết tắt [biệt
danh], địa chỉ, ngày sinh [bao gồm ngày tháng và năm], mã dịch vụ [kiểu số nguyên, ở đây chúng ta không cần quan tâm đến tên cụ thểcủa dich vụ], số lần sử
dụng dịch vụ, chí phí và thời gian [ngày, giờ] mỗi lần sửdụng dịch vụ
o Trường hợp khách hàng đại diện cho doanh nghiệp, ngoài thông tin cá nhân cần
lưu thêm thông tin vềdoanh nghiệp như: mã sốthuế, tên doanh nghiệp, địa chỉ,
điện thoại, fax, email, địa chỉ website doanh nghiệp
o Loại thẻcủa khách hàng [thẻ vàng, thẻ bạc, thẻ thông thường]
- CRM: quản lý danh sách tất cả khách hàng [nghĩa là chứa một mảng các đối tượng thuộc
lớp Customer]
Sau đây, sinh viên cần khai báo các thuộc tính và phương thức của các lớp CRM và
Customerbằng ngôn ngữC++ thỏa mãn các yêu cầu sau:
a] [1 điểm] Hãy khai báo các thuộc tính cần thiết như đặc tảbên trên của hai lớp CRMvà
Customer.
Giảsử, chúng ta đã có sẵn đối tượng DateTimenhưsau :
class DateTime{int hour, minute, second, day, month, year;}
và khai báo kiểu liệt kê Card cho sẵn nhưsau :
enum Card {GodenCard, SilverCard, NormalCard }
b] [0,5 điểm] Xây dựng những hàm tạo của Customer để có thể tạo và nạp thông tin chi tiết
nhanh chóng: loại khách hàng [cá nhân hay doanh nghiệp, tên, ngày sinh].
c] [1 điểm] Trong class CRM, viết một phương thức hỗ trợ thêm một khách hàng mới, hãy
dùng vòng lặp do..while đểkiểm tra xem đã có chứa thông tin của khách hàng này chưa;
nếu có sẵn thông tin thì không cần thêm vào, trường hợp ngược lại thì thêm vào cuối danh
sách.
d] [1 điểm] Xây dựng một phương thức trong class CRM, cho phép tìm kiếm một đối tượng
theo tên của khách hàng và trảvề đối tượng Customerlưu trữthông tin tương ứng [trảvề
NULLnếu không tìm thấy]
o Hãy sửdụng vòng lặp while[]{ …} đểhiện thực
o Hãy sửdụng kỹthuật gọi đệquy đểhiện thực
e] [0,5 điểm] Xây dựng những phương thức trong Customercho phép truy xuất và sửa chữa
thông tin của khách hàng: thay đổi [nâng cấp] thẻ của một khách hành [thẻ vàng, thẻ bạc, hay thông thường] và làm thếnào để xác định một khách hàng là thuộc dạng cá nhân hay
là doanh nghiệp.
f] [0,5 điểm] Viết một phương thức trong Customertrảvềcùng lúc sốlượng dịch vụsử
dụng và tổng sốtiền dịch vụthu được từkhách hàng.
g] [0,5 điểm] Xây dựng những phương thức trong CRM, cho phép chỉnh sửa thông tin
khách hàng có mã là ‘ID’ nhưlà: họtên, tên viết tắt, địa chỉ, ngày sinh.
h] [1 điểm] Viết phương thức void useService[int serviceCode, int servicePrice]cho phép
nhập vào thông tin của dịch vụsau mỗi lần sử dụng cho cảhai lớp đối với một khách
hàng. Lưu ý rằng cần nhập thông tin vềthời gian sử dụng dịch vụ, ở đây chúng ta đơn
giản hóa bằng cách lưu trữthời điểm lưu trữthông tin. Giả sử trong thưviện, ta có sẵn
hàm void time[DateTime &x]sẽgán thời điểm gọi hàm vào biến x.
i] [1 điểm] Hãy dùng từ khóa static để khai báo thêm các thuộc tính cần thiết trong lớp
Customervà sau đó viết các phương thức hổtrợviệc tính thống kê trong lớp CRMnhư:
o số lượng khách riêng lẻ[cá nhân],
o số lượng khách là doanh nhân,
o tổng sốlượng khách hàng,
o tỷlệkhách doanh nhân trên tổng số,
j] [0,5 điểm] Hãy sửdụng kỹthuật gọi đệ quy để xây dựng phương thức trong CRM để
hiển thịthông tin khách hàng theo thứ tự trong bảng chữcái.
o Giảsửcho sẵn hàm so sánh giữa hai chuỗi compare[char* s1, char* s2]: trảvề
giá trị“true” nếu như s1 đứng trước s2theo thứtựtrong bảng chữcái, và trảvề
“false” trong trường hợp ngược lại.
k] [0,5 điểm] Viết hàm main, tạo một lớp CRMvà nhập vào khoảng 5 khách hàng cá nhân
và 5 doanh nhân; sau đó, xuất ra các thông tin thống kê cho sẵn.Ý tưởng của em là xây dựng 2 lớp cá nhân và doanh nghiệp rồi nạp vào customer nhưng đến chỗ xử lí xây dựng hàm tạo nạp vào cá nhân hay doanh nghiêp em không biết phải làm sao.
Có ai biết giúp em với.
class canhan
{
protected:
int ID;
char name[MAX_NAME_LENGTH];
char phone[MAX_PHONE_LENGTH];
char ngaysinh[10];
public:
canhan *nextcanhan;
};
class doanhnghiep:protected canhan
{
protected:
int masothue;
char diachi[100];
public:
doanhnghiep *nextdoanghiep;
};
class customer
{
private:
canhan x;
doanhnghiep y;
canhan *headca;
canhan *tailca;
doanhnghiep *headdoanh;
doanhnghie *taildoanh;
public:
customer[int m,char *ten, char *sinh];
customer[]
{
headca=NULL;
headdoanh=NULL;
}
};