【Python】Python高校图书馆书籍管理系统(登录、注册、功能源码设计)【独一无二】

news/2024/7/19 10:58:36 标签: python, 开发语言, 爬虫, 系统

请添加图片描述
👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术


Python】Python高校图书馆书籍管理系统(登录、注册、功能源码设计)【独一无二】

本文是基于PyQT5开发的一款Python高校图书馆书籍管理系统,源码可以关注公众号,后台回复:高校图书馆管理系统 获取。


文章目录

  • Python】Python高校图书馆书籍管理系统(登录、注册、功能源码设计)【独一无二】
  • 1. 登录功能设计
    • 1.1 登录校验
  • 2. 注册界面设计
    • 2.1 注册校验
  • 3. 图书馆管理功能
    • 3.1 添加书籍
    • 3.2 删除书籍


1. 登录功能设计

用户的登录界面主要是采用不同的方式布局来完成,主要用到的布局方式有:水平布局、垂直布局、栅格布局等。

在这里插入图片描述

主要的布局代码如下:

python">    def initUi(self):
        gLayout = QGridLayout(self)
        gLayout.setSpacing(8)
        gLayout.addWidget(self.title_area(), 0, 0)
        gLayout.addWidget(self.account_area(), 1, 0)
        gLayout.addWidget(self.button_area(), 3, 0)
        gLayout.addWidget(self.tips_area(), 2, 0)
        self.setLayout(gLayout)

1.1 登录校验

如果用户名输入错误,会提示当前用户名不存在。

在这里插入图片描述
用户的账号信息主要存储在本地的模拟数据库当中,每次登录是会与本地数据库做登录校验,如果符合要求,即可满足用户完成登录。

python">    def login_event(self):
        # 输入用户名和密码
        username = self.user_name_textbox.text()
        password = self.pass_word_textbox.text()

        with open('user.txt', 'r') as f:
            users = f.readlines()
            for user in users:
                if user.split(',')[0] == username:
                    if user.strip().split(',')[1] == hashlib.md5(password.encode()).hexdigest():
                        self.hide()
                        self.sub_lib = library_win.Library()
                        self.lib = library_win.LibraryApp(self.sub_lib)
                        self.lib.show()
                        return
                    else:
                        QMessageBox.information(self, 'Error', "密码错误!", QMessageBox.Yes)
                        return
            else:
                QMessageBox.information(self, 'Error', "用户名不存在!", QMessageBox.Yes)

2. 注册界面设计

注册界面主要包含注册类型、用户名、密码、确认密码注册界面展现形式如下:

在这里插入图片描述

主要的布局代码如下:

python">    def register_msg(self):
        group_box = QGroupBox('', self)
        hlayout = QFormLayout(group_box)
        hlayout.addRow(self.register_type, self.register_combox)
        hlayout.addRow(self.register_name, self.register_name_edit)
        hlayout.addRow(self.register_pass_word, self.register_pass_word_edit)
        hlayout.addRow(self.register_pass_word_again, self.register_pass_word_again_edit)
        hlayout.addRow(self.register_email, self.register_email_edit)
        return group_box

2.1 注册校验

界面中增加了用户名密码的复杂度设置,如果用户输入的用户名和密码不符合预期,那么会弹窗提示。

在这里插入图片描述

主要采用正则表达式输入的信息的合规性进行校验,校验部分代码如下:

python"> def register_check(self):
        username = self.register_name_edit.text()
        password = self.register_pass_word_edit.text()
        password1 = self.register_pass_word_again_edit.text()

        # 使用正则表达式检查用户名和密码的规范性
        if not re.match(r'^[a-zA-Z]\w{4,19}$', username):
            QMessageBox.information(self, 'Error', "用户名不符合规范,由字母开头,由字母数字下划线组成,长度5-20", QMessageBox.Yes)
        elif not re.match(r'^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]{8,16}$', password):
            QMessageBox.information(self, 'Error', "密码不符合规范,必须包含大写字母小写字母和数字,长度8-16", QMessageBox.Yes)
        elif password1 != password:
            QMessageBox.information(self, 'Error', "密码输入不一致!", QMessageBox.Yes)

如果用户通过校验,那么通过注册。

在这里插入图片描述


3. 图书馆管理功能

图书管管理界面,主要是对图书进行管理,主要包括的功能有添加书籍和删除书籍。书籍会存在本地的数据库中,下次登录是仍然会保留。

3.1 添加书籍

用户可以根据输入书名和作者以及书籍的ID来实现添加书籍,最后添加的书籍会显示在QTableWidget中。

在这里插入图片描述

主要代码如下:

python">    def update_book_list(self):
        self.table_widget.setRowCount(0)
        for book in self.library.list_books():
            row_position = self.table_widget.rowCount()
            self.table_widget.insertRow(row_position)
            self.table_widget.setItem(row_position, 0, QTableWidgetItem(book[0]))
            self.table_widget.setItem(row_position, 1, QTableWidgetItem(book[1]))
            self.table_widget.setItem(row_position, 2, QTableWidgetItem(book[2]))

3.2 删除书籍

用户输入对应书籍的ID,书籍可以被被永久删除。

在这里插入图片描述
主要代码如下:

python">def remove_book(self):
        text, ok = QInputDialog.getText(self, '删除书籍', '请输入书籍ID:')
        if ok:
            removed = self.library.remove_book(text.strip())
            if removed:
                self.update_book_list()

👇源码可以关注公众号,后台回复:高校图书馆管理系统 获取👇。


http://www.niftyadmin.cn/n/338469.html

相关文章

windows 修改用户名

在 Windows 操作系统中,修改用户名是一个需要谨慎处理的操作,因为它不仅会改变用户文件夹名称和注册表项,也可能会导致某些应用程序或系统服务无法正常工作。建议在进行此操作之前,先备份所有的重要数据,并确保有管理员…

每日一题161——对角线遍历

给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。 示例 1: 输入:mat [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,4,7,5,3,6,8,9] 示例 2: 输入:mat …

苹果XR头显简史:现实困境与未来预期

近几个月来,有关苹果MR头显的消息层出不穷,机构分析师大多认为6月份的WWDC23将会亮相。作为全新品类,苹果AR/VR备受期待的同时也有一些市场顾虑,例如因AR/VR产品成熟度问题,现阶段推出MR头显也饱受争议,甚至…

快速入门matlab——结构体

TOPSIS法(优劣解距离法) 风、光、负荷场景生成;风电出力各场景及概率;光伏出力各场景及概率;负荷各场景及概率;场景的削减;样本概率初始化;样本削减 风电场风速两参数weibull(威布…

【Golang】判断切片是否为空(切片不能直接比较)

文章目录 结论解释 结论 要检查切片是否为空,需始终使用 len(s) 0 来判断,而不应该使用 s nil 来判断。 解释 切片之间是不能比较的,我们不能使用操作符来判断两个切片是否含有全部相等元素。 切片唯一合法的比较操作是和nil比较。 一个…

从零开始 Spring Boot 31:Spring 表达式语言

从零开始 Spring Boot 31:Spring 表达式语言 图源:简书 (jianshu.com) Spring表达式语言(Spring Expression Language,简称 “SpEL”)是一种强大的表达式语言,支持在运行时查询和操作对象图。该语言的语法…

ChatGPT Plugin已正式上线 - 如何优先使用?

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成…

了解“感应雷”危害,针对性防护

直击雷的危害,比较容易理解,其防范措施也相对简单明了——避雷针、引下线、接地装置(当然,这里面也有很多的细节和要求,也是需要专业人员来从事的,在此就不展开了),所以对直击雷的防…