媒体库管理系统设计(C++)图书馆资料管理

媒体库管理系统设计(C++)含模板

一、实验目的
图书馆中的资料很多,如果能分类对其资料流通进行管理,将会带来很多方便,因此需要有一个媒体库管理系统。
图书馆共有三大类物品资料:图书、视频光盘、图画。
这三类物品共同具有的属性有:编号、标题、作者、评级(未评级,一般,成人,儿童)等。其中图书类增加出版社、ISBN号、页数等信息;视频光盘类增加出品者的名字、出品年份和视频时长等信息;图画类增加出品国籍、作品的长和宽(以厘米计,整数)等信息。
二、实验内容
(1)添加物品:主要完成图书馆三类物品信息的添加,要求编号唯一。当添加了重复的编号时,则提示数据添加重复并取消添加;当物品库已满,则提示不能再添加新的数据。
(2)查询物品
可按照三种方式来查询物品,分别为:
按标题查询:输入标题,输出所查询的信息,若不存在该记录,则提示“该标题不存在!”;
按编号查询:输入编号,输出所查询的信息,若不存在该记录,则提示“该编号不存在!”;
按类别查询:输入类别,输出所查询的信息,若不存在记录,则提示“该类别没有物品!”;
(3)显示物品库:输出当前物品库中所有物品信息,每条记录占据一行。
(4)编辑物品:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
(5)删除物品:主要完成图书馆物品信息的删除。如果当前物品库为空,则提示“物品库为空!”,并返回操作;否则,输入要删除的编号,根据编号删除该物品的记录,如果该编号不在物品库中,则提示“该编号不存在”。
(6)统计信息
输出当前物品库中总物品数,以及按物品类别,统计出当前物品中各类别的物品数并显示。
(7)物品存盘:将当前程序中的物品信息存入文件中。
(8)读出物品:从文件中将物品信息读入程序。

为实现物品存盘读出物品功能需要在文件夹中建立相应文档,在文档中输入初始物品信息,格式由代码设定决定,这样才能从文档中读取数据。

以下分别为视频,图画,图书文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
图画未设置内容,不做展示

程序效果展示
按提示输入1,进行添加物品操作,选择添加到哪类物品,输入编号,若编号重复则重新输入,根据提示输入对应内容,添加成功。
在这里插入图片描述

根据提示输入2进行查询操作,选择编号查询方式,若无该编号则重新输入,若有该编号则输出对应信息。

在这里插入图片描述

根据提示输入3进行输出所有信息操作,输出所有信息。
在这里插入图片描述

按照提示输入4进行编辑物品操作,选择编辑全部,先输入编号,若不重复则按要求输入信息,编辑成功返回菜单界面。
在这里插入图片描述

按提示输入5进行输出物品操作,输入要删除的物品编号,若有该编号物品,删除成功,返回菜单界面。
在这里插入图片描述

按提示输入6,进行统计物品操作,显示各个类别有多少物品。

在这里插入图片描述

代码

#include <iostream>
#include <cstring>
#include <fstream>
#include <sstream>
#include <cstdlib>
using namespace std;
#define Max 120
class Thing//基类,物品
{
protected:
    int num;//编号
    string title;//标题
    string author;//作者
    string grade;//评级
public:
    Thing()
    {
    }
    Thing(string N,string T,string A,string G)
    {
        int i;
        istringstream is(N);
        is>>num;
        title=T;
        author=A;
        grade=G;
    }
    int get_num()
    {
        return num;
    }
    string get_title()
    {
        return title;
    }
};
class Tushu:public Thing//图书类
{
private:
    string press;//出版社
    string ISBN;//ISBN号
    int ynum;//页数
public:
    Tushu()
    {
    }
    Tushu(string N,string T,string A,string G,string p,string i,string y):Thing(N,T,A,G)
    {
        press=p;
        ISBN=i;
        istringstream is(y);
        is >> ynum;
    }
    void show_wenjian(fstream &a)
    {
        a<<num<<" "<<title<<" "<<author<<" "<<grade<<" "<<press<<" "<<ISBN<<" "<<ynum<<endl;
    }
    void show_al()
    {
        cout<<num<<" "<<title<<" "<<author<<" "<<grade<<" "<<press<<" "<<ISBN<<" "<<ynum<<endl;
    }
    void BIanji(int n,string x)
    {
        int m,y;
        string q,p,e,f,g;
        if(n==1)
        {
            istringstream is(x);
            is >> m;
            num=m;
        }else if(n==2)
        {
            title=x;
        }else if(n==3)
        {
            author=x;
        }else if(n==4)
        {
            grade=x;
        }else if(n==5)
        {
            press=x;
        }else if(n==6)
        {
            ISBN=x;
        }else if(n==7)
        {
            istringstream is(x);
            is >> ynum;
        }else
        {
            cin>>q>>e>>f>>g>>p>>m;
            istringstream is(x);
            is >> y;
            num=y;
            title=q;
            author=e;
            grade=f;
            press=g;
            ISBN=p;
            ynum=m;
        }
    }
};
class Shipin:public Thing//视频类
{
private:
    string name;//出品者名字
    string year;//出品年份
    int hour;//时长
public:
    Shipin()
    {
    }
    Shipin(string N,string T,string A,string G,string n,string y,string h):Thing(N,T,A,G)
    {
        name=n;
        year=y;
        istringstream is(h);
        is >> hour;
    }
    void show_wenjian(fstream &a)
    {
        a<<num<<" "<<title<<" "<<author<<" "<<grade<<" "<<name<<" "<<year<<" "<<hour<<endl;
    }
    void show_al()
    {
        cout<<num<<" "<<title<<" "<<author<<" "<<grade<<" "<<name<<" "<<year<<" "<<hour<<endl;
    }
    void BIanji(int n,string x)
    {
        int o,m;
        string p,q,e,f,g;
        if(n==1)
        {
            istringstream is(x);
            is >> o;
            num=o;
        }else if(n==2)
        {
            title=x;
        }else if(n==3)
        {
            author=x;
        }else if(n==4)
        {
            grade=x;
        }else if(n==5)
        {
            name=x;
        }else if(n==6)
        {
            year=x;
        }else if(n==7)
        {
            istringstream is(x);
            is >> hour;
        }else
        {
            cin>>q>>e>>f>>g>>p>>m;
            istringstream is(x);
            is >> o;
            num=o;
            title=q;
            author=e;
            grade=f;
            name=g;
            year=p;
            hour=m;
        }
    }
};
class Tuhua:public Thing//图画类
{
private:
    string nationality;//出品国籍
    int length;//作品长
    int wide;//作品宽
public:
    Tuhua()
    {
    }
    Tuhua(string N,string T,string A,string G,string n,string l,string w):Thing(N,T,A,G)
    {
        nationality=n;
        istringstream is(l);
        is >> length;
        istringstream iis(w);
        iis >> wide;
    }
    void show_wenjian(fstream &a)
    {
        a<<num<<" "<<title<<" "<<author<<" "<<grade<<" "<<nationality<<" "<<length<<" "<<wide<<endl;
    }
    void show_al()
    {
        cout<<num<<" "<<title<<" "<<author<<" "<<grade<<" "<<nationality<<" "<<length<<" "<<wide<<endl;
    }
    void BIanji(int b)
    {
        string m;
        int n;
        if(b==2)
        {
            cout<<"输入要编辑的标题: ";
            cin>>m;
            title=m;
        }else if(b==3)
        {
            cout<<"输入要编辑的作者: ";
            cin>>m;
            author=m;
        }else if(b==4)
        {
            cout<<"输入要编辑的评级: ";
            cin>>m;
            grade=m;
        }else if(b==5)
        {
            cout<<"输入要编辑的国籍: ";
            cin>>m;
            nationality=m;
        }else if(b==6)
        {
            cout<<"输入要编辑的作品长度: ";
            cin>>n;
            length=n;
        }else if(b==7)
        {
            cout<<"输入要编辑的作品宽度: ";
            cin>>n;
            wide=n;
        }else{
            num=b;
        }
    }
    void BIanji(int n,string x)
    {
        int p,m,y;
        string q,e,f,g;
        if(n==1)
        {
            istringstream is(x);
            is >> p;
            num=p;
        }else if(n==2)
        {
            title=x;
        }else if(n==3)
        {
            author=x;
        }else if(n==4)
        {
            grade=x;
        }else if(n==5)
        {
            nationality=x;
        }else if(n==6)
        {
            istringstream is(x);
            is >> length;
        }else if(n==7)
        {
            istringstream is(x);
            is >> wide;
        }else
        {
            cin>>q>>e>>f>>g>>p>>m;
            istringstream is(x);
            is >> y;
            num=y;
            title=q;
            author=e;
            grade=f;
            nationality=g;
            length=p;
            wide=m;
        }
    }
};

template<class T>
class FileOperation
{
public:
    T a[Max];
    int n;
    fstream myfile;
    char filename[40];
public:
    FileOperation(char *fname)
    {
        n=0;
        strcpy(filename,fname);
    }
    void read()
    {
        myfile.open(filename,ios::in);
        string temp2,temp3,temp4,temp5,temp6,temp7,temp8;
        if(!myfile.is_open())
            cout<<"Open error!"<<endl;
        while(!myfile.eof())
        {
            myfile>>temp2>>temp3>>temp4>>temp5>>temp6>>temp7>>temp8;
            if(!temp2.empty()&&!temp3.empty()&&!temp4.empty()&&!temp5.empty()&&!temp6.empty()&&!temp7.empty()&&!temp8.empty())
            {
                a[n]=T(temp2,temp3,temp4,temp5,temp6,temp7,temp8);
                n++;
            }

            myfile.get(); // 读取最后的回车符
            if(myfile.peek() == '\n') break;
        }
        myfile.close();
    }
    void wenjiangx()
    {
        myfile.open(filename,ios::out);
        for(int i=0;i<n;i++)
        {
            a[i].show_wenjian(myfile);

        }
        myfile.close();
    }
    void Tianjia(string N,string t,string A,string G,string Nu,string l,string w)
    {
        a[n++]=T(N,t,A,G,Nu,l,w);
        wenjiangx();
    }
    int Chachong(int x)
    {
        for(int i=0;i<n;i++)
        {
            if(a[i].get_num()==x) return 0;//重为0
        }
        return 1;
    }
    int Chaxun(int x,string y)
    {
        int i,g=0,o;
        if(x==1)
        {
            for(i=0;i<n;i++)
            {
                if(a[i].get_title()==y)
                {
                    Show(i);
                    g=1;
                }

            }
        }else
        {
            for(i=0;i<n;i++)
            {
                istringstream is(y);
                is>>o;
                if(a[i].get_num()==o)
                {
                    Show(i);
                    g=1;
                }
            }
        }
        return g;
    }
    int Cha(int x,string y)
    {
        int i,o;
        if(x==1)
        {
            for(i=0;i<n;i++)
            {
                if(a[i].get_title()==y)
                    return i;
            }
            return -1;
        }else
        {
            for(i=0;i<n;i++)
            {
                istringstream is(y);
                is>>o;
                if(a[i].get_num()==o)
                {
                    return i;
                }
            }
            return -1;
        }

    }
    void Show(int i)
    {
        a[i].show_al();
    }
    void Show_all()
    {
        int o=0;
        for(int i=0;i<n;i++)
        {
            Show(i);
            o=1;
        }
        if(o==0)
            cout<<"该类中无物品!"<<endl;
    }
    void deletel(int x)
    {
        for(int i=x;i<n;i++)
        {
            a[i]=a[i+1];
        }
        n--;
        wenjiangx();
    }
    void Bianji(int i,int b,string x)
    {
        a[i].BIanji(b,x);

        wenjiangx();
    }
};
class manage
{
private:
    FileOperation<Tushu> s1;
    FileOperation<Shipin> s2;
    FileOperation<Tuhua> s3;
public:
    manage(char Fname1[],char Fname2[],char Fname3[]):s1(Fname1),s2(Fname2),s3(Fname3)
    {
        s1.read();
        s2.read();
        s3.read();
    }
    void tianjia_menu()
    {
        while(1)
        {
            int x;
            cout<<"                选择添加到哪类物品           "<<endl<<endl;
            cout<<"                    1、图书类                 "<<endl;
            cout<<"                    2、视频类                 "<<endl;
            cout<<"                    3、图画类                 "<<endl;
            cout<<"                    4、返回菜单界面           "<<endl;
            cout<<"                    5、退出系统               "<<endl;
            cin>>x;
            switch(x)
            {
            case 1:
                tianjia(1);
                break;
            case 2:
                tianjia(2);
                break;
            case 3:
                tianjia(3);
                break;
            case 4:
                menu();
                break;
            case 5:
                exit(0);
                break;
            default:
                cout<<"请输入正确的数字:"<<endl;
            }
        }
    }
    void tianjia(int i)
    {
        string a,b,c,d,e,f,g;
        while(1)
        {
            cout<<"输入编号:";
            cin>>a;
            if(chachong(a))
            {
                if(i==1)
                {
                    cout<<"请输入标题、作者、评级、出版社、ISBN号、页数(用空格隔开):"<<endl;
                    cin>>b>>c>>d>>e>>f>>g;
                    s1.Tianjia(a,b,c,d,e,f,g);
                }else if(i==2)
                {
                    cout<<"请输入标题、作者、评级、出品者名字、出品年份、视频时长(用空格隔开):"<<endl;
                    cin>>b>>c>>d>>e>>f>>g;
                    s2.Tianjia(a,b,c,d,e,f,g);
                }else
                {
                    cout<<"请输入标题、作者、评级、出品国籍、作品长度、作品宽度(用空格隔开):"<<endl;
                    cin>>b>>c>>d>>e>>f>>g;
                    s3.Tianjia(a,b,c,d,e,f,g);
                }
                cout<<endl<<"添加成功,即将回到菜单界面..."<<endl<<endl;
                menu();
            }else
                cout<<"该编号重复,请重新输入.."<<endl;
        }

    }
    int chachong(string a)
    {
        int b;
        istringstream is(a);
        is >> b;
        if(s1.Chachong(b)&&s2.Chachong(b)&&s3.Chachong(b))//如果无重返回1
            return 1;
        return 0;
    }
    void chaxun_menu()
    {
        while(1)
        {
            int x;
            cout<<"                     选择查询方式                  "<<endl<<endl;
            cout<<"                    1、按标题查询                  "<<endl;
            cout<<"                    2、按类名查询                  "<<endl;
            cout<<"                    3、按编号查询                  "<<endl;
            cout<<"                    4、返回菜单界面                "<<endl;
            cout<<"                    5、退出系统                    "<<endl;
            cin>>x;
            switch(x)
            {
            case 1:
                chaxun(1);
                break;
            case 2:
                chaxun(2);
                break;
            case 3:
                chaxun(3);
                break;
            case 4:
                menu();
                break;
            case 5:
                exit(0);
                break;
            default:
                cout<<"请输入正确的数字:"<<endl;
            }
        }
    }
    void chaxun(int x)
    {
        int m;
        string o;
        if(x==1)
        {
            cout<<"输入要查询的标题:  ";
            cin>>o;
            if(!s1.Chaxun(x,o)&&!s2.Chaxun(x,o)&&!s3.Chaxun(x,o))
                cout<<"不存在该标题!"<<endl;
            cout<<endl;
        }else if(x==2)
        {
            cout<<"输入要查询的类名(有图书类,视频类,图画类):  ";
            cin>>o;
            if(o=="图书类")
            {
                s1.Show_all();
                cout<<endl;
            }
            else if(o=="视频类")
            {
                s2.Show_all();
                cout<<endl;
            }
            else if(o=="图画类")
            {
                s3.Show_all();
                cout<<endl;
            }else
            {
                cout<<"输入有误..."<<endl;
                cout<<"即将返回菜单界面..."<<endl;
                menu();
            }
        }else
        {
            cout<<"输入要查询的编号:  ";
            cin>>m;
            ostringstream os;
            os<<m;
            istringstream is(os.str());
            is>>o;
            if(!s1.Chaxun(x,o)&&!s2.Chaxun(x,o)&&!s3.Chaxun(x,o))
            {
                cout<<"不存在该编号!"<<endl;
            }

            cout<<endl;
        }

    }
    void show_all()
    {
        cout<<"图书类:"<<endl;
        s1.Show_all();
        cout<<endl<<"视频类"<<endl;
        s2.Show_all();
        cout<<endl<<"图画类"<<endl;
        s3.Show_all();
        cout<<endl;
    }
    void bianji(int n,int x)
    {
        int i,o,g=1;
        string p;
        if(n==1)
        {
            cout<<"                输入要编辑内容的代码                "<<endl<<endl;
            cout<<"                      1、编号                       "<<endl;
            cout<<"                      2、标题                       "<<endl;
            cout<<"                      3、作者                       "<<endl;
            cout<<"                      4、评级                       "<<endl;
            cout<<"                      5、出版社                     "<<endl;
            cout<<"                      6、ISBN号                     "<<endl;
            cout<<"                      7、页数                       "<<endl;
            cout<<"                      8、全部                       "<<endl;
            cout<<"                      9、返回菜单界面                       "<<endl;

            cin>>i;
            switch(i)
            {
            case 1:
                while(1)
                {
                    cout<<"输入要修改的编号:"<<endl;
                    cin>>o;
                    ostringstream s;
                    s<<o;
                    istringstream is(s.str());
                    is>>p;
                    if(chachong(p))
                    {
                        s1.Bianji(x,1,p);
                        break;
                    }else
                        cout<<"编号重复!"<<endl;
                }
                break;
            case 2:
                cout<<"输入要修改的标题:"<<endl;
                cin>>p;
                s1.Bianji(x,2,p);
                break;
            case 3:
                cout<<"输入要修改的作者:"<<endl;
                cin>>p;
                s1.Bianji(x,3,p);
                break;
            case 4:
                cout<<"输入要修改的评级:"<<endl;
                cin>>p;
                s1.Bianji(x,4,p);
                break;
            case 5:
                cout<<"输入要修改的出版社:"<<endl;
                cin>>p;
                s1.Bianji(x,5,p);
                break;
            case 6:
                cout<<"输入要修改的ISBN号:"<<endl;
                cin>>p;
                s1.Bianji(x,6,p);
                break;
            case 7:
                cout<<"输入要修改的页数:"<<endl;
                cin>>p;
                s1.Bianji(x,7,p);
                break;
            case 8:
                while(g)
                {
                    cout<<"先输入要修改的编号:"<<endl;
                    cin>>o;
                    ostringstream s;
                    s<<o;
                    istringstream is(s.str());
                    is>>p;
                    if(chachong(p))
                    {
                        cout<<"输入标题、作者、评级、出版社、ISBN号、页数:"<<endl;
                        s1.Bianji(x,8,p);
                        g=0;
                    }else
                    {
                        cout<<"编号重复!"<<endl;
                    }

                }
                break;
            case 9:
                menu();
                break;
            default:
                cout<<"输入错误"<<endl;
            }
            cout<<"编辑成功!"<<endl;
            cout<<"即将返回菜单界面..."<<endl;
            menu();
        }else if(n==2)
        {
            cout<<"                输入要编辑内容的代码                "<<endl<<endl;
            cout<<"                      1、编号                       "<<endl;
            cout<<"                      2、标题                       "<<endl;
            cout<<"                      3、作者                       "<<endl;
            cout<<"                      4、评级                       "<<endl;
            cout<<"                      5、出品者名字                 "<<endl;
            cout<<"                      6、出品年                     "<<endl;
            cout<<"                      7、视频时长                   "<<endl;
            cout<<"                      8、全部                       "<<endl;
            cout<<"                      9、返回菜单界面   "<<endl;
            cin>>i;
            switch(i)
            {
            case 1:
                while(1)
                {
                    cout<<"输入要修改的编号:"<<endl;
                    cin>>o;
                    ostringstream s;
                    s<<o;
                    istringstream is(s.str());
                    is>>p;
                    if(chachong(p))
                    {
                        s2.Bianji(x,1,p);
                        break;
                    }else
                        cout<<"编号重复!"<<endl;
                }
                break;
            case 2:
                cout<<"输入要修改的标题:"<<endl;
                cin>>p;
                s2.Bianji(x,2,p);
                break;
            case 3:
                cout<<"输入要修改的作者:"<<endl;
                cin>>p;
                s2.Bianji(x,3,p);
                break;
            case 4:
                cout<<"输入要修改的评级:"<<endl;
                cin>>p;
                s2.Bianji(x,4,p);
                break;
            case 5:
                cout<<"输入要修改的出品者名字:"<<endl;
                cin>>p;
                s2.Bianji(x,5,p);
                break;
            case 6:
                cout<<"输入要修改的出品年份:"<<endl;
                cin>>p;
                s2.Bianji(x,6,p);
                break;
            case 7:
                cout<<"输入要修改的视频时长:"<<endl;
                cin>>p;
                s2.Bianji(x,7,p);
                break;
            case 8:
                while(g)
                {
                    cout<<"先输入要修改的编号:"<<endl;
                    cin>>o;
                    ostringstream s;
                    s<<o;
                    istringstream is(s.str());
                    is>>p;
                    if(chachong(p))
                    {
                        cout<<"输入标题、作者、评级、出版社、ISBN号、页数:"<<endl;
                        s1.Bianji(x,8,p);
                        g=0;
                    }else
                    {
                        cout<<"编号重复!"<<endl;
                    }
                }
                break;
            case 9:
                menu();
                break;
            default:
                cout<<"输入错误"<<endl;
            }
            cout<<"编辑成功!"<<endl;
            cout<<"即将返回菜单界面..."<<endl;
            menu();
        }else
        {
            cout<<"                输入要编辑内容的代码                "<<endl<<endl;
            cout<<"                      1、编号                       "<<endl;
            cout<<"                      2、标题                       "<<endl;
            cout<<"                      3、作者                       "<<endl;
            cout<<"                      4、评级                       "<<endl;
            cout<<"                      5、出品国籍                   "<<endl;
            cout<<"                      6、作品长度                   "<<endl;
            cout<<"                      7、作品宽度                   "<<endl;
            cout<<"                      8、全部                       "<<endl;
            cout<<"                      9、返回菜单界面           "<<endl;
            cin>>i;
            switch(i)
            {
            case 1:
                while(1)
                {
                    cout<<"输入要修改的编号:"<<endl;
                    cin>>o;
                    ostringstream s;
                    s<<o;
                    istringstream is(s.str());
                    is>>p;
                    if(chachong(p))
                    {
                        s3.Bianji(x,1,p);
                        break;
                    }else
                        cout<<"编号重复!"<<endl;
                }
                break;
            case 2:
                cout<<"输入要修改的标题:"<<endl;
                cin>>p;
                s3.Bianji(x,2,p);
                break;
            case 3:
                cout<<"输入要修改的作者:"<<endl;
                cin>>p;
                s3.Bianji(x,3,p);
                break;
            case 4:
                cout<<"输入要修改的评级:"<<endl;
                cin>>p;
                s3.Bianji(x,4,p);
                break;
            case 5:
                cout<<"输入要修改的出品国籍:"<<endl;
                cin>>p;
                s3.Bianji(x,5,p);
                break;
            case 6:
                cout<<"输入要修改的作品长度:"<<endl;
                cin>>p;
                s3.Bianji(x,6,p);
                break;
            case 7:
                cout<<"输入要修改的作品宽度:"<<endl;
                cin>>p;
                s3.Bianji(x,7,p);
                break;
            case 8:
                while(g)
                {
                    cout<<"先输入要修改的编号:"<<endl;
                    cin>>o;
                    ostringstream s;
                    s<<o;
                    istringstream is(s.str());
                    is>>p;
                    if(chachong(p))
                    {
                        cout<<"输入标题、作者、评级、出版社、ISBN号、页数:"<<endl;
                        s1.Bianji(x,8,p);
                        g=0;
                    }else
                    {
                        cout<<"编号重复!"<<endl;
                    }
                }
                break;
            case 9:
                menu();
                break;
            default:
                cout<<"输入错误"<<endl;
            }
            cout<<"编辑成功!"<<endl;
            cout<<"即将返回菜单界面..."<<endl;
            menu();
        }

    }
    void bianji_menu()
    {
        int i,x;
        string h;
        while(1)
        {
            cout<<"输入待编辑物品的编号: ";
            cin>>i;
            ostringstream s;
            s<<i;
            istringstream is(s.str());
            is>>h;
            if(s1.Cha(2,h)==-1&&s2.Cha(2,h)==-1&&s3.Cha(2,h)==-1)
                cout<<"不存在该编号"<<endl<<endl;
            else if(s1.Cha(2,h)!=-1)
            {
                x=s1.Cha(2,h);
                bianji(1,x);
            }
            else if(s2.Cha(2,h)!=-1)
            {
                x=s2.Cha(2,h);
                bianji(2,x);
            }
            else
            {
                x=s3.Cha(2,h);
                bianji(3,x);
            }

        }
    }
    void Delete()
    {
        int i,x,c=0;
        string h;
        if(s1.n==0&&s2.n==0&&s3.n==0)
            cout<<"物品库为空!"<<endl;
        else
        {
            while(1)
            {
                cout<<"输入删除物品的编号: ";
                cin>>i;
                ostringstream s;
                s<<i;
                istringstream is(s.str());
                is>>h;
                if(s1.Cha(2,h)==-1&&s2.Cha(2,h)==-1&&s3.Cha(2,h)==-1)
                    cout<<"不存在该编号,请重新输入..."<<endl<<endl;
                else if(s1.Cha(2,h)!=-1)
                {
                    x=s1.Cha(2,h);
                    s1.deletel(x);
                    break;
                }
                else if(s2.Cha(2,h)!=-1)
                {
                    x=s2.Cha(2,h);
                    s2.deletel(x);
                    break;
                }
                else
                {
                    x=s3.Cha(2,h);
                    s3.deletel(x);
                    break;
                }
            }
            cout<<"删除成功!"<<endl<<endl;

        }
        cout<<"即将返回菜单界面..."<<endl<<endl;
        menu();
    }
    void tongji()
    {
        int x;
        x=s1.n+s2.n+s3.n;
        cout<<"当前物品库总物品数: "<<x<<endl;
        cout<<"图书类物品数: "<<s1.n<<"  视频类物品数: "<<s2.n<<"  图画类物品数: "<<s3.n<<endl;
    }
    void menu()
    {
        while(1)
        {
            int x;
            cout<<"----------------选择要进行的操作---------------------"<<endl<<endl;
            cout<<"                  1、添加物品                        "<<endl;
            cout<<"                  2、查询物品                        "<<endl;
            cout<<"                  3、输出物品物品库所有信息          "<<endl;
            cout<<"                  4、编辑物品                        "<<endl;
            cout<<"                  5、删除物品                        "<<endl;
            cout<<"                  6、统计物品                        "<<endl;
            cout<<"                  7、退出系统                        "<<endl;
            cin>>x;
            switch(x)
            {
            case 1:
                tianjia_menu();
                break;
            case 2:
                chaxun_menu();
                break;
            case 3:
                show_all();
                break;
            case 4:
                bianji_menu();
                break;
            case 5:
                Delete();
                break;
            case 6:
                tongji();
                break;
            case 7:
                exit(0);
                break;
            default:
                cout<<"请输入正确的数字:"<<endl;
            }
        }
    }
};
int main()
{

    char fn1[40]="C:\\Users\\lyl\\Desktop\\大作业\\Tushu.txt";
    char fn2[40]="C:\\Users\\lyl\\Desktop\\大作业\\Shipin.txt";
    char fn3[40]="C:\\Users\\lyl\\Desktop\\大作业\\Tuhua.txt";

    manage a(fn1,fn2,fn3);
    a.menu();
    return 0;
}

  • 14
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值