?? 搞笑圖書館.cpp
字號:
//bookreader.h
#include<iostream.h>
#include<fstream.h>
#include<string.h>
class book
{
int bookID;
char *bookName;
char *author;
protected:
int bookBase;
char *strsave(char *s)
{
char *p;
p=new char[strlen(s)+1];
if(!p)
{
cout<<"CHAR fen pei NO!"<<endl;
return 0;
}
strcpy(p,s);
return p;
}
public:
book(int,char *,char *,int);
~book();
int seebookBase();
void changebookBase(int);
void ShowBook();
};
book::book(int bid,char *bn,char *au,int bB):bookID(bid),bookBase(bB)
{
bookName=strsave(bn);
author=strsave(au);
}
book::~book()
{
delete []bookName;
delete []author;
}
int book::seebookBase()
{
return bookBase;
}
void book::changebookBase(int n)
{
bookBase=n;
}
void book::ShowBook()
{
cout<<bookID<<","<<bookName <<",著者:"<<author<<",剩"<<bookBase<<"顆!"<<endl;
}
class reader
{
char *Rname;
int readerID;
int qu;
int *bookInfo;
protected:
char *strsave(char *s)
{
char *p;
p=new char[strlen(s)+1];
if(!p)
{
cout<<"CHAR fen pei NO!"<<endl;
return 0;
}
strcpy(p,s);
return p;
}
public:
int *intsave(int *,int);
reader(char *,int ,int ,int *);
~reader();
int seebookInfo(int);
void ShowRname();
void ShowReader();
void rentbook(book *,int);
void GiveBookBack(book *,int);
};
int * reader::intsave(int *b,int n)
{
int *p;
p=new int[n];
if(!p)
{
cout<<"INT fen pei NO!"<<endl;
return 0;
}
for(int i=0;i<n;i++)
p[i]=b[i];
return p;
}
reader::reader(char *rn,int rid,int q,int *bi):readerID(rid),qu(q)
{
Rname=strsave(rn);
bookInfo=intsave(bi,5);
}
reader::~reader()
{
delete []Rname;
delete []bookInfo;
}
int reader::seebookInfo(int i)
{
return bookInfo[i];
}
void reader::ShowRname()
{
cout<<Rname<<endl;
}
void reader::ShowReader()
{
cout<<Rname<<",劫書證號:"<<readerID<<",劫了"<<qu<<"顆!"<<endl;
}
void reader::rentbook(book *b,int n)
{
if(qu==5)
cout<<"額度滿還書先!"<<endl;
else
{
for(int i=0;i<5;i++)
if(bookInfo[i]==n)
{
cout<<"早已借不嫌煩!"<<endl;
break;
}
if(i==5)
{
if(b[n].seebookBase()==0)
cout<<"已借完等人還!"<<endl;
else
for(i=0;i<5;i++)
if(bookInfo[i]==-1)
{
bookInfo[i]=n;
qu++;
b[n].changebookBase(b[n].seebookBase()-1);
cout<<"借書成伸手接!"<<endl;
break;
}
}
}
}
void reader::GiveBookBack(book *b,int n)
{
if(qu==0)
cout<<"要還書得先借!"<<endl;
else
{
for(int i=0;i<5;i++)
if(bookInfo[i]==n)
{
bookInfo[i]=-1;
qu--;
b[n].changebookBase(b[n].seebookBase()+1);
cout<<"還書成走外面!"<<endl;
break;
}
if(i==5)
cout<<"看清了你沒借!"<<endl;
}
}
//-------------------------------------------------------------------------------------
//main()
//program by Huang Heliang
//2008.04.29 13:30:23
//--#include"bookreader.h"
void bookinitfile(book *b,int n)
{
ofstream fout("book");
if(!fout)
{cout<<"CAnnot open book!"<<endl;return;}
for(int i=0;i<n;i++)
fout<<b[i].seebookBase()<<'a';
fout.close();
}
void fileinitbook(book *b,int n)
{
char ch;
int g[7];
ifstream fin("book");
if(!fin)
{cout<<"CAnnot open book!"<<endl;return;}
for(int i=0;i<n;i++)
{ fin>>g[i]>>ch;
b[i].changebookBase(g[i]);
}
fin.close();
}
void FinitR(int *T,int n,int &qu,int user)
{
char ch;
int temp=0;
ifstream ifs;
if(user==0)
ifs.open("xlri");
else if(user==1)
ifs.open("mzzri");
else if(user==2)
ifs.open("hhlri");
else if(user==3)
ifs.open("wsyri");
if(!ifs)
{
cout<<"CAnnot open input file!"<<endl;
return;
}
for(int i=0;i<n;i++)
{
ifs>>T[i]>>ch;
if(T[i]!=-1)
temp++;
}
ifs.close();
qu=temp;
}
void fileinitreader(int **rdr,int &xlqu,int &mzzqu,int &hhlqu,int &wsyqu,int qurdr,int n)
{
int qu;
for(int i=0;i<qurdr;i++)
{
FinitR(rdr[i],n,qu,i);
if(i==0)
xlqu=qu;
if(i==1)
mzzqu=qu;
if(i==2)
hhlqu=qu;
if(i==3)
wsyqu=qu;
}
}
void RinitF(reader *r,int n,int user)
{
ofstream ofs;
if(user==0)
ofs.open("xlri");
else if(user==1)
ofs.open("mzzri");
else if(user==2)
ofs.open("hhlri");
else if(user==3)
ofs.open("wsyri");
if(!ofs)
{
cout<<"CAnnot open output file!"<<endl;
return;
}
for(int j=0;j<4;j++)
{
if(j==user)
for(int i=0;i<n;i++)
ofs<<r[j].seebookInfo(i)<<'a';
}
ofs.close();
}
void readerinitfile(reader *r,int qurdr,int n)
{
for(int i=0;i<qurdr;i++)
RinitF(r,n,i);
}
int login(int rNum)
{
char a[80],b[80];
int flag;
ifstream ifs;
if(rNum==0)
{
ifs.open("xlpwd");
if(!ifs)
{cout<<"CAnnot open xlpwd"<<endl;return 0;}
ifs>>a;
ifs.close();
}
else if(rNum==1)
{
ifs.open("mzzpwd");
if(!ifs)
{cout<<"CAnnot open mzzpwd"<<endl;return 0;}
ifs>>a;
ifs.close();
}
else if(rNum==2)
{
ifs.open("hhlpwd");
if(!ifs)
{cout<<"CAnnot open hhlpwd"<<endl;return 0;}
ifs>>a;
ifs.close();
}
else
{
ifs.open("wsypwd");
if(!ifs)
{cout<<"CAnnot open wsypwd"<<endl;return 0;}
ifs>>a;
ifs.close();
}
cout<<"要密碼看不見?:";
cin>>b;
flag=strcmp(a,b);
if(!flag)
return 1;
else
return 0;
}
void AllBook(book *b,int n)
{
for(int i=0;i<n;i++)
{
//cout<<i<<":";
b[i].ShowBook();
}
}
int who(reader *r,int n)
{
int id;
for(int i=0;i<n;i++)
{
cout<<i<<":";
r[i].ShowRname();
}
cout<<"你是誰?號碼見(0,1,2,3):";
cin>>id;
return id;
}
void readerProfile(int &rNum,reader *r,book *b)
{
r[rNum].ShowReader();
for(int i=0;i<5;i++)
if(r[rNum].seebookInfo(i)!=-1)
{
cout<<" ";
b[r[rNum].seebookInfo(i)].ShowBook();
}
}
//void option(int &rNum,reader *r,book *b);
void DoRent(int &rNum,reader *r,book *b)
{
int bookID;
AllBook(b,7);
//readerProfile(rNum,r,b);
cout<<"借書了書號見(as 1201):";
cin>>bookID;
r[rNum].rentbook(b,bookID-1201);
//option(rNum,r,b);
return;
}
void DoGiveBack(int &rNum,reader *r,book *b)
{
int bookID;
//readerProfile(rNum,r,b);
cout<<"還書了書號見(as 1201):";
cin>>bookID;
r[rNum].GiveBookBack(b,bookID-1201);
//option(rNum,r,b);
return;
}
void option(int &rNum,reader *r,book *b)
{
int op,flag;
cout<<"******"<<endl;
readerProfile(rNum,r,b);
cout<<"1:您好我借書"<<endl
<<"2:您好我還書"<<endl
<<"3:您好我換人"<<endl
<<"0:您好我走人"<<endl
<<"別愣著趕快選(1,2,3,0):";
cin>>op;
if(op==1)
{
DoRent(rNum,r,b);
option(rNum,r,b);
}
else if(op==2)
{
DoGiveBack(rNum,r,b);
option(rNum,r,b);
}
else if(op==3)
{
rNum=who(r,4);
flag=login(rNum);
if(!flag)
return;
option(rNum,r,b);
}
else if(op==0)
{
cout<<"處理中...您已經退出搞笑圖書館"<<endl;
}
return;
}
void tushusystem()
{
int readerNum,flag;
book b[7]={book(1201,"IS(是)API","J.Trent_J.蠢特",2),
book(1202,"C佳佳","味腥.陳",0),
book(1203,"SQL學!","些難.有",3),
book(1204,"VB點兒NET","這點兒.就",2),
book(1205,"ASP(啊撕皮!)","扒皮.周",1),
book(1206,"Linux","li李nu牛x叉",5),
book(1207,"電腦接口好多","棘手.很",1),
};
fileinitbook(b,7);
int xl[5];//={-1,-1,-1,-1,-1,};
int mzz[5];//={0,3,-1,-1,-1,};
int hhl[5];//={6,5,0,1,2,};
int wsy[5];//={4,6,5,0,-1,};
int *rdr[4]={xl,mzz,hhl,wsy,};
int xlqu,mzzqu,hhlqu,wsyqu;
fileinitreader(rdr,xlqu,mzzqu,hhlqu,wsyqu,4,5);
reader r[4]={reader("香龍",5121,xlqu,rdr[0]),
reader("馬自重",5122,mzzqu,rdr[1]),
reader("黃河涼",4126,hhlqu,rdr[2]),
reader("網上影",5125,wsyqu,rdr[3]),
};
cout<<"您好,10086和10010竭誠為您服務,"<<endl
<<"您的滿意是我們永恒的追求!"<<endl
<<"進入搞笑圖書館請按1"<<endl
<<"退出程序請按0"<<endl<<"準備好了嗎,請按鍵:";
cin>>flag;
if(!flag)return;
cout<<"歡迎進入搞笑圖書館,"
<<"下面由我們的工作人員"<<endl<<"為您提供幼稚服務"<<endl<<endl;
cout<<"來啦來啦,想嘮一會兒都不讓人消停"<<endl
<<"\"咕嚕嚕...\"(一顆骰子從其手中滾到桌面上)"<<endl
<<"好,從前面數第五個同學過來辦業務"<<endl;
cout<<"業務員進入機械狀態..."<<endl;
readerNum=who(r,4);
flag=login(readerNum);
if(!flag)
return ;
option(readerNum,r,b);
cout<<"-------------------------------"<<endl;
cout<<"感謝使用,如希望業務員整理圖書館請按1"<<endl
<<"如體諒她們偷懶不易成全她們請按0"<<endl
<<"她們的命運在您手中,請選擇";
cin>>flag;
if(flag)
{
cout<<"無盡的淚水中進入機械狀態..."<<endl;
cout<<"累死了查一遍:"<<endl;
AllBook(b,7);
for(int i=0;i<4;i++)
{
cout<<i<<":";
readerProfile(i,r,b);
cout<<endl;
}
}
bookinitfile(b,7);
readerinitfile(r,4,5);
tushusystem();
return ;
}
int main()
{
tushusystem();
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -