python2.面向对象学生管理系统

main.py(程序主入口)

#1.导入管理系统模块

from mangerSystem import *

#2.启动管理系统

#保证是当前文件运行才启动管理系统:if -- 创建对象并调用run()方法

if __name__=="__main__":

    student_manager=StudentManager()

    student_manager.run()

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},{self.gender},{self.tel}'

# aa=Student("aa","女",111)

# print(aa)

mangerSystem

from  student import *

class StudentManager(object):

    def __init__(self):

        #存储学员数据 -- 列表

        self.student__list=[]

    #一.程序入口函数

    def run(self):

        #1.加载文件里的学员数据

        # self.load_student()

        while True:

            #2.显示功能菜单

            self.showmenu()

            #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.modif_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

                self.load_student()

            elif menu_num == 8:

                # 退出系统--退出循环

                # break

                # 程序想要结束,退出终止while True -- break

                exit_flag = input("确定要退出吗?yes or no")

                if exit_flag == 'yes':

                    print("退出系统")

                    break

            else:

                print("输入的功能序号有误!")

    #二.系统功能函数

    #2.1显示功能菜单 -- 打印序号功能对应关系--静态

    @staticmethod

    def showmenu():

        print("请选择如下功能:")

        print("1:添加学员")

        print("2:删除学员")

        print("3:修改学员信息")

        print("4:查询学员信息")

        print("5:显示所有学员信息")

        print("6:保存学员信息")

        print("7:加载学员信息")

        print("8:退出系统")

    # 2.2添加学员

    def add_student(self):

        # print("添加学员")

        #1.用户输入姓名,性别,手机号

        name=input("请输入你的姓名:")

        gender=input("请输入你的性别:")

        tel=input("请输入你的手机号:")

 #2.创建学员对象--类,类在student文件里面 先导入student模块,在创建对象

        student=Student(name,gender,tel)

        #3.将该对象添加到学员列表

        self.student__list.append(student)

        # print(123)

        # print(self.student__list)

        print(student)

    # 2.3删除学员

    def del_student(self):

        # print("删除学员")

        #1.用户输入目标学员姓名

        del_name=input("请输入要删除的学员姓名:")

        #2.遍历学员列表,如果用户输入的学员存在,则删除学员对象。否则提示学员不存在

        for i in self.student__list:

            if del_name==i.name:

                #删除学员对象

                # self.student__list.remove(i)

                break

        else:

            #循环正常结束执行代码:循环结束都没有删除任何一个对象,所以说明用户输入的目标学员不存在。

            print("查无此人!")

        print(self.student__list)

    # 2.4修改学员信息

    def modif_student(self):

        #print("修改学员信息")

        # 1.用户输入目标学员姓名

        modify_name=input("请输入要修改的学员姓名:")

        #2遍历列表数据,如果学员存在,修改姓名,性别,手机号。否则提示学员不存在

        for i in self.student__list:

            if modify_name==i.name:

                i.name=input("姓名:")

                i.gender=input("性别:")

                i.tel=input("手机号:")

                print(f"修改学员信息成功,姓名:{i.name},性别:{i.gender},手机号:{i.tel}")

                break

        else:

            print("查无此人!")

    # 2.5查询学员信息

    def search_student(self):

        # print("查询学员信息")

        #1.用户输入目标学员姓名

        search_name=input("请输入你要搜索的学员姓名:")

        #2.遍历列表。如果学员存在打印学员信息,否则提示学员不存在

        for i in self.student__list:

            if search_name==i.name:

                print(f"姓名是:{i.name},性别是:{i.gender},手机号是:{i.tel}")

                break

        else:

            print("查无此人!")

    # 2.6显示所有学员信息

    def show_student(self):

        # print("显示所有学员信息")

        #1.打印表头

        print("姓名\t性别\t手机号")

        #2.打印学员数据

        for i in self.student__list:

            print(f"{i.name}\t{i.gender}\t{i.tel}")

    # 2.7保存学员信息

    def save_student(self):

        # print("保存学员信息")

        #1.打印文件

        f=open("student.data","a")

        #2.文件写入数据

        #2.1[学员对象]转换成[字典]

        new_list=[i.__dict__ for i in self.student__list]

        #2.2文件写入 字符串数据

        f.write(str(new_list))

        #3.关闭文件

        f.close()

    # 2.8加载学员信息

    def load_student(self):

    #     print("加载学员信息")

        with open("student.data","r") as file:

            showAll=file.read()

            print(showAll,"\n")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

elasticsearch 删除满足条件的语句_ELK从入门到还未精通(二)——ElasticSearch上篇

大家好,我是泥腿子安尼特,5个月没在李佬都公众号更新文章了。上一篇,大致介绍了作为工具人的我是如何基本使用这一套ELK 系统的。今天就讲讲这个最重要的E——基于Lucene的搜索引擎ElasticSearch(后面简称ES)。最近刚搬家,没想到隔…

mysql004操作表.增删改

-- 查询表中数据 DQL 注意在mydb数据库下面 SELECT * FROM stdent; -- 新增数据 这种写法数据的循序和数据库的字段循序保持一致。 INSERT INTO stdent values (1,"张三","男",25,"2021.1.1","java","123qq.com"); --…

python2.面向对象.学生管理

main.py(程序主入口) #1.导入管理系统模块 from mangerSystem import * #2.启动管理系统 #保证是当前文件运行才启动管理系统:if -- 创建对象并调用run()方法 if __name__"__main__": student_managerStudentManager() student_manager.run() student…

纸板怎么切割光滑_激光切割机大PK!光纤、CO2、YAG,你选谁?!

问:我也是钣金人,怎么加入组织?答:点标题下方蓝字“钣金家园光纤激光切割机之所以能在市场快速站稳脚跟并且逐步替代传统切割工艺,是由于其在各方面独具优势,那么他到底优秀在哪里呢?我们把CO2激…

mysql007.算数运算.别名.去重.排序

-- 创建DEPT表 CREATE TABLE DEPT( DEPTNO int(2) not null, DNAME VARCHAR(14), LOC VARCHAR(13) ); -- 查询DEPT表 SELECT * FROM DEPT; -- 修改表,添加主键 ALTER TABLE DEPT add CONSTRAINT PK_DEPT PRIMARY KEY(DEPTNO); -- 查询表结构。 desc DEPT; …

loadrunner11录制不成功解决方法(收集)

问题一:loadrunner11录制时events为0的解决办法 刚安装好的11.0,系统环境是:WINXPIE8LR11 OR WIN7IE11LR11 1、ie去掉工具—internet选项中->高级—>去掉“启用第三方浏览器扩展”,重启ie后发现还不行,继续&…

c# 蓝牙虚拟串口_蓝牙模块——基础知识介绍

1. 数据透传蓝牙模块可以通过串口(SPI、IIC)和MCU控制设备进行数据传输。蓝牙模块可以做为主机和从机。主机就是能够搜索别的蓝牙模块并主动建立连接,从机则不能主动建立连接,只能等别人连接自己。2. 低功耗低功耗蓝牙(Bluetooth Low Energy)&#xff0c…

Error: could not open `C:\Java\jre7\lib\i386\jvm.cfg

打开eclipse时出现Error: could not open C:\Program Files\Java\jre7\lib\i586\jvm.cfg’) 删除 c:\windows\system32\java, c:\windows\system32\javaw, c:\windows\system32\javaws, 如果是64位系统,还要删除 c:\windows\SysWOW64\java&am…

java项目001.双色球游戏

package Suangseq; //双色球游戏制作。 import java.awt.SystemColor; import java.util.Arrays; import java.util.Scanner; public class TextA { public static void main(String[] args) { boolean flagfalse;//定义一个布尔类型的变量。 int[] mynull;//定义一个变量 in…

华为手机30s桌面循环滑动_华为发飙了!麒麟820+双模5G,从2699元跌至2499元,超出消费者预期...

阅读本文前,请您先点击上面的“蓝色字体”,再点击“关注”,这样您就可以继续免费收到文章了。每天都会有分享,都是免费订阅,请您放心关注。注图文来源网络,侵删 …

混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集...

其调用的方法是从sqlite数据库中获取原来已经使用过的数据库连接,当时也没注意,就是准备设断点然后单步调试,结果竟然是断点无法进入方法体内,后来仔细看了一下方法体的时候发现了一个问题,就是现有的System.Data.Sqli…

mysql008where.or.in查询

-- 创建EMP表 CREATE TABLE EMP ( EMPNO int(4) PRIMARY KEY, ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT(4), HIREDATE DATE, SAL DOUBLE(7,2), COMM DOUBLE(7,2), DEPTNO INT(2) ); -- where查询 语句 SELECT * from emp; SELECT * FROM DEPT; SELECT * FROM…

支持与不支持in-place操作的OpenCV函数汇总

支持In-Place操作cvSmoothCV_BLUR 、CV_GAUSSIAN支持,另三种不支持 cvDilate cvMorphologyEx对于“礼帽”和“黑帽”操作,in-place情况下,临时图像是必须的 cvFilter2D cvAdaptiveThreshold 备注在OpenCV官方文档中,函数中最后一…

微信接口请求次数_接口签名验证常用方案

前面的文章说了接口数据如何获取,今天就来聊聊接口数据的安全问题。说到接口加密验证,通常都称作“签名”,类似于名人的个性签名,让其它人无法模仿。比如说请求接口删除自己写的文章,又或者请求接口查询自己的帐单明细…

mysql009模糊查询like.是否为null

-- 创建EMP表 CREATE TABLE EMP ( EMPNO int(4) PRIMARY KEY, ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT(4), HIREDATE DATE, SAL DOUBLE(7,2), COMM DOUBLE(7,2), DEPTNO INT(2) ); -- where查询 语句 SELECT * from emp; -- 模糊查询 -- 搜索emp表中还有A的…

28335接两个spi设备_SPI浅析

01 SPI简介SPI,全称为Serial Peripheral interface,即串行外围设备接口。由摩托罗拉率先在产品上使用。SPI是一种高速全双工,同步(full duplex synchronous)的通信总线协议,且占用硬件端口只有4个(SO,SI, SCLK 和CSN),所以出于这…

mysql010函数使用.单行函数.多行函数

-- 函数使用 -- 1.单行函数 执行QSL语句时候 分别产生了一条记录影响的是多行。 -- 2.多行函数 执行QSL语句时候 只产生一条结果 -- 自己理解:多行函数,就是需要多条数据才能执行的结果。 -- max() min() sum() avg() count() SELECT ENAME,LOWER(E…

JS在线压缩

http://dean.edwards.name/packer/转载于:https://www.cnblogs.com/fery/p/4531804.html

java mongo 获取所有数据库_Spring Batch —从XML读取并写入Mongo

Java面试必备之JVMGC教程这几天闲着在优锐课的java学习必备中学习了,在本文中,了解如何使用Spring Batch通过StaxEventItemReader使用ItemReader读取XML文件并将其数据写入NoSQL。在本文中,我们将向展示如何使用Spring Batch使用StaxEventIte…

001多表查询.交叉链接cross JOIN.自然链接natural JOIN.using链接.on链接

-- 需求:查询每一个员工信息,并且显示每一个员工所在的部门名称 -- mysql中多表查询有四种,交叉链接cross JOIN,自然链接natural JOIN,using链接,on链接 -- 交叉链接cross JOIN SELECT * FROM emp; --6…