该系统提供对读者借书,还书和个人信息管理,以及自动检测是否重复借书,是否超额借书。
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
class Retrieval{ //资料类
protected:
char name[100];
long code;
public:
Retrieval();
Retrieval(char* n,long c);
void show();
};
Retrieval::Retrieval(){
strcpy(name,"");
code=0;
}
Retrieval::Retrieval(char* n,long c){
strcpy(name,n);
code=c;
}
void Retrieval::show(){
cout<<"资料"<<name<<endl<<code<<endl;
}
class book:public Retrieval
{
protected:
char author[30];
public:
book();
book(char *c,long C,char *a);
long Scode();
void show();
};
book::book(){
strcpy(author,"");
}
book::book(char *n,long c,char *a):Retrieval(n,c)
{
strcpy(author,a);
}
long book::Scode() {
return code;
}
void book::show(){
cout<<"图书:"<<"《"<<name<<"》"<<" 编号:"<<code<<" 作者:"<<author<<endl;
}
class magazine:public Retrieval
{
protected:
int number;
public:
magazine();
magazine(char* N,long c,int n);
long Scode();
void show();
};
magazine::magazine() {
strcpy(name,"");
}
magazine::magazine(char* N,long c,int n):Retrieval(N,c) {
number=n;
}
long magazine::Scode(){
return code;
}
void magazine::show(){
cout<<"杂志"<<"《"<<name<<"》"<<" 编号:"<<code<<" 刊号:"<<number<<endl;
}
//-------------------------读者类--------------------
class reader{
private:
char Name[20];
long Code;
book *books;
int Nbook;
magazine *magazines;
int Nmagazine;
public:
reader();
reader(char*n,long c);
~reader()
{
delete books;
delete magazines;
}
void show();
int add_book(book it);
void del_book(book it);
void show_book();
int add_magazine(magazine it);
void del_magazine(magazine it);
void show_magazine();
void show_reader();
};
reader::reader(){
strcpy(Name,"");
Code=0;
books=new book[5];
Nbook=0;
magazines=new magazine[10];
Nmagazine=0;
}
reader::reader(char*n,long c){
strcpy(Name,n);
Code=c;
books=new book[5];
Nbook=0;
magazines=new magazine[10];
Nmagazine=0;
}
void reader::show_reader(){
cout<<"个人信息:"<<endl<<"姓名:"<<Name<<endl<<"证件号:"<<Code<<endl;
}
void reader::show_book(){
cout<<"共借"<<Nbook<<"本书"<<endl;
cout<<"所借书有:"<<endl;
for(int i=0;i<Nbook;i++){
books[i].show();
}
}
void reader::show_magazine(){
cout<<"共借"<<Nmagazine<<"本杂志"<<endl;
cout<<"所借杂志有:"<<endl;
for(int i=0;i<Nmagazine;i++){
magazines[i].show();
}
}
int reader::add_book(book it){
for(int i=0;i<Nbook;i++) {
if (it.Scode() == books[i].Scode()) {
it.show();
cout << "此书已借过" << endl;
return 0;
}
}
if (Nbook < 5) {
books[Nbook] = it;
Nbook += 1;
} else {
cout << "图书已借满" << endl;
}
return 0;
}
void reader::del_book(book it) {
int i,j;
for(i=0;i<Nbook;i++)
if (it.Scode() == books[i].Scode()) break;
for(j=i;j<Nbook;j++)
books[j]=books[j+1];
Nbook--;
it.show();
cout << "还书成功" << endl;
}
int reader::add_magazine(magazine it){
for(int i=0;i<Nmagazine;i++)
if (it.Scode() == magazines[i].Scode()) {
it.show();
cout << "此杂志已借过" << endl;
return 0;
}
if(Nmagazine<10){
magazines[Nmagazine]=it;
Nmagazine+=1;
}
else{
cout<<"杂志已借满"<<endl;}
return 0;
}
void reader::del_magazine(magazine it) {
int i,j;
for(i=0;i<Nmagazine;i++)
if (it.Scode() == magazines[i].Scode()) break;
for(j=i;j<Nmagazine;j++)
magazines[j]=magazines[j+1];
Nmagazine--;
it.show();
cout << "还杂志成功" << endl;
}
int main(){
system("chcp 65001");
reader A("颤三",610001),B("没头脑",610823);
book b1("近代史",10001,"孙天蔗"),b2("亲热天堂",10002,"自来也"),b3("嘟嘟可故事集",10003,"可莉")
,b4("斗罗大陆",10004,"唐家三少"),b5("霸道总裁爱上我",10005,"轻颤");
magazine m1("军事重器",20001,12),m2("漫画派对",20002,23),m3("天下",20003,56),
m4("吃个桃桃",20004,6),m5("泰库拉",20005,9),m6("雪",20006,36),m7("科技",20007,8),
m8("昆虫",20008,53),m9("自然",20009,56),m10("唐",20010,81);
A.add_book(b1);
A.add_book(b2);
A.add_book(b3);
A.add_book(b4);
A.add_book(b4);
A.add_book(b5);
A.del_book(b2);
B.add_magazine(m1);
B.add_magazine(m1);
B.add_magazine(m2);
B.add_magazine(m3);
B.add_magazine(m7);
B.del_magazine(m3);
A.show_reader();
A.show_book();
A.show_magazine();
B.show_reader();
B.show_magazine();
return 0;
}