




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、/ Stude ntl nformati on System.cpp : Defines the entry point for the con sole applicati on./#i nclude stdafx.h#in clude #in clude #in clude #in clude#in cludeclass Stude ntprivate:char idNumber13; / 學號char name30;/ 姓名char address50; / 地址char telephone14;/ 電話號碼in t gradeMath;/ 數學成績int gradePhysics; /
2、 物理成績int gradeE nglish; / 英語成績double gradeMaPhEgAverage; / 物數外平均int rankGrade; / 成績排名int gradeClassmate; / 同學評分int gradeTeacher; / 老師評分int gradeEthic;/ 道德評分double gradeAll; / 綜合成績int rankAll;/ 綜合排名public:Student(); /默認構造函數void Stude nt_WritePers on alI nformatio n(char *iD, char *n am, char *add, ch
3、ar *tel); / 更改 學生信息void Stude nt_WriteMaPhEgGrade(i nt graMa, i nt graPh, i nt graEg);/ 更改學生考試成績void Student_WriteOtherGrade(int graCI, int graTe, int graEth);/ 更改學生其他成績void Student_Displaylnformation();/ 顯示學生信息char *Stude nt_ReadlD();double Stude nt_ReadGrade();double Stude nt_ReadTotalGrade();int
4、Stude nt_ReadGradeRa nk();int Stude nt_ReadTotalGradeRa nk();void Stude nt_WriteGradeRa nk(i nt ranGr);/ 更改學生成績排名void Stude nt_WriteTotalGradeRa nk(int ran Al);/ 更改學生綜合排名char *Stude nt_ReadName();Student:Student()II 默認構造函數strncpy_s(idNumber, 000000000000,12);strncpy_s(name,空,30);strncpy_s(address,空,
5、 50);strncpy_s(telephone,空, 14);/ 電話號碼gradeMath=O; / 數學成績 gradePhysics=O; / 物理成績 gradeEnglish=O; / 英語成績 gradeMaPhEgAverage=O; / 物數外平均 rankGrade=O; / 成績排名 gradeClassmate=O; / 同學評分 gradeTeacher=0; / 老師評分 gradeEthic=0; / 道德評分 gradeAll=0; / 綜合成績 rankAll=0; /綜合排名void Stude nt:Stude nt_WritePers on alI nf
6、ormati on( char *iD, char *n am, char *add, char *tel)strncpy_s(idNumber,iD,12);strn cpy_s (n ame, n am, 30);strn cpy_s(address, add,50);strn cpy_s(teleph one, tel, 14);void Stude nt:Stude nt_WriteMaPhEgGrade(i nt graMa, i nt graPh, i nt graEg)gradeMath = graMa;gradePhysics = graPh;gradeE nglish = g
7、raEg;gradeMaPhEgAverage = (gradeMath + gradePhysics + gradeE nglish) / 3;void Stude nt:Stude nt_WriteOtherGrade(i nt graCI, i nt graTe, i nt graEth)gradeClassmate = graCl;gradeTeacher = graTe;gradeEthic = graEth;gradeAll = gradeMaPhEgAverage*0.6 + gradeClassmate*0.1 + gradeEthic*0.1 + gradeTeacher*0
8、.2;void Stude nt:Stude nt_WriteGradeRa nk(i nt ranGr)ran kGrade = ranGr;void Stude nt:Stude nt_WriteTotalGradeRa nk(i nt ranAI)ran kAll = ran Al;void Stude nt:Stude nt_Display In formati on() using n amespace std;cout en dl;cout 學生信息 endl;cout 姓名: name endl 學號: idNumber endl 地址: address endl 電話: tel
9、eph one endl 數學成績: gradeMath endl 物理成績: gradePhysics endl 三科平均成績 學習成績排名 同學評價得分 教師評價得分 道德修養評分 英語成績: gradeEnglish endl gradeMaPhEgAverage endl ran kGrade endl gradeClassmate endl gradeTeacher endl gradeEthic endl 綜合成績: gradeAll endl 綜合成績排名: rankAll endl;cout endl;char *Stude nt:Stude nt_ReadlD()return
10、 idNumber;double Stude nt:Stude nt_ReadGrade()return gradeMaPhEgAverage;double Stude nt:Stude nt_ReadTotalGrade() return gradeAll;int Stude nt:Stude nt_ReadGradeRa nk()return ran kGrade;int Stude nt:Stude nt_ReadTotalGradeRa nk()return ran kAll;n amespace stude ntln formatio nstd:vector stude ntVect
11、or;int flagStude ntChoose=0;int flagStude ntFoun d=1;char *Stude nt:Stude nt_ReadName()return n ame;定義完畢了,Student 類的/以上是基本數據結構的定義,同時定義了對數據的基本操作。接下來是功能函數void Mai nMen u();void EditMe nu();void AddStude ntPers on alI nformati on (i nt mode);void ModifyStude ntl nformatio n();void SearchStude nt();void
12、 DeleteStude ntl nformati on();void DisplayStude ntl nformati on();void Ran kByGrade();void Ran kByTotalGrade();void Ra nkBylD();bool CmpGrade(Student student1,Student student2);/ 這個函數的參數是兩個對象bool CmpTotalGrade(Stude nt stude nt1, Stude nt stude nt2);bool CmpID(Stude nt stude nt1, Stude nt stude nt2
13、);void DisplayAllStude ntl nformati on();/ 以 下 是 主 菜 單 界 面void Mai nMenu()int flagOperate In formatio n = 1;while (flagOperatel nformatio n)using n amespace std;cout en dl;cout 歡迎進入學生信息管理系統 V1.0. endl endl;cout 按下1:進入學生信息管理系統. endl;cout 按下 0:退出. endl;cout en dle ndl flagOperate In formatio n;ci n.cl
14、ear();cout en dl;if (flagOperateI nformatio n)EditMe nu(); / 主 菜 單 界 面 函 數 定 義 完 畢/ 以 下 是 編 輯 界 面 函 數void EditMe nu()int flagC on ti nu eOperati on = 1; while (flagC on ti nu eOperati on) flagC on ti nu eOperati on = 0; using n amespace std;cout endl;cout 主菜單 endl;cout 按下1:添加學生信息. endl;cout 按下2:修改學生
15、信息. endl;cout 按下3:刪除學生信息. endl;cout 按下4:顯示學生信息. endl;cout 按下5:按學號升序排序 endl;cout 按下6:讀入已有信息(暫時沒實現) endl;cout 按下7:將信息輸出(暫時沒實現) endl;cout 按下8:顯示系統內所有學生的信息 endl;cout 按下 0:返回上一級. endl;cout endl flagC on ti nu eOperati on;cin .clear();cout en dl;switch (flagC ontinu eOperati on)case 1:AddStude ntPers on a
16、lI nformatio n(1); break;case 2:ModifyStude ntl nformatio n(); break;case 3:DeleteStude ntln formati on(); break;case 4:DisplayStude ntln formati on(); break;case 5:Ra nkBylD(); break;case 6:cout 功能暫未實現 endl; break;case 7:cout 功能暫未實現 endl; break;case 8:DisplayAIIStude ntl nformati on(); break;case 0
17、:break;/以下是添加信息的界面 void AddStude ntPers on alI nformati on (i nt mode)using n amespace std;int flagAddPers on alI nformatio n;int flagAddGrade;int falgAddOtherGrade;Stude nt stude nt1;stude ntl nformati on:stude ntVector.push_back(stude nt1);int curre ntObjectPositi on;if (mode = 1)curre ntObjectPos
18、iti on = stude ntln formati on:stude ntVector.size() - 1;elsecurre ntObjectPositi on = stude ntl nformati on:flagStude ntChoose;/cout 請依次添加基本信息、學習成績和其他成績,且不要使用空格 en dl;cout en dl;cout 基本信息 endl;cout 按下1 :錄入學生基本信息; endl 按下0 :跳過基本信息。endl flagAddPers on all nformatio n; cin. clear();if (flagAddPers on
19、all nformati on)char n ame30;char iD13;char address50;char phon e14;cout n ame;ci n.clear();cout iD;ci n.clear();cout address;ci n.clear();cout phone;ci n.clear();stude ntln formatio n:stude ntVectorcurre ntObjectPositi on .Stude nt_WritePers on all nformati on (iD ,n ame,address,pho ne);cout 基本信息輸入
20、成功! en dl en dl;/cout en dl;cout 學習成績 endl;cout 按下1 :錄入學生學習成績; endl 按下0:跳過學習成績信息。 endl flagAddGrade;cin. clear();if (flagAddGrade)int mathGrade;int physicsGrade;int en glishGrade;cout mathGrade;ci n.clear();cout physicsGrade;ci n.clear();cout en glishGrade;cin .clear();stude ntln formatio n:stude nt
21、Vectorcurre ntObjectPositi on .Stude nt_WriteMaPhEgGrade(ma thGrade, physicsGrade, en glishGrade); ”cout 學習成績輸入成功! en dl endl;/cout cout endl;其他成績 endl;cout 按下1 :錄入學生其他成績; endl 按下0:跳過其他成績信息。 endl flagAddGrade;cin. clear();if (flagAddGrade)int peerGrade;int teacherGrade;int ethicGrade;cout peerGrade;
22、ci n.clear();cout teacherGrade;ci n.clear();cout ethicGrade;ci n.clear();stude ntl nformati on:stude ntVectorcurre ntObjectPositi on .Stude nt_WriteOtherGrade(peer Grade, teacherGrade, ethicGrade);cout 其他成績輸入成功! endl en dl;Ran kByGrade();Ra nkByTotalGrade();cout 學生成績錄入成功! endl;cout en dle ndl;void S
23、earchStude nt()using n amespace std;using n amespace stude ntl nformati on;char ID13;cout 請輸入學生的學號: ID;cin. clear();cout e ndl;int vectorSize = stude ntVector.size();int i = 0;while (iwectorSize) & (flagStude ntFou nd!=0)flagStude ntFou nd = strcmp(ID, stude ntVectori.Stude nt_ReadlD();i = i + 1;if
24、(flagStude ntFou nd = 0)flagStude ntChoose = i - 1;flagStude ntFou nd = 1;cout 您所查找的學生信息如下:e ndl;stude ntVectorflagStude ntChoose.Stude nt_Display In formati on();elsecout 未找到該學生 endl;void ModifyStude ntl nformati on()using n amespace std;using n amespace stude ntl nformati on;int searchVectorSize =
25、 stude ntVector.size();if (searchVectorSize = 0)cout en dl;cout 當前系統中沒有學生信息,請先添加學生信息! endl;cout en dl;elseSearchStude nt();cout 您想對該學生的信息進行修改嗎? endl;cout 按下 1:是的。 endl;cout 按下0:放棄修改。 endl;cout flagModify;ci n.clear();if (flagModify = 1)&(flagStude ntFou nd = 0)AddStude ntPers on alI nformati on( 2);
26、void DeleteStude ntl nformatio n()using n amespace std;using n amespace stude ntl nformati on;int deleteVectorSize = stude ntVector.size();if (deleteVectorSize = 0)cout en dl;cout 當前系統中沒有學生信息,請先添加學生信息! endl;cout en dl;elseSearchStude nt();cout 您想刪除該學生的信息嗎? en dl;cout 按下 1:刪除。 endl;cout 按下 0:取消。 endl
27、;cout flagModify;ci n.clear();if (flagModify = 1)&(flagStude ntFou nd = 0)std:vector:iterator iter = stude ntVector.begi n() + flagStude ntChoose; /這樣就選中了一個查到的元素stude ntVector.erase(iter);cout 學生信息刪除成功! endl en dl;void DisplayStude ntln formati on()using n amespace std;using n amespace stude ntl nfo
28、rmati on;int displayVectorSize = stude ntVector.size();if (displayVectorSize = 0)cout en dl;cout 當前系統中沒有學生信息,請先添加學生信息! endl;cout student2.Student_ReadGrade();/ 如果 student1成績大于student2,則返回1.這樣能實現成績的降序排列void Ra nkByGrade()using n amespace stude ntl nformati on;using n amespace std;int ran kVectorSize
29、= stude ntVector.size();if (ran kVectorSize = 1)stude ntVector0.Stude nt_WriteGradeRa nk(1);elsesort(studentVector.begin(), studentVector.end(), CmpGrade); / 使用 sort 必須加上 #include algorithm 和std。sort的前兩個參數是指針int i = 0;for (i = 0; i =1)&(stude ntVectori.Stude nt_ReadGrade()= stude ntVectori1.Stude nt
30、_ReadGrade()stude ntVectori.Stude nt_WriteGradeRa nk(stude ntVectori1.Stude nt_ReadGradeRa nk();elsestude ntVectori.Stude nt_WriteGradeRa nk(i + 1);bool CmpTotalGrade(Stude nt stude nt1, Stude nt stude nt2)return student1.Student_ReadTotalGrade() student2.Student_ReadTotalGrade();/ 如果student1成績大于stu
31、dent2,則返回1.這樣能實現成績的降序排列void Ra nkByTotalGrade()using n amespace stude ntl nformati on;using n amespace std;int ran kVectorSize = stude ntVector.size();if (ran kVectorSize = 1)stude ntVector0.Stude nt_WriteTotalGradeRa nk(1);elsesort(studentVector.begin(), studentVector.end(), CmpGrade); / 使用 sort 必須
32、加上 #include algorithm 和std。 sort的前兩個參數是指針int i = 0;for (i = 0; i = 1) & (studentVectori.Student_ReadTotalGrade() = studentVectori -1.Stude nt_ReadTotalGrade()stude ntVectori.Stude nt_WriteTotalGradeRa nk(stude ntVectori-1.Stude nt_ReadTotalGradeRa nk();elsestude ntVectori.Stude nt_WriteTotalGradeRa
33、nk(i + 1);bool CmplD(Stude nt stude nt1, Stude nt stude nt2)int result;result = strcmp(stude nt1.Stude nt_ReadlD(), stude nt2.Stude nt_ReadlD();if (result0)return true;elsereturn false;void Ra nkBylD()using n amespace stude ntl nformati on;using n amespace std;int ran kVectorSize = stude ntVector.si
34、ze();sort(stude ntVector.begi n(), stude ntVector.e nd(), CmpID);cout en dl;cout 排序成功! endl;cout en dl;void DisplayAllStude ntln formati on()using n amespace std;using n amespace stude ntl nformati on;int displayVectorSize = stude ntVector.size();int i;if (displayVectorSize = 0)cout en dl;cout 當前系統中
35、沒有學生信息! endl;cout en dl;elsecout endl;cout 姓名學號綜合成績綜合排名 endl;for (i = 0; i displayVectorSize; i+)cout stude ntVectori.Stude nt_ReadName() stude ntVectori.Stude nt_ReadlD() stude ntVectori.Stude nt_ReadTotalGrade() stude ntVectori.Stude nt_ReadTotalGradeRa nk() endl;cout en dl;/ void mai n()Mai nMen
36、u();/*下面的這是一個排序函數,用到了冒泡排序法,但是程序沒用到。上面的排序用了sort()函數來實現,功能是一樣的。*/*void Ra nkByGrade()using n amespace stude ntl nformati on;using n amespace std;int flagCompareOut=0;int flagCompare ln=0;int ran kVectorSize;ran kVectorSize = stude ntVector.size();if (ran kVectorSize = 0)cout endl 系統當前沒有學生信息! endl en d
37、l;else if (ran kVectorSize = 1)stude ntVectorflagCompareOut.Stude nt_WriteGradeRa nk(flagCompareOut + 1);elseint flagCompareOut = 0;int flagCompare In = 0;for (flagCompareOut = 0; flagCompareOut ran kVectorSize - 1; flagCompareOut+)for (flagCompare In = 0; flagCompare In ran kVectorSize - flagCompar
38、eOut - 1; flagCompare In+)if (stude ntVectorflagCompare In .Stude nt_ReadGrade() stude ntVectorflagCompare In +1.Stude nt_ReadGrade()Stude nt stude ntTemp;stude ntTemp = stude ntVectorflagCompare In;stude ntVectorflagCompare In = stude ntVectorflagCompare In + 1;stude ntVectorflagCompare In + 1 = stude ntTemp;int i = 0;for (i = 0; i 0)&(stude ntVectori.Stude nt_ReadGrade() = stude ntVectori - 1.Stude nt_ReadGrade()stude ntV
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論