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. ...
随机推荐
- 【转】在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)
原文:http://www.cyqdata.com/cnblogs/article-detail-35876# 背景 在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第三方通讯组件 ...
- JavaScript中this的使用及含义(总结)
this 1.谁调用,指向谁 2.事件监听函数中,this指向,绑定监听函数的那一个元素节点 即,谁绑,指向谁 3.当一个函数没有被其他对象调用时,(普通调用),this指向全局对象(严格模式下面是u ...
- Integer梳理
Integer常量池 问题1 public class Main_1 { public static void main(String[] args) { Integer a = 1; Integer ...
- react-native--->RN发送/接收事件机制
import { AppRegistry, StyleSheet, Text, View, Platform, NativeAppEventEmitter, DeviceEventEmitter, } ...
- Git详解之协议/速度/安全
协议概述 Git共享服务的实现方式大致分为四种:文件共享类型.git类型.ssh类型.http类型: 本地协议 本地协议:文件共享类型,是对Git项目,通过文件共享的方式:如NFS.FTP.samba ...
- JavaScript运动_封装模板(支持链式运动、完美运动)
最近自学到了JS运动部分,自己整理了一些js模板,望采纳. 1.支持链式运动的模板: 先解释一下函数中的几个参数含义: 1)obj: 要操作的对象 2)target: 属性要到达的目标值 3)attr ...
- JSP&Servlet学习笔记----第6章
JSP与Servlet是一体两面的关系. JSP最终还是被编译为Servlet. <%@page contentType="text/html;charset=UTF-8" ...
- js笔记(1)--第一天记录
刚刚接触JavaScript这门语言不久,所以希望每一次都记一点东西下来,巩固下知识. 首先,写了一个demo,是来计算两个数字的和的,如果直接把 v1=text1.value,和 v2=text2. ...
- CCF_ 201509-3_模板生成系统
又是一道考验细心和耐心的题,不知道哪里出问题了,一直只有90分 = =! #include<cstdio> #include<iostream> #include<cst ...
- 二、Mongodb常用命令
#进入admin数据库 use admin #进行权限认证 db.auth('userAdmin', '123456') #查询所有用户 db.system.users.find() #更新用户 db ...