有书籍和用户的借还书模块

有书籍和用户的借还书模块

/*
  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);
      }
     
 }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值