大家好,又见面了,我是你们的朋友全栈君
全部代码如下(各部分已注释):
#include "pch.h"
#include<string>
#include<fstream>
#include <iomanip>
#include <iostream>
using namespace std;
#define MAXSIZE 100
struct 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;
}
结果为:
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170975.html原文链接:https://javaforall.cn