}
1.4.3 操作步骤
如前例,不再赘述。
1.4.4源代码
#define StrNum 20 //本案例作了如下假设:即所有的字符串长度不超过20。 #include
private: char name[StrNum]; //书名 float price; //单价 public: Book();//构造函数 Book::Book(const char *Name,const float newPrice);//重载构造函数 char *get_name(); //获取书名 void setName(const char *newName); //设置书名 float get_price(); //获取单价 void setPrice(const float newPrice); //更改单价 };
// 下面是Book类的成员函数 Book::Book()//构造函数Book() {
strcpy(name,\ price=0; };
Book::Book(const char *Name,const float newPrice) //重载构造函数 {
strcpy (name,Name); price=newPrice; }
char *Book::get_name() //获取书名 {
return name; };
void Book::setName(const char *newName) //设置书名
{
strcpy(name,newName); };
float Book::get_price() //获取单价 { return price; }
void Book::setPrice(const float newPrice) //更改单价 { price=newPrice; }
class BookList { Book bookList[10]; //生成Book类对象数组,即图书列表数组 public: int bookNum; //存储图书列表中当前的图书数目 BookList() { bookNum=0; } void insert(char *newName,float newPrice)//添加新书信息功能函数 { bookList[bookNum].setName(newName); bookList[bookNum].setPrice(newPrice); bookNum++; } void showBook(int i) //输出一本图书 { //cout< if(i==bookNum) return -1; } void update(int i,char *newName)//修改图书信息功能函数 { bookList[i].setName(newName); } void deleted(int i)//删除图书信息功能函数 { for(int j=i;j<(bookNum-1);j++) { bookList[j].setName(bookList[j+1].get_name()); } bookNum--; } void showBook_title()//输出列名 { cout< ostream & operator << (ostream & cout1,Book & book) //运算符重载方法,输出图书信息 { cout1< 源程序文件: #include int main() { BookList bl; float pr; char Temp[20]; int f=1; while (f==1) { //输出主菜单 cout<<\添加 2.查询 3.修改 4.删除 5.显示全部 6.退出\\n\\n\ int xz; cin>>xz; if (xz==1) { //添加图书信息 cout<<\请输入新书的书名:\ cin>>Temp; cout<<\请输入新书的单价:\ cin>>pr; bl.insert(Temp,pr); bl.showBook(bl.bookNum-1); } if (xz==2) { //查找图书信息 cout<<\请要查找图书的书名:\ cin>>Temp; int x=bl.search(Temp); if( x>=0) bl.showBook(x); else cout<<\未找到该书!\} if (xz==3) { //修改图书信息 cout<<\请输入要修改图书的书名:\cin>>Temp; int y=bl.search(Temp); if( y>=0) { } } cout<<\请输入该图书新的书名:\ cin>>Temp; bl.update(y,Temp); bl.showBook(y); } else cout<<\未找到该书!\} if (xz==4) { //删除图书信息 cout<<\请输入要删除图书的书名:\ cin>>Temp; int z=bl.search(Temp); if( z>=0) { bl.deleted(z); cout<<\共有图书本数:\ } else cout<<\未找到该书!\} if (xz==5) { //显示所有图书 bl.showAll(); } if (xz==6) { f=0;//不符合循环条件退出 } 1.4.5进一步完善 1.可进一步完成对图书的增删查改功能的重复操作。 (1)完成对图书的增删查改功能的重复操作的思路:使用循环+条件判断 (2)进一步的详细思路 int f=1; while (f==1) { //输出主菜单 cout<<\添加 2.查询 3.修改 4.删除 5退出\\n\\n\ int xz; cin>>xz; if (xz==1) { //添加新书信息的功能代码 } if (xz==2) { //查询新书信息的功能代码 } if (xz==3) { //修改新书信息的功能代码 } if (xz==4) { //删除图书信息的功能代码 } if (xz==5) { f=0;//不符合循环条件退出 } 2. 例子中已实现流插入运算符重载实现一个Book对象数据的输出。读者尝试应用流提取运算符重载实现一个Book对象数据的输入。 1.4.6课外同步训练 项目一:面向对象程序设计——简单的学生信息管理系统 模块4:多态的应用 使用多态等面向对象编程技术,在上一节完成对多咯学生信息的增删查改功能的基础上,应用函数重载和运算符重载进一步完善类的初始化和输出功能。