数据结构项目—— 用顺序表制作图书管理系统

《图书信息管理系统》的制作:

在这里插入图片描述
全部代码如下(各部分已注释):

#include "pch.h"
#include
#include
#include 
#include using namespace std;
#define MAXSIZE  100struct Book
{string id;string name;double price;
};//顺序表结构体
struct SqList
{Book *elem;		//线性表初始位置int length;		//线性表长度};//初始化线性表
void initSqList(SqList &L)
{L.elem = new Book[MAXSIZE];if (!L.elem){exit(0);}L.length = 0;
}//线性表的取值
int GetElem(SqList &L, int i, Book &e)
{if (i<1||i>L.length){return -1;}e=L.elem[i - 1];return 0;
} //线性表的查找
int LocateElem(SqList &L,string e)
{for (int i = 0; i < L.length; i++){if (L.elem[i].id==e){cout << "所查找书籍信息为:";cout << L.elem[i].id << "          ";cout << L.elem[i].name << "          ";cout << L.elem[i].price << endl;cout << "书籍查找成功!!" << endl;return i + 1;}}cout << "查无此书!!" << endl;return 0;
}//线性表的插入
int InsertSqList(SqList &L, int i, Book e)
{//是否超出线性表的区间范围if (i<1||i>L.length+1){return -1;}//当前元素超过线性表长度则无法插入if (L.length==MAXSIZE){return -1;}//for (int j = L.length-1; j>=i-1; j--){L.elem[j + 1] = L.elem[j];}L.elem[i - 1] = e;++L.length;return 1;
}//线性表的删除
int DeleteSqList(SqList &L, int i)
{//是否超出线性表的区间范围if (i<1 || i>L.length + 1){return 0;}for (int j = i; j <=L.length; j++){L.elem[j - 1] = L.elem[j];}--L.length;return 1;
}int main()
{SqList L;int c;					//删除书籍位置int choice = -1;string str1, str2, str3;cout << "*****************************************" << endl;cout << "******          图书管理系统        *****" << endl;cout << "*****************************************" << endl;cout << "******      1.建立       2.录入     *****" << endl;cout << "******      3.取值       4.查找     *****" << endl;cout << "******      5.插入       6.删除     *****" << endl;cout << "******      7.输出       0.退出     *****" << endl;cout << "*****************************************" << endl;while (choice != 0){cout << "请输入操作指令【0-7】" << endl;cin >> choice;int i = 0;switch (choice){case 1:{initSqList(L);cout << "顺序表创建成功" << endl;cout << endl;cout << "*****************************************" << endl;cout << "******          图书管理系统        *****" << endl;cout << "*****************************************" << endl;cout << "******      1.建立       2.录入     *****" << endl;cout << "******      3.取值       4.查找     *****" << endl;cout << "******      5.插入       6.删除     *****" << endl;cout << "******      7.输出       0.退出     *****" << endl;cout << "*****************************************" << endl;break;}case 2:{L.elem = new Book[MAXSIZE];if (!L.elem){exit(0);}L.length = 0;fstream file;file.open("book.txt");file >> str1 >> str2 >> str3;while (!file.eof()){file >> L.elem[i].id >> L.elem[i].name >> L.elem[i].price;i++;}cout << "book书库书籍信息导入成功" << endl;L.length = i;file.close();cout << endl;cout << "*****************************************" << endl;cout << "******          图书管理系统        *****" << endl;cout << "*****************************************" << endl;cout << "******      1.建立       2.录入     *****" << endl;cout << "******      3.取值       4.查找     *****" << endl;cout << "******      5.插入       6.删除     *****" << endl;cout << "******      7.输出       0.退出     *****" << endl;cout << "*****************************************" << endl;break;}case 3:{cout << "请输入取值图书位置:";cin >> i;Book em;GetElem(L,i,em);cout << em.id << "          ";cout << em.name << "          ";cout << em.price << endl;cout << "书籍取值成功!" << endl;cout << endl;cout << "*****************************************" << endl;cout << "******          图书管理系统        *****" << endl;cout << "*****************************************" << endl;cout << "******      1.建立       2.录入     *****" << endl;cout << "******      3.取值       4.查找     *****" << endl;cout << "******      5.插入       6.删除     *****" << endl;cout << "******      7.输出       0.退出     *****" << endl;cout << "*****************************************" << endl;break;}case 4:{Book em;	cout << "请输入查找图书编号:";cin >>em.id;LocateElem(L, em.id);cout << endl;cout << "*****************************************" << endl;cout << "******          图书管理系统        *****" << endl;cout << "*****************************************" << endl;cout << "******      1.建立       2.录入     *****" << endl;cout << "******      3.取值       4.查找     *****" << endl;cout << "******      5.插入       6.删除     *****" << endl;cout << "******      7.输出       0.退出     *****" << endl;cout << "*****************************************" << endl;break;}case 5:{cout << "请输入所要插入的位置:";cin >> i;Book em;cout << "请输入所要插入书籍的ID,书名,价格:";cin >> em.id >> em.name >> em.price;InsertSqList(L, i, em);cout << "书籍插入成功!" << endl;cout << endl;cout << "*****************************************" << endl;cout << "******          图书管理系统        *****" << endl;cout << "*****************************************" << endl;cout << "******      1.建立       2.录入     *****" << endl;cout << "******      3.取值       4.查找     *****" << endl;cout << "******      5.插入       6.删除     *****" << endl;cout << "******      7.输出       0.退出     *****" << endl;cout << "*****************************************" << endl;break;}case 6:{cout << "请输入要删除书籍位置:";cin >> c;if (DeleteSqList(L, c)){cout << "书籍删除成功!" << endl;}else{cout << "书籍删除失败!" << endl;}cout << endl;cout << "*****************************************" << endl;cout << "******          图书管理系统        *****" << endl;cout << "*****************************************" << endl;cout << "******      1.建立       2.录入     *****" << endl;cout << "******      3.取值       4.查找     *****" << endl;cout << "******      5.插入       6.删除     *****" << endl;cout << "******      7.输出       0.退出     *****" << endl;cout << "*****************************************" << endl;break;}case 7:{cout << "当前图书管理系统的所有图书信息如下:" << endl;for (int i = 0; i < L.length; i++){cout << L.elem[i].id << setw(25);cout << L.elem[i].name << setw(15);cout << L.elem[i].price << endl;}cout << endl;cout << "*****************************************" << endl;cout << "******          图书管理系统        *****" << endl;cout << "*****************************************" << endl;cout << "******      1.建立       2.录入     *****" << endl;cout << "******      3.取值       4.查找     *****" << endl;cout << "******      5.插入       6.删除     *****" << endl;cout << "******      7.输出       0.退出     *****" << endl;cout << "*****************************************" << endl;break;}case 0:{break;}}}return 0;
}

结果为:
在这里插入图片描述


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部