有書籍和使用者的借還書模組

來源:互聯網
上載者:User
有書籍和使用者的借還書模組

/*
  Name: 唐湘衡
  Copyright: 唐湘衡
  Author: 唐湘衡
  Date: 09-11-08 15:18
  Description:
*/
#include<iostream>
using namespace std;
#define  MAX 20  //定義數組元素的大小
#define  LOAN_YES 1   //代表書已借出
#define  LOAN_NO  0  //代表書未借出
#define  UNLEND   00 //使用者借了書
#define  LEND     11  //使用者未借書
//****************使用者資訊******************************         
struct User
{
       char uname[21];      //使用者的姓名
       char unuber[9];       //借書證號
       char classNo[35];    //班級
       int  stuNo;          //編號 
       int  sos;           //借書標誌
};
User ones[MAX] =
      {  {"劉烈林","0001","嵌入式3081",1,UNLEND },{"鐘式常","0002","嵌入式3082",2,UNLEND },
         {"唐齊亮","0003","IIIT3083",3,UNLEND },{"王啟剛","0004","數控3088",4,UNLEND },
         {"唐文化","0005","生化製藥3087",5,UNLEND },{"王小波","0006","藝術設計3086",6,UNLEND },
         {"鄧  文","0007","人工智慧3088",10,UNLEND},{"唐政委","0008","軍事指揮8088",69,UNLEND},
         {"章  昊","0009","生化研究3308",40,UNLEND},{"李開複","0010","軟體設計3086",88,UNLEND} };
           
//**************書籍資訊********************************
struct Book
{
       char  id[9];        //書的ISBN號
       char  name[35];     //書名
       char  author[11];    //作者
       char  publisher[31];  //出版社
       float price;         //價格
       int   flag;         //外借標記
       User  ones;
};
 Book book[MAX] =
      { {"ISBN001","LINUX編程","李開複","廈門大學出版社",64.00,LOAN_NO},
        {"ISBN002","c++程式設計","譚浩強","清華大學出版社",36.00,LOAN_NO},
        {"ISBN003","PIC單片機實用c","孫安青","中國電力出版社",39.80,LOAN_NO},
        {"ISBN004","JAVA程式設計","唐湘衡","軟體學院出版社",55.00,LOAN_NO},
        {"ISBN005","c++實用教程","鄭阿奇","電子工業出版社",48.00,LOAN_NO},
        {"ISBN006","C語言編程","C.Thomas","電子工業出版社",68.00,LOAN_NO},
        {"ISBN007","電腦系統設計","王偉明","人民郵政出版社",88.00,LOAN_NO},
        {"ISBN008","資料結構","嚴蔚敏","清華大學出版社",28.00,LOAN_NO},
        {"ISBN009","資料庫設計","陳小波","中國電力出版社",55.00,LOAN_NO},
        {"ISBN010","電腦演算法","劉小平","北京大學出版社",77,LOAN_NO}};
 
int main()
{
    void  functionMenu();                //菜單顯示函數
    void  listBook();                    //圖書清單列表顯示
    void  lendBook();                    //借書函數
    void  returnBook();                  //還書函數
    void  showLended();                   //顯示已借出的圖書
    void  playUser();                     //顯示使用者借書情況
   
    char  choice;
    while(choice!=6)                   //不斷顯示菜單
    {
          functionMenu();
          cin>>choice;
          switch(choice)
          {
              case '1':     //顯示全部書籍
                         listBook();    break;
              case '2':      //借書
                         lendBook();    break;
              case '3':     //還書
                         returnBook();  break;
              case '4':  showLended();  break;
                            //顯示使用者借書情況
              case '5':  playUser();  break;
              case '6':     //退出
                         return 0;
              default :    //不執行任何操作
                         break;                                   
          }
    }
    system("pause");
    return 0;
}
//***************************顯示全部資訊***********************************
void   listBook()
{
      char*title = "外借";
      //顯示表頭 n佔得位元,s表示字元類型,後面的f表示浮點類型
      printf("%8s%16s%11s%14s%10s%10s/n","ISBN","書名","作者","出版社","價格","外借否");
      for(int i=0; i<MAX; i++)
      {
          if (book[i].price==0)  break; //如遇價格為0,則所有書顯示完畢
          if (book[i].flag==LOAN_YES)   //把宏定義符定義為漢字
          {
               title = "外借";
          }else
          {
               title = "在庫";
          }
                     //顯示圖書所有資訊
           printf("%9s%16s%11s%16s%8.2f%8s/n",
                  book[i].id,book[i].name,book[i].author,book[i].publisher,book[i].price,title);
      }
}
//****************************借書************************************
void lendBook()
{    
      char bookId[11];          //用來接收待借圖書書號
      char userNuber[11];         //用來接收待使用者的借書號
      int i,j;
     
      cout<<"請輸入想借書的書號:";
      cin>>bookId;
      for (i=0; i<MAX; i++)         //尋找圖書
      {
          if ( strcmp (book[i].id,bookId) == 0 ) //找到有此書
          {
               if (book[i].flag == LOAN_YES)     // 如書已借出
               {
                   cout<<"您要借的書已被別人借走!"<<endl;
               } else     //執行借書操作
               {
                   cout<<"請輸入您的借書卡號:";
                   cin>>userNuber;
                   for (j=0; j<MAX; j++) //對使用者進行掃描
                   {
                        if ( strcmp (ones[j].unuber,userNuber) == 0 )  //有此使用者資訊
                        {
                             ones[j].sos  = LEND;         //標記此使用者已借了書
                             book[i].flag = LOAN_YES;    // 標記書現已被借出
                                //顯示所借的書籍資訊
                             cout<<ones[j].uname<<"先生,您好!您借的書籍是:"<<book[i].name<<endl;
                             cout<<"書籍詳細資料如下:"<<endl;
                             cout<<"  "<<"書ISBN"<<"          "<<"書名"<<"        "<<"作者"<<"        "<<
                             "出版社"<<"       "<<"價格"<<"   "<<"借書人"<<endl;             
                             printf("%9s%16s%11s%16s%8.2f%8s/n",
                             book[i].id,book[i].name,book[i].author,book[i].publisher,book[i].price,ones[j].uname);
                             cout<<"借書成功,請按時還書!"<<endl;  
                        }
                   }     
                 
               }
               break;
          }
      }
      if (i == MAX)   //全部找了,沒有此書,進行提示
      {
            cout<<"未能找到您要找的圖書!"<<endl;
      }  
}
//************************還書**************************************
void  returnBook()
{
      char bookId[11];          //用來接收待還圖書書號
      int i;
      cout<<"請您輸入要還書籍的書號:";
      cin>>bookId;
      for (i=0; i<MAX; i++)         //尋找圖書
      {
          if(strcmp (book[i].id,bookId) == 0 )     //找到有此書
          {
              if (book[i].flag==LOAN_YES && ones[i].sos==LEND)           //如表示為借出
              {
                   book[i].flag = LOAN_NO;        // 把還來的書籍標記未借
                   ones[i].sos  = UNLEND;         //把使用者還書標記記上
                   cout<<"您還的書籍是:"<<endl;
                   cout<<"  "<<"書ISBN"<<"          "<<"書名"<<"        "<<"作者"<<"        "<<
                   "出版社"<<"       "<<"價格"<<"   "<<"借書人"<<endl;             
                   printf("%9s%16s%11s%16s%8.2f%8s/n",
                        book[i].id,book[i].name,book[i].author,book[i].publisher,book[i].price,ones[i].uname);
                   cout<<"還書成功,謝謝您的使用!歡迎下次光臨!"<<endl;
              } else                             //如書未借,輸出錯誤操作
              {
                   cout<<"操作失誤,此書在庫!請重新輸入!"<<endl;
              }   
          }
      }
}  
//*************************查詢具體借書資訊*******************************
void  showLended()
{
      cout<<"歡迎查詢!"<<endl;
      char m[11];
      cout<<"請輸入要查詢的書的ISBN號:";
      cin>> m;
      for (int i=0; i<MAX; i++)   //對書庫進行掃描
      {
         if ( strcmp(book[i].id,m) == 0 )//找到有此書
         {
              if ((book[i].flag==LOAN_YES))   //且已借出
              {
                  cout<<"您要查詢借出的書籍資訊及借書人資訊如下"<<endl;
                  cout<<"  "<<"書ISBN"<<"          "<<"書名"<<"      "<<"價格"<<"      "<<
                  "借書人"<<"    "<<"借書卡號"<<"     "<<"班級"<<endl;                           
                      //顯示借出的書籍
                  printf("%9s%16s%8.2f%11s%10s%14s/n",
                    book[i].id,book[i].name,book[i].price,ones[i].uname,ones[i].unuber,ones[i].classNo);
              }else
              {
                   cout<<"這本書還沒有借出!"<<endl;
              }
         }  
      }
}
//************************菜單函數*************************************
void  functionMenu()
{
      cout<<"1.查詢全部圖書"<<endl;
      cout<<"2.借書"<<endl;
      cout<<"3.還書"<<endl;
      cout<<"4.查詢具體借書資訊"<<endl;
      cout<<"5.顯示使用者資訊及借書情況"<<endl;
      cout<<"6.退出"<<endl;
      cout<<"請選擇功能編號:";
}
//***************************顯示使用者借書情況**************************
 void  playUser()
 {
      int i;
      char *change = "借了書";  //為後續轉換做準備
      printf("%8s%10s%16s%10s%12s/n","姓名","卡號","班級","編號","借書情況");
      for (i=0; i<MAX; i++)  //掃描
      {
           if (ones[i].stuNo == 0)  break;       //如果編號為0,則像結束,這是為防止那些多餘顯示
           if (ones[i].sos == LEND)               //借了書
           {
                change = "借了書"; 
           }else
           {
                change = "未借書"; 
           }
            printf("%8s%10s%16s%10i%12s/n",ones[i].uname,ones[i].unuber,ones[i].classNo,ones[i].stuNo,change);
      }
     
 }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.