帮忙看一个图书馆借还书程序,有劳各位了,该怎么解决
帮忙看一个图书馆借还书程序,有劳各位了
小弟才大学本科,C++学了一个学期了,感觉收获不小,期末老师出了一道上机题,要求:创建一个图书馆借还书程序,以实现借书和还书功能。每本书的最大库存为三本。教师最多能借六本书,学生最多能借四本书。
我们小组的程序两位老师只给了4.5(满分5分),原因是结构不清晰,没有实现重用,功能不完善。今天我又重新修改了一下我们的程序,做了比较大的更改,而且加了很多注释,这是我学C/C++以来第一次认真的写上注释,不知注释是不是这么写的?还有几个考虑过的问题至今没有解决,一个是图书馆管理员如何对图书进行管理,另外一个是读者如何查询欲借图书。请各位高手帮忙看一下这个程序,可能我的程序看起来显得幼稚,但请各位对我的程序易读性、算法的合理性、注释以及能想到的各方面进行评价,你的评价对我的C++学习很重要,劳烦各位了。
源程序如下:
//图书馆程序.cpp
//时间:2008年6月26日
//要求:创建一个图书馆借还书程序,以实现借书和还书功能。每本书的最大库存为三本。教师最多能借六本书,学生最多能借四本书。
/*
思路:分别创建图书类、学生类、教师类,教师类从学生类派生,继承学生类的数据成员和成员函数,实现重用。
在学生类中设置借书函数和还书函数,以实现借还书功能。程序中努力做好人机交互。
*/
#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;
}
} // display_all 函数结束
class student // student类,用以定义学生信息
{
public:
student(string nam , int num) //student构造函数
{
name=nam;
number=num;
}
void borrow(int); //定义借书成员函数
void back(int); //定义还书成员函数
protected:
string name; //学生姓名
int number; //在图书馆已经借了的书的数量
};
class teacher:public student //teacher类,teacher是student的派生类
{
public:
teacher ( string nam , int num, string t):student(nam , num ) //派生类构造函数
{
title=t;
}
private:
string title; //教师职称
};
void student::borrow(int a) //借书成员函数
{
int i,j; //定义两个整型变量,以便需要时使用
char k; //定义字符型变量以便进行Y/N的判断
void service(); //声明service函数
if(number>=a) //首先进行权限判断,如果读者已借图书数量不小于他的权限,则提示他不能借书了
小弟才大学本科,C++学了一个学期了,感觉收获不小,期末老师出了一道上机题,要求:创建一个图书馆借还书程序,以实现借书和还书功能。每本书的最大库存为三本。教师最多能借六本书,学生最多能借四本书。
我们小组的程序两位老师只给了4.5(满分5分),原因是结构不清晰,没有实现重用,功能不完善。今天我又重新修改了一下我们的程序,做了比较大的更改,而且加了很多注释,这是我学C/C++以来第一次认真的写上注释,不知注释是不是这么写的?还有几个考虑过的问题至今没有解决,一个是图书馆管理员如何对图书进行管理,另外一个是读者如何查询欲借图书。请各位高手帮忙看一下这个程序,可能我的程序看起来显得幼稚,但请各位对我的程序易读性、算法的合理性、注释以及能想到的各方面进行评价,你的评价对我的C++学习很重要,劳烦各位了。
源程序如下:
//图书馆程序.cpp
//时间:2008年6月26日
//要求:创建一个图书馆借还书程序,以实现借书和还书功能。每本书的最大库存为三本。教师最多能借六本书,学生最多能借四本书。
/*
思路:分别创建图书类、学生类、教师类,教师类从学生类派生,继承学生类的数据成员和成员函数,实现重用。
在学生类中设置借书函数和还书函数,以实现借还书功能。程序中努力做好人机交互。
*/
#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;
}
} // display_all 函数结束
class student // student类,用以定义学生信息
{
public:
student(string nam , int num) //student构造函数
{
name=nam;
number=num;
}
void borrow(int); //定义借书成员函数
void back(int); //定义还书成员函数
protected:
string name; //学生姓名
int number; //在图书馆已经借了的书的数量
};
class teacher:public student //teacher类,teacher是student的派生类
{
public:
teacher ( string nam , int num, string t):student(nam , num ) //派生类构造函数
{
title=t;
}
private:
string title; //教师职称
};
void student::borrow(int a) //借书成员函数
{
int i,j; //定义两个整型变量,以便需要时使用
char k; //定义字符型变量以便进行Y/N的判断
void service(); //声明service函数
if(number>=a) //首先进行权限判断,如果读者已借图书数量不小于他的权限,则提示他不能借书了