Hướng dẫn làm bài OOP quản lý danh sách sổ tiết kiệm

ĐỀ SỐ 15: QUẢN LÝ DANH SÁCH SỔ TIẾT KIỆM

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à bổ sung các thuộc tính (mã KH, Loại KH) - với loại khách hàng có thể là: cá nhân, tập thể, doanh nghiệp, mã KH là một số nguyên có 5 chữ số, tự động tăng.

Khai báo lớp Ngân hàng (mã NH, tên NH, lãi suất tiền gửi), mã NH là một số nguyên có 3 chữ số, tự động tăng.

Khai báo lớp Số tiết kiệm là bạn của lớp Khách hàng và lớp Ngân hàng trong đó một khách hàng có thể lập một hoặc nhiều số tiết kiệm với một hoặc nhiều ngân hàng.

Viết chương trình trong ngôn ngữ C++ thực hiện các yêu cầu sau:

  1. 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.
  2. Nhập thêm ngân hàng vào file NGANHANG.DAT. In ra danh sách ngân hàng đã có trong file.
  3. Nhập danh sách Sổ tiết kiệm cho mỗi khách hàng đã có trong file KH.DAT;
    (mỗi khách hàng với một ngân hàng có thể có nhiều sổ khác nhau nhưng không quá 5 sổ, mỗi sổ sẽ có số tiền gửi tương ứng), lưu danh sách vào file SOTK.DAT và in ra màn hình.
  4. Sắp xếp danh sách Sổ tiết kiệm đã lưu trong SOTK.DAT
    a. Theo Họ tên khách hàng
    b. Theo Tên Số tiền gửi
  5. Lập bảng kê tổng số tiền gửi cho mỗi khách hàng

Tốt nhất là em đưa đoạn code mà em làm. Lên đây hỏi đoạn code mình viết sai chỗ nào.
Chứa đưa như vậy thì không ai giúp cả.

2 Likes

code của e đang trong quá trình làm

vậy em cứa làm đi, tới khúc nào không hiểu thì lên đây hỏi.

sao lại có lỗi ở dòng getline vậy. ``Class KhachHang kế thừa từ Class Nguoivà > bây giờ e muốn nhập tên Khách Hàng

4 posts were merged into an existing topic: Topic lưu trữ các post off-topic - version 3

~Khachhang là gì bạn? @@ đừng nói là destructor nha

nhưng mình x . một cái gì đó thì nó lại chỉ ra ~KhachHang thôi

Chào chế, Ptiter đây, tham khảo nhé:
ĐỀ SỐ 10: QUẢN LÝ TÍNH CÔNG THEO SẢN PHẨM

Khai báo lớp Người (Họ tên, Địa chỉ, Số ĐT)
Khai báo lớp Công nhân kế thừa từ lớp Người và bổ sung các thuộc tính (mã CN, Ca sản xuất) – trong đó ca sản xuất có thể là: ca sáng, ca chiều hoặc ca đêm, mã CN là một số nguyên có 5 chữ số, tự động tăng.
Khai báo lớp Sản phẩm (mã SP, tên SP, đơn giá), mã SP là một số nguyên có 5 chữ số, tự động tăng.
Khai báo lớp Bảng Tính Công là bạn của lớp Công nhân và lớp Sản phẩm trong đó một công nhân sẽ thực hiện sản xuất nhiều sản phẩm cùng loại hoặc nhiều loại sản phẩm khác nhau. Giả sử mỗi công nhân chỉ được tham gia sản xuất tối đa 5 loại sản phẩm khác nhau.
Viết chương trình trong ngôn ngữ C++ thực hiện các yêu cầu sau:

  1. Nhập thêm công nhân vào file CN.DAT. In ra danh sách công nhân đã có trong file.
  2. Nhập thêm sản phẩm vào file SP.DAT. In ra danh sách sản phẩm đã có trong file.
  3. Lập Bảng tính công cho công nhân bằng cách nhập các loại sản phẩm mà mỗi công nhân đã có trong file CN.DAT đã sản xuất cùng số lượng tương ứng; lưu vào file TINHCONG.DAT và in danh sách ra màn hình. (Chú ý: một công nhân với cùng một loại sản phẩm không được phép xuất hiện quá một lần trong bảng này)
  4. Sắp xếp danh sách Bảng tính công đã lưu trong TINHCONG.DAT
    a. Theo Họ tên Công nhân
    b. Theo Số lượng sản phẩm (giảm dần)
  5. Lập bảng kê thu nhập của mỗi công nhân
#include<iostream>
#include<fstream>
using namespace std;
class Nguoi{
	protected:
		string ht="",dc="",sdt="";
};
int maCongNhan=10000;
class CongNhan:public Nguoi{
	private:
		int maCN;
		string caSX="";
		public:
			void nhapTT(){
				this->setmaCN(maCongNhan++);
				cin.ignore();
				cout<<endl<<"Nhap vao ho ten:";
				getline(cin,ht);
				cout<<endl<<"Nhap vao dia chiL:";
				getline(cin,dc);
				cout<<endl<<"Nhap vao so dien thoai:";
				getline(cin,sdt);
				cout<<endl<<"Nhap vao ca san xuat:";
				getline(cin,caSX);
			}
			void inTT(){
				cout<<endl<<"****************"<<endl
				<<"Ho ten:"<<this->getht()<<"----"<<this->getmaCN()<<endl
				<<"Dia chi:"<<this->getdc()<<endl
				<<"So dien thoai:"<<this->getdc()<<endl
				<<"Ca san xuat:"<<this->getcaSX();
				
			}
			void infile(){
				ofstream fileCN;
				fileCN.open("F:\\CN_10.DAT",ios::app);
				fileCN<<endl<<"****************"<<endl
				<<"Ho ten:"<<this->getht()<<"----"<<this->getmaCN()<<endl
				<<"Dia chi:"<<this->getdc()<<endl
				<<"So dien thoai:"<<this->getdc()<<endl
				<<"Ca san xuat:"<<this->getcaSX();
				fileCN.close();
			}
			void setht(string ht){
				this->ht=ht;
			}
			string getht(void){
				return this->ht;
			}
			void setdc(string dc){
				this->dc=dc;
			}
			string getdc(void){
				return this->dc;
			}
			void setsdt(string sdt){
				this->sdt=sdt;
			}
			string getsdt(void){
				return this->sdt;
			}
			void setmaCN(int maCN){
				this->maCN=maCN;
			}
			int getmaCN(void){
				return this->maCN;
			}
			void setcaSX(string caSX){
				this->caSX=caSX;
			}
			string getcaSX(void){
				return this->caSX;
			}
			friend class BTC;
};
int maSanPham=10000;
class SanPham{
	private:
		int maSP;
		string tenSP="";
		string donGia="";
		public:
		void nhapTT(){
			cin.ignore();
			this->setmaSP(maSanPham++);
			cout<<endl<<"Nhap vao ten san pham:";
			getline(cin,tenSP);
			cout<<endl<<"Nhap vao don gia:";
			getline(cin,donGia);
			
		}
		void inTT(){
			cout<<endl<<"*************"<<endl
			<<"Ten san pham:"<<this->gettenSP()<<"-----"<<this->getmaSP()<<endl
			<<"Don gia:"<<this->getdonGia();
		}
		void infile(){
			ofstream fileSP;
			fileSP.open("F:\SP_9.DAT",ios::app);
			fileSP<<endl<<"*************"<<endl
			<<"Ten san pham:"<<this->gettenSP()<<"-----"<<this->getmaSP()<<endl
			<<"Don gia:"<<this->getdonGia();
			fileSP.close();
		}
		void setmaSP(int maSP){
			this->maSP=maSP;
		}
		int getmaSP(void){
			return this->maSP;
		}
		void settenSP(string tenSP){
			this->maSP=maSP;
		}
		string gettenSP(void){
			return this->tenSP;
		}
		void setdonGia(string donGia){
			this->donGia=donGia;
		}
		string getdonGia(void){
			return this->donGia;
		}
		friend class BTC;	
};
class BTC{
	public:
		int tongsanpham[10]={0};
		CongNhan cn;
		SanPham sp[10];
		int soLuongSanPham;
		int soLuongSanPhamTrongNgay[20];
		void nhapTT(int soCN,int soSP,CongNhan dscn[],SanPham dssp[]){
			int maCNTemp;
			cout<<endl<<"Nhap vao ma cong nhan:";
			cin>>maCNTemp;
			for(int i=0;i<soCN;i++){
				if(dscn[i].getmaCN()==maCNTemp){
					this->cn=dscn[i];
					this->cn.inTT();
				}
			}
			int maSPTemp;
			cout<<endl<<"Nhap vao so luong san pham:";
			cin>>soLuongSanPham;
			for(int j=0;j<soLuongSanPham;j++){
				cout<<endl<<"Nhap vao ma san pham:";
				cin>>maSPTemp;
				for(int i=0;i<soSP;i++){
					if(dssp[i].getmaSP()==maSPTemp){
						this->sp[j]=dssp[i];
						this->sp[j].inTT();
					}
				}
				cout<<endl<<"Nhap vao so luong san pham lam trong ngay:";
				cin>>soLuongSanPhamTrongNgay[j];
				
			}
			for(int i=0;i<soCN;i++){
				for(int j=0;j<soLuongSanPham;j++){
					tongsanpham[i]+=soLuongSanPhamTrongNgay[j];
				}
			}
		}
		void inTT(){
			cout<<endl<<"************"<<endl
			<<this->cn.getht()<<"----"<<this->cn.getmaCN()<<endl
			<<"Dia chi:"<<this->cn.getdc()<<endl
			<<"so dien thoai:"<<this->cn.getsdt()<<endl
			<<"ca san xuat:"<<this->cn.getcaSX();
			for(int j=0;j<this->soLuongSanPham;j++){
				cout<<endl<<"Loai san pham:"<<this->sp[j].gettenSP()<<"-----"<<this->sp[j].getmaSP()<<endl
				<<"So luong san pham:"<<this->soLuongSanPhamTrongNgay[j];
			}
		}
		
		void infile(){
			ofstream fileBTC;
			fileBTC.open("F:\\TINHCONG_10.DAT",ios::app);
			fileBTC<<endl<<"************"<<endl
			<<this->cn.getht()<<"----"<<this->cn.getmaCN()<<endl
			<<"Dia chi:"<<this->cn.getdc()<<endl
			<<"so dien thoai:"<<this->cn.getsdt()<<endl
			<<"ca san xuat:"<<this->cn.getcaSX();
			fileBTC.close();
			for(int j=0;j<soLuongSanPham;j++){
				fileBTC.open("F\\TINHCONG.DAT",ios::app);
				fileBTC<<endl<<"Loai san pham:"<<this->sp[j].gettenSP()<<"-----"<<this->sp[j].getmaSP()<<endl
				<<"So luong san pham:"<<this->soLuongSanPhamTrongNgay[j];
				fileBTC.close();
			}
		}
	
};
int main(){
	CongNhan *CN;
	int soCN;
	cout<<"Nhap vao so luong cong nhan:";
	cin>>soCN;
//cau 1
	CN= new CongNhan[soCN];
	for(int i=0;i<soCN;i++){
		cout<<endl<<"Nhap thong tin cong nhan thu "<<i+1<<":";
		CN[i].nhapTT();
	}
	for(int i=0;i<soCN;i++){
		cout<<endl<<"Thongt tin cong nhan thu "<<i+1<<":";
		CN[i].infile();
		CN[i].inTT();
	}
//Cau 2
	SanPham *SP;
	int soSP;
	cout<<endl<<"Nhap vao so san pham:";
	cin>>soSP;
	SP= new SanPham[soSP];
	for(int j=0;j<soSP;j++){
		cout<<endl<<"Nhap vao thong tin san pham thu "<<j+1<<":";
		SP[j].nhapTT();
		
	}
	for(int j=0;j<soSP;j++){
		cout<<endl<<"Thong tin san pham thu "<<j+1<<":";
		SP[j].inTT();
		SP[j].infile();
	}
//Cau 3
	BTC *btc;
	cout<<endl<<"Nhap vao so luong bang tinh cong:";
	int soLuongBTC;
	cin>>soLuongBTC;
	btc= new BTC[soLuongBTC];
	for(int i=0;i<soLuongBTC;i++){
		btc[i].nhapTT(soCN,soSP,CN,SP);
	}
//Cau 4
	for(int i=0;i<soLuongBTC;i++){
		for(int j=i+1;j<soLuongBTC;j++){
			if(CN[i].getht()>CN[j].getht()){
			
			BTC btcTemp=btc[i];
			btc[i]=btc[j];
			btc[j]=btcTemp;
			}
		}
		
	}
	
	for(int i=0;i<soLuongBTC;i++){

		cout<<endl<<"+++++++++++++++++++++"<<endl<<"Bang cham cong thu"<<i+1<<":";
		btc[i].inTT();
		btc[i].infile();
	}
	cout<<endl<<"Xep theo so luong san pham:";
		for(int i=0;i<soLuongBTC;i++){
		for(int j=i+1;j<soLuongBTC;j++){
			if(btc[i].tongsanpham[i]>btc[j].tongsanpham[i+1]){
			BTC btcTemp=btc[i];
			btc[i]=btc[j];
			btc[j]=btcTemp;
			}
		}
		for(int i=0;i<soLuongBTC;i++){
		cout<<endl<<"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"<<endl<<"Bang cham cong thu"<<i+1<<":";
		btc[i].inTT();
		btc[i].infile();
	}
	}
	
	
}

ptit kìa :smiley:
mình làm theo menu

sao bài này có làm theo cách in từ trong file ra bây giờ mình dùng toán tử operator<< được k nhỉ

dùng như mình đó bạn! in từ file ra là sao bạn! đọc file oy lấy thông tin trong file hả?

A post was merged into an existing topic: Topic lưu trữ các post off-topic - version 3

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?