您的位置:首页 > 其它

学生管理系统map实现篇

2016-04-21 19:08 253 查看
<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;}
else
break;
}
}
}

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
acf0
())  {
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: