小项目---学员管理系统

完成学员管理系统

  • 1.最基本的增删改查
  • 2.实现模块化
  • 3.用面向对象进行编写
  • 4.将学员信息进行保存,保存文键student.data

面向对象的抽离

学生模块 ------- 操作系统模块------主函数模块


  • 学生模块
class Student():
    def __init__(self,name,gender,telphone):#添加外部属性 姓名,性别,电话号码
        #实例化属性
        self.name=name
        self.gender=gender
        self.telphone=telphone

    def __str__(self):#调用___str___()魔法方法,调用实例返回如下一些字符
        return f"{self.name},{self.gender},{self.telphone}"

  • 操作系统模块
from student import *


class StudentManager(object):
    def __init__(self):
        self.student_list = []

    def run(self):
        self.load_student()
        self.b = 0
        self.c = 0
        while True:
            if self.b == 0:
                self.show_func()

            if self.c == 0:
                fun_num = eval(input("请输入序号:"))
                print("-------------")
            else:
                self.fun_num = 7
                self.c = 0

            if fun_num == 1:  # 添加学员
                self.b = 1
                self.add_student()
                print("-------------")

            elif fun_num == 2:  # 删除学员
                self.b = 1
                self.del_student()
                print("-------------")

            elif fun_num == 3:  # 修改学员信息
                self.b = 1
                self.modify_student()
                print("-------------")

            elif fun_num == 4:  # 查询学员信息
                self.b = 1
                self.search_student()
                print("-------------")

            elif fun_num == 5:  # 显示所有学员信息
                self.b = 1
                self.show_student()
                print("-------------")

            elif fun_num == 6:  # 保存学员信息
                self.b = 1
                self.save_student()
                print("-------------")

            elif fun_num == 7:  # 退出系统
                self.s = input("是否退出系统:(Y.是,F.否):")
                if self.s == "F":
                    self.b = 0
                    print("-------------")
                    continue
                elif self.s == "Y":
                    print("-------------")
                    break
                else:
                    print("输入的字符不在范围内,请重新输入")
                    self.c = 1
                    self.b = 1
                    print("-------------")
                    continue



            elif fun_num == 8:  # 返回上一级
                self.b = 0
                continue
            else:
                print("输入的序号不在范围内,请重新输入!!!")
                self.b = 0
                print("-------------")
                continue
        print("系统已退出!")
        print("-------------")

    @staticmethod
    def show_func():
        print("请选择以下功能:")
        print("""************************************************
                 1:添加学员
                 2:删除学员
                 3:修改学员
                 4:查询学员
                 5:显示所有学员信息
                 6:保存学员信息
                 7:退出系统
                 8:返回主菜单""")
        print("*************************************************")

    def load_student(self):
        try:
            file = open('student.data', 'r', encoding='gbk')

        except:
            file = open('student.data', 'w', encoding='gbk')

        else:
            data = file.read()
            new_list = eval(data)  # 将字符串中的引号去了,就是字典
            self.student_list = [Student(i['name'], i['gender'], i['telphone']) for i in new_list]

        finally:
            file.close()


    def add_student(self):
        name = input("请输入学生姓名:")
        gender = input("请输入学生性别:")
        telphonge = input("请输入学生电话号码:")
        student = Student(name, gender, telphonge)
        self.student_list.append(student)#将实例添加到列表中
        # print(self.student_list)
        if len(name) >= 4 or name.isdigit():
            print("输入的名字不能超过4位,而且不能为数字")
        elif gender != '男' and gender != '女':
            print('性别输入有误')
        elif len(telphonge) != 11 or not telphonge.isdigit():
            return print("手机号码长度必须为11位,并且必须是纯数字")
        print(student)


    def del_student(self):  # 删除学员
        del_name = input("请输入你要删除的学员姓名:")
        for student in self.student_list:
            if del_name == student.name:
                self.student_list.remove(student)
                print("操作成功")
                break
        else:
            print("没有这个学员的姓名")
            print(self.student_list)


    def modify_student(self):  # 修改学员信息
        modify_name = input("请输入你要修改学员的姓名:")
        for student in self.student_list:
            if modify_name == student.name:
                student.name = input("姓名:")
                student.gender = input('性别:')
                student.telphone = input("电话号码:")
                print("操作成功:", student)
                break
            else:
                print("并没有这个学员!!!!")


    def search_student(self):
        search_name = input("请输入你要查找的学员姓名:")
        for student in self.student_list:
            if student.name == search_name:
                print(student)
                break
        else:
            print("并没有这个学员!!!")


    def save_student(self):
        file_name = open(r"student.data", 'w', encoding='gbk')
        new_list = [student.__dict__ for student in
                    self.student_list]  # student.__dict__ 是一个魔法方法 返回self.name:name(你输入的name)
        file_name.write(str(new_list))

        file_name.close()
        print("操作成功")


    def show_student(self):
        print("姓名\t性别\t手机号码")
        for student in self.student_list:
            print('{}\t{}\t*2{}'.format(student.name, student.gender, student.telphone))


  • 主函数模块
from 基础小项目.managersystem import *

if __name__ == '__main__':
    student_manager=StudentManager()
    student_manager.run()

运行效果:

D:\PycharmProjects\untitled11\venv\Scripts\python.exe D:/PycharmProjects/untitled11/基础小项目/main.py
请选择以下功能:
************************************************
                 1:添加学员
                 2:删除学员
                 3:修改学员
                 4:查询学员
                 5:显示所有学员信息
                 6:保存学员信息
                 7:退出系统
                 8:返回主菜单
*************************************************
请输入序号:1
-------------
请输入学生姓名:马云
请输入学生性别:男
请输入学生电话号码:15126459874
马云,,15126459874
-------------
请输入序号:5
-------------
姓名	性别	手机号码
任正非	男	*215198754712
柳传志	男	*215745693241
马云	男	*215232456321
马化腾	男	*215245678956
董明珠	女	*215245687423
马云	男	*215126459874
-------------
请输入序号:
4
-------------
请输入你要查找的学员姓名:并没有这个学员!!!
-------------
请输入序号:4
-------------
请输入你要查找的学员姓名:马化腾
马化腾,,15245678956
-------------
请输入序号:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值