图书管理系统实现与开发

更新时间:2023-12-21 20:39:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

图书管理系统是典型的信息管理系统(MIS)的实现与开发

摘 要

图书管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。采用C++作为开发工具,通过对C++进行深入的学习和应用,主要完成利用图书管理系统对图书记录进行统一管理,包括新增图书记录,更改图书记录,删除图书记录等功能,实现图书管理工作的系统化,规范化和自动化,为图书管理提供便利。同时是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。有助于加深对面向对象程序设计中基础理论和基本知识的理解,培养了实践能力,促进理论与实践的结合。

关键字:图书管理系统;C++;信息管理系统

Abstract

Books management system management system is the typical information management system (MIS), its development mainly includes the setting and maintenance of database and the programming of the frontend application. The former required establish data consistency and integrality, data security good storehouse. For the latter requires the application program function complete, easy to use, etc. Using c + + as development tools through in-depth study of c + + and applications, mainly completes use books management system management system of book records, including new unified management, change book record books record, delete, realize functions such as book record books management work of the systematic, standardization and automation, provides the convenience for the books management. Meanwhile is after studying the object-oriented program design course of time after comprehensive practice. Help deepen our understanding of the object-oriented programming basic theory and basic knowledge understanding, cultivate the practice ability, promoting the combination of theory with practice.

Key word: books management system management system;c + +;

information management system

Written by:Li Yudan Supervised by:Miao Xiufen

目 录

1 需求分析???????????????????????????????? 1

1.1 程序运用的平台 ???????????????????????????1

2 整体设计???????????????????????????????? 2

2.1 书库管理模块 ???????????????????????????? 2 2.2 获取图书信息?????????????????????????????2 2.3 设置图书信息?????????????????????????????3 2.4 删除图书????????????????????????????????4 2.5 添加图书????????????????????????????????4 2.6 借书 ??????????????????????????????????4 2.7 还书 ??????????????????????????????????5 2.8显示图书状态 ????????????????????????????5 2.9查找图书 ???????????????????????????????5 2.10读者管理模块 ???????????????????????????7

3 详细设计????????????????????????????????9

3.1 程序的主要功能 ???????????????????????????9 3.2 程序流程图??????????????????????????????9

4 调试与测试 ??????????????????????????????10

4.1 调试测试结果 ????????????????????????????10 4.2 存在的不足与对策、编程体会 ???????????????????14

5 总结???????????????????????????????????15

6 致谢????????????????????????????????????16 7 参考文献?????????????????????????????????17 8 附录????????????????????????????????????18

1 需求分析

一直以来人们使用传统的人工方式管理图书馆的日常工作,对于图书馆的借书和还书过程,想必大家都已很熟悉。在计算机尚未在图书馆广泛使用之前,借书和还书过程主要依靠手工。

以上所描述的手工过程的不足之处显而易见,首先处理借书、还书业务流程的效率很低,其次处理能力比较低,一段时间内,所能服务的读者人数是有限的。利用计算机来处理这些流程无疑会极大程度地提高效率和处理能力。我们将会看到排队等候借书、还书的队伍不再那么长,工作人员出错的概率也小了,读者可以花更多的时间在选择书和看书上。

为方便对图书馆书籍、读者资料、借还书等进行高效的管理,特编写本程序以提高图书馆的管理效率。使用该程序之后,工作人员可以查询某位读者的借阅情况,还可以对当前图书馆内图书进行查看,新书上架,旧书下架,删除所有信息等操作。

本次作业设计题目:“图书管理系统”主要目的是利用数据库软件编制一个管理软件,用以实现图书、读者以及日常工作等多项管理。

图书管理系统是一种基于集中统一规划的数据库数据管理新模式。在对图书、读者的管理,其实是对图书、读者数据的管理。本系统的建成无疑会为管理者对图书管理系统提供极大的帮助

1.1 程序运行平台

VC++ 6.0

具体操作如下:该程序是用VC++6.0制做的,使用Microsoft Visual C++ 6.0运行该程序,具体操作是:打开Microsoft Visual C++ 6.0,菜单栏里点文件→打开工作区→找到“学生成绩管理系统.dsw”这个文件→打开,或者在资源管理器中双击该文件,此时,VC++6.0会自动打开,并载入该系统相关资源,点击Run命令菜单或者或用快捷键Ctrl+F5运行该程序。另需要在ODBC中增加名为LibraryDB的图书管理系统的数据源。

1

2 整体设计

2.1 图书管理模块

该模块实现图书信息的管理,如图书上架、旧书下架、图书查找、图书信息更新、删除所有图书信息。

2.1.1 图书类,实现对图书的描述,图书的编号,书名,借出,还入等功能

private: int tag; // int no; //图书编号

char name[20]; //书名 char author[20];//作者 char cbs[20]; //出版社 int cbtime;//出版时间 double bookprice;//图书价格

int onshelf; //是否再架 1:再架 2:已借出 public: Book(){;} char *getname()

2.1.2 图书库类,实现对图书的维护,查找,删除等class BDatabase

{//图书库类,实现对图书的维护,查找,删除等 private:

int top; //图书记录指针 Book book[Maxb]; //图书记录 public:

2.2 获取图书信息

char *getname() {//获取书名 return name; }

char *getauthorname() {//获取作者名

2

return author; }

char *getcbsname() {//获取出版社名 return cbs; }

int getcbtime() {//获取出版时间 return cbtime;

}

double getbookprice() {//获取图书价格 return bookprice; }

int getno() {//获取图书编号 return no; }

int gettag() {//获取删除标记 return tag; }

2.3 设置图书信息

void setname(char na[]) {//设置书名

strcpy(name,na); }

void setauthorname(char aa[]) {//设置作者名 strcpy(author,aa); }

void setcbs(char ca[]) {//设置出版社 strcpy(cbs,ca);

}

3

void setcbtime(int time) {//设置时间 cbtime=time; }

void setbookprice(double price) {//设置图书价格 bookprice=price; }

void setonshelf(int oa) {

onshelf=oa; }

2.4 删除图书

void delbook() {//删除图书 }

char i;

cout<<\确定删除吗?Y/N ?\cin>>i;

if(i=='y'||i=='Y')

tag=1;

2.5 添加图书

void addbook(int n,char *na,char *aa,char *ca,int time,double price,int oa) {//增加图书 tag=0; no=n;

strcpy(name,na); strcpy(author,aa); strcpy(cbs,ca); cbtime=time; bookprice=price; onshelf=oa; }

2.6 借书

4

int borrowbook() {//借书操作 if (onshelf>0) {

onshelf--; return 1; } return 0; }

2.7 还书

void retbook() {//还书操作 onshelf++; }

2.8 显示图书状态

void disp() {//输出图书

cout<2.9 查找图书

Book *query1(int bookid) {//按编号查找图书

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

if(book[i].getno()==bookid &&book[i].gettag()==0) {

return &book[i]; }

return NULL; }

Book *query2(char a[]) {//按书名查找图书

5

Book *e; int r=0;

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

if(strcmp(book[i].getname(),a)==0 &&book[i].gettag()==0) { if(r==0)

cout<disp(); r++; } if(r==0)

cout<<\找不到该书!\ return NULL; }

Book *query3(char a[]) {//按作者查找图书 Book *e; int r=0;

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

if(strcmp(book[i].getauthorname(),a)==0 &&book[i].gettag()==0) { if(r==0)

cout<disp(); r++; } if(r==0)

cout<<\找不到该书!\ return NULL; }

Book *query4(char a[])

6

{//按出版社查找图书 Book *e; int r=0;

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

if (strcmp(book[i].getcbsname(),a)==0 &&book[i].gettag()==0) {

if(r==0)cout<disp(); r++; } if(r==0)

cout<<\找不到该书!\ return NULL; }

2.10 读者管理模块

class Reader {//读者的信息描述 private:

int tag; //删除标记 1表示已删 0表示未删 int no; //读者编号 char name[20]; //读者姓名 int borbook[Maxbor]; //所借图书 public:

Reader() //构造函数 { ; }

2.10.1 获取读者信息

char *getname() {//获取姓名 return name; }

7

int gettag() {//获取删除标记 return tag; }

int getno() {//获取读者编号 return no; }

2.10.2 设置读者信息

void setname(char na[]) {//设置姓名

strcpy(name,na); }

void delbook()

{//设置删除标记 1:已删 0:未删 char i; cout<<\确定删除吗?Y/N ?\ cin>>i;

if(i=='y'||i=='Y')

tag=1; }

2.10.3 添加读者信息

void addreader(int n,char *na) {//增加读者 tag=0; no=n;

strcpy(name,na);

for(int i=0;i

8

3 详细设计

3.1 程序的主要功能

通过一个conio类对图书馆书籍进行管理。通过这个管理功能实现对学校书库中书籍数据的输入输出。比如增添某些书籍,删除某些书籍等操作。

通过fstream类对图书数据的读取,写入进行管理。比如读者借书时显示所有图书信息,以及还书时的某些操作。

3.2 程序流程图

后退 开始菜单 管理员 读者 后退 管理员菜单 图书维护 后退 添 删 加 除 图 图 书 书 添 删 加 除 读 读 者 者 读者维护 读者菜单 后退 后退 借 还 查 查 看 看 所 自 有 身 图 信 书 书 书 息

9

4 调试与测试

4.1 调试测试结果 4.1.1 开始运行

4.1.2 添加图书

10

4.1.3 更改图书信息

11

4.1.4 删除图书

4.1.5 查找图书

4.1.6 显示图书状态

12

4.1.7 全部删除

4.1.8 返回

13

4.2 存在的不足与对策、编程体会

因为掌握的知识有限没能实现自动读取当前日期为借书日期并进行系统自行累加实现

还书日期自动生成功能

通过编写图书管理系统,我体会到了一个系统应该作为一个整体来看待,系统具有牵一发而动全身的特性,某一个模块的一个小小错误都可能导致系统其他模块功能的丧失甚至是崩溃,同时在编程时应该按照模块来编写,一个模块实现一个功能,这样在调试的时候就方便检查,还有一个程序写完了,不是真正的结束,还需要不断地调试不断地修改程序中的错误。在编程中出现了一个致命的错误:我在程序中定义了几个函数但是忘记了使用引用导致了最后编译是出现了重大错误,经过好几个小时的仔细排查终于找到了问题所在。

所以此次编程我最大的一个收获是:仔细研究每一个函数的定义,不要出现定义中形参

缺少或者实参形参形式不符出现的错误

14

5 总结

本系统实现了图书管理系统的典型功能,包括查询所有记录的信息,添加查找等功能,而且具有较高的安全性。但是因为自己独立完成且能力有限,还有部分功能未能完善,例如对书名,编号的排序等等,这些局限性都是有待逐步完善的方面。而且通过这次课程设计,我培养了自己对C++编程的兴趣,编程能力也有所提高,但仍存在许多不足,不能独自写出功能很齐全的代码,写代码要参考很多资料,所以今后应培养自己独立写代码的能力。

大一的课程即将结束,程序设计课程设计开始了,但是我发现它并没有我想象的那么容易,从一开始刚刚接触程序设计课程设计的时候我都不知道这是干什么的,对着电脑愣了半天不知道要干什么,后来我询问了一下大二计算机专业的学长,他告诉我了一些知识,同时我的老师给了我们一些指导,同学们也是互帮互助,所以我对这门课程有了进一步的了解。

我要感谢学校给我提供的良好的环境,让我们可以在机房好好的学习。同时感谢老师对我的指导和帮助,感谢高年级哥哥姐姐给我的鼓励让我逐渐有了信心,也感谢帮助我的同学们。

是你们对我的帮助和耐心指导,让我有信心完成这次作业,是你们给了我信心,也给了我无尽的希望。

15

6 致 谢

大一的课程即将结束,程序设计课程设计开始了,但是我发现它并没有我想象的那么容易,从一开始刚刚接触程序设计课程设计的时候我都不知道这是干什么的,对着电脑愣了半天不知道要干什么,后来我询问了一下大二计算机专业的学长,他告诉我了一些知识,同时我的老师给了我们一些指导,同学们也是互帮互助,所以我对这门课程有了进一步的了解。

我要感谢学校给我提供的良好的环境,让我们可以在机房好好的学习。同时感谢老师对我的指导和帮助,感谢高年级哥哥姐姐给我的鼓励让我逐渐有了信心,也感谢帮助我的同学们。

是你们对我的帮助和耐心指导,让我有信心完成这次作业,是你们给了我信心,也给了我无尽的希望。

16

7 参考文献

[1] 谭浩强《 C++面向对象程序设计》北京:清华大学出版社,2006 [2] 谭浩强 《C++程序设计实践指导》北京:清华大学出版社,2005 [3] 刘玉英、张怡芳等《C++实验指导与课程设计》人民邮电出版社,2007

17

8 附录

程序源代码

#include

#include //控制台数据输入输出的函数 #include//文件流

#include //控制数据输出格式 #include

const int Maxr=100 ;//最多的读者数 const int Maxb=100; //最多的图书数 const int Maxbor=5; //每位读者最多借的书

class Book

{//图书类,实现对图书的描述,图书的编号,书名,借出,还入等功能 private: int tag; // int no; //图书编号

char name[20]; //书名 char author[20];//作者 char cbs[20]; //出版社 int cbtime;//出版时间 double bookprice;//图书价格

int onshelf; //是否再架 1:再架 2:已借出 public: Book(){;} char *getname() {//获取书名 return name; }

char *getauthorname() {//获取作者名 return author; }

char *getcbsname() {//获取出版社名 return cbs; }

int getcbtime() {//获取出版时间 }

double getbookprice()

18

return cbtime;

{//获取图书价格 } int getno() {//获取图书编号 return no; } int gettag() {//获取删除标记 return tag; }

void setname(char na[]) {//设置书名 strcpy(name,na); }

void setauthorname(char aa[]) {//设置作者名 strcpy(author,aa); }

void setcbs(char ca[]) {//设置出版社 }

void setcbtime(int time) {//设置时间 cbtime=time; }

void setbookprice(double price) {//设置图书价格 bookprice=price; }

void setonshelf(int oa) {

onshelf=oa; }

void delbook() {//删除图书 }

void addbook(int n,char *na,char *aa,char *ca,int time,double price,int oa)

19

char i;

cout<<\确定删除吗?Y/N ?\cin>>i; if(i=='y'||i=='Y') strcpy(cbs,ca); return bookprice;

tag=1;

{//增加图书 tag=0; no=n; strcpy(name,na); strcpy(author,aa); strcpy(cbs,ca); cbtime=time; bookprice=price; onshelf=oa; }

int borrowbook() {//借书操作 if (onshelf>0) { onshelf--; return 1; } return 0; }

void retbook() {//还书操作 onshelf++; } void disp() {//输出图书

cout<class BDatabase

{//图书库类,实现对图书的维护,查找,删除等 private:

int top; //图书记录指针 Book book[Maxb]; //图书记录 public: BDatabase()

{//构造函数,将book.txt读到book[]中 Book b; top=-1;

fstream file(\ while (1) {

20

file.read((char *)&b,sizeof(b)); if (!file) break; top++; book[top]=b; }

file.close(); }

void clear() {//全删 }

int addbook(int n,char *na,char *aa,char *ca,int time, double price,int oa) {//增加图书

Book *p=query1(n); if (NULL==p) { top++;

book[top].addbook(n,na,aa,ca,time,price,oa); return 1; } return 0; }

Book *query1(int bookid) {//按编号查找图书 for(int i=0;i<=top;i++)

if(book[i].getno()==bookid &&book[i].gettag()==0) {

return &book[i]; }

return NULL; }

Book *query2(char a[]) {//按书名查找图书 Book *e; int r=0;

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

if(strcmp(book[i].getname(),a)==0 &&book[i].gettag()==0) { if(r==0)

21

char i;

cout<<\确定全部删除吗?Y/N ?\cin>>i; if(i=='y'||i=='Y')

top=-1;

cout<disp(); r++; } if(r==0)

cout<<\找不到该书!\ return NULL; }

Book *query3(char a[]) {//按作者查找图书 Book *e; int r=0;

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

if(strcmp(book[i].getauthorname(),a)==0 &&book[i].gettag()==0) { if(r==0)

cout<disp(); r++; } if(r==0)

cout<<\找不到该书!\ return NULL; }

Book *query4(char a[]) {//按出版社查找图书 Book *e; int r=0;

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

if (strcmp(book[i].getcbsname(),a)==0 &&book[i].gettag()==0) {

if(r==0)cout<disp(); r++; } if(r==0)

cout<<\找不到该书!\ return NULL; }

22

void bookdata(); //图书库信息 void disp() {

for(int i=0;i<=top;i++) if(book[i].gettag()==0) book[i].disp(); }

~BDatabase()

{//析构函数,将book[]写到book.txt文件中 fstream file(\ for(int i=0;i<=top;i++) if(book[i].gettag()==0)

file.write((char *)&book[i],sizeof(book[i])); file.close(); } };

void BDatabase::bookdata() {

char choice3; char bname[40];//书名 char auname[40];//作者名 char cname[40];//出版社 int time;//出版时间 double price;//价格 char ch; int choice4; int bookid; int bookod; Book *b;

while (choice3!='0') {

cout<<\ 图 书 信 息 **\\n\ cout<<\新增图书 **\ cout<<\更改图书信息 **\ cout<<\删除图书 **\ cout<<\查找图书 **\ cout<<\显示图书状态 **\ cout<<\全部删除 **\ cout<<\返回 **\ cout<<\请选择:\ cin>>choice3; switch(choice3) { case '1':

23

cout<<\请输入新书编号:\ cin>>bookid;

b=query1(bookid); if(b!=NULL) {

cout<<\该编号已经存在,不能添加!\ break; }

cout<<\请输入新书书名:\ cin>>bname;

cout<<\请输入新书作者名:\ cin>>auname;

cout<<\请输入新书出版社:\ cin>>cname;

cout<<\请输入新书数量:\ cin>>bookod;

addbook(bookid,bname,auname,cname,time,price,bookod); cout<<\添加图书成功!\ getch(); break; case '2':

cout<<\请输入图书编号:\ cin>>bookid; b=query1(bookid); if(b==NULL) {

cout<<\该图书不存在! \ break; }

cout<<\该图书的信息是:\

cout<disp();

cout<<\是否修改?( y/n ):\ cin>>ch;

if(ch=='y'||ch=='Y') {int a;

cout<<\ 图 书 修 改 **\\n\

24

cout<<\请输入新书出版时间:\cin>>time;

cout<<\请输入图书价格:\cin>>price;

cout<<\修改书名 **\ cout<<\修改作者 **\ cout<<\修改出版社 **\ cout<<\修改出版时间**\ cout<<\修改图书价格**\ cout<<\修改图书数量**\ cout<<\返回 **\ cout<<\请选择:\ cin>>a; switch(a) {

case 1: cout<<\请输入新的书名:\ cin>>bname; b->setname(bname); break; case 2: cout<<\请输入新的作者:\

cin>>auname; b->setauthorname(auname); break; case 3: cout<<\请输入新书出版社:\ cin>>cname; b->setcbs(cname); break; case 4: cout<<\请输入新书出版时间:\ cin>>time;b->setcbtime(time); break; case 5:

cout<<\请输入图书价格:\ cin>>price; b->setbookprice(price); break;

case 6: cout<<\请输入新的存量:\

cin>>bookod; b->setonshelf(bookod); break; case 0: break; }

}

cout<<\修改图书成功!\ getch(); break; case '3':

cout<<\请输入图书编号:\ cin>>bookid; b=query1(bookid); if(b==NULL) {

cout<<\该图书不存在,无法删除!\ break; }

b->delbook(); cout<<\删除成功!\ getch(); break; case '4':

cout<<\按图书编号查找 **\

25

cout<<\按图书书名查找 **\ cout<<\按图书作者查找 **\ cout<<\按图书出版社查找**\ cout<<\ 返 回 **\ cout<<\请选择:\ cin>>choice4; switch(choice4) { case 1:

cout<<\请输入图书编号:\ cin>>bookid; b=query1(bookid); if(b==NULL) {

cout<<\该图书不存在!\ break; }

cout<disp(); break; case 2:

cout<<\请输入图书书名:\ cin>>bname; b=query2(bname); break; case 3:

cout<<\请输入图书作者:\ cin>>auname; b=query3(auname); break; case 4:

cout<<\请输入图书出版社:\ cin>>cname; b=query4(cname); break; case 0: break; }

break; case '5':

cout<

26

break; case '6': clear(); break; default: break; } } }

class Reader {//读者的信息描述 private:

int tag; //删除标记 1表示已删 0表示未删int no; //读者编号 char name[20]; //读者姓名 int borbook[Maxbor]; //所借图书 public:

Reader() //构造函数 { ; }

char *getname() {//获取姓名 return name; } int gettag() {//获取删除标记 return tag; } int getno() {//获取读者编号 return no; }

void setname(char na[]) {//设置姓名 strcpy(name,na); }

void delbook()

{//设置删除标记 1:已删 0:未删 char i; cout<<\确定删除吗?Y/N ?\ cin>>i;

if(i=='y'||i=='Y')

tag=1;

27

}

void addreader(int n,char *na) {//增加读者 tag=0; no=n;

strcpy(name,na); for(int i=0;i

void borrowbook(int bookid) {//借书操作

for(int i=0;i

if (borbook[i]==0) {

borbook[i]=bookid; return ; } } }

int retbook(int bookid) {//还书操作

for(int i=0;i

if(borbook[i]==bookid) {

borbook[i]=0;

cout<<\还书成功!\ return 1; } }

cout<<\未借该书,还书失败!\ return 0; } void disp() {//读出读者信息 int have=0; int bz=0;

cout<

28

cout<<\ bz++; } else {

cout<<\ } }

if(have==0)

cout<<\ 还未借书\} };

class RDatabase

{//读者类库,实现建立读者的个人资料 private:

int top; //读者记录指针

Reader read[Maxr]; //读者记录 public: RDatabase()

{//构造函数,将reader.txt读到read[]中 Reader s; top=-1;

fstream file(\打开一个输入文件 while (1) {

file.read((char *)&s,sizeof(s)); if (!file) break; top++; read[top]=s; }

file.close(); //关闭 reader.txt 文件 }

void clear()

{//删除所有读者信息

char i;

cout<<\确定全部删除吗?Y/N ?\ cin>>i; if(i=='y'||i=='Y')

top=-1;

}

int addreader(int n,char *na) {//添加读者时先查找是否存在 Reader *p=queryid(n);

29

if (p==NULL) { top++;

read[top].addreader(n,na); return 1; } else

cout<<\该编号已经存在!\ return 0; }

Reader *queryid(int readerid) {//按读者编号查找 for (int i=0;i<=top;i++)

if (read[i].getno()==readerid&&read[i].gettag()==0) {

return &read[i]; }

return NULL; }

Reader *queryname(char readername[10]) {//按读者姓名查找 for (int i=0;i<=top;i++)

if (strcmp(read[i].getname(),readername)==0 && read[i].gettag()==0) {

return &read[i]; }

return NULL;

} void disp()

{//输出所有读者信息 for(int i=0;i<=top;i++) }

void readerdata(); //读者库信息 ~RDatabase()

{//析构函数,将read[]写到reader.txt文件中 fstream file(\ for (int i=0;i<=top;i++) if (read[i].gettag()==0)

file.write((char *)&read[i],sizeof(read[i])); file.close(); } };

30

if (read[i].gettag()==0) read[i].disp();

void RDatabase::readerdata() {

char choice1; char rname[20]; int readerid; char readername[10]; int choice2; Reader *r; while(choice1!='0') {

cout<<\ ** 读 者 信 息 **\\n\ cout<<\ ** 1. 新增图书 **\ cout<<\ ** 2. 更改图书 **\ cout<<\ ** 3. 删除图书 **\ cout<<\ ** 4. 查找图书 **\ cout<<\ ** 5. 显示图书状态 **\ cout<<\ ** 6. 全部删除 **\ cout<<\ ** 0. 返回 **\ cout<<\ 请选择:\ cin>>choice1; switch(choice1) { case '1':

cout<<\请输入读者编号:\ cin>>readerid;

cout<<\请输入读者姓名:\ cin>>rname;

addreader(readerid,rname); cout<<\添加读者成功!\ getch(); break; case '2':

cout<<\请输入读者编号:\ cin>>readerid; r=queryid(readerid); if(r==NULL) {

cout<<\该读者不存在! \ break; }

cout<<\请输入新的姓名:\ cin>>rname; r->setname(rname);

cout<<\修改读者成功!\ getch();

31

break; case '3':

cout<<\请输入读者编号:\ cin>>readerid; r=queryid(readerid); if(r==NULL) {

cout<<\该读者不存在!\ break; } r->delbook();

cout<<\删除成功!\ getch(); break; case '4':

cout<<\ ** 1.按读者编号查找 **\ cout<<\ ** 2.按读者姓名查找 **\ cout<<\ ** 0.返 回 **\ cout<<\ 请选择:\ cin>>choice2; switch(choice2) { case 1:

cout<<\请输入读者编号:\ cin>>readerid; r=queryid(readerid); if(r==NULL) {

cout<<\该读者不存在!\ break; }

cout<disp(); break; case 2:

cout<<\请输入读者姓名:\ cin>>readername; r=queryname(readername); if(r==NULL) {

cout<<\该读者不存在!\ break; }

cout<disp();

32

break; case 0: break; }

break; case '5':

cout<

class maindesk //实现程序的主界面 {

char choice5; int bookid,readerid; RDatabase ReaderDB; Reader *r;

BDatabase BookDB; Book *b; public: maindesk() {;} void enterdesk() {

cout<<\ 欢迎光临李玉丹的图书馆管理系统!\while(choice5!='0') {

cout<<\ **** 图 书 管 理 系 统****\\n\\n\ cout<<\ ** 1.图书信息 **\ cout<<\ ** 2.读者信息 **\ cout<<\ ** 3.借阅图书 **\ cout<<\ ** 4.归还图书 **\ cout<<\ ** 0. 退出 **\ cout<<\ 请选择:\ cin>>choice5; switch (choice5) {

33

case '1':

BookDB.bookdata(); break; case '2':

ReaderDB.readerdata(); break; case '3':

cout<<\ 借书操作\ cout<<\请输入借书读者编号:\ cin>>readerid;

r=ReaderDB.queryid(readerid); if(NULL==r)

{//按编号查找是否有该读者

cout<<\不存在该读者,不能借书!\ break; }

cout<<\请输入要借图书编号:\ cin>>bookid;

b=BookDB.query1(bookid); if(b==NULL) {//按编号查找是否有该图书

cout<<\不存在该图书,不能借书!\ break; }

if(b->borrowbook()==0) {

cout<<\该图书已借完,不能借书!\ break; }

cout<<\读者借书成功!\ r->borrowbook(b->getno()); break; case '4':

cout<<\ 还书操作\ cout<<\请输入还书读者编号:\ cin>>readerid;

r=ReaderDB.queryid(readerid); if(r==NULL) {

cout<<\不存在该读者,不能还书\ break; }

cout<<\请输入要归还图书编号:\ cin>>bookid;

34

b=BookDB.query1(bookid); if(b==NULL) {

cout<<\不存在该图书,不能还书\ break; }

b->retbook(); r->retbook(b->getno()); break; default: break; } } } };

void main() //主函数 { maindesk yourDesk; yourDesk.enterdesk();

cout<<\ GAME OVER !\

}

35

本文来源:https://www.bwwdw.com/article/e885.html

Top