ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-06-16 16:34:30  阅读:174  来源: 互联网

标签:name Python self 实例 print 信息管理系统 csv data def


项目要求:

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

我们要全部通过类去实现

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

管理员类

    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实现学生信息管理系统内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

在这里插入图片描述

标签:name,Python,self,实例,print,信息管理系统,csv,data,def
来源: https://www.cnblogs.com/lj-C/p/14889887.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有