零基础 学 python开发 (Genius套餐A) 三十一

夜光序言:

 

 

若你厌倦了厮杀

而我江山遍踏

大不了弃了这红尘佳话

铁骨柔情倒也潇洒

 

若你惧怕了年华

而我一纸情话

大不了弃了这倾歌韶华

谱写平淡倒也潇洒

 

若你淡然了繁华

而我笙歌悠扬

大不了弃了这富贵荣华

对花啜茶倒也潇洒

 

 

 

 

 

 

零基础 学 python开发 (Genius套餐A) 三十一

正文:

5.5 实践项目 学生信息管理 
 
5.5.1 项目目标 


这个项目是通过面向对象的方法设计学生类 Student,包含一个学生姓名(Name)、性别(Sex)、年龄(Age),然后设计学生记录管理类 StudentList 来管理一组学生记录。

程序运行后显示">"的提示符号,在">"后面可以输入 show、insert、update、delete 等命令实现记录的显示、插入、修改、删除等功能,执行一个命令后继续显示">"提示符号,如果输入 exit 就退出系统,输入的命令不正确时会提示正确的输入命令,操作过程如下:


>show
No Name Gender Age
>insert
No=1
Name=AA
Gender=男
Age=23
增加成功
>show
No Name Gender Age
1 AA 男 23 
>update
No=1
Name=BB
Gender=女
Age=21
修改成功
>show
No Name Gender Age
1 BB 女 21 
>

 

 


 


5.5.2 项目实践 


 

class Student:
 def __init__(self,No,Name,Gender,Age):
 self.No=No
 self.Name=Name
 self.Gender=Gender
 self.Age=Age
 def show(self):
 print("%-16s %-16s %-8s %-4d" %(self.No,self.Name,self.Gender,self.Age))
class StudentList:
 def __init__(self):
 self.students=[]
 
 def show(self):
 print("%-16s %-16s %-8s %-4s" %("No","Name","Gender","Age"))
 for s in self.students:
 s.show()
 
 def __insert(self,s):
 i=0
 while (i<len(self.students) and s.No>self.students[i].No):
 i=i+1
 if (i<len(self.students) and s.No==self.students[i].No):
 print(s.No+" 已经存在")
 return False
 self.students.insert(i,s)
 print("增加成功")
 return True
 def __update(self,s):
 flag=False
 for i in range(len(self.students)):
 if (s.No==self.students[i].No):
 self.students[i].Name=s.Name
 self.students[i].Gender = s.Gender
 self.students[i].Age = s.Age
 print("修改成功")
 flag=True
 break
 if(not flag):
 print("没有这个学生")
 return flag
 def __delete(self,No):
 flag=False
 for i in range(len(self.students)):
 if (self.students[i].No == No):
 del self.students[i]
 print("删除成功")
 flag=True
 break
 if (not flag):
 print("没有这个学生")
 return flag
 
 def delete(self):
 No=input("No=")
 if(No!=""):
 self.__delete(No)
 
 
 def insert(self):
 No=input("No=")
 Name=input("Name=")
 while True:
 Gender=input("Gender=")
 if(Gender=="男" or Gender=="女"):
 break
 else:
 print("Gender is not valid")
 Age=input("Age=")
 if(Age==""):
 Age=0
 else:
 Age=int(Age)
 if No!="" and Name!="":
 self.__insert(Student(No,Name,Gender,Age))
 else:
 print("学号、姓名不能为空")
 def update(self):
 No=input("No=")
 Name=input("Name=")
 while True:
 Gender=input("Gender=")
 if(Gender=="男" or Gender=="女"):
 break
 else:
 print("Gender is not valid")
 Age=input("Age=")
 if(Age==""):
 Age=0
 else:
 Age=int(Age)
 if No!="" and Name!="":
 self.__update(Student(No,Name,Gender,Age))
 else:
 print("学号、姓名不能为空")
 
 def process(self):
 while True:
 s = input(">")
 if (s == "show"):
 self.show()
 elif (s == "insert"):
 self.insert()
 elif (s == "update"):
 self.update()
 elif (s == "delete"):
 self.delete()
 elif (s == "exit"):
 break
 else:
 print("show: show students")
 print("insert: insert a new student")
 print("update: insert a new student")
 print("delete: delete a student")
 print("exit: exit")
st=StudentList()
st.process()

 


夜光:


这个程序中先设计学生类 Student,然后设计学生记录管理类 StudentList,在这个类中有一个 students=[]是一个列表,列表的每个元素是一个 Student 对象,这样就记录了一组学生。

增加记录的函数是 insert 与__insert,其中 insert 完成学生信息的输入,__insert 完成学生的真正插入,插入时通过扫描学生学号 No 确定插入新学生的位置,保证插入的学生时按 No 从小到大排列的。

 

更新记录的函数是 update 与__update,其中 update 完成学生信息的输入,__update 完成学生的记录的真正更新,更新时通过扫描学生学号 No 确定学生的位置,学号不能更新。

删除记录的函数是 delete 与__delete,其中 delete 完成学生学号的输入,__delete 完成学生的记录的真正删除。

process 函数启动一个无限循环,不断显示命令提示符号">",等待输入命令,能接受的命令是 show、insert、update、delete、exit,其它输入无效。

值得注意的是这个程序不具备存储学生记录的功能,退出程序后学生记录就消失了,在后面~将介绍如何通过文件或者数据库存储数据。