基于python+mysql的学生选课系统(文末附源代码)

此系统基于控制台运行,代码比较多,功能齐全,耐心看完!

先看运行效果图:

功能介绍:

学生端:实现注册、修改信息、查看选课、实现选课功能;

教师端功能如下:

1.添加课程
2.删除课程
3.修改课程
4.学生课程评分
5.查看所有课程
6.查看选课情况
7.退课
8.查看班级人员情况
9.删除学生

 该系统分为学生端和管理员教师端,学生可以注册,然后将信息存储在mysql的student表中,并登录:

 

 

mysql数据库设计4张表:

表结构如下:

 

 

 

 操作流程演示:

使用上面的测试学生登录系统

否则登录失败:

 

 学生实现信息修改:

查看选课:

 

 输入选课:

学生端查询已选课程:

 

 教师端登录系统:

 教师端添加选课信息:

 修改的课课程必须得在数据库中有这门课:

 刷新数据库,即可看到这门课已成功更改:

选课结束后,为学生评分: 

学生端即可登录,查看分数:

 教师查看所有课程信息:

管理员查看选课及该课程平均分:

 

 管理员为学生实现退选的操作:

 查询不同专业人数:

删除学生功能:

 

 

再次查看、即没有学号为2023的同学:

 

 退出系统:

 各部分代码实现:

需要源代码:

1、看主页联系加

2、访问以下链接:

腾讯文档腾讯文档-在线文档https://docs.qq.com/doc/p/71239d69a76f56cf1521717ae6b22c27cf876f10链接数据库代码:

import pymysql


def runSql(sql) -> str:
    # 连接数据库
    conn = pymysql.connect(
        # 连接名称,默认127.0.0.1
        host="127.0.0.1"
        # 用户名
        , user='root'
        # 密码
        , passwd='你的数据库密码'
        # 端口,默认为3306
        , port=3306
        # 数据库名称
        , db='python'
        # 字符编码
        , charset='utf8'
    )
    cur = conn.cursor()  # 生成游标对象

    if sql[0] == 's' or sql[0] == 'S':
        cur.execute(sql)
        data = cur.fetchall()  # 通过fetchall方法获得数据
        return data
    else:
        try:
            cur.execute(sql)  # 执行插入的sql语句
            conn.commit()  # 提交到数据库执行
            print('执行成功!')
        except RuntimeError as e:
            print("执行失败!", e)
            conn.rollback()  # 如果发生错误则回滚
    cur.close()  # 关闭游标
    conn.close()  # 关闭数据库连接


if __name__ == '__main__':
    

main.py代码:

import os
import dao.studentDao as S_d
from Logs.Tags import *
from function.RootFunction import root_login
from function.StudentFunction import student_login
import function.StudentFunction as Fun_S

if __name__ == '__main__':
    while True:
        loginTogs()
        a = input('请输入想要进行的操作!\n')
        if int(a) == 1:  # 学生登录
            os.system('cls')
            student_login()
            os.system('cls')
        elif int(a) == 2:    # 管理员登录
            os.system('cls')
            root_login()
            os.system('cls')
        elif int(a) == 0:    # 退出
            print('成功退出系统!欢迎您下次使用!')
            #os.system('pause')
            break
        elif int(a) == 3:
            os.system('cls')
            Fun_S.student_register()  # 学生注册
            input('按任意键继续!')
            os.system('cls')
        else:
            print('输入有误!请重新输入!')
            input('按任意键继续!')
            os.system('cls')

功能函数代码:

def loginTogs():
    print('---------选课管理系统-----------')
    print('1.学生登录')
    print('2.管理员登录')
    print('3.学生注册')
    print('0.退出')
    print('------------------------------')


def studentTags():
    print('--------------可选操作(学生)----------------')
    print('1.修改信息')
    print('2.选课')
    print('3.已选课程')
    print('0.退出')
    print('-------------------------------------')


def rootTags():
    print('--------------可选操作----------------')
    print('1.添加课程')
    print('2.删除课程')
    print('3.修改课程')
    print('4.学生课程评分')
    print('5.查看所有课程')
    print('6.查看选课情况')
    print('7.退课')
    print('8.查看班级人员情况')
    print('9.删除学生')
    print('0.退出')
    print('-------------------------------------')

管理员功能代码实现:

from Logs.Tags import rootTags
from dao.studentDao import major_student, student_print
from pojo.curriculum import curriculum
import dao.curriculumDao as C_d
import dao.courseSelectionDao as CS_d
import os
import dao.studentDao as S_d


def root_login():
    print('请输入账号和密码:')
    number = input('账号:')
    password = input('密码:')
    if number == 'root':
        if password == '123123':
            print('密码正确!')
            while True:
                rootTags()
                a = int(input('请输入要进行的操作:'))
                if a == 0:      # 退出
                    break
                elif a == 9:    # 删除学生
                    student_print(S_d.selectAll())
                    sno = input('输入要删除学生学号:')
                    S_d.delete(sno)
                    input('按任意键回车继续!')
                    os.system('cls')
                elif a == 1:    # 添加课程
                    add_course()
                    input('按任意键回车继续!')
                    os.system('cls')
                elif a == 2:    # 删除课程
                    C_d.course_print(C_d.selectAll())
                    tno = input('要删除的课程号:')
                    C_d.delete(tno)
                    input('按任意键回车继续!')
                    os.system('cls')
                elif a == 3:    # 修改课程
                    tno = input('要修改的课程号:')
                    update_course(C_d.selectOne(tno))
                    os.system('cls')
                elif a == 4:    # 学生课程评分
                    CS_d.allCourseSelectionPrint()
                    sno = input('学 号:')
                    tno = input('课程号:')
                    grade = float(input('成绩:'))
                    CS_d.student_grade(sno, tno, grade)
                    input('按任意键回车继续!')
                    os.system('cls')
                elif a == 5:    # 查看所有课程信息
                    C_d.course_print(C_d.selectAll())
                    input('按任意键回车继续!')
                    os.system('cls')
                elif a == 6:    # 查看选课情况
                    tno = input('请输入课程号查看选课信息:')
                    data = CS_d.course_students(tno)
                    CS_d.course_students_print(data)
                    print('选修该课程的人数为:%s' % len(data))
                    input('按任意键回车继续!')
                    os.system('cls')
                elif a == 7:    # 退课
                    # 打印所有选课信息
                    CS_d.allCourseSelectionPrint()
                    sno = input('要退课学号:')
                    tno = input('要退课课程号:')
                    CS_d.unApply(sno, tno)
                    os.system('cls')
                elif a == 8:    # 查看班级人员情况
                    major = input('输入专业名称:')
                    student_print(major_student(major))
                    input('按任意键回车继续!')
                    os.system('cls')
                else:
                    print('错误输入无法执行!')
        else:
            print('密码错误!')
    else:
        print('账号不存在!')


def add_course():
    c = curriculum()
    c.tno = C_d.getMaxTno() + 1
    course_input(c)
    C_d.add(c)


def update_course(c):
    course_input(c)
    C_d.update(c)


def course_input(c):
    c.name = input('课程名:')
    c.credit = input('学分:')


if __name__ == '__main__':
    root_login()

选课实现的代码:

class courseSelection:
    def __init__(self):
        self.sno = None
        self.tno = None
        self.grade = None

    def toString(self):
        print("学号:", self.sno,
              "课程号:", self.tno)

学生功能代码:

import os
import dao.studentDao as S_d
import dao.curriculumDao as C_d
from Logs.Tags import studentTags
import dao.courseSelectionDao as CS_d
from dao.sql import runSql
from pojo.student import student


def student_login():
    print('请输入学生账号和密码:')
    sno = input('学号:\n')
    password = input('password:\n')
    student_get = S_d.selectOne(sno)
    if type(student_get) is student and student_get.sno == sno:
        if student_get.password == password:
            # 进入选课
            os.system('cls')
            while True:
                studentTags()
                a = int(input('请输入想要进行的操作!\n'))
                if a == 0:
                    break
                elif a == 1:    # 修改信息
                    S_d.student_information_print(S_d.selectOne(sno))
                    student_update_information(sno)
                    os.system('cls')
                elif a == 2:    # 选课
                    if S_d.select_course_limit(sno) is True:
                        print('所有课程:')
                        C_d.course_print(C_d.selectAll())    # 打印课程信息
                        tno = input('想要选的课程号:')
                        CS_d.apply(sno, tno)
                        os.system('cls')
                elif a == 3:    # 已选课程
                    S_d.selected_Courses(sno)
                    input('按任意键回车继续!')
                    os.system('cls')
        else:
            print('密码错误!')
            input('按任意键回车继续!')
    else:
        print('用户不存在!')
        input('按任意键回车继续!')


# 学生注册
def student_register():
    s = student()
    s.sno = input("学号:")
    student_input(s)
    S_d.add(s)


# 学生修改信息
def student_update_information(sno):
    s = S_d.selectOne(sno)
    student_input(s)
    S_d.update(s)


# 学生信息输入封装
def student_input(s):
    s.name = input("姓名:")
    s.sex = input("性别:")
    s.age = input("出生年份:")
    s.native_place = input("籍贯:")
    s.password = input("密码:")
    s.major = input('专业:')

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年12月26日
下一篇 2023年12月26日

相关推荐