⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tsglxt.txt

📁 一个用C语言的图书管理系统源代码。欢迎朋友们一起交流。
💻 TXT
📖 第 1 页 / 共 2 页
字号:
                           程序说明书
                        一. 各模块的功能:
                        readtxt(),读读者文件writetxt(),写读者文件addreader(reader s)  
                        ,添加读者delreader(int number),删除读者searchreader(int 
                        number),查找读者readerdata()  
                        ,读者数据管理readbtxt(),读图书文件writebtxt(),写图书文件addbook(libook 
                        s),添加图书delbook(int number),删除图书searchbook(int 
                        number),查找图书bookdata(),图书数据管理borbook(),读者借书retbook(),读者还书main()主函数
                        二. 程序流程图:
                        void main() :
                        三. 用户手册:1,使用程序前先对图书库,读者库进行初始化,然后才能进行相应的操作2,本程序又一定的纠错功能
                               ①调用子函数对功能进行相应的选择的时候,如果选择的端子不正确,则提示错误
                               ②对添加的读者函数操作的时候如果读者库已经满了,读者申请的编号已经存在的情况则提示错误
                        ③对删除读者函数操作的时候,如果输入的读者编号不存在则提示错误
                        ④对查找读者函数操作的时候,如果输入的读者编号不存在的时候则提示错误
                        ⑤对新书入库函数操作的时候,如果书库已经满或者申请的书编号已经存在,则提示错误
                        ⑥对删除的图书函数进行操作的时候,如果要删除的图书编号不存在,则提示出错
                        ⑦对查找函数操作的时候,如果要查找的图书函数不存在,则提示出错
                        ⑧对借书函数进行操作时,如果读者编号不存在,不能在借书,所要借的书已经借出,或者要借的书不存在的时候,则提示出错
                        ⑨对还书函数操作的时候,如果读者编号不存在,所还图书不为图书馆所有时,则提示出错。
                        四. 原程序
                        #include "iostream.h"
                        #include "iomanip.h"
                        #include "string.h"
                        #include "fstream.h"
                        #define maxbor 3
                        #define maxreader 100
                        #define maxbook 400
                        struct reader      //定义读者结构体
                        {
                        int number;
                        char name[10];
                        int borbook[maxbor];
                        };
                        struct libook      //定义图书结构体
                        {
                        int flag;
                        int number;
                        char name[20];
                        char writer[20];
                        char print[20];
                        float price;
                        };
                        int topbook;
                        int topreader;
                        reader read[maxreader];
                        libook book[maxbook];
                        void readtxt()      //读入读者数据
                        {
                        reader p;
                        topreader=-1;
                        fstream file("reader.txt",ios::in);
                        while(1)
                        {
                        file.read((char*)&p,sizeof(p));
                        if(!file)break;
                        topreader++;
                        read[topreader]=p;
                        }
                        file.close();
                        }
                        void writetxt()      //写入读者数据
                        {
                        fstream file("reader.txt",ios::out);
                        for(int i=0;i<=topreader;i++)
                        file.write((char*)&read[i],sizeof(read[i]));
                        file.close();
                        }
                        void addreader(reader s)      //新增读者
                        {
                        readtxt();
                        if(topreader>=maxreader)
                        {
                        cout<<"读者库已经满!"<<endl;
                        return;
                        }
                        for(int i=0;i<=topreader;i++)
                        if(read[i].number==s.number)
                        {
                        cout<<"此编号已经存在,请重新输入信息!"<<endl;
                        return;
                        }
                        topreader++;
                        read[topreader].number=s.number;
                        strcpy(read[topreader].name,s.name);
                        for(i=0;i<maxbor;i++)
                        read[topreader].borbook[i]=0;
                        writetxt();
                        }
                        void  delreader(int number)       //删除读者
                        {
                        readtxt();
                        for(int i=0;i<topreader;i++)
                        {
                        if(read[i].number==number)
                        {
                        for(int m=0;m<maxbor;m++)
                        if(read[i].borbook[m]!=0)
                        {
                        cout<<"此读者还有图书没有还,等还后在申请删除此读者"<<endl;
                        return;
                        }
                        for(int j=i;j<topreader;j++)
                        {
                        read[j].number=read[j+1].number;
                        strcpy(read[j].name,read[j+1].name);
                        for(int k=0;k<maxbor;k++)
                        read[j].borbook[k]=read[j+1].borbook[k];
                        }
                        topreader--;
                        writetxt();
                        return;
                        }
                        }
                        if(read[topreader].number=number)
                        {
                        topreader--;
                        writetxt();
                        return;
                        }
                        cout<<"查无次人!"<<endl;
                        return;
                        }
                        void searchreader(int number)      //查找读者
                        {
                        readtxt();
                        for(int i=0;i<=topreader;i++)
                                if(read[i].number==number)
                        {
                        cout<<"编号:"<<read[i].number<<endl;
                        cout<<"姓名:"<<read[i].name<<endl;
                        cout<<"所借的书的编号";
                        if(read[i].borbook[0]==0)
                        {
                        cout<<":  无借书"<<endl;
                        return;
                        }
                        else
                        {
                        for(int 
                        j=0;read[i].borbook[j]!=0&&j<maxbor;j++)cout<<read[i].borbook[j]<<" 
                        ";
                        return;
                        }
                        }
                                cout<<"查无此人"<<endl;
                        }
                        void readerdata()      //读者数据维护
                        {
                        int choice, number;
                        reader s;
                        while(1)
                        {
                        cout<<"读者维护   1 :新增    2:删除    3:查找    0:退出"<<endl;
                        cin>>choice;
                        switch(choice)
                        {
                        case 0: return;
                        case 1: cout<<"输入读者编号:";
                        cin>>s.number;
                        cout<<"输入读者姓名:";
                        cin>>s.name;
                        addreader(s);
                        break;
                        case 2: cout<<"输入删除读者的编号:";
                        cin>>number;
                        delreader(number);
                        break;
                        case 3: cout<<"请出入要查找的读者的编号:";
                        cin>>number;
                        searchreader(number);
                        break;
                        default: cout<<"输入错误,请重新输入"<<endl;
                        break;
                        }
                        }
                        }
                        void readbtxt()      //读入图书数据
                        {
                        libook p;
                        topbook=-1;
                        fstream file("book.txt",ios::in);
                        while(1)
                        {
                        file.read((char*)&p,sizeof(p));
                        if(!file)break;
                        topbook++;
                        book[topbook]=p;
                        }
                        file.close();
                        }
                        void writebtxt()      //写入图书数据
                        {
                        fstream file("book.txt",ios::out);
                        for(int i=0;i<=topbook;i++)
                        file.write((char*)&book[i],sizeof(book[i]));
                        file.close();
                        }
                        void addbook(libook s)      //新增图书
                        {
                        readbtxt();
                        if(topbook>=maxbook)
                        {
                        cout<<"书库已经满"<<endl;
                        return;

                        }
                        for(int i=0;i<=topbook;i++)
                        if(book[i].number==s.number)
                        {
                        cout<<"此编号已经存在,请重新输入信息"<<endl;
                        return;
                        }
                        topbook++;
                        book[topbook].number=s.number;
                        strcpy(book[topbook].name,s.name);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -