#558. 「例题4-6」师兄帮帮忙(A Typical Homework ) 暂未评定
题目描述
嗨,我是一名外语学院的本科生。你知道的,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
当你在主菜单中选择 的时候,会进入添加学生的模式。接着,如下操作将会一直执行,直到输入单个字符 :
- 输出
Please enter the SID, CID, name and four scores. Enter 0 to finish.。结尾有单个换行符。译者注:请输入 SID,CID,名称和四科成绩。输入 以结束。
- 等待用户输入 SID,CID,姓名和四科成绩,以单个空格隔开。除了可能只输入单个字符 ,输入均一定有效,即输入数据均符合“概念”一节中的规定。唯一的例外是 SID 可能重复。
- 如果 SID 重复,则输出
Duplicated SID.,末尾有单个换行符,并忽略此条消息。 - 否则如果无重复,则在数据库中添加这个学生。
在用户输入单个字符 之后,请返回主菜单(并且需要再次输出主菜单,下同)。
删除学生 Removing a Student
如果你在主菜单中选择 ,则会进入此模式。如下操作会一直执行,直到输入单个字符 :
- 输出
Please enter SID or name. Enter 0 to finish.,末尾有单个换行符。译者注:请输入 SID 或名称。输入 以结束。
- 接着输入 SID 或学生名字。除了可能只输入单个字符 ,输入均一定有效。
- 删除所有匹配条件的学生,并输出
x student(s) removed.,末尾有单个换行符。其中 是删除的学生数量(可能为 )。如,删除了一个学生则输出1 student(s) removed.,两个则输出2 student(s) removed.,如果没有满足条件的学生则输出0 student(s) removed.。译者注:删除了 个学生。
结束时返回主菜单。
查询学生 Querying Students
进入此模式当且仅当在主菜单中选择 。如下操作会一直执行直到输入单个字符 :
- 输出
Please enter SID or name. Enter 0 to finish.,末尾有单个换行符。译者注:请输入 SID 或名称,输入 结束。
- 输入 SID 或学生名字。除了可能只输入单个字符 ,输入均一定有效。
- 按加入数据库的时间顺序(从早到晚)每行一个输出学生的信息。顺序为排名、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 。