#558. 「例题4-6」师兄帮帮忙(A Typical Homework ) 暂未评定

时间限制:1000 ms 内存限制:128 MiB 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: root

题目描述

编写一个成绩管理系统(SPMS)。最多有100个学生,每个学生有如下属性。

  • SID:学生编号,包含10位数字。
  • CID:班级编号,为不超过20的正整数。
  • 姓名:不超过10的字母和数字组成,第一个字符为大写字母。名字中不能有空白字符。
  • 4门课程(语文、数学、英语、编程)成绩,均为不超过100的非负整数。

进入SPMS后,应显示主菜单: Welcome to Student Performance Management System (SPMS).

1 - Add
2 - Remove
3 - Query
4 - Show ranking
5 - Show Statistics
0 - Exit

1. 选择1之后,会出现添加学生记录的提示信息:

Please enter the SID, CID, name and four scores. Enter 0 to finish. 

然后等待输入。本题保证输入总是合法的(不会有非法的SID、CID,并且恰好有4个分数等),但可能会输入重复SID。在这种情况下,需要输出一行提示:

Duplicated SID.

不过名字是可以重复的。你的程序应当不停地打印前述提示信息,直到用户输入单个0。然后应当再次打印主菜单。

2. 选择2之后,会出现如下提示信息:

Please enter SID or name. Enter 0 to finish.

然后等待输入,在数据库中删除能匹配上述SID或者名字的所有学生,并且打印如下信息(xx可以等于0):

xx student(s) removed.

你的程序应当不停地打印前述提示信息,直到用户输入单个0,然后再次打印主菜单。

3. 选择3之后,会出现如下提示信息:

Please enter SID or name. Enter 0 to finish.

然后等待输入。如果数据库中没有能匹配上述SID或者名字的学生,什么都不要做;否则输出所有满足条件的学生,按照进入数据库的顺序排列。
输出格式和添加的格式相同,但增加3列:年级排名(第一列)、总分和平均分(最后两列)。
所有班级中总分最高的学生获得第1名,如果有两个学生并列第2名,则下一个学生的排名为4(而非3)。
你的程序应当不停地打印前述提示信息,直到用户输入单个0。然后应当再次打印主菜单。

4. 选择4之后,会出现如下提示信息:

Showing the ranklist hurts students' self-esteem. Don't do that.

然后自动返回主菜单。

5. 选择5之后,会出现如下提示信息:

Chinese
Average Score: xx.xx
Number of passed students: xx
Number of failed students: xx

…(为了节约篇幅,此处省略了Mathematics、English和Programming的统计信息)

Overall:
Number of students who passed all subjects: xx
Number of students who passed 3 or more subjects: xx
Number of students who passed 2 or more subjects: xx
Number of students who passed 1 or more subjects: xx
Number of students who failed all subjects: xx

然后自动回到主菜单。

6. 选择0之后,程序终止。

注意,单科成绩和总分都应格式化为整数,但平均分应恰好保留两位小数。