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