当前位置:首页 > > 充电吧
[导读] 本人用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();

       }

}    

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

    

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

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭