数据结构图书管理系统课程设计_数据结构用链表建立图书管理系统

数据结构图书管理系统课程设计_数据结构用链表建立图书管理系统《图书信息管理系统》的制作:例:全部代码如下(各部分已注释):#include “pch.h”#include<string>#include<fstream>#include <iomanip>#include <iostream>using namespace std;#define MAXSIZE 100struct…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

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

#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;
}

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/170975.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 鼠绘(1)

    鼠绘(1)

  • Verilog读写文件

    Verilog读写文件一.读写文件相关的系统任务  在进行FPGA模块的开发过程中,常常需要对数据的处理过程进行行为仿真,以验证FPGA的功能逻辑是否正确,因此需要将FPGA行为仿真的结果与MATLAB或C/C++的处理结果进行对比验证。但需要对比的数据量比较大时,将输入输出结果数据存入文件进行对比是非常常用的方法。  Verilog中读写文件常用到的系统任务主要有以下几个:1.文件打开、关闭与定位操作:$fo…

  • RPC协议及其python实例[通俗易懂]

    RPC协议及其python实例[通俗易懂]RPC协议在OpenStack中广泛使用,那么什么是RPC协议?做什么用的那?搜索了一阵,有了一个大概的印象。RPC是一个应用层的协议,分为client端和server端,server端写好了具体的函数实现,client端远程调用该函数,返回函数的结果。好处是很明显的:首先是可以直接利用别的程序的部分功能,这是最基础的。更重要的,利用rpc可以实现系统的分布式架构,一方面有些功能比

  • 美团面试题:寻找数组置尾操作的最小值「建议收藏」

    美团面试题:寻找数组置尾操作的最小值

  • 无插件纯Web 3D机房,HTML5+WebGL倾力打造

    无插件纯Web 3D机房,HTML5+WebGL倾力打造前言-最近项目开发任务告一段落,刚好有时间整理这大半年的一些成果。使用html5时间还不久,对js的认识还不够深入。没办法,以前一直搞java,对js的一些语言特性和概念一时还转换不过来。上一篇大数

  • 好中层的八个标准:如何成为一名优秀的管理者

    好中层的八个标准:如何成为一名优秀的管理者 4月底公司给所有CSDN中层干部做了两天《如何成为一名优秀的管理者》的系统培训,讲师是胡斌老师,胡斌老师有多年的IT行业从业经验,讲的还是非常不错的,不过收尾有点仓促,比较可惜。讲完之后,蒋涛又接着给我们送了一本胡老师推荐的数《格鲁夫:给经理人的第一堂课》。利用五一的时间,结合培训和这本书,对以前的管理工作进行了反思,发现真正的要做一个好的中层真的是非常不容易,总结了一下,可以用八个字来表达“上

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号