c/c++语言开发共享C++实现学生信息管理系统(Map实现)

本文实例为大家分享了c++实现学生信息管理系统的具体代码,供大家参考,具体内容如下1、 作品的功能描述:实现一个学生信息管理系统,通过对学生信息类中的成员进行增、删、改、查从而实现对数据的操作,除此之

c/c++开发分享C++实现学生信息管理系统(Map实现)实例为大家分享了c++实现学生信息管理系统的具体代码,供大家参考,具体内容如下

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、代码:

/*      为了实现高效的学生管理系统,主要采用了stl库中的 map容器来进行信息存储。            面向对象程序设计课程设计---实训课程序设计   */  #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%-15lfn", 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%-15sn","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%-15sn","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 << "*欢迎使用学生信息管理系统*nn";          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/c++开发分享C++实现学生信息管理系统(Map实现)的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<计算机技术网(www.ctvol.com)!!>。

需要了解更多c/c++开发分享C++实现学生信息管理系统(Map实现),都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/1238118.html

(0)
上一篇 2022年9月11日
下一篇 2022年9月11日

精彩推荐