【含视频教程】python实现图书管理系统

本文介绍了如何使用Python创建一个图书管理系统,包括用户注册、登录、查询图书、增删改图书、借书还书等功能。提供了相关源码、教程链接,并强调只有管理员才能进行图书的增删改操作。
摘要由CSDN通过智能技术生成

嗨嗨,大家好~ 今天给大家分享一下如何用python实现图书管理系统

请添加图片描述

用户注册

需要源码、教程,或者是自己有关python不懂的问题,都可以来这里哦 https://jq.qq.com/?_wv=1027&k=byXFCxLC 这里还有学习资料与免费课程领取

def logon():
    print("欢迎来到图书管理系统注册页面~")
    username = input("请输入用户名:")
    if len(username)<6:
        print("用户名不能小于6个字符")
    else:
        email = input("请输入邮箱:")
        password = input("请输入密码:")
        if len(password)<8:
            print("密码不能少于8位")
        else:
            rpassword = input("请确认密码:")
            if password ==rpassword:
                print("注册成功!")
                # 函数调用,每追加一列数据都进行换行 每个数据之间都有空格
                preserve_data(path,[username,'   '+ email,'   '+ password + '\n'])
                login_tips = input('是否登录?(yes/no)')
                if login_tips =='yes':
                    login()
                else:
                    pass
                return True
            else:
                print("两次输入的密码不一致,请重新输入!")
                # 递归调用
                logon()

保存数据到文件

path = r'/Users/mozili/PYTHONWORKSPACE/bookManage/user.txt'
def preserve_data(file_path,data):
    # 将字符串转换为bytes,因为write写入的是字节流,不能是字符串 当为w时需要解码
    # data = data.encode()
    # 打开文件,追加数据到文件
    with open(file_path,'a') as wstream:
        # 判断是否可写
        if wstream.writable():
            wstream.writelines(data)
        else:
            print("没有权限!")

用户登录

def login():
    print("欢迎来到图书管理系统登录页面~")
    tips = input("是否已经注册?(yes/no)")
    if tips =='yes':
        while True:
            username = input("输入用户名:")
            password = input("输入密码:")
            # 读取文件时可能会出现找不到文件的异常,因此使用try except
            try:
                # 读取文件中的内容
                with open(path, 'rb') as stream:
                    # 读取多行保存到列表中,列表中保存的是二进制,字节
                    result = stream.readlines()
                    # print(result)
                    # 列表推导式,循环遍历列表,将字节解码为字符串放在一个新列表uesr_list
                    uesr_list = [i.decode() for i in result]
                    # print(uesr_list)
                    # 循环遍历列表,检查输入的用户名和密码是否在字符串中
                    for i in uesr_list:
                        info = i.split('   ')
                        # print(info)
                        if username == info[0] and password == info[2].rstrip('\r\n'):
                            print("登录成功")
                            operate(book_path,username)
                            break
                    else:
                        raise Exception("用户名或密码错误,请重新输入!")

            except Exception as err:
                print(err)
            # 没有异常时执行else语句
            else:
                break
    else:
        print("您还未注册,请先注册后再登录!")
        # 递归
        logon()

查询图书

def find_books(path):
    try:
        with open(path, 'r') as rstream:
            # readlines读到的内容是一个列表
            container = rstream.readlines()
            # 通过列表推导式得到新的列表,即每个元素去掉后面的换行符号
            new_container = [books_name.rstrip('\n') for books_name in container]
            for b_name in new_container:
                # 打印图书+《》
                print("《{}》".format(b_name))

    except Exception as err:
        print("错误原因:",err)

添加图书

需要源码、教程,或者是自己有关python不懂的问题,都可以来这里哦 https://jq.qq.com/?_wv=1027&k=byXFCxLC 这里还有学习资料与免费课程领取

def add_book(b_path,username):
    # 添加前首先判断是否是管理员
    permission(b_path, username)
    # 追加图书 不能是w ,否则会清空之前的内容
    with open(b_path, 'a') as wstream:
        # 判断是否可写
        if wstream.writable:
            msg = input("请输入书名:")
            try
Python图书馆管理系统的代码可以通过以下步骤来实现: 1. 安装Python 首先需要安装Python,可以从官网下载安装包,然后按照安装向导进行安装。 2. 安装所需库 需要安装一些Python库,比如Tkinter、sqlite3等库,可以使用pip命令进行安装。 3. 创建数据库 使用sqlite3库创建一个数据库,并创建几张表,比如图书表、借阅表等。 4. 编写代码 根据需求编写代码,包括界面设计、数据操作、事件处理等。 5. 测试和调试 运行程序进行测试和调试,确保程序能够正常运行,并且没有错误和异常。 如果你想了解更详细的内容,可以在网上搜索相关教程或者视频。在此,我提供一份简单的代码示例: ``` import tkinter as tk import sqlite3 # 创建主窗口 root = tk.Tk() root.title('图书馆管理系统') # 创建数据库连接 conn = sqlite3.connect('library.db') c = conn.cursor() # 创建图书表 c.execute('''CREATE TABLE IF NOT EXISTS books (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, author TEXT NOT NULL, publisher TEXT NOT NULL, pubdate TEXT NOT NULL, isbn TEXT NOT NULL, price REAL NOT NULL, status INTEGER NOT NULL)''') # 创建借阅表 c.execute('''CREATE TABLE IF NOT EXISTS borrow (id INTEGER PRIMARY KEY AUTOINCREMENT, book_id INTEGER NOT NULL, name TEXT NOT NULL, borrow_date TEXT NOT NULL, return_date TEXT NOT NULL)''') # 添加图书 def add_book(): title = title_var.get() author = author_var.get() publisher = publisher_var.get() pubdate = pubdate_var.get() isbn = isbn_var.get() price = price_var.get() status = status_var.get() c.execute('''INSERT INTO books (title, author, publisher, pubdate, isbn, price, status) VALUES (?, ?, ?, ?, ?, ?, ?)''', (title, author, publisher, pubdate, isbn, price, status)) conn.commit() # 查询图书 def search_book(): title = title_var.get() author = author_var.get() publisher = publisher_var.get() pubdate = pubdate_var.get() isbn = isbn_var.get() price = price_var.get() status = status_var.get() c.execute('''SELECT * FROM books WHERE title=? OR author=? OR publisher=? OR pubdate=? OR isbn=? OR price=? OR status=?''', (title, author, publisher, pubdate, isbn, price, status)) result = c.fetchall() for row in result: print(row) # 创建界面控件 title_label = tk.Label(root, text='书名') title_var = tk.StringVar() title_entry = tk.Entry(root, textvariable=title_var) author_label = tk.Label(root, text='作者') author_var = tk.StringVar() author_entry = tk.Entry(root, textvariable=author_var) publisher_label = tk.Label(root, text='出版社') publisher_var = tk.StringVar() publisher_entry = tk.Entry(root, textvariable=publisher_var) pubdate_label = tk.Label(root, text='出版日期') pubdate_var = tk.StringVar() pubdate_entry = tk.Entry(root, textvariable=pubdate_var) isbn_label = tk.Label(root, text='ISBN') isbn_var = tk.StringVar() isbn_entry = tk.Entry(root, textvariable=isbn_var) price_label = tk.Label(root, text='价格') price_var = tk.DoubleVar() price_entry = tk.Entry(root, textvariable=price_var) status_label = tk.Label(root, text='状态') status_var = tk.IntVar() status_entry = tk.Entry(root, textvariable=status_var) add_btn = tk.Button(root, text='添加', command=add_book) search_btn = tk.Button(root, text='查询', command=search_book) # 布局控件 title_label.grid(row=0, column=0) title_entry.grid(row=0, column=1) author_label.grid(row=1, column=0) author_entry.grid(row=1, column=1) publisher_label.grid(row=2, column=0) publisher_entry.grid(row=2, column=1) pubdate_label.grid(row=3, column=0) pubdate_entry.grid(row=3, column=1) isbn_label.grid(row=4, column=0) isbn_entry.grid(row=4, column=1) price_label.grid(row=5, column=0) price_entry.grid(row=5, column=1) status_label.grid(row=6, column=0) status_entry.grid(row=6, column=1) add_btn.grid(row=7, column=0) search_btn.grid(row=7, column=1) # 进入消息循环 root.mainloop() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值