程序说明:
(1) 定义一个图书馆类Library,其主要功能是记录读者的借书卡号和书名
(2) 定义一个学生类Student,它的主要作用是记录读者的姓名
(3) 定义一个通过读者类Reader,它是Library和Student的派生类,它除了继承这两个类的数据成员, 还定义自己的 数据成员,通过该类可以了解到读者的上述所有信息,还记录读者的借还书日期
程序代码:
#include <iostream>
#include <time.h>
#include <string>
using namespace std;
class Library
{
protected:
char Card[10];
char Book[30];
public:
void SetLib();
void DispLib()
{
cout << "读者卡号: " <<Card<<endl;
cout << "书名: " << Book <<endl;
}
};
class Student
{
protected:
char Name[10];
public:
void SetStu()
{
cout << "请输入姓名: ";
cin >> Name;
}
void DispStu()
{
cout << "姓名: "<<Name<<endl;
}
};
//定义读者类,它是图书馆类学生类的派生类
class Reader:public Student,public Library
{
char datebuf[9]; //存放当前日期
int Date1[3]; //存放借书日期
int Date2[3]; //存放还书日期
public:
Reader();
void SetBor(); //输入读者信息
int Find(char n[]); //查找函数
void Display(); //显示函数
};
Reader::Reader()
{
_strdate(datebuf); //获取当前日期
//将字符型日期转换为整型,作为借书日期
Date1[0]=(datebuf[0]-'0')*10+datebuf[1]-'0'+2000;
Date1[1]=(datebuf[6]-'0')*10+datebuf[7]-'0';
Date1[2]=(datebuf[3]-'0')*10+datebuf[4]-'0';
//计算还书日期,忽略每月天数
Date2[2]=Date1[2];
if ((Date1[1]+1)>12)
{
Date2[1]=(Date1[1]+1)%12;
Date2[0]=Date1[0]+1;
}
else
{
Date2[0]=Date1[0];
Date2[1]=Date1[1]+1;
}
}
void Library::SetLib()
{
cout << "请输入借书卡号:";
cin >> Card;
cout <<"请输入书名: ";
cin >>Book;
cout <<endl;
}
void Reader::SetBor()
{
SetStu();
SetLib();
}
int Reader::Find(char *n)
{
if (strcmp(Name,n)==0) return 1;
else return 0;
}
void Reader::Display()
{
cout << "读者信息: "<<endl;
DispStu();
DispLib();
cout << "借书日期: "<<Date1[0]-1 <<"年"<<Date1[1]+1<<"月"<<Date1[2]<<"日"<<endl;
cout << "还书日期: "<<Date2[0]-1 <<"年"<<Date2[1]+1<<"月"<<Date2[2]<<"日"<<endl;
}
void main()
{
Reader *Stu;
char n[30];
int i,m;
cout <<"请输入人数: ";
cin >>m;
Stu=new Reader[m];
for (i=0;i<m;i++)
{
cout<<"\n请输入第"<<i+1<<"人信息:"<<endl;
Stu[i].SetBor();
}
for(i=0;i<m;i++)
Stu[i].Display();
cout <<"\n请输入要查找的人的姓名: ";
cin >>n;
for (i=0;i<m;i++)
{
if (Stu[i].Find(n))
{
Stu[i].Display();
cout<<endl;
break;
}
}
if (i==m)
cout << "没此人信息!"<<endl;
}
运行结果: