Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 15

//-------------------- Cau g-----------------------------

/*
Tra sach: Co 2 cach tra
+ Tra binh thuong
+ Bao mat sach
Neu den thi ok
Neu khong den: khoa the

Xu li:
+ Tra sach binh thuong:
Chinh lai trang thai cua dau sach:
trong DanhSachMuonTra: chuaTra -> daTra va Cap nhat ngay
tra
trong DanhMucSach: daMuon -> choMuonDuoc
+ Bao mat sach va den:
Chinh lai trang thai cua dau sach:
trong DanhSachMuonTra: chuaTra -> lamMatSach(khong cap nhat
ngay tra)
trong DanhMucSach: daMuon -> daThanhLy
+ Bao mat sach va khong den
Chinh lai trang thai cua the doc gia: conHoatDong-> biKhoaThe
Chinh lai trang thai cua dau sach:
trong DanhSachMuonTra: chuaTra -> lamMatSach(khong cap nhat
ngay tra)
trong DanhMucSach: daMuon -> daThanhLy

- Cho nguoi dung nhap ma the doc gia


+ neu khong ton tai ma the thi thong bao.
+ neu co ton tai ma the:
- in ra:
+thong tin doc gia: ho, ten, gioiTinh.
+cac sach dang muon gom cac thong tin:
maSach, tenSach, theLoai, tacGia, ngayMuon
- Neu khong co quyen nao dang muon thi khong cho nguoi dung tra
sach
- Neu co sach dang muon thi cho nguoi dung tra sach bang cach duy
chuyen Up, Down
va nhan Enter de tra quyen sach do hoac nhan F3 de bao mat sach (1)
- xu li tra sach binh thuong, bao mat sach den va khong den;
- in ra so sach con lai (neu co)
- Quay lai (1)
*/
#include <iostream>
#include <Windows.h>
#include <string>
#include <conio.h>
#include <fstream>
#include <cmath>
#include <sstream>
#include <ctime>
using namespace std;
// Phim nong
const int Backspace = 8, Esc = 27, Enter = 13, Up = 72, Down = 80,
Left = 75, Right = 77, Delete = 83, F2 = 60, F3 = 61, Space = 32;

const int MAXDAUSACH = 1000, MAXDOCGIA = 1000, NGAYQUAHAN = 7, MAXSACHMUON = 3;


int nDMS, nMT;
//---- Danh Muc Sach-----
enum TrangThai{choMuonDuoc, daMuon, daThanhLy}; //choMuonDuoc = 0, daMuon =
1,daThanhLy = 2
struct DanhMucSach{
string maSach; // ISBN_stt
TrangThai trangThai;
string viTri;
};
struct NodeDanhMucSach{
DanhMucSach info;
NodeDanhMucSach *next;
};

// ---------- Muon Tra ------------


enum TrangThaiMuonTra {chuaTra, daTra, lamMatSach}; // chua tra = 0; da tra = 1;
lam mat sach = 2
struct Date {
int ngay;
int thang;
int nam;
};
struct MuonTra{
string maSach; // ISBN_stt

Date ngayMuon;
Date ngayTra;
TrangThaiMuonTra trangThai;
};
struct NodeMuonTra{
MuonTra info;
NodeMuonTra *next;
};

//------------ Danh Sach Doc Gia -----------------


enum TrangThaiDocGia{biKhoaThe, conHoatDong}; // biKhoaThe = 0 , conHoatDong = 1

struct DocGia{
string ho;
string ten;
string phai;
TrangThaiDocGia trangThai;
int thoiGianQuaHan;
NodeMuonTra *mt = NULL;
};

struct NodeDocGia{
int maThe; // Random
DocGia info;
int chiSoCanBang;
NodeDocGia *left, *right;
};

//------------------------ luu file --------------------------------


void DemDocGia(NodeDocGia *root, int &k) {
if(root != NULL) {
DemDocGia(root->left, k);
k++;
DemDocGia(root->right, k);
}
}
void LuuDocGia(NodeDocGia *root) {
int k = 0;
ofstream file;
file.open("DocGia.txt", ios_base::out);
DemDocGia(root, k);
file << k << endl;
const int STACKSIZE = 500;
NodeDocGia* Stack[STACKSIZE];
NodeDocGia* p = root;
int sp = -1;
do {
while(p!= NULL) {
Stack[++sp] = p;
p = p->left;
}
if(sp == -1) {
p = Stack[sp--];
file <<p->maThe << endl
<<p->info.ho << endl
<<p->info.ten<< endl
<<p->info.phai << endl
<<p->info.trangThai << endl;
p = p->right;
}
else break;
}while(1);
file.close();
}

LuuDanhSachMuonTra(NodeDocGia *root) {
ofstream file;
file.open("DanhSachMuonTra.txt", ios_base::out);
file << nMT << endl;
int sp = -1;
const int STACKSIZE = 500;
NodeDocGia* Stack[STACKSIZE];
NodeDocGia *p = root;
do {
while(p!=NULL) {
Stack[++sp] == p;
p = p->left;
}
if(sp == -1){
p = Stack[sp--];
NodeMuonTra *r = p->info.mt;
while(r != NULL) {
file << p->maThe << endl
<< r->info.maSach << endl
<< r->info.ngayMuon.ngay <<" " << r-
>info.ngayMuon.thang <<" " <<r->info.ngayMuon.nam << endl
<< r->info.ngayTra.ngay <<" "<< r->info.ngayTra.thang
<<" "<<r->info.ngayTra.nam << endl
<< r->info.trangThai << endl;
r = r->next;
}
p = p->right;
}
else break;
}while(1);
file.close();
}
void LuuDanhMucSach(DanhSachDauSach dsds){
ofstream file;
file.open("DanhMucSach.txt", ios_base::out);
file << nDMS << endl;
for(int i = 0; i < dsds.n; i++) {
NodeDanhMucSach *r;
for(r = dsds.dsDauSach[i]->dms; r->next != NULL; r = r -> next) {
file <<r->info.maSach << endl
<<r->info.trangThai << endl;
}
}
file.close();
}

Date NgayHienTai() //Tra ve thoi gian hien tai


{
Date n;
time_t hientai = time(0);
tm *ltm = localtime(&hientai);
n.ngay = ltm->tm_mday;
n.thang = 1 + ltm->tm_mon;
n.nam = 1900 + ltm->tm_year;
return n;
}

int SoLuongSachDangMuon(NodeDocGia *p) {


int dem = 0;
NodeMuonTra *v = p->info.mt;
while(v!= NULL) {
if(v->info.trangThai == chuaTra)
dem++;
v = v->next;
}
return dem;
}

int KiemTraMaTheDocGia(NodeDocGia *root, int maTheDocGiaTuBanPhim) {


// Duyet cay bang LNR, thuat toan trong giao trinh
const int STACKSIZE = 500;
NodeDocGia *Stack[STACKSIZE];
NodeDocGia *p = root;
int sp = -1; // khoi tao stack rong
do {
while (p != NULL) {
Stack[++sp] = p;
p = p->left;
}
if(sp == -1) {
p = Stack[sp--];
if(p->maThe == maTheDocGiaTuBanPhim) return 1;
p = p->right;
}
else break;
}while (1);
return 0;
}

NodeDocGia* TimDocGia(NodeDocGia *root, int maTheDocGiaTuBanPhim) {


// Duyet cay bang LNR, thuat toan trong giao trinh
const int STACKSIZE = 500;
NodeDocGia *Stack[STACKSIZE];
NodeDocGia *p = root;
int sp = -1; // khoi tao stack rong
do {
while (p != NULL) {
Stack[++sp] = p;
p = p->left;
}
if(sp == -1) {
p = Stack[sp--];
if(p->maThe == maTheDocGiaTuBanPhim) return p;
p = p->right;
}
else break;
}while (1);
}
void InThongTinDocGia(NodeDocGia *p) {
cout <<"Ho va ten: " << p->info.ho <<" " << p->info.ten;
cout <<"Gioi tinh" <<p->info.phai;
}
void InCacSachDangMuon(NodeDocGia *p, DanhSachDauSach dsds) {
// info sach
NodeMuonTra *v = p->info.mt;
string temp; // lay phan dau cua ma sach de duoc ISBN
while(v!= NULL) {
if(v->info.trangThai == chuaTra) {
cout <<v->info.maSach;

// lay ISBN tu ma sach(trong DanhSachMuonTra) cua quyen sach vua


tim duoc.
string temp;
int i;
for(i = 0; i < v->info.maSach.length(); i++) // 3432_1
if(v->info.maSach[i] == '_') break;
temp = v->info.maSach.substr(0,i); // 3432

// tim sach trong dms co isbn giong temp


for(i = 0; i < dsds.n; i++)
if(dsds.dsDauSach[i]->ISBN.compare(temp) == 0) break;

// in thong tin sach dang muon


cout << dsds.dsDauSach[i]->tenSach;
cout << dsds.dsDauSach[i]->tacGia;
cout << dsds.dsDauSach[i]->theLoai;
cout << v->info.ngayMuon.ngay <<"/" <<v->info.ngayMuon.thang
<<"/" <<v->info.ngayMuon.nam;
}
v = v->next;
}
}
/*
+ Tra sach binh thuong:
Chinh lai trang thai cua dau sach:
trong DanhSachMuonTra: chuaTra -> daTra va Cap nhat ngay
tra
trong DanhMucSach: daMuon -> choMuonDuoc
*/

void TraSachBinhThuong(NodeDocGia* &p, DanhSachDauSach &dsds) { // xu li cho 1


quyen
NodeMuonTra* v = p->info.mt;
string ma, temp;
while(v != NULL) {
if(v->info.trangThai == chuaTra) {
v->info.trangThai = daTra;
v->info.ngayTra = NgayHienTai();
ma = v->info.maSach ;
break;
}
v = v->next;
}
int i;
for(i = 0; i < ma.length(); i++) // 3432_1
if(ma[i] == '_') break;
temp = ma.substr(0,i); // 3432

// tim sach trong dms co isbn giong temp


for(i = 0; i < dsds.n; i++)
if(dsds.dsDauSach[i]->ISBN.compare(temp) == 0) break;
// tim cac dau sach(trong dms) giong voi maSach trong danh sach muon tra
NodeDanhMucSach *r = dsds.dsDauSach[i]->dms;
while(r != NULL) {
if(r->info.maSach.compare(ma) == 0) {
r->info.trangThai = choMuonDuoc;
break;
}
r = r->next;
}
}
/*
+ Bao mat sach va den:
Chinh lai trang thai cua dau sach:
trong DanhSachMuonTra: chuaTra -> lamMatSach
trong DanhMucSach: daMuon -> daThanhLy
*/
void BaoMatSachVaDen(NodeDocGia *&p, DanhSachDauSach &dsds){
NodeMuonTra *v = p->info.mt;
string ma, temp;
while(v != NULL) {
if(v->info.trangThai == chuaTra) { // quyen tai vi tri nhan enter
v->info.trangThai = lamMatSach;
ma = v->info.maSach;
break;
}
v=v->next;
}

int i;
for(i = 0; i < ma.length(); i++)
if(ma[i] == '_') break;
temp = ma.substr(0,i);

for(i = 0; i < dsds.n; i++)


if(dsds.dsDauSach[i]->ISBN.compare(ma) == 0) break;

NodeDanhMucSach *r = dsds.dsDauSach[i]->dms;
while(r != NULL) {
if(r->info.maSach.compare(ma) == 0) {
r->info.trangThai = daThanhLy;
break;
}
r = r->next;
}
}
/*
+ Bao mat sach va khong den
Chinh lai trang thai cua the doc gia: conHoatDong-> biKhoaThe
Chinh lai trang thai cua dau sach:
trong DanhSachMuonTra: chuaTra -> lamMatSach(khong cap nhat
ngay tra)
trong DanhMucSach: daMuon -> daThanhLy
*/
void BaoMatSachVaKhongDen(NodeDocGia *&p, DanhSachDauSach &dsds) {
p->info.trangThai = biKhoaThe;

NodeMuonTra *v = p->info.mt;
string ma, temp;
while(v != NULL) {
if(v->info.trangThai == chuaTra) { // quyen tai vi tri nhan enter
v->info.trangThai = lamMatSach;
ma = v->info.maSach;
break;
}
v=v->next;
}

int i;
for(i = 0; i < ma.length(); i++)
if(ma[i] == '_') break;
temp = ma.substr(0,i);

for(i = 0; i < dsds.n; i++)


if(dsds.dsDauSach[i]->ISBN.compare(ma) == 0) break;

NodeDanhMucSach *r = dsds.dsDauSach[i]->dms;
while(r != NULL) {
if(r->info.maSach.compare(ma) == 0) {
r->info.trangThai = daThanhLy;
break;
}
r = r->next;
}
}

//-----thao tac vs ban phim----------


void cauG(NodeDocGia *&root , DanhSachDauSach &dsds) {
int maTheNhapTuBanPhim = 0;
int lengthMaTheNhapTuBanPhim;
string temp; // lay phan dau cua ma sach de duoc ISB
do
{
char kiTu = getch();
switch (kiTu)
{
case Enter:
{
if (KiemTraMaTheDocGia (root, maTheNhapTuBanPhim) ==
false)
{
cout << "Khong tim thay doc gia nay, hay nhap
lai ma doc gia!";
getch ();// cho nguoi dung nhap lai nhung khong
hien ra ki tu do
}
else
{
NodeDocGia *p = TimDocGia (root,
maTheNhapTuBanPhim);
InThongTinDocGia(p);
InCacSachDangMuon(p, dsds);
int sl = SoLuongSachDangMuon (p);
do
{
char kiTu2 = getch();
switch (kiTu2)
{
case Enter: if (sl > 0)
{
cout <<"Ban muon
tra sach(Y/N)? ";
char kiTu3 =
getch();
if(kiTu3 == 'Y' ||
kiTu3 == 'y') {

TraSachBinhThuong(p, dsds);

LuuDanhSachMuonTra(root);

LuuDanhMucSach (dsds);
cout << "Tra
sach thanh cong, du lieu da duoc luu lai!";

InCacSachDangMuon (p, dsds); // cap nhat lai cac sach dang muon va in ra
sl =
SoLuongSachDangMuon (p);
}
else if(kiTu3 ==
'N' || kiTu3 == 'n') return;

} break;
case F3: if (sl > 0)
{
cout <<"Ban muon den
sach(Y/N)? ";
char kiTu3 =
getch();
if(kiTu3 == 'Y' ||
kiTu3 == 'y') {

BaoMatSachVaDen(p, dsds);
LuuDanhSachMuonTra(root);

LuuDanhMucSach(dsds);
cout << "Den
thanh cong, du lieu da duoc luu lai!";

InCacSachDangMuon (p, dsds); // cap nhat lai cac sach dang muon va in ra
sl =
SoLuongSachDangMuon (p);
}
else if(kiTu3 ==
'N' || kiTu3 == 'n') {

BaoMatSachVaDen(p, dsds);

LuuDocGia(root);

LuuDanhSachMuonTra(root);

LuuDanhMucSach(dsds);
cout << "The
da bi khoa do khong den sach!";

InCacSachDangMuon (p, dsds); // cap nhat lai cac sach dang muon va in ra
sl =
SoLuongSachDangMuon (p);
}
} break;
}
} while (1);
}
} break;
case Backspace:
if (lengthMaTheNhapTuBanPhim > 0)
{
lengthMaTheNhapTuBanPhim--;
cout << " ";
// Dua dau nhay lai vi tri truoc khi in ra khoang
trang
lengthMaTheNhapTuBanPhim /= 10;
} break;
case Esc: return;
default:
{
if (kiTu >= 48 && kiTu <= 57)
{
switch(kiTu)
{
case '0': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 0; break;
case '1': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 1; break;
case '2': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 2; break;
case '3': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 3; break;
case '4': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 4; break;
case '5': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 5; break;
case '6': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 6; break;
case '7': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 7; break;
case '8': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 8; break;
case '9': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 9; break;
}
lengthMaTheNhapTuBanPhim++;
cout << kiTu;
}
}
}
} while (1);
}

//------------------------------ Cau f ------------------------------


/*
*Khong cho doc gia muon sach khi:
+ Trang thai the cung doc gia: biKhoaThe
+ Neu so luong sach da muon > 3
+ Co sach muon qua han: giu sach > 7 ngay
+ Neu nguoi dung chon cuon sach giong sach da muon nhung chua tra(neu
da tra thi duoc muon lai)
+ Sach do het.
- Cho nguoi dung nhap ma the doc gia
+Kiem tra ma the co ton tai hay khong?
+ Khong ton tai: thong bao
+ Ton tai:
In ra thong tin doc gia
In ra cac sach doc gia dang muon
+ Neu:
+ Trang thai the cung doc gia: biKhoaThe
+ Neu so luong sach da muon > 3
+ Co sach muon qua han: giu sach > 7 ngay
==> Thong bao khong cho muon sach
else Thong bao nhan Enter de muon sach (2)
+ In ra danh sach dau sach
+ Dung Up/ Down de duy chuyen (thanh sang) de chon
sach va nhan enter de muon sach do
+ Xu li muon sach:
+ In ra danh sach dau sach
+ Dung Up/ Down de duy chuyen (thanh sang) de
chon sach va nhan enter de muon sach do
+ Neu nguoi dung chon cuon sach giong sach da
muon nhung chua tra
==> Thong bao ban da muon sach nay nhung
chua tra.
else:
+ Neu het sach loai do thi thong bao: da
het sach nay
else
+ In ra danh muc sach cua dau sach
voi cac sach cho muon duoc, khong in ra cac sach da duoc muon
+ Dung Up/ Down de duy chuyen
(thanh sang) de chon sach va nhan enter de muon sach do
*/

int SoLuongSachDangMuonChuaTra(NodeDocGia *p) {


int dem = 0;
NodeMuonTra *v = p->info.mt;
while(v!= NULL) {
if(v->info.trangThai == chuaTra)
dem++;
v = v->next;
}
return dem;
}

/*
+ Trang thai the cung doc gia: biKhoaThe
+ Neu so luong sach da muon > 3
+ Co sach muon qua han: giu sach > 7 ngay
==> Thong bao khong cho muon sach
else Thong bao nhan Enter de muon sach (2)
*/
int NamNhuan(Date a) {
return ((a.nam % 4 == 0 && a.nam % 100 != 0) || a.nam % 400 == 0);
}
int SoNgay(Date b) { // so ngay tu 1/1/1990 -> b
int a = b.ngay - 1;
switch (b.thang)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: {
a = a + 31;
//cout <<a <<" ";
break;
}
case 4:
case 6:
case 9:
case 11:
a += 30;
case 2:
a += (NamNhuan(b)) ? 29 :28;
}
for(int i = 1990; i < b.nam; i++) {
a += (NamNhuan(b)) ? 366 :365;
}
return a;
}
int TinhNgay(Date muon, Date tra) {
return SoNgay(tra) - SoNgay(muon);
}
/*+ Xu li muon sach:
+ Xu li muon sach:
+ In ra danh sach dau sach
+ Dung Up/ Down de duy chuyen (thanh sang) de chon sach va nhan enter
de muon sach do
+ Neu nguoi dung chon cuon sach giong sach da muon nhung chua tra
==> Thong bao ban da muon sach nay nhung chua tra.
else:
+ In ra danh muc sach cua dau sach voi cac sach cho muon duoc,
khong in ra cac sach da duoc muon
+ Dung Up/ Down de duy chuyen (thanh sang) de chon sach va nhan
enter de muon sach do
+ quay lai (2)
*/
void InDanhSachDauSach(DanhSachDauSach dsds) {
for(int i = 0; i < dsds.n; i++) {
cout <<dsds.dsDauSach[i]->ISBN
<<dsds.dsDauSach[i]->tenSach
<<dsds.dsDauSach[i]->SoTrang
<<dsds.dsDauSach[i]->tacGia
<<dsds.dsDauSach[i]->namXuatBan
<<dsds.dsDauSach[i]->theLoai;
cout << endl;
}
}
void ChonSachTuDanhMucSach(DanhSachDauSach &dsds, DauSach *a, NodeDocGia *p, int
viTriThanhSang) {
string ma[MAXDAUSACH];
int soLuong = 0;
NodeDanhMucSach *r = a->dms;
while(r!=NULL) {
if(r->info.trangThai == choMuonDuoc) {
ma[soLuong++] = r->info.maSach;
}
r = r->next;
}
if(soLuong > 0) {
r = a->dms;
while(r != NULL) {
if(r->info.maSach.compare(ma[viTriThanhSang])) {
r->info.trangThai = daMuon;
break;
}
}
NodeMuonTra *g = p->info.mt;
if(g == NULL) {
g = new NodeMuonTra;
g->info.maSach = r->info.maSach;
g->info.ngayMuon = NgayHienTai();
g->info.ngayTra.nam = 0;
g->info.ngayTra.ngay = 0;
g->info.ngayTra.thang = 0;
g->info.trangThai = chuaTra;
g->next = NULL;
}
else {
NodeMuonTra *w = p->info.mt;
while(w->next != NULL) // nut cuoi
w = w->next;
NodeMuonTra *e = new NodeMuonTra;
e->info.maSach = r->info.maSach;
e->info.ngayMuon = NgayHienTai();
e->info.ngayTra.nam = 0;
e->info.ngayTra.ngay = 0;
e->info.ngayTra.thang= 0;
e->info.trangThai = chuaTra;
w->next = e;
e->next = NULL;
}
nMT++;
a->luotMuon++;
}
else {
cout <<"Sach nay da duoc muon het. Vui long chon quyen khac. ";
}
}
//In ra: ISBN, tenSach, ISBN_stt cua cac sach co trang thai choMuonDuoc
void InDanhMucSachChoMuonDuoc( NodeDocGia *p, DauSach *a) {// a la dau sach ng
dung chon
// in thong tin dau sach
cout << a->ISBN
<< a->tenSach;

for(int i = 0; i <a->soLuong; i++)


if(a->dms->info.trangThai == choMuonDuoc)
cout <<a->dms->info.maSach;
}

/*
+ Neu nguoi dung chon cuon sach giong sach da muon nhung chua tra
==> Thong bao ban da muon sach nay nhung chua tra.
*/
void ChonDauSach(DanhSachDauSach &dsds, NodeDocGia *&p, int j) { //
dsds.dsDauSach[j]: dau sach ma ng dung chon
NodeMuonTra *r = p->info.mt;
string temp = dsds.dsDauSach[j]->ISBN; // isbn cua dau sach nguoi dung chon
string temp2;
int i;
while (r != NULL) {
if(r->info.trangThai == chuaTra)
for(i = 0; i < r->info.maSach.length(); i++)
if(r->info.maSach[i] == '_')
break;
temp2 = r->info.maSach.substr(0,i);
if(temp2.compare(temp) == 0) { // trung
cout <<"Ban da muon sach nay";
InDanhSachDauSach(dsds);
break;
}
else {
InDanhMucSachChoMuonDuoc( p, dsds.dsDauSach[j]);
break;
}
r = r->next;
}
}

void DieuKienChoMuonSach(NodeDocGia *p, DanhSachDauSach dsds) {


int ngay = TinhNgay(NgayHienTai(), p->info.mt->info.ngayMuon);
if(p->info.trangThai == biKhoaThe) {
cout <<"Ban khong the muon sach vi the cua ban da bi khoa" <<endl
<<"Hay mo khoa de muon sach";
return;
}
else if(SoLuongSachDangMuon(p) == MAXSACHMUON) // trong file so sach muon <=
3
{
cout <<"Ban da muon 3 quyen sach chua tra nen ban khong the muon nua.";
return;
}
else if( ngay > NGAYQUAHAN){
cout <<"Ban da giu sach 7 ngay nen khong the muon nua";
return;
}
else cout <<"Nhan Enter de muon sach";
}

//------------ Thao tac voi ban phim --------------


void cauF(NodeDocGia *&root , DanhSachDauSach &dsds) {
int viTriThanhSang = 0; // luon duoc cap nhat
int maTheNhapTuBanPhim = 0;
int lengthMaTheNhapTuBanPhim;
string temp; // lay phan dau cua ma sach de duoc ISB
do
{
char kiTu = getch();
switch (kiTu)
{
case Enter:
{
if (KiemTraMaTheDocGia (root, maTheNhapTuBanPhim) ==
false)
{
cout << "Khong tim thay doc gia nay, hay nhap
lai ma doc gia!";
getch ();// cho nguoi dung nhap lai nhung khong
hien ra ki tu do
}
else
{
NodeDocGia *p = TimDocGia (root,
maTheNhapTuBanPhim);
InThongTinDocGia(p);
InCacSachDangMuon(p, dsds);
int sl = SoLuongSachDangMuon (p);
char kiTu2 = getch();
if(kiTu2 == Enter) {
DieuKienChoMuonSach(p, dsds);
char kiTu3 = getch();
if(kiTu3 == Enter) {
InDanhSachDauSach(dsds);
ChonDauSach(dsds, p,
viTriThanhSang);
ChonSachTuDanhMucSach(dsds,
DauSachNguoiDungChon, p,viTriThanhSang );
}
}
} break;
case Backspace:
if (lengthMaTheNhapTuBanPhim > 0)
{
lengthMaTheNhapTuBanPhim--;
cout << " ";
// Dua dau nhay lai vi tri truoc khi in ra khoang
trang
maTheNhapTuBanPhim /= 10;
} break;
case Esc: return;
default:
{
if (kiTu >= 48 && kiTu <= 57)
{
switch(kiTu)
{
case '0': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 0; break;
case '1': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 1; break;
case '2': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 2; break;
case '3': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 3; break;
case '4': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 4; break;
case '5': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 5; break;
case '6': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 6; break;
case '7': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 7; break;
case '8': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 8; break;
case '9': maTheNhapTuBanPhim =
maTheNhapTuBanPhim * 10 + 9; break;
}
lengthMaTheNhapTuBanPhim++;
cout << kiTu;
}
}
}
}
} while (1);
}

You might also like