一个简单的图书馆管理程序

 程序说明:
(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;
}

 

 

运行结果:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值