有書籍和使用者的借還書模組
/*
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);
}
}