第一篇原创,代码写的不忍直视.....不过还好把它做出来啦。不多说,上代码
#include <iostream>
#include <fstream>
#include <string>
#define MAXSIZE 1000000
using namespace std;
char s0[10],s1[10],s2[10]; //存放3个标题性信息
int flag = 0; //图书信息读取标记
int num; //记录图书个数
float ave; //记录所有书平均价格
typedef struct Book {
char no[20];
char name[50];
float price;
}Book;
typedef struct SqList {
Book *elem;
int length;
}Sqlist;
SqList book;
void CreatSqList(SqList &book) {
book.elem = new Book[MAXSIZE];
book.length = 0;
}
void Input() {
int i = 0;
ifstream inFile("book.txt");
if(!inFile) {
cout << "Can't open this file!!" << endl;
exit(1);
}
else {
inFile >> s0 >> s1 >> s2; //ISBN 书名 定价
while(!inFile.eof()) {
inFile >> book.elem[i].no >> book.elem[i].name >> book.elem[i].price;
i++;
num = i;
}
inFile.close();
flag = 1;
cout << "读取完毕!" << endl;
}
}
void Output() {
int i = 0;
if(flag==0) {
cout << "还未读取图书!!!" << endl;
}
else {
cout << "书号 书名 价格:" << '\n';
while(i<num) {
cout << book.elem[i].no << "\t" << book.elem[i].name << "\t" << book.elem[i].price << endl;
i++;
}
cout << endl << "信息显示完毕!" << endl;
}
}
void OutputN() {
cout << "图书个数为:" << num << endl;
}
void OutputM() {
int i;
Book b;
if(flag==0) {
cout << "还未读取图书!!!" << endl;
}
cout << "价格最高图书信息为:" << endl;
cout << "书号 书名 价格:" << '\n';
for(i=0;i<num-1;i++) {
if(book.elem[i].price>book.elem[i+1].price) {
b = book.elem[i];
book.elem[i] = book.elem[i+1];
book.elem[i+1] = b;
}
}
for(i=0;i<num;i++) {
if(book.elem[i].price == book.elem[num-1].price) {
cout << book.elem[i].no << "\t" << book.elem[i].name << "\t" << book.elem[i].price << endl;
}
}
}
void Average() {
int i;
float sum = 0;
if(flag==0) {
cout << "还未读取图书!!!" << endl;
}
for(i=0;i<num;i++) {
sum = sum + book.elem[i].price;
}
ave = sum/num;
cout << "平均价格为:" << ave << endl;
}
void SearchN() {
int i;
int n = 0; //记录相同书名图书个数
char NAME[20];
if(flag==0) {
cout << "还未读取图书!!!" << endl;
}
cout << "请输入需要查找的书名:" ;
cin >> NAME;
cout << endl;
for(i=0;i<num;i++) { //字符串比较函数strcmp
if(strcmp(book.elem[i].name,NAME) == 0) {
cout << "书名 书号 价格:" << endl;
cout << book.elem[i].name << "\t" << book.elem[i].no << "\t" << book.elem[i].price << endl;
n = n + 1;
}
}
if(n==0) {
cout << "没有您需要的图书!" << endl;
}
while(i<num) {
cout << book.elem[i].no << "\t" << book.elem[i].name << "\t" << book.elem[i].price << endl;
i++;
}
}
void SearchP() {
int p;
if(flag==0) {
cout << "还未读取图书!!!" << endl;
}
cout << "请输入需要查找图书的位置:";
cin >> p;
cout << endl;
ifstream inFile("book.txt");
inFile >> s0 >> s1 >> s2; //ISBN 书名 定价
for(int i=0;!inFile.eof();i++) {
inFile >> book.elem[i].no >> book.elem[i].name >> book.elem[i].price;
num = i;
}
inFile.close();
if(p<1 || p>num) {
cout << "位置输入错误!" << endl;
}
else {
cout << "该图书信息为:" << "书号 书名 价格:" << endl;
cout << book.elem[p-1].no << "\t" << book.elem[p-1].name << "\t" << book.elem[p-1].price << endl;
}
}
void Insert() {
int i; //位置
int j;
Book bk; //插入的图书
if(flag==0) {
cout << "还未读取图书!!!" << endl;
}
cout << "请输入插入位置:";
cin >> i;
cout << endl;
cout << "请输入书号:";
cin >> bk.no;
cout << "请输入书名:";
cin >> bk.name;
cout << "请输入价格:";
cin >> bk.price;
ifstream inFile("book.txt");
inFile >> s0 >> s1 >> s2; //ISBN 书名 定价
for(i=0;!inFile.eof();i++) {
inFile >> book.elem[i].no >> book.elem[i].name >> book.elem[i].price;
num = i;
}
inFile.close();
if(i<1 || i>num+1) {
cout << "插入位置错误!" << endl;
}
if(num == MAXSIZE) {
cout << "没有位置可以插入!" << endl;
}
if(1<i && i<=num+1 && num != MAXSIZE) {
for(j=num-1;j>=i-1;j--) {
book.elem[j+1] = book.elem[j];
}
book.elem[i-1] = bk;
++num;
++book.length;
}
ofstream outFile("book.txt");
outFile << s0 << "\t" << s1 << "\t" << s2 << endl;
for(j=0;j<num;j++) {
outFile << book.elem[j].no << "\t" << book.elem[j].name << "\t" << book.elem[j].price << endl;
}
}
void Delete() {
int i; //位置
int j;
if(flag==0) {
cout << "还未读取图书!!!" << endl;
}
ifstream inFile("book.txt");
inFile >> s0 >> s1 >> s2; //ISBN 书名 定价
for(j=0;!inFile.eof();j++) {
inFile >> book.elem[j].no >> book.elem[j].name >> book.elem[j].price;
num = j;
}
inFile.close();
cout << "请输入将要删除图书的位置:";
cin >> i;
if(i<1||i>num) {
cout << "位置输入错误!" << endl;
}
else {
for(j=i;j<=num-1;j++) {
book.elem[j-1] = book.elem[j];
}
--num;
--book.length;
ofstream outFile("book.txt");
outFile << s0 << "\t" << s1 << "\t" << s2 << endl;
for(j=0;j<num;j++) {
outFile << book.elem[j].no << "\t" << book.elem[j].name << "\t" << book.elem[j].price << endl;
}
}
}
void Reverse() { //逆序输出
int i,j;
Book bk;
if(flag==0) {
cout << "还未读取图书!!!" << endl;
}
ifstream inFile("book.txt");
inFile >> s0 >> s1 >> s2; //ISBN 书名 定价
for(j=0;!inFile.eof();j++) {
inFile >> book.elem[j].no >> book.elem[j].name >> book.elem[j].price;
num = j+1;
}
inFile.close();
for(i=0;i<num/2;i++) {
bk = book.elem[i];
book.elem[i] = book.elem[num-i-1];
book.elem[num-i-1] = bk;
}
ofstream outFile("book_inverser.txt");
outFile << s0 << "\t" << s1 << "\t" << s2 << endl;
for(i=0;i<num;i++) {
outFile << book.elem[i].no << "\t" << book.elem[i].name << "\t" << book.elem[i].price << endl;
}
cout << "完毕!请输入数字继续:" << endl;
}
void Ascende() { //升序输出
int i,j;
Book bk;
if(flag==0) {
cout << "还未读取图书!!!" << endl;
}
ifstream inFile("book.txt");
inFile >> s0 >> s1 >> s2; //ISBN 书名 定价
for(j=0;!inFile.eof();j++) {
inFile >> book.elem[j].no >> book.elem[j].name >> book.elem[j].price;
num = j+1;
}
inFile.close();
for(i=0;i<num;i++) {
for(j=0;j<num-i-1;j++) {
if(book.elem[j].price > book.elem[j+1].price) {
bk = book.elem[j];
book.elem[j] = book.elem[j+1];
book.elem[j+1] = bk;
}
}
}
ofstream outFile("book_sort.txt");
outFile << s0 << "\t" << s1 << "\t" << s2 << endl;
for(i=0;i<num;i++) {
outFile << book.elem[i].no << "\t" << book.elem[i].name << "\t" << book.elem[i].price << endl;
}
cout << "完毕!请输入数字继续:" << endl;
}
int main() {
int n;
CreatSqList(book);
while(1) {
cout << "************************************************************************" << endl;
cout << " | 欢迎进入图书管理系统~! |" << endl;
cout << " | |" << endl;
cout << " | 请输入数字选择服务: |" << endl;
cout << " | 1.读入图书信息 |" << endl;
cout << " | 2.显示图书信息 |" << endl;
cout << " | 3.输出表中图书个数 |" << endl;
cout << " | 4.输出价格最高图书 |" << endl;
cout << " | 5.输出图书的平均价格 |" << endl;
cout << " | 6.根据书名查找图书 |" << endl;
cout << " | 7.根据位置查找图书 |" << endl;
cout << " | 8.插入图书 |" << endl;
cout << " | 9.删除指定图书 |" << endl;
cout << " | 10.逆序输出图书 |" << endl;
cout << " | 11.升序输出图书 |" << endl;
cout << " | 0.退出系统 |" << endl;
cout << "***********************************************************************" << endl << endl;
cin >> n;
switch(n) {
case 1:Input();break;
case 2:Output();break;
case 3:OutputN();break;
case 4:OutputM();break;
case 5:Average();break;
case 6:SearchN();break;
case 7:SearchP();break;
case 8:Insert();break;
case 9:Delete();break;
case 10:Reverse();break;
case 11:Ascende();break;
case 0:cout << "欢迎再次使用~" << endl;
exit(0);
default:
cout << "请选择正确的操作!!!" << endl;
break;
}
}
return 0;
}