Python——面向对象,简易学生信息管理系统
一、概述
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——面向对象,简易学生信息管理系统的更多相关文章
- 面向对象案例-学生信息管理系统V0.6
更新版本 面向对象案例 - 学生信息管理系统V1.0 项目要求: 实体类: 学生类: id, 姓名,年龄,性别,成绩 需要使用数组保存学生信息 Student[] allStu 需要完成的方法 1. ...
- 基于数据库MySQL的简易学生信息管理系统
通过这几天学习Mysql数据库,对其也有了基本的了解,为了加深印象,于是就写了一个最简易的学生信息管理系统. 一:基本要求 1.通过已知用户名和密码进行登录: 2.可以显示菜单: 3.可以随时插入学生 ...
- c#简易学生信息管理系统
在近期的学习中,我们学习了泛型及泛型集合的概念和使用,泛型是c#中的一个重要概念,为了巩固我们学习的成果,我们可以使用一个实例来进行练习 题目及要求 要求使用Windows窗体应用程序,制作出如上图的 ...
- 一个低级shell简易学生信息管理系统-新增登陆注册功能
还有bug 不修改了 小声bb一下 这玩意真的要控制版本 随手保存 本来有个超完整的版本 一开心被我rm - f 了 后续还出现了 更多的bug 仔细仔细 源码如下: record=stu.db if ...
- 面向对象案例 - 学生信息管理系统V1.0
学生管理系统项目[所有知识点整合] 1. 学生管理系统项目 尝试完成以下功能 实体类: 学生类: id, 姓名,年龄,性别,成绩 需要使用数组保存学生信息 Student[] allStu 需要完成的 ...
- 面向对象案例-学生信息管理系统V1.1
1.学生类 package com.qfedu.student.entity; /** * 学生类实体 * * @author GGGXXC * */ public class Student { p ...
- python写一个学生信息管理系统
#coding:utf-8 2 info = []#全局变量 3 def info_print(): 4 print("请选择功能:") 5 print("1:添加学员& ...
- Django 小实例S1 简易学生选课管理系统 7 修改个人信息
Django 小实例S1 简易学生选课管理系统 第7节--修改个人信息 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 用户模块除了注册登录之外,还 ...
- Python基础案例练习:制作学生信息管理系统
一.前言 学生信息管理系统,相信大家或多或少都有做过 最近看很多学生作业都是制作一个学生信息管理系统 于是,今天带大家做一个简单的学生信息管理系统 二.开发环境: 我用到的开发环境 Python 3. ...
随机推荐
- Windows环境下配置robotframework
Robot Framework安装准备 一.python3.6以上版本 安装过程中勾选“add python to path”,就可以自动配置好环境变量. 安装完成后在命令行输入python,如下图所 ...
- python3中的RE(正则表达式)
记录大佬的 整理 原文来自:https://blog.csdn.net/weixin_40136018/article/details/81183504 1.引入正则模块(Regular Expres ...
- 超越队西柚考勤系统——beta冲刺3
一.成员列表 姓名 学号 蔡玉蓝(组长) 201731024205 郑雪 201731024207 何玉姣 201731024209 王春兰 201731024211 二.SCRUM部分 (1)各成员 ...
- qsort 函数笔记
函数声明 void qsort(void *base, size_t nitems, size_t size, int (*compare)(const void *, const void*)); ...
- CSS-05-伪类及伪元素选择器
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- ios---CoreLocation框架实现定位功能
CoreLocation框架实现定位功能(iOS8.0之后) // // ViewController.m // 定位 // // Created by admin on 2017/9/20. // ...
- CSS 故障艺术
本文的主题是 Glitch Art,故障艺术. 什么是故障艺术?我们熟知的抖音的 LOGO 正是故障艺术其中一种表现形式.它有一种魔幻的感觉,看起来具有闪烁.震动的效果,很吸引人眼球. 故障艺术它模拟 ...
- C++ 类模板详解(一):概念和基本使用方式
与函数模板类似地(C++函数模板详解(一):概念和特性) ,类也可以被一种或多种类型参数化.例如,容器类就是一个具有这种特性的典型例子,它通常被用于管理某种特定类型的元素.只要使用类模板,我们就可以实 ...
- VUE报表开发
因为在项目中经常开发一些报表,并且业务.逻辑其实都有大部分的重复部分. 所以将这些常用的模块抽象出来.并且可视化操作.封装成一款报表开发工具. 先看一下项目的一些效果:数据单项绑定 可视化操作: 数据 ...
- CCF_201612-4_交通规划
http://115.28.138.223/view.page?gpid=T44 好像也没想象中的那么难,没办法,当初连个优先队列dij都不会写= = 在优先队列dij算法上加上相等的时候的处理就可以 ...