python类定义学生信息_Python学生信息管理系统(注释最详细,小白都看的懂)
1 importos2
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 classStudent(object):24 def __init__(self,name,age,sex):25 #添加相关的属性信息
26 self.name=name27 self.age=age28 self.sex=sex29
30
31
32 classStudentManageSystem(object):33 def __init__(self):34 #定义一个列表用于保存学生对象
35 self.student_list =list()36
37
38 #将功能代码放到指定函数里面
39 defshow_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 defadd_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 defshow_all_student(self):69 '''该函数用于显示所有的学生信息'''
70 #注意列表里面储存的是字典
71 #遍历的时候使用enumerate函数可以返回下标
72 for index, student inenumerate(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 defmodify_student(self):83 ''''该函数用来修改学生信息'''
84 #1. 接收用户要修改学生的学号
85 student_no = int(input("请输入要修改学生的学号:"))86
87 #2. 把学号转成下标, 下标 = 学号 - 1
88 index = student_no - 1
89 #判断下标是否合法
90 if 0 <= index
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_name100 student.age =new_age101 student.sex =new_sex102
103 print("修改成功")104 else:105 print("请输入正确的学号:")106
107
108 #删除学生信息
109 defdelete_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 defquery_student(self):126 """该函数用来查询学生信息"""
127 name = input("请输入要查询学生的姓名:")128 for index, student inenumerate(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 defsave_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 inself.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 defload_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 innew_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 defstart(self):184 #当程序运行的时候加载一次文件
185 self.load_file()186
187 whileTrue: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()
python类定义学生信息_Python学生信息管理系统(注释最详细,小白都看的懂)相关推荐
- python输入学生姓名_Python学生信息管理系统(注释最详细,小白都看的懂)
1 importos2 3 #学生系统基本功能 4 #增删查改 5 6 #如何实现该系统 7 #1.显示系统功能界面 8 #2.让用户选择功能 9 #3.判断用户选择的指定功能,然后完成相应的操作(增 ...
- python类定义的讲解_python类定义的讲解
Python中的类属性和对象属性的区别详解 类属性: class Employee(object): emCount=0 def __init__(self,name,salary): self.na ...
- python类定义的讲解_python面向对象、自定义类等使用实例讲解
python 面向对象相对别的语言来说缺少两个功能: 1.python不具备重载,重载是指在同一个类中,使得方法有相同的名称,但是有不同的参数列表,但由于python函数具有强大的参数处理功能,因此这 ...
- python类定义框体_Python开源框架种类
Python名气最大的框架:Django 初学Python时,你一定听到过Django,这两者就好像是一对好朋友.Django它是个开放源代码的Web应用框架,由Python写成的Django应该是最 ...
- python类定义以及调用_python中如何定义和调用类详解
类的方法的定义 1.def fun_name(self,...); Pass 2.其中的参数self代表类的实例,在调用方法时由系统自动提供 3.方法定义时必须指明self参数 类的方法的调用 与普通 ...
- 小白都看得懂的使用Python生成随机验证码图片,以及后续优化方案
环境:Anaconda3-2020.02 首先我们分解一下需要做什么: 生成随机的字母字符串 生成生成随机的背景色 生成随机的字体颜色 把随机的字符串用随机的颜色渲染,然后放到一块随机的背景色上面,基 ...
- python类定义变量_python类变量与__init__声明变量的区别
类变量:可在类的所有实例之间共享的变量 实例类对象:类的实例是调用类对象来创建的.如:par = Parent(),par就是类Parent的一个实例类对象. 实例变量(成员变量):同一个类对象可以创 ...
- PYTHON 类定义,属性,初始化
文章目录 PYTHON 类定义,属性,初始化 类定义 类的私有属性 类方法 类的初始化和析构 初始化 析构 PYTHON 类定义,属性,初始化 为了代码的编写方便简洁,引入了类的定义: 一般,使用 c ...
- python如何定义自定义函数_python类中系统自定义函数
标签: python类 双下划线特殊函数 今天遇到python类内部系统以双下划线开头和结尾的情况,特去学习一部分的应用情况,顺便记录一下.python 的OOP编程中,每个类拥有一些系统特殊定义的函 ...
最新文章
- 捡对象引流脚本 内容_对象和索引流
- MySQL 复制滞后怎么办?
- 阿里专家常昊:新人如何上手项目管理?
- textread读取记事本文件
- r语言 fourth entry_第四篇 语言学习的自然顺序
- 【蜕变之路】第31天 Spring Tool Suite和IntelliJ (2019年3月21日)
- 13.C++ vector 操作
- 代码从stepping stone搬移到内存
- css 选父元素,CSS子元素选择父元素的实现
- 腾讯云网站备案咨询:网站信息类问题汇总解答
- xmind思维导图pdf格式如何导出?xmind思维导图pdf格式导出流程介绍
- tp5 获取当前的url方法
- 【量化投资】03.量化工程abu学习之量化基础(1/3)
- DOTA双功能螯合剂127985-74-4,p-SCN-Bn-DOTA,实验室科研试剂
- 《新财富》:泡沫难破 房价至少被高估二成
- c 语言token函数,科普 | Compound的cToken及相关核心函数
- emq Node emq@ not responding to pings.
- 计算机操作的提升,提升电脑操作的利器 鼠标快捷键解析
- 自动设置IP地址的BAT
- sal2edge.py显著性mask生成边缘标签
热门文章
- Token Bucket原理
- Visual C++中的异常处理浅析(上)
- stream() 求和_Java教程:Java8统计list中指定属性的最大、最小、平均值、求和
- java expextion_Java(20~24)
- linux zk集群,linux ZooKeeper集群安装
- LINUX前期知识回顾
- rabbitmq如何保证消息不被重复消费_RabbitMQ保证消息可靠投递与消费的正确使用姿势...
- 信息竞赛进阶指南--搜索相关(模板)
- CSDN排名及积分规则
- 数学--数论--欧拉降幂和广义欧拉降幂(实用好理解)