赞
踩
此系统基于控制台运行,代码比较多,功能齐全,耐心看完!
先看运行效果图:
功能介绍:
学生端:实现注册、修改信息、查看选课、实现选课功能;
教师端功能如下:
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('专业:')
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。