py的学生管理系统(无数据库,基础语言)

面型对象开发的一般方式
1. 一个类作为一个python文件
2. 定义一个main.py作为程序代码的启动文件

代码文件的组成:
		student.py   # 定义Student类
		student_manager_system.py    # 定义管理系统类
		main.py    # 作为程序的启动代码
管理系统类
类名:StudentManagerSystem
属性:
		所有学生信息
		学生列表 = []
		学生字典 = {'学号':一个学生}
方法
		增删改查,显示菜单信息

学生:字典
类名:Student
属性:
		姓名 name
		性别 gender
		年龄 age
		学号 stu_id
方法:
		init
		str

搭建框架代码

import student_manager_system as sms


if __name__ == '__main__':
    stu_sms = sms.StudentManagerSystem()
    stu_sms.start()
# 定义学生类
class Student(object):
    def __init__(self, stu_id, name, age, gender):
        self.stu_id = stu_id
        self.name = name
        self.age = age
        self.gender = gender

    def __str__(self):
        return f'{self.stu_id},{self.name},{self.age},{self.gender}'


if __name__ == '__main__':
    stu = Student(1, 'aa', 18, 'm')
    print(stu)

import student as s


class StudentManagerSystem(object):
    def __init__(self):
        self.stu_dicts = {}

    # 菜单
    @staticmethod
    def __show_menu():
        print("欢迎使用学生信息管理系统")
        print("1.添加学生信息")
        print("2.删除学生信息")
        print("3.修改学生信息")
        print("4.查找相应的学生的信息")
        print("5.显示所有的学生的信息")
        print("6.退出系统")

    # 添加学生信息
    def __add_stu(self):
        stu_id = input('请输入学生学号:')
        for stu in self.stu_dicts.values():
            if stu_id in stu.stu_id:
                print(f'学号为{stu_id}的学生已存在,不能重复添加!')
                return
        name = input('请输入学生姓名:')
        age = int(input('请输入学生年龄:'))
        gender = input('请输入学生性别:')
        stu = s.Student(stu_id, name, age, gender)
        self.stu_dicts[stu_id] = stu
        print("完成添加学生")

    # 删除学生信息
    def __delete_stu(self):
        stu_id = int(input('请输入要删除学生的学号:'))
        if self.stu_dicts.pop(stu_id):
            print("完成删除")
        else:
            print('不能删除没有的学生的信息!!!')

    # 修改学生信息
    def __update_stu(self):
        stu_id = int(input('请输入要修改学生的学号:'))
        stu = self.stu_dicts.get(stu_id)
        if stu != 'None':
            name = input('请输入修改的姓名:')
            age = int(input('请输入修改的年龄:'))
            gender = input('请输入修改的性别:')
            stu.name = name
            stu.age = age
            stu.gender = gender
            self.stu_dicts[stu_id] = stu
            print("完成修改")
        else:
            print("没有这个学生,不能修改")

    # 查找单个学生信息
    def __search_stu(self):
        name = input('请输入要查找学生的姓名:')
        for stu in self.stu_dicts.values():
            if name in stu.name:
                print(stu)
                break
        else:
            print("找不到这个学生")

    # 查找所有学生信息
    def __show_all_stu(self):
        for stu in self.stu_dicts.values():
            print(f"学号:{stu.stu_id},姓名:{stu.name},年龄:{stu.age},性别:{stu.gender}")

    # 将所有学生信息保存到文件中
    def __save(self):
        f = open('student.txt', 'w', encoding='utf-8')
        for stu in self.stu_dicts.values():
            f.write(str(stu) + '\n')  # str(stu)  调用student的 __str__方法
        f.close()

    # 读取文件中所有学生的信息
    def __load_info(self):
        try:
            f = open('student.txt', 'r', encoding='utf-8')
        except FileNotFoundError:
            print('还没有学生信息呢')
            return
        buf_list = f.readlines()  # 这个时候列表中的每一项都是这个形式:1,a,12,m\n
        for buf in buf_list:
            info_list = buf.strip().split(',')  # 去掉\n,然后按照 ',' 来切割字符串
            # 创建对象
            stu = s.Student(*info_list)
            # 将对象添加到字典中
            stu_id = info_list[0]
            self.stu_dicts[stu_id] = stu
        f.close()

    def start(self):
        self.__load_info()
        while True:
            self.__show_menu()

            f = int(input('清按功能名输入相应的功能:'))
            if f == 1:
                self.__add_stu()
            elif f == 2:
                self.__delete_stu()
            elif f == 3:
                self.__update_stu()
            elif f == 4:
                self.__search_stu()
            elif f == 5:
                self.__show_all_stu()
            elif f == 6:
                self.__save()
                print('欢迎下次使用本系统')
                break
            else:
                print('请输入正确的功能按钮')
                continue
            input('按回车键继续......')


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值