Python学生信息管理系统(注释最详细,小白都看的懂)
程序员文章站
2022-03-10 11:45:13
1 import os 2 3 # 学生系统基本功能 4 # 增删查改 5 6 # 如何实现该系统 7 # 1.显示系统功能界面 8 # 2.让用户选择功能 9 # 3.判断用户选择的指定功能,然后完成相应的操作(增删查改) 10 11 # 面向对象分析 12 # 1.抽象类 13 # 学生系统管理 ......
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()