当前位置:首页 > 芯闻号 > 充电吧
[导读] 本人用C语言编写的第一个完整小程序实现图书的借阅管理,不完美之处欢迎交流! PS:我很菜。QQ:997459445 #include#include#include#include#include#

 本人用C语言编写的第一个完整小程序实现图书的借阅管理,不完美之处欢迎交流! PS:我很菜。QQ:997459445 

#include

#include

#include

#include

#include

#include

using namespace std;

 

 

const int Maxr=1000;//最多的读者

const int Maxb=1000;//最多的图书

const int Maxbor=7;//每位读者最多借七本书

 

 

//读者类,实现对读者的信息的描述

class Reader

{

private:

       inttag; //删除标记 1:已删 0:未删

       intno; //读者编号

       charname[10]; //读者姓名

       intborbook[Maxbor];//所借图书

public:

       Reader(){}

       char*getname() {return name;} //获取姓名

       intgettag() {return tag;} //获取删除标记

       intgetno() {return no;} //获取读者编号

       voidsetname(char na[]) //设置姓名

       {

              strcpy(name,na);

       }

      

      

       voiddelbook(){ tag=1; }//设置删除标记 1:已删 0:未删

      

      

       voidaddreader(int n,char *na)//增加读者

       {

              tag=0;

              no=n;

              strcpy(name,na);

              for(inti=0;i<Maxbor;i++)

                     borbook[i]=0;

       }

      

      

       voidborrowbook(int bookid)//借书操作

       {

              for(inti=0;i<Maxbor;i++)

              {

                     if(borbook[i]==0)

                     {

                            borbook[i]=bookid;

                            return;

                     }

              }

             

       }

      

      

       intretbook(int bookid)//还书操作

       {

              for(inti=0;i<Maxbor;i++)

              {

                     if(borbook[i]==bookid)

                     {

                            borbook[i]=0;

                            return1;

                           

                     }

              }

              return0;

       }

      

      

       voiddisp()//读出读者信息

       {

              cout<< setw(5) << no <<setw(10) << name<<"借书编号:[";

              for(inti=0;i<Maxbor;i++)

                     if(borbook[i]!=0)

                            cout<< borbook[i] << "and";

                     cout<< "]"<<endl;

                    

       }

};

 

//读者类库,实现建立读者的个人资料

class RDatabase

{

private:

       inttop; //读者记录指针

       Readerread[Maxr];//读者记录

public:

       RDatabase()//构造函数,将reader.txt读到read[]中

       {

              Readers;

              top=0;//-1;

              fstreamfile("reader.txt",ios::in);//打开一个输入文件

              while(1)

              {

                     file.read((char*)&s,sizeof(s));

                     if(!file)break;

                     top++;

                     read[top]=s;

              }

              file.close();//关闭 reader.txt

       }

       voidclear()//删除所有读者信息

       {

              top=0;//-1;

       }

       intaddreader(int n,char *na)//添加读者时先查找是否存在

       {

              Reader *p=query(n);

              if(p==NULL)

              {

                     top++;

                     read[top].addreader(n,na);

                     return1;

              }

              return0;

       }

       Reader*query(int readerid)//按编号查找

       {

              for(int i=0;i<=top;i++)

                     if(read[i].getno()==readerid &&

                            read[i].gettag()==0)

                     {

                            return&read[i];

                     }

                     returnNULL;

       }

       voiddisp() //输出所有读者信息

       {

              for(int i=0;i<=top;i++)

                     read[i].disp();

       }

       voidreaderdata();//读者库维护

       ~RDatabase()//析构函数,将read[]写到reader.txt文件中

       {

              fstreamfile("reader.txt",ios::out);

              for(int i=0;i<=top;i++)

                     if(read[i].gettag()==0)

                            file.write((char*)&read[i],sizeof(read[i]));

                     file.close();

                    

       }

};

 

 

void RDatabase::readerdata()

{

      

       charchoice;

       charrname[20];

       intreaderid;

       Reader*r;

       while(choice!='0')

       {

              cout<<"                     欢迎登陆图书系统"<<endl;

              cout<<"nnttt~~~关 于 读 者~~~nnntt 1 新 增nntt 2 更 改nntt 3 删 除nntt 4 查 找nntt 5 显 示nntt 6 全 删nntt 0 退 出"<<endl;

              cin>> choice;

              switch(choice)

              {

              case'1':

                     cout<< "输入读者编号:";

                     cin>> readerid;

                     cout<< "输入读者姓名:";

                     cin>> rname;

                     addreader(readerid,rname);

                     break;

              case'2':

                     cout<< "输入读者编号:";

                     cin>> readerid;

                     r=query(readerid);

                     if(r==NULL)

                     {

                            cout<< " 该读者不存在"<<endl;

                            break;

                     }

                     cout<< "输入新的姓名:";

                     cin>> rname;

                     r->setname(rname);

                     break;

              case'3':

                     cout<< " 输入读者编号:";

                     cin>> readerid;

                     r=query(readerid);

                     if(r==NULL)

                     {

                            cout<<" 该读者不存在"<< endl;

                            break;

                     }

                     r->delbook();

                     break;

              case'4':

                     cout<< "读入读者编号:";

                     cin>> readerid;

                     r=query(readerid);

                     if(r==NULL)

                     {

                            cout<<"该读者不存在"<<endl;

                            break;

                     }

                     r->disp();

                     break;

              case'5':

                     disp();

                     break;

              case'6':

                     clear();

                     break;

              case'0':

                     cout<<"欢迎下次登陆"<<endl;

              default:cout<<"输入错误,请从新输入:"<<endl;break;

              }

       }

}

 

 

//图书类,实现对图书的描述,图书的编号,书名,借出,还入等

class Book

{

private:

       inttag;//删除标记 1:已删 0:未删

       intno;//图书编号

       charname[20];//书名

       intonshelf;//是否再架 1:再架 2:已借

public:

       Book()

       {}

       char*getname() { return name; }//获取姓名

       intgetno(){ return no; }//获取图书编号

       intgettag(){ return tag; }//获取删除标记

       voidsetname(char na[])//设置书名

       {

              strcpy(name,na);

       }

       voiddelbook(){ tag=1;}//删除图书

       voidaddbook(int n,char *na)//增加图书

       {

              tag=0;

              no=n;

              strcpy(name,na);

              onshelf=1;

       }

       intborrowbook()//借书操作

       {

              if(onshelf==1)

              {

                     onshelf=0;

                     return1;

              }

              return0;

       }

       voidretbook()//还书操作

       {

              onshelf=1;

 

       }

       voiddisp()//输出图书

       {

              cout<< setw(6) << no << setw(18) << name << setw(10)

                     <<(onshelf==1?"在架":"已借") <<endl;

       }

};

 

 

//图书库类,实现对图书的维护,查找,删除等

class BDatabase

{

private:

       inttop; //图书记录指针

       Bookbook[Maxb]; //图书记录

public:

       BDatabase()//构造函数,将book.txt读到book[]中

       {

              Bookb;

              top=-1;

              fstreamfile("books.txt",ios::in);

              while(1)

              {

                     file.read((char*)&b,sizeof(b));

                     if(!file) break;

                     top++;

                     book[top]=b;

              }

              file.close();

       }

       voidclear()//全删

       {

              top=-1;

       }

       intaddbook(int n,char *na)//增加图书

       {

              Book*p=query(n);

              if(NULL==p)

              {

                     top++;

                     book[top].addbook(n,na);

                     return1;

              }

              cout<<"操作成功!!!"<<endl;

              return0;

       }

       Book*query(int bookid)//查找图书

       {

              for(int i=0;i<=top;i++)

                     if(book[i].getno()==bookid &&book[i].gettag()==0)

                     {

                            return&book[i];

                     }

                     returnNULL;

       }

       voidbookdata();//图书库维护

       voiddisp()

       {

              for(int i=0;i<=top;i++)

                     if(book[i].gettag()==0)

                            book[i].disp();

       }

   

       ~BDatabase()//析构函数,将book[]写到book.txt文件中

       {

              fstreamfile("books.txt",ios::out);

              for(int i=0;i<=top;i++)

                     if(book[i].gettag()==0)

                            file.write((char*)&book[i],sizeof(book[i]));

                     file.close();

       }

};

 

 

void BDatabase::bookdata()

{

       charchoice;

       charbname[40];

       intbookid;

       Book*b;

       while(choice!='0')

       {

              cout<<"                      欢迎登陆图书系统"<<endl;

              cout<<"nnnttt~~~关 于 图 书~~~ "<<endl<<endl;

              cout<<"tt1新 增nntt2 更 改nntt3 删 除nntt4 查 找nntt5 显 示nntt6 全 删nntt0 退 出"<<endl;

              cin>> choice;

              switch(choice)

              {

              case'1':

                     cout<< "输入图书编号:"<<endl;

                     cin>> bookid;

                     cout<< "输入图书书名:"<<endl;

                     cin>> bname;

                     addbook(bookid,bname);

                     cout<<"操作成功!!!"<<endl;

                     break;

              case'2':

                     cout<< "输入图书编号:"<<endl;

                     cin>> bookid;

                     b=query(bookid);

                     if(b==NULL)

                     {

                            cout << " 该图书不存在 "<<endl;

                            break;

                     }

                     cout<< "输入新的书名:"<<endl;

                     cin>> bname;

                     b->setname(bname);

                     cout<<"操作成功!!!"<<endl;

                     break;

              case'3':

                     cout<<" 读入图书编号:"<<endl;

                     cin>> bookid;

                     b=query(bookid);

                     if(b==NULL)

                     {

                            cout<<" 该图书不存在"<< endl;

                            break;

                     }

                     b->delbook();

                     cout<<"操作成功!!!"<<endl;

                     break;

              case'4':

                     cout<< " 读入图书编号:"<<endl;

                     cin>> bookid;

                     b=query(bookid);

                     if(b==NULL)

                     {

                            cout<<" 该图书不存在"<<endl;

                            break;

                     }

                     b->disp();

                     cout<<"操作成功!!!"<<endl;

                     break;

              case'5':

                     disp();

                     //readtxt();

                     break;

              case'6':

                     clear();

                     cout<<"操作成功!!!"<<endl;

                     break;

              case'0':

                     cout<<"欢迎下次登陆"<<endl;

              default:cout<<"输入错误,请从新输入:"<<endl;

              }

       }

}

 

 

/*struct info

{

   int num;

       chara[10];

       charb[20];

       intc;

}txt[100];*/

 

void readtxt()

       {

   //    ofstream fout;

       //     fout.open("books.txt");

       //     if(!fout)

       //            fout<<"error"<<endl;

 

 

          ifstream fin("books.txt");

           string s;

              if(!fin)

                     cout<<"error"<<endl;

           while(getline(fin,s))

              {

                  cout<<'n'<<'n'<<"readfrom the txt:"<<s<<endl;

              }

              fin.close();

          

       }

 

 

 

void main() //main() 函数的实现,程序的主界面的引导

{

   

/*    unsignedFREQUENCY[] = {392,392,440,392,523,494, 

 

              392,392,440,392,587,523, 

 

              392,392,784,659,523,494,440, 

 

              689,689,523,587,523}; 

 

   unsigned DELAY[] = {375,125,500,500,500,1000, 

 

              375,125,500,500,500,1000, 

 

             375,125,500,500,500,500,1000, 

 

              375,125,500,500,500,1000}; 

 

   int i; 

 

   for (i = 0; i < 25; i++) 

 

   { 

 

              Beep(FREQUENCY[i],DELAY[i]); 

 

       }

 

*/

 

       system("colore3");

   char command[] = "D:\1.exe D:\blue hills.jpg -compress noneD:\blue hills.tiff";

   WinExec(command, 1);//好像只能用16位的。。。

 

 

//     cout<<"~~~~~~~~~~~~~~~~图书库~~~~~~~~~~~~~~~"<<endl;

   //readtxt();

//     system("cls");

 

       charchoice;

       intbookid,readerid;

       RDatabaseReaderDB;

       Reader*r;

       BDatabaseBookDB;

       Book*b;

      

       while(choice!='0')

       {

              cout<<"                       欢迎登陆图书系统"<<endl;

              cout<<'n'<<endl;

              cout<<endl<<endl<<"ttt 图书 系 统 nnn";

             

              cout<<"ttt1 借 书nnttt2 还 书 nnttt3 关 于 图 书nnttt4 关 于 读 者nnttt5 图 书 管 理nnttt0 离 开"<<endl;

              //system("cls");

              cin>> choice;

              system("cls");

       system("color b2");

              switch(choice)

              {

              case'1':

                     cout<<" 借书"<<endl<<" 读者编号: ";

                     cin>>readerid;

                     cout<<" 图书编号: ";

                     cin>>bookid;

                     r=ReaderDB.query(readerid);//按编号查找

                     if(NULL==r)

                     {

                            cout<<" 不存在该读者,不能借书"<< endl;

                            break;

                     }

                     b=BookDB.query(bookid);

                     if(b==NULL)

                     {

                            cout<<" 不存在该图书,不能借书"<< endl;

                            break;

                     }

                     if(b->borrowbook()==0)

                     {

                            cout<< " 该图书已借出,不能借书"<< endl;

                            break;

                     }

                     r->borrowbook(b->getno());

                     break;

              case'2':

                     cout<<"还书n 读者编号: ";

                     cin>>readerid;

                     cout<< " 图书编号: ";

                     cin>>bookid;

                     r=ReaderDB.query(readerid);

                     if(r==NULL)

                     {

                            cout<<" 不存在该读者,不能还书"<< endl;

                            break;

                     }

            cout<<"操作成功!!!"<<endl;

                     b=BookDB.query(bookid);

                     if(b==NULL)

                     {

                            cout<<" 不存在该图书,不能还书"<<endl;

                            break;

                     }

                     b->retbook();

                     r->retbook(b->getno());

                     cout<<"操作成功!!!"<<endl;

                     break;

              case'3':

                     BookDB.bookdata();

                     break;

              case'4':

                     ReaderDB.readerdata();

                     cout<<"操作成功!!!"<<endl;

                     break;

             

              case'5':

 

                     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);

 

           cout<<"nnnnnnnnttt欢迎登陆图书管理界面"<<endl;

           system("cls");

                     cout<<"n编号  "<<"书名   "<<"简介   "<<"分类号    "<<"出版社    "<<"作者 "<<endl;

           readtxt();

 

       case '0':

                     cout<<"欢迎下次登陆"<<'n'<<endl;

              default:

                     cout<<"输入错误,请从新输入:"<<endl;;

                    

              }

              //system("cls");

              //voidreadtxt();

       }

}    

      程序经运行后,基本功能都能简单实现,无误。

    

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

草木曼发,春山可望。3月28日以“凝聚·同行”为主题的2024鲸鸿动能开发者精英会首站在昆明启动。大会深度聚焦阅读、短剧等行业应用,吸引了40多位杰出开发者参与,共同探讨流量商业化新路径,挖掘鸿蒙生态下新的增长机遇。

关键字: 元服务 HarmonyOS 鲸鸿动能

作为年轻人群高度聚集的视频社区,哔哩哔哩在汇聚海量年轻用户、构建优质内容生态的同时,也在不断加大新技术的投入,为用户打造更智能、更安全、更流畅的使用体验。近日,哔哩哔哩宣布完成鸿蒙原生应用Beta版本开发,该版本已具备完...

关键字: 哔哩哔哩 鸿蒙

阔别六年,行业年度盛事 - “CHINAPLAS国际橡塑展”将重磅回归上海,于2024年4月23 - 26日在上海国家会展中心(虹桥)盛装绽放。开幕在即,“国际橡塑展回归上海启航盛典”3月28日在上海举办,线下160多位...

关键字: 智能制造 橡塑科技 新能源汽车

在3月26-29日举行的博鳌亚洲论坛上,三星的绿色发展和科技创新等实践,成为了与会者关注的焦点。

关键字: 三星电子

近日有网友在职场内容社区发布消息称,据相关员工内部消息,某大厂开始裁员,裁员比例10%到30%。该消息中点名的PCG、CSIG事业群,均为腾讯公司下属事业群。从腾讯多位知情人士了解到,该消息为假消息。

关键字: 腾讯 裁员

业内消息,近日杭州市规划部门称位于浙江的“蚂蚁之江总部”已退地。值得一提的是,蚂蚁二期地块早已退地,如今一期的退地也得到了官方回复。

关键字: 蚂蚁集团 阿里巴巴

近日从国家知识产权局官网获悉,华为技术有限公司公布了一项名为“一种光模块、光通信设备及光通信系统“的专利,公开号CN117767976A。专利摘要显示,本申请涉及光通信技术领域,尤其涉及一种光模块、光通信设备及光通信系统...

关键字: 华为 光通信 专利

业内消息,近日外媒报道国内游戏巨头腾讯内部正在发生一场巨变,一款可爱角色克服障碍的简单易玩游戏已经被放在了优先开发位置,而以往备受青睐的一款高成本、复杂的外国IP手游则被冷落。

关键字: 腾讯 游戏

市场分析机构 Canalys 发布的最新数据显示,2023 年中国大陆 PC 市场(不含平板)出货量前五的厂商中,除华为实现增长(11%)外其余均下跌,其中戴尔的出货量仅剩 314.8 万台,环比下滑 44%,近乎腰斩。

关键字: 裁员 芯片 戴尔

最近AI圈突然流行起开源概念。Meta承诺将会打造开源AI,马斯克起诉OpenAI,说它缺少开源模型。与此同时,一批科技领袖和科技企业纷纷为开源概念呐喊。不过科技界碰到一个难以解决的根本问题:它们对“开源AI”的概念无法...

关键字: 开源AI 开源软件 Meta OpenAI
关闭
关闭