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

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

题目描述

嗨,我是一名外语学院的本科生。你知道的,C 语言编程是我们大学的必修课,即使专业与计算机科学相去甚远。我一点也不喜欢这门课,因为我不擅长计算机,我甚至不想尝试写任何程序!!但我必须做作业才能及格 :( 嘘……你能帮帮我吗?请保密!!我知道你不会对一个可怜的小女孩说不的!:)

译者注:在这个问题中,你可以不用 C 语言完成。

任务 Task

编写一个学生成绩管理系统(Student Performance Management System,SPMS)。

概念 Concepts

在 SPMS 中,最多有 名学生,每个学生都有 SID,CID,名字,四科成绩(语文 Chinese,数学 Mathematics,英语 English 和编程 Programming),总分,平均分和排名。数据含义与格式如下:

  • SID(学生 ID,Student ID)是一个十位十进制数字。每个学生唯一。
  • CID(班级 ID,Class ID)是一个不超过 的正整数。
  • 名称是一个包含不超过 个字母和数字的字符串且以字母开头(这样不会和 SID 产生歧义)。不同于国外的姓名格式,这个名称中不含有空格字符,只含有字母和数字。可能重名。
  • 每科成绩都是一个不超过 的正整数。
  • 总分和平均分由系统自动计算,无需输入。总分为四科成绩之和,平均分为总分除以
  • 排名由系统自动生成,无需输入。一个学生的排名定义为总分比 Ta 高的学生数量再加 。如,如果有四个学生总分分别为 ,则他们的排名分别为

主菜单 Main Menu

当你进入 SPMS 的时候,主菜单显示如下:

Welcome to Student Performance Management System (SPMS).

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

译者注:

欢迎进入学生成绩管理系统(SPMS)。

1 - 添加学生
2 - 删除学生
3 - 查询学生
4 - 显示排名
5 - 统计数据
0 - 退出系统

结尾有两个换行符。

添加学生 Adding a Student

当你在主菜单中选择 的时候,会进入添加学生的模式。接着,如下操作将会一直执行,直到输入单个字符

  1. 输出 Please enter the SID, CID, name and four scores. Enter 0 to finish.。结尾有单个换行符。

    译者注:请输入 SID,CID,名称和四科成绩。输入 以结束。

  2. 等待用户输入 SID,CID,姓名和四科成绩,以单个空格隔开。除了可能只输入单个字符 ,输入均一定有效,即输入数据均符合“概念”一节中的规定。唯一的例外是 SID 可能重复。
  3. 如果 SID 重复,则输出 Duplicated SID.,末尾有单个换行符,并忽略此条消息。
  4. 否则如果无重复,则在数据库中添加这个学生。

在用户输入单个字符 之后,请返回主菜单(并且需要再次输出主菜单,下同)。

删除学生 Removing a Student

如果你在主菜单中选择 ,则会进入此模式。如下操作会一直执行,直到输入单个字符

  1. 输出 Please enter SID or name. Enter 0 to finish.,末尾有单个换行符。

    译者注:请输入 SID 或名称。输入 以结束。

  2. 接着输入 SID 或学生名字。除了可能只输入单个字符 ,输入均一定有效。
  3. 删除所有匹配条件的学生,并输出 x student(s) removed.,末尾有单个换行符。其中 是删除的学生数量(可能为 )。如,删除了一个学生则输出 1 student(s) removed.,两个则输出 2 student(s) removed.,如果没有满足条件的学生则输出 0 student(s) removed.

    译者注:删除了 个学生。

结束时返回主菜单。

查询学生 Querying Students

进入此模式当且仅当在主菜单中选择 。如下操作会一直执行直到输入单个字符

  1. 输出 Please enter SID or name. Enter 0 to finish.,末尾有单个换行符。

    译者注:请输入 SID 或名称,输入 结束。

  2. 输入 SID 或学生名字。除了可能只输入单个字符 ,输入均一定有效。
  3. 按加入数据库的时间顺序(从早到晚)每行一个输出学生的信息。顺序为排名、SID、CID、姓名、四科成绩、总分、平均分。用单个空格隔开。平均分保留两位小数。

结束时返回主菜单。

“显示排名”Showing the Ranklist

在主菜单中选择 以进入此模式。程序将会输出 Showing the ranklist hurts students' self-esteem. Don't do that.(结尾有单个换行符)并回到主菜单。

译者注:显示排名会伤害学生的自尊心。不要这么干。

这就是为什么标题加了双引号。

输出统计数据 Showing Statistics

在住菜单中输入 会进入此模式。

程序首先输出这样一句话:Please enter class ID, 0 for the whole statistics.,结尾有单个换行符。

译者注:输出班级 ID,特别地,如果输入 则代表整个 SPMS 中的统计数据。

然后输出班级或者整个系统中的统计数据。格式如下:

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

Mathematics
Average Score: x.xx
Number of passed students: x
Number of failed students: x

English
Average Score: x.xx
Number of passed students: x
Number of failed students: x

Programming
Average Score: x.xx
Number of passed students: x
Number of failed students: x

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

译者注:

语文
平均分: x.xx
及格人数: x
不及格人数: x

数学
平均分: x.xx
及格人数: x
不及格人数: x

英语
平均分: x.xx
及格人数: x
不及格人数: x

编程
平均分: x.xx
及格人数: x
不及格人数: x

全科:
四科全部及格人数: x
及格三科及以上人数: x
及格两科及以上人数: x
及格一科及以上人数: x
四科全部不及格人数: x

注意小数必须保留两位小数。末尾有两个换行符。

及格(passed)定义为成绩不低于

最后返回主菜单。

退出 SPMS Exiting SPMS

在主菜单中选择 ,则程序会终止。

再次注意,在整个程序中,学科成绩和总成绩应当输出为整数,但平均成绩应当为小数点后保留两位的小数。

输入格式

从标准输入输出进行输入。输入仅有一组测试数据,结尾有一行一个单独的 ,且这个 的输入是在主菜单状态下的。整个输入文件均有效,输入文件大小不超过

输出格式

从标准输入输出进行输出。输出在整个过程中 SPMS 输出的全部内容。你应当可以在你的机器上,用键盘和你的程序进行交互,尽管当输入输出分开的时候,这会显得像个笨蛋。

样例

样例输入

1
0011223344 1 John 79 98 91 100
0022334455 1 Tom 59 72 60 81
0011223344 2 Alice 100 100 100 100
2423475629 2 John 60 80 30 99
0
3
0022334455
John
0
5
1
2
0011223344
0
5
0
4
0

样例输出

Welcome to Student Performance Management System (SPMS).

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

Please enter the SID, CID, name and four scores. Enter 0 to finish.
Please enter the SID, CID, name and four scores. Enter 0 to finish.
Please enter the SID, CID, name and four scores. Enter 0 to finish.
Duplicated SID.
Please enter the SID, CID, name and four scores. Enter 0 to finish.
Please enter the SID, CID, name and four scores. Enter 0 to finish.
Welcome to Student Performance Management System (SPMS).

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

Please enter SID or name. Enter 0 to finish.
2 0022334455 1 Tom 59 72 60 81 272 68.00
Please enter SID or name. Enter 0 to finish.
1 0011223344 1 John 79 98 91 100 368 92.00
3 2423475629 2 John 60 80 30 99 269 67.25
Please enter SID or name. Enter 0 to finish.
Welcome to Student Performance Management System (SPMS).

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

Please enter class ID, 0 for the whole statistics.
Chinese
Average Score: 69.00
Number of passed students: 1
Number of failed students: 1

Mathematics
Average Score: 85.00
Number of passed students: 2
Number of failed students: 0

English
Average Score: 75.50
Number of passed students: 2
Number of failed students: 0

Programming
Average Score: 90.50
Number of passed students: 2
Number of failed students: 0

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

Welcome to Student Performance Management System (SPMS).

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

Please enter SID or name. Enter 0 to finish.
1 student(s) removed.
Please enter SID or name. Enter 0 to finish.
Welcome to Student Performance Management System (SPMS).

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

Please enter class ID, 0 for the whole statistics.
Chinese
Average Score: 59.50
Number of passed students: 1
Number of failed students: 1

Mathematics
Average Score: 76.00
Number of passed students: 2
Number of failed students: 0

English
Average Score: 45.00
Number of passed students: 1
Number of failed students: 1

Programming
Average Score: 90.00
Number of passed students: 2
Number of failed students: 0

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

Welcome to Student Performance Management System (SPMS).

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

Showing the ranklist hurts students' self-esteem. Don't do that.
Welcome to Student Performance Management System (SPMS).

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

数据范围与提示

在格式化输出浮点数(例如平均分)时,防止浮点误差的一个好方法是加上一个很小的数(例如本题中可以取 )。否则,如果浮点误差导致结果为 ,则 将被输出为

Translated by Luogu User