这个小项目适用于正在进行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的可链接文件的一个简单的学生管理系统就完成了 ,通过这部分的练习 ,我们可以巩固阶段性学习的面向对象的一些语法以及特性 ,获得正反馈更加具有动力进行下一阶段的学习 ,同志们加油.