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


Posted in Python onDecember 30, 2020

项目要求:

利用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实现学生信息管理系统的文章就介绍到这了,更多相关Python实现学生信息管理系统内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python查询阿里巴巴关键字排名的方法
Jul 08 Python
Python 对象中的数据类型
May 13 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
May 23 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 27 Python
Python实现两个list求交集,并集,差集的方法示例
Aug 02 Python
python之cv2与图像的载入、显示和保存实例
Dec 05 Python
python实现抖音点赞功能
Apr 07 Python
django中账号密码验证登陆功能的实现方法
Jul 15 Python
Ranorex通过Python将报告发送到邮箱的方法
Jan 12 Python
基于python生成英文版词云图代码实例
May 16 Python
Python word文本自动化操作实现方法解析
Nov 05 Python
python基础之模块的导入
Oct 24 Python
使用gunicorn部署django项目的问题
Dec 30 #Python
pyspark对Mysql数据库进行读写的实现
Dec 30 #Python
python实现无边框进度条的实例代码
Dec 30 #Python
python中的列表和元组区别分析
Dec 30 #Python
python实现xml转json文件的示例代码
Dec 30 #Python
python实现KNN近邻算法
Dec 30 #Python
python 实现逻辑回归
Dec 30 #Python
You might like
php下用GD生成生成缩略图的两个选择和区别
2007/04/17 PHP
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
2009/04/24 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
不安全的常用的js写法
2009/09/15 Javascript
jQuery学习5 jQuery事件模型
2010/02/07 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
图片上传判断及预览脚本的效果实例
2013/08/07 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
2015/03/19 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
Bootstrap table使用方法总结
2017/05/10 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
2017/11/14 Javascript
JavaScript实现更换背景图片
2019/10/18 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
Vue项目中Api的组织和返回数据处理的操作
2019/11/04 Javascript
vue element-ui实现input输入框金额数字添加千分位
2019/12/29 Javascript
[47:03]Ti4第二日主赛事败者组 LGD vs iG 2
2014/07/21 DOTA
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
C++和python实现阿姆斯特朗数字查找实例代码
2020/12/07 Python
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
比较一下entity bean和session bean
2013/12/27 面试题
幼儿园开学家长寄语
2014/01/19 职场文书
高级编程求职信模板
2014/02/16 职场文书
优秀班主任材料
2014/12/16 职场文书
《多彩的民间艺术》教学反思
2016/02/16 职场文书
2016年少先队活动总结
2016/04/06 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书
只用20行Python代码实现屏幕录制功能
2021/06/02 Python
springboot拦截器无法注入redisTemplate的解决方法
2021/06/27 Java/Android
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL
深入理解 Golang 的字符串
2022/05/04 Golang