前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 图书管理系统

Python 图书管理系统

作者头像
残浔
发布2023-05-11 19:42:35
4690
发布2023-05-11 19:42:35
举报
文章被收录于专栏:UQUQ
代码语言:javascript
复制
import sys

# 标志位
flag = False

# 存储学生信息字典,学生信息用字典存储,再用列表存储字典
name_list = [{"id": "20201001", "name": "残浔", "sex": "男", "book": "传说有两个地球"},{"id": "20201002", "name": "好家伙", "sex": "男", "book": "好家伙传记"}]


# 默认图书馆管理员信息
users = [['admin', '123456']]

# 主函数


def main():
    print('\n\n    **********************')
    print('    *欢迎来到图书管理系统*')
    print('    **********************\n')
    print('*********************************')
    print('******   登录-------0  **********')
    print('******   注册-------1  **********')
    print('******   退出-------2  **********')
    print('*********************************\n')
    while True:
        val = int(input('请输入对应数字:'))
        if val == 0:
            login()
        elif val == 1:
            register()
        elif val == 2:
            sys.exit(0)


# 管理员注册
def register():
    username = input('请输入用户名:')
    password = input('请输入用户密码:')
    users.append([username, password])
    print('注册成功!')
    main()


# 管理员登录
def login():
    print('请输入用户名:', end='')
    username = input()
    print('请输入用户密码:', end='')
    password = input()
    if [username, password] in users:
        print('登录成功!')
        interface()
    else:
        print('\n用户名不存在或密码错误!请重新登录!')


# 登录主界面
def interface():
    print('\n***********************************************')
    print('******   进入书籍信息管理界面-------1  ********')
    print('******   进入学生信息管理界面-------2  ********')
    print('******   退出系统-------------------3  ********')
    print('***********************************************\n')
    val = int(input('请输入对应数字:'))
    if val == 1:
        Book()
    elif val == 2:
        Student()
    elif val == 3:
        sys.exit(0)


# 学生信息管理
def Student():
    while True:
        print("-" * 30)
        print("1.添加学生信息")
        print("2.删除学生信息")
        print("3.修改学生信息")
        print("4.查询单个学生信息")
        print("5.查询所有学生信息")
        print("6.返回主界面")
        print("-" * 30)
        val = int(input('请输入对应数字:\n'))
        if val == 1:
            new_info = {}
            new_id = check_id(input("请输入学号:"))
            new_info['id'] = new_id
            new_name = input("请输入姓名:")
            new_info['name'] = new_name
            new_sex = check_sex(input("请输入性别(男/女):"))
            new_info['sex'] = new_sex
            new_book = input("请输入书名,以《》格式命名:")
            new_info['book'] = new_book
            name_list.append(new_info)
            print("添加成功!")
        elif val == 2:
            del_name()
        elif val == 3:
            re_name()
        elif val == 4:
            find_name()
        elif val == 5:
            find_all()
        elif val == 6:
            # 返回主界面
            interface()


# 检查性别是否合法
def check_sex(new_sex):
    flag = True
    while flag:
        if new_sex == '男' or new_sex == '女':
            flag = False
        else:
            new_sex = input("输入性别有误,请重新输入(男/女):")
    return new_sex

    # 默认已存在的图书书籍信息


books = [['红楼梦', '曹雪芹', 'F02'], ['三国', '罗贯中', 'A32'], ['西游记', '吴承恩', 'D82'],
         ['水浒传', '施耐庵', 'B56']]


# 书籍信息管理
def Book():
    while True:
        print('\n***************************************')
        print('********  增加书籍--------1  **********')
        print('********  删除书籍--------2  **********')
        print('********  查找书籍--------3  **********')
        print('********  修改书籍--------4  **********')
        print('********  查看所有书籍----5  **********')
        print('********  返回主界面------6  **********')
        print('***************************************\n')
        val = int(input('请输入对应的数字:\n'))
        if val == 1:
            bookname = input('请输入书名:')
            author = input('请输入作者:')
            Num = input('请输入编号:')
            books.append([bookname, author, Num])
            print('\n添加书籍成功!')
        elif val == 2:
            Num = input('请输入编号:')
            j = 0
            for i in books:
                if i[2] == Num:
                    j = 1
                    books.remove([i[0], i[1], i[2]])
                    print('\n删除书籍成功!')
            if j == 0:
                print('该书籍不存在!自动返回...')
        elif val == 3:
            bookname = input('请输入书名:')
            print()
            j = 0
            for i in books:
                if i[0] == bookname:
                    j = 1
                    print('书名:', i[0], '作者:', i[1], '编号:', i[2])
            if j == 0:
                print('该书籍不存在!自动返回...')
            print('\n查找结束!\n')
        elif val == 4:
            Num = input('请输入编号:')
            j = 0
            for i in books:
                if i[2] == Num:
                    j = 1
                    i[0] = input('请输入修改后的书名:')
                    i[1] = input('请输入修改后的作者:')
                    i[2] = input('请输入修改后的编号:')
                    books.append([i[0], i[1], i[2]])
                    print('\n修改书籍成功!')
            if j == 0:
                print('该书籍不存在!自动返回...')
        elif val == 5:
            print('\n书名\t\t', '作者\t\t\t', '编号\n')
            for i in books:
                print(i[0], '\t\t', i[1], '\t\t', i[2])
            print()
        elif val == 6:
            # 返回主界面
            interface()


# 检查学号是否重复或者有误
def check_id(new_id):
    flag = True
    while flag:
        # 先检查是不是纯数字再去考虑是否重复的事情,如果不是纯数字直接pass
        if new_id.isdigit():
            for i in range(len(name_list)):
                if name_list[i]['id'] == new_id:
                    new_id = check_id(input("您输入的学号重复,请重新输入:"))
            flag = False
        else:
            new_id = input("您输入的学号有误,请重新输入:")
    return new_id

    # 删除学生信息


def del_name():
    del_id_is = input("请输入要删除的学生学号:")
    flag = False
    index = 0
    for i in range(len(name_list)):
        if name_list[i]['id'] == del_id_is:
            flag = True
            index = i
            break
    if flag:
        name_list.pop(index)
        print("删除成功!")
    else:
        print("学生未找到!请检查学号输入是否有误!")


# 修改学生信息
def re_name():
    id_is = input("请输入要修改的学生学号:")
    flag = False
    index = 0
    # 先找到要修改的学生的下标
    for i in range(len(name_list)):
        if name_list[i]['id'] == id_is:
            flag = True
            index = i
            break
    if flag:
        choice_of_name(index)
        print("修改成功!")
    else:
        print("修改失败,学生信息未找到!")


# 查询所有学生信息
def find_all():
    print("=" * 50)
    for name in name_list:
        print(name['id'], name['name'], name['sex'], name['book'])
    print("=" * 50)


# 查询单个学生信息
def find_name():
    find_id_is = input("请输入要查询的学生学号:")
    flag = False
    index = 0
    for i in range(len(name_list)):
        if name_list[i]['id'] == find_id_is:
            flag = True
            index = i
            break
    if flag:
        print("学生查询到,学生信息为:")
        print(name_list[index]['id'], name_list[index]['name'],
              name_list[index]['sex'], name_list[index]['book'])
    else:
        print("学生未找到!")


# 主程序入口
if __name__ == "__main__":
    main()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年11月1日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档