Lập trình hướng đối tượng
ĐỀ SỐ 3: QUẢN LÝ BÁN HÀNG TRONG SIÊU THỊ
Khai báo lớp Người (Họ tên, Địa chỉ, Số ĐT)
Khai báo lớp Khách hàng kế thừa từ lớp Người và có thêm (mã KH, loại KH), mã KH là một số nguyên có 5 chữ số, tự động tăng. Loại KH có thể là: Mua lẻ hoặc Mua buôn.
Khai báo lớp Mặt hàng gồm các thuộc tính (mã hàng, Tên hàng, Nhóm hàng, Giá bán) – trong đó Nhóm hàng có thể là: Hàng thời trang, Hàng tiêu dùng, Hàng điện máy, Hàng gia dụng. Mã hàng là một số nguyên có 4 chữ số, tự động tăng.
Khai báo lớp Bảng Danh sách mua hàng là bạn của lớp Khách hàng và lớp Mặt hàng trong đó với mỗi khách hàng, nhập danh sách các mặt hàng và số lượng mà khách hàng đó mua. Giả sử mỗi khách hàng không mua quá 10 loại mặt hàng một lần.
Viết chương trình trong ngôn ngữ C++ thực hiện các yêu cầu sau:
- Nhập thêm mặt hàng mới vào file MH.DAT. In ra danh sách các mặt hàng đã có trong file.
- Nhập thêm khách hàng vào file KH.DAT. In ra danh sách khách hàng đã có trong file.
- Lập Bảng danh sách mua hàng cho từng khách hàng, lưu vào file QLBH.DAT và in danh sách ra màn hình (chú ý: cùng một khách hàng với một mặt hàng thì không thể xuất hiện 2 lần trong bảng này).
- Sắp xếp danh sách Bảng danh sách mua hàng đã lưu trong QLBH.DAT
a. Theo tên khách hàng
b. Theo tên mặt hàng - Lập hóa đơn cho mỗi khách hàng.
em đã làm được gần hết nhưng đến câu 4-b em không biết xử lí thế nào mong anh chị giúp em ! em cảm ơn
#include
#include
#include <string.h>
using namespace std;
class nguoi{
protected :
string ht,dc;
int sdt;
};
int ma=10000;
class khachhang : public nguoi{
public :
int makh;
string loaikh;
string getht() {
return this->ht;
}
void nhapTT()
{
cin.ignore();
cout<<"
Nhap Ten khach hang la : “;
getline(cin,ht);
cout<<”
Nhap loai khach hang la : “;
getline(cin,loaikh);
makh=ma++;
}
void inTT()
{
ofstream fp;
fp.open(“KH.DAT.txt”,fstream::app);
cout<<”
Ma KH la : “<<makh<<” Ho Ten la : “<<ht<<” Loai KH la : “<<loaikh;
fp<<”
Ma KH la : “<<makh<<” Ho Ten la : “<<ht<<” Loai KH la : “<<loaikh;
fp.close();
}
friend class bangdangki;
};
int ma1=1000;
class hanghoa{
public :
int mahang;
string tenhang,nhomhang;
int giaban;
void nhapTT()
{
cin.ignore();
cout<<”
Nhap ten hang la : “;
getline(cin,tenhang);
cout<<”
Nhap nhom hang la : “;
getline(cin,nhomhang);
cout<<”
Nhap gia ban la : “;
cin>>giaban;
mahang=ma1++;
}
void inTT()
{
ofstream fp;
fp.open(“MH.DAT.txt”,fstream::app);
fp<<”
Ma MH la : “<<mahang<<” Ten Hang la : “<<tenhang<<” Nhom Hang la : “<<nhomhang<<” Voi Gia Ban La : "<<giaban;
fp.close();
}
friend class bangdangki;
};
class bangdangki{
public :
khachhang kh;
int sohangdamua;
hanghoa *bpchanghoa;
public :
void nhapTT(int soluonghang,int soluongkhach,hanghoa qlmh[],khachhang qlkh[])
{
int khachtempo=0;
cout<<"
Nhap MA KHACH HANG LA : ";
cin>>khachtempo;
for(int i=0;i<soluongkhach;i++)
{
if(khachtempo=qlkh[i].makh) {
kh=qlkh[i];
}
}
sohangdamua=0;
cout<<"
Nhap SO LUONG HANG DA MUA LA : ";
cin>>sohangdamua;
bpchanghoa=new hanghoa[sohangdamua];
for(int i=0;i<sohangdamua;i++)
{
int hangtempo=0;
cout<<"
Nhap MA HANG HOA LA : ";
cin>>hangtempo;
for(int j=0;j<soluonghang;j++)
{
if(hangtempo==qlmh[j].mahang) {
bpchanghoa[i]=qlmh[j];
}
}
}
}
void inTT()
{
ofstream fp;
fp.open("QLBH.DAT.txt",fstream::app);
fp<<"
MA KHACH HANG LA : "<<kh.makh<<" Ten KH la : "<<kh.ht<<" Loai KH La : "<<kh.loaikh<<" DA MUA : ";
for(int i=0;i<sohangdamua;i++)
{
fp<<"
MA HANG LA : "<<bpchanghoa[i].mahang<<" TEN HANG LA : "<<bpchanghoa[i].tenhang<<" NHOM : "<<bpchanghoa[i].nhomhang<<" GIA BAN LA : "<<bpchanghoa[i].giaban;
}
fp.close();
}
};
int main()
{
khachhang *qlkh;
int soluongkhach=0;
cout<<"
Nhap so luong khach la : “;
cin>>soluongkhach;
qlkh=new khachhang[soluongkhach];
for(int i=0;i<soluongkhach;i++)
{
qlkh[i].nhapTT();
}
for(int i=0;i<soluongkhach;i++)
{
qlkh[i].inTT();
}
hanghoa *qlmh;
int soluonghang=0;
cout<<”
Nhap so luong hang hoa la : “;;
cin>>soluonghang;
qlmh=new hanghoa[soluonghang];
for(int i=0;i<soluonghang;i++)
{
qlmh[i].nhapTT();
}
for(int i=0;i<soluonghang;i++)
{
qlmh[i].inTT();
}
int songuoimua=0;
cout<<”
Nhap so nguoi dang ki la : ";
cin>>songuoimua;
bangdangki *bpc;
bpc=new bangdangki[songuoimua];
for(int i=0;i<songuoimua;i++)
{
bpc[i].nhapTT(soluonghang,soluongkhach,qlmh,qlkh);
}
for(int i=0;i<songuoimua;i++)
{
bpc[i].inTT();
}
//cau 5-a
for(int i=0;i<songuoimua;i++)
{
for(int j=i+1;j<songuoimua;j++)
{
if(bpc[i].kh.getht()>bpc[j].kh.getht()) {
bangdangki tempo=bpc[i];
bpc[i]=bpc[j];
bpc[j]=tempo;
}
}
}
for(int i=0;i<songuoimua;i++)
{
bpc[i].inTT();
}
//cau 5-b
for(int i=0;i<songuoimua;i++)
{
for(int j=i+1;j<songuoimua;j++)
{
if(bpc[i].bpchanghoa.tenhang>bpc[j].bpchanghoa.tenhang) {
bangdangki tempo=bpc[i];
bpc[i]=bpc[j];
bpc[j]=tempo;
}
}
}
for(int i=0;i<songuoimua;i++)
{
bpc[i].inTT();
}
}
em còn câu 4-b nữa không biết cách làm