Python学习--面向对象--学生管理系统1.0

之前在面向过程中,做过一个学生管理系统,现在用面向过程的方法来试试。

用面向对象来解决:

  封装类:

    学生类:                                                         管理系统类:

     成员变量                                                   成员变量 

        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.在写代码时,不要想的太复杂,简单话问题

posted @ 2018-04-01 18:32  TiAmo_yu  阅读(4904)  评论(0编辑  收藏  举报