一、概述

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. Ubuntu固定多个静态ip

    步骤: 1.sudo vim /etc/network/interfaces 加入下列内容 auto eth0#此处查看自己的ip信息是eth0还是eth1等等 iface eth0 inet sta ...

  2. codeforces 1278F - Cards(第二类斯特林数+二项式)

    传送门 解题过程: \(答案=\sum^n_{i=0}*C^i_n*{\frac{1}{m}}^i*{\frac{m-1}{m}}^{n-i}*i^k\) 根据第二类斯特林数的性质\(n^k=\sum ...

  3. Iptables和Firewall-selinux

    一.Iptables防火墙 ---------- **三表五链:**三表: filter过滤表 nat转换表 mangle表五链: PREROUTING--->在进行路由选择前处理数据包 INP ...

  4. DWZ框架--页面样式丢失

    案例 今天我导入DWZ框架demo时,发现主页面样式丢失,出现了如下图那鬼样: 正常情况应该是有表格显示,并且用chrome开发者模式调试,可以看到有对应的样式,如下图所示: 先简单介绍下dwz框架的 ...

  5. OpenCV3入门(五)图像的阈值

    1.图像阈值与二值化 阈值是一种简单的图像分割方法,一幅图像包括目标物体(前景).背景还有噪声,要想从数字图像中直接提取出目标物体,可以设定一个像素值即阈值,然后用图像的每一个像素点和阈值做比较,给出 ...

  6. VC运行时库/MD、/MDd、/MT、/MTd说明

    http://blog.csdn.net/holybin/article/details/26134153 VC运行时库设置:VC项目属性->配置属性->C/C++->代码生成-&g ...

  7. 从Libra看区块链的机遇

    一番码客 : 挖掘你关心的亮点.http://www.efonmark.com 关于未来的思考 记得去年扎克伯格搞Libra的时候,引起了世界的关注.但随着美国国会听证会的阻力,渐渐很少听见Libra ...

  8. Visual Studio 常见问题

    VS 2013相关问题 VS 2013 Ultimate Update 5 下载地址: 英文版: vs2013.5_ult_enu.iso SHA-1:918EA4A911858D32C9771480 ...

  9. 使用IntelliJ IDEA创建Maven工程

    1. 新建项目(点击“+ Create New Project”): 2. 选择Maven,不必选择项目骨架,直接点击Next 按钮即可: 3. 输入项目名称,选择项目位置,输入组织名称,模块名称,项 ...

  10. POJ_3663_贪心

    题目描述: 给你一堆数和一个限定的空间大小,要求求出两个数的和小于等于空间大小的对数. 思路: 贪心,先给一堆数从大到小排序. 第一个数取数组第一个,第二个数从第二个开始依次往后取,只要某个第二个数满 ...