PyQT5一起学做图书管理系统(10)普通用户界面
环境
系统:windows10系统
编辑器:Sublime3
编程语言:python3+pyqt5
前言
初始化数据库是必须的,参考第二节文章
借书逻辑分析
借书跟还书功能有点类似,都是采用的dialog来实现的,同时这个功能借鉴删除书籍的方法,只需输入BookID,就可以得到书籍全部信息。
借阅时,需要处理的逻辑:
- 用户输入的书号存在,就匹配信息给用户
- 不存在就点击借阅,给出警告
- 借阅书籍数已经达到上限5本 ,给出警告
- 不允许借阅同样的书
- 更新Book表信息的借阅次数,剩余可借阅书数
- 在User_Book表插入记录
- 借阅成功给出提示
程序代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2018-12-05 21:30:40
# @Author : Jimy_Fengqi (jmps515@163.com)
# @Link : https://blog.csdn.net/qiqiyingse/
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import qdarkstyle
import time
from PyQt5.QtSql import *
from db.userInfoManager import UserBookManager
from db.userInfoManager import BookDbManager
from db.userInfoManager import UserDbManager
import images
class borrowBookDialog(QDialog):
borrow_book_success_signal = pyqtSignal()
def __init__(self, userID, parent=None):
super(borrowBookDialog, self).__init__(parent)
self.userID = userID
self.setUpUI()
self.setWindowModality(Qt.WindowModal)
self.setWindowTitle("借阅书籍")
self.userbookdb=UserBookManager() #借书记录
self.bookdb=BookDbManager() #书籍管理
self.userdb=UserDbManager() #用户管理
def setUpUI(self):
# 书名,书号,作者,分类,添加数量.出版社,出版日期
# 书籍分类:哲学类、社会科学类、政治类、法律类、军事类、经济类、文化类、教育类、体育类、语言文字类、艺术类、历史类、地理类、天文学类、生物学类、医学卫生类、农业类
BookCategory = ["哲学", "社会科学", "政治", "法律", "军事", "经济", "文化", "教育", "体育", "语言文字", "艺术", "历史"
, "地理", "天文学", "生物学", "医学卫生", "农业"]
self.resize(300, 400)
self.layout = QFormLayout()
self.setLayout(self.layout)
# Label控件
self.borrowStudentLabel = QLabel("借 阅 人:")
self.borrowuserIDLabel = QLabel(self.userID)
self.titlelabel = QLabel(" 借阅书籍")
self.bookNameLabel = QLabel("书 名:")
self.BookIDLabel = QLabel("书 号:")
self.authNameLabel = QLabel("作 者:")
self.categoryLabel = QLabel("分 类:")
self.publisherLabel = QLabel("出 版 社:")
self.publishDateLabel = QLabel("出版日期:")
# button控件
self.borrowBookButton = QPushButton("确认借阅")
# lineEdit控件
self.bookNameEdit = QLineEdit()
self.BookIDEdit = QLineEdit()
self.authNameEdit = QLineEdit()
self.categoryComboBox = QComboBox()
self.categoryComboBox.addItems(BookCategory)
self.publisherEdit = QLineEdit()
self.publishTime = QLineEdit()
self.bookNameEdit.setMaxLength(10)
self.BookIDEdit.setMaxLength(6)
self.authNameEdit.setMaxLength(10)
self.publisherEdit.setMaxLength(10)
# 添加进formlayout