⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 搞笑图书馆.cpp

📁 主要介绍了一个用c++编写的比较搞笑的程序
💻 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 + -