3029: 【普及/提高-】【P5266】学籍管理

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:46 解决:16

题目描述

您要设计一个学籍管理系统,最开始学籍数据是空的,然后该系统能够支持下面的操作(不超过 lns="http://www.w3.org/1998/Math/MathML">105 条):

  • 插入与修改,格式1 NAME SCORE:在系统中插入姓名为 NAME(由字母和数字组成不超过 20 个字符的字符串,区分大小写) ,分数为 lns="http://www.w3.org/1998/Math/MathML">SCORElns="http://www.w3.org/1998/Math/MathML">0<SCORE<231) 的学生。如果已经有同名的学生则更新这名学生的成绩为 SCORE。如果成功插入或者修改则输出OK
  • 查询,格式2 NAME:在系统中查询姓名为 NAME 的学生的成绩。如果没能找到这名学生则输出Not found,否则输出该生成绩。
  • 删除,格式3 NAME:在系统中删除姓名为 NAME 的学生信息。如果没能找到这名学生则输出Not found,否则输出Deleted successfully
  • 汇总,格式4:输出系统中学生数量。

样例输入 复制

5
1 lxl 10
2 lxl
3 lxl
2 lxl
4

样例输出 复制

OK
10
Deleted successfully
Not found
0

提示


#include<bits/stdc++.h>
using namespace std;
int n,opt,num,ans;
string name;
map<string,int> ds;
int main(){
    cin >> n;
    while (n--){
    	cin >> opt;
    	if (opt == 1) {
    		cin >> name >> num;
    		ds[name] = num; //这里对映射表name所对应的值修改为num
			cout << "OK" << endl; 
		}else if (opt == 2) {
			cin >> name;
			if (ds.find(name) != ds.end())
			    cout << ds[name] <<endl;
			else cout << "Not found" <<endl;
		}else if (opt == 3) {
			cin >> name;
			if (ds.find(name) != ds.end()) {
				ds.erase(name);
				cout << "Deleted successfully" << endl;
			}else 
			    cout << "Not found" <<endl;
		}else
		    cout << ds.size() << endl;
	}
	return 0;
}