学生管理系统——python面向对象版(无数据库)

需求:

1. 先打印提示界面(1-6的数字), 让用户选择他/她要进行的操作.
2. 当用户选择1的时候, 实现操作: 添加学生(学生编号, 学生姓名, 手机号).
3. 当用户选择2的时候, 实现操作: 删除学生(根据编号删除)
4. 当用户选择3的时候, 实现操作: 修改学生信息(只能改姓名, 手机号)
5. 当用户选择4的时候, 实现操作: 查询单个学生信息(根据id查)
6. 当用户选择5的时候, 实现操作: 查询所有学生信息
7. 当用户选择6的时候, 实现操作: 退出系统

分析:

1一共有几个类?

学生类:里面包含三个学生属性:学生编号, 学生姓名, 手机号

操作类:里面包含方法增加学生,删除学生,修改学生,查询学生,展示所有学生,以及退出系统六个方法。

Main类:为使逻辑更清晰,定义一个类专门用来运行。

相关知识:

把每一条学生数据作为一个对象保存在列表中,使用列表嵌套对象保存所有数据

类方法:在方法内部,只需要对于类属性和类方法进行调用,而不需要使用到实例属性和实例方法

静态方法:在方法中,不需要使用实例也不需要使用类的情况下,可以将方法写成静态方法

注意:for...else...的使用

代码:

(没有做输入合法值判断,代码中手机号换成了年龄)

学生类:

#学生类
class Student(object):
    def __init__(self, student_id, student_name, student_age):
        self.student_id = student_id
        self.student_name = student_name
        self.student_age = student_age

    def __str__(self):
        return f"学生id:{self.student_id},姓名:{self.student_name},年龄:{self.student_age}"

操作类:

#操作类
from Student import Student


class Management(object):
    list_stu = []

    @staticmethod
    def first_page():
        print("""
1.添加学生(学生编号, 学生姓名, 年龄)
2.删除学生(根据编号删除)
3.修改学生信息(只能改姓名, 年龄)
4.查询单个学生信息(根据id查)
5.查询所有学生信息
6.退出系统
        """)

    @classmethod
    def choose_option(cls, option):
        if option == "1":
            cls.add_student()
        elif option == "2":
            cls.delete_student()
        elif option == "3":
            cls.modify_student()
        elif option == "4":
            cls.search_student()
        elif option == "5":
            cls.show_student()
        else:
            cls.log_out()

    @classmethod
    def add_student(cls):
        s_id = input("请输入学生编号:")
        # 判断id是否存在
        for stu_info in cls.list_stu:
            if stu_info.student_id == s_id:
                print("该学生ID已经存在")
                break
        # 这个else为什么在这里?
        else:
            s_name = input("请输入学生姓名:")
            s_age = input("请输入学生年龄:")
            new_stu = Student(s_id, s_name, s_age)
            cls.list_stu.append(new_stu)

    # Management.add_student()
    # print(Management.list_stu)
    @classmethod
    def delete_student(cls):
        s_id = input("请输入学生编号:")
        for stu_info in cls.list_stu:
            if stu_info.student_id == s_id:
                cls.list_stu.remove(stu_info)
                break
        else:
            print("输入有误")

    @classmethod
    def modify_student(cls):
        s_id = input("请输入学生编号:")
        # 判断id是否存在
        for stu_info in cls.list_stu:
            if stu_info.student_id == s_id:
                # 修改对象的属性值
                stu_info.student_name = input("请输入学生姓名:")
                stu_info.student_age = input("请输入学生年龄:")
                break
        # 找不到ID
        else:
            print("找不到该学生!")

    @classmethod
    def search_student(cls):
        s_id = input("请输入学生编号:")
        # 判断id是否存在
        for stu_info in cls.list_stu:
            if stu_info.student_id == s_id:
                print(f"学生id:{stu_info.student_id},姓名:{stu_info.student_name},年龄:{stu_info.student_age}")
                break
        # 找不到ID
        else:
            print("输入有误,找不到该学生!")

    @classmethod
    def show_student(cls):
        for stu_info in cls.list_stu:
            print(stu_info)

    @staticmethod
    def log_out():
        exit()

Main类:

from Management import Management


class Main(object):
    @staticmethod
    def run():
        while True:
            Management.first_page()
            option = input("请输入选项:")
            Management.choose_option(option)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值