利用Python实现学生信息管理系统的完整实例

项目要求:

读完题目,首先我们要确定程序思路

我们要全部通过类去实现

也就是 我们要实现管理员、学生、讲师、课程、教师五个类

管理员类

class Administration(object):
 def __init__(self):
  self.data = self.__load()
  self.login_data = {}

 def __load(self) -> list:
  try:
   Adm = open('Administration.csv', 'r')
   readers = csv.DictReader(Adm)
   Adm_dict = [dict(i) for i in readers]
   Adm.close()
   return Adm_dict
  except Exception:
   print('文件读取失败')

 def see_course(self):
  print('当前所有的课程信息为:')
  for i in cou.data:
   print(i)
  print()

 def see_student(self):
  print('当前所有的学生信息为:')
  for i in stu.data:
   print(i)
  print()

 def see_student_course(self):
  print('当前所有学生的选课信息为:')
  for i in stu.data:
   print(i['姓名'], '的选课信息为:', i['课程'])
  print()

 def set_course(self):
  name = input('请输入你想添加的课程名')
  c = [i['名称'] for i in cou.data]
  if name in c:
   print('你准备添加的课程 已经存在')
  else:
   cou.data.append({'名称': name, '人数': 0})
   print('添加成功!')
   print()

 def set_student(self):
  name = input('请输入你想添加的学生的姓名')
  ID = input('请输入此学生的ID')
  if ID in [i['ID'] for i in stu.data]:
   print('这个ID已经存在,添加失败')
   return
  print('学生账号默认密码123456')
  password = 123456
  stu.data.append({'姓名': name, 'ID': ID, '密码': password, '课程': ''})
  print('添加成功!')
  print()

 def set_teacher(self):
  name = input('请输入你想添加的老师的姓名')
  ID = input('请输入此老师的ID')
  if ID in [i['ID'] for i in tea.data]:
   print('这个ID已经存在,添加失败')
   return
  print('老师账号默认密码123456')
  password = 123456
  tea.data.append({'姓名': name, 'ID': ID, '密码': password, '课程': ''})
  print('添加成功!')
  print()

 def app_teacher_to_class(self):
  t_name = input('请输入你想操作的老师名')
  if t_name not in [i['姓名'] for i in tea.data]:
   print('你想操作的老师不存在,请重新操作')
   return
  c_name = input('请输入你想让该老师任课的班级')
  if c_name not in [i['班名'] for i in cla.data]:
   print('你想让老师任教的班级不存在,请重新操作')
   return
  for i in tea.data:
   if i['姓名'] == t_name:
    i['班级'] = c_name
  for i in cla.data:
   if i['班名'] == c_name:
    i['任课老师'] = t_name
  print('操作成功')

 def set_class(self):
  name = input('请输入你想创建的班级的名称:')
  if name in [i['班名'] for i in cla.data]:
   print('你想创建的班级已经存在,请重新操作')
   return
  if int(input('是否添加任课老师,是输入1,否输入0')):
   t_name = input('请输入你想添加的老师名')
   if t_name not in [i['姓名'] for i in tea.data]:
    print('你想操作的老师不存在,请重新操作')
    return
  else:
   t_name = ''
  s_name_list = []
  while int(input('是否添加学生,是输入1,否输入0')):
   s_name = input('输入你想添加的学生名')
   if s_name not in [i['姓名'] for i in stu.data]:
    print('你想操作的学生不存在,请重新操作')
    return
   else:
    s_name_list.append(s_name)
  s_name = ''
  if s_name_list == []:
   cla.data.append({'班名': name, '任课老师': t_name, '学生': s_name})
   print('操作成功')
  else:
   cla.data.append({'班名': name, '任课老师': t_name,
        '学生': s_name.join(s_name_list)})
   print('操作成功')

 def app_student_to_class(self):
  s_name = input('请输入你想操作的学生名')
  if s_name not in [i['姓名'] for i in stu.data]:
   print('你想操作的学生不存在,请重新操作')
   return
  c_name = input('请输入你想让该学生进入的班级')
  if c_name not in [i['班名'] for i in cla.data]:
   print('你想让学生进入的班级不存在,请重新操作')
   return
  for i in stu.data:
   if i['姓名'] == s_name:
    i['班级'] = c_name
  for i in cla.data:
   if i['班名'] == c_name:
    i['任课老师'] = s_name
  print('操作成功')

 def save(self):
  try:
   j = open('Administration.csv', 'w')
   writer = csv.writer(j)
   writer.writerow(list(self.data[0].keys()))
   data = [list(i.values()) for i in self.data]
   writer.writerows(data)
   j.close()
  except Exception:
   print('文件读取失败')

学生类

class Student(object):
 def __init__(self):
  self.data = self.__load()
  self.login_data = {}

 def __load(self):
  try:
   Stu = open('Student.csv', 'r')
   readers = csv.DictReader(Stu)
   Stu_dict = [dict(i) for i in readers]
   Stu.close()
   return Stu_dict
  except Exception:
   print('文件读取失败')

 def see_course(self):
  print('当前所有的课程信息为:')
  for i in cou.data:
   print(i)
  print()

 def choice_course(self):
  # print(self.data)
  c = [i['名称'] for i in cou.data]
  c_name = input('请输入你想选择的课程名:')
  if c_name not in c:
   print('你选择的课程不在课程列表中')
   return
  else:
   self.login_data['课程']: str = self.login_data['课程'] + c_name + ' '
   for i in cou.data:
    if i['名称'] == c_name:
     i['人数'] = int(i['人数']) + 1
  print('操作成功')

 def see_own_course(self):
  if self.login_data['课程'] == '':
   print('你未选择任何课程')
  else:
   print(self.login_data['课程'])

 def save(self):
  try:
   j = open('Student.csv', 'w')
   writer = csv.writer(j)
   writer.writerow(list(self.data[0].keys()))
   data = [list(i.values()) for i in self.data]
   writer.writerows(data)
  except Exception:
   print('文件读取失败')

课程类

class Course(object):
 def __init__(self):
  self.data = self.__load()

 def __load(self):
  try:
   Cou = open('Course.csv', 'r')
   readers = csv.DictReader(Cou)
   Cou_dict = [dict(i) for i in readers]
   Cou.close()
   return Cou_dict
  except Exception:
   print('文件读取失败')

 def save(self):
  try:
   j = open('Course.csv', 'w')
   writer = csv.writer(j)
   writer.writerow(list(self.data[0].keys()))
   data = [list(i.values()) for i in self.data]
   writer.writerows(data)
  except Exception:
   print('文件读取失败')

教室类

class Classroom(object):
 def __init__(self):
  self.data = self.__load()

 def __load(self):
  try:
   Cla = open('Classroom.csv', 'r')
   readers = csv.DictReader(Cla)
   Cla_dict = [dict(i) for i in readers]
   Cla.close()
   return Cla_dict
  except Exception:
   print('文件读取失败')

 def save(self):
  try:
   j = open('Classroom.csv', 'w')
   writer = csv.writer(j)
   writer.writerow(list(self.data[0].keys()))
   data = [list(i.values()) for i in self.data]
   writer.writerows(data)
  except Exception:
   print('文件读取失败')

教师类

class Teacher(object):
 def __init__(self):
  self.data = self.__load()
  self.login_data = {}

 def __load(self):
  try:
   Tea = open('Teacher.csv', 'r')
   readers = csv.DictReader(Tea)
   Tea_dict = [dict(i) for i in readers]
   Tea.close()
   return Tea_dict
  except Exception:
   print('文件读取失败')

 def see_course(self):
  print('当前所有的课程信息为:')
  for i in cou.data:
   print(i)
  print()

 def see_class(self):
  print('所教班级为:', self.login_data['班级'])
  print()

 def see_class_student(self):
  print('所教班级中的学生为:')
  for i in cla.data:
   if i['班名'] == self.login_data['班级']:
    print(i['学生'])
  print()

 def save(self):
  try:
   j = open('Teacher.csv', 'w')
   writer = csv.writer(j)
   writer.writerow(list(self.data[0].keys()))
   data = [list(i.values()) for i in self.data]
   writer.writerows(data)
  except Exception:
   print('文件读取失败')

完整代码如下:

import csv
import time

class Administration(object):
 def __init__(self):
  self.data = self.__load()
  self.login_data = {}

 def __load(self) -> list:
  try:
   Adm = open('Administration.csv', 'r')
   readers = csv.DictReader(Adm)
   Adm_dict = [dict(i) for i in readers]
   Adm.close()
   return Adm_dict
  except Exception:
   print('文件读取失败')

 def see_course(self):
  print('当前所有的课程信息为:')
  for i in cou.data:
   print(i)
  print()

 def see_student(self):
  print('当前所有的学生信息为:')
  for i in stu.data:
   print(i)
  print()

 def see_student_course(self):
  print('当前所有学生的选课信息为:')
  for i in stu.data:
   print(i['姓名'], '的选课信息为:', i['课程'])
  print()

 def set_course(self):
  name = input('请输入你想添加的课程名')
  c = [i['名称'] for i in cou.data]
  if name in c:
   print('你准备添加的课程 已经存在')
  else:
   cou.data.append({'名称': name, '人数': 0})
   print('添加成功!')
   print()

 def set_student(self):
  name = input('请输入你想添加的学生的姓名')
  ID = input('请输入此学生的ID')
  if ID in [i['ID'] for i in stu.data]:
   print('这个ID已经存在,添加失败')
   return
  print('学生账号默认密码123456')
  password = 123456
  stu.data.append({'姓名': name, 'ID': ID, '密码': password, '课程': ''})
  print('添加成功!')
  print()

 def set_teacher(self):
  name = input('请输入你想添加的老师的姓名')
  ID = input('请输入此老师的ID')
  if ID in [i['ID'] for i in tea.data]:
   print('这个ID已经存在,添加失败')
   return
  print('老师账号默认密码123456')
  password = 123456
  tea.data.append({'姓名': name, 'ID': ID, '密码': password, '课程': ''})
  print('添加成功!')
  print()

 def app_teacher_to_class(self):
  t_name = input('请输入你想操作的老师名')
  if t_name not in [i['姓名'] for i in tea.data]:
   print('你想操作的老师不存在,请重新操作')
   return
  c_name = input('请输入你想让该老师任课的班级')
  if c_name not in [i['班名'] for i in cla.data]:
   print('你想让老师任教的班级不存在,请重新操作')
   return
  for i in tea.data:
   if i['姓名'] == t_name:
    i['班级'] = c_name
  for i in cla.data:
   if i['班名'] == c_name:
    i['任课老师'] = t_name
  print('操作成功')

 def set_class(self):
  name = input('请输入你想创建的班级的名称:')
  if name in [i['班名'] for i in cla.data]:
   print('你想创建的班级已经存在,请重新操作')
   return
  if int(input('是否添加任课老师,是输入1,否输入0')):
   t_name = input('请输入你想添加的老师名')
   if t_name not in [i['姓名'] for i in tea.data]:
    print('你想操作的老师不存在,请重新操作')
    return
  else:
   t_name = ''
  s_name_list = []
  while int(input('是否添加学生,是输入1,否输入0')):
   s_name = input('输入你想添加的学生名')
   if s_name not in [i['姓名'] for i in stu.data]:
    print('你想操作的学生不存在,请重新操作')
    return
   else:
    s_name_list.append(s_name)
  s_name = ''
  if s_name_list == []:
   cla.data.append({'班名': name, '任课老师': t_name, '学生': s_name})
   print('操作成功')
  else:
   cla.data.append({'班名': name, '任课老师': t_name,
        '学生': s_name.join(s_name_list)})
   print('操作成功')

 def app_student_to_class(self):
  s_name = input('请输入你想操作的学生名')
  if s_name not in [i['姓名'] for i in stu.data]:
   print('你想操作的学生不存在,请重新操作')
   return
  c_name = input('请输入你想让该学生进入的班级')
  if c_name not in [i['班名'] for i in cla.data]:
   print('你想让学生进入的班级不存在,请重新操作')
   return
  for i in stu.data:
   if i['姓名'] == s_name:
    i['班级'] = c_name
  for i in cla.data:
   if i['班名'] == c_name:
    i['任课老师'] = s_name
  print('操作成功')

 def save(self):
  try:
   j = open('Administration.csv', 'w')
   writer = csv.writer(j)
   writer.writerow(list(self.data[0].keys()))
   data = [list(i.values()) for i in self.data]
   writer.writerows(data)
   j.close()
  except Exception:
   print('文件读取失败')

class Student(object):
 def __init__(self):
  self.data = self.__load()
  self.login_data = {}

 def __load(self):
  try:
   Stu = open('Student.csv', 'r')
   readers = csv.DictReader(Stu)
   Stu_dict = [dict(i) for i in readers]
   Stu.close()
   return Stu_dict
  except Exception:
   print('文件读取失败')

 def see_course(self):
  print('当前所有的课程信息为:')
  for i in cou.data:
   print(i)
  print()

 def choice_course(self):
  # print(self.data)
  c = [i['名称'] for i in cou.data]
  c_name = input('请输入你想选择的课程名:')
  if c_name not in c:
   print('你选择的课程不在课程列表中')
   return
  else:
   self.login_data['课程']: str = self.login_data['课程'] + c_name + ' '
   for i in cou.data:
    if i['名称'] == c_name:
     i['人数'] = int(i['人数']) + 1
  print('操作成功')

 def see_own_course(self):
  if self.login_data['课程'] == '':
   print('你未选择任何课程')
  else:
   print(self.login_data['课程'])

 def save(self):
  try:
   j = open('Student.csv', 'w')
   writer = csv.writer(j)
   writer.writerow(list(self.data[0].keys()))
   data = [list(i.values()) for i in self.data]
   writer.writerows(data)
  except Exception:
   print('文件读取失败')

class Course(object):
 def __init__(self):
  self.data = self.__load()

 def __load(self):
  try:
   Cou = open('Course.csv', 'r')
   readers = csv.DictReader(Cou)
   Cou_dict = [dict(i) for i in readers]
   Cou.close()
   return Cou_dict
  except Exception:
   print('文件读取失败')

 def save(self):
  try:
   j = open('Course.csv', 'w')
   writer = csv.writer(j)
   writer.writerow(list(self.data[0].keys()))
   data = [list(i.values()) for i in self.data]
   writer.writerows(data)
  except Exception:
   print('文件读取失败')

class Classroom(object):
 def __init__(self):
  self.data = self.__load()

 def __load(self):
  try:
   Cla = open('Classroom.csv', 'r')
   readers = csv.DictReader(Cla)
   Cla_dict = [dict(i) for i in readers]
   Cla.close()
   return Cla_dict
  except Exception:
   print('文件读取失败')

 def save(self):
  try:
   j = open('Classroom.csv', 'w')
   writer = csv.writer(j)
   writer.writerow(list(self.data[0].keys()))
   data = [list(i.values()) for i in self.data]
   writer.writerows(data)
  except Exception:
   print('文件读取失败')

class Teacher(object):
 def __init__(self):
  self.data = self.__load()
  self.login_data = {}

 def __load(self):
  try:
   Tea = open('Teacher.csv', 'r')
   readers = csv.DictReader(Tea)
   Tea_dict = [dict(i) for i in readers]
   Tea.close()
   return Tea_dict
  except Exception:
   print('文件读取失败')

 def see_course(self):
  print('当前所有的课程信息为:')
  for i in cou.data:
   print(i)
  print()

 def see_class(self):
  print('所教班级为:', self.login_data['班级'])
  print()

 def see_class_student(self):
  print('所教班级中的学生为:')
  for i in cla.data:
   if i['班名'] == self.login_data['班级']:
    print(i['学生'])
  print()

 def save(self):
  try:
   j = open('Teacher.csv', 'w')
   writer = csv.writer(j)
   writer.writerow(list(self.data[0].keys()))
   data = [list(i.values()) for i in self.data]
   writer.writerows(data)
  except Exception:
   print('文件读取失败')

def login(ID, password) -> int:
 # 判断是否为管理员
 for i in adm.data:
  if ID == i['ID'] and password == i['密码']:
   adm.login_data = i
   return 1
 # 判断是否为学生
 for i in stu.data:
  if ID == i['ID'] and password == i['密码']:
   stu.login_data = i
   return 2
 # 判断是否为老师
 for i in tea.data:
  if ID == i['ID'] and password == i['密码']:
   tea.login_data = i
   return 3
 return 0

if __name__ == '__main__':
 print('欢迎来到久的学生选课系统')
 time.sleep(0.5)
 print('正在加载中~')
 adm = Administration()
 stu = Student()
 cou = Course()
 tea = Teacher()
 cla = Classroom()
 time.sleep(0.3)
 print('加载完毕')
 while True:
  ID = input('请输入你的账号:')
  password = input('请输入你的密码:')
  flag = login(ID, password)
  if not flag:
   print('输入的账号或密码错误')
   flag_1 = int(input('是否重新登录 重新登录输入1 取消登录输入0'))
   if flag_1:
    continue
   else:
    break
  elif flag == 1:
   print('欢迎管理员')
   break
  elif flag == 2:
   print('欢迎学生')
   break
  elif flag == 3:
   print('欢迎老师')
   break
 if flag == 1:
  while True:
   check = int(
    input(
     '1.创建课程\n2.创建学生账号\n3.查看所有课程\n4.查看所有学生\n5.查看所有学生的选课信息\n6.创建讲师'
     '\n7.为讲师指定班级\n8.创建班级\n9.为学生指定班级\n10.退出程序'))
   if check == 1:
    adm.set_course()
   elif check == 2:
    adm.set_student()
   elif check == 3:
    adm.see_course()
   elif check == 4:
    adm.see_student()
   elif check == 5:
    adm.see_student_course()
   elif check == 6:
    adm.set_teacher()
   elif check == 7:
    adm.app_teacher_to_class()
   elif check == 8:
    adm.set_class()
   elif check == 9:
    adm.app_student_to_class()
   elif check == 10:
    break
 elif flag == 2:
  while True:
   check = int(input('1.查看所有课程\n2.查看所选课程\n3.选择课程\n4.退出程序'))
   if check == 1:
    stu.see_course()
   elif check == 2:
    stu.see_own_course()
   elif check == 3:
    stu.choice_course()
   elif check == 4:
    break
 elif flag == 3:
  while True:
   check = int(input('1.查看所有课程\n2.查看所教班级\n3.查看班级中的学生\n4.退出程序'))
   if check == 1:
    tea.see_course()
   elif check == 2:
    tea.see_class()
   elif check == 3:
    tea.see_class_student()
   elif check == 4:
    break
 print('数据存储中~')
 adm.save()
 tea.save()
 stu.save()
 cla.save()
 cou.save()
 time.sleep(0.5)
 print('感谢您的使用!')

整个系统的数据全部单独存在,并存储在csv文件中

效果图:

总结

到此这篇关于利用Python实现学生信息管理系统的文章就介绍到这了,更多相关Python实现学生信息管理系统内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python实现简易学生信息管理系统

    本文实例为大家分享了python实现学生信息管理系统的具体代码,供大家参考,具体内容如下 简易学生信息管理系统主要功能有 1 录入学生信息 2 查找学生信息 3 删除学生信息 4 修改学生信息 5 排序 6 统计学生总人数 7 显示所有学生信息 0 退出系统 系统运行效果 主菜单的代码方法: # Author: dry # 开发时间:2019/9/11 # 开发工具:PyCharm import re # 导入正则表达式模块 import os # 导入操作系统模块 filename = "st

  • python实现简单学生信息管理系统

    python简单的学生信息管理系统-文件版,供大家参考,具体内容如下 功能如下 主函数部分 增加学生信息 修改学生信息 删除学生信息 查询学生 显示所有学生的信息 将数据录入文件 读取文件数据 学习文件模块后,将之前做的学生信息管理系统添加文件模块. 功能如下 1.新增学生信息: 2.修改学生信息: 3.删除学生信息: 4.查询学生信息: 5.显示学生信息; 6.将数据录入文件: 7.读取文件数据: 8.退出系统. 主函数部分 这里定义一个列表L,用来存储学生信息. 增加学生信息 将学生信息保存

  • 学生信息管理系统Python面向对象版

    本文实例为大家分享了python学生信息管理系统的具体代码,供大家参考,具体内容如下 """ 程序名称:学生信息管理系统 版本信息:0.1 开发者:飞宇 开始时间:2018.3.23 19:45 版本更新时间:2018.4.2 23:08 格式:IPO OOP面向对象 """ # 学生类 class Student: def __init__(self, stuId, name, age, sex, dept, nation): self.stu

  • python学生信息管理系统实现代码

    1.本人第一次学python做出来的,当时满满的成就感,当作纪念!!!!! 非常简单,复制即可使用 代码块 import json#把字符串类型的数据转换成Python基本数据类型或者将Python基本数据类型转换成字符串类型. def login_user(): while True: register=input('学生姓名:') try: with open(register+'.json')as file_object: user_message=json.load(file_objec

  • Python学生信息管理系统修改版

    在学习之前先要了解sqlite游标的使用方法python使用sqlite3时游标的使用方法 继上篇博客Python实现学生信息管理系统后,我就觉得写的太复杂了,然后又是一通优化.优化.优化: 本次优化主要修改了: 1.使用游标的方法连接.增.删.改.查数据库: 2.一般二级菜单是不能直接退出程序的,所以去掉了二级菜单退出程序的功能: 3.增加了连表查询: 4.但是还有一点很不满意,就是每次退出后都退出到主菜单而不是当前菜单,这点还没改好,希望小伙伴能一起学习交流! #-*- coding:utf

  • python学生信息管理系统

    本文实例为大家分享了python学生信息管理系统的具体代码,供大家参考,具体内容如下 #编译环境为python3 #学生信息管理系统包括基本的信息功能,能够实现学生信息的输入,查询,增添和删除 #基本框架:开始操作菜单,接收输入选项,调用相应的函数实现对应的功能,循环回到开始菜单, #操作菜单: student = [] def studentMeau(): print('-'*30) print('-------学生信息管理系统-------') print(' 1.添加学生信息') prin

  • python学生信息管理系统(完整版)

    本文是基于上一篇(python项目:学生信息管理系统(初版) )进行了完善,并添加了新的功能. 主要包括有: 完善部分:输入错误:无数据查询等异常错误 新的功能:文件的操作:文件的读写,其中重点是对文本字符串的详细解析(关于整个解析拆解和重组详见代码,以及添加了注释) 学生信息管理系统(完整版) 学生信息管理项目,要求带操作界面,并完成每项操作: +----------------------+ | 1)添加学生信息 | | 2)显示所有学生的信息 | | 3)删除学生信息 | | 4)修改学生

  • python学生信息管理系统(初级版)

    本文为大家分享了python学生信息管理系统的初级实现代码,供大家参考,具体内容如下 学生信息管理项目,要求带操作界面,并完成每项操作: +----------------------+ | 1)添加学生信息 | | 2)显示所有学生的信息     | | 3)删除学生信息     | | 4)修改学生信息            | | 5)按学生成绩高-低显示学生信息         | | 6)按学生成绩低-高显示学生信息      | | 7)按学生年龄高-低显示学生信息   | | 8)

  • python实现学生信息管理系统

    继上篇博客Python实现简易通讯录后,我就想写一个复杂点的学生信息管理系统,这次实现的功能有 1.学生信息的录入管理: 2.学生选课操作: 3.学生选课情况查询: 这次仍然用到sqlite3模块.虽然看着挺简单,但是也踩了不少坑,毕竟刚开始实战,有些细节的还需要多多磨炼啊! 好了,废话不多说,直接上代码,欢迎感兴趣的朋友私信讨论~~~ #-*- coding:utf-8 -*- import sqlite3 #打开本地数据库用于存储用户信息 conn = sqlite3.connect('st

  • Python实现GUI学生信息管理系统

    本文实例为大家分享了Python实现GUI学生信息管理系统的具体代码,供大家参考,具体内容如下 项目环境:  软件环境: OS:RedHat6.3                   Lib:Pygtk                   Language:Python                   Support tool:Glade3 项目简述: ①Glade3设计用户的登录窗口,功能主窗口 ②通过Gtk.Builder初始化,载入界面 ③在Mysql.py文件中实现Python操作数

随机推荐