一、概述

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. 深入Node模块Buffer-学会操作二进制

    Buffer 作为 nodejs 中重要的概念和功能,为开发者提供了操作二进制的能力.本文记录了几个问题,来加深对 Buffer 的理解和使用: 认识缓冲器 如何申请堆外内存 如何计算字节长度 如何计 ...

  2. axios用post传参,后端无法获取参数问题

    最近用vue+nodejs写项目,前端使用axios向后台传参,发现后台接收不到参数. 后台是node+express框架,然后使用了body-parser包接收参数,配置如下: const expr ...

  3. ios---apple mach-o linker error 报错解决

    问题触发场景 在新xcode环境里配置了cocoapods,并运行了自己的项目.然后某日从其他地方clone了第三方项目,打开后,有了这个报错: 问题原因 1.用cocoapods装了第三方插件后,要 ...

  4. PKU-2723 Get Luffy Out(2-SAT+二分)

    Get Luffy Out 题目链接 Ratish is a young man who always dreams of being a hero. One day his friend Luffy ...

  5. SparkSQL 如何自定义函数

    1. SparkSql如何自定义函数 2. 示例:Average 3. 类型安全的自定义函数 1. SparkSql如何自定义函数? spark中我们定义一个函数,需要继承 UserDefinedAg ...

  6. 释放innodb空间

    记一次MySQL运维 [root@b2btest ~]# free -h total used free shared buffers cached Mem: 125G 124G 780M 13M 2 ...

  7. 工作流Activity框架入门(一)

    Activity工作流入门 1. 工作流概念 工作流(Workflow),就是"业务过程的部分或整体在计算机应用环境下的自动化",它主要解决的是"使在多个参与者之间按照某 ...

  8. 学习记录(Python列表)

    列表(List)是Python语言中最通用的序列数据结构之一,列表是一个没有固定长度的,用来表示任意类型对象的位置相关的有序集合.列表中的数据项不需要具有相同的数据类型 列表的基本操作: 1.创建列表 ...

  9. 学习记录(安装spark)

    根据林子雨老师提供的教程安装spark,用的是网盘里下载的课程软件 将文件通过ftp传到ubantu中 根据教程修改配置文件,并成功安装spark 在修改配置文件的时候出现了疏忽,导致找不到该文件,最 ...

  10. Spring注入bean的方式

    在Spring容器中为一个bean配置依赖注入有三种方式: · 使用属性的setter方法注入  这是最常用的方式: · 使用构造器注入: · 使用Filed注入(用于注解方式).   使用属性的se ...