之前在面向過程中,做過一個學生管理系統,現在用面向過程的方法來試試。
用面向對象來解決:
封裝類:
學生類: 管理系統類:
成員變量 成員變量
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.在寫代碼時,不要想的太復雜,簡單話問題