图书管理系统实验报告

时间:2024.4.2

      

Project report

                     ——图书管理系统

 

            

课程:数据库系统概念

指导老师:陈岭

组长:方舟行

组员:赵季儒

一:总体功能设计

1)基本功能目标

1、管理员登入;

2、图书入库(单件/批量);【只能由管理员操作】

3、图书查询(对类别, 书名, 出版社, 年份(年份区间), 作者, 价格(区间) 进行查询);

4、借书(显示该借书证所有已借书籍,并且输入书号借书);【只能由管理员操作】

5、还书(显示该借书证所有已借书籍,并且输入书号还书);【只能由管理员操作】

6、借书证管理(增加或删除一个借书证)【只能由管理员操作】

2)拓展功能

1、图书查询时可以选择指定属性排序

2、打开指定的TXT文件进行批量入库

图表详解:

 


3)数据库表结构设计

create table admin (

id  char(10),

pw  char(6),

name varchar(20),

phone char(11)

)

create table book(

bno char(8),

category char(10),

title varchar(40),

press varchar(30),

year int,

author varchar(20),

price decimal(10,2),

total int,

stock int

)

create table card(

cno char(7),

name varchar(10),

department varchar(40),

type char(1) check(type in ('S','T'))

)

create table borrow(

cno char(7),

bno char(8),

borrowdate date,

returndate date,

id char(10)

  )

结构图:

 


4)关键设计思路或方法

概况:

开发环境:VS2012

数据库:SQLserver2000

语言:C++

主要运用:MFC ODBC类

图形界面:MFC,PS等

界面:

 

主要功能界面以标签页的形式集中在主界面上。

主要功能是用MFC 对ODBC API进行封装过的ODBC类来实现。

二:详细设计

 1)登陆模块功能及界面设计

功能:

界面设计图:

2)加入图书模块功能及界面设计

界面设计:

【主界面风格统一为简捷一致,具体使用无边框,轻微透明,浅灰的界面,各模块使用标签页进行切换,如上图,此后不赘述】。

3)加入图书模块功能及界面设计

功能:

界面:

4)借书模块功能及界面设计

5)还书模块功能及界面设计

6)管理借书证模块功能及界面设计

7)总体类结构关系:

三:组内成员分工

组员分工:

方舟行(组长):图形界面设计及实现,主要程序部分实现

赵季儒:数据库结构设计、数据搜集及测试、报告设计与撰写


第二篇:C++大型实验报告--图书管理系统


C/C++语言程序设计

大型实验报告

--图书管理系统

浙江工业大学软件学院

二零零九年五月

目录

第一章 概述

1.1 实验意义

1.2 说明

1.3 实验内容

第二章 简单的LMS功能及设计思路

2.1 功能描述

    2.1.1 读者管理模式功能

    2.1.2 工作人员管理模式功能

    2.1.3 管理员管理模式功能

2.2 基本设计思路

第三章 用户类

3.1 用户类的定义

3.2 用户的登陆

3.3 修改用户信息

3.4 查询图书信息

第四章 读者管理模式

4.1查看个人信息

4.2查找馆藏图书信息

第五章 工作人员管理模式

5.1查询读者信息(个人信息和读者借书情况)

5.2还书

5.3借书

5.4查询图书信息

第六章 管理员管理模式

6.1添加、删除图书信息

    6.1.1 添加图书信息

    6.1.2 删除图书信息

6.2添加、删除用户信息

6.3查询图书信息

第七章 图书类

第八章 建立数据库

8.1 数据储存文件说明

8.2 数据库操作说明

第九章 主程序结构

附:在VC6环境下的测试截图

第一章 概述

1.1 实验意义

本实验通过分析并实现一个简单的系统——以图书管理系统,让学生从一个参与项目开发的角度全新的体验项目开发的全过程。学生在独立完成一个简单的系统的开发的过程中,不但真正的学到程序设计的实战知识,更为重要的是能够体验开发的乐趣并培养程序开发的兴趣。

选择图书管理系统作为实验的目的是因为图书管理系统学生能经常接触到,对其功能有一定的了解,能够在使用中提出自己的一些需求的系统。图书管理系统虽然简单,但是随着需求功能的不断增加,开发的难度也不断增加,不仅能满足初学编程的需求,也能让更高年级的学生通过将学到的知识直接用于该系统的开发而巩固和提高编程水平。

1.2 说明

本实验报告分为三个部分,第一部分为概述,介绍图书管理系统的实验基本内容以及对图书管理系统的功能描述,以及基本设计思路;第二部分为具体的类定义及实现的介绍,是本实验报告的重点部分;第三部分为主程序设计部分,包括对数据库的操作以及主程序登录界面的说明。

1.3 实验内容

开发一个基于DOS界面的图书馆管理系统,通过命令的方式进行借书还书等图书馆需要的功能;

用户界面友好,让非计算机人员通过简短的培训即可使用;

系统的可扩展性良好,可以在此基础上方面的增加其他的功能模块。

第二章 简单的LMS功能及设计思路

2.1 功能描述

图书管理系统(LMS)用于图书馆进行图书的管理,主要的功能包括借书、还书、查找等。不同的使用对象具有不同的权限,包括读者管理、工作人员管理、管理员管理等三种模式。选择登录模式(读者、工作人员、管理员),输入用户名和密码,成功后进行相应的功能模块。

p1

2.1.1 读者管理模式功能

读者可以查找馆藏书目,了解图书馆有哪些书,是否可借。

读者可以查看个人借书情况和修改基本个人信息、修改密码。

2.1.2 工作人员管理模式功能

可以查找馆藏书目,了解图书馆有哪些书,是否可借。

根据读者号查询读者信息,显示该读者基本信息,和借书情况(借了哪里书)。读者信息高级查找可以根据姓名等其他信息进行查找。

借书功能:首先输入读者号,在该状态下依次输入该读者借的书,完成图书的借阅工作。

还书功能:直接输入图书ID号,将该书的信息改为入库,并修改读者的借书记录。

2.1.3 管理员管理模式功能

可以查找馆藏书目,了解图书馆有哪些书,是否可借。

维护图书信息:

添加:进入添加状态,根据提示依次输入图书的基本信息,默认状态下为继续输入,当输入-1回到上一层。

修改:首先进行查找,列出所有符合条件的图书,根据列出的需要选择要修改的图书,如果只有一条记录则直接进入修改。根据提示选择该图书需要修改的字段,并进行修改。选择“完成”回到上一层。

删除:

维护读者信息:

添加、删除、编辑读者信息。

维护人员信息:

添加、删除、编辑工作人员信息。

2.2 基本设计思路

采用面向对象的方式实现图书管理系统,根据不同的使用权限,使用对象分为读者、工作人员和管理员。

2_1

图 2?1 系统主要类结构图

分别设计读者类、工作人员类、管理员类(如上图),用户类为基类实现通用的功能(登录,查询图书信息,修改用户信息)。

用数据库进行数据的保存,需要保存的数据主要包括图书数据、用户数据(包括读者、工作人员、管理员)、借阅索引表。

设置数据操作类,实现所有的数据库操作相关的功能。

设计图书类,显示图书信息,记录、更新借阅信息。

p2

第三章 用户类

3.1 用户类的定义

用户类的公开定义中,包括6个构造函数,重载不同类型的用户构造,登陆函数(userLogin(void))用于用户登陆,图书查询函数(searchBook()),用户密码修改函数(resetPassWord(void)),用户信息修改函数(resetInfo)。另有四个虚函数,分别用于判断用户是否存在(isExisted(void))、从键盘读取用户信息(getFromStdin (void))、将信息存入数据库(addToData(void))以及显示信息(showInfo(void)),用于被不同模式的用户继承。

用户类的保护定义中,包括编号(no)、姓名(name)、密码(passWord)以及用户类型(usertype)四个成员变量。

3.2 用户的登陆

bool User::userLogin()

若登陆成功,返回true,否则返回fasle

判断用户是否存在,若不存在,返回false

否则判断密码是否正确,若错误,返回false

否则返回true

3.3 修改用户信息

bool User::resetPassWord(void)

修改用户密码,修改成功返回true,返回菜单返回false

1.读取新密码和确认密码

2.若新密码和确认密码相同,密码修改成功,返回true

      否则询问重新输入或者返回菜单

              重新输入则再次执行该函数

              返回菜单,返回fasle

bool User::resetInfo(const std::string &_name, const std::string &_passWord, UserType _type)

重新设置用户名,密码,用户类型

3.4 查询图书信息

void User::searchBook()

1.      读取根据何种方式进行查找

2.      读取关键字

3.      调用sqlOpenConnection函数打开数据库

4.      调用getDataRecord函数按照指定方式和关键词在数据库中搜索

5.      若数据不存在,输出提示,返回

否则显示图书信息

6.      关闭数据库

p3

p4

p5

第四章 读者管理模式

4.1查看个人信息

void BookReader::showInfo(void)

虚继承自User类,调用User类的showInfo(void)函数显示该工作人员的序号、姓名、权限,并且显示借书数目。

4.2查找馆藏图书信息

直接调用User类的searchBook()函数

p6

第五章 工作人员管理模式

5.1查询读者信息(个人信息和读者借书情况)

void Worker::showInfo(void)

虚继承自User类,调用User类的showInfo(void)函数显示该工作人员的序号,姓名、权限,并且显示性别和部门。

void Worker::showReaderInfo(BookReader* reader)

    将BookReader类型的指针reader指向showInfo(void)函数,即调用BookReader类的showInfo(void)函数以显示读者借书情况。

5.2还书

bool Worker::returnBook(const string& bno, const string& rno)

5.3借书

bool Worker::borrowBook(const string& bno, const string& rno)

首先调用图书类和读者类的isExisted检查

5.4查询图书信息

直接调用User类的searchBook()函数

p7

p8

第六章 管理员管理模式

6.1添加、删除图书信息

6.1.1添加图书信息

bool LAdmin::AddBook(void)

添加图书函数,添加成功返回true,返回上层返回false

1.新建Book类型的指针。

2.用该指针调用Book类的getFromStdin()函数以及addToData()函数,获取图书信息并添加入数据库。

3.提示成功添加图书,返回true

4.若失败,提示选择重新输入或者返回上层

                  重新输入则再次调用该函数

                  返回上层则返回false。

6.1.2 删除图书信息

bool LAdmin::DeleteBook(Book* aBook, bool warning)

删除图书函数,删除成功返回true,若图书不存在,或者数据库出错,或者操作被取消返回false

1.用aBook指针调用Book类的isExisted()判断图书是否存在。若不存在,返回false

2.用aBook指针调用showInfo()显示图书信息。

3.询问是否要删除该书,若取消,返回false

  否则调用DBManager类的sqlOperate函数对数据库进行删除图书操作,操作成功返回true,失败返回false

6.2添加、删除用户信息

bool LAdmin::AddMember(void)

添加用户函数,添加成功返回true,返回上层返回false

1.新建User类型的指针。

2.选择具体人员类型,并新建对应类型的指针

2.用该指针调用该类类的getFromStdin()函数以及addToData()函数,获取用户信息并添加入数据库。

3.提示成功添加用户,返回true

4.若失败,提示选择重新输入或者返回上层

                  重新输入则再次调用该函数

                  返回上层则返回false。

bool LAdmin::deleteMember(User *aUser, int _type, bool warning)

删除用户函数,删除成功返回true,若用户不存在,或者数据库出错,或者操作被取消返回false

1.用aUser指针调用User类的isExisted()判断用户是否存在。若不存在,返回false

2.用aUser指针调用showInfo()显示用户信息。

3.询问是否要删除该用户,若取消,返回false

  否则调用DBManager类的sqlOperate函数对数据库进行删除用户操作,操作成功返回true,失败返回false

6.3查询图书信息

直接调用User类的searchBook()函数

p9

第七章 图书类

图书类的公开定义中,包括2个构造函数,重载不同类型的图书构造,重设借书数量函数(setNewBorrowNum(const string& newNum))用于设置图书借出数量,更新数据函数(updateData(void))。另有四个函数,同用户类的虚函数一样,分别用于判断图书是否存在(isExisted(void))、从键盘读取图书信息(getFromStdin (void))、将信息存入数据库(addToData(void))以及显示信息(showInfo(void))。

用户类的保护定义中,包括编号(no),书名(name),作者(author),出版社(press),库存量(storenum),借出量(borrownum)等六个成员变量。

#ifndef BOOK_H

#define BOOK_H

#include <iostream>

#include <string>

#include "DBManage.h"

using namespace std;

class Book

{

public:

    Book(void);

    Book(const string& _no);

    bool isExisted(void);

    bool getFromStdin(void);

    bool addToData(void) const;

    void showInfo(void) const;

    string getNo(void) const;

    string getBorrowNum(void) const;

    string getStoreNum(void) const;

    void setNewBorrowNum(const string& newNum);

    bool updateData(void) const;

private:

    string no, name, author, press, storenum, borrownum;

};

#endif

第八章 建立数据库

8.1 数据储存文件说明

8.2 数据库操作说明

读、存、查找、删除数据的函数全部写在DBManage.h和DBManage.cpp文件中。DBManage.h放所有的数据操作函数的声明,在DBManage.cpp文件中放置数据操作函数的实现。

#ifndef DBMANAGE_H

#define DBMANAGE_H

#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")

#include <iostream>

#include <map>

#include <vector>

using namespace std;

class DBManage

{

public:

    static _ConnectionPtr sqlOpenConnection()

    {

       _ConnectionPtr pConnection;

       CoInitialize(NULL);

       pConnection.CreateInstance(__uuidof(Connection));

       try                

       {   

           // 打开本地Access库Database.mdb

           pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database.mdb","","",adModeUnknown);

           return pConnection;

       }

       catch(_com_error e)

       {

           return NULL;

       }

    }

    static bool sqlOperate(const char* sqlCommand)

    {

       _ConnectionPtr pConnection=sqlOpenConnection();

       _CommandPtr pCommand;

       pCommand.CreateInstance(__uuidof(Command));

       pCommand->ActiveConnection = pConnection;// 将库连接赋于它

       try

       {

           pCommand->CommandText = sqlCommand;

           pCommand->Execute(NULL, NULL,adCmdText);

           pConnection->Close();

           return true;

       }

       catch(_com_error e)

       {

           std::cout << "数据库操作失败!   ";

           std::cout << e.ErrorMessage() << std::endl;

           pConnection->Close();

           return false;

       }

       return true;

    }

    static bool getDataRecord(_ConnectionPtr& pConnection, const string& command, string& err, map<string, string>& item, const string* Collect, int n)

    {

       _RecordsetPtr pRecordset;

       pRecordset.CreateInstance(__uuidof(Recordset));

       try

       {   

           pRecordset->Open(command.c_str(),       

              pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针

              adOpenDynamic,

              adLockOptimistic,

              adCmdText);

       }

       catch(_com_error *e)

       {

           err = ((_bstr_t)e->ErrorMessage());

           return false;

       }

       if (pRecordset == NULL)

       {

           err = "*数据为空!*";

           return false;

       }

       try

       {

           if(!pRecordset->BOF)

              pRecordset->MoveFirst();

           else

           {

              err = "*数据为空!*";

              return false;

           }

           _variant_t var;

           for (int i = 0; i < n; i++)

           {

              var = pRecordset->GetCollect(Collect[i].c_str());

              if (var.vt != VT_NULL)

                  item[Collect[i]] = _com_util::ConvertBSTRToString((_bstr_t)var);

              else item[Collect[i]] = " ";

           }

       }

       catch(_com_error *e)

       {

           err = (_bstr_t)e->ErrorMessage();

           return false;

       } 

       pRecordset->Close();

       pRecordset = NULL;

       return true;

    }

    static bool getDataRecord(_ConnectionPtr& pConnection, const string& command, string& err, vector<map<string, string> >& items, const string* Collect, int n)

    {

       _RecordsetPtr pRecordset;

       pRecordset.CreateInstance(__uuidof(Recordset));

       try

       {   

           pRecordset->Open(command.c_str(),      

              pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针

              adOpenDynamic,

              adLockOptimistic,

              adCmdText);

       }

       catch(_com_error *e)

       {

           err = ((_bstr_t)e->ErrorMessage());

           return false;

       }

       if (pRecordset == NULL)

       {

           err = "*数据为空!*";

           return false;

       }

       try

       {

           if(!pRecordset->BOF)

              pRecordset->MoveFirst();

           else

           {

              err = "*数据为空!*";

              return false;

           }

           _variant_t var;

           while(!pRecordset->adoEOF)

           {

              map<string, string> item;

               for (int i = 0; i < n; i++)

              {

                  var = pRecordset->GetCollect(Collect[i].c_str());

                  if (var.vt != VT_NULL)

                     item[Collect[i]] = _com_util::ConvertBSTRToString((_bstr_t)var);

                  else item[Collect[i]] = " ";

              }

              items.push_back(item);

              pRecordset->MoveNext();

           }

       }

       catch(_com_error *e)

       {

           err = (_bstr_t)e->ErrorMessage();

           return false;

       } 

       pRecordset->Close();

       pRecordset = NULL;

       return true;

    }

};

#endif

第九章 主程序结构

#ifndef UERMEDOL_H

#define UERMEDOL_H

#include <iostream>

#include <string>

#include "User.h"

#include "LAdmin.h"

#include "Book.h"

#include "Worker.h"

#include "BookReader.h"

using namespace std;

extern enum Statue{EXIT, OFFLOGIN};

extern inline void fresh();

Statue AdminModel(LAdmin* user);//执行管理员模式并返回下一个操作

Statue ReaderMedol(BookReader* reader);//执行读者模式并返回下一个操作

Statue WorkerMedol(Worker* worker);//执行工作人员模式并返回下一个操作

int LoginModel();

bool Login(User* user);

int LoginModel()

{

LabelStartLogin:

    fresh();

    cout << "欢迎使用图书管理系统" << endl;

    cout << "-----------------------------------------" << endl;

    cout << "请选择登陆模式:" << endl

       << "1) 读者登陆" << endl

       << "2) 管理员登陆" << endl

       << "3) 工作人员登陆" << endl

       << "4) 退出图书管理系统" << endl

       << "请输入选择(1,2,3,4)... ";

    int choice; cin >> choice;

    if (!(choice >= 1 && choice <=4))

    {

       cout << endl << "*您输入的选择有误!*";

       system("pause");

       goto LabelStartLogin;

    }

    return choice;

}

Statue AdminModel(LAdmin* admin)

{

    fresh();

    cout << "欢迎登陆图书管理系统(管理员模式)" << endl

       << "-----------------------------------------" << endl

       << "1) 添加用户" << endl

       << "2) 删除用户" << endl

       << "3) 查询图书" << endl

       << "4) 添加图书" << endl

       << "5) 删除图书" << endl

       << "6) 查看所有图书" << endl

       << "7) 查看所有用户" << endl

       << "8) 注销登录" << endl

       << "9) 退出系统" << endl

       << "请输入选择...";

    int choice; cin >> choice;

    if (choice == 1)//添加用户

    {

LabelAddUser:

       if (admin->AddMember())

       {

           int _choice;

           cout << "您可以1)继续添加2)返回... "; cin >> _choice;

           if (_choice == 1) goto LabelAddUser;

           else AdminModel(admin);

       }

    }

    else if (choice == 2)//删除用户

    {

       int _choice;

       string no;

       User* todelete = NULL;

LabelDeleteUser:

       cout << "请输入要删除的用户类型(1.管理员2.读者3.工作人员)..."; cin >> _choice;

       if (!(_choice >= 1 && _choice <= 3))

       {

           cout << "您的输入有误!" << endl;

           system("pause");

           goto LabelDeleteUser;

       }

       else

       {

           cout << "请输入要删除的用户序号... "; cin >> no;

           if (_choice == 1) todelete = new LAdmin(no);

           else if (_choice == 2) todelete = new BookReader(no);

           else if (_choice == 3) todelete = new Worker(no);

       }

       admin->deleteMember(todelete, todelete->getType());

       if (todelete != NULL) delete todelete;

       cout << "您可以1)继续删除2)返回... ";

       cin >> _choice;

       if (_choice == 1) goto LabelDeleteUser;

       else AdminModel(admin);

    }

    else if (choice == 3)

    {

       string bno;

LabelSearchBook:

       admin->searchBook();

       int _choice;

       cout << "您可以1)继续查询2)返回... "; cin >> _choice;

       if (_choice == 1) goto LabelSearchBook;

       else AdminModel(admin);

    }

    else if (choice ==4)

    {

LabelAddBook:

       admin->AddBook();

       cout << "您可以1)继续添加2)返回... ";

       int _choice;

       cin >> _choice;

       if (_choice == 1) goto LabelAddBook;

       else AdminModel(admin);

    }

    else if (choice == 5)//删除图书

    {

       string no;

LabelDeleteBook:

       cout << "请输入要删除的图书序号... "; cin >> no;

       admin->DeleteBook(&Book(no));

       cout << "您可以1)继续删除2)返回... ";

       int _choice;

       cin >> _choice;

       if (_choice == 1) goto LabelDeleteBook;

       else AdminModel(admin);

    }

    else if (choice == 6)//查询所有图书

    {

       admin->showAllBooks();

    }

    else if (choice == 7)//查询所有用户

    {

       admin->showAllMembers();

    }

    else if (choice == 8)//注销用户

    {

       return OFFLOGIN;

    }

    else if (choice == 9) return EXIT;//退出系统系统

    else//错误选择重新开始

    {

       cout << "*您输入的选择有误!*" << endl;

       system("pause");

       AdminModel(admin);

    }

    cout << endl << "1)返回菜单2)注销登录3)退出系统请选择... "; cin >> choice;

    switch(choice)

    {

    case 2:return OFFLOGIN;break;

    case 3:return EXIT;break;

    default:AdminModel(admin);break;

    }

    return OFFLOGIN;

}

Statue ReaderMedol(BookReader* reader)

{

    fresh();

    cout << "欢迎登陆图书管理系统(读者模式)" << endl

       << "-----------------------------------------" << endl

       << "1) 查询图书" << endl

       << "2) 借阅信息" << endl

       << "3) 修改密码" << endl

       << "4) 注销登录" << endl

       << "5) 退出系统" << endl

       << "请输入选择...";

    int choice; cin >> choice;

    if (choice == 1)//查询图书

    {

       int _choice;

LabelSearchBook:

       reader->searchBook();

       cout << "您可以1)继续查询2)返回... "; cin >> _choice;

       if (_choice == 1) goto LabelSearchBook;

       else ReaderMedol(reader);

    }

    else if (choice == 2)//显示信息

    {

       reader->showInfo();

       system("pause");

       ReaderMedol(reader);

    }

    else if (choice == 3)//修改密码

    {

LabelRePassWord:

       if(reader->resetPassWord())

       {

           system("pause");

           ReaderMedol(reader);

       }

       else

       {

           int _choice;

           cout << "您可以1)重试2)返回... "; cin >> _choice;

           if (_choice == 1) goto LabelRePassWord;

           else ReaderMedol(reader);

       }

    }

    else if (choice == 4) return OFFLOGIN;

    else if (choice == 5) return EXIT;

    else ReaderMedol(reader);

    return OFFLOGIN;

}

Statue WorkerMedol(Worker* worker)

{

    fresh();

    cout << "欢迎登陆图书管理系统(工作人员模式)" << endl

       << "-----------------------------------------" << endl

       << "1) 查询图书" << endl

       << "2) 查询读者" << endl

       << "3) 借书模式" << endl

       << "4) 还书模式" << endl

       << "5) 注销登录" << endl

       << "6) 退出系统" << endl

       << "请输入选择...";

    int choice; cin >> choice;

    if (choice == 1)//查询图书

    {

       int _choice;

LabelSearchBook:

       worker->searchBook();

       cout << "您可以1)继续查询2)返回... "; cin >> _choice;

       if (_choice == 1) goto LabelSearchBook;

       else WorkerMedol(worker);

    }

    else if (choice == 2)//查询读者

    {

       string rno;

LabelSearchReader:

       cout << "请输入您要查询的读者序号... ";

       cin >> rno;

       BookReader* reader = new BookReader(rno);

       if (!reader->isExisted())

       {

           delete reader;

           cout << "*您所查询的读者不存在!*" << endl << endl;

           int _choice;

           cout << "您可以1)继续查询2)返回... "; cin >> _choice;

           if (_choice == 1) goto LabelSearchReader;

           else WorkerMedol(worker);

       }

       else

       {

           worker->showReaderInfo(reader);

           int _choice;

           delete reader;

           cout << "您可以1)继续查询2)返回... "; cin >> _choice;

           if (_choice == 1) goto LabelSearchReader;

           else WorkerMedol(worker);

       }

    }

    else if (choice == 3)//借书系统

    {

       string rno, bno;

LabelBorrowBook:

       cout << "请输入要借书的读者ID:"; cin >> rno;

       cout << "请输入要借阅的图书ID:"; cin >> bno;

       if (worker->borrowBook(bno, rno)) cout << "借书成功!" << endl;

       int _choice;

       cout << "您可以1)继续借书2)返回... "; cin >> _choice;

       if (_choice == 1)

       {

           goto LabelBorrowBook;

       }

       else WorkerMedol(worker);

    }

    else if (choice == 4)//还书系统

    {

       string rno, bno;

LabelReturnBook:

       cout << "请输入要还书的读者ID:"; cin >> rno;

       cout << "请输入要归还的图书ID:"; cin >> bno;

       if (worker->returnBook(bno, rno)) cout << "还书成功!" << endl;

       int _choice;

       cout << "您可以1)继续还书2)返回... "; cin >> _choice;

       if (_choice == 1) goto LabelReturnBook;

       else WorkerMedol(worker);

    }

    else if (choice == 5) return OFFLOGIN;//注销登录

    else if (choice == 6) return EXIT;

    else

    {

       cout << "*您输入的选择有误!*" << endl;

       system("pause");

       WorkerMedol(worker);

    }

    return OFFLOGIN;

}

void fresh()

{

    char s[] = "               ";

    system("cls");

    cout << s << "***************************************************" << endl;

    cout << s << "**************   图书管理管理系统  ***************" << endl;

    cout << s << "*************   版权所有,盗版不究  **************" << endl;

    cout << s << "***********   作者:陈雄章汝赵俊辉  ************" << endl;

    cout << s << "***************************************************" << endl;

    cout << endl << endl << endl;

}

#endif

更多相关推荐:
图书管理系统 实验报告

需求分析本图书管理系统就是将传统图书馆业务的手工操作转变成由计算机馆理即图书馆的图书期刊音像资料等各种载体文献的采编典藏流通检索及常规业务管理等工作利用计算机技术使得图书馆的管理更智能更有效的进行最终的目的以方...

(图书管理系统)学生实验报告

学生实验报告实验课名称软件工程理论方法与实践实验项目名称图书管理系统专业名称软件工程班学级240600804号2406080426学生姓名宋辉教师姓名杜瑾年月实验日期20xx年5月14日实验室名称WM2502一...

图书管理系统实验报告+源代码

图书信息管理系统课程设计图书信息管理系统设计人员林俊柱开发环境eclipse数据库sqlserver20xx说明数据库里面的用户名为sa密码为1111登录程序所用的用户名为ljz密码为0000当然也可以使用注册...

图书管理系统实训报告

淮南联合大学计算机系课程实训报告书实训科目:图书管理系统专业班级:11级计算机应用技术学号:**姓名:**实训时间:20**-12-18一、课程实训目的《JAVAWeb开发》课程实训是计算机应用技术专业集中实践…

图书管理系统课程设计报告

管理信息系统实习报告专业班级学生姓名指导教师时间成绩评语王桃群20xx32320xx313一课程设计题目图书管理系统二系统需求1系统的准备操作系统Windowsxp数据库系统SQLServer20xx或SQLS...

c语言图书管理系统课程设计报告

沈航北方科技学院课程设计说明书课程名称教学部专业数控班级B042111学号B04211123学生姓名指导教师赵小磊20xx年6月链表实现图书信息操作田文目录摘要31绪论32系统分析321功能需求322数据需求4...

图书管理系统数据库课程设计实验报告

西安邮电大学计算机学院数据库课程设计报告题目图书管理系统专业名称班级软件1205学生姓名学号8位04123139指导教师樊珊起止时间20xx年06月02日20xx年06月13日目录第一章需求分析1学生用户端2教...

图书管理系统实验报告

实验报告金超逸11300240035一实验题目图书销售管理系统的设计与实现二开发环境操作系统Windows7家庭普通版数据库管理软件MicrosoftSQLServer20xxSQLServerManageme...

学校图书管理系统课程设计报告正文

目录第1章绪论2第2章需求分析2第3章总体设计3第4章数据库设计441概念结构设计442逻辑结构与物理结构设计5第5章详细设计7第6章编码8第7章测试1471测试1472发现错误和解决方法15第8章设计总结16...

C++大型实验报告--图书管理系统

CC语言程序设计大型实验报告图书管理系统CC语言程序设计第一章概述大型实验报告图书管理系统浙江工业大学软件学院二零零九年五月目录1CC语言程序设计大型实验报告图书管理系统11实验意义12说明13实验内容第二章简...

c++图书管理系统实验报告+源代码

综合实践报告1设计任务11设计目的运用所学知识完成图书馆管理系统通过实践加强对所学知识的理解和巩固12设计内容建立图书馆管理系统用户分为图书管理人员读者管理人员可以增加删除查看图书读者读者只能查看自身信息和借还...

c++图书信息管理系统课程设计报告

C语言程序课程设计报告课程设计题目图书信息管理系统学号20xx103120xx1姓名曾智煌专业电气工程及其自动化班级13电气1班20xx年12月12日图书管理系统一设计目的图书馆是目前生活中除了网络外的另一个获...

图书管理系统实验报告(27篇)