《面向对象程序设计(C++)》 图书管理系统设计
- 格式:doc
- 大小:196.50 KB
- 文档页数:20
(此文档为word格式,下载后您可任意编辑修改!) 《面向对象程序设计(C++)》
项目名称:图书管理系统设计
一、 问题分析与功能定义 二十一世纪是信息的社会,信息作为社会最主要的资源,将成为战略资源引起人们广泛的关注。如何获取信息?图书是我们最好的获取信息的方式,但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来。迫使人们起用新的管理方法来管理图书,但如何把图书管理员从繁重的工作中解脱出来呢? 科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。信息化时代的到来成为不可抗拒的潮流,人类文明正在进入一个崭新的时代。因此,图书管理系统也以方便、快捷、费用低的优点正慢慢地进入人们的生活,将传统的图书管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,减小出错的概率,使读者可以花更多的时间在选择书和看书上。从而使人们有更多时间来获取信息、了解信息、掌握信息 。 1、设计内容及要求
设计一个图书馆管理系统,完成图书管理和读者管理的功能,并能对借阅信息进行管理,要求完成一下功能,图书资料管理,可以添加、修改、删除、查询书籍信息,读者资料管理,可以添加、修改、删除、查询读者信息;借书管理,可以进行添加借书信息;还书管理,可以进行还书信息; 该项目是在Visual C++ 6.0的平台下用c++语言实现,创建对象,程序运行开始,打开文件并将其分别链入链表之中;程序结束关闭并保存文件。整体系统功能全部由链表实现。 2、模块图
二、对象(类)设计及实现 1、概要设计 Reader读者类、RDatabase 读者库类、Book 图书类、BDatabase 图书库类
class RDatabase //读者库类 2、详细设计 1)类的原型描述
class Reader //读者类 int tag;//删除标记1:已删0:未删 int no;//读者编号 char name[10];//读者姓名 int borbook[Maxbor];//所借图书 Reader() {} char *getname() //获取姓名 int gettag() //获取删除标记 int getno() //获取读者编号 void setname(char na[])//设置姓名 void delbook() //设置删除标记 void addreader(int n,char *na); //增加读者 void borrowbook(int bookid); //借书操作 int retbook(int bookid); //还书操作 void disp(); //输出读者信息
int top;// 读者记录指针 Reader read[Maxr];// 读者记录 RDatabase() ;//构造函数,将reader.txt读到read[]中 void clear();//删除所有读者信息 int addreader(int n,char *na);//增添读者信息 Reader *query(int readerid);//按编号查找 void disp();//输出所有读者信息 int Readernum();//记录读者信息 void readerdata();//读者库维护 ~RDatabase();//析构函数,将read[]写入reader.txt文 class Book //图书类 int tag; //删除标记1:已删0:未删 int no; //图书编号 char name[20];//书名 int onshelf;//是否在架1:在架0:已借 Book() {} char *getname();//获取姓名 int getno();//获取图书编号 int gettag(); //获取删除标记 void setname(char na[]);//设置书名
void delbook();//删除图书 void addbook(int n,char *na);//增加图书 int borrowbook() ;//借书操作 void retbook();//还书操作 void disp();//输出图书
三、核心控制设计 1、在主函数中我们要做的操作包括: (1)建立1个Reader读者类、1个RDatabase 读者库类、1个Book 图书类、1个BDatabase 图书库类 (2)建立菜单界面。完成以下内容: ①进入功能必须打开菜单,然后用户根据菜单选择相应的操作方式,如查看数据、编辑图书数据以及修改图书数据、维护图书的采购信息。添加、删除、查看读者个人信息,浏览图书信息。 ② 能够对图书基本信息、图书采购信息、图书的借阅人信息进行统计,统计的结果能够以表格的形式来表示。 (3) 将图书基本信息、图书采购信息、图书的借阅人信息存储在相应的文件中。 (4) 系统界面友好,易操作。 2、本程序应具备的功能: A.添加、借阅、还书功能: (1)添加读者和图书信息。 (2)借阅尚在架的图书。 (3)读者归还的图书。
class BDatabase //图书库类 int top;//图书记录指针 Book book[Maxb];//图书记录 BDatabase() ;//构造函数,将book.txt读到book[]中 void clear();//全删 int addbook(int n,char *na);//增加图书 Book *query(int bookid);//查找图书 void disp();//输出所有图书信息 void bookdata();//图书库维护 ~BDatabase();//析构函数,将book[]写入book.txt文 B.查找功能 (1) 根据图书的编号查找图书信息。 (2)根据读者的编号查找读者的信息。 C.系统的操作 (1) 系统在进入时,要有菜单提示; (2) 系统在用户退出时,有一定的提示。 3、算法分析 1)添加操作:(读者信息的添加与图书信息的添加类似) 包括两个部分,先通过输入设备输入信息,系统获取;然后添加入读者数据库read.txt文件中。 ㈠获取信息 void Reader::addreader(int n,char *na) //增加读者 { tag=0; no=n; strcpy(name,na); for (int i=0;iborbook[i]=0; } int RDatabase::addreader(int n,char *na) //增添读者信息 { der *p=query(n); if (p==NULL) { top++; read[top].addreader(n,na); cout<<"读者添加成功" ㈡析构函数写入新读者的编号跟姓名 RDatabase::~RDatabase() { fstream file("reader.txt",ios::out); for (int i=0;i<=top;i++) { if(read[i].gettag()==0) file.write((char *)&read[i],sizeof(read[i])); else file.close(); } } 流程图: 2)借书操作:利用for语句和if语句,通过判断图书的borbook的编号是否为0,来判断图书是否未被借走或还没有被借完。 void Reader::borrowbook(int bookid) //借书操作 { for (int i=0;iif (borbook[i]==0) { borbook[i]=bookid; return; } } 流程图: 3)还书操作:利用for语句和if语句,通过判断图书的borbook的编号是否为要还书的编号,来判断是否借出此书。 int Reader::retbook(int bookid) //还书操作 { for(int i=0;i{ if(borbook[i]==bookid) { borbook[i]=0; return 1; } else continue; } 流程图: (4)查找功能:利用for语句和if语句,寻找与要查询的编号相同的读者编号或图书编号,如果找到,向系统返回相应的编号,输出相应的信息。(读者的查找与图书查找类似) Reader *query(int readerid) //按编号查找 { for (int i=0;i<=top;i++) if(read[i].getno()==readerid&&read[i].gettag()==0) return &read[i]; return NULL; } 流程图: