永发信息网

用VC++编写图书借阅管理系统(源程序)

答案:2  悬赏:50  手机版
解决时间 2021-03-26 16:01
用VC++编写图书借阅管理系统(源程序)
最佳答案
#include
#include

class Book{ // 书籍基类
protected:
char Title[40]; // 书名
long Code; // 条码
int Type; // 0表示书,1表示杂志
public:
Book();
Book(char *title,long code);
void SetCode(long code){ Code = code; }
void SetTitle(char* tl){ strcpy(Title,tl); }
void SetType(bool type){Type = type; }
int GetType(){ return Type; }
long GetCode(){ return Code;}
virtual void Show(); // 显示书的信息
friend ostream& operator<<(ostream& , Book&); // 重载插入运算符
friend istream& operator>>(istream& is, Book&); // 重载提取运算符
Book *Next; // 为创建每个读者所借书链表而定义指针
};

class Item :public Book{ //书的款目
// char Title[40]; // 书名
char Author[20]; // 著者名
char IndexCode[10]; // 分类号
// long Code; // 条码
public:
Item();
Item(char *author,char *title,char *index,int code);
Item(Item &);
void SetAuthor(char*);
void SetIndexCode(char*);
virtual void Show(); // 显示书的信息
friend ostream& operator<<(ostream& os, Item&); // 重载插入运算符
friend istream& operator>>(istream& is, Item&); // 重载提取运算符
public:

};

class Magazine:public Book { //杂志类
int Volume;
enum LANG {CHINESE=1,ENGLISH} Lang; // 枚举变量,确定语言类别
public:
Magazine():Book(){Volume = 0; Lang = CHINESE; Type = 1; }
Magazine(char *title,int vol,LANG lang,int code);
Magazine(Magazine&);
void SetVolume(int vol){Volume = vol;}
void SetLang(int lang){Lang = (LANG)lang;}
virtual void Show(); // 显示杂志的信息
friend ostream& operator<<(ostream& os, Magazine&); // 重载插入运算符
friend istream& operator>>(istream& is, Magazine&); // 重载提取运算符
};

class Reader{ // 读者信息类

char Name[20]; // 姓名
char Position[20]; // 职务
int Age; // 年龄
long Code; // 借书证号
Book* items; // 所借书链表
public:
Reader();
Reader(char *name,char *posi,int age,int code);
// Reader(Reader&);
~Reader();
long GetCode(){return Code;}
void SetName(char*);
void SetPosition(char*);
void SetAge(int);
void SetCode(long);
void AddBook(Item); // 添加所借书
void AddBook(Magazine); // 添加所借杂志
void DelBook(Book it); // 还书后减少所借书
void ShowBooks(); // 显示所借书
void Show(); // 显示读者信息
friend ostream& operator<<(ostream& os, Reader&); // 重载插入运算符
friend istream& operator>>(istream& is, Reader&); // 重载提取运算符
public:
int Counter; //计数器,统计所借书数目
};

class Manager{ // 管理员类
char Name[20]; // 姓名
int Age; // 年龄
int Code; // 工号
friend class Library; // 将图书馆类声明为友元
public:
Manager(){}
Manager(char*,int,int);
long GetCode(){ return Code;}
void Show();
friend ostream& operator<<(ostream& os, Manager&); // 重载插入运算符
friend istream& operator>>(istream& is, Manager&); // 重载提取运算符
};

class Loan { // 借阅信息类
int Type; // 0表示书,1表示杂志
Item item; // 借阅书
Magazine mag; // 借阅杂志
Reader reader; // 借阅者
Manager manager; // 借书操作员
int Code;
friend class Library; // 将图书馆类声明为友元
public:
Loan(){ }
Loan(Loan & l);
int GetCode(){ return Code;}
void Show();
friend ostream& operator<<(ostream& os, Loan&); // 重载插入运算符
friend istream& operator>>(istream& is, Loan&); // 重载提取运算符
};
、、、、、、、、、、、、、、、、、、、、、、、
#include
#include
class Reader;
template class DblList;
template class DblNode{
public:
T Info;//数据域
DblNode *llink,*rlink; //前驱(左链)、后继(右链)指针
public:
DblNode(T data);//一般结点
DblNode();//头结点
T GetInfo(){return Info;};
friend class DblList;
friend class Library;
};

templateclass DblList{
DblNode *head,*current;
public:
DblList();
~DblList();
void Insert(const T& data);
DblNode* Remove(DblNode* p);
void Print();
int Length();//计算链表长度
DblNode *Find(T data);//搜索数据与定值相同的结点
DblNode* Find(int data);//按某个关键字查找
void MakeEmpty(); //清空链表
void ShowList(); //显示链表各结点
friend istream& operator>>(istream&, DblList&); // 重载输入流运算符

friend ostream& operator<<(ostream& os, DblList& dlist); // 重载输出流运算符
friend class Library;
//其它操作
};

template DblNode::DblNode(){
llink=rlink=NULL;
}
template DblNode::DblNode(T data){
info=data;
llink=NULL;
rlink=NULL;
}

template DblList::DblList(){//建立表头结点
head=new DblNode();
head->rlink=head->llink=head;
current=NULL;
}
template DblList::~DblList(){
MakeEmpty();//清空链表
delete head;
}
template void DblList::MakeEmpty(){
DblNode *tempP;
while(head->rlink!=head){
tempP=head->rlink;
head->rlink=tempP->rlink;//把头结点后的第一个节点从链中脱离
tempP->rlink->llink=head;//处理左指针
delete tempP; //删除(释放)脱离下来的结点
}
current=NULL; //current指针恢复
}
template void DblList::Insert(const T & data){//新节点在链尾
current=new DblNode;
current->Info=data;
current->rlink=head;//注意次序
current->llink=head->llink;
head->llink->rlink=current;
head->llink=current;//最后做
}
template DblNode* 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;
}
return current;
}

template DblNode* DblList::Find(T data){ // 按结点查找
current=head->rlink;
while(current!=head&¤t->Info!=data) current=current->rlink;
if(current==head) current=NULL;
return current;
}

template DblNode* DblList::Find(int data){ // 按数据值查找结点
current=head->rlink;
int temp =current->Info.GetCode();
while(current!=head&&temp!=data){
current=current->rlink;
temp = current->Info.GetCode();
}
if(current==head) current=NULL;
return current;
}

template void DblList::Print(){ // 输出链表
current=head->rlink;
while(current!=head){
cout<Info<<'\t';
current=current->rlink;
}
cout<}
template int DblList::Length(){ // 取得链表长度
int count=0;
current=head->rlink;
while(current!=head){
count++;
current=current->rlink;
}
return count;
}

template void DblList::ShowList(){ // 输出链表各结点
int count=0;
current=head->rlink;
while(current!=head){
current->GetInfo().Show();
current=current->rlink;
}
return ;
}

template
istream& operator>>(istream& is, DblList &dlist){
int len;
T tt; // 定义局部变量读入一个结点
is>>len;
for(int i= 0 ;iis>>tt;
dlist.Insert(tt);
}
return is;
}

template
ostream& operator<<(ostream& os, DblList &dlist){
DblNode *tempP;
int len = dlist.Length();
os<tempP=dlist.head->rlink;
while(tempP!=dlist.head){ // 循环输出链表各结点
os<Info;
tempP = tempP->rlink;
}
return os;
}
#include "class.h"
#include "dblist.h"
#include
class Library{ // 封装图书馆流通业务的类
DblList item; // 在馆图书链表
DblList mag; // 在馆杂志链表
DblList reader; // 读者链表
DblList loan; // 借阅信息链表
DblList manager; // 管理员信息链表

int itemNum; // 记录在馆图书数目
int magNum; // 记录在馆杂志数目
int readerNum; // 记录读者数目
int loanNum; // 记录借阅信息数目
int managerNum; // 记录管理员数目
ofstream itemFileOut; // 文件流对象,保存图书馆书籍数据
ifstream itemFileIn; // 文件流对象,读入图书馆书籍数据
ofstream magFileOut; // 文件流对象,保存图书馆杂志数据
ifstream magFileIn; // 文件流对象,读入图书馆杂志数据
ofstream readerFileOut; // 文件流对象,保存图书馆读者数据
ifstream readerFileIn; // 文件流对象,读入图书馆读者数据
ofstream loanFileOut; // 文件流对象,保存图书馆借阅信息数据
ifstream loanFileIn; // 文件流对象,读入图书馆借阅信息
ofstream managerFileOut; // 文件流对象,保存图书馆管理员数据
ifstream managerFileIn; // 文件流对象,读入图书馆管理员数据
public:
Library(); // 构造函数
~Library(); //析构函数
void Run(); // 图书馆类的运行函数
void CreateBibliotheca(); // 创建书目
void CreateReader(); // 创建读者库
void CreateManager(); // 创建管理员信息
int ShowMainMenu(); // 显示主菜单函数
void Borrow(); // 借书操作
void Return(); // 还书操作
void Require(); // 查询操作
void SaveInfo(); // 保存图书馆信息
void OpenInfo(); // 读入图书馆信息
};
全部回答
你在这里能问到吗?
这样的东西是要人民币的。
去找个人做吧,网上是不会有人告诉你的。
我的技术还不允许。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
。这件防风服好看吗,28岁的男生穿
单选题西藏自治区的绝大部分藏族和门巴、珞巴
18-55毫米的相机镜头是多少倍光学变焦
请问深圳哪些互金公司加入了中国互金协会?谢
重庆相邻省市好玩的地方
女人是rh阴性血男人是a型血,生出来的孩子会是
韩牛是什么
求助:同一国在同一年为何有几个不同的GDP统
经济之声的节目编排
小叶苦丁在哪有卖?
如何使用共OfO单车
腰左右两边疼痛是什么
如何学习控银天下这款炒币软件
怎么写,10点前回答谢
7654321怎样添加一些加号算式等于64
推荐资讯
想设计一个计时电路,给电计时,断电停止计时
羊肉用生姜好还是沙姜好
招商局考试怎么复习
问一个成年人的问题;男人的小弟睡着的时候和
求助,佳能 7D 相机 的存储卡
国立汽服发展前景怎么样?怎么才能成为其加盟
TPE包胶和TPR包胶缺陷解决方法
汤沟世藏这酒咋样,是多高度还是低度酒?
沈阳五中怎么样
ie9 经常假死
红叶牌电钢琴伴奏型一览表
一块六伏十二安是的电瓶能和五块十二伏二十安
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?