学生管理系统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
相关文章推荐
- sql server触发器
- LeetCode之24----Swap Nodes in Pairs
- Jenkins入门系列
- 学习周总结
- CommonJS和AMD规范
- 51Nod-1066-Bash游戏
- leetcode——136——Single Number
- BestCoder Round #80 C (hdu5667) 【矩阵快速幂】
- Gradle DSL method not found: 'runProguard()'
- Android Hal层简要分析
- 阿里巴巴Java面试题
- LeetCode之24----Swap Nodes in Pairs
- go的同步模型
- shell脚本与或非
- HDU 1157 Who's in the Middle(排序取中间值)
- 使用assembly将maven项目pom.xml中的jar包打包
- z-index问题
- 十天冲刺开发第四天个人工作总结
- 严重: StandardServer.await: create[localhost:8005]
- 正式赛-ZZULIOJ-1881-蛤玮的机房(并查集)