您的位置首页百科问答

数据结构课程设计(图书馆借阅管理系统)

问题补充说明:主要分为两大功能: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();//读入图书馆信息

};

多给点分吧