该实例是对学生信息进行增删改查的功能。
#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