个人主页→数据挖掘博主ZTLJQ的主页
个人推荐python学习系列:
☄️爬虫JS逆向系列专栏 - 爬虫逆向教学
☄️python系列专栏 - 从零开始学python
定义学生类
定义主类
添加用户的板块
搜索字典索引基本方法
删除方法
修改方法
显示所有信息的方法
退出系统
总成绩方法
平均成绩方法
最高成绩方法
最低成绩方法
主方法
总体代码
class Student:
def __init__(self, name, phone, wx, math, chinese, english):
self.name = name
self.phone = phone
self.wx = wx
self.math = math
self.chinese = chinese
self.english = english
class Student_main:
def __init__(self):
self.user_list = [
{'name': '张三', 'phone': '19912345678', 'wx': '123456789', 'math': '95', 'chinese': '78', 'english': '82'},
{'name': '李四', 'phone': '19922345678', 'wx': '223456789', 'math': '89', 'chinese': '62', 'english': '51'},
{'name': '王五', 'phone': '19932345678', 'wx': '323456789', 'math': '90', 'chinese': '87', 'english': '76'},
{'name': '赵六', 'phone': '19942345678', 'wx': '423456789', 'math': '66', 'chinese': '98', 'english': '99'}
]
def add_user(self):
"""
添加用户的板块
姓名规则:姓名不能重复
手机号规则:手机号必须是11位且不能重复
成绩规则:必须在0-99之间
:return:
"""
name = input('请输入姓名:')
# 判断姓名是不是重复
for i in self.user_list:
if i['name'] == name:
print('此姓名已重复')
return
phone = input('请输入手机号(11位手机号):')
# 判断手机号符不符合规则
for a in self.user_list:
if a['phone'] == phone:
print('此手机号已重复,请检查是否填写错误并重新进入进行填写')
return
elif len(phone) != 11:
print('此手机号不是11位不符合规则,请检查是否输入正确,并重新输入')
return
wx = input('请输入微信号:')
# 判断成绩符不符合规则
math = input('请输入数学成绩(0-99范围):')
if int(math) < 0 or int(math) > 99:
print('您输入的成绩不在范围0-99之间,请重新输入!')
return
chinese = input('请输入语文成绩(0-99范围):')
if int(chinese) < 0 or int(chinese) > 99:
print('您输入的成绩不在范围0-99之间,请重新输入!')
return
english = input('请输入英语成绩(0-99范围):')
if int(english) < 0 or int(english) > 99:
print('您输入的成绩不在范围0-99之间,请重新输入!')
return
user = {'name': name, 'phone': phone, 'wx': wx, 'math': math, 'chinese': chinese, 'english': english}
self.user_list.append(user)
print('添加成功!!')
print(self.user_list)
def check_index(self, i):
"""
搜索字典索引基本方法
原理规则:就是将字典进行排序 第一个字典序号就是从0 开始 也就是 姓名为张三 是序号0 姓名为李四是序号 1 以此类推
方便后续进行删除修改,直接输入序号进行筛选即可
:param i:
:return:
"""
if not i.isdigit():
print('您输入的数字不合法')
return False
index = int(i)
if index < 0 or index > len(self.user_list) - 1:
print('您输入的学生序号不在有效范围内')
return False
return True
def del_user(self):
"""
删除方法:用到之前check_index基本索引搜索方法
给字典进行索引排列 然后根据索引进行删除
:return:
"""
index = input('请输入要删除的学生序号(序号从0开始):')
if self.check_index(index):
index = int(index)
else:
return
ans = input('您是否真的要删除?(YES or NO):')
if ans.upper() == 'YES':
self.user_list.pop(index)
print('删除成功!!')
print(self.user_list)
def change_user(self):
"""
修改方法:用到之前check_index基本索引搜索方法
根据索引进行查找,然后进行修改
:return:
"""
index = input('请输入要修改的学生序号(序号从0开始):')
if self.check_index(index):
index = int(index)
else:
return
user = self.user_list[index]
print('您要修改的信息是:\n名字:{name} ,手机号:{phone} ,微信:{wx}, 数学成绩:{math}, 语文成绩:{chinese}, 英语成绩:{english}'.format(**user))
new_name = input('请输入新的名字:')
for i in self.user_list:
if i['name'] == new_name:
print('修改失败,新名字已存在')
return
new_phone = input('请输入新的手机号(11位手机号):')
for a2 in self.user_list:
if a2['phone'] == new_phone:
print('此手机号已重复,请检查是否填写错误并重新进入进行填写')
return
elif len(new_phone) != 11:
print('此手机号不是11位不符合规则,请检查是否输入正确,并重新输入')
return
new_wx = input('请输入新的微信号:')
new_math = input('请输入数学成绩(0-99范围):')
if int(new_math) < 0 or int(new_math) > 99:
print('您输入的成绩不在范围0-99之间,请重新输入!')
return
new_chinese = input('请输入语文成绩(0-99范围):')
if int(new_chinese) < 0 or int(new_chinese) > 99:
print('您输入的成绩不在范围0-99之间,请重新输入!')
return
new_english = input('请输入英语成绩(0-99范围):')
if int(new_english) < 0 or int(new_english) > 99:
print('您输入的成绩不在范围0-99之间,请重新输入!')
return
user['name'] = new_name
user['phone'] = new_phone
user['wx'] = new_wx
user['math'] = new_math
user['chinese'] = new_chinese
user['english'] = new_english
print('修改成功!!')
print(self.user_list)
def showall_user(self):
"""
显示所有信息的方法其实很简单;序号就使用enumerate方法进行排序给序号 其他就是遍历输出
:return:
"""
print('所有的学生信息是:')
print('序号 姓名 手机号 微信号 数学成绩 语文成绩 英语成绩')
for i, user in enumerate(self.user_list):
print(i, '\t' + '\t' + user['name'].ljust(5), '\t' + user['phone'], '\t' + user['wx'].ljust(10),
'\t' + '\t' + user['math'].ljust(5), '\t' + '\t' + user['chinese'].ljust(5),
'\t' + '\t' + user['english'].ljust(5))
def exit_sys(self):
"""
退出系统:就是使用到内置函数exit()结束整个代码的运行
:return:
"""
ans = input('请确认您是否要退出--(YES or NO):')
if ans.upper() == 'YES':
print('您已成功退出,欢迎下次继续使用!!!')
exit()
elif ans.upper() == 'NO':
print('返回主界面!!')
else:
print('您的输入有误,请输入yes或者no(大小写都可以)')
def all_score(self):
"""
原理简单
把所有的成绩进行相加,写一个for循环输出即可
:return:
"""
print('本学期每位同学的总成绩如下:')
for i in self.user_list:
allscore = int(i['math'])+int(i['chinese'])+int(i['english'])
print('姓名:{}'.format(i['name']),'总成绩:{}'.format(allscore))
def score_avg(self):
"""
原理很简单
把全部的成绩加起来,除以长度就可以了,最后结果保留2位小数
:return:
"""
print('本学期每位同学的平均成绩如下:')
for i in self.user_list:
allscore = int(i['math']) + int(i['chinese']) + int(i['english'])
score_avg = allscore / 3
print('姓名:{}'.format(i['name']),'平均成绩:%.2f' % score_avg)
def score_max(self):
"""
原理很简单
把每一科的科目成绩放入到列表当中,使用max函数进行筛选输出即可
:return:
"""
math_list = []
chinese_list = []
english_list = []
for i in self.user_list:
math_list.append(i['math'])
chinese_list.append(i['chinese'])
english_list.append(i['english'])
math_max = max(math_list)
chinese_max = max(chinese_list)
english_max = max(english_list)
print('下面是各个科目的最高分数:')
print('数学最高分是:{},语文最高分是:{},英语最高分是:{}'.format(math_max,chinese_max,english_max))
def score_min(self):
"""
原理很简单
把每一科的科目成绩放入到列表当中,使用min函数进行筛选输出即可
:return:
"""
math_list = []
chinese_list = []
english_list = []
for i in self.user_list:
math_list.append(i['math'])
chinese_list.append(i['chinese'])
english_list.append(i['english'])
math_min = min(math_list)
chinese_min = min(chinese_list)
english_min = min(english_list)
print('下面是各个科目的最高分数:')
print('数学最高分是:{},语文最高分是:{},英语最高分是:{}'.format(math_min, chinese_min, english_min))
def start(self):
"""
启动函数:使用while实现无限循环 然后使用条件判断来执行每一个具体函数
:return:
"""
while True:
print("""➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
学生管理系统
️
1.添加学生信息 5.查询学生的平均分
2.删除学生信息 6.查询各个科目最高分
3.修改学生信息 7.查询各个科目最低分
4.总体成绩信息 8.显示所有学生信息
END.退出系统
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
""")
operator = input('请输入要进行的操作(输入开头的数字或字母):')
# 添加名片内容
if operator == '1':
self.add_user()
elif operator == '2':
self.del_user()
elif operator == '3':
self.change_user()
elif operator == '4':
self.all_score()
elif operator == '5':
self.score_avg()
elif operator == '6':
self.score_max()
elif operator == '7':
self.score_min()
elif operator == '8':
self.showall_user()
elif operator == 'END':
self.exit_sys()
else:
print('输入有误,请重新输入...')
# 定义学生类
class Student:
def __init__(self, name, phone, wx, math, chinese, english):
self.name = name
self.phone = phone
self.wx = wx
self.math = math
self.chinese = chinese
self.english = english
class Student_main:
def __init__(self):
self.user_list = [
{'name': '张三', 'phone': '19912345678', 'wx': '123456789', 'math': '95', 'chinese': '78', 'english': '82'},
{'name': '李四', 'phone': '19922345678', 'wx': '223456789', 'math': '89', 'chinese': '62', 'english': '51'},
{'name': '王五', 'phone': '19932345678', 'wx': '323456789', 'math': '90', 'chinese': '87', 'english': '76'},
{'name': '赵六', 'phone': '19942345678', 'wx': '423456789', 'math': '66', 'chinese': '98', 'english': '99'}
]
def add_user(self):
"""
添加用户的板块
姓名规则:姓名不能重复
手机号规则:手机号必须是11位且不能重复
成绩规则:必须在0-99之间
:return:
"""
name = input('请输入姓名:')
# 判断姓名是不是重复
for i in self.user_list:
if i['name'] == name:
print('此姓名已重复')
return
phone = input('请输入手机号(11位手机号):')
# 判断手机号符不符合规则
for a in self.user_list:
if a['phone'] == phone:
print('此手机号已重复,请检查是否填写错误并重新进入进行填写')
return
elif len(phone) != 11:
print('此手机号不是11位不符合规则,请检查是否输入正确,并重新输入')
return
wx = input('请输入微信号:')
# 判断成绩符不符合规则
math = input('请输入数学成绩(0-99范围):')
if int(math) < 0 or int(math) > 99:
print('您输入的成绩不在范围0-99之间,请重新输入!')
return
chinese = input('请输入语文成绩(0-99范围):')
if int(chinese) < 0 or int(chinese) > 99:
print('您输入的成绩不在范围0-99之间,请重新输入!')
return
english = input('请输入英语成绩(0-99范围):')
if int(english) < 0 or int(english) > 99:
print('您输入的成绩不在范围0-99之间,请重新输入!')
return
user = {'name': name, 'phone': phone, 'wx': wx, 'math': math, 'chinese': chinese, 'english': english}
self.user_list.append(user)
print('添加成功!!')
print(self.user_list)
def check_index(self, i):
"""
搜索字典索引基本方法
原理规则:就是将字典进行排序 第一个字典序号就是从0 开始 也就是 姓名为张三 是序号0 姓名为李四是序号 1 以此类推
方便后续进行删除修改,直接输入序号进行筛选即可
:param i:
:return:
"""
if not i.isdigit():
print('您输入的数字不合法')
return False
index = int(i)
if index < 0 or index > len(self.user_list) - 1:
print('您输入的学生序号不在有效范围内')
return False
return True
def del_user(self):
"""
删除方法:用到之前check_index基本索引搜索方法
给字典进行索引排列 然后根据索引进行删除
:return:
"""
index = input('请输入要删除的学生序号(序号从0开始):')
if self.check_index(index):
index = int(index)
else:
return
ans = input('您是否真的要删除?(YES or NO):')
if ans.upper() == 'YES':
self.user_list.pop(index)
print('删除成功!!')
print(self.user_list)
def change_user(self):
"""
修改方法:用到之前check_index基本索引搜索方法
根据索引进行查找,然后进行修改
:return:
"""
index = input('请输入要修改的学生序号(序号从0开始):')
if self.check_index(index):
index = int(index)
else:
return
user = self.user_list[index]
print('您要修改的信息是:\n名字:{name} ,手机号:{phone} ,微信:{wx}, 数学成绩:{math}, 语文成绩:{chinese}, 英语成绩:{english}'.format(**user))
new_name = input('请输入新的名字:')
for i in self.user_list:
if i['name'] == new_name:
print('修改失败,新名字已存在')
return
new_phone = input('请输入新的手机号(11位手机号):')
for a2 in self.user_list:
if a2['phone'] == new_phone:
print('此手机号已重复,请检查是否填写错误并重新进入进行填写')
return
elif len(new_phone) != 11:
print('此手机号不是11位不符合规则,请检查是否输入正确,并重新输入')
return
new_wx = input('请输入新的微信号:')
new_math = input('请输入数学成绩(0-99范围):')
if int(new_math) < 0 or int(new_math) > 99:
print('您输入的成绩不在范围0-99之间,请重新输入!')
return
new_chinese = input('请输入语文成绩(0-99范围):')
if int(new_chinese) < 0 or int(new_chinese) > 99:
print('您输入的成绩不在范围0-99之间,请重新输入!')
return
new_english = input('请输入英语成绩(0-99范围):')
if int(new_english) < 0 or int(new_english) > 99:
print('您输入的成绩不在范围0-99之间,请重新输入!')
return
user['name'] = new_name
user['phone'] = new_phone
user['wx'] = new_wx
user['math'] = new_math
user['chinese'] = new_chinese
user['english'] = new_english
print('修改成功!!')
print(self.user_list)
def showall_user(self):
"""
显示所有信息的方法其实很简单;序号就使用enumerate方法进行排序给序号 其他就是遍历输出
:return:
"""
print('所有的学生信息是:')
print('序号 姓名 手机号 微信号 数学成绩 语文成绩 英语成绩')
for i, user in enumerate(self.user_list):
print(i, '\t' + '\t' + user['name'].ljust(5), '\t' + user['phone'], '\t' + user['wx'].ljust(10),
'\t' + '\t' + user['math'].ljust(5), '\t' + '\t' + user['chinese'].ljust(5),
'\t' + '\t' + user['english'].ljust(5))
def exit_sys(self):
"""
退出系统:就是使用到内置函数exit()结束整个代码的运行
:return:
"""
ans = input('请确认您是否要退出--(YES or NO):')
if ans.upper() == 'YES':
print('您已成功退出,欢迎下次继续使用!!!')
exit()
elif ans.upper() == 'NO':
print('返回主界面!!')
else:
print('您的输入有误,请输入yes或者no(大小写都可以)')
# 以下是成绩系统函数
def all_score(self):
"""
原理简单
把所有的成绩进行相加,写一个for循环输出即可
:return:
"""
print('本学期每位同学的总成绩如下:')
for i in self.user_list:
allscore = int(i['math'])+int(i['chinese'])+int(i['english'])
print('姓名:{}'.format(i['name']),'总成绩:{}'.format(allscore))
def score_avg(self):
"""
原理很简单
把全部的成绩加起来,除以长度就可以了,最后结果保留2位小数
:return:
"""
print('本学期每位同学的平均成绩如下:')
for i in self.user_list:
allscore = int(i['math']) + int(i['chinese']) + int(i['english'])
score_avg = allscore / 3
print('姓名:{}'.format(i['name']),'平均成绩:%.2f' % score_avg)
def score_max(self):
"""
原理很简单
把每一科的科目成绩放入到列表当中,使用max函数进行筛选输出即可
:return:
"""
math_list = []
chinese_list = []
english_list = []
for i in self.user_list:
math_list.append(i['math'])
chinese_list.append(i['chinese'])
english_list.append(i['english'])
math_max = max(math_list)
chinese_max = max(chinese_list)
english_max = max(english_list)
print('下面是各个科目的最高分数:')
print('数学最高分是:{},语文最高分是:{},英语最高分是:{}'.format(math_max,chinese_max,english_max))
def score_min(self):
"""
原理很简单
把每一科的科目成绩放入到列表当中,使用min函数进行筛选输出即可
:return:
"""
math_list = []
chinese_list = []
english_list = []
for i in self.user_list:
math_list.append(i['math'])
chinese_list.append(i['chinese'])
english_list.append(i['english'])
math_min = min(math_list)
chinese_min = min(chinese_list)
english_min = min(english_list)
print('下面是各个科目的最高分数:')
print('数学最高分是:{},语文最高分是:{},英语最高分是:{}'.format(math_min, chinese_min, english_min))
def start(self):
"""
启动函数:使用while实现无限循环 然后使用条件判断来执行每一个具体函数
:return:
"""
while True:
print("""➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
学生管理系统
️
1.添加学生信息 5.查询学生的平均分
2.删除学生信息 6.查询各个科目最高分
3.修改学生信息 7.查询各个科目最低分
4.总体成绩信息 8.显示所有学生信息
END.退出系统
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
""")
operator = input('请输入要进行的操作(输入开头的数字或字母):')
# 添加名片内容
if operator == '1':
self.add_user()
elif operator == '2':
self.del_user()
elif operator == '3':
self.change_user()
elif operator == '4':
self.all_score()
elif operator == '5':
self.score_avg()
elif operator == '6':
self.score_max()
elif operator == '7':
self.score_min()
elif operator == '8':
self.showall_user()
elif operator == 'END':
self.exit_sys()
else:
print('输入有误,请重新输入...')
if __name__ == '__main__':
St = Student_main()
St.start()