Python之第三十天的努力--软件开发规范,,软件开发规范为什么要


软件开发规范

为什么要有软件开发规范?

app 软件 不可能全部都写在一个文件中,加载效率低,不容易查找,不规范。

代码越多,你越不可能放在一个文件中,你需要将你的代码分文件。

软件开发规范。

技术图片

技术图片

技术图片

技术图片

bin文件夹 --->启动文件starts

# import src# 直接引用不到# 这么做虽然实现了,但是有问题# 问题一1.项目中的py文件,肯定会互相引用,src 引用 settings,  src 引用 common....# import sys# sys.path.append(r‘E:\pycharm\Python世界\从0开始学Python\day17\blog\core‘)## import src# src.run()# 不能一个一个添加。# 解决问题1:# import sys# 直接添加blog的目录# sys.path.append(r‘E:\pycharm\Python世界\从0开始学Python\day17\blog‘)## from core import src# src.run()# 问题2:此项目  在我的计算机中的路径为:E:\pycharm\Python世界\从0开始学Python\day17\blog# 但是在别人的计算机内就不一定,这样就写死了。# 解决# 动态的获取blog的路径 无论在谁的计算机中,都可以找到blog的绝对路径。# import sys# import os# print(__file__)     # 动态获取本文件的绝对路径# print(os.path.dirname(__file__))    # 获取父级的目录# print(os.path.dirname( os.path.dirname(__file__) ) )    # 获取爷级的目录####################以上为思路###################import sysimport osBASE_PATH = os.path.dirname(os.path.dirname(__file__))sys.path.append(BASE_PATH)from core import srcif __name__ == ‘__main__‘:    src.run()

conf文件夹 ---> settings(配置文件)

import osBASE_PATH = os.path.dirname(os.path.dirname(__file__))username_path = os.path.join(BASE_PATH,‘db‘,‘username‘)

core文件夹 ---> src(主逻辑文件)

from conf import settingsfrom lib import commondef table_print():    ‘‘‘    打印目录    ‘‘‘    print(‘1.请登录‘)    print(‘2.请注册‘)    print(‘3.进入文章页面‘)    print(‘4.进入评论页面‘)    print(‘5.进入日记页面‘)    print(‘6.进入收藏页面‘)    print(‘7.注销账号‘)    print(‘8.退出整个程序‘)def get_user_pwd():    ‘‘‘    获取用户名及密码,加入一个列表中    @return: user_dict 用户名,密码的字典    ‘‘‘    user_dict = {}          # 建立用户名,密码的字典,字典的键为用户名,值为密码    with open(settings.username_path, encoding=‘utf-8‘) as f:       # 读取包含用户名密码的文件        for line in f:      # 按行读取,并把用户名,密码分开,填入字典            line_list = line.strip().split(‘|‘)            user_dict[line_list[0].strip()] = line_list[1].strip()    return user_dictdef registration():    ‘‘‘    注册操作    @return:    ‘‘‘    while 1:        registration_name = input(‘请输入用户名(只能含有字母或数字):‘)        registration_pwd = input(‘请输入密码(长度6~14个字符):‘)        if registration_name.isalnum() and 6 <= len(registration_pwd) <= 14:    # 判断输入的用户名是否符合要求            u_dict = get_user_pwd()            if registration_name in list(u_dict.keys()):                        # 用户名存在                print(‘您输入的用户名已存在,请重新输入‘)            else:                with open(settings.username_path, encoding=‘utf-8‘, mode=‘a‘) as f2:                    f2.write(registration_name + ‘|‘ + registration_pwd + ‘\n‘) # 符合要求者,添加到用户名密码文件中                break        else:            print(‘您输入的用户名或密码不正确,请重新输入‘)            continue    print(‘注册成功‘)# 登录状态字典,用于判断是否有用户已经登录。login_status_dict = {    ‘username‘: None,    ‘status‘: False,}def login():    ‘‘‘    登录操作    @return:    ‘‘‘    u_dict = get_user_pwd()    count = 1    print(‘请登录‘)    while count < 4:                                                    # 超过三次登录还未成功,则退出整个程序。        username = input(‘请输入用户名:‘).strip()        password = input(‘请输入密码:‘).strip()        if username in u_dict.keys() and password == u_dict[username]:  # 判断用户名密码是否正确            print(‘登录成功‘)            login_status_dict[‘username‘] = username                    # 修改登录状态字典的,登录用户名。            login_status_dict[‘status‘] = True                          # 修改登录状态字典的,登录状态。            return True        else:            print(‘用户名或密码错误‘)        count += 1    print(‘用户名密码输入三次均不正确,自动退出程序。‘)    return False@common.authdef article():    ‘‘‘    文章页面    @return:    ‘‘‘    while 1:        print(f‘欢迎{login_status_dict["username"]}进入文章页面‘)        write_art_num = input(‘选择直接写入内容输入1,选择导入md文件输入2,输入B或b返回上一个页面,输入Q或q直接退出:‘).strip()        if write_art_num.isdecimal():                                                   # 选择进行的操作            write_art_num = int(write_art_num)            if write_art_num == 1:                                                      # 进行直接写入操作                article_name = input(‘请输入文件名:‘)                article_content = input(‘请输入文件内容:‘)                with open(article_name,encoding=‘utf-8‘,mode=‘w‘) as f3:                # 直接写入用户输入的内容                    f3.write(article_content)            elif write_art_num == 2:                                                    # 进行md文件写入操作                article_name = input(‘请输入md文件的路径:‘)                with open(article_name,encoding=‘utf-8‘,mode=‘r‘) as f4,                    open(article_name[:-2] + ‘text‘,encoding=‘utf-8‘,mode=‘w‘) as f5:                    f5.write(f4.read())                                                 # 读取并写入            else:                print(‘您输入有误,请重新输入‘)        elif write_art_num.upper() == ‘B‘:                                              # 返回上一页面            break        elif write_art_num.upper() == ‘Q‘:                                              # 直接退出程序            return    return True@common.authdef comment():    ‘‘‘    评论页面    @return:    ‘‘‘    print(f‘欢迎{login_status_dict["username"]}进入评论页面‘)    if back_quit():        return True    else:        return@common.authdef dariy():    ‘‘‘    日记页面    @return:    ‘‘‘    print(f‘欢迎{login_status_dict["username"]}进入日记页面‘)    if back_quit():        return True    else:        return@common.authdef collect():    ‘‘‘    收藏页面    @return:    ‘‘‘    print(f‘欢迎{login_status_dict["username"]}进入收藏页面‘)    if back_quit():        return True    else:        return@common.authdef cancel_login():    ‘‘‘    注销登录    @return:    ‘‘‘    login_status_dict[‘username‘] = None            # 把登录状态字典的登录者姓名改为None    login_status_dict[‘status‘] = False             # 把登录状态改为False    print(‘您已注销‘)    if back_quit():        return True    else:        returndef back_quit():    ‘‘‘    返回或直接退出    @return:    ‘‘‘    while 1:        s_quit = input(‘输入B或b返回上一个页面,输入Q或q直接退出:‘).strip()        if s_quit.upper() == ‘B‘:            break        elif s_quit.upper() == ‘Q‘:            return        else:            print(‘您输入有误请重新输入‘)    return Truedef run():    ‘‘‘    主函数    @return:    ‘‘‘    while 1:        table_print()                                               # 打印目录        open_num = input(‘请输入您要进行的操作的序号:‘).strip()         # 选择进行的操作        if open_num.isdecimal():                                    # 判断用户输入的序号是否符合规定            open_num = int(open_num)                                # 将序号变为int 类型            if open_num == 1:                login()                                             # 执行登录操作            elif open_num == 2:                registration()                                      # 执行注册操作            elif open_num == 3:                if article():                                       # 进入文章页面                    continue                else:                    return            elif open_num == 4:                if comment():                                       # 进入评论页面                    continue                else:                    return            elif open_num == 5:                if dariy():                                         # 进入日记页面                    continue                else:                    return            elif open_num == 6:                if collect():                                       # 进入收藏页面                    continue                else:                    return            elif open_num == 7:                if cancel_login():                                  # 进入注销账号页面                    continue                else:                    return            elif open_num == 8:                return            else:                print(‘您输入有误,请重新输入。‘)        else:            print(‘您输入有误,请重新输入。‘)

db文件夹 ---> 存放文本数据

lib文件夹 ---> 存放 common(公共组件):装饰器,日志函数

from core import srcdef auth(f):    ‘‘‘    判断是否有用户已经登录的装饰器    @param f: 修饰的函数名    @return: inner    ‘‘‘    def inner(*args,**kwargs):        if src.login_status_dict[‘status‘]:             # 如果已有用户登录,则直接运行被修饰函数            ret = f(*args,**kwargs)            return ret        else:            if src.login():                             # 如果没有用户登录,则进行登录操作。                ret = f(*args,**kwargs)                return ret    return inner

log文件夹 ---> 存放 日志文件

Python之第三十天的努力--软件开发规范

评论关闭