iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中怎么使用Map实现学生信息管理系统
  • 450
分享到

C++中怎么使用Map实现学生信息管理系统

2023-06-30 18:06:38 450人浏览 薄情痞子
摘要

本文小编为大家详细介绍“c++中怎么使用Map实现学生信息管理系统”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++中怎么使用Map实现学生信息管理系统”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、 作品

本文小编为大家详细介绍“c++中怎么使用Map实现学生信息管理系统”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++中怎么使用Map实现学生信息管理系统”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

1、 作品的功能描述:

实现一个学生信息管理系统,通过对学生信息类中的成员进行增、删、改、查从而实现对数据的操作,除此之外,还可以显示学生信息,按分数排序信息,并通过文件的读入读出实现学生信息的存储和读出。

子函数操作细节说明:

(1) 插入学生信息
通过map容器中的insert()函数进行学生信息的插入,使用二元组作为参数,first为学生姓名索引,second为学生个人信息类

(2) 删除学生信息
使用map中的erase()函数对学生信息进行删除,如果学生存在于map中,删除成功。

(3) 修改学生信息
通过map的key值调用value中的set函数,并调用infORMation类中打印学生信息的函数将学生信息显示在程序执行窗口中。

(4) 查找学生信息
通过map中的find()函数查找该信息是否存在。

(5) 列表显示学生信息
自定义一个for循环,对map进行遍历,输出map中的每个成员。

(6) 按分数排序信息
自定义一个按照数学成绩由高到低,将map中的每个成员存入到vector这个动态数组中,然后调用sort()函数按照自定义的比较顺序对学生信息进行排序。

(7) 清空数据
调用map中的clear()函数,清空map容器;

(8) 学生信息存盘
将学生信息写入文件

(9) 读出信息存盘
读入之前写入文件的学生信息

(10) 关闭系统
调用程序后,函数返回return 0, 程序运行结束。

2、 功能实现原理:

采用STL库中的map容器进行信息存储,便于查找和修改信息。

3、代码:

#include <iOStream>#include <cstring>#include <alGorithm>#include <map> #include <string>#include <vector>#include <cstdio> #include <windows.h>using namespace std;void color(int a){// 更改命令行窗口的颜色    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);}class information{ //个人信息类     private:        string name; //姓名         string id;   //学号          string sex;//性别        string classname; //课程名        string classnumber;//课程号        double score; //课程分数     public:        information() {}; //无参构造函数         information(string s, string s1, string s2, string s3, string s4, double s5) : name(s), id(s1), sex(s2), classname(s3), classnumber(s4), score(s5) {}; //构造函数                     void printinf() {            //将字符串对象转化为字符数组格式化输出            printf("%-15s%-15s%-15s%-15s%-15s%-15lf\n", name.c_str(), id.c_str(), sex.c_str(), classname.c_str(), classnumber.c_str(), score);        }        //get() set()方法         string getname() const{return name;}        string getid() const{return id;}        string getsex() const{return sex;}        string getclassname() const{return classname;}        string getclassnumber() const{return classnumber;}        double getscore() const {return score;}                void setname(string str) {name = str;}        void setid(string str) {id = str;}        void setsex(string str) {sex = str;}        void setclassname(string str) {classname = str;}        void setclassnumber(string str) {classnumber = str;}        void setscore(double str) {score = str;}        };int cmp(information a, information b){    return a.getscore() > b.getscore();}//操作类 class Do{    private:    //创建学生列表 以姓名作为键   information作为值   构成一组键值对进行存储。         map<string, information> List;    public:        void append();         // 添加        void delet();          // 删除        void change();         // 修改        void search();         // 查找        void Sort(); // 排序        void printList();     // 显示列表        void clear();         // 清空数据        void save();         // 保存数据        void read();         // 读取信息        void close();         // 关闭信息};void Do :: Sort(){    vector<information> vec;    for (auto x : List)    {        vec.push_back(x.second);    }    sort(vec.begin(), vec.end(), cmp);    for (auto x : vec)    {        cout << "姓名      " << x.getname() << " " <<  "学号      " << x.getid() << " " <<  "学生性别      " << x.getsex() << "  " << "课程名      " << x.getclassname() << "课程号      "<< x.getclassnumber() << "分数      " << x.getscore() << endl;    }}void Do::append(){    string str, str1, str2, str3, str4;    double str5;    cout << "请输入学生姓名: ";    cin >> str;        cout << "请输入学生学号:";    cin >> str1;    cout << "请输入学生性别:";    cin >> str2;    cout << "请输入课程名: ";    cin >> str3;    cout << "请输入课程号:";    cin >> str4;    cout << "请输入分数:";    cin >> str5;        information people = information(str, str1, str2, str3, str4, str5);    List.insert(pair<string, information>(str, people)); //利用insert进行插入    cout << "添加成功\n"; } void Do::delet(){    string str;    cout << "请输入要删除的同学的姓名:";    cin >> str;    List.erase(str) ? printf("删除成功\n") : printf ("删除失败,未找到该同学\n"); }void Do::change(){    string str0, str, str1, str2, str3, str4;    double str5;    cout<<"请输入要修改的学生姓名:\n";    cin>>str0;    cout<<"请输入修改后的学生信息:\n";    cout<<"姓名:";    cin>>str;    cout<<"学号:";    cin>>str1;    cout<<"性别: ";    cin>>str2;    cout<<"课程名: ";    cin >> str3;    cout << "课程号: ";    cin >> str4;    cout << "分数: ";    cin >> str5;        List[str0].setname(str);    List[str0].setid(str1);    List[str0].setsex(str2);    List[str0].setclassname(str3);    List[str0].setclassnumber(str4);    List[str0].setscore(str5);        cout<<"修改后该学生信息为: \n";    printf("%-15s%-15s%-15s%-15s\n","name","id","math","chinese");    List[str0].printinf(); }void Do::search(){    string str;    cout << "请输入要查找的学生姓名: ";    cin >> str;    if(List.find(str) != List.end()){        cout << "该学生信息为:\n";        List[str].printinf();     }    else cout << "该学生不在列表中!\n";}void Do::printList() {    if(List.size() <= 0)    {         cout << "当前列表内无任何学生,请读取文件内信息或添加联系人!\n";         return ;    }    cout << "学生列表:\n";    cout<<"---------------------------------------------------------\n";    printf("%-15s%-15s%-15s%-15s%-15s%-15s\n","name","id","sex","classname", "classnumber", "score");    for(map<string, information>::iterator it = List.begin(); it!=List.end(); it++) {        it->second.printinf();    }    cout<<"---------------------------------------------------------\n";}void Do::clear(){    List.clear();    cout << "清空完成!\n";}void Do::save(){    if(this->List.size() > 0){         char fname[50];        cout<<"请输入文件名:\n";        cin>>fname;         freopen(fname, "w", stdout); //输出重定向到Contacts.txt        for(map<string, information>::iterator it = List.begin(); it != List.end(); it++) {            it->second.printinf(); //输出到文件中         }        freopen("CON","w",stdout); //  输出重定向到控制台         cout<<"保存完毕\n";    }    else        cout<<"当前信息内无学生信息, 存盘失败!\n"; }void Do::read(){    char fname[50];    cout<<"请输入读取文件名:\n";    cin>>fname;     freopen(fname, "r", stdin); // 输入重定向到Contacts.txt"     string name, id, sex, classname, classnumber;    double score;     int flag = 0; // 标志是否成功读取文件    cout<<"文件内容:\n";     cout<<"---------------------------------------------------------\n";    while(cin>>name>>id>>sex>>classname>>classnumber>>score) {        List.insert(pair<string, information>(name,information(name,id,sex,classname, classnumber, score))); // 将文件中的学生存储到学生列表中         cout<<name<<" "<<id<<" "<<sex<<" "<<classname << " " << classnumber << " " << score <<endl;        flag = 1;     }        cout<<"---------------------------------------------------------\n";    flag ? cout<<"读取完毕\n" : cout<<"文件为空,读取失败!\n";     freopen("CON","r",stdin);  // 输入重定向到控制台 }void Do::close() {    cout<<"程序已关闭\n";}int main(){    Do arr;//创建学生类对象命名为arr        while(1)    {        color(4);//红色        cout << "*欢迎使用学生信息管理系统*\n\n";        color(3);//红色                cout<<"                     —————学生信息管理系统—————\n";        cout<<"                    | 1.        插入学生信息           |\n";        cout<<"                    | 2.        删除学生信息        |\n";        cout<<"                    | 3.        修改学生信息        |\n";        cout<<"                    | 4.        查询学生信息        |\n";            cout<<"                    | 5.        列表显示学生信息    |\n";        cout<<"                    | 6.        按分数排序信息        |\n";              cout<<"                    | 7.        清空数据               |\n";        cout<<"                    | 8.        学生信息存盘        |\n";        cout<<"                    | 9.        读出存盘信息        |\n";        cout<<"                    | 10.        关闭系统            |\n";        cout<<"                     ——————————————————\n";        color(7);         cout<<"请输入您要使用的功能的对应序号(数字键1~9):\n";        int n;        cin.clear();        cin>>n;        switch(n) {//功能选择             case 1:                arr.append();                break;            case 2:                arr.delet();                break;            case 3:                arr.change();                break;            case 4:                arr.search();                break;            case 5:                arr.printList();                break;            case 6:                arr.Sort();                break;                case 7:                arr.clear();                break;            case 8:                arr.save();                break;            case 9:                arr.read();                break;            case 10:                arr.close();                return 0;                break;            default:                cout<<"输入错误!请重新输入!\n";                break;        }        }     system("pause");    return 0; }

读到这里,这篇“C++中怎么使用Map实现学生信息管理系统”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网其他教程频道。

--结束END--

本文标题: C++中怎么使用Map实现学生信息管理系统

本文链接: https://www.lsjlt.com/news/330826.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++中怎么使用Map实现学生信息管理系统
    本文小编为大家详细介绍“C++中怎么使用Map实现学生信息管理系统”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++中怎么使用Map实现学生信息管理系统”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、 作品...
    99+
    2023-06-30
  • C++实现学生信息管理系统(Map实现)
    本文实例为大家分享了C++实现学生信息管理系统的具体代码,供大家参考,具体内容如下 1、 作品的功能描述: 实现一个学生信息管理系统,通过对学生信息类中的成员进行增、删、改、查从而实...
    99+
    2024-04-02
  • 怎么使用C++代码实现学生信息管理系统
    今天小编给大家分享一下怎么使用C++代码实现学生信息管理系统的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。编译环境:Micr...
    99+
    2023-06-30
  • 怎么使用python实现学生信息管理系统
    本文将为大家详细介绍“怎么使用python实现学生信息管理系统”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“怎么使用python实现学生信息管理系统”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体...
    99+
    2023-06-06
  • C++实现简单学生信息管理系统
    本文实例为大家分享了C++实现学生信息管理系统的具体代码,供大家参考,具体内容如下 编译环境: Microsoft Visual Studio 2019 3个头文件: Fileope...
    99+
    2024-04-02
  • C语言实现学生信息管理系统
    本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下 #define _CRT_SECURE_NO_WARNINGS #include <stdi...
    99+
    2024-04-02
  • C++如何实现学生信息管理系统
    本篇内容主要讲解“C++如何实现学生信息管理系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++如何实现学生信息管理系统”吧!实现功能上面的功能基本完全实现目前的程序其实还存在两个问题:无法...
    99+
    2023-06-30
  • C++代码实现学生信息管理系统
    本文实例为大家分享了C++实现学生信息管理系统的具体代码,供大家参考,具体内容如下 编译环境: Microsoft Visual Studio 2019 3个头文件: Fileope...
    99+
    2024-04-02
  • python怎么实现学生信息管理系统
    本文将为大家详细介绍“python怎么实现学生信息管理系统”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“python怎么实现学生信息管理系统”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下...
    99+
    2023-06-06
  • 用python实现学生信息管理系统
    用Python实现学生信息管理系统,供大家参考,具体内容如下 系统功能有: 1.录入,查找,删除,修改学生信息2.学生成绩排名3.显示全部学生信息 代码如下: filename = ...
    99+
    2024-04-02
  • C++实现学生信息管理系统(完整版)
    本文实例为大家分享了C++实现学生信息管理系统的具体代码,供大家参考,具体内容如下 实现功能 上面的功能基本完全实现 目前的程序其实还存在两个问题: 1、无法从文件中读取信息,我感...
    99+
    2024-04-02
  • python tkinter怎么实现学生信息管理系统
    这篇文章给大家分享的是有关python tkinter怎么实现学生信息管理系统的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下初学python,代码写的比较繁杂,系统功能还有完善的空间系统使用...
    99+
    2023-06-29
  • java怎样实现学生信息管理系统
    这篇文章将为大家详细讲解有关java怎样实现学生信息管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下 import java.util.Scanner;//导入jav...
    99+
    2023-05-30
    java
  • C语言使用单链表实现学生信息管理系统
    本文实例为大家分享了C语言使用单链表实现学生信息管理系统,供大家参考,具体内容如下 初学数据结构,记录一下学习过程。 运行结果如图: 1.运行界面 2.录入学生信息 3.按照总分...
    99+
    2024-04-02
  • C语言实现简单学生信息管理系统
    学生信息管理系统的功能有,也可以自己增加或者改进一些函数功能。 在main函数里调用这8个函数 学生信息包含姓名、年龄、学号、成绩,需要定义一个结构体(结构体是全局变量,所以需要全...
    99+
    2024-04-02
  • C语言实现学生宿舍信息管理系统
    本文实例为大家分享了C语言实现学生宿舍信息管理系统的具体代码,供大家参考,具体内容如下 功能描述 该学生宿舍信息管理系统主要实现的功能有:创建学生宿舍信息,显示学生宿舍信息,查询学生...
    99+
    2024-04-02
  • C语言实现学生信息管理系统开发
    本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下 程序介绍 运行程序时,首先进入到菜单部分,菜单部分提供了菜单显示和输入功能部分。其运行效果如图所示...
    99+
    2022-11-13
    C语言学生信息系统 C语言学生管理系统 C语言信息管理系统
  • JavaWeb实现学生信息管理系统(1)
    这是一个很简单的学生信息管理系统,会用到很多小知识,比如说: 数据库连接池 DBUtils JSP、EL、JSTL MVC设计模式 JavaWeb...
    99+
    2024-04-02
  • JavaWeb实现学生信息管理系统(2)
    本文接着上一篇,继续为大家分享了JavaWeb实现学生信息管理系统的第二篇,供大家参考,具体内容如下 今日任务:实现学生管理系统的查找和添加功能! 一、查询学生信息 1. index...
    99+
    2024-04-02
  • JavaScript+HTML实现学生信息管理系统
    目录一、前言二、效果图三、代码四、学生信息管理系统主界面一、前言 用数组来存储所有学生对象的信息,实现了双向更新,初始时(数组内的对象信息“填充界面”),后面的界面操作可以更新数组内...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作