以下三个文件需在同一目录下。json文件格式不能更改
books-fxm.json
[{"name": "图书管理","author": "fxm","price": "99999"},{"name": "完美世界","author": "辰东","price": "99"},{"name": "斗破苍穹","author": "土豆","price": "99"}
]
users-fxm.json
[{"name": "fxm","password": "123456"}
]
main.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
图书管理系统
1. 创建一个列表存储书籍信息,包括书名,作者名,价格
2. 创建一个列表存储用户信息,包括用户名,密码
3. 制作一个注册登录系统,登录后可以使用添加书籍,删除书籍,
修改书籍信息,查询单本书籍信息,查询所有书籍信息等功能
4. 图书信息、用户信息存入文件中 (新增)图书管理系统操作说明
一、普通用户1.先注册2.登录到系统3.进行功能操作 (增、删、改、查书籍)4.退出系统
二、管理者1.使用管理者账户登陆(fxm:123456)2.管理普通用户 (删、改、查用户)3.退出系统
"""import json
import os# 本系统保存信息的文件名
file_name_books = "books-fxm.json"
file_name_users = "users-fxm.json"# 主菜单
def menu():print('*' * 40)print('*' * 10, '欢迎来到图书管理系统 1.0 ')print('*' * 40)print('请选择:')print("1: 注册新用户:")print("2. 已有账户,登陆:")print("3. 退出本系统")# 用户小屋(功能页面)
def user_menu(self):print('*' * 40)print('欢迎%s! 来到图书小屋' % self)print('请选择您所需的功能:')print('1. 添加书籍')print('2. 删除书籍')print('3. 修改书籍信息')print('4. 查询单本书籍信息')print('5. 查询所有书籍信息')print('6. 退出您的图书小屋')# 管理者页面
def manger():print('*' * 40)print('欢迎本系统管理者!!!')print('*' * 40)print('请选择您所需的功能:')print('1. 删除一个用户')print('2. 修改用户密码')print('3. 查看一个用户信息')print('4. 查看全部用户信息')print('5. 退出管理者页面')# 删除用户
def del_user():user_name = input('请输入要删除的用户名:')count = 0index = 0for i in users:if user_name == i['name']:count = 1del users[index]print('删除成功!!!')index += 1if count == 0:print('查无此人!!!')# 修改用户
def edit_user():user_name = input('请输入要修改密码的用户名:')count = 0index = 0for i in users:if user_name == i['name']:count = 1del users[index]new_user_name = user_namenew_user_password = input('请输入修改后的密码:')new_user = {'name': new_user_name, 'password': new_user_password}users.append(new_user)print('修改成功!!!')index += 1if count == 0:print('查无此人!!!')# 查看一个用户
def look_user():user_name = input('请输入要查看的用户名:')count = 0print('用户名\t密码\t')for i in users:if user_name == i['name']:count = 1print('%s\t\t%s\t' % (i['name'], i['password']))if count == 0:print('查无此人!!!')# 查看全部用户
def look_users():print('用户名\t密码\t')for i in users:print('%s\t\t%s\t' % (i['name'], i['password']))# 注册页面
def sign_up():user_name = input("请输入您的用户名:")# 检验用户名是否重复for i in users:if user_name == i['name']:print("用户名已存在!!!")returnuser_password = input("请输入您的密码:")user = {'name': user_name, 'password': user_password}users.append(user)print("注册成功!!!")# 登陆页面
def login():user_name = input("请输入您的用户名:")user_password = input("请输入您的密码:")count = 0for i in users:if user_name == i['name']:count = 1if user_password == i['password']:print("登陆成功!!!")return user_nameelse:print("密码错误!!!")print("请重试。")if count == 0:print("用户名不存在!!!")print("请重试。")# 添加书籍
def add_book():book_name = input('请输入要添加书籍的名字:')# 检验书籍名是否重复for i in books:if book_name == i['name']:print("该书已存在!!!")returnbook_author = input('请输入要添加书籍的作者:')book_price = input('请输入要添加书籍的价格:')book = {'name': book_name, 'author': book_author, 'price': book_price}books.append(book)print('添加成功!!!')# 删除书籍
def del_book():book_name = input('请输入要删除书籍的名字:')count = 0index = 0for i in books:if book_name == i['name']:count = 1del books[index]print('删除成功!!!')index += 1if count == 0:print('查无此书!!!')# 修改书籍
def edit_book():book_name = input('请输入要修改书籍的名字:')count = 0index = 0for i in books:if book_name == i['name']:count = 1del books[index]new_book_name = input('请输入修改后书籍的名字:')new_book_author = input('请输入修改后书籍的作者:')new_book_price = input('请输入修改后书籍的价格:')new_book = {'name': new_book_name, 'author': new_book_author, 'price': new_book_price}books.append(new_book)print('修改成功!!!')index += 1if count == 0:print('查无此书!!!')# 查看一本书籍
def look_book():book_name = input('请输入要查看书籍的名字:')count = 0print('书名\t\t作者\t价格\t')for i in books:if book_name == i['name']:count = 1print('%s\t%s\t%s\t' % (i['name'], i['author'], i['price']))if count == 0:print('查无此书!!!')# 查看全部书籍
def look_books():print('书名\t\t作者\t价格\t')for i in books:print('[%s]\t%s\t%s\t' % (i['name'], i['author'], i['price']))# 初始状态读取文件
def get_init_data():if (not os.path.exists(file_name_users)) | (not os.path.exists(file_name_books)):raise print("缺少必要文件:", file_name_books, file_name_users)with open(file_name_books, 'r', encoding='utf-8') as f:books_json = json.load(f)with open(file_name_users, 'r', encoding='utf-8') as f:users_json = json.load(f)return books_json, users_json# 结束程序更新数据文件
def set_init_data():with open(file_name_books, 'w', encoding='utf-8') as f:f.write(json.dumps(books, ensure_ascii=False, indent=4))with open(file_name_users, 'w', encoding='utf-8') as f:f.write(json.dumps(users, ensure_ascii=False, indent=4))# 用户与管理者
def while_user(name):while name: # 根据是否登陆成功,进入用户菜单if name == 'fxm': # 判断是否为管理者manger() # 管理者页面manger_n = input()if manger_n == '1':del_user() # 删除一个用户elif manger_n == '2':edit_user() # 修改用户密码elif manger_n == '3':look_user() # 查看一个用户信息elif manger_n == '4':look_users() # 查看全部用户信息elif manger_n == '5':break # 退出管理者页面else:print("非法输入!!!")print("请再次选择:")else:user_menu(name) # 普通用户页面user_n = input()if user_n == '1':add_book() # 添加书籍elif user_n == '2':del_book() # 删除书籍elif user_n == '3':edit_book() # 修改书籍信息elif user_n == '4':look_book() # 查询单本书籍信息elif user_n == '5':look_books() # 查询所有书籍信息elif user_n == '6':break # 退出普通用户页面else:print("非法输入!!!")print("请再次选择:")# 主函数
def main():# 循环菜单主页面while True:menu() # 主菜单页面menu_n = input()if menu_n == '1':sign_up()elif menu_n == '2':# 循环用户菜单页面name = login() # 用户登陆后返回值namewhile_user(name) # 用户与管理者elif menu_n == '3':set_init_data()breakelse:print("非法输入!!!")print("请再次选择:")if __name__ == '__main__':# 初始信息读取books, users = get_init_data()# 调用主函数main()