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

先看运行效果图:

功能介绍:

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

教师端功能如下:

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

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

mysql数据库设计4张表:

表结构如下:

操作流程演示:

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

否则登录失败:

学生实现信息修改:

查看选课:

输入选课:

学生端查询已选课程:

教师端登录系统:

教师端添加选课信息:

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

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

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

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

教师查看所有课程信息:

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

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

查询不同专业人数:

删除学生功能:

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

退出系统:

各部分代码实现:

需要源代码:

1、看主页联系加

2、访问以下链接:

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

import pymysqldef runSql(sql) -> str:# 连接数据库conn = pymysql.connect(# 连接名称,默认127.0.0.1host="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 dataelse: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 osimport dao.studentDao as S_dfrom Logs.Tags import *from function.RootFunction import root_loginfrom function.StudentFunction import student_loginimport function.StudentFunction as Fun_Sif __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')breakelif 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 rootTagsfrom dao.studentDao import major_student, student_printfrom pojo.curriculum import curriculumimport dao.curriculumDao as C_dimport dao.courseSelectionDao as CS_dimport osimport dao.studentDao as S_ddef root_login():print('请输入账号和密码:')number = input('账号:')password = input('密码:')if number == 'root':if password == '123123':print('密码正确!')while True:rootTags()a = int(input('请输入要进行的操作:'))if a == 0:# 退出breakelif 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() + 1course_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 = Noneself.tno = Noneself.grade = Nonedef toString(self):print("学号:", self.sno,"课程号:", self.tno)

学生功能代码:

import osimport dao.studentDao as S_dimport dao.curriculumDao as C_dfrom Logs.Tags import studentTagsimport dao.courseSelectionDao as CS_dfrom dao.sql import runSqlfrom pojo.student import studentdef 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:breakelif 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('专业:')