python基础入门之十八 —— 面向对象版学员管理系统

main.py:

from StudentMannager.manager import *

if __name__ == ‘__main__‘:
    student_manager = Manager()
    student_manager.run()

manager.py:

from StudentMannager.student import *

class Manager(object):
    def __init__(self):
        self.stu_list = []

    # 一. 程序入口函数
    def run(self):
        # 1. 加载文件里面的学员数据
        self.load_student()
        while True:
            # 2. 显示功能菜单
            self.show_menu()
            # 3. 用户输入目标功能序号
            menu_num = int(input(‘请输入您需要的功能序号:‘))
            # 4. 根据用户输入的序号执行不同的功能 -- 如果用户输入1,执行添加
            if menu_num == 1:
                # 添加学员
                self.add_student()
            elif menu_num == 2:
                # 删除学员
                self.del_student()
            elif menu_num == 3:
                # 修改学员信息
                self.modify_student()
            elif menu_num == 4:
                # 查询学员信息
                self.search_student()
            elif menu_num == 5:
                # 显示所有学员信息
                self.show_student()
            elif menu_num == 6:
                # 保存学员信息
                self.save_student()
            elif menu_num == 7:
                # 退出系统 -- 退出循环
                break

    # 二. 系统功能函数
    # 2.1 显示功能菜单 -- 打印序号的功能对应关系 -- 静态
    @staticmethod
    def show_menu():
        print(‘请选择如下功能:‘)
        print(‘1:添加学员‘)
        print(‘2:删除学员‘)
        print(‘3:修改学员信息‘)
        print(‘4:查询学员信息‘)
        print(‘5:显示所有学员信息‘)
        print(‘6:保存学员信息‘)
        print(‘7:退出系统‘)

    # 2.2 添加学员
    def add_student(self):
        name = input("name = ")
        gender = input("gender = ")
        tel = input("tel = ")
        stu = student(name,gender,tel)
        self.stu_list.append(stu)
        print(‘添加成功‘)

    # 2.3 删除学员
    def del_student(self):
        del_name = input("del_name = ")
        for i in self.stu_list:
            if del_name == i.name:
                self.stu_list.remove(i)
                break
        else:
            print(‘查无此人!‘)
        print(‘删除成功‘)

    # 修改学员信息
    def modify_student(self):
        modify_name = input("modify_name = ")
        for i in self.stu_list:
            if modify_name == i.name:
                i.gender = input(f‘{i.name}\‘s gender = ‘)
                i.tel = input(f‘{i.name}\‘s tel = ‘)
                print(‘修改成功‘)
                break
        else:
            print(‘查无此人!‘)

    # 查询学员信息
    def search_student(self):
        search_name = input("search_name = ")
        for i in self.stu_list:
            if search_name == i.name:
                print(i)
                break
        else:
            print(‘查无此人!‘)

    # 显示所有学员信息
    def show_student(self):
        print(‘姓名\t年龄\t电话\t‘)
        for i in self.stu_list:
            print(f‘{i.name}\t{i.gender}\t{i.tel}‘)
        print(‘-‘*20)

    # 保存学员信息
    def save_student(self):
        try:
            f = open(‘student.data‘,‘w‘)
            new_list = [i.__dict__ for i in self.stu_list]  # __dict__ 返回类内部所有的属性和方法对应的字典
print(new_list)
            f.write(str(new_list))
            f.close()
        except Exception as result:
            print(result)

    # 加载学员信息
    def load_student(self):
        try:
            f = open(‘student.data‘,‘r‘)
        except:
            f = open(‘student.data‘, ‘w‘)
        else:
            data = f.read()
            new_list = eval(data)  # eval() 函数用来执行一个字符串表达式,并返回表达式的值。
            self.stu_list = [student(i[‘name‘],i[‘gender‘],i[‘tel‘]) for i in new_list]
        finally:
            f.close()

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‘name = {self.name},gender = {self.gender},tel = {self.tel}‘

原文地址:https://www.cnblogs.com/LynHome/p/12650318.html

时间: 2024-07-31 02:02:08

python基础入门之十八 —— 面向对象版学员管理系统的相关文章

python基础入门之十八 —— 模块和包

一.模块 模块能定义函数,类和变量,模块里也能包含可执行代码. 1. 导入模块 import 模块名 from 模块名 import 功能名 from 模块名 import * # 法1:import 模块 import math print(math.sqrt(9)) # 法2:from 模块 import 功能1,功能2,…… from math import sqrt print(sqrt(8)) # 法3:from 模块 import * from math import * print

python基础入门之十二 —— lambda表达式

一.语法 作用:简化函数代码 格式:lambda 参数列表 :表达式 P.s: lambda表达式参数可有可无,参数写法同函数 lambda函数能接收任何数量的参数但只能返回一个表达式的值 def func0(): return 100 func = lambda: 100 # lambda本质是一个匿名函数 print(func0) # <function func0 at 0x000001F7FE355160> print(func) # <function <lambda&g

Python3快速入门(十八)——PyInstaller打包发布

Python3快速入门(十八)--PyInstaller打包发布 一.PyInstaller简介 1.PyInstaller简介 PyInstaller是一个跨平台的Python应用打包工具,支持 Windows/Linux/MacOS三大主流平台,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,从而允许最终用户在无需安装 Python 的情况下执行应用程序.PyInstaller 制作出来的执行文件并不是跨平台的,如果需要为不同平台打包,就要在相应平台上运行PyIn

Python基础学习(十)

Python I/O模型 同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一下本文的上下文. 概念说明 在进行解释之前,首先要说明几个概念: 用户空间和内核空间 进程切换 进程的阻塞 文件描述符 缓存 I/O 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件

Python开发【第十八篇】:MySQL(二)

Python开发[第十八篇]:MySQL(二) 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT * FROM ( SELECT nid, NAME FROM tb1 WHERE nid > 2 ) AS A WHERE A. NAME > 'alex'; 临时表搜索 1.创建视图 --格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v

(转)Inno Setup入门(十八)——Inno Setup类参考(4)

本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17251009 编辑框 编辑框也叫文本框,是典型的窗口可视化组件,既可以用来输入文本,也可以用来显示文本,是程序设计中最常用的组件之一,可以获取用户输入的许多信息.Pascal中的编辑框由类Tedit实现,该类的定义如下: TEdit = class(TCustomEdit) property AutoSelect: Boolean; read write; prop

MyBatis基础入门《十五》ResultMap子元素(collection)

MyBatis基础入门<十五>ResultMap子元素(collection) 描述: 见<MyBatis基础入门<十四>ResultMap子元素(association )> >>collection >> 复杂类型集合,一对多 >> 内部嵌套 > 映射一个嵌套结果集到一个列表 >> 属性 > property : 映射数据库列的实体对象的属性 > ofType : 完整java类名或别名(集合所包括的

ORM版学员管理系统

ORM版学员管理系统 班级表 表结构 class Class(models.Model): id = models.AutoField(primary_key=True) # 主键 cname = models.CharField(max_length=32) # 班级名称 first_day = models.DateField() # 开班时间 查询班级 URL部分: url(r'^class_list/$', views.class_list, name="class_list"

python学习笔记-(十)面向对象基础

面向对象相关知识简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中且在函数体之外.类变量通常不作为实例变量使用. 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据. 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写. 实例变量:定义在方法中的变量,只作用于当前实例的类