C++图书馆信息系统

该系统提供对读者借书,还书和个人信息管理,以及自动检测是否重复借书,是否超额借书。 

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值