1.bin/start.py

"""
项目启动入口
"""import os
import sys#将项目的根目录,添加到sys.path中2sys.path.append(os.path.dirname(os.path.dirname(__file__)))from core import srcif __name__ == '__main__':src.run()

2.conf/settings.py


"""此处存储固定的配置信息
"""import  os#获取项目根目录xiaoshuoyueduqi根目录
BASE_PATH=os.path.dirname(os.path.dirname(__file__))#获取db目录路径  xiaoshuoyueduqi/dbDB_PATH=os.path.join(BASE_PATH,'db')# 获取db.txt的根目录
DB_TXT_PATH= os.path.join(DB_PATH,'db.txt')

3. core/src

"""
此处存放核心业务逻辑代码
"""
from conf import settings
from db import db_handlerlogin_user=None   #用于标记登录的用户
from lib import common# 注册功能def register():print("注册功能执行中....")while True:username=input("请输入用户名:").strip()#1)先校验用户是否存在#1)涉及数据的操作:调用查看数据功能----select#1)给select函数传输当前输入的用户名,用于判断该用户是否存在#user_data--->[user,pwd,bal]  or Noneuser_data=db_handler.select(username)#若存在,让用户重新输入if user_data:print("当前输入的用户已经存在,请重新输入!")continuepassword=input("请输入密码:").strip()re_password=input("请确认密码:").strip()#两次密码是否一致校验if password==re_password:# 保存数据db_handler.save(username,password)print(f"用户{username}注册成功!")breakelse:print("两次密码不一致,请重新输入!")# 登录功能
def login():print("登录功能执行中...")while True:username=input("请输入用户名(输入q退出:)").strip()#1)查看当前用户是否存在[user,pwd,balance] or Noneuser_data=db_handler.select(username)#2)若不存在,让用户重新输入if not user_data:print("当前输入的用户不存在,请重新输入!")continuepassword=input("请输入密码:").strip()#3)校验用户输入的密码是否与db.txt中密码一致if password==user_data[1]:   #[user,pwd,balance],数据格式#4)用户登录后记录登录状态global login_userlogin_user=usernameprint(f'用户[{username}]登录成功!')returnelse:print("输入密码不正确,请重新输入!")# return# 充值功能
@common.login_authdef recharge():print("充值功能执行中...")while True:#1)让用户输入充值金额balance=input("请输入充值金额:").strip()#2)判断用户输入的金额是否是数字if not balance.isdigit():print("请输入数字!")continuebalance=int(balance)#3)修改当前用户的金额#3.1)获取当前用户的数据user,pwd,bal=db_handler.select(login_user)#3.2)先获取用户“修改前”数据old_data=f"{user}:{pwd}:{bal}"#3.3)修改当前用户金额,做加钱操作bal=int(bal)bal+=balance#'tom:123456:100"---->tom:123456:100100"#3.4)拼接“修改”后数的当前用户数据#此时的bal的值已经被修改new_data=f"{user}:{pwd}:{bal}"#3.5)调用修改数据功能db_handler.update(old_data,new_data)print(f"当前用户:[{login_user}]充值金额[[{balance}元,成功!]")break# 小说阅读功能@common.login_auth
def reader():pass# 函数字典func_dic = {'0': register,'1': login,'2': recharge,'3': reader,
}def run():"""0 账户注册1 账户登录2 充值功能3 阅读小说"""while True:print("""========小说阅读器欢迎========0 账户注册1 账户登录2 充值功能3 阅读小说=============END=============""")# choice--->'1'choice = input("请输入功能编号(提示:[输入q退出]):").strip()if choice=='q':break# 判断用户输入的编号是否在函数字典中if choice not in func_dic:print("当前账号有误,请重新输入!")continue# func_dic.get("1")()--->register函数对象-------->regiister()func_dic.get(choice)()

4.db/db_handler.py


"""
用于存储操作数据代码
"""
import os
from conf import settings
#查看数据
def select(username):with open(settings.DB_TXT_PATH,'r',encoding='utf-8')as f:#获取db.txt文件中的每一行数据for line  in f:#在每一行汇总,判断接收过来的用户名是否存在db.txt中#数据存储格式:tom:123456:99999999#数据存储格式:姓名:密码:金额if username in line:#若用户存在,则在当前行中提取该用户的所有数据#user_data--->[user,pwd,balace]user_data=line.strip().split(":")return user_data   #返回一个列表 [user,pwd,balace]#保存数据
# 保存数据格式"tom:123456:99999“
# 保存数据格式"用户名:密码:初始金额“
def save(username,password,balance=0):with open(settings.DB_TXT_PATH,'a',encoding='utf-8')as f:f.write(f"{username}:{password}:{balance}\n")#更新数据
def update(old_data,new_data):"""将旧数据old——data,替换为新数据new_data"""#1)拼接新的文件路径new_path=os.path.join(settings.DB_PATH,'new.txt')#2)读取源文件db.txt中数据进行修改,写入到新文件new.txt文件中,再更名为db.txtwith open(settings.DB_TXT_PATH,"r",encoding="utf-8")as r_f,open(new_path,"w",encoding="utf-8")as w_f:#2.1新旧数据替换all_user_data=r_f.read()all_user_data=all_user_data.replace(old_data,new_data)#2.2)将新数据写入新文件中w_f.write(all_user_data)#2.3文件名的修改"new.txt--->db.txt"os.remove(settings.DB_TXT_PATH)os.rename(new_path,settings.DB_TXT_PATH)   #把‘new.txt--->db.txt"修改为# os.remove(new_path)   #删除’new.txt“文件

5.lib/common.py

"""
存储存放公共功能
"""# 登录认证装饰器def login_auth(func):#在这里导入,解决循环导入的问题from core import srcdef inner(*args,**kwargs):if src.login_user:res=func(*args,**kwargs)return reselse:print("未登录,不允许使用特殊功能,请先登录~")src.login()return inner

6.log

python-图书管理系统3-[代码部分]-需要完善相关推荐

  1. Python分分钟实现图书管理系统(含代码)

    Python分分钟实现图书管理系统(含代码) 废话不多说,直接上代码. import sys# 打印书库中的所有书的函数 def book_detail(books):for book_name, b ...

  2. 一个简单的基于python图书管理系统

    一个简单的基于python图书管理系统 开发平台:pycharm 开发语言:python 数据库:mysql 登录界面 主界面 数据库文件 想要的联系丘丘:793064854.2R带走

  3. python毕业设计开题报告-基于Python图书管理系统开题报告

    选题的背景.意义及研究现状: 研究背景及意义: 随着我国的教育产业的快速发展,各个学校的学生数量越来越多,在这种情况下的图书馆书籍管理和查询,以及读者的管理变得非常困难,使用计算机软件的图书管理系统来 ...

  4. python+图书管理系统

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.代码展示 总结 前言 运用Python编程语言,实现图书管藏书(书号.书名.出版社.作者.价格以及库存).学生信息 ...

  5. Python图书管理系统(一)

    最近在写一个项目--图书管理系统 在完成这个项目的道路上我写了2个基础的图书管理系统. ①用IO完成数据存储的图书管理系统 ②用MySQL完成数据存储的图书管理系统    今天先来更新第一个用IO操作 ...

  6. Python图书管理系统(二)

    文章目录 前言 PyMySQL 安装 PyMySQL 使用 数据库方面的准备 图书管理系统代码          前言    上次写了用IO完成数据存储的图书管理系统, 这次更新一个用MySQL完成数 ...

  7. python 图书管理系统书写

    题目:写一个简单的图书借阅系统‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪ ...

  8. Python图书管理系统(课设)

    基于python的tkinter,将图书管理系统的界面进行简单的开发,我在这里使用的方法比较简单理解,但是代码过于繁多.添加.删除及修改并未使用数据库,而是使用了csv文件的读取操作,从而替代数据库. ...

  9. 图书管理系统jsp代码_【程序源代码】使用Java开发的图书管理系统

    关键字:java 管理系统  正文 | 内容 01 - [概述] 使用Java开发的图书管理系统,读者可以注册登录,登录时会判断账号类型再分别跳到各自对应的页面,读者可以查找,借阅,还书,查看历史借阅 ...

  10. python图书管理系统增删改查_图书管理系统---增删改查

    此代码只考虑正确情况,未判断错误情况 package dboperate; import java.util.Scanner; import model.BookDB; import dboperat ...

最新文章

  1. beautifulsoup关于标签的初学习
  2. 前端网络知识目录(持续更新)
  3. android palette组件用法,Android Support Palette使用详解
  4. Java的echo_简单的Java echo服务器问题
  5. ROS学习笔记6(理解ROS话题)
  6. vs2015professional过期后登录微软账户仍然不能使用的解决方法
  7. MAC . IntelliJ IDEA maven库下载依赖包速度慢的问题
  8. 【脑经急转弯】—— 猜额头上的数字
  9. django python版本选择
  10. iOS Unable to install “XXX“(编译成功,但跑到真机上弹出这个提示框)
  11. 平台型组织——数字化时代的组织智商鉴定器
  12. 字节跳动实习面经(已拿offer附攻略)
  13. Katalon Studio:一款静候你使用的免费自动化测试工具
  14. 锡育英语背单词软件v2019.04绿色版
  15. 【转】什么是公网安备
  16. DXP多引脚封装绘制方式
  17. ZigBee的发展也有“碎片化”zigbee模块
  18. Linux中lzop压缩工具使用
  19. php avi格式播放,Linux_网页播放器代码全集,1.avi格式代码片断如下:obje - phpStudy...
  20. Docker部署web项目

热门文章

  1. 输入两棵二叉树A,B,判断B是不是A的子结构。(我们约定空树不是任意一个树的子结构)
  2. 07_封装丶静态和工具类
  3. 单链表以及双向链表的操作
  4. [zz]muduo源码阅读之Thread和ThreadPool
  5. 使用 Python SimpleHTTPServer 快速共享文件
  6. OUC_Summer Training_ DIV2_#11 722
  7. 地址坐标LA3708:Graveyard
  8. Android开发网上的一些重要知识点
  9. wxpython控件自适应窗口大小
  10. 智能优化算法:飞蛾扑火优化算法-附代码