python图书管理系统

以下三个文件需在同一目录下。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 = 0
    index = 0
    for i in users:
        if user_name == i['name']:
            count = 1
            del users[index]
            print('删除成功!!!')
        index += 1
    if count == 0:
        print('查无此人!!!')


# 修改用户
def edit_user():
    user_name = input('请输入要修改密码的用户名:')
    count = 0
    index = 0
    for i in users:
        if user_name == i['name']:
            count = 1
            del users[index]
            new_user_name = user_name
            new_user_password = input('请输入修改后的密码:')
            new_user = {'name': new_user_name, 'password': new_user_password}
            users.append(new_user)
            print('修改成功!!!')
        index += 1
    if count == 0:
        print('查无此人!!!')


# 查看一个用户
def look_user():
    user_name = input('请输入要查看的用户名:')
    count = 0
    print('用户名\t密码\t')
    for i in users:
        if user_name == i['name']:
            count = 1
            print('%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("用户名已存在!!!")
            return
    user_password = input("请输入您的密码:")
    user = {'name': user_name, 'password': user_password}
    users.append(user)
    print("注册成功!!!")


# 登陆页面
def login():
    user_name = input("请输入您的用户名:")
    user_password = input("请输入您的密码:")
    count = 0
    for i in users:
        if user_name == i['name']:
            count = 1
            if user_password == i['password']:
                print("登陆成功!!!")
                return user_name
            else:
                print("密码错误!!!")
                print("请重试。")
    if count == 0:
        print("用户名不存在!!!")
        print("请重试。")


# 添加书籍
def add_book():
    book_name = input('请输入要添加书籍的名字:')
    # 检验书籍名是否重复
    for i in books:
        if book_name == i['name']:
            print("该书已存在!!!")
            return
    book_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 = 0
    index = 0
    for i in books:
        if book_name == i['name']:
            count = 1
            del books[index]
            print('删除成功!!!')
        index += 1
    if count == 0:
        print('查无此书!!!')


# 修改书籍
def edit_book():
    book_name = input('请输入要修改书籍的名字:')
    count = 0
    index = 0
    for i in books:
        if book_name == i['name']:
            count = 1
            del 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 += 1
    if count == 0:
        print('查无此书!!!')


# 查看一本书籍
def look_book():
    book_name = input('请输入要查看书籍的名字:')
    count = 0
    print('书名\t\t作者\t价格\t')
    for i in books:
        if book_name == i['name']:
            count = 1
            print('%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()  # 用户登陆后返回值name

            while_user(name)  # 用户与管理者

        elif menu_n == '3':
            set_init_data()
            break
        else:
            print("非法输入!!!")
            print("请再次选择:")


if __name__ == '__main__':
    # 初始信息读取
    books, users = get_init_data()
    # 调用主函数
    main()
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值