Bai Tap t2

#include <iostream> #include <Math.h> #include <conio.h> using namespace std; //-------------------------------------------------- // Class date bo sung cho chuc nang tinh lai class Date{ private: int d,m,y; public: Date(){ }; Date(int, int, int); void refresh(); int SubDateToMonth(Date); friend istream& operator >>(istream&i, Date &d); friend ostream& operator <<(ostream&o, Date &d); }; Date::Date(int a, int b, int c):d(a),m(b),y(c){ }; void Date::refresh(){ switch(this->m){ case 2:{ int max=(this->y%4==0)?28:29; if(this->d>max) { this->d=this->d-max; this->m++; this->refresh();} break; } case 1: case 3: case 5: case 7: case 8: case 10: case 12:{ if(this->d>31){ this->d-=31; this->m++; if(this->m>12) { this->m-=12; this->y++; } this->refresh(); } break; } case 4: case 6: case 9: case 11:{ if(this->d>30) { this->d=this->d-=30; this->m++; this->refresh();} break; } } } istream& operator >>(istream&i, Date &d){ int day, month, year; cout<<"Nhap ngay: "; i>>d.d; cout<<"Nhap thang: "; i>>d.m; cout<<"Nhap nam: "; i>>d.y; d.refresh(); return i; } ostream& operator <<(ostream&o, Date &d){ o<<"ngay "; o<<d.d; o<<" thang "; o<<d.m; o<<" nam "; o<<d.y; return o; } int Date::SubDateToMonth(Date d){ int temp = (this->y-d.y)*12; temp+=this->m-d.m; if(this->d<d.d) --temp; return temp; } //------------------------------------- // Class tai khoan class TaiKhoan{ protected: int id; double soDu; Date ngayLap; public: TaiKhoan(){ }; TaiKhoan(int, double, Date); virtual double TinhLai(Date )=0; friend int main(); }; TaiKhoan::TaiKhoan(int a, double b, Date t):id(a),soDu(b),ngayLap(t){ }; //--------------------------------- //Class Tai Khoan co ki han class TaiKhoanKyHan: public TaiKhoan{ private: float laisuat; int kihan; public: TaiKhoanKyHan(){ }; TaiKhoanKyHan(int,double,Date,int); double TinhLai(Date ); friend ostream& operator <<(ostream&o, TaiKhoanKyHan&tk); }; TaiKhoanKyHan::TaiKhoanKyHan(int a,double b,Date t,int c):TaiKhoan(a,b,t), kihan(c){ this->laisuat=0.015*this->kihan+((this->kihan-1)*0.003); }; double TaiKhoanKyHan::TinhLai(Date t){ int soThang = t.SubDateToMonth(this->ngayLap); int soLanTinhLai = (int)soThang/kihan; double lai = this->soDu*pow((1 + this->laisuat),soLanTinhLai) - this->soDu; return lai; }; ostream& operator <<(ostream&o, TaiKhoanKyHan&tk){ o<<"ID: "<<tk.id<<endl; o<<"So du: "<<tk.soDu<<endl; o<<"Loai tai khoan: Tai khoan co ky han"<<endl; o<<"Ky han: "<<tk.kihan<<endl; o<<"Lai suat 1 chu ki: "<<tk.laisuat*100<<"%"<<endl; o<<"Ngay lap: "<<tk.ngayLap<<endl; o<<"----------------------"<<endl; return o; } //---------------------------- // Class tai khoan k co ki han class TaiKhoanKhongKyHan: public TaiKhoan{ private: float laisuat = 0.01; public: TaiKhoanKhongKyHan(){ }; TaiKhoanKhongKyHan(int,double,Date); double TinhLai(Date ); friend ostream& operator <<(ostream&o, TaiKhoanKhongKyHan&tk); }; TaiKhoanKhongKyHan::TaiKhoanKhongKyHan(int a,double b,Date t):TaiKhoan(a,b,t){ }; double TaiKhoanKhongKyHan::TinhLai(Date t){ double lai = this->soDu*pow((1 + this->laisuat),t.SubDateToMonth(this->ngayLap)) - this->soDu; return lai; }; ostream& operator <<(ostream&o, TaiKhoanKhongKyHan&tk){ o<<"ID: "<<tk.id<<endl; o<<"So du: "<<tk.soDu<<endl; o<<"Loai tai khoan: Tai khoan khong ky han"<<endl; o<<"Lai suat 1 thang: "<<tk.laisuat*100<<"%"<<endl; o<<"Ngay lap: "<<tk.ngayLap<<endl; o<<"----------------------"<<endl; return o; } //---------------------------- // Class quan li class QuanLi{ private: int n1,n2,idmax; TaiKhoanKhongKyHan *t1; TaiKhoanKyHan *t2; Date now; public: QuanLi(); void Add(TaiKhoanKhongKyHan); void Add(TaiKhoanKyHan); void ShowKiHan(); void ShowKhongKiHan(); void TinhLai(); friend istream& operator >>(istream&i, QuanLi&ql); friend int main(); }; QuanLi::QuanLi(){ this->idmax=1; this->n1=0; this->n2=0; t1 = NULL; t2 = NULL; } void QuanLi::Add(TaiKhoanKyHan tk){ this->n2++; TaiKhoanKyHan *temp = this->t2; this->t2 = new TaiKhoanKyHan[this->n2]; for(int i=0; i<this->n2-1; i++){ this->t2[i]=temp[i] ; } this->t2[this->n2-1] = tk; } void QuanLi::Add(TaiKhoanKhongKyHan tk){ this->n1++; TaiKhoanKhongKyHan *temp = this->t1; this->t1 = new TaiKhoanKhongKyHan[this->n1]; for(int i=0; i<this->n1-1; i++){ this->t1[i]=temp[i] ; } this->t1[this->n1-1] = tk; } istream& operator >>(istream&i, QuanLi&ql){ double sodu; Date date; int kihan; cout<<"------------"<<endl; cout<<"ID: "<<ql.idmax<<endl; cout<<"Nhap so du: "; i>>sodu; cout<<"Nhap ngay tao:"<<endl; i>>date; cout<<"Nhap ki han: "; i>>kihan; if(kihan==1){ ql.Add(TaiKhoanKhongKyHan(ql.idmax,sodu,date)); ++ql.idmax; } else { ql.Add(TaiKhoanKyHan(ql.idmax,sodu,date,kihan)); ++ql.idmax; } return i; }; //---------------------------- int main(){ QuanLi quanli; bool cou = true; while(cou){ int choise; system("cls"); cout<<"QUAN LI TAI KHOAN"<<endl; cout<<"Vui long chon chuc nang: "<<endl; cout<<"1. Them tai khoan"<<endl; cout<<"2. Xem toan bo tai khoan"<<endl; cout<<"3. Xem toan bo tai khoan khong ky han"<<endl; cout<<"4. Xem toan bo tai khoan khong ky han"<<endl; cout<<"5. Xem thong tin cua 1 tai khoan"<<endl; cout<<"6. Xem lai cua 1 tai khoan"<<endl; cout<<"7. Ket thuc chuong trinh"<<endl; cout<<"Chon: "; cin>>choise; switch(choise){ case 1:{ system("cls"); int n; cout<<"Nhap so luong tai khoan: "; cin>>n; for(int i=0; i<n; i++) cin>>quanli; cout<<"Da nhap xong, nhan phim bat ki de tiep tuc"; getch(); break; } case 2:{ system("cls"); for(int i=0; i<quanli.n1; i++ ){ cout<<quanli.t1[i]; }; for(int i=0; i<quanli.n2; i++ ){ cout<<quanli.t2[i]; }; cout<<"Nhan phim bat ki de tiep tuc"; getch(); break; } case 3:{ system("cls"); for(int i=0; i<quanli.n1; i++ ){ cout<<quanli.t1[i]; }; cout<<"Nhan phim bat ki de tiep tuc"; getch(); break; } case 4:{ system("cls"); for(int i=0; i<quanli.n2; i++ ){ cout<<quanli.t2[i]; }; cout<<"Nhan phim bat ki de tiep tuc"; getch(); break; } case 5:{ system("cls"); int id; begin: cout<<endl<<"Nhap id: "; cin>>id; bool check = false; for(int i = 0; i<quanli.n1; i++){ if (quanli.t1[i].id==id){ check=true; cout<<quanli.t1[i]; break; } } for(int i = 0; i<quanli.n2; i++){ if (quanli.t2[i].id==id){ check=true; cout<<quanli.t2[i]; break; } } if(!check){ cout<<"Khong tim duoc id, id cao nhat la "<<quanli.idmax-1<<endl; cout<<"Vui long chon lai id"<<endl; getch(); goto begin; } cout<<endl<<"Nhan phim bat ki de tiep tuc"; getch(); break; } case 6:{ system("cls"); Date date; int id; cout<<"Ngay de tinh lai: "; cin>>date; begin1: cout<<endl<<"Nhap id: "; cin>>id; static bool check = false; for(int i = 0; i<quanli.n1; i++){ if (quanli.t1[i].id==id){ check=true; cout<<quanli.t1[i]; cout<<"Lai suat tinh den "<<date<<"la: "; cout<<quanli.t1[i].TinhLai(date); break; } } for(int i = 0; i<quanli.n2; i++){ if (quanli.t2[i].id==id){ check=true; cout<<quanli.t2[i]; cout<<"Lai suat tinh den "<<date<<" la: "; cout<<quanli.t2[i].TinhLai(date); break; } } if(!check){ cout<<"Khong tim duoc id, id cao nhat la "<<quanli.idmax-1<<endl; cout<<"Vui long chon lai id"<<endl; getch(); goto begin1; } cout<<endl<<"Nhan phim bat ki de tiep tuc"; getch(); break; } case 7:{ cou = false; break; } default:{ cout<<endl<<"Nhap sai!"<<endl<<"Nhan phim bat ki de tiep tuc"; getch(); break; } } } }

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.