问题补充说明:主要分为两大功能:1)图书管理(增加图书,查询图书,删除图书,图书借阅,还书);2)会员管理(增加会员,查询会员,删除会员,借书信息); 最好能有截图 谢谢
图书借阅管理360问答系统具有以下功能:
图书资料管议证未理
图书资料管理主要完成图书资料的新增、修改和报废,并生成图书资料库的功能。按采购员的要求,供书商提供需要的书籍。进行分类新增修改处理。并对已报废图司名具压书进行处理。
读者资料管理
读者资料管理主要完成读者资料的新增、修改和撤消,并生成读者资料库。按读者要求进行读者资料的新增、修改和撤消。
借书操作
交厂左味呢借书操作主要完成读者的借书、续借及预订处理,并生成读者借阅库。首先进行读者资格的审核,符合要求后查阅书库是否有书,如生弱有则修改图书资料库,书库取书书交读者。书库无书则进行预订处理。用户续借则修改还书日期。并将借书信息汇总后交统计火复员。
还书操作
还书操作主要完成读者的还书及罚款处理,并修改读者借阅库。首先进行读者资格裂铁展么钟燃转丰的啊的审核,符合要求后则修改图书资料库,读者还书书还书库。书籍逾期或遗失则进行罚款处理。并将还书信息汇总后交统计员。
查询处理
查询处理主要完成读者对书是否逾期、书是否未借、书籍排行榜的查询处理。并及时地把查黑镇询结果反馈给读者,并将查询信息汇总给统计员。
系统维护
包括权限管理、数据恢复和数据备份。数据恢复和数据备份是对数据的有效保护。权限管理是对系统使用者规定相关的权限,以免系统数进划报掉刑培离间车副据被非法访问和使用。
(访问时需要密码,密码错误要有提示重输,登陆分为管理员登陆和用户登陆两项,用户只能进行查询操作,而管轮理员能进行所有操作)
#include<string.h>
#include<iostream.h>
classBook{//书籍基类
protected:
charTitle[40];//书名
longCode;//条码
i况杆轻图松妈因困角ntType;//0表示书,1表示杂志
public:
Book();
Book(char*title,longcode);
voidSetCode(longcode){Code=code;}
voidSe之措落复类操么tTitle(char*tl){st素普银裂积常溶周rcpy(Title示的让句哥指认没商溶增,tl);}
voidSetType(booltype证较顶杀船){Type=type;}
intGetType(){returnType;}
longGet个区日Code(){returnCode;}
virtualvoidShow();//显示书的信息
friendostream&operator<<(ostream&,Book&);//重载插入运算符
fri安析内刑市抗建温endistrea触士放话序践斤员井药m&operator>>(istream&is,Book&);//房经名米重载提取运算符
Book*Next;//为创建每个读者所借书链表而定义指针
};
classItem:publicBook{//书的款目
//charTitle[40];//书名
charAuthor[20];//著者名
charIndexCode[10];//分类号
//longCode;//条码
public:
Item();
Item(char*author,char*title,char*index,intcode);
Item(Item&);
voidSetAuthor(char*);
voidSetIndexCode(char*);
virtualvoidShow();//显示书的信息
friendostream&operator<<(ostream&os,Item&);//重载插入运算符
friendistream&operator>>(istream&is,Item&);//重载提取运算符
public:
};
classMagazine:publicBook{//杂志类
intVolume;
enumLANG{CHINESE=1,ENGLISH}Lang;//枚举变量,确定语言类别
public:
Magazine():Book(){Volume=0;Lang=CHINESE;Type=1;}
Magazine(char*title,intvol,LANGlang,intcode);
Magazine(Magazine&);
voidSetVolume(intvol){Volume=vol;}
voidSetLang(intlang){Lang=(LANG)lang;}
virtualvoidShow();//显示杂志的信息
friendostream&operator<<(ostream&os,Magazine&);//重载插入运算符
friendistream&operator>>(istream&is,Magazine&);//重载提取运算符
};
classReader{//读者信息类
charName[20];//姓名
charPosition[20];//职务
intAge;//年龄
longCode;//借书证号
Book*items;//所借书链表
public:
Reader();
Reader(char*name,char*posi,intage,intcode);
//Reader(Reader&);
~Reader();
longGetCode(){returnCode;}
voidSetName(char*);
voidSetPosition(char*);
voidSetAge(int);
voidSetCode(long);
voidAddBook(Item);//添加所借书
voidAddBook(Magazine);//添加所借杂志
voidDelBook(Bookit);//还书后减少所借书
voidShowBooks();//显示所借书
voidShow();//显示读者信息
friendostream&operator<<(ostream&os,Reader&);//重载插入运算符
friendistream&operator>>(istream&is,Reader&);//重载提取运算符
public:
intCounter;//计数器,统计所借书数目
};
classManager{//管理员类
charName[20];//姓名
intAge;//年龄
intCode;//工号
friendclassLibrary;//将图书馆类声明为友元
public:
Manager(){}
Manager(char*,int,int);
longGetCode(){returnCode;}
voidShow();
friendostream&operator<<(ostream&os,Manager&);//重载插入运算符
friendistream&operator>>(istream&is,Manager&);//重载提取运算符
};
classLoan{//借阅信息类
intType;//0表示书,1表示杂志
Itemitem;//借阅书
Magazinemag;//借阅杂志
Readerreader;//借阅者
Managermanager;//借书操作员
intCode;
friendclassLibrary;//将图书馆类声明为友元
public:
Loan(){}
Loan(Loan&l);
intGetCode(){returnCode;}
voidShow();
friendostream&operator<<(ostream&os,Loan&);//重载插入运算符
friendistream&operator>>(istream&is,Loan&);//重载提取运算符
};
、、、、、、、、、、、、、、、、、、、、、、、
#include<iostream.h>
#include<string.h>
classReader;
template<typenameT>classDblList;
template<typenameT>classDblNode{
public:
TInfo;//数据域
DblNode<T>*llink,*rlink;//前驱(左链)、后继(右链)指针
public:
DblNode(Tdata);//一般结点
DblNode();//头结点
TGetInfo(){returnInfo;};
friendclassDblList<T>;
friendclassLibrary;
};
template<typenameT>classDblList{
DblNode<T>*head,*current;
public:
DblList();
~DblList();
voidInsert(constT&data);
DblNode<T>*Remove(DblNode<T>*p);
voidPrint();
intLength();//计算链表长度
DblNode<T>*Find(Tdata);//搜索数据与定值相同的结点
DblNode<T>*Find(intdata);//按某个关键字查找
voidMakeEmpty();//清空链表
voidShowList();//显示链表各结点
friendistream&operator>>(istream&,DblList<typenameT>&);//重载输入流运算符
friendostream&operator<<(ostream&os,DblList<typenameT>&dlist);//重载输出流运算符
friendclassLibrary;
//其它操作
};
template<typenameT>DblNode<T>::DblNode(){
llink=rlink=NULL;
}
template<typenameT>DblNode<T>::DblNode(Tdata){
info=data;
llink=NULL;
rlink=NULL;
}
template<typenameT>DblList<T>::DblList(){//建立表头结点
head=newDblNode<T>();
head->rlink=head->llink=head;
current=NULL;
}
template<typenameT>DblList<T>::~DblList(){
MakeEmpty();//清空链表
deletehead;
}
template<typenameT>voidDblList<T>::MakeEmpty(){
DblNode<T>*tempP;
while(head->rlink!=head){
tempP=head->rlink;
head->rlink=tempP->rlink;//把头结点后的第一个节点从链中脱离
tempP->rlink->llink=head;//处理左指针
deletetempP;//删除(释放)脱离下来的结点
}
current=NULL;//current指针恢复
}
template<typenameT>voidDblList<T>::Insert(constT&data){//新节点在链尾
current=newDblNode<T>;
current->Info=data;
current->rlink=head;//注意次序
current->llink=head->llink;
head->llink->rlink=current;
head->llink=current;//最后做
}
template<typenameT>DblNode<T>*DblList<T>::Remove(DblNode<T>*p){//删除结点
current=head->rlink;
while(current!=head&¤t!=p)current=current->rlink;
if(current==head)current=NULL;
else{//结点摘下
p->llink->rlink=p->rlink;
p->rlink->llink=p->llink;
p->rlink=p->llink=NULL;
}
returncurrent;
}
template<typenameT>DblNode<T>*DblList<T>::Find(Tdata){//按结点查找
current=head->rlink;
while(current!=head&¤t->Info!=data)current=current->rlink;
if(current==head)current=NULL;
returncurrent;
}
template<typenameT>DblNode<T>*DblList<T>::Find(intdata){//按数据值查找结点
current=head->rlink;
inttemp=current->Info.GetCode();
while(current!=head&&temp!=data){
current=current->rlink;
temp=current->Info.GetCode();
}
if(current==head)current=NULL;
returncurrent;
}
template<typenameT>voidDblList<T>::Print(){//输出链表
current=head->rlink;
while(current!=head){
cout<<current->Info<<'\t';
current=current->rlink;
}
cout<<endl;
}
template<typenameT>intDblList<T>::Length(){//取得链表长度
intcount=0;
current=head->rlink;
while(current!=head){
count++;
current=current->rlink;
}
returncount;
}
template<typenameT>voidDblList<T>::ShowList(){//输出链表各结点
intcount=0;
current=head->rlink;
while(current!=head){
current->GetInfo().Show();
current=current->rlink;
}
return;
}
template<typenameT>
istream&operator>>(istream&is,DblList<typenameT>&dlist){
intlen;
Ttt;//定义局部变量读入一个结点
is>>len;
for(inti=0;i<len;i++){//循环读入链表各结点
is>>tt;
dlist.Insert(tt);
}
returnis;
}
template<typenameT>
ostream&operator<<(ostream&os,DblList<typenameT>&dlist){
DblNode<T>*tempP;
intlen=dlist.Length();
os<<len<<'';
tempP=dlist.head->rlink;
while(tempP!=dlist.head){//循环输出链表各结点
os<<tempP->Info;
tempP=tempP->rlink;
}
returnos;
}
#include"class.h"
#include"dblist.h"
#include<fstream.h>
classLibrary{//封装图书馆流通业务的类
DblList<Item>item;//在馆图书链表
DblList<Magazine>mag;//在馆杂志链表
DblList<Reader>reader;//读者链表
DblList<Loan>loan;//借阅信息链表
DblList<Manager>manager;//管理员信息链表
intitemNum;//记录在馆图书数目
intmagNum;//记录在馆杂志数目
intreaderNum;//记录读者数目
intloanNum;//记录借阅信息数目
intmanagerNum;//记录管理员数目
ofstreamitemFileOut;//文件流对象,保存图书馆书籍数据
ifstreamitemFileIn;//文件流对象,读入图书馆书籍数据
ofstreammagFileOut;//文件流对象,保存图书馆杂志数据
ifstreammagFileIn;//文件流对象,读入图书馆杂志数据
ofstreamreaderFileOut;//文件流对象,保存图书馆读者数据
ifstreamreaderFileIn;//文件流对象,读入图书馆读者数据
ofstreamloanFileOut;//文件流对象,保存图书馆借阅信息数据
ifstreamloanFileIn;//文件流对象,读入图书馆借阅信息
ofstreammanagerFileOut;//文件流对象,保存图书馆管理员数据
ifstreammanagerFileIn;//文件流对象,读入图书馆管理员数据
public:
Library();//构造函数
~Library();//析构函数
voidRun();//图书馆类的运行函数
voidCreateBibliotheca();//创建书目
voidCreateReader();//创建读者库
voidCreateManager();//创建管理员信息
intShowMainMenu();//显示主菜单函数
voidBorrow();//借书操作
voidReturn();//还书操作
voidRequire();//查询操作
voidSaveInfo();//保存图书馆信息
voidOpenInfo();//读入图书馆信息
};
多给点分吧