您的位置 首页 百科知识

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

问题补充说明:主要分为两大功能:1)图书管理(增加图书,查询图书,删除图书,图书借阅,还书);2)会员管理(增加会员,查询会员,删除会员,借书信息); 最好能有截图 谢谢

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

图书借阅管理系统具有以下功能:

图书资料管理

图书资料管理主要完成图书资料刻计目望乙脱端弦的新增、修改和报废,并生成图书资料库的功能。按采购员的要求,供书商提供需要的书籍。进行分类新增修改处理。并对已报废图书进行处理。

读者资料管理

读者资料管理主要完成读者资料的新增、修改和撤消,并生成读者资料库。按读者要求进行读者资料的新增、修改和撤消。

借书操作

借书操作主要完成读者的借书、续借及预订处理,并生成读者借阅库。首先进行读者资格的审核,符合要求后测物查阅书库是否有书,如有则修改图书资料库,书库取书书交读者。书库载征才雷卫画货队概程无书则进行预订处扩取说理。用户续借则修改还书日期。并将借书信息汇总后交统计员。

还书操作

还书操作主要完成读者的还书及罚款处理,并修改读者借阅库。首先进行读者资格的审核,符合要求后则修改图书资料库,读者还书书还书库。书籍逾期或遗失则进行罚款处理。并将还书信息汇总后交统计员。

查询处理

查询处理主要完成读者对书是否逾期、书便是否未借、书籍排唱每握是谁经数的行榜的查询处理。并及时地把查询结果反馈给读者,并将查询信息汇总给统计员。

系统维护

包括权限管理、数据恢复和数据备份。数据恢复和数据备份是对数皮起转协生组只算据的有效保护。权限管理是对系统使用者规定相关的应及背钱半充权限,以免系统数据被非法访问和使用。

(访问时需要密码,密码错误要有提示重输,登陆分为管理员登陆和用户登陆两项,用户只能进山巴较装绝宗夜兴保行查询操作,而管理员能进行所有操作)

#include

#include

classBook{//书籍基类

protected:

charTitle[40];//书名

longCode;//条居酸阻利府尽大码

intType;//0表示书,1表示杂志

public:

Book();

Book(char*title,longcode)财速;

voidSetCode(longcode){Code=code;}

voidSetTitle(char*tl){strcpy(Title,tl);}

voidSetType(booltype){Type=type;挥烧大着选落之田蛋}

intGetTyp武研空础会显营达冲容e(){returnType;}

longGetCode(){returnCode;}

virtualvoidShow();//显示你错书的信息

frien村液深投济降财电命吸dostream&operator<<(ostream&,Book&);//重载插入运算符

friendistrea观取选社续毫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

#include

classReader;

templateclassDblList;

templateclassDblNode{

public:

TInfo;//数据域

DblNode*llink,*rlink;//前驱(左链)、后继(右链)指针

public:

DblNode(Tdata);//一般结点

DblNode();//头结点

TGetInfo(){returnInfo;};

friendclassDblList;

friendclassLibrary;

};

templateclassDblList{

DblNode*head,*current;

public:

DblList();

~DblList();

voidInsert(constT&data);

DblNode*Remove(DblNode*p);

voidPrint();

intLength();//计算链表长度

DblNode*Find(Tdata);//搜索数据与定值相同的结点

DblNode*Find(intdata);//按某个关键字查找

voidMakeEmpty();//清空链表

voidShowList();//显示链表各结点

friendistream&operator>>(istream&,DblList&);//重载输入流运算符

friendostream&operator<<(ostream&os,DblList&dlist);//重载输出流运算符

friendclassLibrary;

//其它操作

};

templateDblNode::DblNode(){

llink=rlink=NULL;

}

templateDblNode::DblNode(Tdata){

info=data;

llink=NULL;

rlink=NULL;

}

templateDblList::DblList(){//建立表头结点

head=newDblNode();

head->rlink=head->llink=head;

current=NULL;

}

templateDblList::~DblList(){

MakeEmpty();//清空链表

deletehead;

}

templatevoidDblList::MakeEmpty(){

DblNode*tempP;

while(head->rlink!=head){

tempP=head->rlink;

head->rlink=tempP->rlink;//把头结点后的第一个节点从链中脱离

tempP->rlink->llink=head;//处理左指针

deletetempP;//删除(释放)脱离下来的结点

}

current=NULL;//current指针恢复

}

templatevoidDblList::Insert(constT&data){//新节点在链尾

current=newDblNode;

current->Info=data;

current->rlink=head;//注意次序

current->llink=head->llink;

head->llink->rlink=current;

head->llink=current;//最后做

}

templateDblNode*DblList::Remove(DblNode*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;

}

templateDblNode*DblList::Find(Tdata){//按结点查找

current=head->rlink;

while(current!=head&¤t->Info!=data)current=current->rlink;

if(current==head)current=NULL;

returncurrent;

}

templateDblNode*DblList::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;

}

templatevoidDblList::Print(){//输出链表

current=head->rlink;

while(current!=head){

cout<Info<<'\t';

current=current->rlink;

}

cout<

}

templateintDblList::Length(){//取得链表长度

intcount=0;

current=head->rlink;

while(current!=head){

count++;

current=current->rlink;

}

returncount;

}

templatevoidDblList::ShowList(){//输出链表各结点

intcount=0;

current=head->rlink;

while(current!=head){

current->GetInfo().Show();

current=current->rlink;

}

return;

}

template

istream&operator>>(istream&is,DblList&dlist){

intlen;

Ttt;//定义局部变量读入一个结点

is>>len;

for(inti=0;i

is>>tt;

dlist.Insert(tt);

}

returnis;

}

template

ostream&operator<<(ostream&os,DblList&dlist){

DblNode*tempP;

intlen=dlist.Length();

os<

tempP=dlist.head->rlink;

while(tempP!=dlist.head){//循环输出链表各结点

os<Info;

tempP=tempP->rlink;

}

returnos;

}

#include"class.h"

#include"dblist.h"

#include

classLibrary{//封装图书馆流通业务的类

DblListitem;//在馆图书链表

DblListmag;//在馆杂志链表

DblListreader;//读者链表

DblListloan;//借阅信息链表

DblListmanager;//管理员信息链表

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();//读入图书馆信息

};

多给点分吧

上一篇 昌邑市人才资源和社会保障局在哪个地方(具体的位置)
下一篇 描写来自月亮的古诗
扫一扫,手机访问

扫一扫,手机浏览