要求:
“Seaside Pirates”游泳俱乐部决定自动化存储记录。俱乐部保存每次游泳项目中最佳表现者的名单。(比如
Sex M
Event e.g. 100 Free
Performance 50.24
Name Ian Thorpe
Date of birth 10/12/1960
Data of competition 10/2/2005
Venue Wagga Wagga
Position 1
此程序将从这个文件中读取初始数据并能确保名单的维护。功能有:
1 选择项目
2 更新现有的游泳者
3 添加新的游泳者和成绩
4 对当前项目生成报表
5 退出和保存
这些项目有
数据结构
你的程序必须是面向对象的。推荐的方法是一个对象针对一个项目。游泳者的名单必须在对象中是一串记录(结构体)。一个样本文件由输入提供。如果你不用对象,那在这次作业中你的最高得分是45%。
程序操作
此程序必须首先从文件中加载数据到适当的对象中。一个菜单必须显示出以上功能列表。当按1选择某个项目后,相应的对象也被选中。按2后会在对象中查询游泳者的名单。必须使用一个合适的查询路径。按钮3需要一个模块来添加新的游泳者。如果列表已经满了,而新的游泳者比列表中最差的成绩要好,那么最差的成绩会被删除,新的游泳者会代替他/她当前的位置。按钮4是针对当前项目,在显示器上生成一张从好到差的排名列表。输出的样本形式:
Men’s
1 Ian Thorpe 50.24 Wagga Wagga 10/11/02 1
2 Grant Hackett 51.65 Albury 4/9/02 1
3 Don Talbot 54.58 Tumbarumba 5/10/02 2
Etc.
推荐方法:
步骤1
建议写一个循环来读取文件然后显示出来。完成之后,建立一个类和结构题并能读取这个数据结构。然后你需要打出一两个记录来检验数据是否存储正确。提醒下这通常比你想象中的难!
步骤2
添加菜单代码并用“Stubs”执行(代码只是显示按钮的名称而不用实际操作)。这个可以从作业1中借鉴。
步骤3
写一个能够在数据库中定位一个游泳者的查询模块。保存查询的位置以便你在屏幕上显示记录。这是菜单中按钮2的基础。二进制查询更优,将得到更好的分数。
步骤4
完成添加和报表的模块。
步骤5
为显示选项完成分类模块。任何分类运算法则都可能用到。
步骤6
写一个文件保存的模块,来存储数据库到原来的文件中。(可能有改动)