📄 function.cpp
字号:
#include <iostream.h>
#include "function.h"
#include <stdlib.h>
Library::Library()
{
itemNum = 0;
readerNum = 0;
loanNum = 0;
managerNum = 0;
}
void Library::Run()
{
int choice;
char c;
do{
choice = ShowMainMenu();
switch(choice){
case 1:
CreateBibliotheca();
break;
case 2:
CreateReader();
break;
case 3:
CreateManager();
break;
case 4:
do{
Borrow();
cout<<"继续吗?Y(y)es/N(n)o\n";
cin>>c;
cin.get();
}while(c=='Y'||c=='y');
break;
case 5:
do{
Return();
cout<<"继续吗?Y(y)es/N(n)o\n";
cin>>c;
cin.get();
}while(c=='Y'||c=='y');
break;
case 6:
do{
Require();
cout<<"继续吗?Y(y)es/N(n)o\n";
cin>>c;
cin.get();
}while(c=='Y'||c=='y');
break;
case 0: //
exit(0);
break;
default:
cout<<"请重新选择!"<<endl;
break;
}
}while(1);
}
void Library::CreateBibliotheca() // 创建书目的成员函数
{
char s1[40],s2[20],s3[10],c;
long code;
int i = itemNum;
do{
cout<<"创建书目:\n";
cout<<"输入书目,用回车符间隔:书名 作者 分类号 条码 \n";
cout<<"书名:"; cin.getline(s1,40);
cout<<"作者:"; cin.getline(s2,20);
cout<<"分类号:"; cin.getline(s3,10);
cout<<"条码:"; cin>>code;
item[i].SetTitle(s1);
item[i].SetAuthor(s2);
item[i].SetIndexCode(s3);
item[i].SetBarCode(code);
cout<<"继续吗?Y(y)es/N(n)o\n";
cin>>c;
cin.get();
i++;
}while(c=='Y'||c=='y');
itemNum = i;
return ;
}
void Library::CreateReader() // 创建读者库的成员函数
{
char s1[40],s2[20];
char c;
int j = readerNum,age;
long code;
do{
cout<<"创建读者:\n";
cout<<"输入读者信息,用回车符间隔:姓名 职务 年龄 借书证号 \n";
cout<<"姓名:"; cin.getline(s1,40);
cout<<"职务:"; cin.getline(s2,20);
cout<<"年龄:"; cin>>age;
cout<<"借书证号:"; cin>>code;
reader[j].SetName(s1);
reader[j].SetPosition(s2);
reader[j].SetAge(age);
reader[j].SetCode(code);
cout<<"继续吗?Y(y)es/N(n)o\n";
cin>>c;
cin.get();
j++;
}while(c=='Y'||c=='y');
readerNum = j;
return ;
}
void Library::CreateManager()
{
char c;
int j = managerNum;
do{
cout<<"创建管理员:\n";
cout<<"输入管理员信息,用回车符间隔:姓名 年龄 工号 \n";
cout<<"姓名:"; cin>>manager[j].Name;
cout<<"年龄:"; cin>>manager[j].Age;
cout<<"工号:"; cin>>manager[j].Code;
cout<<"继续吗?Y(y)es/N(n)o\n";
cin>>c;
cin.get();
j++;
}while(c=='Y'||c=='y');
managerNum = j;
}
int Library::ShowMainMenu() // 显示主菜单
{
int c;
cout<<"请选择: 首次使用,建议先依次选择1,2,3:\n";
cout<<"1: 创建书目\n2: 创建读者库\n3: 创建管理员库\n4:借书\n5: 还书\n6: 查询\n0: 退出\n";
cin>>c;
cin.get();
return c;
}
void Library::Borrow() // 借书操作
{
int code,barcode;
Item it;
Loan ln;
cout<<"请输入借书证号\n";
cin>>code;
for(int i = 0; i<readerNum; i++) // 查找读者
{
if(code==reader[i].GetCode())
break;
}
if(i==readerNum) { cout<<"没有此号码,请重新选择!\n"; return;}
cout<<"借书,请输入书本条码:\n";
cout<<"书名\t作者\t分类号\t条码\n";
for(int j=0; j<itemNum; j++) // 查找书
item[j].Show();
cin>>barcode;
for( j=0; j<itemNum; j++)
if(item[j].GetBarCode()==barcode) // 若与书目中某本书条码相同
{
it = item[j];
reader[i].AddBook(it); // 添加到读者所借书
for(int k = j; k<itemNum-1; k++){ // 从可借阅书中删除借出书
item[k] = item[k+1];
}
itemNum--;
break;
}
cout<<"请选择管理员工号:\n";
cout<<"姓名\t年龄\t工号\n";
for(j=0; j<managerNum; j++) // 查找管理员
cout<<manager[j].Name<<'\t'<<manager[j].Age<<'\t'<<manager[j].Code<<endl;
cin>>code;
for(j=0; j<managerNum; j++){
if(manager[j].Code==code) break;
}
ln.manager = manager[j];
ln.reader = reader[i]; // 添加借阅信息
ln.item = it;
loan[loanNum++] = ln;
return ;
}
void Library::Return() // 还书操作
{
int code,barcode,i,j,k;
Item it; Reader rd;
Loan ln;
cout<<"还书,请输入借书证号\n";
cin>>code;
for(i = 0; i<readerNum; i++)
{
if(code==reader[i].GetCode()){
cout<<"这是您所借书,请选择待还书的条码\n";
reader[i].ShowBooks();
break;
}
}
if(i==readerNum){ cout<<"没有此号码,请重新选择!\n"; return;}
cin>>barcode;
for(j =0; j<loanNum; j++) //
{
if(loan[j].item.GetBarCode()==barcode&&loan[j].reader.GetCode()==code)
{
reader[i].DelBook(loan[j].item); // 从读者所借书中删除所还书
item[itemNum++] = loan[j].item; // 添加到可借阅书中
for(k = j; k<loanNum-1; k++) // 删除借阅信息
loan[k] = loan[k+1];
loanNum--;
break;
}
}
return;
}
void Library::Require() // 通过借书证号查询所借书
{
int code,i;
Item it; Reader rd;
Loan ln;
cout<<"查询,请输入借书证号\n";
cin>>code;
for(i = 0; i<readerNum; i++)
{
if(code==reader[i].GetCode()){
cout<<"这是您所借书\n";
reader[i].ShowBooks();
break;
}
}
if(i==readerNum){ cout<<"没有此号码,请重新选择!\n"; return;}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -