[腾讯云Cloud Studio实战训练营]基于Cloud Studio完成图书管理系统
[腾讯云Cloud Studio实战训练营]基于Cloud Studio完成图书管理系统
- ⭐前言
- 🌜Cloud Studio产品介绍
- 1.登录
- 2.创建工作空间
- 3.工作空间界面简介
- 4.环境的使用
- ⭐实验实操
- 🌜Cloud Studio实现图书管理系统
- 1.实验目的
- 2. 实验过程
- 2.实验环境
- 3.源码讲解
- 3.1添加数据
- 3.2增加数据
- 3.3删除数据
- 3.4查询数据
- 3.5图书位置修改
- 3.6图书的借出
- 3.7图书的还回
- 3.8主体界面
- 3.9完整代码
- ⭐发布成模版
- ⭐项目总结
⭐前言
本次实战主要通过Cloud Studio实现了一个图书管理系统的快速搭建。Cloud Studio是腾讯云提供的一个低代码开发平台,可以通过拖拽和配置的方式快速构建Web和移动应用。它降低了传统代码开发的门槛,使软件开发更简单高效。
🌜Cloud Studio产品介绍
Cloud Studio 是基于浏览器的集成式开发环境(IDE),为开发者提供了一个永不间断的云端工作站。用户在使用 Cloud Studio 时无需安装,随时随地打开浏览器就能在线编程。

Cloud Studio 作为在线 IDE,包含代码高亮、自动补全、Git 集成、终端等 IDE 的基础功能,同时支持实时调试、插件扩展等,可以帮助开发者快速完成各种应用的开发、编译与部署工作。

同时 Cloud Studio 也对所有新老用户考虑每月赠送 3000 分钟的工作空间免费时长。
这里上手非常简单操作界面跟我们使用的 VS Code 操作界面类似。
1.登录
Cloud Studio 在线编程平台支持使用 CODING账号和 GitHub 账号登录,可以在登录界面输入相应的账号登录前往 Web IDE,推荐使用 CODING 账号登录。

2.创建工作空间
一个工作空间是一个虚拟计算单元,它包含独立的存储、计算资源以及开发环境。Cloud Studio 是以工作空间来组织的。
进入 Cloud Studio 云端 IDE,可以通过两种方式创建工作空间。

第一种方式:
点击模板直接创建工作空间,可自动生成工作空间名称,并运行模板的预置环境及样本代码。

第二种方式:
单击【新建工作空间】,进入工作空间创建页面。创建工作空间需要选择预置环境,填写工作空间名、描述,并选择运行环境和代码来源。

工作空间名:工作空间的唯一标识,只能由字母、数字、下划线(_)、中划线(-)、点(.)组成,不能包含空格或其它字符。描述:对该工作空间作用的描述。运行环境:工作空间内代码运行的环境,可以选择预置环境,包含 Ubuntu、Python、Java 和 Node.js 四种;也可以选择将其连接到自己的云服务器上。代码来源:工作空间内的代码来源,此处我们选择“空”,即不添加任何代码。- 单击【创建】按钮,即可完成工作空间的创建。
3.工作空间界面简介
工作空间是我们主要的工作区域,主要由顶部菜单栏、左侧操作面板、右侧代码编辑区和底部状态栏组成。
整体布局如下:

4.环境的使用
- 每个工作空间背后都包含一个完整的云端开发环境,可以在里面查看或创建文件,也可以安装一些需要的软件。
- 我们可以通过终端来进行这些操作,点击菜单栏–终端–新终端,会在底部打开一个面板,点击【终端】切换到终端。
⭐实验实操
🌜Cloud Studio实现图书管理系统
1.实验目的
本次实验的目的是通过Cloud Studio平台,使用Python语言实现一个图书管理系统的快速搭建。
图书管理系统一般需要实现对图书信息的基本增删改查功能。
- 增加图书信息(Add)
- 删除图书信息(Delete)
- 修改图书信息(Update)
- 查询图书信息(Retrieve)
其中,图书信息修改只涉及图书位置的变更,图书ID和名称不可变更。 图书信息查询需要实现按图书ID、名称、位置的条件查询。另外,还需要实现图书借阅和归还的 circulation功能。
2. 实验过程
- 在Cloud Studio上创建Python执行环境
- 设计图书信息字典数据结构
- 编码实现图书信息增删改查功能
- 增加图书
- 删除图书
- 修改图书位置
- 按ID/名称/位置查询图书
- 实现图书借阅和归还状态更改
- 测试程序,修正问题
2.实验环境
Python版本:Python 3.11.1
运行环境: Cloud Studio
计算能力: 内核 CPU:2核
临时存储:内存 RAM:4GB
存储空间:存储 SSD:8GB
3.源码讲解
3.1添加数据
books_dict = {}
- 创建一个空字典
books_dict来存储图书数据这里使用Python的字典(dict)来保存图书信息,字典比较适合保存对象的关键信息。 - 为每本图书设置一个
id作为字典的key图书id可以是数字1,2,3等,也可以是图书的条形码等唯一标识。它将作为字典的键(key)来唯一标识一本图书。 - 每本图书的详细信息保存为字典中的value这里value也是一个字典,包含了图书的name(名称)和location(位置)两个信息。
3.2增加数据
创建增加图书功能:
具体的步骤是:
- 定义add_book()函数,用于增加图书信息。
- 在函数内部,使用input()函数获取图书的id,名称,位置信息。
- 设置一个默认的借出状态is_lend为False。
- 将输入的图书信息组装成一个字典,包含name、position、is_lend三个键。
- 使用id作为键,图书信息字典作为值,存储到books_dict中。
- 打印添加后的books_dict,以此来验证数据是否正确添加。
def add_book():"""增加图书信息"""book_id = input("请输入书的id:") # keybook_name = input("请输入书的名称:") # valuebook_position = input("请输入书的位置:") # valueis_lend = False # 是否借出books_dict[book_id] = {"book_name": book_name,"book_position": book_position,"is_lend": is_lend} # 将输入的图书信息存储到字典print(f"数据添加完成:{books_dict}:{books_dict[book_id]}") # 显示添加数据后的信息

3.3删除数据
删除数据,通过查询id删除:
- 定义del_book()函数,用于删除图书信息。
- 在函数内部,使用input()提示用户输入要删除的图书id。
- 通过传入的id作为key,从books_dict中获取该图书的信息,存储到变量book_info中。
- 使用del语句,以id为key,从books_dict中删除对应的数据。
- 打印被删除的图书id和信息,用于确认。
def del_book():"""删除图书信息"""book_id = input("请输入书的id:")book_info = books_dict[book_id] # 通过key获取字典的数据 字典数据的获取del books_dict[book_id] # 删除字典里面指定key数据 字典print(f"删除图书:{book_id}:{book_info}")

3.4查询数据
查找图书信息
包括:查找详细的图书,查找已经借出的图书,查看所有的图书信息
def select_book(): # 查找详细的图书 查找已经借出的图书 查看所有的图书信息"""查找图书的信息"""print("1:查找详细的图书 2:查找已经借出的图书 3:查看所有的图书信息")sub_code = input("请您输入需要使用的功能:")if sub_code == "1":book_id = input("请输入书的id:")print(books_dict[book_id]) # 通过key获取字典key相关的数据elif sub_code == "2":for i in books_dict.items(): # 字典课程 字典操作方法if i[1]["is_lend"]: # 筛选字典的数据 i[1] 字符串的操作 字符串的索引print(i)elif sub_code == "3":for i in books_dict.items():print(i)

3.5图书位置修改
在前面说过,图书id,图书名称是唯一的,不能修改,所以我们能修改的只有图书的位置。
def modify_book():"""图书位置的修改""" # 字典数据的修改book_id = input("请输入书的id:") # keybook_position = input("请输入书存放新的位置:")books_dict[book_id]['book_position'] = book_positionprint(f"修改后的数据:{book_id}:{books_dict[book_id]}")
3.6图书的借出
通过id进行图书的借出(如果通过图书名称,会出现错误,因为名称相同的图书可能不止一本。)
def lend_book():"""图书的借出"""book_id = input("请输入书的id:\n")books_dict[book_id]["is_lend"] = True

3.7图书的还回
通过图书的id进行还回
- 定义函数give_back(),用于实现图书还回功能。
- 在函数内部,使用input()提示用户输入要还回的图书id。
- 根据输入的id,以其为key从books_dict字典中取出对应图书的信息。
- 修改该图书信息的"is_lend"键值为False,表示该图书已被还回,不再被借出。
- 由于字典是可变类型,所以books_dict会被直接修改,不需要再赋值给books_dict。
def give_back():"""图书的还回"""book_id = input("请输入书的id:\n")books_dict[book_id]["is_lend"] = False

3.8主体界面
while True: # while 循环print("-" * 60) # * 复制容器里面的数据print("1:图书添加 2:图书删除 3:图书位置修改 \n ""4:图书借出 5:图书还回 6:图书信息查看 7:退出系统")func_code = input("请您输入需要是使用的功能:")print("-" * 60)# func_dict = {"1": add_book}# 这么写可以让我们以更简单的方式来访问字典中的函数。而不是用字典中的字符串指定函数,我们可以直接用字典中的整数访问函数。if func_code == "1": # func_code 需要注意输入的数据类型add_book() # 函数的调用elif func_code == "2":del_book()elif func_code == "3":modify_book()elif func_code == "4":lend_book()elif func_code == "5":give_back()elif func_code == "6":select_book()elif func_code == '7':break # 循环里面的关键字 只能在循环里面使用else:print("输入的选项id无效!")
';

3.9完整代码
books_dict = {}def add_book():"""增加图书信息"""book_id = input("请输入书的id:") # keybook_name = input("请输入书的名称:") # valuebook_position = input("请输入书的位置:") # valueis_lend = False # 是否借出books_dict[book_id] = {"book_name": book_name,"book_position": book_position,"is_lend": is_lend} # 将输入的图书信息存储到字典print(f"数据添加完成:{books_dict}:{books_dict[book_id]}") # 显示添加数据后的信息def del_book():"""删除图书信息"""book_id = input("请输入书的id:")book_info = books_dict[book_id] # 通过key获取字典的数据 字典数据的获取del books_dict[book_id] # 删除字典里面指定key数据 字典print(f"删除图书:{book_id}:{book_info}")def select_book(): # 查找详细的图书 查找已经借出的图书 查看所有的图书信息"""查找图书的信息"""print("1:查找详细的图书 2:查找已经借出的图书 3:查看所有的图书信息")sub_code = input("请您输入需要使用的功能:")if sub_code == "1":book_id = input("请输入书的id:")print(books_dict[book_id]) # 通过key获取字典key相关的数据elif sub_code == "2":for i in books_dict.items(): # 字典课程 字典操作方法if i[1]["is_lend"]: # 筛选字典的数据 i[1] 字符串的操作 字符串的索引print(i)elif sub_code == "3":for i in books_dict.items():print(i)def modify_book():"""图书位置的修改""" # 字典数据的修改book_id = input("请输入书的id:") # keybook_position = input("请输入书存放新的位置:")books_dict[book_id]['book_position'] = book_positionprint(f"修改后的数据:{book_id}:{books_dict[book_id]}")def give_back():"""图书的还回"""book_id = input("请输入书的id:\n")books_dict[book_id]["is_lend"] = Falsedef lend_book():"""图书的借出"""book_id = input("请输入书的id:\n")books_dict[book_id]["is_lend"] = Truewhile True: # while 循环print("-" * 60) # * 复制容器里面的数据print("1:图书添加 2:图书删除 3:图书位置修改 \n ""4:图书借出 5:图书还回 6:图书信息查看 7:退出系统")func_code = input("请您输入需要是使用的功能:")print("-" * 60)# func_dict = {"1": add_book}# 这么写可以让我们以更简单的方式来访问字典中的函数。而不是用字典中的字符串指定函数,我们可以直接用字典中的整数访问函数。if func_code == "1": # func_code 需要注意输入的数据类型add_book() # 函数的调用elif func_code == "2":del_book()elif func_code == "3":modify_book()elif func_code == "4":lend_book()elif func_code == "5":give_back()elif func_code == "6":select_book()elif func_code == '7':break # 循环里面的关键字 只能在循环里面使用else:print("输入的选项id无效!")
⭐发布成模版

(个人)分享了「基于Cloud Studio完成图书管理系统」模版
这样,下次进入Cloud Studio的时候直接可以从模版中启动,继续开发。
⭐项目总结
在Cloud Studio这一在线编程平台上,我顺利利用Python语言实现了一个图书管理系统的学习项目。根据项目需求,我实现了图书信息的添加、删除、修改、查询等基本功能,让系统可以对图书进行全面的管理。为实现这些功能,我学习并应用了Python的关键语法结构,如函数定义、流程控制、字典与列表的应用、文件操作等。代码和数据都可以持久保存到云端,不受本地存储空间的限制。
Cloud Studio提供了非常友好的云端编程环境。只需要打开浏览器,就可以秒级进入到云端准备好的编程界面,无需在本地配置任何环境,大大降低了编程的初始门槛。编辑器、终端、运行时等功能一应俱全,可以直接在网页上编写和运行Python代码。
在编写代码的过程中,Cloud Studio提供了非常流畅的体验。代码编辑快速便捷,运行响应迅速,计算能力强大。这种云端编程方式让我可以无障碍地实现编程思路,不受本地资源的局限,给了我更大的想象空间。
在这个成熟可靠的云平台上,我顺利完成了项目,加深了对Python语言的掌握,对各种语法结构的应用也更加熟练。这是一次非常有意义的编程学习经历。我会把云端编程的优势推荐给更多的Python初学者。相信通过Cloud Studio这样易用的云平台,会有更多人对Python编程和云计算产生兴趣,提高编程能力。
相关文章:
[腾讯云Cloud Studio实战训练营]基于Cloud Studio完成图书管理系统
[腾讯云Cloud Studio实战训练营]基于Cloud Studio完成图书管理系统 ⭐前言🌜Cloud Studio产品介绍1.登录2.创建工作空间3.工作空间界面简介4.环境的使用 ⭐实验实操🌜Cloud Studio实现图书管理系统1.实验目的 2. 实验过程2.实验环境3.源码讲解3.1添加数据…...
(二)Node.js 基础模块
(二)Node.js 基础模块 1. fs文件系统模块1.1 什么是fs文件系统模块1.2 读取指定文件中的内容1. fs.readFile()的语法格式2. fs.readFile()的示例代码 1.3 向指定的文件中写入内容1. fs.writeFile()的语法格式2. fs.writeFile()的实例代码 1.4 __dirname …...
AUC及其拓展GAUC
AUC及其拓展GAUC auc的定义 auc用来评估一个分类器的排序质量,它的物理含义:给定一堆正负样本,随机取一个正样本,一个负样本,学习器将正样本排在负样本前面的概率 auc的计算 具体计算方法:给定m个正样本…...
【CSS】CSS 选择器
CSS 选择器 1.基础选择器 1.1 元素选择器 语法:标签名{...} 元素选择器会选中对应标签名的HTML元素,例如:p{...},div{...},span{...}等 1.2 类选择器 语法:.类名{...} 类选择器会选中class属性为指定…...
2023-08-07力扣今日四题-好题
链接: 剑指 Offer 03. 数组中重复的数字 题意: 如题 解: 看到一个很牛的时间复杂度O(n)的原地算法:由于数组长度n,数组内只有0到n-1,那么,我们用对应-n到-1表示nums[index]出现过一次&…...
Packet Tracer - IPv4 和 IPv6 编址故障排除
Packet Tracer - IPv4 和 IPv6 编址故障排除 地址分配表 设备 接口 IPv4 地址 子网掩码 默认网关 IPv6 地址/前缀 R1 G0/0 10.10.1.1 255.255.255.0 N/A G0/1 192.168.0.1 255.255.255.0 N/A 2001:DB8:1:1::1/64 N/A G0/2 2001:DB8:1:2::1/64 N/A S0/0/0 …...
PHP国外在线教育系统源码 在线课程系统源码 直播课程系统源码提供在线课程,现场课程,测验
Proacademy是在线教育一体化的解决方案,用于创建类似于Udemy、Skillshare、Coursera这种在线教育市场。 这个平台提供在线课程,现场课程,测验等等,并有一个基于实际业务需要的高级认证插件,程序基于Laravel强大的安全框…...
Abaqus 中最常用的子程序有哪些 硕迪科技
在ABAQUS中,用户定义的子程序是一种重要的构件,可以将其插入到Abaqus分析中以增强该软件的功能和灵活性。这些子程序允许用户在分析过程中添加自定义材料模型、边界条件、初始化、加载等特定操作,以便更精准地模拟分析中的现象和现象。ABAQUS…...
容器——3.Collection 子接口之 Set
文章目录 3.1. comparable 和 Comparator 的区别3.1.1. Comparator 定制排序3.1.2. 重写 compareTo 方法实现按年龄来排序 3.2. 无序性和不可重复性的含义是什么3.3. 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同 3.1. comparable 和 Comparator 的区别 comparable 接口…...
将整数,结构体,结构体数组,链表写到文件
在之前的学习中,忘文件中写的内容都是字符串或字符,本节学习如何写入其他各种类型的数据。 回看write和read函数的形式: ssize_t write(int fd, const void *buf, size_t count); ssize_t read(int fd, void *buf, size_t count); 其中&a…...
UNIX基础知识:UNIX体系结构、登录、文件和目录、输入和输出、程序和进程、出错处理、用户标识、信号、时间值、系统调用和库函数
引言: 所有的操作系统都为运行在其上的程序提供服务,比如:执行新程序、打开文件、读写文件、分配存储区、获得系统当前时间等等 1. UNIX体系结构 从严格意义上来说,操作系统可被定义为一种软件,它控制计算机硬件资源&…...
IDEA2021.3.1-优化设置IDEA2021.3.1-优化设置、快捷方式改为eclipse、快捷键等
IDEA2021.3.1-优化设置IDEA2021.3.1-优化设置、快捷方式改为eclipse、快捷键等 一、主题设置二、鼠标悬浮提示三、显示方法分隔符四、代码提示忽略大小写五、自动导包六、取消单行显示tabs七、设置字体八、配置类文档注释信息模板九、设置文件编码9.1、所有地方设置为UTF-89.2、…...
使用C#的窗体显示与隐藏动画效果方案 - 开源研究系列文章
今天继续研究C#的WinForm的显示动画效果。 上次我们实现了无边框窗体的显示动画效果(见博文:基于C#的无边框窗体动画效果的完美解决方案 - 开源研究系列文章 ),这次介绍的是未在任务栏托盘中窗体的显示隐藏动画效果的实现代码。 1、 项目目录;…...
09_Vue3中的 toRef 和 toRefs
toRdf 作用:创建一个 ref 对象,其 value 值指向另一个对象中的某个属性。语法: const name toRef(person,name) 应用:要将响应式对象中的某个属性单独提供给外部使用时。扩展:toRef 与 toRefs 功能一致࿰…...
JAVA获取视频音频时长 文件大小 MultipartFileUtil和file转换
java 获取视频时长_java获取视频时长_似夜晓星辰的博客-CSDN博客 <dependency><groupId>ws.schild</groupId><artifactId>jave-all-deps</artifactId><version>2.5.1</version></dependency>Slf4j public class VideoTimeUtil…...
刷题笔记 day9
1658 将 x 减到 0 的最小操作数 解析:1. 当数组的两端的数都大于x时,直接返回 -1。 2. 当数组所有数之和小于 x 时 ,直接返回 -1。 3. 数组中可以将 x 消除为0,那么可以从左边减小为 0 ;可以从右边减小为 0 ࿱…...
小白解密ChatGPT大模型训练;Meta开源生成式AI工具AudioCraft
🦉 AI新闻 🚀 Meta开源生成式AI工具AudioCraft,帮助用户创作音乐和音频 摘要:美国公司Meta开源了一款名为AudioCraft的生成式AI工具,可以通过文本提示生成音乐和音频。该工具包含三个核心组件:MusicGen用…...
1 swagger简单案例
1.1 加入依赖 <!--swagger图形化接口--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version> </dependency><dependency><groupId>io.spri…...
Flutter写一个android底部导航栏框架
废话不多说,上代码: import package:flutter/material.dart;void main() {runApp(MyApp()); }class MyApp extends StatelessWidget {overrideWidget build(BuildContext context) {return MaterialApp(title: Bottom Navigation Bar,theme: ThemeData(…...
关于自动化测试用例失败重试的一些思考
自动化测试用例失败重跑有助于提高自动化用例的稳定性,那我们来看一下,python和java生态里都有哪些具体做法? 怎么做 如果是在python生态里,用pytest做测试驱动,那么可以通过pytest的插件pytest-rerunfailures来实现…...
基于WPF开发桌面AI助手:架构设计与实现详解
1. 项目概述:一个开源的WPF桌面AI助手 最近在GitHub上看到一个挺有意思的项目,叫“MayDay-wpf/AIBotPublic”。光看名字,可能有点摸不着头脑,但点进去研究一下,你会发现这其实是一个用WPF(Windows Present…...
柔性LED灯丝DIY:从电路原理到创意饰品制作全攻略
1. 项目概述:当生日遇上柔性LED灯丝给孩子的生日派对准备一份独一无二的、会发光的惊喜,是很多家长和手工爱好者的心愿。这次,我们不买现成的塑料灯牌,而是亲手做一个能戴在头上或挂在脖子上的“生日数字灯冠”。这个项目的核心&a…...
基于Fire2012算法与FastLED库的Arduino LED篝火制作全攻略
1. 项目概述:用代码点燃一场永不熄灭的数字篝火夏夜、星空、朋友围坐,篝火带来的温暖与氛围是露营的灵魂。但现实是,很多营地禁止明火,或者在城市阳台、室内空间,生一堆真正的火既不安全也不现实。作为一名玩了十多年A…...
AI智能体记忆系统设计:从RAG到长期记忆的工程实践
1. 项目概述:从“记忆”到“智能”的跨越在AI智能体(Agent)的开发浪潮中,我们常常面临一个核心挑战:如何让智能体在复杂的、多轮次的交互中,表现得像一个真正有“记忆”和“经验”的专家?传统的…...
MCP服务器生产级部署:从Docker到Kubernetes的完整工程化实践
1. 项目概述:一个为MCP服务器量身定制的部署蓝图如果你正在开发或使用一个基于模型上下文协议(Model Context Protocol, MCP)的服务器,并且为如何将其优雅、可靠地部署到生产环境而头疼,那么你很可能需要的…...
企业级应用如何通过 Taotoken 统一管理多个团队的模型调用
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 企业级应用如何通过 Taotoken 统一管理多个团队的模型调用 在中大型企业的技术实践中,多个项目组或产品线同时接入和使…...
Arduino蓝牙HID键盘实战:Bluefruit LE模块AT命令与控制器模式详解
1. 项目概述与核心价值如果你正在寻找一种能让你的Arduino项目“开口说话”或者“隔空操作”手机、电脑的方法,那么Adafruit的Bluefruit LE系列蓝牙低功耗模块绝对是一个绕不开的明星选手。它不仅仅是一个简单的蓝牙串口模块,更是一个集成了丰富AT命令集…...
MongoDB 4.4+ 版本后,手把手教你搞定mongodump独立安装与配置(附环境变量设置)
MongoDB 4.4独立工具链部署指南:从零构建mongodump备份环境 当你在全新的Linux服务器上部署了MongoDB 4.4或更新版本,准备执行例行数据库备份时,在终端输入熟悉的mongodump命令却只得到command not found的响应——这不是你的操作失误&#…...
淘金币自动化脚本终极指南:如何每天5分钟完成淘宝全任务,节省20分钟宝贵时间
淘金币自动化脚本终极指南:如何每天5分钟完成淘宝全任务,节省20分钟宝贵时间 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本,包含蚂蚁森林收取能量,芭芭农场全任务,解放你的双手 项目地址: https://gitcode.com/…...
维吾尔语AI语音最后一公里难题:ElevenLabs+Kaldi联合方案实现方言变体(伊犁/喀什/和田)动态适配(含开源声学适配器)
更多请点击: https://intelliparadigm.com 第一章:维吾尔语AI语音最后一公里难题的本质剖析 维吾尔语AI语音系统在实验室环境中已能实现较高识别准确率,但落地至真实场景时仍面临显著性能衰减——这一“最后一公里”并非技术迭代的自然延迟&…...
