您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“C++如何實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“C++如何實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)”吧!
實(shí)現(xiàn)功能
上面的功能基本完全實(shí)現(xiàn)
目前的程序其實(shí)還存在兩個(gè)問題:
1、無法從文件中讀取信息,我感覺是格式問題,輸出的格式需要改,但是這樣的話,保存在文件的信息看起來就不是很方便了
2、保存新同學(xué)的學(xué)號(hào)與當(dāng)前記錄的學(xué)號(hào)相同時(shí)不會(huì)提醒,這個(gè)實(shí)現(xiàn)起來比較容易,在保存的時(shí)候,再加一個(gè)鏈表查詢就可以了,是我太懶了。
源碼附上
#include <cstdlib> #include <iostream> #include <string> #include<windows.h> #include<conio.h> #include <fstream> using namespace std; #define null NULL class student { private: int flag; friend class studentMessage; student *next; //節(jié)點(diǎn)指針 string name; //學(xué)生姓名 string address; //家庭住址 int age; //年齡 int id; //學(xué)號(hào) string sex; char grade; 班級(jí) // A 代表大學(xué)生 // B 代表中學(xué)生 // C 代表小學(xué)生 double chinese , math , english; //語(yǔ)文 , 數(shù)學(xué) , 英語(yǔ) double history , geography ; //歷史 , 地理 string major; long long int TL; // 專業(yè) , 電話 public: static int num_total; //總數(shù) static int num_sex; static int num_age; //小學(xué)生初始化 student(int _id,string _name,string _sex,int _age,char _grade,double _chinese,double _math,double _english) { name = _name; grade = _grade; age = _age; sex = _sex; id = _id; chinese = _chinese; math = _math; english = _english; next = NULL; } //初中生初始化 student(int _id,string _name,string _sex,int _age,char _grade,double _geography,double _history,string _address) { name = _name; grade = _grade; age = _age; sex = _sex; id = _id; geography = _geography; history = _history; address = _address; next = NULL; } //大學(xué)生初始化 student(int _id,string _name,string _sex,int _age,char _grade,string _major,string _address,long long int _TL) { name = _name; grade = _grade; age = _age; sex = _sex; id = _id; major = _major; address = _address; TL = _TL; next = NULL; } //構(gòu)造函數(shù) student() //為studentMessage初始化頭結(jié)點(diǎn)用 { name = "null"; sex = "null"; address = "null"; age = 0; id = 0; chinese = 0; math = 0; english = 0; grade = '0'; geography = 0; history = 0; major = "null"; TL = 0; next = NULL; } ~student(){} void swap(student*); }; int student::num_total = 0; 初始化 int student::num_sex = 0; int student::num_age = 0; void student::swap(student *q) { string _name,_sex,_address; int _age,_id; char grade; 班級(jí) // A 代表大學(xué)生 // B 代表中學(xué)生 // C 代表小學(xué)生 double _chinese , _math , _english; //語(yǔ)文 , 數(shù)學(xué) , 英語(yǔ) double _history , _geography ; //歷史 , 地理 string _major; long long int _TL; // 專業(yè) , 電話 _chinese = chinese; chinese = q->chinese; q->chinese = _chinese; _math = math; math = q->math; q->math = _math; _english = english; english = q->english; q->english = _english; _history = history; history = q->history; q->history = _history; _geography = geography; geography = q->geography; q->geography = _geography; _major = major; major = q->major; q->major = _major; _TL = TL; TL = q->TL; q->TL = _TL; _name = name; name = q->name; q->name = _name; _sex = sex; sex = q->sex; q->sex = _sex; _address = address; address = q->address; q->address = _address; _age = age; age = q->age; q->age = _age; _id = id; id = q->id; q->id = _id; } class studentMessage { private: student *first; //頭指針 int num; //信息中的學(xué)生人數(shù) public: studentMessage() { num = 0; //初始化學(xué)生人數(shù)為0 first = new student; //初始化頭結(jié)點(diǎn) } ~studentMessage(){delete first;} /*管理系統(tǒng)常規(guī)操作*/ void Insret(void); //插入 void Display(void); //顯示 void Delete(void); //刪除 void Search(void); //搜索 void Change(void); //改動(dòng) void SearchByid(void); //按照學(xué)號(hào)查找 void SearchByname(void); //按照姓名查找 int menu(void); //初始的菜單 void clear(void); //清空列表 void tongji(void); //統(tǒng)計(jì)學(xué)生人數(shù) void save(void); void read(void); }; int studentMessage::menu(void) { system("cls"); int ch; cout<<endl;cout<<endl;cout<<endl;cout<<endl; cout<<"**********************************************************************"<<endl; cout<<"======================================================================"<<endl; cout<<"***************************學(xué)生信息管理系統(tǒng)***************************"<<endl;cout<<endl; cout<<endl; cout<<" 1.添加功能"<<endl; cout<<" 2.查詢功能"<<endl; cout<<" 3.顯示功能"<<endl; cout<<" 4.編輯功能"<<endl; cout<<" 5.刪除功能"<<endl; cout<<" 6.統(tǒng)計(jì)功能"<<endl; cout<<" 7.保存功能"<<endl; cout<<" 8.全部刪除"<<endl; cout<<" 0.退出系統(tǒng)"<<endl;cout<<endl; cout<<endl; cout<<"***********************************************************************"<<endl; cout<<"======================================================================="<<endl; cout<<"***********************************************************************"<<endl; cout<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<endl; cin >> ch; cout<<"\n\n\n"<<endl; return ch; } void studentMessage::save(void) { system("cls"); fstream f("student.txt",ios::out); int i; if(!f) { cout<<endl;cout<<endl;cout<<endl; cout<<"文件保存失敗!!??!按任意鍵返回..."<<endl; if(i = getch()) return ; } if(student::num_total == 0) { f<<"當(dāng)前記錄中無學(xué)生..."<<endl; } else { student *p = first->next; while(p != null) { f<<"學(xué)號(hào):"<<p->id<<" "<<endl; f<<"姓名:"<<p->name<<endl; f<<"性別(boy/girl):"<<p->sex<<endl; f<<"年齡:"<<p->age<<endl; f<<"班級(jí):"<<p->grade<<endl; if(p->grade == 'A') { f<<"專業(yè):"<<p->major<<endl; f<<"家庭住址:"<<p->address<<endl; f<<"聯(lián)系方式:"<<p->TL<<endl; } else if(p->grade == 'B') { f<<"地理成績(jī):"<<p->geography<<endl; f<<"歷史成績(jī):"<<p->history<<endl; f<<"家庭住址:"<<p->address<<endl; } else { f<<"語(yǔ)文成績(jī):"<<p->chinese<<endl; f<<"數(shù)學(xué)成績(jī):"<<p->math<<endl; f<<"英語(yǔ)成績(jī):"<<p->english<<endl; } f<<"------------------------------------------------"<<endl; p = p->next; } } f.close(); cout<<endl;cout<<endl;cout<<endl; cout<<"學(xué)生信息文件已創(chuàng)建,按任意鍵繼續(xù)"<<endl; i = getch(); } void studentMessage::read(void) { system("cls"); string name; int age; int id; char grade; string sex,address; double chinese , math , english; //語(yǔ)文 , 數(shù)學(xué) , 英語(yǔ) double history , geography ; //歷史 , 地理 string major; long long int TL; // 專業(yè) , 電話 int i; char ch; ifstream f("student.txt"); while(1) { f>>ch; if(f.eof()) { cout<<"文件為空!按任意鍵返回"<<endl; if(i = getch()) return ; } f>>name; f>>sex; f>>age; f>>id; f>>grade; if(grade=='A') { f>>major; f>>address; f>>TL; } else if(grade == 'B') { f>>geography; f>>history; f>>address; } else { f>>chinese; f>>math; f>>english; } student::num_total ++; if(sex=="boy") student::num_sex++; if(age>=18) student::num_age ++; student *newstu = new student(); if(grade == 'A') newstu = new student(id,name,sex,age,grade,major,address,TL); else if(grade == 'B') newstu = new student(id,name,sex,age,grade,geography,history,address); else if(grade == 'C') newstu = new student(id,name,sex,age,grade,chinese,math,english); student *p = first; while(p->next != NULL) { p = p->next; } p->next = newstu; newstu->next = null; } } /統(tǒng)計(jì) void studentMessage::tongji(void) { system("cls");// cout<<"學(xué)生人數(shù)一共為:" <<student::num_total<<endl; cout<<"男生一共有:"<<student::num_sex<<endl; cout<<"女生一共有:"<<student::num_total-student::num_sex<<endl; cout<<"成年人有:"<<student::num_age<<endl; int i; cout<<endl;cout<<endl;cout<<endl; cout<<"按任意鍵繼續(xù)"<<endl; i = getch(); } //插入 void studentMessage::Insret(void) { system("cls");// string name; int age; int id; char grade; string sex,address; double chinese , math , english; //語(yǔ)文 , 數(shù)學(xué) , 英語(yǔ) double history , geography ; //歷史 , 地理 string major; long long int TL; // 專業(yè) , 電話 cout<<"請(qǐng)輸入學(xué)生姓名: "; cin>>name; cout<<"請(qǐng)輸入學(xué)生性別(boy/girl): "; cin>>sex; cout<<"請(qǐng)輸入學(xué)生年齡: "; cin>>age; cout<<"請(qǐng)輸入學(xué)生學(xué)號(hào): "; cin>>id; cout<<"下面請(qǐng)輸入學(xué)生班級(jí)(大學(xué)生輸入'A',初中生輸入'B',小學(xué)生輸入'C'): "; cout<<endl; cin>>grade; cout<<endl; if(grade=='A') { cout<<"請(qǐng)輸入專業(yè):"<<endl; cin>>major; cout<<"請(qǐng)輸入家庭住址:"<<endl; cin>>address; cout<<"請(qǐng)輸入聯(lián)系電話:"<<endl; cin>>TL; } else if(grade == 'B') { cout<<"請(qǐng)輸入地理成績(jī):"<<endl; cin>>geography; cout<<"請(qǐng)輸入歷史成績(jī):"<<endl; cin>>history; cout<<"請(qǐng)輸入家庭住址:"<<endl; cin>>address; } else { cout<<"請(qǐng)輸入語(yǔ)文成績(jī):"<<endl; cin>>chinese; cout<<"請(qǐng)輸入數(shù)學(xué)成成績(jī):"<<endl; cin>>math; cout<<"請(qǐng)輸入英語(yǔ)成績(jī):"<<endl; cin>>english; } student::num_total ++; if(sex=="boy") student::num_sex++; if(age>=18) student::num_age ++; student *newstu = new student(); if(grade == 'A') newstu = new student(id,name,sex,age,grade,major,address,TL); else if(grade == 'B') newstu = new student(id,name,sex,age,grade,geography,history,address); else if(grade == 'C') newstu = new student(id,name,sex,age,grade,chinese,math,english); student *p = first; while(p->next != NULL) { p = p->next; } p->next = newstu; newstu->next = null; } //00000000000000000000000/ void studentMessage::Display(void) { system("cls"); if(student::num_total == 0) { cout<<"當(dāng)前記錄中無學(xué)生..."<<endl; } else { student *p = first->next; while(p != null) { cout<<"學(xué)號(hào):"<<p->id<<" "<<endl; cout<<"姓名:"<<p->name<<endl; cout<<"性別(boy/girl):"<<p->sex<<endl; cout<<"年齡:"<<p->age<<endl; cout<<"班級(jí):"<<p->grade<<endl; if(p->grade == 'A') { cout<<"專業(yè):"<<p->major<<endl; cout<<"家庭住址:"<<p->address<<endl; cout<<"聯(lián)系方式:"<<p->TL<<endl; } else if(p->grade == 'B') { cout<<"地理成績(jī):"<<p->geography<<endl; cout<<"歷史成績(jī):"<<p->history<<endl; cout<<"家庭住址:"<<p->address<<endl; } else { cout<<"語(yǔ)文成績(jī):"<<p->chinese<<endl; cout<<"數(shù)學(xué)成績(jī):"<<p->math<<endl; cout<<"英語(yǔ)成績(jī):"<<p->english<<endl; } cout<<"------------------------------------------------"<<endl; p = p->next; } } int i; cout<<endl;cout<<endl;cout<<endl; cout<<"按任意鍵繼續(xù)"<<endl; i = getch(); } //刪除功能~~~~~~~~~~~~~~~~ void studentMessage::Delete(void) { string _name; system("cls"); cout<<"請(qǐng)輸入需要?jiǎng)h除的同學(xué)姓名:"<<endl; cin>>_name; int k=0; student *p = first; student *pre = first; while(p->next) { pre=p->next; if(pre->name == _name) { p->next=pre->next; k=1; delete pre; } p=p->next; } if(k==0&&p->name!=_name) cout<<"記錄為空!"<<endl; else { student::num_total--; if(p->sex=="boy") student::num_sex--; if(p->age>=18) student::num_age--; } int i; cout<<endl;cout<<endl;cout<<endl; cout<<"按任意鍵繼續(xù)"<<endl; i = getch(); } void studentMessage::Search(void) { system("cls");/ int temp = 0; cout<<"請(qǐng)輸入查找的條件,有如下選項(xiàng)..."<<endl; cout<<"按照學(xué)號(hào)查找(請(qǐng)輸入【1】) 按照姓名查找(請(qǐng)輸入【2】) "<<endl; cout<<" 退出(請(qǐng)輸入【666】)"<<endl; cin>>temp; switch(temp) { case 1: SearchByid(); break; case 2: SearchByname(); break; case 666: return; default: cout<<"輸入有誤..."<<endl; } } void studentMessage::SearchByid(void) { system("cls");// int _id; int flag = 0; cout<<"請(qǐng)輸入待查找學(xué)生的學(xué)號(hào):"; cin >> _id; student *p = first->next; while(p != null) { if(p->id == _id) { flag = 1; cout<<"下面是查找匹配結(jié)果:"<<endl; cout<<endl;cout<<endl;cout<<endl; cout<<"學(xué)號(hào):"<<p->id<<" "<<endl; cout<<"姓名:"<<p->name<<endl; cout<<"性別(boy/girl):"<<p->sex<<endl; cout<<"年齡:"<<p->age<<endl; cout<<"班級(jí):"<<p->grade<<endl; if(p->grade == 'A') { cout<<"專業(yè):"<<p->major<<endl; cout<<"家庭住址:"<<p->address<<endl; cout<<"聯(lián)系方式:"<<p->TL<<endl; } else if(p->grade == 'B') { cout<<"地理成績(jī):"<<p->geography<<endl; cout<<"歷史成績(jī):"<<p->history<<endl; cout<<"家庭住址:"<<p->address<<endl; } else { cout<<"語(yǔ)文成績(jī):"<<p->chinese<<endl; cout<<"數(shù)學(xué)成績(jī):"<<p->math<<endl; cout<<"英語(yǔ)成績(jī):"<<p->english<<endl; } } p = p->next; } if(flag == 0) { cout<<"未找到匹配項(xiàng)..."<<endl; } int i; cout<<endl;cout<<endl;cout<<endl; cout<<"按任意鍵繼續(xù)"<<endl; i = getch(); } void studentMessage::SearchByname(void) { system("cls");/ string _name; int flag = 0; cout<<"請(qǐng)輸入待查找的學(xué)生姓名: "; cin >> _name; student *p = first->next; while(p != null) { if(p->name == _name) { cout<<"下面是查找匹配結(jié)果:"<<endl; cout<<endl;cout<<endl;cout<<endl; cout<<"學(xué)號(hào):"<<p->id<<" "<<endl; cout<<"姓名:"<<p->name<<endl; cout<<"性別(boy/girl):"<<p->sex<<endl; cout<<"年齡:"<<p->age<<endl; cout<<"班級(jí):"<<p->grade<<endl; if(p->grade == 'A') { cout<<"專業(yè):"<<p->major<<endl; cout<<"家庭住址:"<<p->address<<endl; cout<<"聯(lián)系方式:"<<p->TL<<endl; } else if(p->grade == 'B') { cout<<"地理成績(jī):"<<p->geography<<endl; cout<<"歷史成績(jī):"<<p->history<<endl; cout<<"家庭住址:"<<p->address<<endl; } else { cout<<"語(yǔ)文成績(jī):"<<p->chinese<<endl; cout<<"數(shù)學(xué)成績(jī):"<<p->math<<endl; cout<<"英語(yǔ)成績(jī):"<<p->english<<endl; } } p = p->next; } if(flag == 0) { cout<<"未找到匹配項(xiàng)..."<<endl; } int i; cout<<endl;cout<<endl;cout<<endl; cout<<"按任意鍵繼續(xù)"<<endl; i = getch(); } void studentMessage::Change(void) { system("cls");// string _name,_sex,_address,_major; char _grade; long long int _TL; double _chinese , _math , _english; //語(yǔ)文 , 數(shù)學(xué) , 英語(yǔ) double _history , _geography ; //歷史 , 地理 int flag = 0,temp; int _id,_age; int course = 0; cout<<"請(qǐng)輸入需要改動(dòng)信息的學(xué)生的姓名: "; cin >> _name; student *p = first->next; while(p != null) { if(p->name == _name) { flag = 1; cout<<"該學(xué)生當(dāng)前信息如下:"<<endl; cout<<"學(xué)號(hào):"<<p->id<<" "<<endl; cout<<"姓名:"<<p->name<<endl; cout<<"性別(boy/girl):"<<p->sex<<endl; cout<<"年齡:"<<p->age<<endl; cout<<"班級(jí):"<<p->grade<<endl; if(p->grade == 'A') { cout<<"專業(yè):"<<p->major<<endl; cout<<"家庭住址:"<<p->address<<endl; cout<<"聯(lián)系方式:"<<p->TL<<endl; } else if(p->grade == 'B') { cout<<"地理成績(jī):"<<p->geography<<endl; cout<<"歷史成績(jī):"<<p->history<<endl; cout<<"家庭住址:"<<p->address<<endl; } else { cout<<"語(yǔ)文成績(jī):"<<p->chinese<<endl; cout<<"數(shù)學(xué)成績(jī):"<<p->math<<endl; cout<<"英語(yǔ)成績(jī):"<<p->english<<endl; } cout<<"請(qǐng)指明哪一項(xiàng)需要修改..."<<endl; cout<<"修改學(xué)號(hào)(輸入【1】) 修改年齡(輸入【2】)修改班級(jí)信息(輸入【3】) "<<endl; cout<<" 退出(輸入【666】)"<<endl; cin >> temp; switch(temp) { case 1: { cout<<"請(qǐng)輸入新的學(xué)號(hào):"<<endl;cin>>_id; p->id = _id; } break; case 2: { cout<<"請(qǐng)輸入新的年齡:"<<endl;;cin>>_age; p->age = _age; } break; case 3: { cout<<"請(qǐng)輸入新的班級(jí)信息(大學(xué)生輸入'A',初中生輸入'B',小學(xué)生輸入'C'):"<<endl;;cin>>_grade; p->grade = _grade; if(_grade=='A') { cout<<"請(qǐng)輸入專業(yè):"<<endl; cin>>_major; p->major = _major; cout<<"請(qǐng)輸入家庭住址:"<<endl; cin>>_address; p->address = _address; cout<<"請(qǐng)輸入聯(lián)系電話:"<<endl; cin>>_TL; p->TL = _TL; } else if(_grade == 'B') { cout<<"請(qǐng)輸入地理成績(jī):"<<endl; cin>>_geography; p->geography = _geography; cout<<"請(qǐng)輸入歷史成績(jī):"<<endl; cin>>_history; p->history = _history; cout<<"請(qǐng)輸入家庭住址:"<<endl; cin>>_address; p->address = _address; } else { cout<<"請(qǐng)輸入語(yǔ)文成績(jī):"<<endl; cin>>_chinese; p->chinese = _chinese; cout<<"請(qǐng)輸入數(shù)學(xué)成成績(jī):"<<endl; cin>>_math; p->major = _math; cout<<"請(qǐng)輸入英語(yǔ)成績(jī):"<<endl; cin>>_english; p->english = _english; } } break; case 666: return ; cout<<"修改后的信息如下: "<<endl; cout<<"姓名:"<<p->name<<" "<<endl; cout<<"性別:"<<p->sex<<" "<<endl; cout<<"年齡:"<<p->age<<" "<<endl; cout<<"學(xué)號(hào):"<<p->id<<" "<<endl; cout<<"地址:"<<p->address<<" "<<endl; default: cout<<"輸入有誤..."<<endl; } } p = p->next; } if(flag == 0) cout<<"當(dāng)前記錄中沒有此學(xué)生..."<<endl; } void studentMessage::clear(void) { student *p = first->next; while(p != null) { first->next = p->next; p->next = null; delete p; p = first->next; } } int main() { studentMessage stulist; int ch; while(ch = stulist.menu()) { switch(ch) { case 1: stulist.Insret(); break; case 2: stulist.Search(); break; case 3: stulist.Display(); break; case 4: stulist.Change(); break; case 5: stulist.Delete(); break; case 6: stulist.tongji(); break; case 7: stulist.save(); break; case 8: stulist.clear(); break; case 0: return 0; default: cout<<"請(qǐng)按要求輸入..."<<endl; } } return 0; }
到此,相信大家對(duì)“C++如何實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。