当我们又一些C语言基础的时候,读到第一章中的编写一个程序来解决简单的书店问题时,我们不由的会想写一个程序练一下手试试,在我把自己的程序写完之前,我想还是对第一章书店问题进行一个简单的描述吧。
问题如下:
我们的书店保存所有销售记录的档案,每条记录报存了某本书的一次销售的信息(一册或多册)。每条记录包含三个数据项:
0-201-70353-X 4 24.99
第一项是书的ISBN号(国际标准书号,一本书的唯一标识),第二项是售出的册数,最后一项是书的单价。有时,书店老板需要查询此档案,计算每本书的销售量、销售额及平均售价。
好了,问题描述完了,作为一位标准的写C程序出身的程序员,肯定会这样去思考问题,定义一个结构体,我们暂且把这个结构体叫做library_book_info_st,里面包含3个成员,分别为isbn,count,price。结构体定义如下:
typedef struct _library_book_info_st
{
string isbn;
unsigned int count;
double price;
} library_book_info_st;
然后我们开始编写主体功能,
#define MAX_BOOK_SIZE 100
static library_book_info_st book_info[MAX_BOOK_SIZE];
static unsinged int index = 0;
int main(int argc, char *argv[])
{
int i = 0;
int result = 0;
std::string str_isbn;
library_book_info_st temp = {0};
for(i=0; i<MAX_BOOK_SIZE; i++)
{
memset(book_info[I], 0x00, sizeof(library_book_info_st));
}
std::cout<< "please input the book followwing info(isbn count price):" <<std::endl;
while(std::cin >> temp.isbn>>temp.count>>temp.price)
{
book_info[index++] = temp;
std::cout<< "please input the book followwing info(isbn count price):" <<std::endl;
}
std::cout<< "please input the isbn of the book we nedd query: ";
std::cin >> str_isbn;
for(i=0; i<index; i++)
{
if( str_isbn.compare(book_info[i].isbn)== 0)
{
break;
}
}
if( i < index)
std::cout<<"ISBN:"<<book_info[i].isbn<<" count:"<<book_info[i].count<<" price:"<<book_info[i].price<< std::endl;
else
std::cout << " no book with isbn = "<< str_isbn << std::endl;
return result;
}
在上面程序当中,我们使用了C++中的string类型,std命令空间,cin和cout作为输入和输出,所以感觉是一个很标准的C++程序写的,这也是我开始对c++的认识,但是我想说的是,这里面缺少了c++的灵魂-“面向对象的思想”,这个我暂时抛出这个话题,后面我们还会回顾这个问题的,好了,图书管也要闭馆了,我得溜了。。。。。。。