当前位置: 首页 > news >正文

基于python语言的链接文件存储的面向对象的学生管理系统小练习

这个小项目适用于正在进行python面向对象部分学习的同志们 ,可以通过这个小项目巩固学到的知识 ,进行知识的串联与复习语法知识

----------------------------------------------

基础架构部分:

对于一个学生管理系统 ,主要角色必然是 学生 以及系统中管理学生的一些机制

对于学生可以设置这几个属性:

-姓名

-性别

-年龄

-手机号

-描述信息

-等等

其次就是系统中管理学生的机制:

- 添加学生

-删除学生

-修改学生

-查询单个学生

-显示所有学生

-保存学生信息 (关联文件)

-加载学生信息(导入文件)

-退出系统

这就是我们需要设置的信息

接下来我们新建对于不同的类分别建立不同的文件

1. 学生类 2.管理系统类 3.测试类(main入口)

建立文件时我们需要对文件的功能做出说明 ,养成良好的编码习惯

------------------------------------------

下面开始实现代码:

新建Student.py文件

"""

该文件用于记录学生类 ,姓名 ,性别 ,年龄 ,手机号 ,描述信息

"""

class Student: def __init__(self, name, gender,age,phone,desc): """ 该魔法方法 ,用于初始化属性信息 :param name: 学生姓名 :param gender: 性别 :param age: 年龄 :param phone: 手机号 :param desc: 描述信息 """ self.name = name self.age = age self.gender = gender self.phone = phone self.desc = desc def __str__(self): return "姓名:%s,性别:%s,年龄:%s,手机号:%s,描述:%s" % (self.name, self.gender, self.age, self.phone, self.desc) """ 测试代码 ,测试当前进度写的对不对 """ if __name__ == '__main__': s = Student("小王", "男", 18, "12345678901", "喜欢cosplay无能的丈夫") print( s)

注意:在测试分文件的代码时需要添加main函数在进行测试 ,否则在进行代码整合的时候会导致编码错误导致程序运行失败

这样 ,我们的Student类就完成了 ,接下来我们进行StudentCMS.py的编辑 ,不要忘了对代码进行功能说明

""" 该文件用于完成学生管理系统的具体业务操作: 增删改查 ,保存学生信息等这里我们先完成管理系统的函数设计部分的基础架构 ,不详细完成函数功能,在进行项目过程中 这份工作是交给架构师来完成 ,而程序员只需完成部分的函数功能即可"""
#这里导包前面设计的Student类 from Student import Student class StudentCMS(object): def __init__(self): #空列表存储学生信息 self.stu.list=[] #展示管理系统主菜单 def show_view(): pass #添加学生 def add_student(self): pass #删除学生 def delete_student(self): pass #修改学生 def update_student(self): pass #查询单个学生 def find_index_student(self): pass #显示所有学生 def show_all_student(self): pass #保存学生信息到文件中 def save_student(self): pass #从文件中加载学生信息 def load_student(self): pass #程序入口(执行管理系统的全流程) def start(self): pass """ 1. 创建学生管理系统对象 2. 调用学生管理系统的start方法 """ if __name__ == '__main__': sm=StudentCMS() sm.start()

这样 ,我们的StudentCMS类就完成了 ,接下来我们进行main.py的编辑 ,不要忘了对代码进行功能说明

""" 该文件用于程序的入口文件 """
from StudentCMS import StudentCMS if __name__ == '__main__': sm = StudentCMS() sm.start()

至此 ,我们的基础架构部分的骨骼就已经全部完成了 ,剩下的只需要对StudentCMS部分的功能函数

加入血肉,整个管理系统就结束了

---------------StudentCMS-----------------------

主菜单 show_view()

这部分并没有用到对象的内容 ,所以可以将函数定义为静态函数

@staticmethod def show_view(): print("---------欢迎来到弗雷尔卓德学生管理系统---------") print("\t1. 添加学生") print("\t2. 删除学生") print("\t3. 修改学生") print("\t4. 查询单个学生") print("\t5. 显示所有学生") print("\t6.保存学生信息") print("\t7. 退出系统") print("------------------------------------")

添加学生 add_student(self)

def add_student(self): name = input("请输入学生姓名:") gender = input("请输入学生性别:") age = input("请输入学生年龄:") phone = input("请输入学生手机号:") desc = input("请输入学生描述:") stu = Student(name, gender, age, phone, desc) self.stu_list.append(stu) print("添加学生",name,"成功\n")

删除学生 delete_student(self)

def delete_student(self): del_name=input("要删除的学生信息是 :") for stu in self.stu_list: if stu.name == del_name: self.stu_list.remove(stu) print("删除成功") break else : print("没有此学生信息,检查后再试")

修改学生信息 update_student(self)

def update_student(self): update_name = input("要修改的学生姓名是 :") for stu in self.stu_list: if stu.name == update_name: stu.gender = input("请输入修改后的学生性别:") stu.age = input("请输入修改后的学生年龄:") stu.phone = input("请输入修改后的学生手机号:") stu.desc = input("请输入修改后的学生描述:") print("学员",stu.name,"修改成功") break else: print("没有此学生信息,检查后再试")

查找单名学生信息 find_index_student(self)

def find_index_student(self): find_name = input("要查找的学生姓名是 :") for stu in self.stu_list: if stu.name == find_name: print(stu) print("查找成功\n") break else: print("没有此学生信息,检查后再试")

展示全部学生信息 show_all_student(self)

def show_all_student(self): if self.stu_list: for index,stu in enumerate(self.stu_list): print(index,stu) else: print("当前列表中暂无学生信息 ,请添加后在进行查询")

加载学生信息到文件中 save_student(self)

def save_student(self): # 关联学生信息文件 with open("./student.txt", "w", encoding="utf-8") as f: stu_dict=[stu.__dict__ for stu in self.stu_list] f.write(str(stu_dict)) #转成字符串

从文件中加载学生信息到管理系统中 load_student(self)

def load_student(self): try: with open("./student.txt", "r", encoding="utf-8") as f: stu_date = eval(f.read()) self.stu_list = [Student(**stu) for stu in stu_date] except FileNotFoundError: with open("./student.txt", "w", encoding="utf-8") as _f: pass

管理系统全流程实现 start(self)

def start(self): self.load_student() #加入异常处理 ,有可能文件不存在 while True: #为了效果更明显 ,加入延迟(休眠线程) time.sleep(1) StudentCMS.show_view() choice = input("请输入您的选择:") if choice == "1": print("请添加学生") self.add_student() elif choice == "2": self.delete_student() elif choice == "3": self.update_student() elif choice == "4": self.find_index_student() elif choice == "5": self.show_all_student() elif choice == "6": self.save_student() print("保存成功") elif choice == "7": self.save_student() result = input("是否要退出系统(y/n)") if result.lower() == "y": print("谢谢您的使用,期待下次再会!") break else : print("输入错误,请重新输入")

完成该部分以后 ,我们的一个基于python的可链接文件的一个简单的学生管理系统就完成了 ,通过这部分的练习 ,我们可以巩固阶段性学习的面向对象的一些语法以及特性 ,获得正反馈更加具有动力进行下一阶段的学习 ,同志们加油.

http://www.cnnetsun.cn/news/111701.html

相关文章:

  • 语音识别终极指南:解锁智能语音交互新体验
  • 毕业论文AI生成网站推荐:7大免费替代工具
  • 如何在最后30天实现计算机408分数质的飞跃?高效备考突破技巧全解析
  • 告别YouTube追踪:Invidious隐私保护生态完整搭建指南
  • 2025零代码AE动画:Lottie-Web让Web动效轻松实现
  • 架构:不仅仅是建模,而是一种思维
  • Book118文档下载神器:Java工具帮你免费获取学习资料
  • PLabel图像标注工具极速上手指南
  • 10分钟掌握FunASR:流式语音识别从入门到部署的完整实战指南
  • 教师考评新方式:线上系统让评分变得更简单
  • Biotin-PEG-NH2/NHS/N3:结构、反应特性与应用场景的全面对比
  • DTLN噪声抑制实战指南:从原理到部署的全流程解析
  • 深入libgit2:从零开始构建跨平台Git库的完整指南
  • AI选岗工具提升求职效率200%
  • ReadCat跨平台阅读器:打造专属数字书房的全新体验
  • Zotero阅读进度管理终极指南:告别文献混乱的完整解决方案
  • WAN2.2AllInOne V5:重新定义AI视频生成的“极速创作时代“
  • 开源项目商业化实战:Continue如何构建技术价值与商业回报的完美闭环
  • Yuzu模拟器终极配置指南:从零到60帧的完整优化方案
  • 终极SonarQube代码质量报告自动化解决方案:企业级数据驱动决策指南
  • 开展性能测试步骤
  • Coze工作流实战:从踩坑到精通
  • JSON性能革命:RapidJSON如何用SIMD技术改写C++数据处理格局
  • ImageOptim跨版本兼容性全面解析:从macOS 10.13到最新系统的实战指南
  • Qwen3-30B-A3B-Instruct-2507:小参数激活大智慧的AI新范式
  • 打造极速构建体验:BuildKit配置文件深度调优实战
  • 从线上事故看 Java 系统的真实韧性:为什么它总能撑到最后一刻
  • AI Agent框架终极部署指南:从零到生产环境的完整路径
  • 前端性能优化终极指南:让文件转换体验如丝般顺滑
  • 3步彻底解决Dokploy中.traefik.me证书失效问题