之前在面向过程中,做过一个学生管理系统,现在用面向过程的方法来试试。
用面向对象来解决:
封装类:
学生类: 管理系统类:
成员变量 成员变量
id pass
name
age
成员方法 成员方法
pass 展示主菜单方法
添加学生信息
查询学生信息
修改学生信息
删除学生信息
查看所有学生信息
退出系统
创建系统对象
sys_student = Sys ()
存储学生对象的容器{}
while(True): sys_student=show_menu() choice = input() if choice == 1: sysManger.addStudent()
以上是整体思路,下面是实现代码
# 学生类 class Student: def __init__(self, stuId, name, age): self.stuId = stuId self.name = name self.age = age def studentoop(self): pass
1 # 全局变量 2 new_stuId = "" 3 new_name = "" 4 new_age = "" 5 6 # 管理系统类 7 class Sys: 8 def __init__(self): 9 pass 10 11 # 展示系统菜单 12 def show_menu(self): 13 print("=" * 56) 14 print(" 一个超🐴的学生管理系统 v1.0") 15 print(" 1:添加用户信息") 16 print(" 2:查询用户信息") 17 print(" 3:修改用户信息") 18 print(" 4:删除用户信息") 19 print(" 5:显示用户信息") 20 print(" 6:退出系统") 21 print("=" * 56)
1 # 输入学生菜单 2 def getinfo(self): 3 global new_stuId 4 global new_name 5 global new_age 6 new_stuId = input("请输入学号:") 7 new_name = input("请输入名字:") 8 new_age = input("请输入年龄:") 9 10 # 添加学生信息 11 def add_stus(self): 12 #调用getinfo方法 13 self.getinfo()
14 #以ID为Key,将新输入的信息赋值给Student类
15 students[new_stuId] = Student(new_stuId,new_name,new_age)
16
17 # 打印添加的学生信息
print("ID:%s"%students[new_stuId].stuId,"Name:%s"%students[new_stuId].name,"Age:%s"%students[new_stuId].age)
查询的时候,根据key(Id)来查找。(之前遇到的问题:key值不知道怎么赋值给Student类里)
1 def find_stus(self): 2 find_nameId = input("请输入要查的学号") 3 if find_nameId in students.keys(): 4 print("学号:%s\t名字:%s\t年龄:%s" % (students[new_stuId].stuId, students[new_stuId].name, students[new_stuId].age)) 5 else: 6 print("查无此人")
修改学生信息(修改时有BUG,只能按Key修改,key是不会变的,只改变key的值)
1 def alter_stus(self): 2 alterId = input("请输入你要修改学生的学号:") 3 self.getinfo() 4 # 当字典中Key相同时,覆盖掉以前的key值 5 if alterId in students.keys(): 6 students[new_stuId] = Student(new_stuId, new_name, new_age) 7 del students[alterId] 8 else: 9 print("查无此人")
删除学生信息
1 # 删除学生信息 2 def del_stus(self): 3 cut_nameID = input("请输入要删除的学号:") 4 if cut_nameID in students.keys() 5 del students[cut_nameID] 6 else: 7 print("查无此人")
显示学生所有信息
1 # 显示学生信息 2 def show_stus(self): 3 for new_stuId in students: 4 # print("%s\t%s\t%s" % ("ID:%s"%new_stuId,"Name:%s"%new_name,"Age:%s"%new_age)) 5 print("ID:%s" % students[new_stuId].stuId, "Name:%s" % students[new_stuId].name, 6 "Age:%s" % students[new_stuId].age) 7
退出系统
1 # 退出系统 2 def exit_stus(self):
print("欢迎下次使用")
3 exit()
利用循环来调用上面的信息
1 # 创建系统对象 2 sys = Sys() 3 # 定义一个容器来存储学生信息 4 students = {} 5 while True: 6 sys.show_menu() 7 choice = int(input("请选择功能:")) 8 if choice == 1: 9 sys.add_stus() 10 elif choice == 2: 11 sys.find_stus() 12 elif choice == 3: 13 sys.alter_stus() 14 elif choice == 4: 15 sys.del_stus() 16 elif choice == 5: 17 sys.show_stus() 18 elif choice == 6: 19 sys.exit_stus() 20 else: 21 print("您输入有误,请重新输入")
最后总结:
1.首先要剥离以前的面向过程的思维,用面向对象的方式来看待问题
2.在写代码时,不要想的太复杂,简单话问题