Python学员管理系统
创始人
2024-04-28 05:28:24

一.系统需求

系统要求:

        张三想要使用Python语言做一个学员管理系统程序,使用面向对象编程思想完成学生信

息管理系统的开发,涉及到的属性有姓名、性别、年龄、手机号、学科A成绩、学科B成绩和总成

绩。张三目前只会添加学生信息和查询某个学生信息,缺少查询全部、保存、删除、修改四个基础

功能,除此之外,张三还有统计总成绩和计算平均分扩展功能。

张三已有的功能:

(1)添加学生信息:

        输入要添加的学生的姓名、性别、年龄、手机号、学科A成绩、学科B成绩,临时保存到

列表中。

(2)查询学生信息:

        输入的目标学生姓名,如果学生存在,输出该学员所有信息;如果不存在,返回错误。

(3)加载学员信息:

        每次进入该系统,自动加载文件保存的数据。

缺少的基础功能:

(1)查询所有学生信息

(2)保存学生信息

(3)删除学生信息

(4)修改学生信息

缺少的扩展功能:

        统计每个学生的总成绩,计算学科A和学科B的平均分

二.准备程序文件

创建项⽬⽬录,例如: StudentManagerSystem

程序⽂件如下:

程序⼊⼝⽂件: main.py

学员⽂件: student.py

管理系统⽂件: managerSystemDemo.py

三.参考代码

main.py

from managerSystem import *  # 导⼊入managerSystem模块if __name__ == '__main__':  # 启动学员管理理系统student_manager = StudentManager()student_manager.run()

student.py

class Student(object):def __init__(self, name, gender, tel, age,scores):self.name = nameself.gender = genderself.tel = telself.age = ageself.scores = scoresself.all_score = ""def __str__(self):return f'{self.name}, {self.gender}, {self.tel}, {self.age},{self.scores},{self.all_score}'

managerSystemDemo.py 

from student import *  # 导⼊入student模块class StudentManager(object):def __init__(self):self.student_list = []  # 建立一个存储数据用的列表def run(self):  # 程序入口函数self.load_student()  # 加载学员信息while True:self.show_menu()  # 显示功能菜单menun_num = int(input("请输入您需要的功能序号:"))  # 用户输入功能序号# 根据输入的序号,执行不同的功能if menun_num == 1:  # 添加学员self.add_student()self.save_student()elif menun_num == 2:  # 查询学员信息self.search_student()elif menun_num == 3:  # 显示所有学员信息self.show_student()elif menun_num == 4:  # 保存学员信息self.save_student()elif menun_num == 5:  # 删除学员self.del_student()self.save_student()elif menun_num == 6:  # 修改学员信息self.modify_student()self.save_student()elif menun_num == 7:  # 统计成绩self.data_statistic()elif menun_num == 8:  # 退出系统break# 定义功能函数def show_menu(self):  # 显示功能菜单print("请选择如下功能------------")print("1:添加学员")print("2:查询学员信息")print("3:显示所有学员")print("4:保存学员信息")print("5:信息删除学员")print("6:修改学员信息")print("7:统计成绩")print("8:退出系统")def add_student(self):  # 添加学员# 用户输⼊姓名、性别、手机号、年龄name = input("请输入您的姓名")gender = input("请输入您的性别")tel = input("请输入您的手机号")age = input("请输入您的年龄")scores = []score1 = input('请输入学科A成绩:')score2 = input('请输入学科B成绩:')scores.append(score1)scores.append(score2)student = Student(name, gender, tel, age, scores)  # 创建学员对象self.student_list.append(student)  # 将该学员对象添加到列表print(self.student_list)  # 打印信息print(student)  # 打印信息def del_student(self):  # 删除学员del_name = input('请输⼊要删除的学员姓名:')  # 用户输入目标学员姓名# 如果用户输入的目标学员存在则删除,否则提示学员不不存在for i in self.student_list:  # 遍历学生信息列表if i.name == del_name:  # 查找学生是否存在self.student_list.remove(i)  # 删除学生信息breakelse:print("查无此人!")print(self.student_list)  # 打印学生列表,验证删除功能def modify_student(self):  # 修改学员信息modify_name = input('请输⼊要修改的学员的姓名:')  # 用户输入目标学员姓名# 如果用户输入的目标学员存在,则修改信息,否则提示学员不存在for i in self.student_list:  # 遍历学生信息列表if i.name == modify_name:  # 查找学生是否存在# 更改学员信息i.name = input('请输⼊学员姓名:')i.gender = input('请输⼊学员性别:')i.tel = input('请输⼊学员手机号:')i.age = input('请输入学员年龄:')scores = []score1 = input('请输入学科A成绩:')score2 = input('请输入学科B成绩:')scores.append(score1)scores.append(score2)print(f'姓名:{i.name}, 性别:{i.gender}, 手机号:{i.tel}, 年龄:{i.age}, 成绩A:{i.scores[0]}, 成绩B:{i.scores[0]}')  # 打印学生信息,验证是否更改成功breakelse:print('查无此人!')def search_student(self):  # 查询学员信息search_name = input('请输⼊要查询的学员的姓名:')  # 用户输入目标学员姓名# 如果用户输入的目标学员存在,则打印学员信息,否则提示学员不存在for i in self.student_list:  # 遍历学生信息列表if i.name == search_name:  # 查找学生是否存在print(f'姓名:{i.name}, 性别:{i.gender}, 手机号:{i.tel}, 年龄:{i.age}, 成绩A:{i.scores[0]}, 成绩B:{i.scores[0]}')  # 打印学员信息breakelse:print('查无此⼈!')def show_student(self):  # 显示所有学员信息print('姓名\t性别\t\t手机号\t年龄\t\t学科A成绩\t\t学科B成绩')  # 打印信息名称for i in self.student_list:  # 遍历学生信息列表print(f'{i.name}\t{i.gender}\t\t{i.tel}\t\t{i.age}\t\t{i.scores[0]}\t\t\t{i.scores[0]}')  # 打印学员信息def save_student(self):  # 保存学员信息f = open('student.data', 'w', encoding='utf-8')  # 打开文件new_list = [i.__dict__ for i in self.student_list]  # 将学员数据转换成列表字典数据print(new_list)  # 打印信息f.write(str(new_list))  # 转换成字符串,存入文档f.close()  # 关闭文件def load_student(self):  # 加载学员信息# 尝试以"r"模式打开数据文件,文件不存在则提示用户;文件存在(没有异常)则读取数据try:f = open('student.data', 'r', encoding='utf-8')except:f = open('student.data', 'w', encoding='utf-8')else:data = f.read()  # 读取数据# 转换数据类型,再转换为字典为对象后存储到学员列表new_list = eval(data)self.student_list = [Student(i['name'], i['gender'], i['tel'], i['age'], i['scores']) for i in new_list]finally:f.close()  # 关闭文件def data_statistic(self):scoresA = 0scoresB = 0sum = 0count = 0print('姓名\t\t学科A成绩\t\t学科B成绩\t\t总成绩')  # 打印信息名称for i in self.student_list:  # 遍历学生信息列表count = count + 1scoresA = scoresA + int(i.scores[0])scoresB = scoresB + int(i.scores[1])sum = int(i.scores[0]) + int(i.scores[1])print(f'{i.name}\t\t{i.scores[0]}\t\t{i.scores[1]}\t\t\t{sum}')print('学科A平均成绩\t\t学科B平均成绩')  # 打印信息名称print(f'{scoresA / count}\t\t\t{scoresB / count}')

 

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...