C语言 · 成绩查询系统
抱歉,昨天忘了往博客上更新,今天补上。
成绩查询系统
分值: 21
数学老师小y 想写一个成绩查询系统,包含如下指令:
- insert [name] [score],向系统中插入一条信息,表示名字为name的学生的数学成绩为score。
- find [name],表示查找名字为name的学生的数学成绩。
注意有些同学可能会为了刷分多次选课,查询的时候给出最大成绩即可。学生的名字是由小写字母组成。成绩是一个 0…100 的整数。
老师找到你,想你帮他完成这个系统。
输入格式
输入若干行,每行都是insert [name] [score]或者find [name]的形式,或一行end表示输入结束。输入行数不大于 1000,每个学生名字长度不大于 20 个字符。
输出格式
对于每个查询,输出查询的学生的最高成绩,如果系统中不存在该学生,输出 −1。
样例输入
insert zhangsan 90
insert lisi 78
insert xiaoming 86
find xiaoming
find jack
end
样例输出
86
-1
作者注释:本人能力有限,用纯C写的有bug,整std写了一个,仅供参考。
对了,代码功能添加了一个查询所有记录的功能,删掉即符合题意了。
#include<stdio.h>
#include<vector>
#include<string>
#include<iostream>
#include<math.h>
using namespace std;
struct info{
string name;
int score;
}stu;
/*
定义find函数:
功能:在容器中按姓名查找是否有相同姓名的记录;
参数:结构体类型的容器,字符串类型的姓名;
返回值类型:指向某条数据的指针。
*/
vector<info>::iterator find(vector<info>&stu,string name){
vector<info>::iterator it;//声明迭代器
for(it=stu.begin();it!=stu.end();it++){
if(it->name==name)
break;
}
return it;//返回的是指向某条数据的指针
}
int main(){
string sign,name;
int score;
vector<info> inf;//声明结构体类型的容器,用来存放数据
cin>>sign;//录入操作符
vector<info>::iterator it;//声明迭代器
while(sign!="end"){
if(sign=="insert"){
cin>>stu.name>>stu.score;//录入
it = find(inf,stu.name);//调用函数
if(it==inf.end()){
inf.push_back(stu);
}else if(it->score<stu.score){//若刚刚输入的成绩大于已存的成绩
inf.insert(it,stu);//存放分数高的记录
}else{//没有找到,新存一条记录
inf.insert(it+,stu);
}
}
else if(sign=="find"){
cin>>stu.name;//录入
it=find(inf,stu.name);//调用函数
cout<<it->score<<endl;
}
else if(sign=="all"){
for(it=inf.begin();it!=inf.end();it++){
cout<<it->name<<" "<<it->score<<endl;
}
}
cin>>sign;//执行完一遍操作,进入下一遍
}
return ;
}

此题学到一个处理出入输出的技巧:用while来做判断。
如题中while(sign!="end"){······}。
补:今天有人提到此题,用map写:
#include<map>
#include<math.h>
#include<iostream>
using namespace std;
int main(){
map<string,int> m;
string sign,name;
int score;
while(){
cin>>sign;
if(sign=="end"){
break;
}
else if(sign=="insert"){
cin>>name>>score;
if(score>m[name]){
m[name] = score;
}
}
else if(sign=="find"){
cin>>name;
if(m[name]==){
cout<<"-1"<<endl;
}else{
cout<<m[name]<<endl;
}
}
}
return ;
}
C语言 · 成绩查询系统的更多相关文章
- C语言程序设计#成绩查询系统
学生成绩管理系统 [注释]:请点赞,好人一生平[yi]安[wo]. #codeblocks程序下编写 #include<stdio.h>#include<stdlib.h>// ...
- 暑假闲着没事第一弹:基于Django的长江大学教务处成绩查询系统
本篇文章涉及到的知识点有:Python爬虫,MySQL数据库,html/css/js基础,selenium和phantomjs基础,MVC设计模式,ORM(对象关系映射)框架,django框架(Pyt ...
- C语言身份证信息查询系统(修改版)
很久以前写了一个<C语言身份证信息查询系统>,如果你点击链接进去看了. 估计也会被我那磅礴大气的代码震惊到的,最近复习/学习文件操作,把代码改了改,算是对以前还不会文件操作的时候的愿望,哈 ...
- C语言-用函数实现社保工资查询系统
需求: 1.有登陆操作,超过三次需重新打开登录 2.查询五险一金.税前税后工资计算,个人与单位应缴明细 3.输入税后工资和税前工资都可查询 4.退出有询问确认操作 代码如下; #include< ...
- 用excel打造报表查询系统
网络数据库以及ERP在中小型企业中日益风行,虽然ERP功能强大,但有的ERP报表系统中规范的报表较少,主要提供二次开发接口或通过如CRYSTALREPORT等其他报表工具进行管理,其实我们可以使用Ex ...
- 【百度地图API】建立全国银行位置查询系统(二)——怎样为地图添加控件
原文:[百度地图API]建立全国银行位置查询系统(二)--怎样为地图添加控件 <摘要>你将在第二章中学会以下知识: 使用手写代码的利器——notepad++: 如何为地图添加控件——鱼骨. ...
- Android查询系统的音频(音乐播放器的核心)
//查询系统的音频库 public static List<MusicBean> getMusicInfo(Context context){ List<MusicBean> ...
- PHP中CURL技术模拟登陆抓取网站信息,用与微信公众平台成绩查询
伴随微信的红火,微信公众平台成为许多开发者的下一个目标.笔者本身对于这种新鲜事物没有如此多的吸引力.但是最近有朋友帮忙开发微信公众平台中一个成绩查询的功能.于是便在空余时间研究了一番. 主要的实现步骤 ...
- 【云图】如何制作全国KTV查询系统?
原文:[云图]如何制作全国KTV查询系统? 摘要:本文以[唱吧]531麦霸音乐节为案例,详细解读了如何导入自有数据到高德云图,并进行检索和展示.最后,调起高德mobile地图来进行路线规划和周边查询. ...
随机推荐
- 在CentOS上编译安装MySQL 5.7.13步骤详解
MySQL 5.7主要特性 更好的性能 对于多核CPU.固态硬盘.锁有着更好的优化,每秒100W QPS已不再是MySQL的追求,下个版本能否上200W QPS才是用户更关心的. 更好的InnoDB存 ...
- 浅谈cocos2dx(18) 中工厂模式
----我的生活.我的点点滴滴! ! cocos2d-x中也有工厂模式.何为工厂模式,顾名思义就是用来产生产品的,工厂就是用来创建其它类对象的类,我们把这个创建其它类对象的类叫做工厂类.而这些被创建的 ...
- Android Studio主题设置、颜色背景配置
打开http://color-themes.com/有很多样式可供选择 导入方式 下载主题—xxx.jar 注意:如果我们下载下来的jar名字如果有空格,一定要把空格去掉,同时文件路径中不要含有中文 ...
- HTML自定义对象与属性探究(谷歌,火狐,IE9浏览器没问题)
1.自定义标签 <zqz>asdas</zqz> <style> zqz{ color:red; } </style> 页面变色 2.自定义标签的hov ...
- 解决方案:android monkeyrunner:Timeout while trying to create chimp mananger(device = MonkeyRunner.waitForConnection()一直报错的问题)
monkeyrunner在执行device = MonkeyRunner.waitForConnection()一直报错的问题 (或者[main] [com.android.chimpchat.adb ...
- 微信支付错误,页面URL末注册
最近在做个项目用到微信支付的JSSDK支付时候碰到“URL末注册的问题”,可是我已经在公众平台里的支付目录里添加了,测试了几次都是这个问题,最后才发现原来是大小写的问题,还有我的支付页面是ASP.NE ...
- Atitti opencv2.4 实现的人脸检测 attilax总结
Atitti opencv2.4 实现的人脸检测 attilax总结 1.1. 1.OpenCV人脸检测的方法1 1.2. /atiplat_img/src/com/attilax/facedetec ...
- 深入理解Linux内核-进程调度
1.什么时候进行进程切换 调度策略目标:1.进程响应尽量快:2.后台作业吞吐量尽量高:3.尽可能避免进程饥饿:4.低优先级和高优先级进程需要尽量调和. 调度策略:决定什么时候选择什么进程运行的规则.基 ...
- angular学习笔记(三十)-指令(7)-compile和link(1)
这篇主要讲解指令中的compile,以及它和link的微妙的关系. link函数在之前已经讲过了,而compile函数,它和link函数是不能共存的,如果定义了compile属性又定义link属性,那 ...
- 未能为数据库 '*'中得对象'*'分配空间,因文件组'PRIMARY'已满
服务器使用mssqlserver2005,最近经常出现无法新增信息错误,查看日志,发现严重错误提示,内容大致为: 无法为数据库 'weixin_main' 中的对象 'dbo.wx_logs'.'PK ...