// booklistOfLibrary.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdlib.h>
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<string>
using namespace std;
const int size = 20;
struct bookList
{
string identifier;//编号
string bookName;//书名
string publisher;//出版社
float bookPrice;//单本书价格
int bookNum;//书的数量
float totalPrice;//总价格
};
void storage(bookList list[], int row);//功能1:将文件中的信息存储到内存单元
void countBook(bookList list[], int row);//功能2:统计清华大学出版社和高等教育出版社出版读物的数量。
void findBook(bookList list[], int row);//功能3:寻找总价最低 和最高的书种,并输出价格。
void findBookName(string nameOfbook);//功能4:寻找书籍,并输出其全部信息,若找不到则提示找不到。
double calculateAve(bookList list[], int row);//计算所有种类书籍总价的平均值;
int main()
{
using namespace std;
int row = 11;
bookList list[11];
storage(list, row);
countBook(list, row);
findBook(list, row);
int ave = calculateAve(list, row);
cout << "所有种类书籍总价的平均值是:" << ave << endl;
cout << "请输入需要查询的馆藏读物:" << endl;
string str;
cin >> str;
findBookName(str);
system("pause");
return 0;
}
void storage(bookList list[], int row)
{
using namespace std;
ifstream inFile;
int n = 0;
string str;
inFile.open("1.txt");
if (!inFile.is_open())
{
cout << "打开文件1.txt失败!!!" << endl;
exit(EXIT_FAILURE);
}
else {
while (!inFile.eof() && n < 11)
{
inFile >> str; list[n].identifier = str;
inFile >> str; list[n].bookName = str;
inFile >> str; list[n].publisher = str;
inFile >> str; float a = atof(str.c_str()); list[n].bookPrice = a;
inFile >> str; int b = atoi(str.c_str()); list[n].bookNum = b;
inFile >> str; float c = atof(str.c_str()); list[n].totalPrice = c;
cout << endl;
cout << list[n].identifier << " " << list[n].bookName << " " << list[n].publisher << " " << list[n].bookPrice << " " << list[n].bookNum << endl;
n++;
}
}
inFile.close();
}
void countBook(bookList list[], int row)
{
using namespace std;
//string publisherOne = "清华大学出版社";
//string publisherTwo = "高等教育出版社";
int qhCount = 0;
int gdCount = 0;
for (int i = 0; i < row; i++)
{
if (list[i].publisher.compare("清华大学出版社") == 0) qhCount++;
else if (list[i].publisher.compare("高等教育出版社") == 0) gdCount++;
}
cout << "图书馆中共有清华大学出版社出版的读物" << qhCount << "种" << endl;
cout << "图书馆中共有高等教育出版社出版的读物" << gdCount << "种" << endl;
}
void findBook(bookList list[], int row)
{
using namespace std;
float temp = list[0].totalPrice;
for (int i = 1; i < row; i++)
{
if (temp < list[i].totalPrice)
{
temp = list[i].totalPrice;
}
}
cout << "总价最高:" << temp << endl;
cout << "总价最低:" << list[6].totalPrice << endl;
}
void findBookName(string nameOfbook)
{
using namespace std;
ifstream in("1.txt");
string line, str;
while (!in.eof())
{
in >> str;
if (nameOfbook.compare(str) == 0)
{
getline(in, line);
cout << line << endl;
}
}
}double calculateAve(bookList list[], int row)
{
float sum = 0.0;
for (int i = 2; i < row; i++)
{
sum += list[i].totalPrice;
}
return sum/10 ;
}