当前位置:   article > 正文

基于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链接数据库代码:

  1. import pymysql
  2. def runSql(sql) -> str:
  3. # 连接数据库
  4. conn = pymysql.connect(
  5. # 连接名称,默认127.0.0.1
  6. host="127.0.0.1"
  7. # 用户名
  8. , user='root'
  9. # 密码
  10. , passwd='你的数据库密码'
  11. # 端口,默认为3306
  12. , port=3306
  13. # 数据库名称
  14. , db='python'
  15. # 字符编码
  16. , charset='utf8'
  17. )
  18. cur = conn.cursor() # 生成游标对象
  19. if sql[0] == 's' or sql[0] == 'S':
  20. cur.execute(sql)
  21. data = cur.fetchall() # 通过fetchall方法获得数据
  22. return data
  23. else:
  24. try:
  25. cur.execute(sql) # 执行插入的sql语句
  26. conn.commit() # 提交到数据库执行
  27. print('执行成功!')
  28. except RuntimeError as e:
  29. print("执行失败!", e)
  30. conn.rollback() # 如果发生错误则回滚
  31. cur.close() # 关闭游标
  32. conn.close() # 关闭数据库连接
  33. if __name__ == '__main__':

main.py代码:

  1. import os
  2. import dao.studentDao as S_d
  3. from Logs.Tags import *
  4. from function.RootFunction import root_login
  5. from function.StudentFunction import student_login
  6. import function.StudentFunction as Fun_S
  7. if __name__ == '__main__':
  8. while True:
  9. loginTogs()
  10. a = input('请输入想要进行的操作!\n')
  11. if int(a) == 1: # 学生登录
  12. os.system('cls')
  13. student_login()
  14. os.system('cls')
  15. elif int(a) == 2: # 管理员登录
  16. os.system('cls')
  17. root_login()
  18. os.system('cls')
  19. elif int(a) == 0: # 退出
  20. print('成功退出系统!欢迎您下次使用!')
  21. #os.system('pause')
  22. break
  23. elif int(a) == 3:
  24. os.system('cls')
  25. Fun_S.student_register() # 学生注册
  26. input('按任意键继续!')
  27. os.system('cls')
  28. else:
  29. print('输入有误!请重新输入!')
  30. input('按任意键继续!')
  31. os.system('cls')

功能函数代码:

  1. def loginTogs():
  2. print('---------选课管理系统-----------')
  3. print('1.学生登录')
  4. print('2.管理员登录')
  5. print('3.学生注册')
  6. print('0.退出')
  7. print('------------------------------')
  8. def studentTags():
  9. print('--------------可选操作(学生)----------------')
  10. print('1.修改信息')
  11. print('2.选课')
  12. print('3.已选课程')
  13. print('0.退出')
  14. print('-------------------------------------')
  15. def rootTags():
  16. print('--------------可选操作----------------')
  17. print('1.添加课程')
  18. print('2.删除课程')
  19. print('3.修改课程')
  20. print('4.学生课程评分')
  21. print('5.查看所有课程')
  22. print('6.查看选课情况')
  23. print('7.退课')
  24. print('8.查看班级人员情况')
  25. print('9.删除学生')
  26. print('0.退出')
  27. print('-------------------------------------')

管理员功能代码实现:

  1. from Logs.Tags import rootTags
  2. from dao.studentDao import major_student, student_print
  3. from pojo.curriculum import curriculum
  4. import dao.curriculumDao as C_d
  5. import dao.courseSelectionDao as CS_d
  6. import os
  7. import dao.studentDao as S_d
  8. def root_login():
  9. print('请输入账号和密码:')
  10. number = input('账号:')
  11. password = input('密码:')
  12. if number == 'root':
  13. if password == '123123':
  14. print('密码正确!')
  15. while True:
  16. rootTags()
  17. a = int(input('请输入要进行的操作:'))
  18. if a == 0: # 退出
  19. break
  20. elif a == 9: # 删除学生
  21. student_print(S_d.selectAll())
  22. sno = input('输入要删除学生学号:')
  23. S_d.delete(sno)
  24. input('按任意键回车继续!')
  25. os.system('cls')
  26. elif a == 1: # 添加课程
  27. add_course()
  28. input('按任意键回车继续!')
  29. os.system('cls')
  30. elif a == 2: # 删除课程
  31. C_d.course_print(C_d.selectAll())
  32. tno = input('要删除的课程号:')
  33. C_d.delete(tno)
  34. input('按任意键回车继续!')
  35. os.system('cls')
  36. elif a == 3: # 修改课程
  37. tno = input('要修改的课程号:')
  38. update_course(C_d.selectOne(tno))
  39. os.system('cls')
  40. elif a == 4: # 学生课程评分
  41. CS_d.allCourseSelectionPrint()
  42. sno = input('学 号:')
  43. tno = input('课程号:')
  44. grade = float(input('成绩:'))
  45. CS_d.student_grade(sno, tno, grade)
  46. input('按任意键回车继续!')
  47. os.system('cls')
  48. elif a == 5: # 查看所有课程信息
  49. C_d.course_print(C_d.selectAll())
  50. input('按任意键回车继续!')
  51. os.system('cls')
  52. elif a == 6: # 查看选课情况
  53. tno = input('请输入课程号查看选课信息:')
  54. data = CS_d.course_students(tno)
  55. CS_d.course_students_print(data)
  56. print('选修该课程的人数为:%s' % len(data))
  57. input('按任意键回车继续!')
  58. os.system('cls')
  59. elif a == 7: # 退课
  60. # 打印所有选课信息
  61. CS_d.allCourseSelectionPrint()
  62. sno = input('要退课学号:')
  63. tno = input('要退课课程号:')
  64. CS_d.unApply(sno, tno)
  65. os.system('cls')
  66. elif a == 8: # 查看班级人员情况
  67. major = input('输入专业名称:')
  68. student_print(major_student(major))
  69. input('按任意键回车继续!')
  70. os.system('cls')
  71. else:
  72. print('错误输入无法执行!')
  73. else:
  74. print('密码错误!')
  75. else:
  76. print('账号不存在!')
  77. def add_course():
  78. c = curriculum()
  79. c.tno = C_d.getMaxTno() + 1
  80. course_input(c)
  81. C_d.add(c)
  82. def update_course(c):
  83. course_input(c)
  84. C_d.update(c)
  85. def course_input(c):
  86. c.name = input('课程名:')
  87. c.credit = input('学分:')
  88. if __name__ == '__main__':
  89. root_login()

选课实现的代码:

  1. class courseSelection:
  2. def __init__(self):
  3. self.sno = None
  4. self.tno = None
  5. self.grade = None
  6. def toString(self):
  7. print("学号:", self.sno,
  8. "课程号:", self.tno)

学生功能代码:

  1. import os
  2. import dao.studentDao as S_d
  3. import dao.curriculumDao as C_d
  4. from Logs.Tags import studentTags
  5. import dao.courseSelectionDao as CS_d
  6. from dao.sql import runSql
  7. from pojo.student import student
  8. def student_login():
  9. print('请输入学生账号和密码:')
  10. sno = input('学号:\n')
  11. password = input('password:\n')
  12. student_get = S_d.selectOne(sno)
  13. if type(student_get) is student and student_get.sno == sno:
  14. if student_get.password == password:
  15. # 进入选课
  16. os.system('cls')
  17. while True:
  18. studentTags()
  19. a = int(input('请输入想要进行的操作!\n'))
  20. if a == 0:
  21. break
  22. elif a == 1: # 修改信息
  23. S_d.student_information_print(S_d.selectOne(sno))
  24. student_update_information(sno)
  25. os.system('cls')
  26. elif a == 2: # 选课
  27. if S_d.select_course_limit(sno) is True:
  28. print('所有课程:')
  29. C_d.course_print(C_d.selectAll()) # 打印课程信息
  30. tno = input('想要选的课程号:')
  31. CS_d.apply(sno, tno)
  32. os.system('cls')
  33. elif a == 3: # 已选课程
  34. S_d.selected_Courses(sno)
  35. input('按任意键回车继续!')
  36. os.system('cls')
  37. else:
  38. print('密码错误!')
  39. input('按任意键回车继续!')
  40. else:
  41. print('用户不存在!')
  42. input('按任意键回车继续!')
  43. # 学生注册
  44. def student_register():
  45. s = student()
  46. s.sno = input("学号:")
  47. student_input(s)
  48. S_d.add(s)
  49. # 学生修改信息
  50. def student_update_information(sno):
  51. s = S_d.selectOne(sno)
  52. student_input(s)
  53. S_d.update(s)
  54. # 学生信息输入封装
  55. def student_input(s):
  56. s.name = input("姓名:")
  57. s.sex = input("性别:")
  58. s.age = input("出生年份:")
  59. s.native_place = input("籍贯:")
  60. s.password = input("密码:")
  61. s.major = input('专业:')

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/615672
推荐阅读
相关标签
  

闽ICP备14008679号