小白必看系列之图书管理系统-登录和注册功能示例代码

news2024/11/25 4:52:24

文章目录

  • 前言
  • 变量定义区域
  • 实体部分区域
  • 注册账号逻辑
  • 用户登录逻辑
  • 退出程序
  • 打印用户信息
  • 完整代码
  • 完结

前言

在现代社会中,计算机科学和编程技术的重要性日益凸显。作为开发者和技术爱好者,我们时刻追求着创新和实用性,希望通过技术的力量改善人们的生活和工作。
本文将介绍一个简单的图书管理系统代码,它展示了一些基本的编程知识点和技术应用。通过分析这段代码,我们可以了解到变量的定义和赋值、字典的使用、循环结构、条件判断、字符串处理以及字典的遍历和查找等关键概念。
首先,我们将了解变量的定义和赋值的重要性,它们是代码中存储和操作数据的关键。我们还将深入研究字典的使用,它是一种常用的数据结构,用于存储和组织相关信息。通过学习循环结构和条件判断,我们可以实现程序的逻辑控制和流程控制,使代码能够根据不同情况执行不同的操作。
此外,字符串处理在编程中也具有重要作用。我们将看到如何输入、比较和输出字符串,以及如何进行字符串的拼接和格式化。最后,我们还将学习如何遍历字典并查找特定的键值对,以实现用户的存在验证。
通过本文的学习,我们可以提升自己的编程技能,了解到如何应用所学知识解决实际问题。同时,深入理解这段代码也有助于我们构建更复杂、更丰富的应用程序和系统。
让我们一起踏上编程之旅,探索技术的无限可能!无论你是初学者还是有经验的开发者,本文都将为你提供有价值的知识和启发。请继续阅读,开始你的编程之旅吧!

变量定义区域

在这里插入图片描述

# 定义变量区
n = 1
key = 0
index = 0  # 判断用户是否存在的索引
str1 = "0"  # 存储用户名
str_key = "0"  # 存储密码
users = {}
  • 在这部分代码中,我们定义了一些变量来存储用户相关信息。
  • n 表示用户编号,初始化为1。
  • key 用于接收用户输入的选项,初始化为0。
  • index 用于判断用户是否存在的索引,初始化为0。
  • str1 用于存储用户名,初始化为字符串"0"。
  • str_key 用于存储密码,初始化为字符串"0"。
  • users 是一个空字典,用于存储用户信息。

实体部分区域

在这里插入图片描述

# 实体部分区域
while 1:
    print("图书管理系统--\n")
    print("请登录后再使用\n")
    key = int(input("登录-1,若无账号请注册-3,按其余任意键退出\n"))
  • 这部分代码是程序的主体部分,使用一个无限循环来保持程序运行。
  • 首先打印出图书管理系统的欢迎信息和提示信息。
  • 用户输入选项,将其转换为整数型并赋值给变量 key

注册账号逻辑

在这里插入图片描述

    if key == 3:
        n += 1
        print("请输入用户名和密码")
        str1 = input("用户名:")
        print("\n")
        str_key = input("密码:")
        users[n] = {
            "user_num": n,
            "name": str1,
            "keywords": str_key
        }
        print(users)
  • 如果用户选择的是选项3,表示用户希望注册新账号。
  • 自增用户编号 n,保证每个用户有唯一的编号。
  • 提示用户输入用户名和密码。
  • 用户输入的用户名保存到变量 str1 中。
  • 用户输入的密码保存到变量 str_key 中。
  • 将用户信息以字典的形式存储在 users 字典中,键为用户编号 n,值为一个包含用户相关信息的字典。
  • 打印出当前所有注册的用户信息。

用户登录逻辑

在这里插入图片描述

    elif key == 1:
        print("请输入用户名")# 
        str2 = input("用户名:")
  • 如果用户选择的是选项1,表示用户希望登录。
  • 提示用户输入用户名,并将其保存到变量 str2 中。
        index = 0  # 重置索引值
        for i, user in users.items():
            if str2 == user["name"]:
                index = i
                print(index)
                break
        if index == 0:
            print("请先注册")
            str3 = input("按下任意键跳转")
            continue
  • 重置索引值 index 为0,用于判断用户是否存在。
  • 通过遍历 users 字典,寻找匹配用户名的用户信息。
  • 如果找到匹配的用户,将其索引值保存到变量 index 中。
  • 如果索引值仍为0,则表示用户不存在。
  • 打印出提示信息,并继续下一次循环。
        print("欢迎尊敬的" + str2 + "用户")
        print("请输入密码")
        while 1:
            key1 = input("密码: ")
            if key1 == users[index]["keywords"]:
                print("登录成功")
                break
            else:
                print("请重新输入")
  • 如果用户存在,打印欢迎信息和提示用户输入密码。
  • 进入一个无限循环,直到用户输入正确的密码或选择退出。
  • 提示用户输入密码,并将其保存到变量 key1 中。
  • 如果输入的密码与对应用户的密码匹配,则打印登录成功信息,并跳出循环。
  • 否则,提示用户重新输入密码。

退出程序

    else:
        break
  • 如果用户选择的既不是注册也不是登录,即选择其他选项,跳出循环。

打印用户信息

print(users)
  • 循环结束后打印出当前所有注册的用户信息。

完整代码

在这里插入图片描述

# 定义变量区
n = 1  # 用户计数器,用于生成用户编号
key = 0  # 用户登录注册选择
index = 0  # 判断用户是否存在的索引
str1 = "0"  # 存储正在注册的用户名
str_key = "0"  # 存储正在注册的密码
users = {}  # 存储用户信息的字典

# 实体部分区域
while 1:
    print("图书管理系统--\n")
    print("请登录后再使用\n")
    key = int(input("登录-1,若无账号请注册-3,按其余任意键退出\n"))  # 用户选择登录、注册或退出
    if key == 3:  # 注册账号
        n += 1  # 用户计数器自增,生成新的用户编号
        print("请输入用户名和密码")
        str1 = input("用户名:")  # 输入注册用户名
        print("\n")
        str_key = input("密码:")  # 输入注册密码
        users[n] = {  # 将用户信息添加到字典中,以用户编号为键,用户名和密码为值
            "user_num": n,
            "name": str1,
            "keywords": str_key
        }
        print(users)  # 打印存储的用户信息
    elif key == 1:  # 登录账号
        print("请输入用户名")
        str2 = input("用户名:")  # 输入登录用户名
        index = 0  # 重置索引值
        for i, user in users.items():  # 遍历用户字典
            if str2 == user["name"]:  # 判断输入的用户名是否存在
                index = i  # 若存在,将索引值设为对应的用户编号
                print(index)  # 打印用户编号
                break  # 跳出循环
        if index == 0:  # 用户不存在
            print("请先注册")
            str3 = input("按下任意键跳转")  # 提示用户跳转
            continue  # 继续循环,回到登录、注册选择界面
        print("欢迎尊敬的"+str2+"用户")  # 提示用户登录成功
        print("请输入密码")
        while 1:  # 循环输入密码
            key1 = input("密码: ")
            if key1 == users[index]["keywords"]:  # 判断输入的密码是否正确
                print("登录成功")
                break  # 登录成功,跳出循环
            else:
                print("请重新输入")
    else:
        break  # 用户选择退出,结束循环

print(users)  # 打印所有用户信息


完结

该代码的主要功能是实现一个图书管理系统的登录和注册功能。用户可以选择登录已有账号或者注册新的账号。用户信息存储在一个字典中,以用户编号为键,用户名和密码为值。用户登录时需要输入用户名和密码,系统会验证输入的用户名和密码是否匹配。如果用户不存在,则提示用户注册账号。注册时需要输入用户名和密码,系统会为用户分配一个唯一的用户编号。最后,代码打印了存储的所有用户信息。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Springboot+Netty

目录 一、netty入门 二、启动方式 三、netty服务启动类 四、handler链 五、具体业务 六、 线程或者非spring管理的bean中获取spring管理的bean 七、效果 一、netty入门 Netty-导学_哔哩哔哩_bilibili 入门视频量比较大,最主要是了解netty的架构 netty官网&am…

Chapter 9 Port Delays (端口延迟)set input/output delay

文章目录 9.1 Input Availability---输入有效9.1.1 Min and Max Availability Time---最小和最大有效时间9.1.2 Multiple Clocks9.1.3 Understanding Input Arrival Time 9.2 Output Requirement9.2.1 Min and Max Required Time9.2.2 Multiple Reference Events9.2.3 Understa…

【梦辛工作室】IF判断优化、责任链模式 IfChain

大家好哇,我是梦辛工作室的灵,在最近的开发中,有许多需要判断的分支处理,且处理内容较多且复杂,代码就容易越写越复杂,导致后期无法继续更新跌打,然后基于这个环境,我用责任链模式写…

热备盘激活失败导致raid5阵列崩溃的服务器数据恢复案例

服务器数据恢复环境: 一台Linux Redhat操作系统服务器上有一组由5块硬盘组建的raid5阵列,包含一块热备盘。上层部署一个OA系统和Oracle数据库。 服务器故障: raid5阵列中的1块磁盘离线,硬盘离线却没有激活热备盘,直到…

系统集成|第四章(笔记)

目录 第四章 项目管理一般知识4.1 项目与项目管理4.1.1 项目4.1.2 项目的组织4.1.3 项目生命周期4.1.4 典型的信息系统项目的生命周期模型4.1.5 单个项目管理过程 上篇:第三章、系统集成专业技术 第四章 项目管理一般知识 4.1 项目与项目管理 4.1.1 项目 定义&…

SQL注入实操二

文章目录 一、sqli-lab靶场1.轮子模式总结2.Less-21a.注入点判断b.轮子测试c.获取数据库名称d.获取表信息e.获取列信息f.获取表内数据 3.Less-22a.注入点判断b.轮子测试c.获取数据库名称d.获取表信息e.获取列信息f.获取表内数据 4.Less-23a.注入点判断b.轮子测试c.获取数据库名…

如何模拟实现分布式文件存储

如何解决海量数据存不下的问题 传统做法是是在宕机存储。但随着数据变多,会遇到存储瓶颈 单机纵向扩展:内存不够加内存,磁盘不够家磁盘。有上限限制,不能无限制加下去 多机横向扩展:采用多台机器存储,一…

vue+axios实现点击取消请求功能

代码片段 <template> <el-button type"primary" click"clickExportData">导出</el-button><el-dialog title"正在导出&#xff0c;请稍等" :visible.sync"progressShow" :close-on-click-modal"false"…

sql优化:为什么通常选用根据id查询而不是根据name?

先来看一个最常见的问题,下面两个sql语句哪个效率更高一些&#xff1f; select * from user where id 1; select * from user where name 张三 在没有给name加索引的时候&#xff0c;id是有主键索引的&#xff0c;也就是聚集索引&#xff0c;这样就是一个BTree结构&#xf…

成为一名数字IC后端工程师需要掌握哪些技能?(内附学习视频)

众所周知&#xff0c;数字后端设计是IC设计中必不可少的一个环节&#xff0c;数字后端工程师是将门级网表转换成标准的GDS文件&#xff0c;又称为设计实现或物理设计。正所谓前端保证功能正确&#xff0c;后端保证芯片的实现正确。 数字后端工程师是做什么的&#xff1f; 数字…

操作系统启动相关概念(BIOS、MBR、GPT、BRUB)

不管是 Windows 还是 Linux 操作系统&#xff0c;底层设备一般均为物理硬件&#xff0c;操作系统启动之前会对硬件进行检测&#xff0c;然后硬盘引导启动操作系统&#xff0c;如下为操作系统启动相关的各个概念。 一、BIOS 基本输入输出系统&#xff08;Basic Input Output Sy…

android studio(火烈鸟版本)使用protobuf

一、简介 Protobuf 全称&#xff1a;Protocol Buffers&#xff0c;是 Google 推出的一种与平台无关、语言无关、可扩展的轻便高效的序列化数据存储格式&#xff0c;类似于我们常用的 xml 和 json。 二、特点 Protobuf 用两个字总结&#xff1a;小&#xff0c;快。用 Protobu…

PS 裁剪工具及工具栏配置讲解

我们还是日常打开PS软件 首先 我们右侧菜单中右键 找到裁剪工具组 当我们选择裁剪工具时 图像边上会出现一个白色的框框 用法比较简单 我们可以鼠标拖住一个边 然后 往里拖动 将不要的东西剪掉 然后 鼠标双击 即可保存结果 然后 我这里撤回一下 这些部分还有用 还有一个…

安装nvm管理node

1.首先卸载已存在的node cmd输入node提示&#xff1a;‘node’ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 2.安装nvm 安装地址 &#xff1a;Releases coreybutler/nvm-windows GitHub 本人选择1.1.7 输入nvm打印出了nvm的指令列表&#xff0c;说明…

【Nodejs】原生nodejs路由、获取参数、静态目录

1.路由 index.js // 启动服务 const server require(./server.js); //路由模块 const route require(./route.js); //api const apiRouter require(./api.js);server.use(route); server.use(apiRouter); server.start();server.js const http require(http);//创建一个大…

“解锁高效水资源管理:灌区管理系统一图详解“

平台概述 柳林灌区管理系统平台以物理灌区为单元、时空数据为底座、数学模型为核心、水利知识为驱动&#xff0c;对物理灌区全要素和建设运行全过程进行数字映射、智能模拟、前瞻预演&#xff0c;与物理灌区同步仿真运行、虚实交互、迭代优化&#xff0c;实现对物理灌区的实时…

ChatGPT和搜索引擎哪个更好用

目录 ChatGPT和搜索引擎的概念 ChatGPT和搜索引擎的作用 ChatGPT的作用 搜索引擎的作用 ChatGPT和搜索引擎哪个更好用 总结 ChatGPT和搜索引擎的概念 ChatGPT是一种基于对话的人工智能技术&#xff0c;而搜索引擎则是一种用于在互联网上查找和检索信息的工具。它们各自具…

脑电信号处理与特征提取——2.脑电的神经起源与测量(夏晓磊)

目录 二、脑电的神经起源与测量 2.1 脑电的神经起源 2.2 脑电的测量 二、脑电的神经起源与测量 2.1 脑电的神经起源 脑电起源于大脑皮层大量神经元的同步突触活动&#xff0c;主要贡献来自锥体细胞。 静息电位&#xff1a;内负外正&#xff0c;K内流。 动作电位&…

stm8s003_切换时钟流程分析、配置外部晶振(库函数调用)

1、stm8s003的时钟 复位后&#xff0c;默认使用内部高速时钟HSI&#xff08;16MHz&#xff09;的8分频&#xff0c;也就是2MHz. 代码开始运行&#xff0c;也就是运行到main函数&#xff0c;我们就可以修改时钟源为外部晶振。 2、切换时钟流程分析&#xff0c;参考官方应用手册…

联想拯救者Y9000X 2023 i9+32G+RTX4070,真香!

拯点新品&#xff01;i932GRTX4070,真香&#xff01; 联想拯救者Y9000X 2023搭载16英寸专业超竞屏&#xff0c;机身最薄处仅为17.6mm&#xff0c;轻盈即刻随行&#xff0c;让你开黑随时开始&#xff01; 高刷新率&#xff0c;高分辨率&#xff0c;广色域&#xff0c;高亮度。强…