目录
任务描述
项目组接到一个新项目,要为某学校开发一个“学生信息管理系统”,经过与客户沟通交流,确定该系统的主要功能如下图所示。
整个学生信息管理系统主要包括两大模块:基本信息管理和学生成绩管理。
基本信息管理模块的主要功能有学生信息的添加、删除、修改、显示和学生数据的导入导出,、
学生成绩管理模块的主要功能有统计课程最高分、最低分和平均分。
系统业务流程设计
学生信息管理系统启动后,首先进入系统主界面,等待用户输入命令选择相应的功能。
如果用户输入“info”命令,则进入学生基本信息管理子功能模块。
在学生基本信息管理界面,用户通过输入相应的命令进行学生基本信息的增、删、改、显示等操作。
如果用户输入“score”命令,则进入学生成绩管理子功能模块。
在学生成绩管理界面用户可选择相应的功能进行成绩处理。
学生基本信息管理模块
学生类的设计与实现
学生信息管理模块中每个学生的基本信息有学号、姓名、语文成绩、数学成绩和英语成绩,设计一个学生类,包含学号、姓名、语文成绩、数学成绩和英语成绩等数据成员,然后添加一个构造方法,用于实例化时可直接传入相应的参数来创建学生对象,代码如下:
class Student:
def __init__(self,no,name,chinese,math,english):
self.no = no
self.name = name
self.chinese = int(chinese)
self.math = int(math)
self.english = int(english)
学生管理类的设计与实现
设计一个学生信息管理类StudentList用于实现对所有学生信息的管理,如学生信息的添加、删除、修改和显示等功能。
class StudentList:
def __init__(self):
self.stulist = []
def show(self):
#显示学生信息
print('{:8}\t{:8}\t{:8}\t{:8}\t{:8}'
.format('学号','姓名','语文','数学','英语'))
for stu in self.stulist:
print('{:8}\t{:8}\t{:<8}\t{:<8}\t{:<8}'
.format(stu.no,stu.name,stu.chinese,stu.math,stu.english))
def insert(self):
#添加学生信息
while True:
no = input('学号:')
name = input('姓名:')
chinese = input('语文成绩:')
math = input('数学成绩:')
english = input('英语成绩:')
stu = Student(no,name,chinese,math,english)
self.stulist.append(stu)
choice = input('继续添加(y/n)?').lower()
if choice == 'n':
break
def delete(self):
#删除学生信息
while True:
no = input('请输入要删除的学生学号:')
for stu in self.stulist[::]:
if stu.no == no:
self.stulist.remove(stu)
print('删除成功')
break
else:
print('该学号不存在')
choice = input('继续删除(y/n)?').lower()
if choice == 'n':
break
def update(self):
#修改学生信息
while True:
no = input('请输入要修改的学生学号:')
for stu in self.stulist:
if stu.no == no:
stu.name = input('姓名:')
stu.chinese = input('语文成绩:')
stu.math = input('数学成绩:')
stu.english = input('英语成绩:')
print('修改成功')
break
else:
print('该学号不存在')
choice = input('继续修改(y/n)?').lower()
if choice == 'n':
break
然后定义一个打印菜单的模块:
def print_menu(self):
#打印菜单
print('学生基本信息管理'.center(20,'-'))
print('insert--------添加学生信息')
print('delete--------删除学生信息')
print('update--------修改学生信息')
print('show----------显示学生信息')
print('return--------返回')
print('-'*28)
最后定义主函数:
def main(self):
#主控函数
self.print_menu()
while True:
s = input('info>').strip().lower()
if s == 'show':
self.show()
elif s == 'insert':
self.insert()
elif s == 'delete':
self.delete()
elif s == 'update':
self.update()
elif s =='return':
break
else:
print('输入错误')
if __name__ == '__main__':
st = StudentList()
st.main()
完成之后的完整代码如下:
class Student:
def __init__(self,no,name,chinese,math,english):
self.no = no
self.name = name
self.chinese = int(chinese)
self.math = int(math)
self.english = int(english)
class StudentList:
def __init__(self):
self.stulist = []
def show(self):
#显示学生信息
print('{:8}\t{:8}\t{:8}\t{:8}\t{:8}'
.format('学号','姓名','语文','数学','英语'))
for stu in self.stulist:
print('{:8}\t{:8}\t{:<8}\t{:<8}\t{:<8}'
.format(stu.no,stu.name,stu.chinese,stu.math,stu.english))
def insert(self):
#添加学生信息
while True:
no = input('学号:')
name = input('姓名:')
chinese = input('语文成绩:')
math = input('数学成绩:')
english = input('英语成绩:')
stu = Student(no,name,chinese,math,english)
self.stulist.append(stu)
choice = input('继续添加(y/n)?').lower()
if choice == 'n':
break
def delete(self):
#删除学生信息
while True:
no = input('请输入要删除的学生学号:')
for stu in self.stulist[::]:
if stu.no == no:
self.stulist.remove(stu)
print('删除成功')
break
else:
print('该学号不存在')
choice = input('继续删除(y/n)?').lower()
if choice == 'n':
break
def update(self):
#修改学生信息
while True:
no = input('请输入要修改的学生学号:')
for stu in self.stulist:
if stu.no == no:
stu.name = input('姓名:')
stu.chinese = input('语文成绩:')
stu.math = input('数学成绩:')
stu.english = input('英语成绩:')
print('修改成功')
break
else:
print('该学号不存在')
choice = input('继续修改(y/n)?').lower()
if choice == 'n':
break
def print_menu(self):
#打印菜单
print('学生基本信息管理'.center(20,'-'))
print('insert--------添加学生信息')
print('delete--------删除学生信息')
print('update--------修改学生信息')
print('show----------显示学生信息')
print('return--------返回')
print('-'*28)
def main(self):
#主控函数
self.print_menu()
while True:
s = input('info>').strip().lower()
if s == 'show':
self.show()
elif s == 'insert':
self.insert()
elif s == 'delete':
self.delete()
elif s == 'update':
self.update()
elif s =='return':
break
else:
print('输入错误')
if __name__ == '__main__':
st = StudentList()
st.main()
运行程序:
学生基本信息菜单
添加学生信息
删除学生信息
修改学生信息
显示学生信息
结语
本篇我们完成了学生成绩管理系统的学习信息部分,新建了一个学生基本信息和学生管理类,实现了面向对象的学生信息管理。
通过学生基本信息管理菜单,我们可以实现学生信息的添加,删除,修改和显示。
下篇我们将完善学生基本信息功能,增加外部文件导入和导出成外部文件的功能。
同时,我们也将实现学生成绩管理系统的成绩统计相关功能。