1. 登录功能设计
用户的登录界面主要是采用不同的方式布局来完成,主要用到的布局方式有:水平布局、垂直布局、栅格布局等。
主要的布局代码如下:
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 登录校验
如果用户名输入错误,会提示当前用户名不存在。
用户的账号信息主要存储在本地的模拟数据库当中,每次登录是会与本地数据库做登录校验,如果符合要求,即可满足用户完成登录。
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. 注册界面设计
注册界面主要包含注册类型、用户名、密码、确认密码注册界面展现形式如下:
主要的布局代码如下:
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 注册校验
界面中增加了用户名密码的复杂度设置,如果用户输入的用户名和密码不符合预期,那么会弹窗提示。
主要采用正则表达式输入的信息的合规性进行校验,校验部分代码如下:
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中。
主要代码如下:
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,书籍可以被被永久删除。
主要代码如下:
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()