数据结构——基于顺序表管理图书信息

​#include 
#include
#include
using namespace std;
#define MAXSIZE 10000typedef struct
{string no;string name;double price;
}Book;typedef struct
{Book *elem;int num;
}SqList;
//价格处理
void Aver(SqList &L)
{double aver = 0, sum = 0; int i = 0;for (i = 0; i < L.num; i++)sum = sum + L.elem[i].price;aver = sum / L.num;for (i = 0; i < L.num; i++){if (L.elem[i].price < aver)L.elem[i].price = 1.2*L.elem[i].price;else if (L.elem[i].price >= aver)L.elem[i].price = 1.1*L.elem[i].price;}cout << setiosflags(ios::fixed) << setprecision(2) << aver << endl;
}
//根据价格排序
void Sort(SqList &L)
{int i = 0, j = 0;//冒泡排序for (i = 0; i < L.num - 1; i++)for (j = 0; j < L.num - 1 - i; j++)if (L.elem[j].price < L.elem[j + 1].price){Book temp;temp = L.elem[j];L.elem[j] = L.elem[j + 1];L.elem[j + 1] = temp;}
}
//输入图书信息
void Input(SqList &L)
{int n, i = 0;string a, b;double c;cin >> n;while (i> a >> b >> c;if (i == n)break;L.elem[L.num].no = a;L.elem[L.num].name = b;L.elem[L.num].price = c;L.num++;i++;}return;
}
//输出图书信息
void Output(SqList &L)
{//cout << L.num << endl;int i;for (i = 0; i <= L.num - 1; i++)cout << L.elem[i].no << " " << L.elem[i].name << " " << setiosflags(ios::fixed) << setprecision(2) << L.elem[i].price << endl;return;
}
//初始化
void InitList(SqList &L)
{L.elem = new Book[MAXSIZE];if (!L.elem) return;L.num = 0;return;
}
//逆序存储
void Upsidedown(SqList &L)
{//逆序存储int i;for (i = 0; i < L.num / 2; i++){Book temp;temp = L.elem[i];L.elem[i] = L.elem[L.num - 1 - i];L.elem[L.num - 1 - i] = temp;}}
//最大价格
void mostexpen(SqList &L)
{Book max = L.elem[0];int flag[MAXSIZE];int i = 0, k = 0;for (i = 0; i < L.num - 1; i++){if (L.elem[i].price > max.price){max = L.elem[i];}}for (i = 0; i < L.num - 1; i++){if (L.elem[i].price == max.price){flag[k] = i;k++;}}cout << k << endl;for (i = 0; i <= k-1; i++)cout << L.elem[flag[i]].no << " " << L.elem[flag[i]].name << " " << setiosflags(ios::fixed) << setprecision(2) << L.elem[flag[i]].price << endl;return;
}
//最爱书籍
void favourite(SqList &L)
{int n; int i; int j; string fav[10];	int flag[MAXSIZE]; int k = 0;cin >> n;for (i = 0; i < n; i++){cin >> fav[i];}for (j = 0; j < n; j++){for (i = 0; i < L.num - 1; i++){if (fav[j] == L.elem[i].name){flag[k] = i;k++;}}if (k == j)cout << "Sorry,there is no your favourite!" << endl;else{cout << k << endl;for (i = 0; i < k; i++)cout << L.elem[flag[i]].no << " " << L.elem[flag[i]].name << " " << setiosflags(ios::fixed) << setprecision(2) << L.elem[flag[i]].price << endl;}}}
//位置查找
void BestLocate(SqList &L)
{int n; int i; int j; int no[10]; int k = 0;cin >> n;for (i = 0; i < n; i++){cin >> no[i];}for (j = 0; j < n; j++){for (i = 0; i < L.num - 1; i++){if (no[j] == i + 1){cout << L.elem[i].no << " " << L.elem[i].name << " " << setiosflags(ios::fixed) << setprecision(2) << L.elem[i].price << endl;k++;}}if (k == j)cout << "Sorry,the book on the best position doesn't exist!" << endl;}
}
//添加书籍
void Add(SqList &L)
{int no; Book add; int j;cin >> no;cin >> add.no >> add.name >> add.price;if (no > L.num + 1 || no < 1){cout << "Sorry,the position to be inserted is invalid!" << endl;return;}for (j = L.num - 1; j >= no - 1; j--){L.elem[j + 1] = L.elem[j];}L.elem[no - 1] = add;L.num++;Output(L);return;
}
//删除书籍
void Del(SqList &L)
{int no; int i;cin >> no;if (no > L.num || no < 1){cout << "Sorry,the position to be deleted is invalid!" << endl;return;}for (i = no; i < L.num; i++){L.elem[i - 1] = L.elem[i];}L.num--;Output(L);return;
}
//两个参数,删除书籍
void Delete(SqList &L, int no)//no为要删除的位置,即数组下标+1 
{int i;if (no > L.num || no < 1){cout << "Sorry,the position to be deleted is invalid!" << endl;return;}for (i = no; i < L.num; i++){L.elem[i - 1] = L.elem[i];}L.num--;//Output(L);return;
}
//去重操作
void DeleteSame(SqList &L)
{int i, j;for (i = 0; i < L.num; i++)//遍历L1{for (j = 1; j < L.num; j++)if (L.elem[i].no == L.elem[j].no && i != j){Delete(L, j + 1);}}cout << L.num << endl;Output(L);
}int main()
{SqList L;InitList(L);Input(L);//Upsidedown(L);//Sort(L);//Aver(L);//Add(L);//Del(L);DeleteSame(L);//BestLocate(L);//favourite(L); //Upsidedown(L);//mostexpen(L);//Output(L);return 0;
}[点击并拖拽以移动]
​

实现了图书管理系统的相关功能

我会继续写下去,即使没有人看hhhh

 

 

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部