之前在面向过程中,做过一个学生管理系统,现在用面向过程的方法来试试。
用面向对象来解决:
封装类:
学生类: 管理系统类:
成员变量 成员变量
id pass
name
age
成员方法 成员方法
pass 展示主菜单方法
添加学生信息
查询学生信息
修改学生信息
删除学生信息
查看所有学生信息
退出系统
创建系统对象
sys_student = Sys ()
存储学生对象的容器{}
while(True):
sys_student=show_menu()
choice=input()if choice == 1:
sysManger.addStudent()
以上是整体思路,下面是实现代码
#学生类
classStudent:def __init__(self, stuId, name, age):
self.stuId=stuId
self.name=name
self.age=agedefstudentoop(self):pass
1 #全局变量
2 new_stuId = ""
3 new_name = ""
4 new_age = ""
5
6 #管理系统类
7 classSys:8 def __init__(self):9 pass
10
11 #展示系统菜单
12 defshow_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 defgetinfo(self):3 globalnew_stuId4 globalnew_name5 globalnew_age6 new_stuId = input("请输入学号:")7 new_name = input("请输入名字:")8 new_age = input("请输入年龄:")9
10 #添加学生信息
11 defadd_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 deffind_stus(self):2 find_nameId = input("请输入要查的学号")3 if find_nameId instudents.keys():4 print("学号:%s 名字:%s 年龄:%s" %(students[new_stuId].stuId, students[new_stuId].name, students[new_stuId].age))5 else:6 print("查无此人")
修改学生信息(修改时有BUG,只能按Key修改,key是不会变的,只改变key的值)
1 defalter_stus(self):2 alterId = input("请输入你要修改学生的学号:")3 self.getinfo()4 #当字典中Key相同时,覆盖掉以前的key值
5 if alterId instudents.keys():6 students[new_stuId] =Student(new_stuId, new_name, new_age)7 delstudents[alterId]8 else:9 print("查无此人")
删除学生信息
1 #删除学生信息
2 defdel_stus(self):3 cut_nameID = input("请输入要删除的学号:")4 if cut_nameID instudents.keys()5 delstudents[cut_nameID]6 else:7 print("查无此人")
显示学生所有信息
1 #显示学生信息
2 defshow_stus(self):3 for new_stuId instudents:4 #print("%s %s %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 defexit_stus(self):
print("欢迎下次使用")3 exit()
利用循环来调用上面的信息
1 #创建系统对象
2 sys =Sys()3 #定义一个容器来存储学生信息
4 students ={}5 whileTrue: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.在写代码时,不要想的太复杂,简单话问题