一、前言:
这是个学生成绩信息系统的窗口化,结合了sqlite3。
刚写好登录注册窗口,会陆续更新。
窗口设计用的是Qtdesinger,可参考:记录分享学习Qt设计师的文章及简介
1、实现效果


2、亮点:
1、能在出错的时候在注册页面显示错误信息,Label处的字体会变化,且标红;
2、账号输入框后有一个图标(action)能进行判断;
3、在注册成功的时候能创建一个独属于他的数据库。

3、思路简介:
(1)传统的登录界面和注册界面;
(2)在注册窗口能进行各种限定,比如账号和密码的限定长度,以及验证两次密码的一致(后来美化了消息提示,用了四个用于提示的标签);
(3)注册成功将往账号数据库里面添加这个账号的信息,并创建一个独属于这个账号的数据库;
(4)在账号窗口能进行验证账号的正确性;
(5)连接两个窗口的相互跳转:
①登录窗口能打开注册窗口,此时登录窗口 不 自动关闭;
②注册成功后 自动关闭 注册窗口,回到登录窗口,即使之前关掉了登录窗口,重新打开即可。
二、数据库
1、思路:
(1)一个数据库用来存放系统的账号密码和用户名信息;
(2)一个账号注册成功就多一个独属于它的数据库,存放学生成绩信息。
2、代码:
import sqlite3
(1)创建系统账号的数据库
def create_account_db( db_name):
"""创建系统账号的数据库"""
cn = sqlite3.connect( db_name)
c = cn.cursor()
sql = '''CREATE TABLE Accounts(
Account CHAR(15) PRIMARY KEY,
Aname CHAR(4) NOT NULL,
Password CHAR(15) NOT NULL
);'''
c.execute(sql)
cn.commit()
cn.close()
(2)创建学生信息的数据库
def create_stu_db( db_name):
"""创建学生信息的数据库"""
cn = sqlite3.connect( db_name)
c = cn.cursor()
sql = '''CREATE TABLE Students(
Sno CHAR(10) PRIMARY KEY,
Sname NVARCHAR(4) NOT NULL,
Sgender NCHAR(1)
CHECK( Sgender='男' or Sgender='女')
default '男',
Sbirth TEXT,
Sclass NVARCHAR(8),
Snative NVARCHAR(20)
);'''#学生表
c.execute(sql)
sql = '''CREATE TABLE Courses(
Cno CHAR(8) PRIMARY KEY,
Cname NVARCHAR(20) NOT NULL,
Chours INTEGER,
Ccredit INTEGER
);'''#课程表
c.execute(sql)
sql = '''CREATE TABLE Reports(
Sno CHAR(10),
Cno CHAR(8),
Racademicyear INT,
Rterm INT,
Grade INT,
PRIMARY KEY (Sno, Cno)
);'''#成绩表
c.execute(sql)
cn.commit()
cn.close()
三、视图代码
注册和登录窗口的视图代码:
窗口设计用的是Qtdesinger,可参考:记录分享学习Qt设计师的文章及简介
用ui文件转换成py文件,再修了一下。为了节省文章长度就不列出,如果需要的话,可以直接下载,上传了资源。
下载注册和登录窗口的文件:
PyQt5学生成绩信息系统(一):登录和注册窗口
(2022/8/3更新:这文章好多人看啊,我把这个注册登录用到的文件都塞到这个资源里了,包括用pyqt做的ui文件,ui文件转的py文件,还有这篇文章的代码的py文件,改改就能用吧,大概…要是这文章看的人再多一点,等有空了说不定就更新这个系列了,好久之前整个系统做是做好了,虽然有点烂,主要忘记了这些代码是做啥子的了…)
四、逻辑代码
1、需要导入的包:
import sys
import os
import sqlite3 #用于数据库
from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox, QAction, QLineEdit
from PyQt5.QtCore import QRegExp
from PyQt5.QtGui import QRegExpValidator,QIcon
from usemainwindow import * #用于登录窗口的登录按钮后调用系统主窗口,后面文章会用到这个文件
from signup import * #导入注册的视图代码
from signin import * #导入登录的视图代码
2、可共用的代码:
(1)common( cn, sql):
将数据从sql格式转换成 列表 镶嵌 字典 的格式并返回。
超级好用的一个函数,经常被我用于提取数据库里面的信息。
def common( cn, sql):
"""将数据从sql格式转换成列表镶嵌字典的格式并返回"""
cursor = cn.execute(sql)
information = []
for row in cursor:
information.append( row)
return information
(2)judge_account( account):
判断账号是否已经存在:
①在注册时如果已经存在就不能重复;
②在登录时如果不存在要进行提示。
(3)judge_ac_and_pw( account, password):
在登录时要判断账号和密码是否匹配。
db_name_account = "stugrade.db" #系统账号信息存放的数据库
def judge_account( account):
"""用于判断账号是否存在"""
cn = sqlite3.c

本文介绍使用PyQt5构建的学生成绩信息系统,涵盖登录注册窗口设计,包括窗口跳转、SQLite数据库连接。注册时有错误提示功能,成功注册后会创建独立的数据库。登录时验证账号密码,实现窗口间的无缝切换。
:登录注册窗口(包含窗口跳转、连接数据库等)&spm=1001.2101.3001.5002&articleId=106891920&d=1&t=3&u=05e585332aaa4307b62397cff595cb24)
608

被折叠的 条评论
为什么被折叠?



