图书管理系统

本文介绍了一个图书馆管理系统的实现细节,包括图书和学生的数据结构定义、图书的增删改查功能及排序算法等。系统通过文件存储数据,并提供管理员操作界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>
#include<fstream>
#include<stdio.h>
#include<conio.h>
#include<string>
#include<vector>
#include<iomanip>
#include<algorithm>

using namespace std;
struct book
{
    int idnum;//图书检索号
    int BorrowCount;//图书借阅量
    string name;//书名
    string kind;//图书种类;
    double price;//图书价格
    int sum;//图书总库存量
    int nowsum;//图书现库存量
    int appointment;
    string author;//图书作者
    bool ok;//是否可借
    string borrowdate;//图书最近一次借出时间
    string returndate;//图书馆最近一次归还时间
    string room;//馆藏地
};
struct student
{
    int  id;//读者编号
    string name;//读者姓名
    int borrowsum;//你已经借阅多少本书
    int number;//你现在还有多少本书没有还
    string borrowday;//上次借阅时间
    int b[10];//你所借书的编号,最多10本
};
bool cmpByidnum(book a,book b)
{
    return a.idnum<b.idnum;
}
bool cmpByCount(book a,book b)
{
    return a.BorrowCount>b.BorrowCount;
}
bool cmpByBorrowsum(student a,student b)
{
    return a.borrowsum>b.borrowsum;
}
bool cmpByid(student a,student b)
{
    return a.id<b.id;
}
class library
{
private:
    int borrownum;//每月借出书数量
    int returnnum;//每月还书数量
    vector<book>data;
    vector<student>data1;
    vector<int>betolli;//预约书到馆

public:
    library();
    void ShowAllBook();
    int SearchBookPosWithid(int id);
    void AddBook(book NewBook);
    void Save();
    void DeleteBook(string name,string author);
    int SearchBookPosWithAB(string thename,string theauthor);
    void printbook(book a);
    void Borrowbook(string bookname,string bookauthor);
    void SortBook(int ca);
    void SortStudent(int id);


};
library::library()
{
    borrownum=0;
    returnnum=0;
    int AllBook,AllStudent;
    ifstream fin("book.txt");
    if(fin)
    {
        fin>>AllBook;
        for(int i=0;i<AllBook;i++)
        {
            book tem;
            fin>>tem.idnum>>tem.name>>tem.author>>tem.price>>tem.kind>>tem.room>>tem.sum>>tem.nowsum>>tem.BorrowCount>>tem.ok>>tem.appointment>>tem.borrowdate>>tem.returndate;
            data.push_back(tem);
        }
        fin.close();
    }
    ifstream tfin("student.txt");
    if(tfin)
    {
        tfin>>AllStudent;
        for(int i=0;i<AllStudent;i++)
        {
            student tem;
            tfin>>tem.id>>tem.name>>tem.borrowsum>>tem.number>>tem.borrowday;
            for(int j=0;j<10;j++)
            {
                tfin>>tem.b[j];

            }
            data1.push_back(tem);
        }
        tfin.close();
    }
}
void library::printbook(book a)
{
    cout<<setw(8)<<a.idnum;
    cout<<setw(14)<<a.name;
    cout<<setw(14)<<a.author;
    cout<<setw(14)<<fixed<<setprecision(2)<<a.price;
    cout<<setw(14)<<a.kind;
    cout<<setw(14)<<a.room;
    cout<<setw(14)<<a.sum;
    cout<<setw(14)<<a.nowsum;
    cout<<setw(14)<<a.BorrowCount;
    cout<<setw(10)<<(a.ok==0?"不可借":"可借");
    cout<<setw(14)<<a.appointment;
    cout<<setw(14)<<a.borrowdate;
    cout<<setw(14)<<a.returndate<<endl;
}
void library::ShowAllBook()
{
     cout<<setw(14)<<"检索号"<<setw(14)<<"书名"<<setw(14)<<"作者"<<setw(14)<<"价格"<<setw(14)<<"种类"<<setw(14)<<"馆藏地"<<setw(14)<<"总库存量"<<setw(14)<<"在馆量"<<setw(14)<<"借阅量"<<setw(10)<<"是否可借"<<setw(14)<<"预约量";
    cout<<setw(14)<<"借出时间"<<setw(14)<<"归还时间"<<endl;
    for(int i=0;i<data.size();++i)
    {
        printbook(data[i]);
    }
}
int library::SearchBookPosWithid(int id)
{
    for(int i=0;i<data.size();i++)
    {
        if(data[i].idnum==id)
        {
            return i;
        }
    }
    return -1;
}
void library::AddBook(book NewBook)
{
    data.push_back(NewBook);
}
void library::Save()
{
    ofstream qq("book.txt");
    if(qq)
    {
        qq<<data.size()<<endl;
        for(int i=0;i<data.size();i++)
        {
            qq<<data[i].idnum<<" "<<data[i].name<<data[i].author<<" "<<data[i].price<<" "<<data[i].kind<<" "<<data[i].room<<" "<<data[i].nowsum<<" "<<data[i].BorrowCount<<endl;
        }
        qq.close();
    }
}
int library::SearchBookPosWithAB(string thename,string theauthor)
{
    for(int i=0;i<data.size();++i)
    {
        if(data[i].author==theauthor&&data[i].name==thename)
        {
            printbook(data[i]);
            return i;
        }
        cout<<"查无此书";
        return -1;
    }

}
void library::DeleteBook(string name,string author)
{
    int Pos;
    Pos=SearchBookPosWithAB(name,author);
    if(Pos!=-1)
    {
        data.erase(data.begin()+Pos);
        return;
    }
    else
        cout<<"没有找到此书"<<endl;


}
void library::Borrowbook(string bookname,string bookauthor)
{
    string BorrowDate;
    string BackDate;
    char c;
    int flag=0;
}
void library::SortBook(int ca)
{
    if(ca==0)//按照借阅量排序
    {
        sort(data.begin(),data.end(),cmpByCount);
    }
    if(ca==1)//按照检索号排序
    {
        sort(data.begin(),data.end(),cmpByidnum);
    }
}
void library::SortStudent(int id)
{
    if(id==0)//按照借阅量排序
    {
        sort(data1.begin(),data1.end(),cmpByBorrowsum);
    }
    else
    {
        sort(data1.begin(),data1.end(),cmpByid);
    }
}
int main()
{
    cout.setf(ios::left);
    library mybook;
    char mm[6];
    cout<<"欢迎使用图书馆登录系统"<<endl;
    cout<<"请选择你的登录选项:\n";
    cout<<"1.管理员登录"<<endl;
    cout<<"2.学生登录"<<endl;
    int cho,start, kk=1;
    cin>>start;
    switch(start)
        //***************************管理员情况呀呀呀呀呀呀呀呀呀呀呀***************************************************·
        case 1:
    {
        char password[]="425425";
        cout<<"请输入管理员口令:";
            do
            {
                kk=1;
                for(int i=0;i<6;i++)
                {
                    mm[i]=getch();
                    cout<<"*";
                }
                cout<<endl;
                for(int i=0;i<6;i++)
                {
                    if(mm[i]!=password[i])
                    {
                        cout<<"请输入正确密码!"<<endl;
                        kk=0;
                        break;
                    }
                }

            }while(!kk);
            do
            {
                cin.clear();
                cin.sync();
                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;
                cout<<"                  10.退出"<<endl;
                cout<<"----------------------------------------------------------------------------------------"<<endl;
                cout<<"                  请选择功能,输入指令 "<<endl;
                cin>>cho;
                switch(cho)
                {
                case 1:
                    {
                        int cho2;
                        do
                        {
                            mybook.ShowAllBook();
                            cout<<"---------------------------------------------------------"<<endl;
                            cout<<"0.按照借阅量排序, 2.按照索引号排序, 3.退出"<<endl;
                            cin>>cho2;
                            switch(cho2);
                            {
                            case 0:
                                mybook.SortBook(0);
                                break;
                            case 2:
                                mybook.SortBook(1);
                                break;
                            }

                        }
                        while(cho2<3);
                        break;
                    }
                /*case 2:
                    {
                        cout<<
                    }*/
                case 3://**********增加图书***(*******************************************************
                    {
                        book temp;
                        cout<<"请输入检索号:";
                        cin>>temp.idnum;
                        while(mybook.SearchBookPosWithid(temp.idnum)>-1)
                        {
                            cout<<"检索号重复了"<<endl;
                        }
                        cin.clear();
                        cin.sync();
                        cout<<"书名:";
                        cin>>temp.name;
                        cout<<"作者:";
                        cin>>temp.author;
                        cout<<"价格:";
                        cin>>temp.price;
                        cout<<"种类:";
                        cin>>temp.kind;
                        cout<<"馆藏地址:";
                        cin>>temp.room;
                        cout<<"数量:";
                        cin>>temp.sum;
                        temp.nowsum=temp.sum;
                        temp.BorrowCount=0;
                        temp.ok=true;
                        temp.appointment=0;
                        temp.borrowdate="0000.00.00";
                        temp.returndate="0000.00.00";
                        mybook.AddBook(temp);
                        mybook.Save();
                        cout<<"信息保存成功"<<endl;
                        break;

                    }
                case 4://删除图书*******************************************************************************************
                    {
                        string bookname,bookauthor;
                        cout<<"请输入你想删除的书的书名和作者名"<<endl;
                        cin>>bookname>>bookauthor;
                        mybook.DeleteBook(bookname,bookauthor);
                        mybook.Save();
                        break;
                    }
                case 5://借阅图书**********************************************************
                    {
                        string bookname,bookauthor;
                        cout<<"请输入你要借阅图书的书名和作者名"<<endl;
                        cin>>bookname>>bookauthor;
                        mybook.Borrowbook(bookname,bookauthor);
                    /*  mybook.Save();*/
                        break;
                    }
                /*case 6:
                case 7:
                case 8:
                case 9:*/
                }



            }while(cho<10);
    }
    /*  case 2:*/

    return 0;


}
图 书 馆 管 理 系 统摘  要随着新世纪的到来,科学技术的突飞猛进,知识经济的日益发展,许多图书管理系统已经慢慢走向了老化。本系统正是针对这一现象设计了适应学校管理的图书管理系统。本系统使用了Visual Basic6.0开发工具,结合ACCESS数据库,VB的coolbar,toolbar控件,tabstrip控件,VB的DAO数据访问对象等来实现数据库的操作。图书管理系统主要对图书馆管理日常工作中遇到的实际问题,例如图书信息、读者的信息、管理员信息、借阅者信息进行管理,能够实现以下任务:1.管理员管理操作2.借还图书的操作3.了解读者的信息4.了解书籍的信息关键词:Visual Basic6.0 ACCESS数据库 DAO数据访问对象 目 录摘  要 I第1章 概 述 11.1 开发背景 11.2 系统的功能 11.3本文所做的工作 2第2章 开发工具及其相关技术 32.1 开发工具 32.1.1 VB的介绍 32.1.2 VB的特点 32.2 数据库基础与Access的应用 52.2.1.数据库的概念和术语 52.2.2. Microsoft Access简介 5第3章 系统分析 73.1 确定系统目标 73.2系统需求分析 73.3系统功能分析 93.3.1功能分析 93.3.2功能分析图 93.4与其他系统的关系 10第4章 图书借阅信息管理模块的实现 114.1 “借书信息”窗体的实现 114.2 ““借书信息”窗体的加载 134.3“借书信息”窗体的卸载 134.4“借书信息管理”窗体功能的实现 13第5章 系统调试 165.1系统的测试 16第6章 使用说明 176.1系统的运行 176.1.1 系统的安装 176.1.2 系统的登陆 17总 结 18参 考 文 献 19附录A 代码 20致  谢 24 第1章 概 述1.1 开发背景当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。一个现代化的图书馆在正常运营中总是面对大量的读者信息,书籍信息以及两者相互作用产生的借书信息,还书信息。面对图书馆数以万几计的图书,纷繁复杂的读者信息,频繁更替的借还书信息,传统的直接方法不但管理出现漏洞,造成损失。因此有一个智能化、系统化、信息化的图书管理系统十分重要的。充分利用计算机的功能实现对读者管理、书籍管理,借阅管理等自动化控制,将会使图书馆的工作大大减弱。方便友好的图形界面、简便的操作、完善的数据库管理。将会使得图书馆系统极大限度的应用于现代化图书管理中。图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。1.2 系统的功能校园图书馆系统,是图书管理员的最佳助手。其功能如下:1. 方便学生和老师借书、还书、查找、导出、统计等操作。2. 可以自定义图书类别,读者类别,方便添加图书、管理图书、添加读者、管理读者。3. 提供完善的借书和还书操作,拥有完全独立的数据库系统,使图书室的数据安全得到了保障,数据管理为图书管理员提供:图书管理,读者管理。4.数据查询为您提供:借阅情况,书库查询,读者查询。5. 还又就是本具有安全的数据库备份方案,简单易用。1.3本文所做的工作第一章 主要介绍的是图书管理系统开发的背景,以及图书管理系统的重要功能。第二章 介绍的是开发的工具(VB),VB的特点 ,VB的介绍。利用VB开发的优势。以及运用到的SQL数据库。简单的介绍了一下数据库。第三章 图书管理系统的总体设计,划出了系统的功能层次图。在设计图书管理系统钱,所要做的基本工作。第四章 本人所完成的“借阅信息管理模块”。功能是如何实现的 。在这一章里,有窗体的设计,窗体功能的实现。这一章也是本问的重点。第五章 系统调试第六章 使用说明。
1引言 随着计算机技术的不断应用和提高,计算机已经深入到社会生活的各个角落。而中小型租、借书机构仍采用手工管理图书的方法,不仅效率低、易出错、手续繁琐,而且耗费大量的人力。为了满足其管理人员对图书馆书籍,读者资料,借还书等进行高效的管理,在工作人员具备一定的计算机操作能力的前提下,此图书管理系统软件力求提高其管理效率。 1.1编写目的 本文档的编写是为了完善图书管理系统软件的开发途径和应用方法。以求在最短的时间高效的开发图书管理系统。 1.2背景 本项目的名称:图书管理系统开发软件。 本项目的任务提出者及开发者是图书管理系统软件开发小组,用户是中小型租、借书机构。 本产品是针对电脑管理图书的需求设计的,可以完成读者登记、购入新书、读者借还书、等主要功能。 1.3定义 开发(develop):不是单纯指开发活动,还包括维护活动。 项目 (project):该词指的是向顾客或最终用户交付一个或多个产品的收管理的相关资源的集合。这个资源集合有着明确的始点和终点,并且一般是按照某项计划运行。这种计划通常会形成文件,并且说明要交付或实现的产品、所用的资源和经费、要做的工作和工作进度,一个项目可能有若干项目组成。 项目开发计划(project development plan):是一种把项目一定一过程与项目如何推进连接起来的方案。
I 摘要 随着计算机的普及和网络的出现,对信息的需求日益增加,图书馆业务受到 了强烈的冲击,传统的手工管理方式已不能适应现在的信息化社会。如何利用现 有的科学技术条件提高图书信息的管理效率是我们当下要考虑的问题。图书信息 管理系统是典型的信息管理系统,其开发主要包括前端应用程序的设计和后台数 据库的建立及维护两方面。对于前者,要求应用程序功能完备,易于使用;而对于 后者,则要求数据库具有一致性、完整性、安全性等特点。 本课题的研究方法是采取实地考察,调查本市各高校图书馆和市图书馆的图 书管理系统,同时结合大量的参考资料。在图书信息管理系统中,因为涉及内容 比较多,所以在初步的数据库设计中会存在着遗漏的地方,对于这种问题主要通 过查看参考书来解决问题。另外一个存在问题比较多的地方是数据库的实现,比 如编程,对于这个问题只能通过多练习一些简单的编程,同时积极地利用图书馆 和网络资源,多查阅一些相关资料,多和老师、同学交流讨论。 本文对系统的开发工具Delphi7.0及数据库开发语言MS SQL Server2000、SQL 语言原理等知识进行深入的探讨之后,主要阐述了图书信息管理系统的开发背景 和发展趋势、需求分析、功能模块划分、数据库设计、各功能模块的实现方法及 过程等,并对所开发系统中的用户信息和图书信息的添加、删除、修改、查询等 功能界面的设计与实现作了详细阐述。本系统能够满足基本图书信息管理的需求, 保证图书管理的安全性。 但是该系统还有许多不尽人意的地方,比如用户界面设计不够美观,系统实 现的功能安排也不够合理。系统的统计设计也只有单一时间的统计等,这些都有 待改进。从系统维护与运行上讲,该系统不能在线对功能进行升级,只适用于单 机运行。 图书信息管理系统的开发是一项细腻而又复杂的工作,所以它要求设计者要 有总体规划的能力,还要有百倍的耐心去做,在设计方面一点都不能马虎。图书 信息管理系统的发展趋势就是从单机版向网络版发展,逐步进入数字化管理。 关键词:图书信息管理系统,Delphi7.0开发工具,数据库
题目 2 “图书管理系统设计” 1、问题描述 定义图书类,属性有:书名、出版社、ISBN 号、作者、库存量、价格等信息和相关的 对属性做操作的行为。 主要完成对图书的销售、统计和图书的简单管理。 2、功能要求 (1)销售功能。购买书籍时,输入相应的 ISBN 号,并在书库中查找该书的相关信息。 如果有库存量,输入购买的册数,进行相应计算。如果库存量不够,给出提示信息,结束购 买。(2)图书简单管理功能。 添加功能:主要完成图书信息的添加,要求 ISBN 号唯一。当添加了重复的编号时,则 提示数据添加重复并取消添加。 查询功能:可按书名、ISBN 号、作者、出版社进行查询。若存在相应信息,输出所查 询的信息,若不存在该记录,则提示“该标题不存在!”。 修改功能:可根据查询结果对相应的记录进行修改,修改时注意 ISBN 号的唯一性。 删除功能:主要完成图书信息的删除。输入要删除的 ISBN 号,根据编号删除该物品的 记录,如果该编号不在物品库中,则提示“该编号不存在”。 (3)统计功能。 输出当前书库中所有图书的总数及详细信息;可按书的价格、库存量、作者、出版社进 行统计,输出统计信息时,要按从大到小进行排序。 (7)图书存盘:将当前程序中的图书信息存入文件中。 (8)读出信息:从文件中将图书信息读入程序。 3、问题的解决方案 根据系统功能要求,可以将问题解决分为以下步骤: (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计; (2)分析系统中的各个实体及它们之间的关系; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述; (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试; (8)完成系统总结报告。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值