一、概述

1.1涉及到的知识点

  项目开发:创建项目,创建包,导入包;

  面向对象:静态方法,继承,内置函数,自定义函数;

  数据类型:列表,字典,字符串、列表、字典的转换和自动生成导向;

  异常处理:捕获异常; 文件操作:读,写;

1.2需求分析

  (1)思考学员管理系统需要哪些功能?

  (2)思考可以将哪些功能对象化?

  (3)创建的对象可将功能方法化(函数化)吗?

二、具体实现

  (1)创建项目:StudentManagerSystem;

  (2)创建文件:main,managerSystem,student;

  

  (3)在文件内创建具体对象;

  Student:基本属性有name,gender,tel,方法(__str__)返回具体属性值

  managerSystem:属性依赖于Student,本身无属性,

          功能有:执行函数run,静态方法show_menu,以及add_stu等增删改操作

  main:创建对象,执行文件

  (4)细节要点

  确保在相应文件首部中导入正确的包,即使正确,仍可能有警告;

  每写完一个小功能,都要立即进行测试,发现问题及时解决;

  注意数据的存储形式,列表,字符串;

三、总结

  这个项目跟着老师做了差不多一周,因为涉及的知识点很多事前面学过但没有很熟练掌握的,所以有些吃力,加上最近开学,有很任务要完成,勉强每天学一点,效果不是很好,但学了总比没学好。马上就要进入mooc学图形了,不求每天学得很多,能学一点是一点,希望自己可以坚持下去吧!

四、完整源码

 # student.py
class Student(object):
def __init__(self, name, gender, tel):
self.name = name
self.gender = gender
self.tel = tel def __str__(self):
return f'姓名:{self.name},' \
f'性别:{self.gender},' \
f'手机号:{self.tel}' # managerSystem.py
"""
存储数据:文件(student.data)
加载文件数据
修改数据后保存到文件
存储形式:list 存储学员对象
系统功能:add,del,modify,find,display,save,exit
"""
from student import * class StudentManager(object):
def __init__(self):
"""存储数据"""
self.stu_list = [] def run(self):
self.load_stu() while True:
self.show_menu()
k = int(input('请输入功能序号:\n'))
if k == 1:
self.add_stu()
elif k == 2:
self.del_stu()
elif k == 3:
self.modify()
elif k == 4:
self.find()
elif k == 5:
self.display()
elif k == 6:
self.save()
elif k == 7:
break @staticmethod
def show_menu():
"""显示功能菜单"""
print('请选择如下功能:')
print('1:添加学员')
print('2:删除学员')
print('3:修改学员信息')
print('4:查询学员')
print('5:显示全部学员信息')
print('6.:保存学员信息')
print('7:退出系统') def add_stu(self):
name = input('请输入您的姓名:')
gender = input('请输入您的性别:')
tel = input('请输入您的电话号码:')
stu = Student(name, gender, tel)
self.stu_list.append(stu)
print(self.stu_list, stu) def del_stu(self):
del_name = input('请输入要删除学员姓名:')
for i in self.stu_list:
if i.name == del_name:
self.stu_list.remove(i)
break
else:
print('查无此人。')
print(self.stu_list) def modify(self):
modiy_name = input('请输入要修改的学员姓名:')
for i in self.stu_list:
if i.name == modiy_name:
i.name = input('请输入您的姓名:')
i.gender = input('请输入您的性别:')
i.tel = input('请输入您的电话号码:')
print(f'姓名:{i.name},性别:{i.gender},电话号码:{i.tel}\n'
f'修改学员信息成功.')
break
else:
print('该学员不存在!') def find(self):
find_name = input('请输入要修改的学员姓名:')
for i in self.stu_list:
if i.name == find_name:
print(f'姓名:{i.name},性别:{i.gender},电话号码:{i.tel}\n'
f'修改学员信息成功.')
break
else:
print('该学员不存在!') def display(self):
for i in self.stu_list:
print(f'姓名:{i.name},'
f'性别:{i.gender},'
f'电话号码:{i.tel}\n'
f'修改学员信息成功.') def save(self):
"""文件写入学员数据"""
f = open('student.data', 'w')
new_list = [i.__dict__ for i in self.stu_list]
f.write(str(new_list))
f.close() def load_stu(self):
try:
f = open('student.data', 'r')
except:
f = open('student.data', 'w')
else:
data = f.read() # 将data字符串转换为列表类型数据
new_list = eval(data) # 列表推导式
self.stu_list = [Student(i['name'],
i['gender'],
i['tel'] )
for i in new_list]
finally:
f.close() # main.py
from managerSystem import * if __name__ == '__main__':
stu = StudentManager()
stu.run()

Python——面向对象,简易学生信息管理系统的更多相关文章

  1. 面向对象案例-学生信息管理系统V0.6

    更新版本 面向对象案例 - 学生信息管理系统V1.0 项目要求: 实体类: 学生类: id, 姓名,年龄,性别,成绩 需要使用数组保存学生信息 Student[] allStu 需要完成的方法 1. ...

  2. 基于数据库MySQL的简易学生信息管理系统

    通过这几天学习Mysql数据库,对其也有了基本的了解,为了加深印象,于是就写了一个最简易的学生信息管理系统. 一:基本要求 1.通过已知用户名和密码进行登录: 2.可以显示菜单: 3.可以随时插入学生 ...

  3. c#简易学生信息管理系统

    在近期的学习中,我们学习了泛型及泛型集合的概念和使用,泛型是c#中的一个重要概念,为了巩固我们学习的成果,我们可以使用一个实例来进行练习 题目及要求 要求使用Windows窗体应用程序,制作出如上图的 ...

  4. 一个低级shell简易学生信息管理系统-新增登陆注册功能

    还有bug 不修改了 小声bb一下 这玩意真的要控制版本 随手保存 本来有个超完整的版本 一开心被我rm - f 了 后续还出现了 更多的bug 仔细仔细 源码如下: record=stu.db if ...

  5. 面向对象案例 - 学生信息管理系统V1.0

    学生管理系统项目[所有知识点整合] 1. 学生管理系统项目 尝试完成以下功能 实体类: 学生类: id, 姓名,年龄,性别,成绩 需要使用数组保存学生信息 Student[] allStu 需要完成的 ...

  6. 面向对象案例-学生信息管理系统V1.1

    1.学生类 package com.qfedu.student.entity; /** * 学生类实体 * * @author GGGXXC * */ public class Student { p ...

  7. python写一个学生信息管理系统

    #coding:utf-8 2 info = []#全局变量 3 def info_print(): 4 print("请选择功能:") 5 print("1:添加学员& ...

  8. Django 小实例S1 简易学生选课管理系统 7 修改个人信息

    Django 小实例S1 简易学生选课管理系统 第7节--修改个人信息 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 用户模块除了注册登录之外,还 ...

  9. Python基础案例练习:制作学生信息管理系统

    一.前言 学生信息管理系统,相信大家或多或少都有做过 最近看很多学生作业都是制作一个学生信息管理系统 于是,今天带大家做一个简单的学生信息管理系统 二.开发环境: 我用到的开发环境 Python 3. ...

随机推荐

  1. mysql -- collection一对多查询

    数据库表 角色组表: CREATE TABLE `sso_character_group` ( `group_id` ) NOT NULL AUTO_INCREMENT COMMENT '角色组ID' ...

  2. 基于django的会议室预订系统

    会议室预订系统 一.目标及业务流程 期望效果: 业务流程: 用户注册 用户登录 预订会议室 退订会议室 选择日期:今日以及以后日期 二.表结构设计和生成 1.models.py(用户继承Abstrac ...

  3. 数据结构与算法 --- js描述队列

    js描述队列 队列的特性是只能在队尾插入元素,在队首删除元素,先进先出: 队列被用在很多地方,比如提交操作系统执行的一系列进程,打印任务池,模拟现实中的排队: //队列类 function Queue ...

  4. 自学前端开发,现在手握大厂offer,我的故事还在继续

    简要背景 我是一个非科班出身的程序员,而且是连续跨专业者,用一句话总结就是:16 届本科学完物流,保送研究生转交通,自学前端开发的休学创业者. 17 年休学创业,正式开始学习前端,离开创业公司后,我又 ...

  5. Shoot the Bullet(有源汇带上下界最大流)

    有源汇带上下界最大流 在原图基础上连一条汇点到源点流量为inf的边,将有源汇网络流转化为无源汇网络流用相同方法判断是否满流,如果满流再跑一边源点到汇点的最大流就是答案 例题:Shoot the Bul ...

  6. Kafka系列1:Kafka概况

    Kafka系列1:Kafka概况 Kafka是当前分布式系统中最流行的消息中间件之一,凭借着其高吞吐量的设计,在日志收集系统和消息系统的应用场景中深得开发者喜爱.本篇就聊聊Kafka相关的一些知识点. ...

  7. Mybatisplus代码生成器主类CodeGenerator配置

    //代码自动生成public class CodeGenerator { /** * <p> * 读取控制台内容 * </p> */ public static String ...

  8. Docker | Mac 通过 Docker 安装 Oracle

    Docker | Mac 通过 Docker 安装 Oracle 前言: Oracle 10g 以后就不支持 Mac 版本,因此 Mac 用户需要安装的话可以通过虚拟机或者 Docker 1.在 do ...

  9. 理解RabbitMQ中的AMQP-0-9-1模型

    前提 之前有个打算在学习RabbitMQ之前,把AMQP详细阅读一次,挑出里面的重点内容.后来找了下RabbitMQ的官方文档,发现了有一篇文档专门介绍了RabbitMQ中实现的AMQP模型部分,于是 ...

  10. 分享数百个 HT 工业互联网 2D 3D 可视化应用案例之 2019 篇

    继<分享数百个 HT 工业互联网 2D 3D 可视化应用案例>2018 篇,图扑软件定义 2018 为国内工业互联网可视化的元年后,2019 年里我们与各行业客户进行了更深度合作,拓展了H ...