简易的图书管理系统(CPP)

it2026-03-30  7

建立一个长度为n的线性表,例如学生表或图书表,要求n>5,存储结构可选顺序存储或链式存储,并输出该线性表且每个数据元素信息占一行;输入样例如下: 9787302257646 程序设计基础 25.00 9787302164340 程序设计基础(第 2 版) 20.00 9787302219972 单片机技术及应用 32.00 9787302203513 单片机原理与应用技术 26.00 9787810827430 工业计算机控制技术——原理与应用 29.00 9787811234923 汇编语言程序设计教程 21.00根据数据元素的某项信息进行线性表的查找,并输出查找结果,包含查找成功和不成功两种情况;在第i个元素前面插入一个新元素x(包含具体元素信息),得到一个长度为(n+1)的线性表,并输出该线性表;删除第j个元素,得到长度为n的线性表,并输出该线性表。 使用链表 #include<iostream> using namespace std; #include<string> //类似C语言中的格式化输出 #include<iomanip> //定义链表 typedef struct LNode { string num; string name; double price; LNode *next; }LNode,*LinkList; //显示页面 void ShowMenu() { cout << "*******欢迎光临太原理工大学图书管理系统*******" << endl; cout << "***************首次操作请先按0****************" << endl; cout << "***************0.显示原始图书表***************" << endl; cout << "***************1.查找图书*********************" << endl; cout << "***************2.插入元素*********************" << endl; cout << "***************3.删除元素*********************" << endl; cout << "***************4.退出系统*********************" << endl; } //初始化链表,把原始数据导入 void InitList(LinkList &L) { L = new LNode; L->next = NULL; //建立数组放置数据 string a[6] = { "9787302257646","9787302164340","9787302219972","9787302203513","978710827430","9787811234923" }; string b[6] = { "程序设计基础","程序设计基础(第2版)","单片机技术及应用","单片机原理与应用技术","工业计算机控制技术——原理与应用","汇编语言程序设计教程" }; double c[6] = { 25.00,20.00,32.00,26.00,29.00,21.00 }; LinkList p = L; //将数据库中元素循环导入链表 for (int i = 0;i < 6;i++) { LinkList q = new LNode; q->num = a[i]; q->name = b[i]; q->price = c[i]; q->next =NULL; p->next=q; p = q; } } //打印链表 void PrintList(LinkList &L) { LinkList p; p = L->next; while(p) { //用setiosflags(ios::fixed)<<setprecision(2)固定 cout << p->num <<" "<<p->name << " "<<setiosflags(ios::fixed)<<setprecision(2)<<p->price<<endl; //cout<<resetiosflags(ios::fixed)取消固定格式输出 //单独使用setprecision(2)是控制浮点数的有效数字个数 p = p->next; } //暂停加清屏 system("pause"); system("cls"); } //按编号查找图书 void NumLocate(LinkList&L) { string NUM; //用flag标志是否查到 int flag = 0; cout << "请输入您需要查找图书的编号" << endl; cin >> NUM; LinkList p = L->next; //循环遍历,直至p为NULL while (p) { //如果p->num==NUM,则查找到该书 if (p->num == NUM) { cout << "查找成功,该图书信息为:" << endl; cout << p->num << " " << p->name << " " << setiosflags(ios::fixed) << setprecision(2) << p->price << endl; flag = 1; } p = p->next; } //如果flag为0,则没有查找到 if (flag == 0) cout << "查找失败" << endl; } //按书名查找图书 void NameLocate(LinkList&L) { string Name; int flag = 0; cout << "请输入您需要查找图书的书名" << endl; cin >> Name; LinkList p = L->next; while (p) { if (p->name == Name) { cout << "查找成功,该图书信息为:" << endl; cout << p->num << " " << p->name << " " << setiosflags(ios::fixed) << setprecision(2) << p->price << endl; flag = 1; } p = p->next; } if (flag == 0) cout << "查找失败" << endl; } //按价格查找图书 void PriceLocate(LinkList&L) { double PRICE; int flag = 0; cout << "请输入您需要查找图书的价格" << endl; cin >> PRICE; LinkList p = L->next; while (p) { if (p->price == PRICE) { cout << "查找成功,该图书信息为:" << endl; cout << p->num << " " << p->name << " " << setiosflags(ios::fixed) << setprecision(2) << p->price << endl; flag = 1; } p = p->next; } if (flag == 0) cout << "查找失败" << endl; } //查找图书 void LocateList(LinkList&L) { cout << "您要根据哪项信息查找图书" << endl; cout << "0.编号" << endl; cout << "1.书名" << endl; cout << "2.价格" << endl; int i; cin >> i; switch (i) { //按编号查找 case 0: { NumLocate(L); break; } //按书名查找 case 1: { NameLocate(L); break; } //按价格查找 case 2: { PriceLocate(L); break; } default: break; } system("pause"); system("cls"); } //插入新元素 void InsertList(LinkList &L) { int i,j=0; cout << "您要在第几个元素前添加新元素:" << endl; cin >> i; LinkList p = L; //将p指针循环后移至第i-1个元素 while (p && (j < i - 1)) { p = p->next; j++; } LinkList s = new LNode; cout << "输入图书编号" << endl; cin >> s->num; cout << "输入图书书名" << endl; cin >> s->name; cout << "输入图书价格" << endl; cin >> s->price; s->next = p->next; p->next = s; } //删除元素 void DelList(LinkList &L) { int i, j = 0; cout << "您要删除第几个元素:" << endl; cin >> i; LinkList p = L; //将p指针后移至第i-1个元素 while (p && (j < i - 1)) { p = p->next; j++; } //在逻辑上删除第i个元素 p->next = p->next->next; } int main() { LinkList L; int i; //循环直至用户退出系统 while (1) { ShowMenu(); cout << "请输入您的操作" << endl; cin >> i; switch (i) { //0.显示原始图书表 case 0: { InitList(L); PrintList(L); break; } //查找图书 case 1: { LocateList(L); break; } //插入元素 case 2: { InsertList(L); PrintList(L); break; } //删除元素 case 3: { DelList(L); PrintList(L); break; } //退出系统 case 4: { exit(0); break; } } } }

建立一个长度为n的栈或队,输出该栈(队),并插入一个新元素x;然后再删除一个元素,并输出对应栈(队)。 我们作业只要求选其一,so另一个我就不写了,hhhhhh. 使用栈

#include<iostream> #include<iomanip> #include<string> using namespace std; #define size 100 //自定义数据类型Book来存放编号,书名和价格 typedef struct { string num; string name; double price; }Book; typedef struct { Book *base, *top; }SqStack; //显示菜单 void ShowMenu() { cout << "*******欢迎光临太原理工大学图书管理系统*******" << endl; cout << "***************首次操作请先按0****************" << endl; cout << "***************0.显示原始图书表***************" << endl; cout << "***************1.添加元素*********************" << endl; cout << "***************2.删除元素*********************" << endl; cout << "***************3.退出系统*********************" << endl; } //初始化栈 void InitStack(SqStack &S) { S.base=new Book[size]; S.top = S.base; string a[6] = { "9787302257646","9787302164340","9787302219972","9787302203513","978710827430","9787811234923" }; string b[6] = { "程序设计基础","程序设计基础(第2版)","单片机技术及应用","单片机原理与应用技术","工业计算机控制技术——原理与应用","汇编语言程序设计教程" }; double c[6] = { 25.00,20.00,32.00,26.00,29.00,21.00 }; for (int i = 0;i < 6;i++) { S.top->num = a[i]; S.top->name = b[i]; S.top->price = c[i]; S.top++; } } //打印栈 void PrintStack(SqStack &S) { for (int i = 0;i < S.top - S.base;i++) { //不改变栈底指针,用j指针来遍历 Book *j = S.base + i; cout << j->num << " " << j->name << " "<< setiosflags(ios::fixed) << setprecision(2) << j->price << endl; } system("pause"); system("cls"); } //插入元素 void InsertStack(SqStack &S) { cout << "请输入书的编号:" << endl; cin >> S.top->num; cout << "请输入书的书名:" << endl; cin >> S.top->name; cout << "请输入书的价格:" << endl; cin >> S.top->price; //栈顶指针加一 S.top++; } //删除元素 void DelStack(SqStack &S) { //栈顶指针减1,从逻辑上删除栈顶元素 S.top--; } int main() { SqStack S; int i; //循环直至用户选择退出系统 while (1) { ShowMenu(); cout << "请输入您的操作" << endl; cin >> i; switch (i) { //0.显示原始图书表 case 0: { InitStack(S); PrintStack(S); break; } //1.添加元素 case 1: { InsertStack(S); PrintStack(S); break; } //2.删除元素 case 2: { DelStack(S); PrintStack(S); break; } //3.退出系统 case 3: { exit(0); } default: break; } } }
最新回复(0)