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

小白不会debug 2024-06-28 12:35:02 阅读 76

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

先看运行效果图:

功能介绍:

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

教师端功能如下:

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('专业:')



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。