Tin
//Bai 1:
Câu 1:
Khai báo các lớp với các biến thành phần (private hoặc protected) sau:
-
Lớp Xâu ký tự có tên là String(char *a ; int n)
Câu 2:
Viết chương trình thực hiện các phép toán với các hàm và toán tử của các lớp như sau:
1. Hàm string khởi tạo một xâu rỗng
2. Hàm string khởi tạo một xâu từ một xâu kiểu char *
3. Toán tử + nối hai xâu ký tựsử dụng hàm thành phần
4. Toán tử - nối hai xâu ký tự ( bỏ các dấu cách cuối xâu đầu tiên)
sử dụng hàm friend
5. Hàm xem xem string trên màn hình
6. Hàm doichuhoa đổi xâu từ chữ thường thành chữ hoa
7. Hàm trichtrai trích n ký tự bên trái của xâu
8. Hàm timkiem tìm một xâu trong xâu khác có hay không
9. Hàm thaythe tìm một xâu trong xâu khác và thay thế bằng xâu khác
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<fstream>
#include<string.h>
#include<cstdlib>
using namespace std;
class String
{
protected:
char *a;
int n,len;
public:
String()
{
len=0;a=0;
}
String(char *b)
{
len=strlen(b);
a= new char[len+1];
strcpy(a,b);
}
String operator + (String);
void xem();
void doichuhoa();
void trichtrai();
void timkiem();
friend int main();
};
String String::operator + (String c)
{
len=len+c.len;
strcat(a,c.a);
return a;
}
void String::doichuhoa()
{
a=strupr(a);
}
void String::trichtrai()
{
cout<<"
Nhap n: "; cin>>n;
int i=1;
cout<<"
Xau sau khi trich trai: ";
for (int i=0;i<=n-1;i++) cout<<a[i];
}
void String::timkiem()
{
}
void String::xem()
{
cout<<a;
}
main()
{
char *b=new char[10],*c=new char[10];
cout<<"
Nhap xau khoi tao: "; fflush(stdin); gets(b); fflush(stdin);
String st(b);
cout<<"
Xau da nhap: ";
st.xem();
cout<<"
";
cout<<"
Nhap xau can noi: "; fflush(stdin); gets(c); fflush(stdin);
String c1=String(c);
st=st+c1;
cout<<"
Xau da noi: ";
st.xem();
cout<<"
Doi sang chu hoa: ";
st.doichuhoa();
st.xem();
st.trichtrai();
}
Bài 2
Câu 1:
Khai báo các lớp với các biến thành phần (private hoặc protected) sau:
- Lớp Véc tơ có tên là vecto( *a, n)
-
Lớp Ma trận có tên là matran(**b, m, n)
Câu 2:
Viết chương trình thực hiện các phép toán với các hàm và toán tử của các lớp như sau:
1. Hàm nhapbp nhập thông tin một vecto từ bàn phím
2. Hàm nhapbp nhập thông tin một matran từ bàn phím
3. Hàm nhaptep nhập thông tin một vecto từ tệp văn bản
4. Hàm nhaptep nhập thông tin một matran từ tệp văn bản
5. Toán tử * tính tích vecto và matran sử dụng hàm thành phần
6. Toán tử * tính tổng matran và matran sử dụng hàm friend
7. Hàm xemmh xem vecto kết quả trên màn hình
8. Hàm ghitep ghi vecto kết quả ra tệp văn bản
#include<conio.h>
#include<iostream>
#include<math.h>
#include<stdlib.h>
using namespace std;
class VT;
class MT;
class VT
{
private:
int n;
double x[20]; // Toa do cua diem
public:
void nhapsl();
friend void in(const VT &x);
friend VT tich(const MT &a, const VT &x) ;
};
class MT
{
private:
int n;
double a[20][20];
public:
friend VT tich(const MT &a, const VT &x);
friend void in(const MT &a);
void nhapsl();
} ;
void VT::nhapsl()
{
cout << "
Cap vec to = ";
cin >> n ;
for (int i = 1; i <= n ; ++i)
{
cout << "
Phan tu thu " << i <<" = " ;
cin >> x[i];
}
}
void MT::nhapsl()
{
cout <<"
Cap ma tran = ";
cin >> n ;
for (int i = 1; i <= n ; ++i)
for (int j = 1; j <= n; ++j)
{
cout << "
Phan tu thu: "<<i<< " hang "<< i << " cot " << j << " = ";
cin >> a[i][j];
}
}
VT tich(const MT &a, const VT &x)
{
VT y;
int n = a.n;
if (n!= x.n)
return x;
y.n = n;
for (int i = 1; i <= n; ++i)
{
y.x[i] = 0;
for (int j = 1; j <= n; ++j)
y.x[i] = a.a[i][j]*x.x[j];
}
return y;
}
void in(const VT &x)
{
cout << "
";
for (int i = 1; i <= x.n; ++i)
cout << x.x[i] << " ";
}
void in(const MT &a)
{
for (int i = 1; i <= a.n; ++i)
{
cout << "
" ;
for (int j = 1; j <= a.n; ++j)
cout << a.a[i][j] << " ";
}
}
int main()
{
MT a; VT x, y;
system("cls");
a.nhapsl();
x.nhapsl();
y = tich(a, x);
system("cls");
cout << "
Ma tran A:";
in(a);
cout << "
Vec to x: " ;
in(x);
cout << "
Vec to y = Ax: " ;
in(y);
getch();
}
Bài 3:
Câu 1:
Khai báo các lớp với các biến thành phần (private hoặc protected) sau:
-
Cấu trúc struct sinhvien { long ma; char ten[8];} ;
-
Lớp Danh sách có tên là danhsach(sinhvien *a, tongso, max)
Câu 2 :
Viết chương trình quản lý danh sách với các hàm thành phần của các lớp như sau:
1. Hàm danhsach khởi tạo danhsach
2. Hàm themdau thêm một phần tử vào đầu danhsach
3. Hàm ~danhsach huỷ bỏ danhsach
4. Hàm themsauk thêm một phần tử vào sau phần tử thứ k của danhsach
5. Hàm xoak xoá phần tử thứ k của danhsach
6. Hàm xem xem thông tin danhsach trên màn hình
7. Hàm ghitep ghi thông tin danhsach ra tệp văn bản
8. Toán tử + nối hai danh sách sử dụng khái niệm hàm thành phần
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<string.h>
#include<fstream>
#include<cstdlib>
using namespace std;
//khoi tao struct sinh vien//
struct sinhvien
{
long ma;
char ten[8];
};
//khoi tao class danh sach//
class danhsach
{
protected:
sinhvien *a;
long tongso;
public:
danhsach();
void themdau();
~danhsach();
void themsauk();
void xoak();
void xem();
void ghitep();
};
//ham khoi tao danh sach gom ko sinh vien va 1 mang co the chua duoc 100 sinh vien//
danhsach::danhsach()
{
tongso=0;
a = new sinhvien[100];
}
//them 1 sinh vien vao dau danh sach//
void danhsach::themdau()
{
long tma; char tten[8];
cout<<"
Nhap ma sinh vien: "; cin>>tma; //nhap ma sinh vien//
cout<<"
Nhap ten sinh vien: "; fflush(stdin); gets(tten);//nhap ten sinh vien//
tongso++;//tang so sinh vien them 1//
for (int i=tongso;i>1;i--) //ham lap day phan tu dung truoc ra sau 1 ô nho*'//
{
a[i]=a[i-1];
}
a[1].ma=tma; //gan phan tu dau tien cua danh sach vao o nho dau tien//
strcpy(a[1].ten,tten);
}
//ham khoi tao danh sach//
danhsach::~danhsach()
{
delete a;
tongso=0;
}
//ham them 1 sinh vien vien vao sau sinh vien thu k//
void danhsach::themsauk()
{
long tma,k; char tten[8];
cout<<"
Nhap k: "; cin>>k; //nhap k//
if (k>tongso) { cout<<"
k khong phu hop"; return; } //kiem tra xem k co phu hop voi do dai danh sach ko//
cout<<"
Nhap ma sinh vien: "; cin>>tma; //nhap ma sinh vien//
cout<<"
Nhap ten sinh vien: "; fflush(stdin); gets(tten);//nhap ten sinh vien//
tongso++;//tang tong so sinh vien them 1//
if (k<tongso)
{
for (int i=tongso;i>k+1;i--) a[i]=a[i-1]; //tu vi tri thu k+1 day moi sinh vien lui sau 1 o nho//
a[k+1].ma=tma; //gan sinh vien vua nhap vao o nho thu k+1//
strcpy(a[k+1].ten,tten);
return;
}
}
//ham xoa sinh vien thu k trong danh sach//
void danhsach::xoak()
{
long k;
cout<<"
Nhap k: "; cin>>k; //nhap k//
if (k<=tongso) //kiem tra xem k co hop le ko//
{
for (int i=k;i<tongso;i++) //cau lenh lap copy sinh vien thu k+1 vao sinh vien thu k va cac sinh vien tiep sau duoc day ve truoc 1 o nho//
{
a[i]=a[i+1];
}
tongso--;
}
}
//ham xem danh sach sinh vien//
void danhsach::xem()
{
cout<<"
Danh sach sinh vien: ";
for (int i=1;i<=tongso;i++) //cau lenh lap de xem//
{
cout<<"
Ma: "<<a[i].ma<<"\t Ten: "<<a[i].ten;
}
}
//in sinh vien ra tep//
void danhsach::ghitep()
{
char fileout[15]="bai_3_c++.txt"; //khoi tao ten tep//
fstream out(fileout,ios::out);//khoi tao con tro tep//
if (!out) { cout<<"
Khong mo duoc file "<<fileout; return; } //kiem tra xem tep ton tai ko//
cout<<"Danh sach sinh vien: ";
for (int i=1;i<=tongso;i++)
{
out<<"
Ma: "<<a[i].ma<<"\t Ten: "<<a[i].ten;
}
out.close();
}
main()
{
danhsach d; //lay ten de goi den class danh sach la d//
int lc;
//cau lenh lap chon chuc nang//
while(1)
{
system("cls");
cout<<"
1. Khoi tao danh sach";
cout<<"
2. Them phan tu vao dau sanh sach";
cout<<"
3. Xoa danh sach";
cout<<"
4. Them phan tu vao sau phan tu thu k cua danh sach";
cout<<"
5. Xoa phan tu thu k cua danh sach";
cout<<"
6. Xem thong tin danh sach tren man hinh";
cout<<"
7. Ghi danh sach ra tep bai_1_c++.txt";
cout<<"
8. Noi hai danh sach";
cout<<"
9. Thoat";
cout<<"
Luc chon cua ban: "; cin>>lc;
switch(lc) // cau truc switch va goi den cac ham o tren//
{
case 9:
exit(-1);
case 8:
cout<<"
Cai nay bo tay";
break;
case 7:
d.ghitep();
break;
case 6:
d.xem();
break;
case 5:
d.xoak();
break;
case 4:
d.themsauk();
break;
case 3:
d.~danhsach();
break;
case 2:
d.themdau();
break;
case 1:
danhsach();
break;
}
getch();
}
}
Bài 4: Câu 1:
Khai báo các lớp với các biến thành phần (private hoặc protected) sau:
-
Cấu trúc struct node { int info ; node *next} ;
-
Lớp Danh sách liên kết đơn có tên là danhsach( *pfirst, *plast)
Câu 2:
Viết chương trình quản lý danh sách liên kết đơn với các hàm thành phần của các lớp như sau:
1. Hàm danhsach khởi tạo danhsach
2. Hàm themdau thêm một phần tử vào đầu danhsach
3. Hàm ~danhsach huỷ bỏ danhsach
4. Hàm themsauk thêm một phần tử vào sau phần tử thứ k của danhsach
5. Hàm xoak xoá phần tử thứ k của danhsach
6. Hàm xemmh xem thông tin danhsach trên màn hình
7. Hàm ghitep ghi thông tin danhsach ra tệp văn bản
8. Toán tử + nối hai danh sách sử dụng khái niệm hàm friend
//Bai4
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<string.h>
using namespace std;
struct node
{
int info;
node *next;
};
class danhsach
{
protected:
node *pfirst,*plast;
public:
danhsach();
void themdau(int);
~danhsach();
int kiemtrarong()
{
return (pfirst==NULL);
}
void themsauk(int,int);
void xoak(int);
void xemmh();
void ghitep();
};
danhsach::danhsach()
{
pfirst=plast=NULL;
}
danhsach::~danhsach()
{
node *p=pfirst;
node *q=new node;
while (p!=NULL)
{
q=p;
p=p->next;
delete q;
}
pfirst=plast=NULL;
}
void danhsach::themdau(int x)
{
node *p=new node;
p->info=x;
p->next=NULL;
if (kiemtrarong())
{ pfirst=plast=p; return; }
p->next=pfirst;
pfirst=p;
}
void danhsach::themsauk(int x,int k)
{
node *p=new node;
p->info=x; p->next=NULL;
node *q=pfirst;
for (int i=1;i<k;i++) q=q->next;
p->next=q->next;
q->next=p;
}
void danhsach::xoak(int k)
{
node *p=pfirst;
for (int i=1;i<k-1;i++) p=p->next;
node *q=new node;
q=p->next;
p->next=q->next;
delete q;
}
void danhsach::xemmh()
{
node *p=pfirst;
while (p!=NULL)
{
cout<<"
"<<p->info;
p=p->next; } } void danhsach::ghitep() { char fileout[25]="bai_4_c++_fileout.txt"; fstream out(fileout,ios::out); if (!out) { cout<<" Khong mo duoc file "<<fileout; return; } node *p=pfirst; while (p!=NULL) { out<<p->info<<endl; p=p->next; } out.close(); } main() { danhsach ds; while (1) { system("cls"); cout<<" 0. Thoat"; cout<<" 1. Xoa danh sach"; cout<<" 2. Them dau danh sach"; cout<<" 3. Them sau k"; cout<<" 4. Xoa k"; cout<<" 5. Xem man hinh"; cout<<" 6. Ghi tep"; cout<<" Lua chon: "; int lc; cin>>lc; switch(lc) { case 0: exit(1); case 1: ds.~danhsach(); break; case 2: cout<<" Nhap so can them: "; int x; cin>>x; ds.themdau(x); break; case 3: cout<<" Nhap k: "; int k; cin>>k; cout<<" Nhap so can them: "; cin>>x; ds.themsauk(x,k); break; case 4: cout<<" Nhap k: "; cin>>k; ds.xoak(k); break; case 5: ds.xemmh(); getch(); break; case 6: ds.ghitep(); break; } } } BÀI 05 Bài 5: Câu 1: Khai báo các lớp với các biến thành phần (private hoặc protected) sau: - Lớp cán bộ có tên là canbo( hoten, luongcoban) - Lớp danh sách cán bộ có tên là danhsach(canbo dscanbo[100], tscb) - Lớp lương cán bộ có tên là luongcb kế thừa từ lớp cán bộ, phần khai báo dữ liệu có thêm thuộc tính ngaycong, luong (luong=luongcoban+ngaycong * 50000). - Lớp bảng lương có tên là bangluong(thang,tongcb, luongcb dslcanbo[100]). Câu 2: Viết chương trình quản lý cán bộ với các hàm thành phần của các lớp như sau: 1. Hàm nhaptep nhập thông tin một danhsach từ tệp văn bản 2. Hàm xemmh xem thông tin danhsach đã nhập trên màn hình 3. Hàm bangluong khởi tạo một bangluong từ danhsach đã nhập 4. Hàm nhapnc nhập thang, các ngaycong từ bàn phím vào bangluong đã khởi tạo và tính luong 5. Hàm xemmh xem bangluong đã nhập trên màn hình 6. Hàm ghitep ghi bangluong đã nhập ra tệp văn bản // Bang luong #include<stdio.h> #include<conio.h> #include<iostream> #include<string.h> #include<fstream> #include<cstdlib> using namespace std; class canbo { protected: char hoten[20]; long luongcoban; public: void nhaphotenluongcb() { cout<<" Nhap ho ten: "; fflush(stdin); gets(hoten); fflush(stdin); cout<<" Nhap luong co ban: "; cin>>luongcoban; } void xemhotenluongcb() { cout<<" Ho ten: "<<hoten; cout<<"\t Luong co ban: "<<luongcoban; } friend class danhsach; friend class bangluong; }; class danhsach { protected: canbo dscanbo[100]; long tscb; public: void nhapbp(); void nhaptep(); void xemmh(); friend class bangluong; }; void danhsach::nhapbp() { cout<<" Nhap tscb: "; cin>>tscb; for (int i=1;i<=tscb;i++) dscanbo[i].nhaphotenluongcb(); } void danhsach::nhaptep() { char tluongcoban[10]; char filein[25]="bai_5_c++_filein.txt"; fstream in(filein,ios::in); if (!in) { cout<<" Khong mo duoc file "<<filein; return; } tscb=0; while(!in.eof()) { tscb++; in.getline(dscanbo[tscb].hoten,20); in.getline(tluongcoban,10); dscanbo[tscb].luongcoban=atol(tluongcoban); } in.close(); } void danhsach::xemmh() { cout<<" Danh sach da nhap: "; for (int i=1;i<=tscb;i++) dscanbo[i].xemhotenluongcb(); } class luongcb: public canbo { protected: long ngaycong,luong; public: void nhapngaycong() { cout<<" Nhap ngay cong: "; cin>>ngaycong; } void tinhluong() { luong=luongcoban+ngaycong*50000; } void xemluong() { cout<<" Ngay cong: "<<ngaycong; cout<<" Luong: "<<luong; } friend class bangluong; }; class bangluong { protected: long thang,tongcb; luongcb dslcanbo[100]; public: bangluong(){}; bangluong(danhsach); void nhapnc(); void xemmh(); void ghitep(); }; bangluong::bangluong(danhsach ds) { tongcb=ds.tscb; for (int i=1;i<=tongcb;i++) { strcpy(dslcanbo[i].hoten,ds.dscanbo[i].hoten); dslcanbo[i].luongcoban=ds.dscanbo[i].luongcoban; } } void bangluong::nhapnc() { cout<<" Nhap thang: "; cin>>thang; for (int i=1;i<=tongcb;i++) { cout<<dslcanbo[i].hoten<<" :"; dslcanbo[i].nhapngaycong(); dslcanbo[i].tinhluong(); } } void bangluong::xemmh() { cout<<" Thang: "<<thang; for (int i=1;i<=tongcb;i++) { dslcanbo[i].xemhotenluongcb(); dslcanbo[i].xemluong(); } } void bangluong::ghitep() { char fileout[25]="bai_5_c++_fileout.txt"; fstream out(fileout,ios::out|ios::app); if (!out) { cout<<" Khong mo duoc file"; return; } out<<"Thang: "<<thang; for (int i=1;i<=tongcb;i++) { out<<" Ho ten: "<<dslcanbo[i].hoten<<"\t Luong co ban: "<<dslcanbo[i].luongcoban; out<<" Ngay cong: "<<dslcanbo[i].ngaycong; out<<" Luong: "<<dslcanbo[i].luong; } cout<<" "; out.close(); } main() { danhsach ds; // cout<<" Nhap danh sach can bo "; // ds.nhapbp(); ds.nhaptep(); ds.xemmh(); bangluong bl(ds); bl.nhapnc(); bl.xemmh(); bl.ghitep(); } BÀI 06 Câu 1: Khai báo các lớp với các biến thành phần (private hoặc protected) sau: - Lớp hàng có tên là hang( tenhang, gia) - Lớp bảng giá có tên là banggia(hang dshang[100], tshang) - Lớp hàng bán có tên là hangban kế thừa từ lớp hàng, phần khai báo dữ liệu có thêm thuộc tính soluong, thanhtien (thanhtien=soluong*dongia). - Lớp hoá đơn bán hàng có tên là hoadon (sohoadon,tongtien, tshangban, hangban dshangban[100]). Câu 2: Viết chương trình quản lý hoá đơn với các hàm thành phần của các lớp như sau: 1. Hàm nhaptep nhập thông tin một banggia từ tệp văn bản 2. Hàm xemmh xem thông tin banggia đã nhập trên màn hình 3. Hàm xemth của lớp banggia trả lại thông tin hang theo tenhang 4. Hàm nhaphd nhập thông tin hoadon từ bàn phím (không nhập đơn giá, thành tiền, tổng tiền) và tính thanhtien, tongtien 5. Hàm xemmh xem hoadon đã nhập trên màn hình 6. Hàm ghitep ghi hoadon đã nhập ra tệp văn bản // Ban hang #include<stdio.h> #include<conio.h> #include<iostream> #include<fstream> #include<string.h> #include<cstdlib> using namespace std; class hang { protected: char tenhang[10]; long gia; public: void nhap() { cout<<" Nhap ten hang: "; fflush(stdin); gets(tenhang); fflush(stdin); cout<<" Nhap gia: "; cin>>gia; } void xemmh() { cout<<" Ten hang: "<<tenhang<<"\t Gia: "<<gia; } friend class banggia; friend class hoadon; }; class banggia { protected: hang dshang[100]; long tshang; public: void nhapbp(); void nhaptep(); void xemmh(); hang xemth(char []); friend class hoadon; }; void banggia::nhapbp() { cout<<" Nhap tshang: "; cin>>tshang; for (int i=1;i<=tshang;i++) dshang[i].nhap(); } void banggia::nhaptep() { char filein[25]="bai_6_c++_filein.txt",tgia[10]; fstream in(filein,ios::in); if (!in) { cout<<" Khong mo duoc file"; return; } tshang=0; while (!in.eof()) { tshang++; in.getline(dshang[tshang].tenhang,10); in.getline(tgia,10); dshang[tshang].gia=atol(tgia); } in.close(); } void banggia::xemmh() { cout<<" Danh sach hang: "; for (int i=1;i<=tshang;i++) dshang[i].xemmh(); } hang banggia::xemth(char th[]) { for (int i=1;i<=tshang;i++) if (stricmp(dshang[i].tenhang,th)==0) return dshang[i]; hang h; strcpy(h.tenhang,th); h.gia=-1; return h; } class hangban: public hang { protected: long soluong,thanhtien; public: void nhapsoluong() { cout<<" Nhap so luong: "; cin>>soluong; } void tinhthanhtien() { thanhtien=soluong*gia; } void xemsoluongthanhtien() { cout<<" So luong: "<<soluong; cout<<" Thanh tien: "<<thanhtien; } friend class hoadon; }; class hoadon { protected: long sohoadon,tongtien,tshangban; hangban dshangban[100]; public: void nhaphb(banggia); void xemmh(); void ghitep(); }; void hoadon::nhaphb(banggia bg) { char th[10]; hang hg; tongtien=0; cout<<" Nhap so hoa don: "; cin>>sohoadon; cout<<" Nhap tong so hang ban: "; cin>>tshangban; for (int i=1;i<=tshangban;i++) { cout<<" Mat hang thu "<<i<<" :"; cout<<" Nhap ten hang: "; fflush(stdin); gets(th); fflush(stdin); hg=bg.xemth(th); strcpy(dshangban[i].tenhang,hg.tenhang); dshangban[i].gia=hg.gia; dshangban[i].nhapsoluong(); dshangban[i].tinhthanhtien(); tongtien+=dshangban[i].thanhtien; } } void hoadon::xemmh() { cout<<" So hoa don: "<<sohoadon; for (int i=1;i<=tshangban;i++) { dshangban[i].xemmh(); dshangban[i].xemsoluongthanhtien(); } cout<<" Tong tien: "<<tongtien; } void hoadon::ghitep() { char fileout[25]="bai_6_c++_fileout.txt"; fstream out(fileout,ios::out|ios::app); if (!out) { cout<<" Khong mo duoc file "<<fileout; return; } out<<"So hoa don: "<<sohoadon; for (int i=1;i<=tshangban;i++) { out<<" Ten hang: "<<dshangban[i].tenhang<<"\t Gia: "<<dshangban[i].gia; out<<" So luong: "<<dshangban[i].soluong; out<<" Thanh tien: "<<dshangban[i].thanhtien; } out<<" Tong tien: "<<tongtien<<" "; out.close(); } main() { banggia bg; hoadon hd; // bg.nhapbp(); bg.nhaptep(); bg.xemmh(); hd.nhaphb(bg); hd.xemmh(); hd.ghitep(); } BÀI 07 Câu 1: Khai báo các lớp với các biến thành phần (private hoặc protected) sau: - Lớp sinh viên có tên là sinhvien(sothutu , hoten) - Lớp lớp có tên là lop(sinhvien dssinhvien[100], tongsv) - Lớp điểm sinh viên có tên là diemsinhvien kế thừa từ lớp sinhvien, phần khai báo dữ liệu có thêm thuộc tính diemthi, ketqua (=”Qua” nếu diemthi>=5. =”Thi lại” nếu diemthi<5). - Lớp bảng điểm thi có tên là bangdiem (monhoc, diemsinhvien dsdiem[100], tongsv). Câu 2: Viết chương trình quản lý bảng điểm với các hàm thành phần của các lớp như sau: 1. Hàm nhaptep nhập thông tin một lop từ tệp văn bản 2. Hàm xemmh xem thông tin lop đã nhập trên màn hình 3. Hàm bangdiem khởi tạo một bangdiem từ lop đã nhập 4. Hàm nhapdiem nhập các diemthi từ bàn phím vào bangdiem đã khởi tạo và xét ketqua 5. Hàm xemmh xem bangdiem đã nhập trên màn hình 6. Hàm ghitep ghi bangdiem đã nhập ra tệp văn bản // Bang diem #include<stdio.h> #include<conio.h> #include<iostream> #include<fstream> #include<string.h> #include<cstdlib> using namespace std; class sinhvien { protected: long sothutu; char hoten[20]; public: void nhaphotensothutu() { cout<<" Nhap so thu tu: "; cin>>sothutu; cout<<" Nhap ho ten: "; fflush(stdin); gets(hoten); fflush(stdin); } void xemhotensothutu() { cout<<" So thu tu: "<<sothutu<<"\t Ho ten: "<<hoten; } friend class lop; friend class bangdiem; }; class lop { protected: sinhvien dssinhvien[100]; long tongsv; public: void nhapbp(); void nhaptep(); void xemmh(); friend class bangdiem; }; void lop::nhapbp() { cout<<" Nhap tong so sinh vien: "; cin>>tongsv; for (int i=1;i<=tongsv;i++) dssinhvien[i].nhaphotensothutu(); } void lop::nhaptep() { char filein[25]="bai_7_c++_filein.txt",tsothutu[10]; fstream in(filein,ios::in); if (!in) { cout<<" Khong mo duoc file "<<filein; return; } tongsv=0; while (!in.eof()) { tongsv++; in.getline(tsothutu,10); in.getline(dssinhvien[tongsv].hoten,20); dssinhvien[tongsv].sothutu=atol(tsothutu); } in.close(); } void lop::xemmh() { cout<<" Danh sach sinh vien: "; for (int i=1;i<=tongsv;i++) dssinhvien[i].xemhotensothutu(); } class diemsinhvien: public sinhvien { protected: long diemthi; char ketqua[10]; public: void nhapdiemthi() { cout<<" Nhap diem thi: "; cin>>diemthi; } void tinhketqua() { if (diemthi>=5) strcpy(ketqua,"Qua"); else strcpy(ketqua,"Thi lai"); } void xemdiemthiketqua() { cout<<" Diem thi: "<<diemthi; cout<<" Ket qua: "<<ketqua; } friend class bangdiem; }; class bangdiem { protected: char monhoc[20]; diemsinhvien dsdiem[100]; long tongsv; public: bangdiem(){}; bangdiem(lop); void nhapdiem(); void xemmh(); void ghitep(); }; bangdiem::bangdiem(lop l) { tongsv=l.tongsv; for (int i=1;i<=tongsv;i++) { dsdiem[i].sothutu=l.dssinhvien[i].sothutu; strcpy(dsdiem[i].hoten,l.dssinhvien[i].hoten); } } void bangdiem::nhapdiem() { cout<<" "; for (int i=1;i<=tongsv;i++) { cout<<" "<<dsdiem[i].hoten; dsdiem[i].nhapdiemthi(); dsdiem[i].tinhketqua(); } } void bangdiem::xemmh() { cout<<" Bang diem: "; for (int i=1;i<=tongsv;i++) { dsdiem[i].xemhotensothutu(); dsdiem[i].xemdiemthiketqua(); } } void bangdiem::ghitep() { char fileout[25]="bai_7_c++_fileout.txt"; fstream out(fileout,ios::out); if (!out) { cout<<" Khong mo duoc file "<<fileout; return; } out<<"Bang diem: "; for (int i=1;i<=tongsv;i++) { out<<" So thu tu: "<<dsdiem[i].sothutu<<"\t Ho ten: "<<dsdiem[i].hoten; out<<" Diem thi: "<<dsdiem[i].diemthi; out<<" Ket qua: "<<dsdiem[i].ketqua; } out.close(); } main() { lop l; // l.nhapbp(); l.nhaptep(); l.xemmh(); bangdiem b(l); b.nhapdiem(); b.xemmh(); b.ghitep(); getch(); } BÀI 08 Câu 1: Khai báo các lớp với các biến thành phần (private hoặc protected) sau: - Lớp câu hỏi có tên là cauhoi(stt, noidung, dapan) - Lớp ngân hàng câu hỏi có tên là nganhangch(cauhoi dsch[100], tsch) - Lớp câu hỏi trả lời có tên là cauhoitraloi kế thừa từ lớp câu hỏi, phần khai báo dữ liệu có thêm thuộc tính traloi(chọn 1,2,3,4), diem(=2 nếu traloi=dapan, =0 nếu traloi !=dapan). - Lớp bài thi có tên là baithi (diem, cauhoitraloi dschtl[100]). Câu 2: Viết chương trình thi trắc nghiệm môn Ngôn ngữ lập trình C++ với các hàm thành phần của các lớp như sau: 1. Hàm nhaptep nhập thông tin một nganhangch từ tệp văn bản 2. Hàm xemmh xem thông tin nganhangch đã nhập trên màn hình 3. Hàm xemstt của lớp nganhangch xem thông tin cauhoi theo stt 4. Hàm baithi khởi tạo một baithi từ nganhangch đã nhập (mỗi bài có 5 câu hỏi và trả lời) 5. Hàm lambai nhập các đáp án traloi từ bàn phím vào baithi đã khởi tạo và chấm diem 6. Hàm xemmh xem baithi đã chấm điểm trên màn hình 7. Hàm ghitep ghi baithi đã chấm ra tệp văn bản // Thi trac nghiem #include<stdio.h> #include<conio.h> #include<iostream> #include<fstream> #include<string.h> #include<cstdlib> using namespace std; class cauhoi { protected: long stt,dapan; char noidung[70]; public: void nhapnoidungdapan() { cout<<" Nhap so thu tu: "; cin>>stt; cout<<" Nhap noi dung cau hoi: "; fflush(stdin); gets(noidung); fflush(stdin); cout<<" Nhap dap an: "; cin>>dapan; } void xemnoidung() { cout<<" So thu tu: "<<stt; cout<<" Noi dung cau hoi: "<<noidung; } void xemnoidungdapan() { cout<<" So thu tu: "<<stt; cout<<" Noi dung cau hoi: "<<noidung; cout<<" Dap an: "<<dapan; } friend class nganhangch; friend class baithi; }; class nganhangch { protected: cauhoi dsch[100]; long tsch; public: void nhapbp(); void nhaptep(); void xemmh(); cauhoi xemstt(long); friend class baithi; }; void nganhangch::nhapbp() { cout<<" Nhap tong so cau hoi: "; cin>>tsch; for (int i=1;i<=tsch;i++) dsch[i].nhapnoidungdapan(); } void nganhangch::nhaptep() { char filein[25]="bai_8_c++_filein.txt",tstt[10],tdapan[10]; fstream in(filein,ios::in); if (!in) { cout<<" Khong mo duoc file "<<filein; return; } tsch=0; while (!in.eof()) { tsch++; in.getline(tstt,10); in.getline(dsch[tsch].noidung,200); in.getline(tdapan,10); dsch[tsch].stt=atol(tstt); dsch[tsch].dapan=atol(tdapan); } in.close(); } void nganhangch::xemmh() { for (int i=1;i<=tsch;i++) dsch[i].xemnoidungdapan(); } cauhoi nganhangch::xemstt(long tpstt) { for (int i=1;i<=tsch;i++) if (dsch[i].stt==tpstt) return dsch[tpstt]; } class cauhoitraloi:public cauhoi { protected: long traloi,diem; public: void nhapcautraloi() { cout<<" Nhap cau tra loi: "; cin>>traloi; } void tinhdiem() { if (traloi==dapan) diem=2; else diem =0; } long xemdiem() { return diem; } friend class baithi; }; class baithi { protected: long diem; cauhoitraloi dschtl[100]; public: baithi(){}; baithi(nganhangch); void lambai(); void xemmh(); void ghitep(); }; baithi::baithi(nganhangch nh) { long a[6],t,h; int i,j; cauhoi ch; for (i=1;i<=5;i++) a[i]=-1; for (i=1;i<=5;i++) { while(1) { h=1; t=rand() % nh.tsch +1; for (int j=1;j<=5;j++) if (t==a[j]) h=0; if (h==1) break; } a[i]=t; ch=nh.xemstt(a[i]); dschtl[i].stt=i; dschtl[i].dapan=ch.dapan; strcpy(dschtl[i].noidung,ch.noidung); } } void baithi::lambai() { for (int i=1;i<=5;i++) { dschtl[i].xemnoidung(); dschtl[i].nhapcautraloi(); dschtl[i].tinhdiem(); diem+=dschtl[i].xemdiem(); } } void baithi::xemmh() { cout<<" Bai thi: "; for (int i=1;i<=5;i++) { dschtl[i].xemnoidung(); cout<<" Cau tra loi da chon: "<<dschtl[i].traloi; cout<<" Diem: "<<dschtl[i].xemdiem(); } cout<<" Tong diem: "<<diem; } void baithi::ghitep() { char fileout[25]="bai_8_c++_fileout.txt"; fstream out(fileout,ios::out); if (!out) { cout<<" Khong mo duoc file "<<fileout; return; } out<<"Bai thi: "; for (int i=1;i<=5;i++) { out<<" So thu tu: "<<dschtl[i].stt; out<<" Cau hoi: "<<dschtl[i].noidung; out<<" Cau tra loi da chon: "<<dschtl[i].traloi; out<<" Diem: "<<dschtl[i].diem; } out<<" Tong diem: "<<diem; out.close(); } main() { nganhangch nh; nh.nhapbp(); // nh.nhaptep(); cout<<" Ngan hang cua hoi: "; nh.xemmh(); getch(); system("cls"); cout<<" Moi ban tra loi cau hoi: "; baithi bt(nh); bt.lambai(); bt.xemmh(); bt.ghitep(); getch(); } BÀI 09 Câu 1: Khai báo các lớp với các biến thành phần (private hoặc protected) sau: - Lớp hàng tồn có tên là hangton( mahang, tenhang, soluongton) - Lớp danh sách hàng tồn có tên là dshangton(hangton dsht[100], tsht) - Lớp hàng nhập có tên là hangnhap kế thừa (mahang, tenhang) từ lớp hàng tồn, phần khai báo dữ liệu có thêm thuộc tính soluongnhap (khi nhập thì tăng soluongton tương ứng trong dshangton). - Lớp phiếu nhập kho tên là phieunhapkho (sophieu, tongsoluong, tshn, hangnhap dshangnhap[100]). Câu 2: Viết chương trình quản lý nhập kho với các hàm thành phần của các lớp như sau: 1. Hàm nhaptep nhập thông tin một dshangton từ tệp văn bản 2. Hàm xemmh xem thông tin dshangton đã nhập trên màn hình 3. Hàm xemmahang của lớp dshangton xem thông tin hangton theo mahang 4. Hàm tangslton của lớp dshangton theo mahang va soluongnhap 5. Hàm nhaphn nhập thông tin phieunhapkho từ bàn phím (không nhập các tenhang, tongsoluong) 6. Hàm xemmh xem phieunhapkho đã nhập trên màn hình 7. Hàm ghitep ghi phieunhapkho đã nhập ra tệp văn bản 8. Hàm ghitep ghi dshangton đã nhập ra tệp văn bản // Nhap kho #include<stdio.h> #include<conio.h> #include<iostream> #include<fstream> #include<string.h> #include<cstdlib> using namespace std; class hangton { protected: long soluongton; protected: char tenhang[20]; long mahang; public: void nhaphangton() { cout<<" Nhap ma hang: "; cin>>mahang; cout<<" Nhap ten hang: "; fflush(stdin); gets(tenhang); fflush(stdin); cout<<" Nhap so luong: "; cin>>soluongton; } void xemhangton() { cout<<" Ma hang: "<<mahang<<"\t Ten hang: "<<tenhang<<"\t So luong: "<<soluongton; } void tinhlaisoluongton(long slnhap) { soluongton=soluongton+slnhap; } friend class dshangton; friend class phieunhapkho; // friend class dshangton; }; class dshangton { protected: hangton dsht[100]; long tsht; public: void nhapbp(); void nhaptep(); void xemmh(); long xemht(long); void tangsoluonghangton(long,long); friend class phieunhapkho; }; void dshangton::nhapbp() { cout<<" Nhap tong so hang ton: "; cin>>tsht; for (int i=1;i<=tsht;i++) dsht[i].nhaphangton(); } void dshangton::nhaptep() { char filein[25]="bai_9_c++_filein.txt",tsoluongton[10],tmahang[10]; fstream in(filein,ios::in); if (!in) { cout<<" Khong mo duoc file "<<filein; return; } tsht=0; while (!in.eof()) { tsht++; in.getline(tmahang,10); in.getline(dsht[tsht].tenhang,20); in.getline(tsoluongton,10); dsht[tsht].soluongton=atol(tsoluongton); dsht[tsht].mahang=atol(tmahang); } in.close(); } void dshangton::xemmh() { for (int i=1;i<=tsht;i++) dsht[i].xemhangton(); } long dshangton::xemht(long ht) { for (int i=1;i<=tsht;i++) if (dsht[i].mahang==ht) return i; return -1; } void dshangton::tangsoluonghangton(long stt,long slnhap) { dsht[stt].tinhlaisoluongton(slnhap); } class hangnhap: public hangton { protected: long soluongnhap; public: void nhapsoluongnhap() { cout<<" Nhap so luong nhap: "; cin>>soluongnhap; } void xemsoluongnhap() { cout<<" So luong nhap: "<<soluongnhap; } friend class phieunhapkho; }; class phieunhapkho { protected: long sophieu,tongsoluong,tshn; hangnhap dshangnhap[100]; public: void nhaphn(dshangton); void xemmh(); void ghitep(); }; void phieunhapkho::nhaphn(dshangton dht) { cout<<" Nhap so phieu: "; cin>>sophieu; cout<<" Nhap tong so hang nhap: "; cin>>tshn; tongsoluong=0; for (int i=1;i<=tshn;i++) { cout<<" Nhap ma hang: "; cin>>dshangnhap[i].mahang; long htn=dht.xemht(dshangnhap[i].mahang); strcpy(dshangnhap[i].tenhang,dht.dsht[htn].tenhang); dshangnhap[i].nhapsoluongnhap(); tongsoluong+=dshangnhap[i].soluongnhap; dht.tangsoluonghangton(htn,dshangnhap[i].soluongnhap); } } void phieunhapkho::xemmh() { cout<<" So phieu: "<<sophieu; for (int i=1;i<=tshn;i++) { cout<<" Ma hang: "<<dshangnhap[i].mahang<<"\t Ten hang: "<<dshangnhap[i].tenhang; cout<<" So luong nhap: "<<dshangnhap[i].soluongnhap; } cout<<" Tong so luong nhap: "<<tongsoluong; } void phieunhapkho::ghitep() { char fileout[25]="bai_9_c++_fileout.txt"; fstream out(fileout,ios::out); if (!out) { cout<<" Khong mo duoc file "<<fileout; return; } out<<"\t\t PHIEU NHAP KHO"; out<<" So phieu: "<<sophieu; for (int i=1;i<=tshn;i++) { out<<" Ma hang: "<<dshangnhap[i].mahang<<"\t Ten hang: "<<dshangnhap[i].tenhang; out<<" So luong nhap: "<<dshangnhap[i].soluongnhap; } out<<" Tong so luong nhap: "<<tongsoluong; out.close(); } main() { dshangton dht; dht.nhapbp(); dht.nhaptep(); cout<<" Danh sach hang ton: "; dht.xemmh(); phieunhapkho p; p.nhaphn(dht); p.xemmh(); p.ghitep(); getch(); } Bài 10: Câu 1: Khai báo các lớp với các biến thành phần (private hoặc protected) sau: - Lớp hàng tồn có tên là hangton( mahang, tenhang, soluongton) - Lớp danh sách hàng tồn có tên là dshangton(hangton dsht[100], tsht) - Lớp hàng xuất có tên là hangxuat kế thừa (mahang, tenhang) từ lớp hàng tồn, phần khai báo dữ liệu có thêm thuộc tính soluongxuất (khi xuất thì giảm soluongton tương ứng trong dshangton). - Lớp phiếu xuất kho tên là phieuxuatkho (sophieu, tongsoluong, tshx, hangxuat dshangxuat[100]). Câu 2: Viết chương trình quản lý xuất kho với các hàm thành phần của các lớp như sau: 1. Hàm nhaptep nhập thông tin một dshangton từ tệp văn bản 2. Hàm xemmh xem thông tin dshangton đã nhập trên màn hình 3. Hàm xemht của lớp dshangton xem thông tin hangton theo mahang 4. Hàm giamslton của lớp dshangton theo mahang va soluongxuat 5. Hàm nhaphx nhập thông tin phieuxuatkho từ bàn phím (không nhập các tenhang, tongsoluong) 6. Hàm xemmh xem phieuxuatkho đã nhập trên màn hình 7. Hàm ghitep ghi phieuxuatkho đã nhập ra tệp văn bản 8. Hàm ghitep ghi dshangton đã nhập ra tệp văn bản #include<stdio.h> #include<conio.h> #include<iostream> #include<fstream> #include<string.h> #include<cstdlib> using namespace std; class hangton; class dshangton; class hangxuat; class phieuxuatkho; class hangton { private: long soluongton; protected: long mahang; char tenhang[10]; public: void nhap() { cout<<" Nhap ma hang: "; cin>>mahang; cout<<" Nhap ten hang: "; fflush(stdin); gets(tenhang); fflush(stdin); cout<<" Nhap so luong ton: "; cin>>soluongton; } void xem() { cout<<" Ma hang: "<<mahang; cout<<"\t Ten hang: "<<tenhang; cout<<"\t So luong ton: "<<soluongton; } void tinhlaislhangton(long slxuat) { soluongton=soluongton-slxuat; } friend class dshangton; friend class phieuxuatkho; }; class dshangton { protected: long tsht; hangton dsht[100]; public: void nhapbp(); void nhaptep(); void xemmh(); hangton xemht(long); void tinhsoluongton(long,long); friend class phieuxuatkho; }; void dshangton::nhapbp() { cout<<" Nhap tong so hang ton: "; cin>>tsht; for (int i=1;i<=tsht;i++) dsht[i].nhap(); } void dshangton::nhaptep() { char filein[25]="bai_10_c++_filein.txt"; char tmahang[10],tsoluongton[10]; fstream in(filein,ios::in); if (!in) { cout<<" Khong mo duoc file "<<filein; return; } tsht=0; while (!in.eof()) { tsht++; in.getline(tmahang,10); in.getline(dsht[tsht].tenhang,10); in.getline(tsoluongton,10); dsht[tsht].mahang=atol(tmahang); dsht[tsht].soluongton=atol(tsoluongton); } in.close(); } void dshangton::xemmh() { cout<<" Danh sach hang ton:"; for (int i=1;i<=tsht;i++) dsht[i].xem(); } hangton dshangton::xemht(long tmahang) { for (int i=1;i<=tsht;i++) if (dsht[i].mahang==tmahang) return dsht[i]; } void dshangton::tinhsoluongton(long tmahang,long slxuat) { for (int i=1;i<=tsht;i++) if (dsht[i].mahang=tmahang) dsht[i].tinhlaislhangton(slxuat); } class hangxuat: public hangton { protected: long soluongxuat; public: void nhapsoluongxuat() { cout<<" Nhap so luong xuat: "; cin>>soluongxuat; } void xemsoluongxuat() { cout<<" So luong xuat: "<<soluongxuat; } friend class phieuxuatkho; }; class phieuxuatkho { protected: long sophieu,tongsoluong,tshx; hangxuat dshangxuat[100]; public: void nhaphx(dshangton); void xemmh(); void ghitep(); }; void phieuxuatkho::nhaphx(dshangton dht) { long tmahang; cout<<" Nhap so phieu: "; cin>>sophieu; cout<<" Nhap tong so hang xuat: "; cin>>tshx; tongsoluong=0; for (int i=1;i<=tshx;i++) { cout<<" Nhap ma hang: "; cin>>tmahang; hangton hang=dht.xemht(tmahang); dshangxuat[i].mahang=hang.mahang; strcpy(dshangxuat[i].tenhang,hang.tenhang); dshangxuat[i].nhapsoluongxuat(); dht.tinhsoluongton(tmahang,dshangxuat[i].soluongxuat); tongsoluong+=dshangxuat[i].soluongxuat; } } void phieuxuatkho::xemmh() { cout<<" So phieu: "<<sophieu; for (int i=1;i<=tshx;i++) { cout<<" Ma hang: "<<dshangxuat[i].mahang; cout<<" Ten hang: "<<dshangxuat[i].tenhang; dshangxuat[i].xemsoluongxuat(); cout<<" "; } cout<<" Tong so luong xuat: "<<tongsoluong; } void phieuxuatkho::ghitep() { char fileout[25]="bai_10_c++_fileout.txt"; fstream out(fileout,ios::out); if (!out) { cout<<" Khong mo duoc file "<<fileout; return; } out<<" So phieu: "<<sophieu; for (int i=1;i<=tshx;i++) { out<<" Ma hang: "<<dshangxuat[i].mahang; out<<" Ten hang: "<<dshangxuat[i].tenhang; out<<" So luong xuat: "<<dshangxuat[i].soluongxuat; } out<<" Tong so luong xuat: "<<tongsoluong; out.close(); } main() { dshangton ht; // ht.nhapbp(); ht.nhaptep(); ht.xemmh(); getch(); phieuxuatkho p; p.nhaphx(ht); p.xemmh(); p.ghitep(); getch(); } BÀI 11 Câu 1: Khai báo các lớp với các biến thành phần (private hoặc protected) sau: - Lớp học phí có tên là hocphi( lop, ky, hocphi) - Lớp bảng học phí có tên là banghocphi(hocphi dshocphi[100], tshp) - Lớp học phí sinh viên có tên là hpsinhvien(ngay, masv, hoten, lop, ky, hocphi). Câu 2: Viết chương trình quản lý học phí với các hàm thành phần của các lớp như sau: 1. Hàm nhaptep nhập thông tin một banghocphi từ tệp văn bản 2. Hàm xemlk của lớp banghocphi xem thông tin hocphi theo lop, ky 3. Hàm nhaphp nhập thông tin hpsinhvien từ bàn phím (chỉ nhập ngay, masv, hoten, lop, ky) 4. Hàm xemmh xem hpsinhvien đã nhập trên màn hình 5. Hàm ghitep ghi hpsinhvien đã nhập ra tệp văn bản #include<stdio.h> #include<conio.h> #include<iostream> #include<fstream> #include<string.h> #include<cstdlib> using namespace std; class hocphi; class sinhvien; class banghocphi; class hpsinhvien; class hocphi { protected: char lop[10]; long ky,hocphi; friend class banghocphi; }; class sinhvien { protected: char hoten[20],masv[10],lop[10]; public: void nhaptep(char []); void xemsinhvien() { cout<<" Ma sinh vien: "<<masv; cout<<" Ho ten: "<<hoten; cout<<" Lop: "<<lop; } }; void sinhvien::nhaptep(char tmasv[]) { char filein[25]="bai_11_sinhvien.txt"; char ttmasv[20]; long ktra=0; fstream in(filein,ios::in); if (!in) { cout<<" khong mo duoc file "<<filein; return; } while (!in.eof()) { in.getline(ttmasv,20); if (stricmp(ttmasv,tmasv)==0) { in.getline(hoten,20); in.getline(lop,10); ktra=1; return; } } if (ktra==0) cout<<" Nhap sai ma sinh vien"; in.close(); } class banghocphi { protected: hocphi dshocphi[100]; long tshp; public: void nhaptep(); long xemlk(char [],long); friend class hpsinhvien; }; void banghocphi::nhaptep() { char filein[25]="bai_11_banghocphi.txt"; char thocphi[10],tky[5]; fstream in(filein,ios::in); if (!in) { cout<<" Khong mo duoc file "<<filein; return; } tshp=0; while (!in.eof()) { tshp++; in.getline(dshocphi[tshp].lop,10); in.getline(tky,5); in.getline(thocphi,10); dshocphi[tshp].ky=atol(tky); dshocphi[tshp].hocphi=atol(thocphi); } in.close(); } long banghocphi::xemlk(char tlop[10],long tky) { for(int i=1;i<=tshp;i++) if ((stricmp(tlop,dshocphi[i].lop)==0)&&(tky==dshocphi[i].ky)) return dshocphi[i].hocphi; } class hpsinhvien: public sinhvien { protected: long ngay,ky,hocphi; public: void nhaphp(banghocphi); void xemmh(); void ghitep(); }; void hpsinhvien::nhaphp(banghocphi b) { cout<<" Nhap ngay: "; cin>>ngay; cout<<" Nhap ma sinh vien: "; fflush(stdin); gets(masv); fflush(stdin); cout<<" Nhap ky hoc: "; cin>>ky; nhaptep(masv); hocphi=b.xemlk(lop,ky); } void hpsinhvien::xemmh() { cout<<" Ngay: "<<ngay; xemsinhvien(); cout<<" Ky hoc: "<<ky; cout<<" Hoc phi: "<<hocphi; } void hpsinhvien::ghitep() { char fileout[25]="bai_11_hpsinhvien.txt"; fstream out(fileout,ios::out|ios::app); if (!out) { cout<<" Khong mo duoc file "<<fileout; return; } out<<"Ngay: "<<ngay; out<<" Ma sinh vien: "<<masv; out<<" Ho ten: "<<hoten; out<<" Lop: "<<lop; out<<" Ky hoc: "<<ky; out<<" Hoc phi: "<<hocphi; out<<" "; out.close(); } main() { banghocphi b; b.nhaptep(); hpsinhvien h; h.nhaphp(b); h.xemmh(); h.ghitep(); getch(); } BÀI 12 Câu 1: Khai báo các lớp với các biến thành phần (private hoặc protected) sau: - Lớp học phí có tên là hocphi( tenmon, hocphi) - Lớp bảng học phí có tên là banghocphi(hocphi dshocphi[100], tshp) - Lớp học phí sinh viên có tên là hpsinhvien(ngay, masv, hoten, lop, hocphi dshp[100], tsmon, tongtien). Câu 2: Viết chương trình quản lý học phí với các hàm thành phần của các lớp như sau: 1. Hàm nhaptep nhập thông tin một banghocphi từ tệp văn bản 2. Hàm xemmon của lớp banghocphi xem thông tin hocphi theo tenmon 3. Hàm nhaphp nhập thông tin hpsinhvien từ bàn phím (chỉ nhập ngay, masv, hoten, lop, các tenmon) 4. Hàm xemmh xem hpsinhvien đã nhập trên màn hình 5. Hàm ghitep ghi hpsinhvien đã nhập ra tệp văn bản #include<stdio.h> #include<conio.h> #include<iostream> #include<fstream> #include<cstdlib> #include<string.h> using namespace std; class hocphi; class sinhvien; class banghocphi; class hpsinhvien; class hocphi { protected: char tenmon[30]; long hocphi; public: void xemhocphi() { cout<<" Mon: "<<tenmon<<"\t Hoc phi: "<<hocphi; } friend class banghocphi; friend class hpsinhvien; }; class sinhvien { protected: char masv[10],hoten[20],lop[10]; public: void nhaptep(char []); void xemsinhvien() { cout<<" Ma sinh vien: "<<masv; cout<<" Ho ten: "<<hoten; cout<<" Lop: "<<lop; } }; void sinhvien::nhaptep(char tmasv[]) { char filein[25]="bai_12_sinhvien.txt"; char ttmasv[20]; long ktra=0; fstream in(filein,ios::in); if (!in) { cout<<" Khong mo duoc file "<<filein; return; } while (!in.eof()) { in.getline(ttmasv,20); if (strcmp(ttmasv,tmasv)==0) { in.getline(hoten,20); in.getline(lop,10); ktra=1; return; } } if (ktra==0) cout<<" Nhap sai ma sinh vien"; in.close(); } class banghocphi { protected: hocphi dshocphi[100]; long tshp; public: void nhaptep(); long xemmon(char []); }; void banghocphi::nhaptep() { char filein[25]="bai_12_banghocphi.txt"; char thocphi[10]; fstream in(filein,ios::in); if (!in) { cout<<" Khong mo duoc file "<<filein; return; } tshp=0; while (!in.eof()) { tshp++; in.getline(dshocphi[tshp].tenmon,30); in.getline(thocphi,10); dshocphi[tshp].hocphi=atol(thocphi); } in.close(); } long banghocphi::xemmon(char ttenmon[]) { for (int i=1;i<=tshp;i++) if (strcmp(dshocphi[i].tenmon,ttenmon)==0) return dshocphi[i].hocphi; return -1; } class hpsinhvien: public sinhvien { protected: long ngay,tsmon,tongtien; hocphi dshp[100]; public: void nhaphp(banghocphi); void xemmh(); void ghitep(); }; void hpsinhvien::nhaphp(banghocphi b) { cout<<" Nhap ngay: "; cin>>ngay; cout<<" Nhap ma sinh vien: "; fflush(stdin); gets(masv); fflush(stdin); nhaptep(masv); tongtien=0; cout<<" Nhap tong so mon: "; cin>>tsmon; for (int i=1;i<=tsmon;i++) { cout<<" Nhap ten mon thu "<<i<<" :"; fflush(stdin); gets(dshp[i].tenmon); fflush(stdin); dshp[i].hocphi=b.xemmon(dshp[i].tenmon); tongtien+=dshp[i].hocphi; } } void hpsinhvien::xemmh() { cout<<" Ngay: "<<ngay; xemsinhvien(); cout<<" Tong so mon hoc: "<<tsmon; for (int i=1;i<=tsmon;i++) dshp[i].xemhocphi(); cout<<" Tong tien: "<<tongtien; } void hpsinhvien::ghitep() { char fileout[25]="bai_12_hocphisv.txt"; fstream out(fileout,ios::out|ios::app); if (!out) { cout<<" Khong mo duoc file "<<fileout; return; } out<<"Ngay: "<<ngay; out<<" Ma sinh vien: "<<masv; out<<" Ho ten: "<<hoten; out<<" Lop: "<<lop; out<<" Tong so mon: "<<tsmon; for (int i=1;i<=tsmon;i++) { out<<" Ten mon: "<<dshp[i].tenmon; out<<"\t Hoc phi: "<<dshp[i].hocphi; } out<<" Tong tien: "<<tongtien; out<" "; out.close(); } main() { banghocphi b; b.nhaptep(); hpsinhvien h; h.nhaphp(b); h.xemmh(); h.ghitep(); getch(); }
Bạn đang đọc truyện trên: Truyen2U.Com