零基础 学 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,其它输入无效。
值得注意的是这个程序不具备存储学生记录的功能,退出程序后学生记录就消失了,在后面~将介绍如何通过文件或者数据库存储数据。