Python实战—学生管理系统

该实例是对学生信息进行增删改查的功能。

#coding:utf-8

'''
    2020/9/4  
    面向对象
    最简单的函数式编程实现学生管理系统的基本功能
'''

from datetime import datetime

#模拟数据
data_stu=[
    {
        'id':2015001,
        'name':'王语嫣',
        'sex':'女',
        'address':'渝北',
        'birthday':'19980101'
    },
    {
        'id': 2015002,
        'name': '冯宝宝',
        'sex': '女',
        'address': '合川',
        'birthday':'19991010'
    },
    {
        'id': 2015003,
        'name': '王俊凯',
        'sex': '男',
        'address': '渝中',
        'birthday':'19981201'
    },
    {
        'id': 2015004,
        'name': '皮卡丘',
        'sex': '女',
        'address': '上海',
        'birthday':'20000101'
    },
    {
        'id': 201505,
        'name': '托马斯',
        'sex': '男',
        'address': '欧美',
        'birthday':'20011212'
    },
    {
        'id': 201505,
        'name': 'kiki',
        'sex': '男',
        'address': '欧美',
        'birthday': '20011212'
    }
]


#学生类
class Student:
    #学生初始化
    def __init__(self,name,sex,address,birthday):
        self.name=name
        self.sex=sex
        self.address=address
        self.birthday=birthday

    # 获取学生年龄
    def get_age(self):
        #获取现在的年份
        this_year=datetime.now().year
        age = this_year - int(self.birthday[:4])
        return age

#学生管理系统类
class Student_System:
    #初始化
    def __init__(self,name):
        self.name=name
        self.data=[]

    #美化输出打印学生信息,enumerate()是索引序列
    def beauty_print(self,data_list):
        for index,stu in enumerate(data_list):
            print('序号:{}'.format(index), end='\t')
            print('姓名:{:5}'.format(stu.name),end='\t')
            #{:2}代表性别占2格
            print('性别:{:2}'.format(stu.sex), end='\t')
            print('地址:{}'.format(stu.address),end='\t')
            print('年龄:{}'.format(stu.get_age()), end='\t')
            print('生日:{}'.format(stu.birthday))

    #加载数据
    def load_stuinfo(self):
        for i in data_stu:
            stu_info=Student(i['name'],i['sex'],i['address'],i['birthday'])
            self.data.append(stu_info)

    #启动学生管理系统
    def start_sys(self):
        #在系统启动时,先加载数据
        self.load_stuinfo()
        while True:
            self.show_menu()
            op=input('选择操作:')
            if op=='1':
               self.show_all_stu_info()
            elif op=='2':
                self.create_stu_info()
            elif op == '3':
                self.find_stu_info()
            elif op=='4':
                self.modify_stu_info()
            elif op=='5':
                self.remove_stu()
            elif op=='0':
                print('退出程序')
                break
            else:
                print('请输入正确的操作')

    #显示菜单
    def show_menu(self):
        print('''
           *****************************
               欢迎使用[{}]V1.0
                   1.显示所有学生信息
                   2.新建学生信息
                   3.查询学生信息
                   4.修改学生信息
                   5.删除学生信息
                   0.退出系统
           *****************************
           '''.format(self.name))

    #选性别的方法
    def choose_sex(self):
        sex=input('选择性别:(1.男|2.女)').strip()
        if sex=='1':
            return '男'
        elif sex=='2':
            return '女'
        else:
            return '未知'
    #校验姓名不能为空和只输入空格
    def input_name(self):
        while True:
            #去掉首尾空格
            name=input('请输入姓名:').strip()
            if name:
                return name
            else:
                continue
    #根据名字查询学生
    def find_stu_by_name(self):
        name=self.input_name()
        find_list=[]
        for stu in self.data:
            if name.lower() in stu.name.lower():
                find_list.append(stu)
        if find_list:
            return find_list
        else:
            print('没有找到此学生!')


    # 1.查询所有学生信息
    def show_all_stu_info(self):
        #这里需要[stu_info]因为stu_info不是列表,是对象
        self.beauty_print(self.data)
    # 2.新建学生信息:
    def create_stu_info(self):
        name=self.input_name()
        sex=self.choose_sex()
        address=input('请输入地址:')
        birthday=input('请输入生日:')
        stu=Student(name,sex,address,birthday)
        self.data.append(stu)
    # 3.查询学生信息
    def find_stu_info(self):
        find_list=self.find_stu_by_name()
        self.beauty_print(find_list)
    # 4.修改学生信息
    def modify_stu_info(self):
        find_list=self.find_stu_by_name()
        if find_list:
            self.beauty_print(find_list)
            index=int(input('请选择修改的序号:'))
            #判断序号是否在查询的学生信息中
            if index < len(find_list):
                stu = find_list[index]
                print('当前修改的是:')
                self.beauty_print([stu])
                name = input('输入修改的姓名:').strip()
                sex = self.choose_sex()
                birthday = input('输入修改的生日:')
                if name:
                    stu.name = name
                if sex:
                    stu.sex = sex
                if birthday:
                    stu.birthday = birthday
            else:
                print('你输入的序号不存在!')
    # 5.删除学生信息
    def remove_stu(self):
        find_list=self.find_stu_by_name()
        if find_list:
            self.beauty_print(find_list)
            index=int(input('选择删除的序号:'))
            if index < len(find_list):
                print('当前要删除的是:')
                stu=find_list[index]
                self.beauty_print([stu])
                self.data.remove(stu)
            else:
                print('您选择的序号不存在!!!')


if __name__ == '__main__':
    stu_sys=Student_System('快乐成员信息系统')
    stu_sys.start_sys()

学习视频:https://www.bilibili.com/video/BV1BJ411p7Pv?t=3002&p=27

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值