此系统基于控制台运行,代码比较多,功能齐全,耐心看完!
先看运行效果图:
功能介绍:
教师端功能如下:
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('专业:')