news 2026/5/4 3:18:40

1. 面向对象特性代码实现之学生管理系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
1. 面向对象特性代码实现之学生管理系统

需求分析:

1. 需求:




2. 分析:







3. 代码实现:

1.student.py

# 学生类,属性信息:姓名、性别、年龄、手机号、描述信息# 1.定义学生类:classStudent:# 2.定义魔法方法初始化属性信息:def__init__(self,name,gender,age,phone,desc):self.name=name self.gender=gender self.age=age self.phone=phone self.desc=desc# 3.定义魔法方法打印学生信息:def__str__(self):returnf"学生姓名:{self.name}, 性别:{self.gender}, 年龄:{self.age}, 手机号:{self.phone}, 描述信息:{self.desc}"# 4.测试if__name__=='__main__':s=Student("乔峰",'男',38,'15467823456','丐帮帮主')print(s)

2. studentcms.py

# 该文件用于 完成学生管理系统的 具体业务操作,即 增删改查,保存学生信息等# 导包fromreimportsearchfromstudentimportStudentimporttime# 1.创建学生管理系统类classStudentCMS(object):# 2. 通过魔法方法 init 初始化属性信息def__init__(self):# 创建一个空列表,用于存储学生信息self.stu_list=[]#[学生对象, 学生对象, ..]# 测试数据# self.stu_list = [# Student("乔峰",'男',38,'15467823456','丐帮帮主'),# Student("乔峰2",'男',38,'15467823456','丐帮帮主2'),# Student("乔峰3",'男',38,'15467823456','丐帮帮主3')# ]# 3. 定义函数,实现打印 管理系统的界面:因为该方法中没有使用self,# 可以把改方法定义为静态方法即去掉self参数,加上@staticmethod;# start方法中调用时由 self.show_view() ——> StudentCMS.show_view()@staticmethoddefshow_view():# def show_view(self):print('*'*23)print("学生管理系统v2.0版")print("\t1.添加学生信息")print("\t2.删除学生信息")print("\t3.修改学生信息")print("\t4.查询单个学生信息")print("\t5.查询所有学生信息")print("\t6.保存学生信息")print("\t0.退出系统")print('*'*23)# 4.定义函数,实现添加学生信息defadd_student(self):# 4.1 提示用户输入要添加的学生信息并接收name=input("请输入学生姓名:")gender=input("请输入学生性别:")age=input("请输入学生年龄:")phone=input("请输入学生电话:")desc=input("请输入学生描述信息:")# 4.2 把上述信息封装成学生对象stu=Student(name,gender,age,phone,desc)# 4.3 把学生对象添加到列表self.stu_list.append(stu)# 4.4 提示print(f"添加{name}学生信息成功!")# 5.定义函数,实现删除学生信息defdel_student(self):# 5.1 提示用户输入要删除的学生信息并接收del_name=input("请输入要删除的学生姓名:")# 5.2 遍历列表找到要删除的学生并删除forstuinself.stu_list:ifstu.name==del_name:self.stu_list.remove(stu)print(f"学生{del_name}信息删除成功!\n")breakelse:print("查无此人,请检查后重新删除!\n")# 6.定义函数,实现修改学生信息defupdate_student(self):# 6.1 提示用户输入要修改的学生信息并接收upd_name=input("请输入要修改的学生姓名:")# 6.2 遍历列表找到要修改的学生并修改forstuinself.stu_list:ifstu.name==upd_name:stu.age=int(input("请输入修改后的年龄:"))stu.gender=input("请输入修改后的性别:")stu.phone=input("请输入修改后的电话:")stu.desc=input("请输入修改后的描述信息:")print(f"学生{upd_name}信息修改成功!\n")breakelse:print("查无此人,请检查后重新修改!\n")# 7.定义函数,实现查询单个学生信息defsearch_one_student(self):# 7.1 提示用户输入要查找的学生信息并接收search_name=input("请输入要查找的学生姓名:")# 7.2 遍历列表找到要查找的学生forstuinself.stu_list:ifstu.name==search_name:print(stu,end="\n\n")breakelse:print("查无此人,请检查后重新查找!\n")# 8.定义函数,实现查询所有学生信息defsearch_all_student(self):# 8.1 判断长度是否为0:如果为0,提示:暂无学生信息,请添加后查询iflen(self.stu_list)==0:print("暂无学生信息,请添加后查询!\n")else:# 8.2 如果长度不为0:遍历列表,打印所有学生信息forstuinself.stu_list:print(stu)print()# 为了格式好看,添加换行# 9.定义函数,实现保存学生信息defsave_student(self):# 9.1 关联 学生信息文件:withopen('./stu_data.txt','w',encoding='utf-8')asfile:# 9.2 将对象列表转成字典列表:[学生对象, 学生对象, 学生对象] ——> [字典, 字典, 字典]stu_dict=[stu.__dict__forstuinself.stu_list]# 9.3 把字典列表持久化到文件中file.write(str(stu_dict))# 先转成字符串在写入# 10.定义函数,实现加载学生信息defload_student(self):# 10.1 加入异常处理,文件可能不存在try:# 10.2 关联学生信息文件:withopen('./stu_data.txt','r',encoding='utf-8')asfile:# 10.3 一次性读取所有数据stu_data=file.read()#'[字典, 字典, 字典...]'# 10.4 把上述字符串转为列表stu_list=eval(stu_data)#''# 10.5 判断如果列表为空,就赋予空列表iflen(stu_list)==0:stu_list=[]# 10.6 '把字典列表转成对象列表':把stu_list(列表字典) 转成 [学生对象, 学生对象,..], 并赋值给self.stu_listself.stu_list=[Student(**stu_dict)forstu_dictinstu_list]except:# 文件不存在时,新建withopen('./stu_data.txt','r',encoding='utf-8')asfile:pass# 11.定义函数,跑通上述业务逻辑defstart(self):# 11.1 加载学生信息self.load_student()# 11.2 死循环whileTrue:# 11.3 为了效果更明显,加入休眠(延迟)time.sleep(1)# 11.4 打印学生管理系统的界面# self.show_view()StudentCMS.show_view()# 11.5 提示用户输入要操作的编号并接收input_num=input("请输入要操作的编号:")# 11.6 根据编号做不同的操作ifinput_num=='1':# print("添加学生信息\n")self.add_student()elifinput_num=='2':# print("删除学生信息\n")self.del_student()elifinput_num=='3':# print("修改学生信息\n")self.update_student()elifinput_num=='4':# print("查询单个学生信息\n")self.search_one_student()elifinput_num=='5':# print("查询所有学生信息\n")self.search_all_student()elifinput_num=='6':self.save_student()print("保存学生信息成功\n")elifinput_num=='0':# 退出系统,做二次校验result=input("您确定要退出吗?(Y/N) --> ")ifresult.lower()=='y':# 在退出前自动保存学生数据到文件self.save_student()print("感谢使用!")breakelse:print("输入错误!请重新登陆\n")# 12.main中测试if__name__=='__main__':# 12.1 创建学生管理系统对象cms=StudentCMS()# 12.2 调用学生管理系统对象的start()函数,启动学生管理系统cms.start()

3.main.py

# 该文件用于程序的入口文件fromstudentcmsimportStudentCMS# 程序的主入口if__name__=='__main__':# 1.创建学生管理系统对象cms=StudentCMS()# 2.调用学生管理系统对象的start()函数,启动学生管理系统cms.start()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 2:33:12

CAN诊断协议网络层全解析:从多帧拆包到UDS服务实现

CAN诊断协议网络层全解析:从多帧拆包到UDS服务实现 在汽车电子开发领域,诊断协议是连接ECU与外部诊断设备的桥梁。想象一下,当你需要为车辆进行软件更新或故障排查时,诊断协议就像一位精通多国语言的翻译官,确保诊断设…

作者头像 李华
网站建设 2026/4/17 14:27:12

从“闭源”Majestic看OpenIPC:一个开源IP摄像头固件的真实生态与DIY潜力

从“闭源”Majestic看OpenIPC:一个开源IP摄像头固件的真实生态与DIY潜力 当谈到开源IP摄像头固件时,大多数人会期待一个完全透明、可自由修改的解决方案。然而OpenIPC项目却呈现了一个更为复杂的现实——一个在开源理想与商业现实之间寻找平衡点的混合生…

作者头像 李华
网站建设 2026/4/17 6:14:55

VISA_or_MC - Writeup by AI

VISA_or_MC - Writeup by AI 一、题目信息 题目来源: Bugku Crypto题目名称: VISA_or_MC题目类型: 密码学/编码转换 二、考点分析 核心知识点信用卡卡号识别规则 VISA 卡:以数字 4 开头,16 位MasterCard: 以数字 5 开头,16 位(本题…

作者头像 李华
网站建设 2026/4/16 2:10:38

别再混淆了!用PyTorch代码带你彻底搞懂Shared MLP和普通MLP的区别

别再混淆了!用PyTorch代码带你彻底搞懂Shared MLP和普通MLP的区别 在深度学习领域,MLP(多层感知机)是最基础也最常用的网络结构之一。但当我们开始接触点云处理、3D视觉等前沿方向时,论文和代码中频繁出现的"Shar…

作者头像 李华