学生管理系统-面向对象版

1.学生管理系统代码分析

面向对象:编程思想.偷懒
对象=管理系统类()
对象.start()
----------------
管理系统类
类名:StudentMangerSystem
属性:
  所有学生信息
  学生列表=[]
  学生字典={‘学号’:一个学生对象,}
方法:增删改查  显示菜单信息

 学生:字典
 类名:student
 属性:
 姓名 name
 年龄 age
 性别 gender
 学生学号 std_id
方法:
__init__
__str__

面向对象开发的方式的一般方式

1.一个类作为一个 python 文件
2.定义一个 main.py 作为程序代码的启动文件
---------------------------
代码文件的组成:
student.py # 定义 Student类
main.py # 作为程序的启动代码

搭建框架代码

注意:这里需要使用三个python文件

1.运行代码(文件一)

import student_manger as sms

if __name__ == '__main__':
    stu_sms = sms.StudentManger()
    stu_sms.start()
  1. 管理系统类代码(文件二)

class StudentManger(object):
    def __init__(self):
        self.student_dict = {}

    @staticmethod
    def show_menu():
        print('1.添加学生')
        print('2.删除学生')
        print('3.修改学生信息')
        print('4.查询单个学生信息')
        print('5.查询所有的学生信息')
        print('6.退出系统')

    def start(self):
        while True:
            self.show_menu()
            opt = input('选择要进行的标号:')
            if opt == '1':
                print('1.添加学生')
                # insert_studet()
            elif opt == '2':
                print('2.删除学生')
                # stud_remove()
            elif opt == '3':
                # stud_modify()
                print('3.修改学生信息')
            elif opt == '4':
                print('4.查询单个学生信息')
                # stud_single()
            elif opt == '5':
                print('5.查询所有的学生信息')
                # show_all_stud()
            elif opt == '6':
                print('6.退出系统')
                break
            else:
                print('输入有误,请重新输入')
                continue
            input('-----请按回车键在进行操作-------')

3.学生属性(文件三)

class Student(object):
    def __init__(self, name, age, gender, std_id):
        self.name = name
        self.age = age
        self.gender = gender
        self.std_id = std_id

    def __str__(self):
        return f'学生姓名{self.name},年龄{self.age},性别{self.gender}'


if __name__ == '__main__':
    student = Student('小明', 12, '男', 1)
    print(student)

实现添加学生的功能

1.使用input 获取学生的信息
2.使用学生的信息,创建学生对象
3.将学生对象添加到字典中
import student


class StudentManger(object):
    def __init__(self):
        self.student_dict = {}

    @staticmethod
    def show_menu():
        print('1.添加学生')
        print('2.删除学生')
        print('3.修改学生信息')
        print('4.查询单个学生信息')
        print('5.查询所有的学生信息')
        print('6.退出系统')

    def insert_student(self):
        # 使用input获取学生信息
        std_id = input('输入学生的学号:')
        # 代码优化,判断学生信息是否存在,学号是否存在,判断字典key是否存在
        if std_id in self.student_dict:
            print('学生信息存在,不需要再次添加')
            return
        name = input('输入学生的名字:')
        age = input('输入学生的年龄:')
        gender = input('输入学生的性别:')
        # 使用学生信息,创建学生对象  学生类(参数)
        stu = student.Student(std_id, name, age, gender)
        # 将学生对象添加的字典中,字典['key']=数据值
        self.student_dict[std_id] = stu

    def remove(self):
        stu_id = input('输入学生学号:')
        if stu_id in self.student_dict:
            del self.student_dict[stu_id]
            print('学生已经删除')
        else:
            print('学生信息已经删除了')

    def modify_student(self):
        stu_id = input('输入学生的学号:')
        if stu_id in self.student_dict:
            # 修改对象的属性 对象.属性名=属性值
            stu = self.student_dict[stu_id]  # 字典[key]
            stu.age = input('请输入新的年龄:')
            stu.name = input('请输入新的名字:')
            print('信息修改完毕')
        else:
            print('学生信息不存在,无法删除')

    def search_student(self):
        stu_id = input('输入学号:')
        if stu_id in self.student_dict:
            stu = self.student_dict[stu_id]
            print(stu)
        else:
            print('学生信息不存在,无法删除')

    def show_all(self):
        for i in self.student_dict.values():
            print(i)

    def start(self):
        while True:
            self.show_menu()
            opt = input('选择要进行的标号:')
            if opt == '1':
                self.insert_student()
                # insert_studet()
            elif opt == '2':
                self.remove()
                # stud_remove()
            elif opt == '3':
                # stud_modify()
                self.modify_student()
            elif opt == '4':
                self.search_student()
            elif opt == '5':
                self.show_all()
            elif opt == '6':
                print('6.退出系统')
                break
            else:
                print('输入有误,请重新输入')
                continue
            input('-----请按回车键在进行操作-------')

保存

{'11':对象,'22':对象}
{'11':0*100,'22':0*200}
str({'11':0*100,'22':0*200}

把具体的学生信息保存到文件中
11,aa,,18,m
22,bb,16,f
for x in {}.values():
   pass

读取

读取文件,一行内容就是一个学生信息
readlines 读取所有行
将列表中的每一项数据转换位对象
Student(id,name,age,gender)
import student


class StudentManger(object):
    def __init__(self):
        self.student_dict = {}

    @staticmethod
    def show_menu():
        print('1.添加学生')
        print('2.删除学生')
        print('3.修改学生信息')
        print('4.查询单个学生信息')
        print('5.查询所有的学生信息')
        print('6.退出系统')

    def insert_student(self):
        # 使用input获取学生信息
        std_id = input('输入学生的学号:')
        # 代码优化,判断学生信息是否存在,学号是否存在,判断字典key是否存在
        if std_id in self.student_dict:
            print('学生信息存在,不需要再次添加')
            return
        name = input('输入学生的名字:')
        age = input('输入学生的年龄:')
        gender = input('输入学生的性别:')
        # 使用学生信息,创建学生对象  学生类(参数)
        stu = student.Student(std_id, name, age, gender)
        # 将学生对象添加的字典中,字典['key']=数据值
        self.student_dict[std_id] = stu

    def remove(self):
        stu_id = input('输入学生学号:')
        if stu_id in self.student_dict:
            del self.student_dict[stu_id]
            print('学生已经删除')
        else:
            print('学生信息已经删除了')

    def modify_student(self):
        stu_id = input('输入学生的学号:')
        if stu_id in self.student_dict:
            # 修改对象的属性 对象.属性名=属性值
            stu = self.student_dict[stu_id]  # 字典[key]
            stu.age = input('请输入新的年龄:')
            stu.name = input('请输入新的名字:')
            print('信息修改完毕')
        else:
            print('学生信息不存在,无法删除')

    def search_student(self):
        stu_id = input('输入学号:')
        if stu_id in self.student_dict:
            stu = self.student_dict[stu_id]
            print(stu)
        else:
            print('学生信息不存在,无法删除')

    def show_all(self):
        for i in self.student_dict.values():
            print(i)

    def save(self):
        f = open('student.txt', 'w', encoding='utf-8')
        for i in self.student_dict.values():
            f.write(str(i) + '\n')  # str(i) 调用student类中的方法
        f.close()

    def load_info(self):
        f = open('student.txt', 'r', encoding='utf-8')
        buf_list = f.readlines()
        for buf in buf_list:
            buf = buf.strip()  # 去除\n
            info_list = buf.split()  # 列表
            # 创建列表
            stu = student.Student(*info_list)
            # 将对象添加到字典中
            stu_id=info_list[0]
            self.student_dict[stu_id]=stu
        f.close()

    def start(self):
        while True:
            self.show_menu()
            opt = input('选择要进行的标号:')
            if opt == '1':
                self.insert_student()
                # insert_studet()
            elif opt == '2':
                self.remove()
                # stud_remove()
            elif opt == '3':
                # stud_modify()
                self.modify_student()
            elif opt == '4':
                self.search_student()
            elif opt == '5':
                self.show_all()
            elif opt == '6':
                print('6.退出系统')
                break
            else:
                print('输入有误,请重新输入')
                continue
            input('-----请按回车键在进行操作-------')

你可能感兴趣的:(python,pycharm,开发语言)