Python校园信息管理系统

3 篇文章 1 订阅
1 篇文章 0 订阅

项目功能

本系统将人员分为三类,分别是学生,教师,管理员。
其中管理员可创建学生和老师的基本信息并为其开通使用系统权限,可维护学生修课名称信息,可维护老师授课名称及班级信息,可修改管理员密码;学生能查看个人的详细信息,修改个人密码;老师能查看个人详细信息;可维护授课班级学生的成绩信息;修改个人密码。
学校人员信息包含学生和老师两类,学生基本信息有学号、姓名、性别、专业、班级、年龄、入学时间,详细信息还包括修课名称及成绩;老师基本信息有工号、姓名、性别、专业、入职时间、职称,详细信息还包括授课名称及班级。

项目运用技术

GUI方面是使用了Pyside2模块,数据库部分是SQLite3模块。

主要代码

main.py

from PySide2.QtUiTools import QUiLoader
from PySide2.QtWidgets import QApplication, QMessageBox

import admin
import student
import teacher
from lib.share import SI
import Info

import sqlite3


# 登陆界面
class login_win:
    # 点击管理员按钮方法
    def adm(self):
        self.ui.user_text.setPlaceholderText("admin")
        self.ui.username.setText("用户名")

    # 点击教师按钮方法
    def teacher(self):
        self.ui.user_text.setPlaceholderText("请输入工号")
        self.ui.username.setText("工  号")

    # 点击学生按钮方法
    def student(self):
        self.ui.user_text.setPlaceholderText("请输入学号")
        self.ui.username.setText("学  号")

    # 创建登录按钮方法
    def login(self):
        username = self.ui.user_text.text().strip()
        passwd = self.ui.pwd_text.text().strip()
        # 管理员身份
        if self.ui.radioButton.isChecked():
            if username == Info.admin.ID and passwd == Info.admin.Password:
                QMessageBox.about(self.ui, "登陆成功", '管理员登录成功')
                SI.admin_win = admin.admin_win()
                SI.admin_win.ui.show()
                self.ui.user_text.setText("")
                self.ui.pwd_text.setText("")
                self.ui.hide()
            else:
                QMessageBox.information(self.ui, '错误', '用户名或密码错误')

        # 教师身份
        elif self.ui.radioButton_2.isChecked():
            if username in Info.teacher.ID and passwd == c.execute(f"select Password from teacher where ID = '{username}';").fetchone()[0]:
                QMessageBox.about(self.ui, "登陆成功", '教师登录成功')
                SI.teacher_win = teacher.teacher_win()

                # 将教师信息添加到页面
                SI.teacher_win.ui.lineEdit_2.setText(username)
                class_id = \
                c.execute(f"select CLASS_ID from teaching where ID='{username}';").fetchone()[
                    0]
                classes = c.execute(f"select CLASSES from teaching where CLASS_ID='{class_id}';").fetchone()[0]
                SI.teacher_win.ui.lineEdit.setText(
                    c.execute(f"select CLASS_NAME from class where CLASS_ID='{class_id}';").fetchone()[0])
                SI.teacher_win.ui.plainTextEdit.setPlainText(classes)
                SI.teacher_win.ui.show()
                self.ui.user_text.setText("")
                self.ui.pwd_text.setText("")
                self.ui.hide()
            else:
                QMessageBox.information(self.ui, '错误', '工号或密码错误')

        # 学生身份
        elif self.ui.radioButton_3.isChecked():
            stu_id = username
            if username in Info.student.ID and passwd == c.execute(f"select Password from student where ID = '{username}';").fetchone()[0]:
                QMessageBox.about(self.ui, "登陆成功", '学生登录成功')
                SI.student_win = student.student_win()
                # 将学生信息添加到页面内
                class_names = ""
                SI.student_win.ui.lineEdit_2.setText(username)
                class_nums = c.execute(f"select CLASS_ID from grade where STU_ID= '{stu_id}' ;").fetchall()
                for class_num in class_nums:
                    class_name = \
                        c.execute(f"select CLASS_NAME from class where CLASS_ID= '{class_num[0]}' ;").fetchone()[0]
                    class_score = c.execute(
                        f"select SCORE from grade where CLASS_ID= '{class_num[0]}'and STU_ID='{stu_id}' ;").fetchone()[
                        0]
                    end = class_name + ":" + class_score
                    class_names = class_names + class_name + ";"
                    SI.student_win.ui.plainTextEdit.appendPlainText(end)
                SI.student_win.ui.lineEdit.setText(class_names)

                SI.student_win.ui.show()

                self.ui.user_text.setText("")
                self.ui.pwd_text.setText("")
                self.ui.hide()
            else:
                QMessageBox.information(self.ui, '错误', '学号或密码错误')

    # 创建退出按钮方法
    def out(self):
        choice = QMessageBox.question(self.ui, "退出", "确认退出系统吗?")
        if choice == QMessageBox.Yes:
            conn.commit()
            conn.close()
            exit()
        elif choice == QMessageBox.No:
            pass

    def username(self):
        user = self.ui.user_text.text().strip()
        return user

    # 主函数
    def __init__(self):
        self.ui = QUiLoader().load('ui/main.ui')
        self.ui.login.clicked.connect(self.login)
        self.ui.exit.clicked.connect(self.out)
        self.ui.radioButton.clicked.connect(self.adm)
        self.ui.radioButton_2.clicked.connect(self.teacher)
        self.ui.radioButton_3.clicked.connect(self.student)
        self.ui.pwd_text.returnPressed.connect(self.login)


if __name__ == '__main__':
    # 链接数据库
    conn = sqlite3.connect("schoolManager.db")
    c = conn.cursor()
    app = QApplication([])
    SI.login_win = login_win()
    SI.login_win.ui.show()
    app.exec_()

管理员账号:admin 密码:111111

教师账号:T100 密码:111111

学生账号:34B3190425 密码:111111

需要修改或新建账号的话可以使用sql语句对数据库内容修改

数据库格式
schoolManager.db

# teacher(ID, PASSWORD, NAME, SEX, MAJOR_NUM, TIME, TITLE)
# student(ID,PASSWORD,CLASS,NAME,SEX,AGE,TIME,MAJOR)
# class(CLASS_ID,CLASS_NAME,CLASS_TIME,CLASS_SCORE)
# grade(CLASS_ID,CLASSES,CLASSES,STU_ID,SCORE)
# teaching(ID,CLASS_ID,CLASSES,PEOPLE_NUM)
# classroom(MAJOR_NUM,MAJOR,CLASSES)

写在最后

因为其他页面的代码比较多,我就以文件的形式放在最后。这个系统肯定还存在着许多BUG,目前还未进行完善,并且存在着过多的代码冗余,代码之路还有待进步,欢迎各位大佬指正。

文件链接

下载地址
链接:https://pan.baidu.com/s/1draL9rheVOuVQ_w6JrYcXQ
提取码:1234

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值