美文网首页Python
Python3 & ⾯向对象案例(学生管理系统)

Python3 & ⾯向对象案例(学生管理系统)

作者: 乘风破浪的姐姐 | 来源:发表于2020-11-30 18:18 被阅读0次

使⽤⾯向对象编程思想完成学生管理系统的开发,具体需求如下:
系统要求:学生数据存储在指定⽂件中
系统功能:添加学生、删除学生、修改学生信息、查询学生信息、显示所有学生信息、保存学生信息及退出系统等功能。

1、准备文件
创建项目目录:学生管理系统
需要py文件:
程序⼊⼝⽂件:Main.py
学员⽂件:Student.py
管理系统⽂件:StudentManager.py


image.png

2、代码实现
Main.py 为项目运行入口

from StudentManager import *
if __name__ == '__main__':
    studentManager = StudentManager()
    studentManager.run()

Student.py
学生信息包含:姓名、性别、⼿机号;所以在初始化方法中设置属性
添加 str 魔法⽅法,⽅便查看学生对象信息

class Student():
    def __init__(self,name,sex,phone):
        self.name = name
        self.sex = sex
        self.phone = phone

    def __str__(self):
        return f"{self.name},{self.sex},{self.phone}"

StudentManager.py用于实现对学生的各种操作

from  Student import *

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

    @staticmethod
    def menu():
        print('请选择如下功能-----------------')
        print('1:添加学员')
        print('2:删除学员')
        print('3:修改学员信息')
        print('4:查询学员信息')
        print('5:显示所有学员信息')
        print('6:保存学员信息')
        print('7:退出系统')

    def run(self):
        self.load_student()
        while True:
            self.menu()
            number = int(input("输入你要选择的菜单序号:"))
            if number == 1:
                self.add_student()
            elif number == 2:
                self.delete_student()
            elif number ==3:
                self.update_student()
            elif number == 4:
                self.search_student()
            elif number == 5:
                self.show_all()
            elif number ==6:
                self.save_student()
            elif number == 7:
                break

    def add_student(self):
        name = input("请输入学生姓名:")
        sex = input("请输入学生性别:")
        phone = input("请输入学生电话:")
        for s in self.student_list:
            if s.phone == phone :
                print("该学生已存在~")
                break
        else:
            ss = Student(name, sex, phone)
            self.student_list.append(ss)



    def update_student(self):
        name = input("请输入学生姓名:")
        for ss in self.student_list:
            if name == ss.name:
                ss.sex = input("请输入学生性别:")
                ss.phone = input("请输入学生电话:")
                print(f"修改学生{name}的性别为{ss.sex},电话为{ss.phone}")
                break
        else:
            print("查无此人~")

    def delete_student(self):
        name = input("请输入要删除的学生姓名:")
        for ss in self.student_list:
            if name == ss.name:
                self.student_list.remove(ss)
                break
        else:
            print("查无此人~")

    def search_student(self):
        name = input("请输入要查询的学生姓名:")
        for ss in self.student_list:
            if name == ss.name:
                print(f"学生{name}的性别为{ss.sex},电话为{ss.phone}")
                break
        else:
            print("查无此人~")

    def show_all(self):
        print("姓名\t性别\t电话")
        for ss in self.student_list:
            print(f"{ss.name}\t{ss.sex}\t{ss.phone}")

    def save_student(self):
        file = open("student.txt",'w')

        #方法一
        for ss in self.student_list:
            file.write(str(ss.__dict__)+"\n")

        # 方法二 ⽂件写⼊的数据不能是学员对象的内存地址,需要把学员数据转换成列表字典数据再做存储
        # data_list = [s.__dict__  for s in self.student_list]
        # print(data_list)
        #⽂件内数据要求为字符串类型,故需要先转换数据类型为字符串才能⽂件写⼊数据
        # file.write(str(data_list))

        file.close()

    def load_student(self):
        try:
            file = open("student.txt","r")
        except:
            file = open("student.txt","w")
        else:
            data = file.read()
            if len(data)>0:
                stu_list = eval(data)
                self.student_list = [Student(i['name'],i['sex'],i['phone'])  for i in stu_list]
            else:
                self.student_list =[]
        finally:
            file.close()

相关文章

网友评论

    本文标题:Python3 & ⾯向对象案例(学生管理系统)

    本文链接:https://www.haomeiwen.com/subject/ergniktx.html