学生管理系统map实现篇

来源:互联网 发布:js 检测分辨率 编辑:程序博客网 时间:2024/06/05 11:19
<pre name="code" class="cpp">#ifndef student_h#define student_h#include<string>#include<iostream>#include<set>using namespace std;class student{private:string name;string sex;set<string> courseset;public:friend ostream& operator<<(ostream& cout,student &s);             student& operator=(const student& s);student(){};student(string n,string s):name(n),sex(s){};void Addcourse();void Getcourse();};#endif

#include"student.h"ostream& operator<<(ostream& cout,student &s){cout<<s.name<<"\t"<<s.sex<<endl;return cout;}student& student::operator=(const student& s){this->name=s.name;this->sex=s.sex;return *this;}void student::Addcourse(){char v;do{cout<<"输入所选课程名称"<<endl;string name;//double grade;//Course cr(name,grade);cin>>name;//>>grade;courseset.insert(name);cout<<"是否继续选课?(y|Y)";cin>>v;}while(v=='y'||v=='Y');}void student::Getcourse(){set<string>::iterator p;p=courseset.begin();while(p!=courseset.end()){cout<<*p<<"\t";p++;}cout<<endl;}

#include"student.h"#include<iostream>#include<map>#include<string>#include<fstream>using namespace std;map<string,student> stumap;map<string,student>::iterator p;//set<Course> stuset;void main(){void Add_student();void Delete_student();void display();void Find_student();void Change_student();void Write_to_File();int n;while(true){cout<<"--------------------------学生管理系统--------------------------"<<endl<<"                --------------(1)-------录入学生"<<endl<<"                --------------(2)-------打印输出"<<endl<<"                --------------(3)-------修改信息"<<endl<<"                --------------(4)-------删除信息"<<endl<<"                --------------(5)-------查找学生"<<endl<<"                --------------(6)-------写入文件"<<endl<<"                --------------(7)-------退出系统"<<endl<<"输入您要进行的操作"<<endl;cin>>n;switch(n){case 1:Add_student();break;case 2:display();break;case 3:Change_student();break;case 4:Delete_student();break;case 5:Find_student();break;case 6:Write_to_File();break;case 7:exit(0);}}}void Add_student(){string n,s; string id; char choose;for(int i=1;;i++){cout<<"input id,name,sex:";cin>>id>>n>>s;if(id=="0")break;student stud(n,s);stud.Addcourse();stumap.insert(make_pair(id,stud));cout<<endl;if(i%3==0){cout<<"是否继续录入学生信息?(y|Y)";cin>>choose;if(choose=='y'||choose=='Y'){system("cls");continue;}elsebreak;}}}void Delete_student(){cout<<"请输入需要删除的学生学号"<<endl;string del_id;char choose;cin>>del_id;cout <<del_id<<"号学生的基本信息为:" <<endl<< stumap.find(del_id)->second << endl;cout<<"确定删除?(y||Y)"<<endl;cin>>choose;if(choose=='y'||choose=='Y')stumap.erase(stumap.find(del_id));        }void display(){cout<<"下面是"<<stumap.size()<<"个学生的信息"<<endl;for(p=stumap.begin();p!=stumap.end();p++){cout<<p->first<<"号学生信息:"<<endl<<"姓名 性别:"<<p->second;cout<<"所选课程:"<<endl;p->second.Getcourse();cout<<endl;}}void Find_student(){cout<<"输入需要查找学生的学号:"<<endl;string id;bool find=false;cin>>id;for(p=stumap.begin();p!=stumap.end();p++)if(p->first==id){cout<<"该学生信息为:"<<p->second;cout<<"所选课程:"<<endl;p->second.Getcourse();cout<<endl;find=true;}if(!find)cout<<"没有该学生信息!"<<endl;}void Change_student(){string id,name,sex;cout<<"请输入需要修改信息学生的学号";cin>>id;p=stumap.find(id);if(p==stumap.end()){cout<<"抱歉,没有该学生!"<<endl;return;}cout<<"请输入学生信息:";cin>>name>>sex;student stu(name,sex);stu.Addcourse();stumap[id]=stu;}void Write_to_File(){map<string,student> vm;student stu;string num;ofstream out("22.txt",ios::binary);  if (!out.is_open())  {   cout << "File is open fail!" << endl;return;    }   p = stumap.begin();   while (p != stumap.end())  {   out.write((char*)&p->first,sizeof(string));   out.write((char*)&p->second,sizeof(student));   p++;  }   out.close(); ifstream in("22.txt",ios::binary);  if (!in.is_open())  {   cout << "File is open fail!" << endl;return;    }   while (!in.eof())  {   in.read((char*)&num,sizeof(string));   in.read((char*)&stu,sizeof(student));   vm.insert(make_pair(num,stu));  }   in.close();for(p=vm.begin();p!=vm.end();p++){cout<<p->first<<"号学生信息:"<<endl<<"姓名 性别:"<<p->second;cout<<"所选课程:"<<endl;p->second.Getcourse();cout<<endl;}}



还有文件的输入输出未实现...............................................................未完待续.... 2016/04/21 19:12

完成文件的输入输出,并在学生类里添加set<string>型课程信息,但还不知道如何实现set<Course>(Course类中有课程名,分数信息),并实现按course分数进行排序,选择等操作                               ................................................................未完待续.....2016/04/22  18:05

0 0