《图书信息管理系统》的制作:
全部代码如下(各部分已注释):
#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; }
结果为: