首页 > 其他分享 >周总结--20221023

周总结--20221023

时间:2022-10-23 19:35:05浏览次数:59  
标签:总结 -- db 20221023 json user time path os

代码实战篇

要求

.按照软件开发⽬录规范创建出完整⽬录

.核⼼逻辑⽂件中编写调用⽤户注册登录功能,

.注册功能要有校验⽤户是否存在和数据保存的功能

.common.py⽂件中编写⼀个可以统计函数运⾏时间的装饰器给每个核⼼逻辑功能添加上统计执⾏功能

.⽤户数据保存使⽤json格式并且单⽤户单⽂件

.添加查看全体⽤户数据功能

.⽤户选择需要查看的⽤户数据后直接打印出该⽤户数据的全部信息

(⾃由发挥 可以直接打印反序列化后的字典或者格式化美化输出)

.添加执⾏操作系统命令功能,⽤户选择该功能后 获取⽤户想要执⾏的操作命令 交由操作系统执⾏,将返回结果打印给⽤户查看

.

  • 先写整体框架结构代码,core文件夹里面建一个src.py文件
from lib.common import register, login, check1          # 导入对应的功能函数的对应函数名

func_dict = {                                       # 定义一个功能函数名为值的字典
    '1': register,
    '2': login,
    '3': check1,
}
def run():                        # 函数主体运行的框架代码
    while True:
        print("""
        1.注册功能
        2.登录功能
        3.查看用户数据
        0.退出程序
        """)
        func_n = input('请输入要执行的功能编号')
        if func_n not in func_dict:
            print('没有您要执行的功能编号')
        if func_n == '0':
            break
        func_dict.get(func_n)()        # 根据用户输入编号,在字典里面找到对应的功能函数名再加括号运行函数

image
.
.

  • 开始写各功能函数的代码
import os
import json
import time


base_dir = os.path.dirname(os.path.dirname(__file__))  # dirname获取当前文件所在的目录路径,嵌套使用就是获取上一级的路径
db_dir = os.path.join(base_dir,'db')        # 项目根目录路径与'db'拼接
if not os.path.isdir(db_dir):  # 判断db文件目录是否存在,就是判断db文件夹存不存在
    os.mkdir(db_dir)           # 不存在就创建一个



# 装饰器
def outer(func):
    def inner(*args,**kwargs):
        start_time = time.time()                          # 获取时间戳
        res = func(*args,**kwargs)
        end_time = time.time()                           # 再获取时间戳
        use_time = end_time - start_time
        print(f'程序执行时间为{use_time}')                  # 打印统计时间
        return res
    return inner



@outer
def register():           # 先写注册功能
    while True:
        username = input('请输入用户名q>>:').strip()
        if username == 'q':
            break
        user_file_path = os.path.join(db_dir, f'{username}.json')  # 将db文件路径与用户名.json文件名拼接,形成字符串,后续打开不需要r''了
        if os.path.isfile(user_file_path):  # 判断拼接的路径是否已经存在
            print('该用户名已经存在,请重新注册')
            continue
        password = input('请输入密码').strip()  # 获取用户密码
        age = input('请输入年龄').strip()       # 获取用户年龄
        user_dict = {
            'real_name': username,  # 构建用户字典
            'real_pwd': password,
            'real_age':age,
            'real_account': 10000,
            'shop_car': []
        }
        with open(user_file_path, 'w', encoding='utf8')as f:  # 用w模式打开该文件,如果这个文件不存在,就会自动创建该文件了
            json.dump(user_dict, f)                       # 先将字典转为json格式,再写入文件
            print('用户注册成功')
            break




@outer
def login():               # 再写登录功能
    while True:
        username = input('请输入用户名q>>:').strip()
        if username == 'q':
            break
        user_file_path = os.path.join(db_dir, f'{username}.json')     # 还是先拼接出用户名文件路径
        if not os.path.isfile(user_file_path):     # 判断这个路径存不存在
            print('该用户名不存在')
            continue
        password = input('请输入密码').strip()
        with open(user_file_path, 'r', encoding='utf8')as f:        # r模式打开用户文件
            user_dict2 = json.load(f)                # 先读出来,再反序列化将json格式数据转为正常格式数据
            if user_dict2.get('real_pwd') == password:   # 判断密码是否正确
                print('登录成功')
                break
            else:
                print('密码错误')




@outer
def check1():              # 再写查看功能
    while True:
        username = input('请输入用户名(q):').strip()
        user_file_path = os.path.join(db_dir, f'{username}.json')    # 还是先拼接出用户名文件路径
        if username == 'q':
            break
        with open(user_file_path, 'r', encoding='utf8') as f:
            user_dict = json.load(f)
            print(f"""
            ------------user_info----------
            姓名:{user_dict.get('real_name')}
            年龄:{user_dict.get('real_age')}
            账户余额:{user_dict.get('real_account')}
            -------------------------------
            """)


image
.
image
.
image
.
image

.
.

  • 最后再写一个start文件
from core.src import run        # 导入src模块

import os, sys                  # 导入os与sys模块

base_dir = os.path.dirname(os.path.dirname(__file__))  # 获取项目根路径
sys.path.append(base_dir)  # 将项目根路径添加到系统环境变量中去

if __name__ == '__main__':   # 设置执行文件运行脚本
    run()                     # 调用运行src里的,项目框架函数体代码

image

标签:总结,--,db,20221023,json,user,time,path,os
From: https://www.cnblogs.com/tengyifan888/p/16819241.html

相关文章

  • 实验2 C语言控制语句应用编程
    1#include<stdio.h>2#include<stdlib.h>3#include<time.h>45intmain()6{7srand(time(0));89intdate=rand()......
  • LVS
    LVS是LinuxVirtualServer的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。目前LVS已经被集成到Linux内核ipvs模块中。该项目在Linux内核中实现了基于IP的数......
  • 进程与线程的区别
    基本概念:进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。线程:是进程的一个执行单元,是进程内科调度实体。比进......
  • 关于eclipse的一些便捷小技巧
    在使用eclipse进行Java语言编程的时候,如果遇到需要使用get、set函数或者有参/无参构造方法时就会很麻烦难道除了一个一个敲出来就没有其他方法了吗?非也非也接下来我就分享......
  • Centos安装lnmp,云起实验室
    1.执行如下命令,下载并安装MySQL官方的YumRepository。wget-ihttp://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpmyum-yinstallmysql57-comm......
  • 定时器和时钟(第五章)
    目录定时器和时钟(第五章)一、知识点总结二、知识点总结1、硬件定时器2、Linux下的时钟函数1)常用结构体2)time()函数获取当前时间3)asctime()asctime_r()将时间和日期以字......
  • C/C++抽红包系统
    C/C++抽红包系统(二)抽红包系统程序设计要求:1)都有菜单页,有用户登录和退出环节,有退出系统菜单项;2)采用结构体数组变量完成数据的储存(用动态分配结构体数组或单向链......
  • 多态的基础知识
    多态:基本介绍一个引用变量可以引用多种实际类型对象的现象称为多态。一个引用变量可以引用这个类和该类的所有子类对象。父类引用变量引用子类对象规则:沿着继承层......
  • LeeCode 316周赛复盘
    T1:判断两个事件是否存在冲突思路:判断两个区间是否有交集publicbooleanhaveConflict(String[]event1,String[]event2){//比较Unicode字符,使用compareTo函......
  • 链表实现
    1.伪代码算法要插入一个节点,即将上一个节点指向的地址改为要插入的地址,将新的节点指向下一个节点即setnext(i)toqset*ptonext(i)setqtonext(p)要删除一......