目次
ミッションの詳細
プロジェクトチームは、ある学校向けに「生徒情報管理システム」の新規開発案件を受領し、お客様との打ち合わせの結果、システムの主な機能を下図のように決定しました。
学生情報管理システム全体には、主に基本情報管理と学生成績管理の 2 つのモジュールが含まれています。
基本情報管理モジュールの主な機能は、生徒情報の追加、削除、変更、表示、生徒データのインポート、エクスポートなどです。
学生の成績管理モジュールの主な機能には、統計コースの最高スコア、最低スコア、平均スコアが含まれます。
システム業務プロセス設計
学生情報管理システムが起動すると、まずシステムのメインインターフェイスに入り、ユーザーが対応する機能を選択するためのコマンドを入力するのを待ちます。
ユーザが「info」コマンドを入力すると、学生基本情報管理サブ機能モジュールに入る。
学生基本情報管理画面では、コマンド入力により学生基本情報の追加、削除、変更、表示等の操作を行うことができます。
ユーザーが「スコア」コマンドを入力すると、生徒のスコア管理サブ機能モジュールが開始されます。
生徒のスコア管理インターフェイスでは、ユーザーはスコア処理に対応する機能を選択できます。
学生基本情報管理モジュール
学生クラスの設計と実装
学生情報管理モジュールの各学生の基本情報には、学生ID、名前、中国語点、数学点、英語点が含まれており、学生ID、名前、中国語点、数学点、英語点などのデータメンバーを含む学生クラスを設計します。英語のスコアを取得し、インスタンス化中に生徒オブジェクトを作成するために、対応するパラメーターを直接渡すことができるコンストラクター メソッドを追加します。コードは次のとおりです。
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)
最後に main 関数を定義します。
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()
プログラムを実行します。
学生基本情報メニュー
学生情報を追加する
生徒情報を削除する
学生情報の変更
学生情報を表示する
結論
この記事では、学生成績管理システムの学習情報部分を完成させ、新しい基本的な学生情報と学生管理クラスを作成し、オブジェクト指向の学生情報管理を実装しました。
学生基本情報管理メニューでは、学生情報の追加・削除・変更・表示を行うことができます。
次回は、学生基本情報機能の改善と、外部ファイルへのインポート・エクスポート機能を追加します。
同時に、学生成績管理システムの成績統計関連機能も実装します。