#pragma once
#include "Code.h"
#include "Item.h"
#include <iostream>
#include <fstream>
using namespace std;
template<typename T>
class Chain
{
public:
Chain(void){ list=0;}
Chain(T d){ list=new Code<T>(d);}
void Insert(T d);//头插入
void Display();//输出链表内容
Code<T> *Seek(T d);//查找链表中的数据
void DelCode(T d);//删除节点
int Length();//记录节点个数
Code<T> *Getlist();
private:
Code<T> *list;
Code<T> *end();
};
template<typename T>
Code<T> *Chain<T>::Getlist()
{
return list;
}
template<typename T>
void Chain<T>::Insert(T d)//头插入
{
Code<T> *p=new Code<T>(d);
p->next=list;
list=p;
}
template<typename T>
int Chain<T>::Length()//记录节点个数
{
int l=0;
Code<T> *p=list;
while(p)
{
l++;
p=p->next;
}
return l;
}
template<typename T>
void Chain<T>::Display()//输出链表内容
{
Code<T> *p;
p=list;
if(p==NULL)
cout<<"没有信息\n\n";
while(p)
{
(p->data).Display();
p=p->next;
}
}
template<typename T>
Code<T> *Chain<T>::Seek(T d)
{
Code<T> *p;
p=list;
if(p==NULL)
{
cout<<"链表为空!"<<endl;
return NULL;
}
else
{
if(*(p->data).SName()==*d.SName())
return p;
else
{
while(p!=NULL&&*(p->data).SName()!=*d.SName())
p=p->next;
if(p==NULL)
{
cout<<"要查询的数据不在此链表中!"<<endl;
return NULL;
}
else
return p;
}
}
}
template<typename T>
void Chain<T>::DelCode(T d)//删除节点
{
Code<T> *p1,*p2;
p1=p2=list;
if(list==NULL)
{
cout<<"链表为空,无节点可删!"<<endl;
return;
}
else
if(*(p1->data).SName()==*d.SName())
{
list=p1->next;
delete p1;
cout<<"删除节点成功!"<<endl;
}
else
{
while(p1!=NULL&&*(p1->data).SName()!=*d.SName())
{
p2=p1;p1=p1->next;
}
if(p1==NULL)
cout<<"没有要删除的节点!"<<endl;
else
{
p2->next=p1->next;
delete p1;
cout<<"删除节点成功!"<<endl;
}
}
}
#pragma once
template<typename T> class Chain;
template<typename T>
class Code
{
public:
friend class Chain<T>;
Code(T d);
Code(){}
public:
Code<T> *next;
T data;
};
template<typename T>
Code<T>::Code(T d)
{
data=d;
next=0;
}
#pragma once
#include"Item.h"
#include"Reader.h"
#include"Librarian.h"
#include"Data.h"
#include"Code.h"
class Bookborrow
{
public:
Item item;
Reader reader;
Librarian manager;
Data data;
public:
Bookborrow(){}
char *SName();
char *GetLibname();
char *GetItemname();
char *GetReadercode();
char *GetReadername();
void GetData();
void Display();
};
#include "Bookborrow.h"
char *Bookborrow::SName()
{
return item.GetTitle();
}
char *Bookborrow::GetItemname()
{
return item.GetTitle();
}
char *Bookborrow::GetLibname()
{
return manager.GetName();
}
char *Bookborrow::GetReadercode()
{
return reader.GetCode();
}
char *Bookborrow::GetReadername()
{
return reader.GetName();
}
void Bookborrow::GetData()
{
data.Display();
}
void Bookborrow::Display()
{
cout<<"读者图书证编号:"<<GetReadercode()<<endl;
cout<<"读者姓名:"<<GetReadername()<<endl;
cout<<"书名:"<<GetItemname()<<endl;
cout<<"借书时间:";
GetData();
cout<<"\n操作员姓名:"<<GetLibname()<<endl<<endl;
}
#pragma once
#include<iostream>
using namespace std;
class Data
{
public:
Data(int y=0,int m=0,int d=0);
void Display();
private:
int year,month,day;
};
#include "Data.h"
Data::Data(int y,int m,int d)
{
year=y;
month=m;
day=d;
}
void Data::Display()
{
cout<<year<<'/'<<month<<'/'<<day;
}
#pragma once
#include "Data.h"
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
class Item//图书类
{
private:
char Title[20];//书名
char Author[20];//作者名
char IndexCode[20];//分类号
char BarCode[20];//条码号
char EnterNumber[20];//登录号
char Press[20];//出版社
Data PublishData;//出版时间
double Price;//价格
int Number;//册数
int Onjia;//在架数
public:
char *GetTitle();//获取图书名
char *GetAuthor();//获取图书作者名
void DelOnjia();//Onjia-1
void AddOnjia();//Onjia+1
int GetOnjia();//获取图书册数
char *SName();
void SetData();
void Display();
Item(){}
};
还有好多没传上
温馨提示:答案为网友推荐,仅供参考