黑龙江大学 图书管理系统实验

今天整理大一实验笔记的时候突然翻出来了我保存在txt文件里的大一的图书管理系统的代码,

稍微改了点东西想了想还是发上来留作几年,因为之前电脑重装了系统还以为找不到了。

想想我大一是真的离谱,虽然代码函数都是拼音,还都是控制台运行的,但是三天爆肝2500行代码这种事我这大二已经做不到了,上学期那个一千五百行的ege写了我半个月,现在更是两天写两百行得要了我老命,越来越垃圾了属于是。

不说了,直接把代码端上来了。

#include <iostream>
#include<bits/stdc++.h>

using namespace std;

typedef struct yonhu{
        int name;
        char mima[20];
        int shenfen;
        struct yonhu*next;
}Yonhu;

typedef struct duzhe{
        int zhanhao;
        char name[10];
        char danwei[20];
        long long dianhua;
        int kejie;
        int yijie;
        struct duzhe*next;
}Duzhe;

typedef struct tushu{
        int jihao;
        int shuhao;
        char name[20];
        char zuozhe[20];
        char chubanshe[20];
        int chanshuliang;
        int jiechuliang;
        int zhiyi;
        int zhier;
        int zhisan;
        struct tushu*next;
}Tushu;

typedef struct jieshu
{
    int duzhehao;
    int shuhao;
    string jiechuriqi;
    string guihuanriqi;
    struct jieshu*next;
}Jieshu;

void tushuliutonguanlicaidan();
void huanshuchuli(int zhanhao,int shenfen);
void jieshuchuli(int zhanhao,int shenfen);
void tushuguanliliutonxition(int zhanhao,int shenfen);

void tushuguanlizhucaidan();
void huizontonji(int zhanhao,int shenfen);
void anchubanshechaxun(int zhanhao,int shenfen);
void anzuozhechaxhun(int zhanhao,int shenfen);
void anshumingchaxhun(int zhanhao,int shenfen);
void anshuhaochaxhun(int zhanhao,int shenfen);
void tushuxinxichaxhun(int zhanhao,int shenfen);
void tushuxinxixiugai(int zhanhao,int shenfen);
void tushuxinxishuru(int zhanhao,int shenfen);
void tushuguanlixition(int zhanhao,int shenfen);

void duzheguanlizhucaidan();
void duzhexinxixianshi(int zhanhao,int shenfen);
void duzhexinxichaxun(int zhanhao,int shenfen);
void duzhexinxishanchu(int zhanhao,int shenfen);
void duzhexinxixiugai(int zhanhao,int shenfen);
void duzhexinxishuru(int zhanhao,int shenfen);
void duzheguanlixition(int zhanhao,int shenfen);

void yonhuguanlicaidan();
void yonhumimaxiugai(int zhanhao,int shenfen);
void yonhuxinxixianshi(int zhanhao,int shenfen);
void yonhuxinxisanchu(int zhanhao,int shenfen);
void yonhuxinxixiugai(int zhanhao,int shenfen);
void yonhuxinxishuru(int zhanhao,int shenfen);
void yonhuguanlixition(int zhanhao,int shenfen);

void zhucaidan();
void zhucaidandexuanzhe(int zhanhao,int shenfen);

void denluxiton();
void zhanhu();
void chuanjian();
void shurumimajinxindenlu();


void tushuliutonguanlicaidan()
{
    cout<<"    "<<"********************"<<endl;
    cout<<endl;
    cout<<"          "<<"1.借书处理"<<endl;
    cout<<"          "<<"2.还书处理"<<endl;
    cout<<"          "<<"3.返回菜单"<<endl;
    cout<<endl;
    cout<<"    "<<"********************"<<endl;
}


void huanshuchuli(int zhanhao,int shenfen)
{
    system("cls");
    if(shenfen!=2)
    {
        cout<<"您没有此权限,是否返回菜单:"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否"<<endl;
        int f;
        cin>>f;
        if(f==1)
            tushuguanliliutonxition(zhanhao,shenfen);
    }
    else
    {
        ifstream swimming("读者.txt",ios::in);
        Duzhe*head;
        Duzhe*p;
        Duzhe*g;
        p=(struct duzhe*)malloc(sizeof(Duzhe));
        g=(struct duzhe*)malloc(sizeof(Duzhe));
        if(!swimming.fail())
        {
            int n=0;
            char buf[128];
            while(!swimming.eof())
            {
                n++;
                if(n==1)
                {
                    head=p;
                }
                else
                {
                    g->next=p;
                    g=p;
                    p=(struct duzhe*)malloc(sizeof(Duzhe));
                }
                swimming.getline(buf,128);
                string zhanchun=buf;
                stringstream ss(zhanchun);
                int zhanhao;
                string minzi;
                string xuexiao;
                long long haoma;
                int kejie;
                int yijie;
                ss>>zhanhao>>minzi>>xuexiao>>haoma>>kejie>>yijie;
                char name[10];
                int i;
                int len=minzi.length();
                for(i=0;i<len;i++)name[i]=minzi[i];
                name[i]='\0';
                char danwei[20];
                len=xuexiao.length();
                for(i=0;i<len;i++)danwei[i]=xuexiao[i];
                danwei[i]='\0';
                p->zhanhao=zhanhao;
                strcpy(p->name,name);
                strcpy(p->danwei,danwei);
                p->dianhua=haoma;
                p->kejie=kejie;
                p->yijie=yijie;
            }
        }
        g=NULL;
        free(g);
        free(p);
        swimming.close();
        cout<<"输入要还书的人的读者号:";
        int dhao;
        cin>>dhao;
        cout<<"输入要还的书号:";
        int shao;
        cin>>shao;
        Jieshu*head2;
        Jieshu*k;
        Jieshu*s;
        k=(struct jieshu*)malloc(sizeof(Jieshu));
        s=(struct jieshu*)malloc(sizeof(Jieshu));
        ifstream ming("借书管理.txt",ios::in);
        if(!ming.fail())
        {
            char buf[200];
            int m=0;
            while(!ming.eof())
            {
                m++;
                if(m==1)
                {
                    head2=k;
                }
                else
                {
                    s->next=k;
                    s=k;
                    k=(struct jieshu*)malloc(sizeof(Jieshu));
                }
                ming.getline(buf,200);
                string chun=buf;
                stringstream ss(chun);
                int duzhehao;
                int shuhao;
                string jiechuriqi;
                string guihuanriqi;
                ss>>duzhehao>>shuhao>>jiechuriqi>>guihuanriqi;
                k->duzhehao=duzhehao;
                k->shuhao=shuhao;
                k->jiechuriqi=jiechuriqi;
                k->guihuanriqi=guihuanriqi;
            }
        }
        s=NULL;
        free(s);
        free(k);
        ming.close();
        Jieshu*cha;
        cha=head2;
        int pan=0;
        while(cha!=NULL)
        {
            if(cha->duzhehao==dhao)
            {
                if(cha->shuhao==shao)
                {
                    cout<<"输入归还日期:";
                    char h[20];
                    scanf("%s",h);
                    cha->guihuanriqi=h;
                    pan=1;
                }
            }
            cha=cha->next;
        }
        if(pan==0)
            cout<<"未找到这个借书项目:"<<endl;
        ofstream seele("借书管理.txt",ios::out);
        if(!seele.fail())
        {
            while(head2!=NULL)
            {
                seele<<head2->duzhehao<<" "<<head2->shuhao<<" "<<head2->jiechuriqi<<" "<<head2->guihuanriqi<<endl;
                head2=head2->next;
            }
        }
        seele.close();
        Duzhe*zhao;
        zhao=head;
        while(zhao!=NULL)
        {
            if(zhao->zhanhao==dhao)
            {
                zhao->yijie--;
                break;
            }
            zhao=zhao->next;
        }
        ofstream swim("读者.txt",ios::out);
        if(!swim.fail())
        {
            while(head!=NULL)
            {
                swim<<head->zhanhao<<" "<<head->name<<" "<<head->danwei<<" "<<head->dianhua<<" "<<head->kejie<<" "<<head->yijie<<endl;
                head=head->next;
            }
        }
        swim.close();
        cout<<"是否继续还书:"<<endl;
    cout<<"1.是"<<endl;
    cout<<"2.否(返回菜单)"<<endl;
    int gl;
    cin>>gl;
    if(gl==1)
        huanshuchuli(zhanhao,shenfen);
    else
       tushuguanliliutonxition(zhanhao,shenfen);
    }
}

void jieshuchuli(int zhanhao,int shenfen)
{
    system("cls");
    if(shenfen!=2)
    {
        cout<<"您没有此权限,是否返回菜单:"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否"<<endl;
        int f;
        cin>>f;
        if(f==1)
            tushuguanliliutonxition(zhanhao,shenfen);
    }
    else
    {
        ifstream swimming("读者.txt",ios::in);
        Duzhe*head;
        Duzhe*p;
        Duzhe*g;
        p=(struct duzhe*)malloc(sizeof(Duzhe));
        g=(struct duzhe*)malloc(sizeof(Duzhe));
        if(!swimming.fail())
        {
            int n=0;
            char buf[128];
            while(!swimming.eof())
            {
                n++;
                if(n==1)
                {
                    head=p;
                }
                else
                {
                    g->next=p;
                    g=p;
                    p=(struct duzhe*)malloc(sizeof(Duzhe));
                }
                swimming.getline(buf,128);
                string zhanchun=buf;
                stringstream ss(zhanchun);
                int zhanhao;
                string minzi;
                string xuexiao;
                long long haoma;
                int kejie;
                int yijie;
                ss>>zhanhao>>minzi>>xuexiao>>haoma>>kejie>>yijie;
                char name[10];
                int i;
                int len=minzi.length();
                for(i=0;i<len;i++)name[i]=minzi[i];
                name[i]='\0';
                char danwei[20];
                len=xuexiao.length();
                for(i=0;i<len;i++)danwei[i]=xuexiao[i];
                danwei[i]='\0';
                p->zhanhao=zhanhao;
                strcpy(p->name,name);
                strcpy(p->danwei,danwei);
                p->dianhua=haoma;
                p->kejie=kejie;
                p->yijie=yijie;
            }
        }
        g=NULL;
        free(g);
        free(p);
        swimming.close();
    cout<<"输入要借书的人的读者号:";
    int hao;
    cin>>hao;
    Duzhe*q=head;
    int k=0;
    while(q!=NULL)
    {
        if(q->zhanhao==hao)
        {
            if(q->yijie<q->kejie)
            k=1;
        }
        q=q->next;
    }
    if(k!=1)
    {
        cout<<"不存在此人或者这个人不行,是否重新输入读者号:"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否(返回菜单)"<<endl;
        int a;
        cin>>a;
        if(a==1)
           jieshuchuli(zhanhao,shenfen);
        else if(a==2)
            tushuguanliliutonxition(zhanhao,shenfen);
    }
    cout<<"输入这个人要借出的书的书号:"<<endl;
    int shuhao;
    cin>>shuhao;
    map<int,int>panduan;
    ifstream ming("图书.txt",ios::in);
    if(!ming.fail())
    {
        char buf[128];
        while(!ming.eof())
        {
            ming.getline(buf,128);
            string chun=buf;
            stringstream ss(chun);
            int jihao;
            int haoma;
            ss>>jihao>>haoma;
            panduan[haoma]=haoma;
        }
    }
    ming.close();
    if(panduan[shuhao]==0)
    {
        cout<<"你这书找不到啊"<<endl;
        cout<<"你要不再来一次"<<endl;
        char a;
        cin>>a;
        jieshuchuli(zhanhao,shenfen);
    }
    q=head;
    while(q!=NULL)
    {
        if(q->zhanhao==hao)
        {
            q->yijie++;
        }
        q=q->next;
    }
    ofstream swim("读者.txt",ios::out);
    if(!swim.fail())
    {
        while(head!=NULL)
        {
            swim<<head->zhanhao<<" "<<head->name<<" "<<head->danwei<<" "<<head->dianhua<<" "<<head->kejie<<" "<<head->yijie<<endl;
            head=head->next;
        }
    }
    swim.close();
    ofstream seele("借书管理.txt",ios::app);
    if(!seele.fail())
    {
        cout<<"输入借书日期:";
        char riqi[30];
        scanf("%s",riqi);
        char huanqi[20]="未还书";
        seele<<hao<<" "<<shuhao<<" "<<riqi<<" "<<huanqi<<endl;
    }
    seele.close();
    cout<<"是否继续输入:"<<endl;
    cout<<"1.是"<<endl;
    cout<<"2.否(返回菜单)"<<endl;
    int gl;
    cin>>gl;
    if(gl==1)
        jieshuchuli(zhanhao,shenfen);
    else
       tushuguanliliutonxition(zhanhao,shenfen);
}
}

void tushuguanliliutonxition(int zhanhao,int shenfen)
{
    system("cls");
    tushuliutonguanlicaidan();
    int xuanzhe;
    cin>>xuanzhe;
    switch(xuanzhe)
    {
    case 1:
        jieshuchuli(zhanhao,shenfen);
        break;
    case 2:
        huanshuchuli(zhanhao,shenfen);
        break;
    case 3:
        zhucaidandexuanzhe(zhanhao,shenfen);
        break;
    }
}


void tushuguanlizhucaidan()
{
    cout<<"   "<<"*********************"<<endl;
    cout<<"        "<<"1.图书信息输入"<<endl;
    cout<<"        "<<"2.图书信息修改"<<endl;
    cout<<"        "<<"3.图书信息查询"<<endl;
    cout<<"        "<<"4.汇总统计"<<endl;
    cout<<"        "<<"5.返回主菜单"<<endl;
    cout<<"   "<<"*********************"<<endl;
}
void fun(int zhanhao,int shenfen){cout<<"不返回菜单你要干嘛:"<<endl;
cout<<"按任意键返回菜单"<<endl;
char a;
cin>>a;
tushuguanlixition(zhanhao,shenfen);
}
int tushushulian=0;
map<string,int>namehao;
map<string,int>zuohao;
map<string,int>shehao;

typedef struct chaxun{
        int jihao;
        int shuhao;
        string name;
        string zuozhe;
        string chubanshe;
        int chanshuliang;
        int jiechuliang;
        int zhiyi;
}Chaxun;

void huizontonji(int zhanhao,int shenfen)
{
    system("cls");
    ifstream swimming("图书.txt",ios::in);
    if(!swimming.fail())
    {
        char buf[128];
        while(!swimming.eof())
        {
            swimming.getline(buf,128);
            printf("%s\n",buf);
        }
    }
    swimming.close();
    cout<<"按任意键返回菜单:"<<endl;
    char a;
    cin>>a;
    tushuguanlixition(zhanhao,shenfen);
}

void chaxunfanfa()
{
    cout<<"     "<<"*********************"<<endl;
    cout<<endl;
    cout<<"        "<<"1.按书号查询"<<endl;
    cout<<"        "<<"2.按书名查询"<<endl;
    cout<<"        "<<"3.按作者查询"<<endl;
    cout<<"        "<<"4.按出版社查询"<<endl;
    cout<<"        "<<"5.返回菜单"<<endl;
    cout<<endl;
    cout<<"     "<<"*********************"<<endl;
}

void anchubanshechaxun(int zhanhao,int shenfen)
{
    system("cls");
    Tushu*head;
    Tushu*p;
    Tushu*h;
    p=(struct tushu*)malloc(sizeof(Tushu));
    h=(struct tushu*)malloc(sizeof(Tushu));
    int n=0;
    map<string,int>chandu;
    map<string,int>panduan;
    map<string,int>biaotou;
    ifstream swimming("图书.txt",ios::in);
    if(!swimming.fail())
    {
        char buf[128];
        while(!swimming.eof())
        {
            n++;
            if(n==1)
                {
                    head=p;
                }
                else
                {
                    h->next=p;
                    h=p;
                    p=(struct tushu*)malloc(sizeof(Tushu));
                }
                swimming.getline(buf,128);
                string zhanchun=buf;
                stringstream ss(zhanchun);
                int jihao;
                int shuhao;
                string shuming;
                string zuozhe;
                string chubanshe;
                int chanshuliang;
                int jiechuliang;
                int zhiyi;
                int zhier;
                int zhisan;
                ss>>jihao>>shuhao>>shuming>>zuozhe>>chubanshe>>chanshuliang>>jiechuliang>>zhiyi>>zhier>>zhisan;
                chandu[chubanshe]++;
                biaotou[chubanshe]=jihao;
                char name[20];
                char zuo[20];
                char chu[20];
                int i;
                int len=shuming.length();
                for(i=0;i<len;i++)name[i]=shuming[i];
                name[i]='\0';
                len=zuozhe.length();
                for(i=0;i<len;i++)zuo[i]=zuozhe[i];
                zuo[i]='\0';
                len=chubanshe.length();
                for(i=0;i<len;i++)chu[i]=chubanshe[i];
                chu[i]='\0';
                p->jihao=jihao;
                p->shuhao=shuhao;
                strcpy(p->name,name);
                strcpy(p->zuozhe,zuo);
                strcpy(p->chubanshe,chu);
                p->chanshuliang=chanshuliang;
                p->jiechuliang=jiechuliang;
                p->zhiyi=zhiyi;
                p->zhier=zhier;
                p->zhisan=zhisan;
            }
            h=NULL;
            free(p);
            free(h);
            swimming.close();
        }
        Chaxun chuchun[n+1];
        int k=0;
        while(head!=NULL)
        {
            k++;
            chuchun[k].jihao=head->jihao;
            chuchun[k].name=head->name;
            chuchun[k].zuozhe=head->zuozhe;
            chuchun[k].chubanshe=head->chubanshe;
            chuchun[k].chanshuliang=head->chanshuliang;
            chuchun[k].jiechuliang=head->jiechuliang;
            chuchun[k].zhiyi=head->zhisan;
            head=head->next;
        }
        cout<<"输出索引表:"<<endl;
        ofstream ming("作者查询.txt",ios::out);
        if(!ming.fail()){
        for(int i=1;i<=k;i++)
        {
            if(panduan[chuchun[i].chubanshe]==0)
            {
                cout<<chuchun[i].chubanshe<<" "<<biaotou[chuchun[i].chubanshe]<<" "<<chandu[chuchun[i].chubanshe]<<endl;
                ming<<chuchun[i].chubanshe<<" "<<biaotou[chuchun[i].chubanshe]<<" "<<chandu[chuchun[i].chubanshe]<<endl;
                panduan[chuchun[i].chubanshe]=1;
            }
        }
        }
        ming.close();
        char ch[20];
        cout<<"输入你要查询的书的作者:";
        scanf("%s",ch);
        string cha=ch;
        if(panduan[cha]!=1)
        {
            cout<<"未找到你要的书,你能不能按索引表来"<<endl;
        }
        else
        {
            int tou=biaotou[cha];
            for(int j=1;;j++)
            {
                cout<<chuchun[tou].name<<" "<<chuchun[tou].zuozhe<<" "<<chuchun[tou].chubanshe<<" "<<chuchun[tou].chanshuliang<<" "<<chuchun[tou].jiechuliang<<endl;
                tou=chuchun[tou].zhiyi;
                if(tou==0)
                    break;
            }
        }
        cout<<"是否继续查询:"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否(返回查询菜单)"<<endl;
        int al;
        cin>>al;
        if(al==1)
            anchubanshechaxun(zhanhao,shenfen);
        else if(al==2)
            tushuxinxichaxhun(zhanhao,shenfen);
}

void anzuozhechaxhun(int zhanhao,int shenfen)
{
    system("cls");
    Tushu*head;
    Tushu*p;
    Tushu*h;
    p=(struct tushu*)malloc(sizeof(Tushu));
    h=(struct tushu*)malloc(sizeof(Tushu));
    int n=0;
    map<string,int>chandu;
    map<string,int>panduan;
    map<string,int>biaotou;
    ifstream swimming("图书.txt",ios::in);
    if(!swimming.fail())
    {
        char buf[128];
        while(!swimming.eof())
        {
            n++;
            if(n==1)
                {
                    head=p;
                }
                else
                {
                    h->next=p;
                    h=p;
                    p=(struct tushu*)malloc(sizeof(Tushu));
                }
                swimming.getline(buf,128);
                string zhanchun=buf;
                stringstream ss(zhanchun);
                int jihao;
                int shuhao;
                string shuming;
                string zuozhe;
                string chubanshe;
                int chanshuliang;
                int jiechuliang;
                int zhiyi;
                int zhier;
                int zhisan;
                ss>>jihao>>shuhao>>shuming>>zuozhe>>chubanshe>>chanshuliang>>jiechuliang>>zhiyi>>zhier>>zhisan;
                biaotou[zuozhe]=jihao;
                chandu[zuozhe]++;
                char name[20];
                char zuo[20];
                char chu[20];
                int i;
                int len=shuming.length();
                for(i=0;i<len;i++)name[i]=shuming[i];
                name[i]='\0';
                len=zuozhe.length();
                for(i=0;i<len;i++)zuo[i]=zuozhe[i];
                zuo[i]='\0';
                len=chubanshe.length();
                for(i=0;i<len;i++)chu[i]=chubanshe[i];
                chu[i]='\0';
                p->jihao=jihao;
                p->shuhao=shuhao;
                strcpy(p->name,name);
                strcpy(p->zuozhe,zuo);
                strcpy(p->chubanshe,chu);
                p->chanshuliang=chanshuliang;
                p->jiechuliang=jiechuliang;
                p->zhiyi=zhiyi;
                p->zhier=zhier;
                p->zhisan=zhisan;
            }
            h=NULL;
            free(p);
            free(h);
            swimming.close();
        }
        Chaxun chuchun[n+1];
        int k=0;
        while(head!=NULL)
        {
            k++;
            chuchun[k].jihao=head->jihao;
            chuchun[k].name=head->name;
            chuchun[k].zuozhe=head->zuozhe;
            chuchun[k].chubanshe=head->chubanshe;
            chuchun[k].chanshuliang=head->chanshuliang;
            chuchun[k].jiechuliang=head->jiechuliang;
            chuchun[k].zhiyi=head->zhier;
            head=head->next;
        }
        cout<<"输出索引表:"<<endl;
        ofstream ming("作者查询.txt",ios::out);
        if(!ming.fail()){
        for(int i=1;i<=k;i++)
        {
            if(panduan[chuchun[i].zuozhe]==0)
            {
                cout<<chuchun[i].zuozhe<<" "<<biaotou[chuchun[i].zuozhe]<<" "<<chandu[chuchun[i].zuozhe]<<endl;
                ming<<chuchun[i].zuozhe<<" "<<biaotou[chuchun[i].zuozhe]<<" "<<chandu[chuchun[i].zuozhe]<<endl;
                panduan[chuchun[i].zuozhe]=1;
            }
        }
        }
        ming.close();
        char ch[20];
        cout<<"输入你要查询的书的作者:";
        scanf("%s",ch);
        string cha=ch;
        if(panduan[cha]!=1)
        {
            cout<<"未找到你要的书,你能不能按索引表来"<<endl;
        }
        else
        {
            int tou=biaotou[cha];
            for(int j=1;;j++)
            {
                cout<<chuchun[tou].name<<" "<<chuchun[tou].zuozhe<<" "<<chuchun[tou].chubanshe<<" "<<chuchun[tou].chanshuliang<<" "<<chuchun[tou].jiechuliang<<endl;
                tou=chuchun[tou].zhiyi;
                if(tou==0)
                    break;
            }
        }
        cout<<"是否继续查询:"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否(返回查询菜单)"<<endl;
        int al;
        cin>>al;
        if(al==1)
            anzuozhechaxhun(zhanhao,shenfen);
        else if(al==2)
            tushuxinxichaxhun(zhanhao,shenfen);
}

void anshumingchaxhun(int zhanhao,int shenfen)
{
    system("cls");
    Tushu*head;
    Tushu*p;
    Tushu*h;
    int n=0;
    p=(struct tushu*)malloc(sizeof(Tushu));
    h=(struct tushu*)malloc(sizeof(Tushu));
    ifstream swimming("图书.txt",ios::in);
    map<string,int>chandu;
    map<string,int>panduan;
    map<string,int>biaotou;
    if(!swimming.fail())
    {
        char buf[128];
        while(!swimming.eof())
        {
            n++;
            if(n==1)
                {
                    head=p;
                }
                else
                {
                    h->next=p;
                    h=p;
                    p=(struct tushu*)malloc(sizeof(Tushu));
                }
                swimming.getline(buf,128);
                string zhanchun=buf;
                stringstream ss(zhanchun);
                int jihao;
                int shuhao;
                string shuming;
                string zuozhe;
                string chubanshe;
                int chanshuliang;
                int jiechuliang;
                int zhiyi;
                int zhier;
                int zhisan;
                ss>>jihao>>shuhao>>shuming>>zuozhe>>chubanshe>>chanshuliang>>jiechuliang>>zhiyi>>zhier>>zhisan;
                chandu[shuming]++;
                biaotou[shuming]=jihao;
                char name[20];
                char zuo[20];
                char chu[20];
                int i;
                int len=shuming.length();
                for(i=0;i<len;i++)name[i]=shuming[i];
                name[i]='\0';
                len=zuozhe.length();
                for(i=0;i<len;i++)zuo[i]=zuozhe[i];
                zuo[i]='\0';
                len=chubanshe.length();
                for(i=0;i<len;i++)chu[i]=chubanshe[i];
                chu[i]='\0';
                p->jihao=jihao;
                p->shuhao=shuhao;
                strcpy(p->name,name);
                strcpy(p->zuozhe,zuo);
                strcpy(p->chubanshe,chu);
                p->chanshuliang=chanshuliang;
                p->jiechuliang=jiechuliang;
                p->zhiyi=zhiyi;
                p->zhier=zhier;
                p->zhisan=zhisan;
            }
            h=NULL;
            free(p);
            free(h);
            swimming.close();
        }
        Chaxun chuchun[n+1];
        int k=0;
        while(head!=NULL)
        {
            k++;
            chuchun[k].jihao=head->jihao;
            chuchun[k].name=head->name;
            chuchun[k].zuozhe=head->zuozhe;
            chuchun[k].chubanshe=head->chubanshe;
            chuchun[k].chanshuliang=head->chanshuliang;
            chuchun[k].jiechuliang=head->jiechuliang;
            chuchun[k].zhiyi=head->zhiyi;
            head=head->next;
        }
        cout<<"输出索引表:"<<endl;
        ofstream ming("书名查询.txt",ios::out);
        if(!ming.fail())
        {
            for(int i=1;i<=k;i++)
            {
                if(panduan[chuchun[i].name]==0)
                {
                    ming<<chuchun[i].name<<" "<<biaotou[chuchun[i].name]<<" "<<chandu[chuchun[i].name]<<endl;
                    cout<<chuchun[i].name<<" "<<biaotou[chuchun[i].name]<<" "<<chandu[chuchun[i].name]<<endl;
                    panduan[chuchun[i].name]=1;
                }
            }
        }
        ming.close();
        char ch[20];
        cout<<"输入你要查询的书:";
        scanf("%s",ch);
        string cha=ch;
        if(panduan[cha]!=1)
        {
            cout<<"未找到你要的书,你能不能按索引表来"<<endl;
        }
        else
        {
            int tou=biaotou[cha];
            for(int j=1;;j++)
            {
                cout<<chuchun[tou].name<<" "<<chuchun[tou].zuozhe<<" "<<chuchun[tou].chubanshe<<" "<<chuchun[tou].chanshuliang<<" "<<chuchun[tou].jiechuliang<<endl;
                tou=chuchun[tou].zhiyi;
                if(tou==0)
                    break;
            }
        }
        cout<<"是否继续查询:"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否(返回查询菜单)"<<endl;
        int al;
        cin>>al;
        if(al==1)
            anshumingchaxhun(zhanhao,shenfen);
        else if(al==2)
            tushuxinxichaxhun(zhanhao,shenfen);
}

void anshuhaochaxhun(int zhanhao,int shenfen)
{
    system("cls");
    Tushu*head;
    Tushu*p;
    Tushu*h;
    p=(struct tushu*)malloc(sizeof(Tushu));
    h=(struct tushu*)malloc(sizeof(Tushu));
    ifstream swimming("图书.txt",ios::in);
    if(!swimming.fail())
    {
        int n=0;
        char buf[128];
        while(!swimming.eof())
        {
            n++;
            if(n==1)
                {
                    head=p;
                }
                else
                {
                    h->next=p;
                    h=p;
                    p=(struct tushu*)malloc(sizeof(Tushu));
                }
                swimming.getline(buf,128);
                string zhanchun=buf;
                stringstream ss(zhanchun);
                int jihao;
                int shuhao;
                string shuming;
                string zuozhe;
                string chubanshe;
                int chanshuliang;
                int jiechuliang;
                int zhiyi;
                int zhier;
                int zhisan;
                ss>>jihao>>shuhao>>shuming>>zuozhe>>chubanshe>>chanshuliang>>jiechuliang>>zhiyi>>zhier>>zhisan;
                char name[20];
                char zuo[20];
                char chu[20];
                int i;
                int len=shuming.length();
                for(i=0;i<len;i++)name[i]=shuming[i];
                name[i]='\0';
                len=zuozhe.length();
                for(i=0;i<len;i++)zuo[i]=zuozhe[i];
                zuo[i]='\0';
                len=chubanshe.length();
                for(i=0;i<len;i++)chu[i]=chubanshe[i];
                chu[i]='\0';
                p->jihao=jihao;
                p->shuhao=shuhao;
                strcpy(p->name,name);
                strcpy(p->zuozhe,zuo);
                strcpy(p->chubanshe,chu);
                p->chanshuliang=chanshuliang;
                p->jiechuliang=jiechuliang;
                p->zhiyi=zhiyi;
                p->zhier=zhier;
                p->zhisan=zhisan;
            }
            h=NULL;
            free(p);
            free(h);
            swimming.close();
        }
        cout<<"输入要查询的书号:";
        int hao;
        cin>>hao;
        int pan=0;
        while(head!=NULL)
        {
            if(head->shuhao==hao)
            {
                pan=1;
                cout<<head->shuhao<<" "<<head->name<<" "<<head->chubanshe<<" "<<head->chanshuliang<<" "<<head->jiechuliang<<endl;
                break;
            }
            head=head->next;
        }
        if(pan==0)
            cout<<"没找到你要查询的书"<<endl;
        cout<<"是否继续查询:"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否(返回查询菜单)"<<endl;
        int a;
        cin>>a;
        if(a==1)
            anshuhaochaxhun(zhanhao,shenfen);
        else if(a==2)
            tushuxinxichaxhun(zhanhao,shenfen);
}

void tushuxinxichaxhun(int zhanhao,int shenfen)
{
    system("cls");
    chaxunfanfa();
    int xuanzhe;
    cin>>xuanzhe;
    switch(xuanzhe)
    {
    case 1:
        anshuhaochaxhun(zhanhao,shenfen);
        break;
    case 2:
        anshumingchaxhun(zhanhao,shenfen);
        break;
    case 3:
        anzuozhechaxhun(zhanhao,shenfen);
        break;
    case 4:
        anchubanshechaxun(zhanhao,shenfen);
        break;
    case 5:
        tushuguanlixition(zhanhao,shenfen);
    }
}

void tushuxinxixiugai(int zhanhao,int shenfen)
{
    system("cls");
    if(shenfen!=2)
    {
        cout<<"你没有此权限,是否返回菜单:"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否"<<endl;
        int cai;
        cin>>cai;
        if(cai==1)
          tushuguanlixition(zhanhao,shenfen);
        else
          fun(zhanhao,shenfen);
    }
    else
    {
        Tushu*head;
        Tushu*p;
        Tushu*h;
        p=(struct tushu*)malloc(sizeof(Tushu));
        h=(struct tushu*)malloc(sizeof(Tushu));
        ifstream swimming("图书.txt",ios::in);
        if(!swimming.fail())
        {

            int n=0;
            char buf[128];
            while(!swimming.eof())
            {
                n++;
                if(n==1)
                {
                    head=p;
                }
                else
                {
                    h->next=p;
                    h=p;
                    p=(struct tushu*)malloc(sizeof(Tushu));
                }
                swimming.getline(buf,128);
                string zhanchun=buf;
                stringstream ss(zhanchun);
                int jihao;
                int shuhao;
                string shuming;
                string zuozhe;
                string chubanshe;
                int chanshuliang;
                int jiechuliang;
                int zhiyi;
                int zhier;
                int zhisan;
                ss>>jihao>>shuhao>>shuming>>zuozhe>>chubanshe>>chanshuliang>>jiechuliang>>zhiyi>>zhier>>zhisan;
                char name[20];
                char zuo[20];
                char chu[20];
                int i;
                int len=shuming.length();
                for(i=0;i<len;i++)name[i]=shuming[i];
                name[i]='\0';
                len=zuozhe.length();
                for(i=0;i<len;i++)zuo[i]=zuozhe[i];
                zuo[i]='\0';
                len=chubanshe.length();
                for(i=0;i<len;i++)chu[i]=chubanshe[i];
                chu[i]='\0';
                p->jihao=jihao;
                p->shuhao=shuhao;
                strcpy(p->name,name);
                strcpy(p->zuozhe,zuo);
                strcpy(p->chubanshe,chu);
                p->chanshuliang=chanshuliang;
                p->jiechuliang=jiechuliang;
                p->zhiyi=zhiyi;
                p->zhier=zhier;
                p->zhisan=zhisan;
            }
            h=NULL;
            free(p);
            free(h);
            swimming.close();
        }
        cout<<"输入要修改的书的书号:";
        int hao;
        cin>>hao;
        struct tushu*k;
        k=head;
        int pan=0;
        while(k!=NULL)
        {
            if(k->shuhao==hao)
            {
                pan=1;
                cout<<"输入要修改的位置:"<<endl;
                cout<<"1.藏书量"<<endl;
                cout<<"2.借出量"<<endl;
                int s;
                cin>>s;
                if(s==1)
                {
                    int g=0;
                    while(g!=1){
                    cout<<"输入修改后的量:";
                    cin>>k->chanshuliang;
                    if(k->chanshuliang<k->jiechuliang)
                        cout<<"你这量不对啊,能不能重新输入一遍:"<<endl;
                        else
                            g=1;
                    }
                }
                else if(s==2)
                {
                    int g=0;
                    while(g!=1)
                    {
                        cout<<"输入修改后的量:";
                        cin>>k->jiechuliang;
                        if(k->chanshuliang<k->jiechuliang)
                            cout<<"你这量是不是有问题啊"<<endl;
                        else
                            g=1;
                    }
                }
                break;
            }
            k=k->next;
        }
        ofstream ming("图书.txt",ios::out);
        if(!ming.fail())
        {
            while(head!=NULL)
            {
                ming<<head->jihao<<" "<<head->shuhao<<" ";
                ming<<head->name<<" "<<head->zuozhe<<" ";
                ming<<head->chubanshe<<" "<<head->chanshuliang<<" ";
                ming<<head->jiechuliang<<" "<<head->zhiyi<<" ";
                ming<<head->zhier<<" "<<head->zhisan<<endl;
                head=head->next;
            }
            free(head);
        }
        ming.close();
        if(pan==0)
            cout<<"没找到你要修改的书"<<endl;
        cout<<"是否继续修改:"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否"<<endl;
        int a;
        cin>>a;
        if(a==1)
            tushuxinxixiugai(zhanhao,shenfen);
        else if(a==2)
            tushuguanlixition(zhanhao,shenfen);
        else
            fun(zhanhao,shenfen);
    }
}

void tushuxinxishuru(int zhanhao,int shenfen)
{
    system("cls");
    if(shenfen!=2)
    {
        cout<<"你没有此权限,是否返回菜单:"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否"<<endl;
        int cai;
        cin>>cai;
        if(cai==1)
          tushuguanlixition(zhanhao,shenfen);
        else
          fun(zhanhao,shenfen);
    }
    else
    {
        ofstream swimming("图书.txt",ios::app);
        if(!swimming.fail())
        {
            tushushulian++;
            int jihao=tushushulian;
            int shuhao;
            char ming[20];
            char zuo[20];
            char chu[20];
            string name;
            string zuozhe;
            string chubanshe;
            int chanshuliang;
            int jiechuliang;
            int zhiyi;
            int zhier;
            int zhisan;
            cout<<"输入书号:";
            cin>>shuhao;
            cout<<"输入书名:";
            scanf("%s",ming);
            name=ming;
            if(namehao[name]==0)
            {
                zhiyi=0;
                namehao[name]=jihao;
            }
            else
            {
                zhiyi=namehao[name];
                namehao[name]=jihao;
            }
            cout<<"输入作者:";
            scanf("%s",zuo);
            zuozhe=zuo;
            if(zuohao[zuozhe]==0)
            {
                zhier=0;
                zuohao[zuozhe]=jihao;
            }
            else
            {
                zhier=zuohao[zuozhe];
                zuohao[zuozhe]=jihao;
            }
            cout<<"输入出版社:";
            scanf("%s",chu);
            chubanshe=chu;
            if(shehao[chubanshe]==0)
            {
                zhisan=0;
                shehao[chubanshe]=jihao;
            }
            else
            {
                zhisan=shehao[chubanshe];
                shehao[chubanshe]=jihao;
            }
            cout<<"输入藏书量:";
            cin>>chanshuliang;
            cout<<"输入借出量:";
            cin>>jiechuliang;
            swimming<<jihao<<" "<<shuhao<<" "<<name<<" "<<zuozhe<<" "<<chubanshe<<" "<<chanshuliang<<" "<<jiechuliang<<" "<<zhiyi<<" "<<zhier<<" "<<zhisan<<endl;
        }
        swimming.close();
        cout<<"是否继续输入:"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否(返回菜单)"<<endl;
        int z;
        cin>>z;
        if(z==1)
            tushuxinxishuru(zhanhao,shenfen);
        else if(z==2)
            tushuguanlixition(zhanhao,shenfen);
        else
            fun(zhanhao,shenfen);
    }
}

void tushuguanlixition(int zhanhao,int shenfen)
{
    system("cls");
    tushuguanlizhucaidan();
    int xuanzhe;
    cin>>xuanzhe;
    switch(xuanzhe)
    {
    case 1:
        tushuxinxishuru(zhanhao,shenfen);
        break;
    case 2:
        tushuxinxixiugai(zhanhao,shenfen);
        break;
    case 3:
        tushuxinxichaxhun(zhanhao,shenfen);
        break;
    case 4:
        huizontonji(zhanhao,shenfen);
    case 5:
        zhucaidandexuanzhe(zhanhao,shenfen);
        break;
    }
}

void duzheguanlizhucaidan()
{
    cout<<"   "<<"*********************"<<endl;
    cout<<"        "<<"1.读者信息输入"<<endl;
    cout<<"        "<<"2.读者信息修改"<<endl;
    cout<<"        "<<"3.读者信息删除"<<endl;
    cout<<"        "<<"4.读者信息查询"<<endl;
    cout<<"        "<<"5.读者信息显示(按读者姓氏排序)"<<endl;
    cout<<"        "<<"6.返回主菜单"<<endl;
    cout<<"   "<<"*********************"<<endl;
}
void fan(int zhanhao,int shenfen){cout<<"不返回菜单你要干嘛:"<<endl;
cout<<"按任意键返回菜单"<<endl;
char a;
cin>>a;
duzheguanlixition(zhanhao,shenfen);
}

typedef struct p{
        int zhanhao;
        string name;
        string danwei;
        long long dianhua;
        int kejie;
        int yijie;
}P;
void duzhexinxixianshi(int zhanhao,int shenfen)
{
    system("cls");
    if(shenfen!=2)
    {
        cout<<"您没有此权限,是否返回菜单:"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否"<<endl;
        int f;
        cin>>f;
        if(f==1)
            duzheguanlixition(zhanhao,shenfen);
        else
            fan(zhanhao,shenfen);
    }
    else
    {
        vector<P>chuchun;
        ifstream swimming("读者.txt",ios::in);
        if(!swimming.fail())
        {
            char buf[128];
            int n=0;
            while(!swimming.eof())
            {
                n++;
                swimming.getline(buf,128);
                string zhanchun=buf;
                stringstream ss(zhanchun);
                int hao;
                string name;
                string danwei;
                long long dianhua;
                int kejie;
                int yijie;
                ss>>hao>>name>>danwei>>dianhua>>kejie>>yijie;
                chuchun.push_back({hao,name,danwei,dianhua,kejie,yijie});
            }
            for(int i=0;i<n-1;i++)
            {
                for(int j=i+1;j<n-1;j++)
                {
                    if(chuchun[i].name[0]<chuchun[j].name[0])
                        swap(chuchun[i],chuchun[j]);
                }
            }
            for(int i=0;i<n-1;i++)
            {
                printf("%8d ",chuchun[i].zhanhao);
                cout<<chuchun[i].name<<" "<<chuchun[i].danwei<<" ";
                printf("%8lld ",chuchun[i].dianhua);
                printf("%8d %8d\n",chuchun[i].kejie,chuchun[i].yijie);
            }
        }
    }
    cout<<"输入f返回菜单"<<endl;
    char a;
    cin>>a;
    if(a=='f')
        duzheguanlixition(zhanhao,shenfen);
    else
        fan(zhanhao,shenfen);
}

void duzhexinxichaxun(int zhanhao,int shenfen)
{
    system("cls");
    if(shenfen!=2)
    {
        cout<<"您没有此权限,是否返回菜单:"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否"<<endl;
        int f;
        cin>>f;
        if(f==1)
            duzheguanlixition(zhanhao,shenfen);
        else
            fan(zhanhao,shenfen);
    }
    else
    {
        cout<<"输入要查询的读者的读者号:"<<endl;
        int hao;
        cin>>hao;
        ifstream swimming("读者.txt",ios::in);
        map<int,int>haohao;
        map<int,string>haoname;
        map<int,string>haodanwei;
        map<int,long long>haodianhua;
        map<int,int>haokejie;
        map<int,int>haoyijie;
        if(!swimming.fail())
        {
            char buf[128];

            while(!swimming.eof())
            {
                swimming.getline(buf,128);
                string zhanchun=buf;
                stringstream ss(zhanchun);
                int haoma;
                ss>>haoma;
                haohao[haoma]=haoma;
                ss>>haoname[haoma];
                ss>>haodanwei[haoma];
                ss>>haodianhua[haoma];
                ss>>haokejie[haoma];
                ss>>haoyijie[haoma];
            }
        }
        swimming.close();
        if(haohao[hao]==0)
            cout<<"不存在你要找的人类"<<endl;
        else
        {
            int xuan;
            int n=0;
            while(xuan!=2){
            n++;
            if(n==1){
            cout<<"输入要查询的信息:"<<endl;
            cout<<"1.姓名"<<endl<<"2.单位"<<endl;
            cout<<"3.电话号码"<<endl;
            cout<<"4.可借书数"<<endl<<"5.已借书数"<<endl;}
            int x;
            cout<<"输入要查询的位置:";
            cin>>x;
            if(x==1)cout<<"姓名:"<<haoname[hao]<<endl;
            if(x==2)cout<<"单位:"<<haodanwei[hao]<<endl;
            if(x==3)cout<<"电话号码"<<haodianhua[hao]<<endl;
            if(x==4)cout<<"可借书数"<<haokejie[hao]<<endl;
            if(x==5)cout<<"已借书数"<<haoyijie[hao]<<endl;
            cout<<"是否继续查询这个人的别的信息"<<endl;
            cout<<"1.是"<<endl;
            cout<<"2.否"<<endl;
            cin>>xuan;
            }
        }
        cout<<"是否继续查找:"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否(返回菜单)"<<endl;
        int k;
        cin>>k;
        if(k==1)
           duzhexinxichaxun(zhanhao,shenfen);
        else if(k==2)
            duzheguanlixition(zhanhao,shenfen);
        else
           fan(zhanhao,shenfen);
    }
}

void duzhexinxishanchu(int zhanhao,int shenfen)
{
    system("cls");
    if(shenfen!=2)
    {
        cout<<"您没有此权限,是否返回菜单:"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否"<<endl;
        int f;
        cin>>f;
        if(f==1)
            duzheguanlixition(zhanhao,shenfen);
        else
            fan(zhanhao,shenfen);
    }
    else
    {
        ifstream swimming("读者.txt",ios::in);
        Duzhe*head;
        Duzhe*p;
        Duzhe*g;
        p=(struct duzhe*)malloc(sizeof(Duzhe));
        g=(struct duzhe*)malloc(sizeof(Duzhe));
        if(!swimming.fail())
        {
            int n=0;
            char buf[128];
            while(!swimming.eof())
            {
                n++;
                if(n==1)
                {
                    head=p;
                }
                else
                {
                    g->next=p;
                    g=p;
                    p=(struct duzhe*)malloc(sizeof(Duzhe));
                }
                swimming.getline(buf,128);
                string zhanchun=buf;
                stringstream ss(zhanchun);
                int zhanhao;
                string minzi;
                string xuexiao;
                long long haoma;
                int kejie;
                int yijie;
                ss>>zhanhao>>minzi>>xuexiao>>haoma>>kejie>>yijie;
                char name[10];
                int i;
                int len=minzi.length();
                for(i=0;i<len;i++)name[i]=minzi[i];
                name[i]='\0';
                char danwei[20];
                len=xuexiao.length();
                for(i=0;i<len;i++)danwei[i]=xuexiao[i];
                danwei[i]='\0';
                p->zhanhao=zhanhao;
                strcpy(p->name,name);
                strcpy(p->danwei,danwei);
                p->dianhua=haoma;
                p->kejie=kejie;
                p->yijie=yijie;
            }
        }
        g=NULL;
        free(g);
        free(p);
        swimming.close();
        cout<<"输入要删除的人的读者号:";
        int hao;
        cin>>hao;
        int pan=0;
        if(head->zhanhao==hao)
        {
            pan=1;
            head=head->next;
        }
        else
        {
            Duzhe*w;
            Duzhe*h;
            h=head;
            w=head->next;
            while(w!=NULL)
            {
                if(w->zhanhao==hao)
                {
                    pan=1;
                    h->next=w->next;
                }
                h=w;
                w=w->next;
            }
            free(h);
            free(w);
        }
        if(pan==0)
        cout<<"未找到要删除的人"<<endl;
        else
        {
            ofstream ming("读者.txt",ios::out);
            if(!ming.fail())
            {
                while(head!=NULL)
                {
                    ming<<head->zhanhao<<" "<<head->name<<" "<<head->danwei<<" "<<head->dianhua<<" "<<head->kejie<<" "<<head->yijie<<endl;
                    head=head->next;
                }
            }
            ming.close();
        }
        cout<<"是否要继续删:"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否(返回主菜单)"<<endl;
        int a;
        cin>>a;
        if(a==1)
           duzhexinxishanchu(zhanhao,shenfen);
        else if(a==2)
            duzheguanlixition(zhanhao,shenfen);
        else
            fan(zhanhao,shenfen);
    }
}

void duzhexinxixiugai(int zhanhao,int shenfen)
{
    system("cls");
    if(shenfen!=2)
    {
        cout<<"您没有此权限,是否返回菜单:"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否"<<endl;
        int f;
        cin>>f;
        if(f==1)
            duzheguanlixition(zhanhao,shenfen);
        else
            fan(zhanhao,shenfen);
    }
    else
    {
        ifstream swimming("读者.txt",ios::in);
        Duzhe*head;
        Duzhe*p;
        Duzhe*g;
        p=(struct duzhe*)malloc(sizeof(Duzhe));
        g=(struct duzhe*)malloc(sizeof(Duzhe));
        if(!swimming.fail())
        {
            int n=0;
            char buf[128];
            while(!swimming.eof())
            {
                n++;
                if(n==1)
                {
                    head=p;
                }
                else
                {
                    g->next=p;
                    g=p;
                    p=(struct duzhe*)malloc(sizeof(Duzhe));
                }
                swimming.getline(buf,128);
                string zhanchun=buf;
                stringstream ss(zhanchun);
                int zhanhao;
                string minzi;
                string xuexiao;
                long long haoma;
                int kejie;
                int yijie;
                ss>>zhanhao>>minzi>>xuexiao>>haoma>>kejie>>yijie;
                char name[10];
                int i;
                int len=minzi.length();
                for(i=0;i<len;i++)name[i]=minzi[i];
                name[i]='\0';
                char danwei[20];
                len=xuexiao.length();
                for(i=0;i<len;i++)danwei[i]=xuexiao[i];
                danwei[i]='\0';
                p->zhanhao=zhanhao;
                strcpy(p->name,name);
                strcpy(p->danwei,danwei);
                p->dianhua=haoma;
                p->kejie=kejie;
                p->yijie=yijie;
            }
        }
        g=NULL;
        free(g);
        free(p);
        swimming.close();
        cout<<"输入需要修改信息的读者的读者号:"<<endl;
        int hao;
        cin>>hao;
        Duzhe*w;
        w=head;
        int pan=0;
        while(w!=NULL)
        {
            if(w->zhanhao==hao)
            {
                pan=1;
                cout<<"输入要修改的位置:"<<endl;
                cout<<"1.读者号"<<endl<<"2.姓名"<<endl;
                cout<<"3.单位"<<endl<<"4.电话号码"<<endl;
                cout<<"5.可借书数"<<endl<<"6.已借书数"<<endl;
                int xuan;
                cin>>xuan;
                if(xuan==1){cout<<"输入修改后的读者号:";
                        cin>>w->zhanhao;}
                if(xuan==2){cout<<"输入修改后的读者名:";
                        scanf("%s",w->name);}
                if(xuan==3){cout<<"输入修改后的单位:";
                        scanf("%s",w->danwei);}
                if(xuan==4){cout<<"输入修改后的电话号码:";
                        cin>>w->dianhua;}
                if(xuan==5){cout<<"输入修改后的可借书数:";
                        cin>>w->kejie;}
                if(xuan==6){cout<<"输入修改后的已经借书数:";
                        cin>>w->yijie;}
            }
            w=w->next;
        }
        free(w);
        if(pan==0)
            cout<<"没找到要修改的人"<<endl;
        else
        {
            ofstream ming("读者.txt",ios::out);
            if(!ming.fail())
            {
                while(head!=NULL)
                {
                    ming<<head->zhanhao<<" "<<head->name<<" "<<head->danwei<<" "<<head->dianhua<<" "<<head->kejie<<" "<<head->yijie<<endl;
                    head=head->next;
                }
            }
            ming.close();
        }
        cout<<"是否需要继续修改"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否(返回菜单)"<<endl;
        int a;
        cin>>a;
        if(a==1)
            duzhexinxixiugai(zhanhao,shenfen);
        else if(a==2)
            duzheguanlixition(zhanhao,shenfen);
        else
            fan(zhanhao,shenfen);
    }
}

void duzhexinxishuru(int zhanhao,int shenfen)
{
    system("cls");
    if(shenfen!=2)
    {
        cout<<"您没有此权限,是否返回菜单:"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否"<<endl;
        int f;
        cin>>f;
        if(f==1)
            duzheguanlixition(zhanhao,shenfen);
        else
            fan(zhanhao,shenfen);
    }
    else
    {
        ofstream swimming("读者.txt",ios::app);
        if(!swimming.fail())
        {
            cout<<"输入读者信息:"<<endl;
            int duzhehao;
            cout<<"输入读者号:";
            cin>>duzhehao;
            char name[10];
            cout<<"输入读者名:";
            scanf("%s",name);
            char danwei[20];
            cout<<"输入单位名:";
            scanf("%s",danwei);
            long long dianhua;
            cout<<"输入电话号码:";
            cin>>dianhua;
            int shuliang;
            cout<<"输入可借书数量:";
            cin>>shuliang;
            int yijie;
            cout<<"输入已借书数量:";
            cin>>yijie;
            swimming<<duzhehao<<" "<<name<<" "<<danwei<<" "<<dianhua<<" "<<shuliang<<" "<<yijie<<endl;
        }
        swimming.close();
        cout<<"是否继续输入"<<endl;
        cout<<"1.是"<<endl;
        cout<<"2.否(返回菜单)"<<endl;
        int xuan;
        cin>>xuan;
        if(xuan==1)
            duzhexinxishuru(zhanhao,shenfen);
        else if(xuan==2)
            duzheguanlixition(zhanhao,shenfen);
    }
}

void duzheguanlixition(int zhanhao,int shenfen)
{
    system("cls");
    duzheguanlizhucaidan();
    int xuanzhe;
    cin>>xuanzhe;
    switch(xuanzhe)
    {
    case 1:
        duzhexinxishuru(zhanhao,shenfen);
        break;
    case 2:
        duzhexinxixiugai(zhanhao,shenfen);
        break;
    case 3:
        duzhexinxishanchu(zhanhao,shenfen);
        break;
    case 4:
        duzhexinxichaxun(zhanhao,shenfen);
        break;
    case 5:
        duzhexinxixianshi(zhanhao,shenfen);
        break;
    case 6:
        zhucaidandexuanzhe(zhanhao,shenfen);
        break;
    }
}


void yonhuguanlicaidan()
{
    cout<<"      "<<"************************"<<endl<<endl;
    cout<<"            "<<"1.用户信息输入"<<endl;
    cout<<"            "<<"2.用户信息修改"<<endl;
    cout<<"            "<<"3.用户信息删除"<<endl;
    cout<<"            "<<"4.用户信息显示"<<endl;
    cout<<"            "<<"5.用户密码修改"<<endl;
    cout<<"            "<<"6.返回主菜单"<<endl<<endl;
    cout<<"      "<<"************************"<<endl<<endl;
}

void yonhumimaxiugai(int zhanhao,int shenfen)
{
    system("cls");
    ifstream swimming("账户.txt",ios::in);
            Yonhu *head;
            Yonhu*p;
            Yonhu*g;
            p=g=(struct yonhu*)malloc(sizeof(struct yonhu));
            if(!swimming.fail())
            {
                char buf[128];
                int n=0;
                while(!swimming.eof())
                {
                    n++;
                    if(n==1)
                    {
                        head=p;
                    }
                    else
                    {
                        g->next=p;
                        g=p;
                        p=(struct yonhu*)malloc(sizeof(struct yonhu));
                    }
                    swimming.getline(buf,128);
                    string zhanchun=buf;
                    stringstream ss(zhanchun);
                    int zhanhao;
                    string mima;
                    int shen;
                    ss>>zhanhao>>mima>>shen;
                    char zhuanhuan[30];
                    int i;
                    int len=mima.length();
                    for(i=0;i<len;i++)
                        zhuanhuan[i]=mima[i];
                    zhuanhuan[i]='\0';
                    p->name=zhanhao;
                    strcpy(p->mima,zhuanhuan);
                    p->shenfen=shen;

                }
            }
            swimming.close();
            g=NULL;
            free(g);
            free(p);
            int a=zhanhao;
            Yonhu*gai;
            gai=head;
            while(gai!=NULL)
            {
                if(gai->name==a)
                {
                    cout<<"输入修改之后的密码";
                    scanf("%s",gai->mima);
                }
                gai=gai->next;
            }
            ofstream mimm("账户.txt",ios::out);
            while(head!=NULL)
            {
                mimm<<head->name<<" "<<head->mima<<" "<<head->shenfen<<endl;
                head=head->next;
            }
            mimm.close();
            cout<<"按1返回菜单"<<endl;
            int as;
            cin>>as;
            if(as==1)
              yonhuguanlixition(zhanhao,shenfen);
}


void yonhuxinxixianshi(int zhanhao,int shenfen)
{
    system("cls");
    if(shenfen!=1)
        {
            cout<<"您没有此权限,如需返回菜单请输入1"<<endl;
            int a;
            cin>>a;
            yonhuguanlixition(zhanhao,shenfen);
        }
    else
    {
       cout<<"账号"<<"       "<<"密码"<<"     "<<"身份权限"<<endl;
        ifstream swimming("账户.txt",ios::in);
            Yonhu *head;
            Yonhu*p;
            Yonhu*g;
            p=g=(struct yonhu*)malloc(sizeof(struct yonhu));
            if(!swimming.fail())
            {
                char buf[128];
                int n=0;
                while(!swimming.eof())
                {
                    n++;
                    if(n==1)
                    {
                        head=p;
                    }
                    else
                    {
                        g->next=p;
                        g=p;
                        p=(struct yonhu*)malloc(sizeof(struct yonhu));
                    }
                    swimming.getline(buf,128);
                    string zhanchun=buf;
                    stringstream ss(zhanchun);
                    int zhanhao;
                    string mima;
                    int shen;
                    ss>>zhanhao>>mima>>shen;
                    char zhuanhuan[30];
                    int i;
                    int len=mima.length();
                    for(i=0;i<len;i++)
                        zhuanhuan[i]=mima[i];
                    zhuanhuan[i]='\0';
                    p->name=zhanhao;
                    strcpy(p->mima,zhuanhuan);
                    p->shenfen=shen;

                }
            }
            swimming.close();
            g=NULL;
            free(g);
            free(p);
            struct yonhu*k;
            k=head;
            while(k!=NULL)
            {
                printf("%8d ",k->name);
                printf("%8s",k->mima);
                printf("%8d\n",k->shenfen);
                k=k->next;
            }
            cout<<"是否返回菜单"<<endl;
            cout<<"1.是"<<endl;
            cout<<"2.否"<<endl;
            int a;
            cin>>a;
            if(a==1)
                yonhuguanlixition(zhanhao,shenfen);
            else
                return;
    }


}

void yonhuxinxisanchu(int zhanhao,int shenfen)
{
    system("cls");
    if(shenfen!=1)
        {
            cout<<"您没有此权限,如需返回菜单请输入1"<<endl;
            int a;
            cin>>a;
            yonhuguanlixition(zhanhao,shenfen);
        }
        else
        {
            ifstream swimming("账户.txt",ios::in);
            Yonhu *head;
            Yonhu*p;
            Yonhu*g;
            p=g=(struct yonhu*)malloc(sizeof(struct yonhu));
            if(!swimming.fail())
            {
                char buf[128];
                int n=0;
                while(!swimming.eof())
                {
                    n++;
                    if(n==1)
                    {
                        head=p;
                    }
                    else
                    {
                        g->next=p;
                        g=p;
                        p=(struct yonhu*)malloc(sizeof(struct yonhu));
                    }
                    swimming.getline(buf,128);
                    string zhanchun=buf;
                    stringstream ss(zhanchun);
                    int zhanhao;
                    string mima;
                    int shen;
                    ss>>zhanhao>>mima>>shen;
                    char zhuanhuan[30];
                    int i;
                    int len=mima.length();
                    for(i=0;i<len;i++)
                        zhuanhuan[i]=mima[i];
                    zhuanhuan[i]='\0';
                    p->name=zhanhao;
                    strcpy(p->mima,zhuanhuan);
                    p->shenfen=shen;

                }
            }
            swimming.close();
            g=NULL;
            free(g);
            free(p);
            cout<<"要删除的用户的账号:";
            int h;
            cin>>h;
            int panduan=0;
            Yonhu*shan;
            shan=head;
            Yonhu*chu;
            if(head->next!=NULL)
                chu=head->next;
            if(head->name==h){
                    panduan=1;
                head=head->next;
            }
            else
            {
                while(chu!=NULL)
                {
                    if(chu->name==h)
                    {
                        panduan=1;
                        shan->next=chu->next;
                    }
                    shan=chu;
                    chu=chu->next;
                }
            }
            ofstream mimm("账户.txt",ios::out);
            while(head!=NULL)
            {
                mimm<<head->name<<" "<<head->mima<<" "<<head->shenfen<<endl;
                head=head->next;
            }
            if(panduan==0)
            {
                cout<<"没找到你说的那个人"<<endl;
            }
            cout<<"是否继续删人:"<<endl;
            cout<<"1.是"<<endl;
            cout<<"2.否(返回菜单)"<<endl;
            int s;
            cin>>s;
            if(s==1)
            {
                system("cls");
                yonhuxinxisanchu(zhanhao,shenfen);
            }
            else if(s==2)
               yonhuguanlixition(zhanhao,shenfen);
        }
}



void yonhuxinxixiugai(int zhanhao,int shenfen)
{
    system("cls");
     if(shenfen!=1)
        {
            cout<<"您没有此权限,如需返回菜单请输入1"<<endl;
            int a;
            cin>>a;
            yonhuguanlixition(zhanhao,shenfen);
        }
        else
        {
            ifstream swimming("账户.txt",ios::in);
            Yonhu *head;
            Yonhu*p;
            Yonhu*g;
            p=g=(struct yonhu*)malloc(sizeof(struct yonhu));
            if(!swimming.fail())
            {
                char buf[128];
                int n=0;
                while(!swimming.eof())
                {
                    n++;
                    if(n==1)
                    {
                        head=p;
                    }
                    else
                    {
                        g->next=p;
                        g=p;
                        p=(struct yonhu*)malloc(sizeof(struct yonhu));
                    }
                    swimming.getline(buf,128);
                    string zhanchun=buf;
                    stringstream ss(zhanchun);
                    int zhanhao;
                    string mima;
                    int shen;
                    ss>>zhanhao>>mima>>shen;
                    char zhuanhuan[30];
                    int i;
                    int len=mima.length();
                    for(i=0;i<len;i++)
                        zhuanhuan[i]=mima[i];
                    zhuanhuan[i]='\0';
                    p->name=zhanhao;
                    strcpy(p->mima,zhuanhuan);
                    p->shenfen=shen;

                }
            }
            swimming.close();
            g=NULL;
            free(g);
            free(p);
            cout<<"打印所有用户的信息:"<<endl;
            cout<<"账号"<<"       "<<"密码"<<"     "<<"身份权限"<<endl;
            struct yonhu*k;
            k=head;
            while(k!=NULL)
            {
                printf("%8d ",k->name);
                printf("%8s",k->mima);
                printf("%8d\n",k->shenfen);
                k=k->next;
            }
            cout<<"输入要修改的人的账号:";
            int a;
            cin>>a;
            Yonhu*gai;
            gai=head;
            int panduan=0;
            while(gai!=NULL)
            {
                if(gai->name==a)
                {
                    panduan=1;
                    cout<<"要修改的地方是什么:"<<endl;
                    cout<<"1.账号"<<endl;
                    cout<<"2.密码"<<endl;
                    cout<<"3.身份"<<endl;
                    cout<<"4.算了不改了"<<endl;
                    int xiu;
                    cin>>xiu;
                    if(xiu==1)
                    {
                        cout<<"输入修改之后的账号";
                        cin>>gai->name;
                    }
                    else if(xiu==2)
                    {
                        cout<<"输入修改之后的密码";
                        scanf("%s",gai->mima);
                    }
                    else if(xiu==3)
                    {
                        cout<<"输入修改之后的身份";
                        cin>>gai->shenfen;
                    }
                    else
                    {
                        break;
                    }
                }
                gai=gai->next;
            }
            ofstream mimm("账户.txt",ios::out);
            while(head!=NULL)
            {
                mimm<<head->name<<" "<<head->mima<<" "<<head->shenfen<<endl;
                head=head->next;
            }
            mimm.close();
            if(panduan==0)
            {
                cout<<"并没有你要修改的人的账号"<<endl;
            }
            cout<<"是否继续修改:"<<endl;
            cout<<"1.是"<<endl;
            cout<<"2.否(返回菜单)"<<endl;
            int s;
            cin>>s;
            if(s==1)
              yonhuxinxixiugai(zhanhao,shenfen);
            else if(s==2)
              yonhuguanlixition(zhanhao,shenfen);
        }
}

void yonhuxinxishuru(int zhanhao,int shenfen)
{
    system("cls");
        if(shenfen!=1)
        {
            cout<<"您没有此权限,如需返回菜单请输入1"<<endl;
            int a;
            cin>>a;
            yonhuguanlixition(zhanhao,shenfen);
        }
        else
        {
            ofstream swimming("账户.txt",ios::app);
            int zhanhao;
            char mima[30];
            int shenfen;
            if(!swimming.fail())
            {
                cout<<"请输入要添加的用户的账号:";
                cin>>zhanhao;
                cout<<"请输入要添加的用户的密码:";
                scanf("%s",mima);
                cout<<"请输入要添加的用户的身份:";
                cin>>shenfen;
                swimming<<zhanhao<<" "<<mima<<" "<<shenfen<<endl;
            }
        }
    system("cls");
    cout<<"是否要继续添加用户信息:"<<endl;
    cout<<"1.是"<<endl;
    cout<<"2.否"<<endl;
    int a;
    cin>>a;
    if(a==1){
            system("cls");
      yonhuxinxishuru(zhanhao,shenfen);
    }
    else
      yonhuguanlixition(zhanhao,shenfen);
}

void yonhuguanlixition(int zhanhao,int shenfen)
{
    system("cls");
    yonhuguanlicaidan();
    int xuanzhe;
    cin>>xuanzhe;
    switch(xuanzhe)
    {
    case 1:
        yonhuxinxishuru(zhanhao,shenfen);
        break;
    case 2:
        yonhuxinxixiugai(zhanhao,shenfen);
        break;
    case 3:
        yonhuxinxisanchu(zhanhao,shenfen);
        break;
    case 4:
        yonhuxinxixianshi(zhanhao,shenfen);
        break;
    case 5:
        yonhumimaxiugai(zhanhao,shenfen);
        break;
    case 6:
        zhucaidandexuanzhe(zhanhao,shenfen);
        break;
    }
}


void zhucaidan()
{
    cout<<"      "<<"************************"<<endl<<endl;
    cout<<"            "<<"1.用户管理"<<endl;
    cout<<"            "<<"2.读者管理"<<endl;
    cout<<"            "<<"3.图书管理"<<endl;
    cout<<"            "<<"4.图书流通管理"<<endl;
    cout<<"            "<<"5.退出系统"<<endl<<endl;
    cout<<"      "<<"************************"<<endl<<endl;
}
void zhucaidandexuanzhe(int zhanhao,int shenfen)
{
    system("cls");
    zhucaidan();
    int xuanzhe;
    cin>>xuanzhe;
    switch(xuanzhe)
    {
    case 1:
        yonhuguanlixition(zhanhao,shenfen);
        break;
    case 2:
        duzheguanlixition(zhanhao,shenfen);
        break;
    case 3:
        tushuguanlixition(zhanhao,shenfen);
        break;
    case 4:
        tushuguanliliutonxition(zhanhao,shenfen);
        break;
    case 5:
        system("cls");
        break;
    }
}

void denluxiton()
{
    cout<<"*********************"<<endl<<endl;
    cout<<"   "<<"1.创建账户"<<endl;
    cout<<"   "<<"2.登录系统"<<endl<<endl;
    cout<<"*********************"<<endl;
}

void zhanhu()
{
    denluxiton();
    int xuanzhe;
    cin>>xuanzhe;
    switch(xuanzhe)
    {
    case 1:
        chuanjian();
        zhanhu();
        break;
    case 2:
        shurumimajinxindenlu();
        break;
    }
}

void chuanjian()
{
    system("cls");
    ofstream swimming("账户.txt",ios::app);
    if(!swimming.fail())
    {
        long long hao;
        char mima[30];
        char hedui[30];
        int shenfen;
        cout<<"输入账号:";
        cin>>hao;
        cout<<"输入密码:";
        scanf("%s",mima);
        cout<<"再次输入密码:";
        scanf("%s",hedui);
        while(strcmp(mima,hedui)!=0)
        {
            cout<<"密码错误请重新输入:"<<endl;
            cout<<"输入密码:";
            scanf("%s",mima);
            cout<<"再次输入密码:";
            scanf("%s",hedui);
        }
        cout<<"输入身份:";
        cin>>shenfen;
        swimming<<hao<<" "<<mima<<" "<<shenfen<<endl;
    }
    swimming.close();
    system("cls");
}

void shurumimajinxindenlu()
{
    system("cls");
    cout<<"*************************"<<endl;
    cout<<"     请输入账号:";
    int zhanhao;
    cin>>zhanhao;
    cout<<"     请输入密码:";
    char mima[30];
    scanf("%s",mima);
    map<int,string>zhanmi;
    map<int,int>zhanshen;
    fstream swimming("账户.txt",ios::in);
    if(!swimming.fail())
    {
        char buf[128];
        while(swimming.getline(buf,128))
        {
            string zhanchun=buf;
            stringstream ss(zhanchun);
            int zhan,shen;
            string mi;
            ss>>zhan>>mi>>shen;
            zhanmi[zhan]=mi;
            zhanshen[zhan]=shen;
        }
    }
    string k=mima;
    if(zhanmi[zhanhao]!=k)
    {
        cout<<"您的账户或密码错误:"<<endl;
        int a;
        cout<<"如果需要创建账户请输入1"<<endl;
        cout<<"如果需要重新输入账户和密码请输入2:"<<endl;
        cout<<"如果输入其它什么东西可是什么都不会发生的哦!"<<endl;
        cin>>a;
        system("cls");
        if(a==1)
        zhanhu();
        else if(a==2)
        shurumimajinxindenlu();
    }
    else
    {
        system("cls");
        zhucaidandexuanzhe(zhanhao,zhanshen[zhanhao]);
    }
}

int main()
{
    zhanhu();
    return 0;
}

运行效果如下。

 

 

 

 

 

 

 

 差不多展示点得了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值