PyQt5学生成绩信息系统(一):登录注册窗口(包含窗口跳转、连接数据库等)

本文介绍使用PyQt5构建的学生成绩信息系统,涵盖登录注册窗口设计,包括窗口跳转、SQLite数据库连接。注册时有错误提示功能,成功注册后会创建独立的数据库。登录时验证账号密码,实现窗口间的无缝切换。

一、前言:

这是个学生成绩信息系统的窗口化,结合了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
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值