[腾讯云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. 实验过程

  1. 在Cloud Studio上创建Python执行环境
  2. 设计图书信息字典数据结构
  3. 编码实现图书信息增删改查功能
    • 增加图书
    • 删除图书
    • 修改图书位置
    • 按ID/名称/位置查询图书
  4. 实现图书借阅和归还状态更改
  5. 测试程序,修正问题

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增加数据

创建增加图书功能:
具体的步骤是:

  1. 定义add_book()函数,用于增加图书信息。
  2. 在函数内部,使用input()函数获取图书的id,名称,位置信息。
  3. 设置一个默认的借出状态is_lend为False。
  4. 将输入的图书信息组装成一个字典,包含name、position、is_lend三个键。
  5. 使用id作为键,图书信息字典作为值,存储到books_dict中。
  6. 打印添加后的books_dict,以此来验证数据是否正确添加。
def add_book():
    """增加图书信息"""
    book_id = input("请输入书的id:")  # key
    book_name = input("请输入书的名称:")  # value
    book_position = input("请输入书的位置:")  # value
    is_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删除:

  1. 定义del_book()函数,用于删除图书信息。
  2. 在函数内部,使用input()提示用户输入要删除的图书id。
  3. 通过传入的id作为key,从books_dict中获取该图书的信息,存储到变量book_info中。
  4. 使用del语句,以id为key,从books_dict中删除对应的数据。
  5. 打印被删除的图书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:")  # key
    book_position = input("请输入书存放新的位置:")
    books_dict[book_id]['book_position'] = book_position
    print(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进行还回

  1. 定义函数give_back(),用于实现图书还回功能。
  2. 在函数内部,使用input()提示用户输入要还回的图书id。
  3. 根据输入的id,以其为key从books_dict字典中取出对应图书的信息。
  4. 修改该图书信息的"is_lend"键值为False,表示该图书已被还回,不再被借出。
  5. 由于字典是可变类型,所以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:")  # key
    book_name = input("请输入书的名称:")  # value
    book_position = input("请输入书的位置:")  # value
    is_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:")  # key
    book_position = input("请输入书存放新的位置:")
    books_dict[book_id]['book_position'] = book_position
    print(f"修改后的数据:{book_id}{books_dict[book_id]}")


def give_back():
    """图书的还回"""
    book_id = input("请输入书的id:\n")
    books_dict[book_id]["is_lend"] = False


def lend_book():
    """图书的借出"""
    book_id = input("请输入书的id:\n")
    books_dict[book_id]["is_lend"] = True


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无效!")


⭐发布成模版

在这里插入图片描述
(个人)分享了「基于Cloud Studio完成图书管理系统」模版

这样,下次进入Cloud Studio的时候直接可以从模版中启动,继续开发。

⭐项目总结

在Cloud Studio这一在线编程平台上,我顺利利用Python语言实现了一个图书管理系统的学习项目。根据项目需求,我实现了图书信息的添加、删除、修改、查询等基本功能,让系统可以对图书进行全面的管理。为实现这些功能,我学习并应用了Python的关键语法结构,如函数定义、流程控制、字典与列表的应用、文件操作等。代码和数据都可以持久保存到云端,不受本地存储空间的限制。

Cloud Studio提供了非常友好的云端编程环境。只需要打开浏览器,就可以秒级进入到云端准备好的编程界面,无需在本地配置任何环境,大大降低了编程的初始门槛。编辑器、终端、运行时等功能一应俱全,可以直接在网页上编写和运行Python代码。

在编写代码的过程中,Cloud Studio提供了非常流畅的体验。代码编辑快速便捷,运行响应迅速,计算能力强大。这种云端编程方式让我可以无障碍地实现编程思路,不受本地资源的局限,给了我更大的想象空间。

在这个成熟可靠的云平台上,我顺利完成了项目,加深了对Python语言的掌握,对各种语法结构的应用也更加熟练。这是一次非常有意义的编程学习经历。我会把云端编程的优势推荐给更多的Python初学者。相信通过Cloud Studio这样易用的云平台,会有更多人对Python编程和云计算产生兴趣,提高编程能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/62584.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

postgresql 使用之 存储架构 触摸真实数据的存储结构以及组织形式,存入数据库的数据原来在这里

存储架构 ​专栏内容: postgresql内核源码分析 手写数据库toadb 并发编程 个人主页:我的主页 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 概述 postgresql 数据库服务运行时,数据在磁…

【IMX6ULL驱动开发学习】22.IMX6ULL开发板读取ADC(以MQ-135为例)

IMX6ULL一共有两个ADC&#xff0c;每个ADC都有八个通道&#xff0c;但他们共用一个ADC控制器 1.设备树 在imx6ull.dtsi文件中已经帮我们定义好了adc1的节点部分信息 adc1: adc02198000 {compatible "fsl,imx6ul-adc", "fsl,vf610-adc";reg <0x0219…

Jenkins工具系列 —— 插件 钉钉发送消息

文章目录 安装插件 Ding TalkJenkins 配置钉钉机器人钉钉APP配置项目中启动钉钉通知功能 安装插件 Ding Talk 点击 左侧的 Manage Jenkins —> Plugins ——> 左侧的 Available plugins Jenkins 配置钉钉机器人 点击 左侧的 Manage Jenkins &#xff0c;拉到最后 钉…

【Segment Anything Model】四:预处理自己的数据集接入SAM

文章目录 1️⃣预备知识2️⃣实现思路&#x1f538;脚本预处理得到包含embedd和GT的npz&#x1f538;编写Dataset类3️⃣代码&#x1f538;实现脚本预处理得到包含embedd和GT的npz代码&#x1f538;实现Dataset的代码 1️⃣预备知识 欢迎订阅本专栏&#xff08;为爱发电&#…

基于SPSSPRO实现层次分析法(AHP)

层次分析法&#xff0c;简称AHP&#xff0c;是指将与决策总是有关的元素分解成目标、准则、方案等层次&#xff0c;在此基础之上进行定性和定量分析的决策方法。&#xff08;摘自百度百科&#xff09; 层次分析法有着广泛使用&#xff0c;涉及到的平台也多种多样&#xff0c;今…

Android Studio新版本logcat过滤说明

按包名过滤 //输入package:&#xff08;输入一个p就会有提示的&#xff09; &#xff0c;后面加上包名 比如: package:com.xal.runcontrol package:包名可以完整或者输部分包名即可 package:包名需要输完整准确 package~:正则表达式过滤 不了解正则表达式的可以参考&#…

·[K8S:使用calico网络插件]:解决集群节点NotReady问题

文章目录 一&#xff1a;安装calico&#xff1a;1.1&#xff1a;weget安装Colico网络通信插件&#xff1a;1.2&#xff1a;修改calico.yaml网卡相关配置&#xff1a;1.2.1&#xff1a;查看本机ip 网卡相关信息&#xff1a;1.2.2&#xff1a;修改calico.yaml网卡interface相关信…

普及100Hz高刷+1ms响应 微星发布27寸显示器:仅售799元

不论办公还是游戏&#xff0c;高刷及低响应时间都很重要&#xff0c;微星现在推出了一款27寸显示器PRO MP273A&#xff0c; 售价只有799元&#xff0c;但支持100Hz高刷、1ms响应时间&#xff0c;还有FreeSync技术减少撕裂。 PRO MP273A的100Hz高刷新率是其最大的卖点之一&#…

使用node.js 搭建一个简单的HelloWorld Web项目

文档结构 config.ini #将本文件放置于natapp同级目录 程序将读取 [default] 段 #在命令行参数模式如 natapp -authtokenxxx 等相同参数将会覆盖掉此配置 #命令行参数 -config 可以指定任意config.ini文件 [default] authtokencc83c08d73357802 #对应一条隧…

Python绘制箭头向量图,并绘制三体引力场

文章目录 简介箭头设置三维场图 简介 箭头向量图十分常见&#xff0c;比如天气预报在显示风场的时候&#xff0c;就会贴心地用箭头指明风的方向。在matplotlib中&#xff0c;用quiver函数来绘制箭头向量图&#xff0c;示例如下 import matplotlib.pyplot as plt import numpy…

使用hexo进行博客迁移

本文不会从0开始介绍如何通过hexo去搭建一个github page。因为最近折腾了下&#xff0c;发现这玩意儿确实写个博客很费劲&#xff0c;打算把他拖管到github当作我的知识库网站&#xff0c;我的主要文章还是通过mweb写完一键发布到博客园&#xff0c;然后csdn记录一些杂文和思考…

PHP8的程序结构-PHP8知识详解

在做任何事情之前&#xff0c;都需要遵循一定的规则。在PHP8中&#xff0c;程序能够安照人们的意愿执行程序&#xff0c;主要依靠程序的流程控制语句。 不管多复杂的程序&#xff0c;都是由这些基本的语句组成的。语句是构造程序的基本单位。程序执行的过程就是执行程序语句的…

JVM 学习—— 类加载机制

前言 在上一篇文章中&#xff0c;荔枝梳理了有关Java中JVM体系架构的相关知识&#xff0c;其中涉及到的有关Java类加载机制的相关知识并没有过多描述。那么在这篇文章中&#xff0c;荔枝会详细梳理一下有关JVM的类加载机制和双亲委派模型的知识&#xff0c;希望能够帮助到有需要…

Android应用开发(6)TextView进阶用法

Android应用开发学习笔记——目录索引 上一章Android应用开发&#xff08;5&#xff09;文本视图&#xff08;TextView&#xff09;介绍了文本视图&#xff08;TextView&#xff09;设置文本内容、设置文本大小、设置文本显示颜色。 TextView是最基础的文本显示控件&#xff…

【STM32零基础入门教程03】GPIO输入输出之GPIO框图分析

本章节主要讲解点亮LED的基本原理&#xff0c;以及GPIO框图的讲解。 如何点亮LED&#xff08;输出&#xff09; 首先我们查看原理图&#xff0c;观察电路图中LED的连接情况&#xff0c;如下图可以看出我们的板子中LED一端通过限流电阻连接的PB0另一端连接的是高电平VCC&#xf…

召唤神龙打造自己的ChatGPT

在之前的两篇文章中&#xff0c;我介绍了GPT 1和2的模型&#xff0c;并分别用Tensorflow和Pytorch来实现了模型的训练。具体可以见以下文章链接&#xff1a; 1. 基于Tensorflow来重现GPT v1模型_gzroy的博客-CSDN博客 2. 花费7元训练自己的GPT 2模型_gzroy的博客-CSDN博客 有…

Rocketmq 定时消息源码分析

定时消息定义 生产者将消息投放到broker后&#xff0c;不会马上被消费者消费。需要等待到特定时间才会被消费。 调用链路 producer 将定时消息写入commitLog线程ReputThead 休息1毫秒&#xff0c;读取一次commitlog数据&#xff0c;写入ConsumeQueue和IndexFile线程Scheduled…

右值引用带来的效率提升(C++11)

文章目录 一.左值引用和右值引用二.C11区分左值和右值的语法设计意义--对象的移动构造和移动赋值场景分析1:C11之前C11之后 场景分析2:函数std::move右值引用的广泛使用 三.引用折叠 一.左值引用和右值引用 左值:可以取到地址的对象(可以出现在赋值符号的左边),对左值的引用称…

arcgis--网络分析(理论篇)

1、定义概念 &#xff08;1&#xff09;网络&#xff1a;由一系列相互联通的点和线组成&#xff0c;用来描述地理要素&#xff08;资源&#xff09;的流动情况。 &#xff08;2&#xff09;网络分析&#xff1a;对地理网络&#xff08;如交通网络、水系网络&#xff09;&…

【数据结构】排序算法系列

常见的排序如下&#xff1a; 一、比较类排序 1. 交换排序 &#xff08;1&#xff09; 冒泡排序 【数据结构】交换排序&#xff08;一&#xff09;——冒泡排序_Jacky_Feng的博客-CSDN博客 &#xff08;2&#xff09; 快速排序 【数据结构】交换排序&#xff08;二&#xf…