zoukankan      html  css  js  c++  java
  • Python学生信息管理系统(注释最详细,小白都看的懂)

      1 import os
      2 
      3 # 学生系统基本功能
      4 # 增删查改
      5 
      6 # 如何实现该系统
      7 # 1.显示系统功能界面
      8 # 2.让用户选择功能
      9 # 3.判断用户选择的指定功能,然后完成相应的操作(增删查改)
     10 
     11 # 面向对象分析
     12 # 1.抽象类
     13 # 学生系统管理类  学生类
     14 # 2.分析类的成员
     15 
     16 # 学生系统管理类
     17 # 属性:学生列表属性 保存学生信息
     18 # 方法:添加学生 删除学生 显示学生信息等这些方法
     19 
     20 # 学生类
     21 # 属性:姓名 年龄 性别
     22 # 方法:无
     23 class Student(object):
     24     def __init__(self,name,age,sex):
     25         # 添加相关的属性信息
     26         self.name=name
     27         self.age=age
     28         self.sex=sex
     29 
     30 
     31 
     32 class StudentManageSystem(object):
     33     def __init__(self):
     34         # 定义一个列表用于保存学生对象
     35         self.student_list = list()
     36 
     37 
     38     # 将功能代码放到指定函数里面
     39     def show_menu(self):
     40         '''该函数是为了展示功能界面'''
     41         # 1. 显示系统的功能菜单
     42         print("------学生管理系统1.0------")
     43         print("1.添加学生信息")
     44         print("2.修改学生信息")
     45         print("3.删除学生信息")
     46         print("4.显示所有学生")
     47         print("5.查询学生信息")
     48         print("6.退出管理系统")
     49 
     50 
     51     # 添加学生函数
     52     # 分析:
     53     # 1. 学生的信息如何表示?
     54     # 2. 管理系统里面的学生信息如何表示?
     55     def add_student(self):
     56         name = input("请输入学生的姓名:")
     57         age = input("请输入学生的年龄:")
     58         sex = input("请输入学生的性别:")
     59         # 添加一个学生,需要自己创建一个学生对象
     60         stu=Student(name,age,sex)
     61         # 把对象添加到列表里面
     62         self.student_list.append(stu)
     63         # 显示学生信息
     64         # print(self.student_list)
     65         print("添加成功")
     66 
     67     # 显示所有学生函数
     68     def show_all_student(self):
     69         '''该函数用于显示所有的学生信息'''
     70         # 注意列表里面储存的是字典
     71         # 遍历的时候使用enumerate函数可以返回下标
     72         for index, student in enumerate(self.student_list):
     73             # 计算学号=下标+1
     74             student_no = index + 1
     75             print("学号:", student_no,
     76                   "姓名:", student.name,
     77                   "年龄:", student.age,
     78                   "性别:", student.sex)
     79 
     80 
     81     # 修改学生信息函数
     82     def modify_student(self):
     83         ''''该函数用来修改学生信息'''
     84         # 1. 接收用户要修改学生的学号
     85         student_no = int(input("请输入要修改学生的学号:"))
     86 
     87         # 2. 把学号转成下标, 下标 = 学号 - 1
     88         index = student_no - 1
     89         # 判断下标是否合法
     90         if 0 <= index < len(self.student_list):
     91             # 3. 根据下标获取要修改的学生字典
     92             student = self.student_list[index]
     93 
     94             # 4. 对学生字典的数据进行修改(名字, 年龄, 性别)
     95             new_name = input("请输入修改后的姓名:")
     96             new_age = input("请输入修改后的年龄:")
     97             new_sex = input("请输入修改后的性别:")
     98             # 对字典里面的数据进行修改
     99             student.name = new_name
    100             student.age = new_age
    101             student.sex = new_sex
    102 
    103             print("修改成功")
    104         else:
    105             print("请输入正确的学号:")
    106 
    107 
    108     # 删除学生信息
    109     def delete_student(self):
    110         """该函数用来删除学生信息"""
    111         # 1.接收用户输入的学号
    112         student_no = int(input("请输入要删除学生的学号:"))
    113         # 2.将学号转换为下标
    114         index = student_no - 1
    115         # 判断下表是否合法
    116         if 0 <= index <= len(self.student_list):
    117             # 需求删除后把这个人的姓名显示出来,使用pop会把删除的内容返回
    118             student = self.student_list.pop(index)
    119             print("%s,删除成功!" % student.name)
    120         else:
    121             print("请输入有效学号!")
    122 
    123 
    124     # 查询某个学生信息
    125     def query_student(self):
    126         """该函数用来查询学生信息"""
    127         name = input("请输入要查询学生的姓名:")
    128         for index, student in enumerate(self.student_list):
    129             student_no = index + 1
    130             if student.name == name:
    131                 print("学号:", student_no,
    132                       "姓名:", student.name,
    133                       "年龄:", student.age,
    134                       "性别:", student.sex)
    135                 break
    136         # 当循环语句没有执行break,表示没有该学生信息执行else里面的语句
    137         # 当循环执行break语句的时候,说明该学生信息存在,不会执行else里面的语句
    138         # 注意:当for循环与else一起使用的时候,如果没有执行for循环里面的break则会执行else语句!!!
    139         else:
    140             print("对不起,没有该学生")
    141 
    142     # 讲列表里面的数据保存到文件里面
    143     def save_file(self):
    144         # 1.打开文件 要以w方式打开
    145         file=open("student_list.data","w",encoding="utf-8")
    146         #2.把数据写入文件(把列表转换为字符串类型)
    147         # 把列表里面的每一个对象转换成学生列表里面的字典,把对象的属性信息保存到字典里面
    148         # stu.__dict__  获取学生的字典信息把对象的属性信息以字典的形式返回
    149         new_list=[stu.__dict__ for stu in self.student_list]
    150         student_list_str=str(new_list)
    151         print(student_list_str,type(student_list_str))
    152         file.write(student_list_str)
    153         file.close()
    154 
    155     # 加载文件里面的内容,将文件里面的内容加载到列表里面****
    156 
    157     def load_file(self):
    158         # 1.判断文件是否存在  返回值类型是布尔类型
    159         if os.path.exists("student_list.data"):
    160             # 1.打开文件 r模式
    161             file=open("student_list.data","r",encoding="utf-8")
    162             # 2.读取文件里面的数据
    163             value=file.read()
    164             # 因为从文件里面读取的是字符串类型,所以需要先转换为列表类型
    165             # 注意这里将字符串转换为列表需要使用eval()函数,获取字符串包裹的内容
    166             new_list=eval(value)
    167             print("从文件里面获取的内容为:",new_list,type(new_list))
    168             # 把列表里面每一个学生字典信息转换为对象
    169             # **stu_dict:把字典里面的每一项数据按照关键字传参
    170             # Student(**stu_dict)表示创建一个学生对象
    171             new_list=[Student(**stu_dict) for stu_dict in new_list]
    172             print(new_list)
    173             # 3.将文件里面的内容添加到列表里面
    174     #         方法一:使用global
    175     #         global student_list
    176     #         student_list=new_list
    177     #         方法2:方式,把文件中的列表数据扩展到全局变量里面, 这里不需要加上global,因为列表是可变类型
    178             self.student_list.extend(new_list)
    179             file.close()
    180 
    181 
    182     # 程序入口函数,程序开始时第一个执行的函数
    183     def start(self):
    184         # 当程序运行的时候加载一次文件
    185         self.load_file()
    186 
    187         while True:
    188             # 1.显示系统功能菜单
    189             self.show_menu()
    190 
    191             # 2.接收用户输入的功能选项
    192             menu_option = input("请输入你要操作的功能选项:")
    193 
    194             # 3. 判断用户选择的指定功能,然后完成对应的操作(增删改查的功能)
    195             if menu_option == "1":
    196                 print("添加学生信息")
    197                 self.add_student()
    198             elif menu_option == "2":
    199                 print("修改学生信息")
    200                 self.modify_student()
    201             elif menu_option == "3":
    202                 print("删除学生信息")
    203                 self.delete_student()
    204             elif menu_option == "4":
    205                 print("显示学生信息")
    206                 self.show_all_student()
    207             elif menu_option == "5":
    208                 print("查询学生信息")
    209                 self.query_student()
    210             elif menu_option == "6":
    211                 print("程序退出")
    212                 self.save_file()
    213                 break
    214 
    215 system=StudentManageSystem()
    216 
    217 system.start()
  • 相关阅读:
    C# 关于委托和事件的妙文:通过一个例子详细介绍委托和事件的作用;Observer模式简介
    Path.Combine (合并两个路径字符串)方法的一些使用细节
    taskkill /f /im的应用
    powersheel远程连接方法操作
    Centos 定时任务发送smtp邮件
    Centos 发送smtp邮件
    在 Windows 上安装Rabbit MQ 指南
    Quartz.NET总结(五)基于Quartz.net 的开源任务管理平台
    Quartz.NET总结(四)Quartz 远程调度
    Quartz.NET总结(三)Quartz 配置
  • 原文地址:https://www.cnblogs.com/youliang-null/p/12701863.html
Copyright © 2011-2022 走看看