Xây dựng lớp khách hàng c++

  1. Xây dựng lớp khách hàng c++
    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;
    }
    };