<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了C++實現學生資訊管理系統的具體程式碼,供大家參考,具體內容如下
實現一個學生資訊管理系統,通過對學生資訊類中的成員進行增、刪、改、查從而實現對資料的操作,除此之外,還可以顯示學生資訊,按分數排序資訊,並通過檔案的讀入讀出實現學生資訊的儲存和讀出。
子函數操作細節說明:
(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, 程式執行結束。
採用STL庫中的map容器進行資訊儲存,便於查詢和修改資訊。
/* 為了實現高效的學生管理系統,主要採用了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; }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45