求助:实现图书馆借书系统

实现图书馆借书系统,其功能包括:
(1) 申请新的图书证;
(2) 注销图书证;
(3) 图书查询,方式包括按书名、作者、关键字查询等;
(4) 借书(包括续借、预约);
(5) 书到期后,发送还书的通知;
(6) 还书(包括过期罚款);
(7) 读者状态查询;
(8) 读者个人信息修改(包括修改密码)。
希望高手尽量能明天下午之前回答,过期对我来说没有意义了,万分感谢谢。
如果可实现上述功能,或者大部分实现,将追加至满分。
C++实现的,谢谢了

#include <iostream>
#include <string>
using namespace std;

class Book //设置图书馆藏书类,用以封存图书信息
{
public:
Book (string n, int N, string p) //图书类构造函数
{
name = n; //设置图书书名
NO = N; //设置图书库存量
publisher = p; //设置图书出版社
}

void display() //display函数,以显示图书信息
{
cout << "书名:" << name << endl;
cout << "目前库存:" << NO << endl;
cout << "图书出版社:" << publisher << endl;
cout << endl;
}

//为方便调用,以下数据全部定义为公用
string name; //图书书名
int NO; //图书库存量
string publisher; //图书出版社
};

//创建图书馆藏书小数据库,图书序号等于该对象数组的下标
Book book[6] =
{
Book ("C++ primer", 3, "人民邮电出版社") ,
Book ("Python核心编程", 3, "人民邮电出版社") ,
Book ("Writing clean code", 3, "电子工业出版社") ,
Book ("简体中文Solaris 10用户指南", 3, "Sun Microsystems, Inc") ,
Book ("《The C Programming Language》第二版", 3, "机械工业出版社") ,
Book ("计算机程序设计艺术第三版第一卷:基本算法", 3, "国防工业出版社")
};

void display_all() //显示图书馆所有图书,方便读者借阅
{
int i;

cout << "这是图书馆的所有图书" << endl;
for (i = 0; i<6; i++)
{
cout << "图书序号:" << i << endl;
cout << "书名:" << book[i].name << endl;
cout << "目前库存:" << book[i].NO << endl;
cout << "图书出版社:" << book[i].publisher << endl;
cout << endl;
}
}

class people
{
public:
people(string nam, int num) //student构造函数
{
name = nam;
number = num;
}
void borrow(int); //定义借书成员函数
void back(int); //定义还书成员函数
private:
string name; //性名
int number; //在图书馆已借图书数量
};
// student类,用以定义学生信息
class student : public people
{
public:
student(string nam, int num, int gra) : people (nam, num) //student构造函数
{
grade = gra;
}

private:
int grade; //学生年级
};

//teacher类,teacher是student的派生类
class teacher : public people
{
public:
teacher(string nam, int num, string t) : people(nam , num) //派生类构造函数
{
title = t; //教师职称
}

private:
string title; //教师职称
};

void people :: borrow (int a) //借书成员函数
{
int i, j; //定义两个整型变量,以便需要shirt使用
char k; //定义字符型变量以便进行Y/N的判断

void service() ; //声明service函数

if (number >= a) //首先进行权限判断,如果读者已借书数量不小于他的权限,则提示进行其他操作
{
cout << "根据您的权限,你最多能借" << a << "本书!您现在不能借书欢迎下次再来" << endl;
cout << "您是否想进行其他操作? (是请输入y, 退出请输入n) " << endl;
cin >> k;
if (k == 121)
service ();
if (k == 121)
return;
else if (k = 110)
return;
cout << endl;
}
else
{
display_all() ; //调用display_all函数,输出所有图书显示,方便读者借阅

cout << "您想借哪本书? 请输入图书序号0-5" << endl;
cin >> i;
while (book[i].NO == 0 || i>5 || i<0) //判断所要借图书的库存及输入的合法性
{
cout << "您输入的图书序号错误或者所借书库存不足,请重新输入.图书序号是0-5" << endl;
cin >> i;

//提示读者是否进行其他操作
cout << "您是否想进行其他操作? (是请输入y, 继续借书请输入n) " << endl;
cin >> k;
if (k == 121)
service (); //如果读者要进行其他操作,则引用service函数,对读者进行重新引导
if (k == 121)
return; //进行其他操作完毕,直接跳出borrow函数
else
continue; //若读者选择继续借书,则跳出本次循环,进行下一次循环

}
cout << endl; //此处还行是为了人机界面的美观
cout << "以下是您要借的书籍的信息" << endl;

book[i].display();

cout << "您想借几本书?" << endl;
cin>>j;

//判断读者的权限、图书馆库存及输入的合法性
while ((a-number)<j || book[i].NO<j || j<0 || j>3)
{
cout << "因为你的权限不够、数量输入有误或者图书馆库存不足,";
cout << "你目前不能借这么多书!请输入一个合适的数目." << endl;
cin>>j;

//提示读者是否进行其他操作
cout << "您是否想进行其他操作? (是请输入y, 继续借书请输入n) " << endl;
cin>>k;
if (k == 121)
service();
if (k == 121)
return;
else
continue;
cout << endl;

}

book[i].NO = book[i].NO - j; //借书完毕,对图书馆的小数据库从新调整一下
number = number + j; //借书完毕,读者已借书籍数量要加上现在借的书数量
cout << endl;
cout << "您在图书馆还可以借 " << a - number << " 本书" << endl;
cout << "《" << book[i].name << "》" << "目前剩余" << book[i].NO << "本" << endl;
}
} //borrow函数结束

void people::back (int a) //还书成员函数
{
int n, m;
char k;

void service() ;

cout << "您要还哪本书" << endl;
cin >> n;
while (book[n].NO = 3) //判断图书馆库存,库存是满的,那就没人从这借过这种书而且没还
{
cout << "您借过这本书吗?请重新输入图书序号. " << endl;
cin>>n;
cout << "您是否想进行其他操作? (是请输入y, 继续还书请输入n) " << endl;
cin>>k;
if (k == 121)
service();
if (k == 121)
return;
else
continue;
cout << endl;
}
while (n>5 || n<0) //判断读者所要借的书是否存在
{
cout << "您输入的图书序号错误,请重新输入.图书序号是0-5. " << endl;
cin>>n;
cout << "您是否想进行其他操作? (是请输入y, 继续还书请输入n) " << endl;
cin >> k;
if (k == 121)
service () ;
if (k == 121)
return;
else
continue;
cout << endl;

}
cout << endl; //此处换行是为了人机界面的美观

cout << "以下是您要借的书籍的信息" << endl;
book[n].display () ;

cout << "你要还几本书" << endl;
cin >> m;

//判断图书馆这种书的库存是否小于读者要还的书的数量,及读者输入的合法性
while ((3-book[n].NO) <m || m>3)
{
cout << "您有借过这么多书吗?请重新输入." << endl;
cin >> m;
cout << "您是否想进行其他操作? (是请输入y, 继续借书请输入n) " << endl;
cin >> k;
if (k == 121)
service ();
if (k == 121)
return;
else if (k = 110)
continue;
cout << endl;

}
book[n].NO += m; //还书完毕,及时对图书馆的数据库进行整理
number -= m; //读者已借书籍数减轻现在所还书籍数量

//以下是一些给读者的提示信息
cout << "恭喜!您还书成功!" << endl;
cout << "你还可以借 " << a-number << " 本书!" << endl;
} //back函数结束

void service () //service函数,完成对读者的服务、询问功能
{
int a;
int b;

student stud("ming", 0, 2007); //定义student类的对象stu,并初始化
teacher tea("li", 0, "assistant"); //定义teacher类的对象tea,并初始化

//询问读者身份,给出选项
cout << "欢迎来到图书馆,请问您的身份是: (请输入首数字) " << endl;
cout << "1.教师" << endl;
cout << "2.学生" << endl;
cin >> a;

while (a != 1 && a != 2) //对读者的错误输入进行提醒
{
cout << "请输入正确的选项:" << endl;
cin >> a;
}
cout << endl;
cout << "请问您想要: (请输入首数字) " << endl; //询问读者所希望进行的工作,给出选项
cout << "1.借书" << endl;
cout << "2.还书" << endl;
cout << "3.离开借书台" << endl;
cin >> b;
while (b != 1 && b != 2 && b != 3) //对读者的错误输入进行提醒
{
cout << "请输入正确的选项" << endl;
cin >> b;
}
cout << endl;

if (a == 1) //如果读者是老师,则进行以下操作
{
if (b == 1)
{
tea.borrow(6); //调用借书函数
}
else if (b == 2)
{
tea.back(6); //调用还书函数
}
else
{
cout << " = ^_^ = 谢谢您的光临!\n" << endl; //退出
}
}
else if (a == 2) //如果读者是学生,则进行以下操作
{
if (b == 1)
{
stud.borrow(4);
}
else if (b == 2)
{
stud.back(4);
}
else
{
cout << " = ^_^ = 谢谢您的光临!\n" << endl;
return;
}

}
cout << endl;

} //service函数结束

//主函数
int main()
{
char k;

service() ;

while (1) //操作完毕,提示读者是否进行其他操作。
{
cout << "是否继续进行其他操作?";
cout << " (进行其他操作请输入y, 退出请输入n) " << endl;
cin >> k;
cout << endl;
if (k == 121)
service ();
else
cout << " = ^_^ = 谢谢您的光临!\n" << endl;
break;
}

return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-01-15
留个脚印,回去看看
第2个回答  2009-01-15
吃完饭帮你写个。。有分当然要赚啦^^
第3个回答  2009-01-15
你这样不是很好,这个我们要是给你了,我们无所谓,你还是不会。这样值吗?
第4个回答  2009-01-15
给你的hi baidu留言了
第5个回答  2019-04-12
lz,你这是一个小系统了。。
如果你增分
我会考虑帮你做滴。。嘿嘿