![C++大作業(yè):學(xué)生信息管理系統(tǒng)_第1頁(yè)](http://file4.renrendoc.com/view/be4088a541bda7d2a635d3e23dbab7fd/be4088a541bda7d2a635d3e23dbab7fd1.gif)
![C++大作業(yè):學(xué)生信息管理系統(tǒng)_第2頁(yè)](http://file4.renrendoc.com/view/be4088a541bda7d2a635d3e23dbab7fd/be4088a541bda7d2a635d3e23dbab7fd2.gif)
![C++大作業(yè):學(xué)生信息管理系統(tǒng)_第3頁(yè)](http://file4.renrendoc.com/view/be4088a541bda7d2a635d3e23dbab7fd/be4088a541bda7d2a635d3e23dbab7fd3.gif)
![C++大作業(yè):學(xué)生信息管理系統(tǒng)_第4頁(yè)](http://file4.renrendoc.com/view/be4088a541bda7d2a635d3e23dbab7fd/be4088a541bda7d2a635d3e23dbab7fd4.gif)
![C++大作業(yè):學(xué)生信息管理系統(tǒng)_第5頁(yè)](http://file4.renrendoc.com/view/be4088a541bda7d2a635d3e23dbab7fd/be4088a541bda7d2a635d3e23dbab7fd5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
學(xué)生信息管理系統(tǒng)(附代碼)題目要求:設(shè)計(jì)一個(gè)類CStudent,類中包含一個(gè)學(xué)生的基本數(shù)據(jù)如下:編號(hào),姓名,性別,年齡,數(shù)學(xué)成績(jī),計(jì)算機(jī)成績(jī),外語(yǔ)成績(jī)。并假設(shè)編號(hào)為整數(shù),且從1號(hào)往后連續(xù)編碼;姓名為字符串,性別為字符。如:1LiPingm18899894請(qǐng)采用binary文件形式,并使用隨機(jī)讀寫處理方式,對(duì)自定義CStudent類的對(duì)象數(shù)據(jù)進(jìn)行存儲(chǔ)與讀寫處理(即是說(shuō),總按具有連續(xù)編碼的編號(hào)num為“序”來(lái)對(duì)文件中的各對(duì)象數(shù)據(jù)進(jìn)行隨機(jī)讀寫處理)。并設(shè)計(jì)該類的成員函數(shù),而且對(duì)輸出運(yùn)算符“<<”進(jìn)行重載,使該運(yùn)算符能夠完成將一個(gè)學(xué)生的信息輸出到屏幕上。要求成員函數(shù)完成以下功能:(1) 從鍵盤輸入一個(gè)學(xué)生的有關(guān)信息,并將它們存入到數(shù)據(jù)文件中(按編號(hào)來(lái)確定寫出位置)。(2) 按編號(hào)對(duì)學(xué)生信息進(jìn)行檢索并將檢索結(jié)果顯示在屏幕上。(3) 按姓名對(duì)學(xué)生信息進(jìn)行檢索并將檢索結(jié)果顯示在屏幕上。(4) 計(jì)算某編號(hào)學(xué)生的總成績(jī)與平均成績(jī)。(5) 列出所有總成績(jī)超過(guò)n分的性別為s同學(xué)的有關(guān)信息(n,s由用戶從鍵盤輸入)。Code:1//student.cpp學(xué)生管理程序添加,修改,按條件查詢學(xué)生信息*student.cpp學(xué)生管理程序添加,修改,按條件查詢學(xué)生信息*FedoraLinux11&GCC&x86*davelv第一次Class于2010-01-10 *新建了可復(fù)用的搜索模板searchframe*3.*描述4.*功能5.*環(huán)境6.*備注7.*更新//9.#includeviostream>#include<cstring>#include<vector>
13.#includevfstream>14.#includevcstdlib>15.16.usingnamespacestd;17.#defineCIN_LEN 1024〃緩沖區(qū)長(zhǎng)度18.#define "data"http://數(shù)據(jù)文件名19./////////////////////////////////////20.//結(jié)構(gòu)和類 〃21.///////////////////////////////////22.structdata//學(xué)生個(gè)人信息23.{24.intid;//學(xué)號(hào)25.charname[20];〃名字26.charmajor[20];//專業(yè)27.charsex;//性性別28.doublech,en,ma;〃成績(jī)29.intgrade;//年級(jí)30.};31.32.classCStudent33.{34.protected:35.boolaltered;//是否修改36.datainfo;//學(xué)生信息37.public:38.staticintnowid;〃新學(xué)生自增id39.staticvoiddisplayhead();〃顯示表頭40.staticvoiddisplayshorthead();〃顯示短表頭41.CStudent();〃構(gòu)造42.voiddisplayinfo();//顯示全部學(xué)生信息43.voiddisplayshortinfo();//顯示學(xué)生短信息44.doublegetsum();〃取總成績(jī)45.doublegetave();〃取得平均分46.doublegetch();〃取語(yǔ)文成績(jī)47.doublegeten();〃取外語(yǔ)成績(jī)48.doublegetma();//取數(shù)學(xué)成績(jī)49.intset(boolisnew);//設(shè)置學(xué)生信息50.intgetgrade();〃取年級(jí)51.intgetid();//取學(xué)號(hào)52.boolisaltered();//取是否修改53.chargetsex();〃取性別54.char*getname();〃取姓名55.char*getmajor();〃取專業(yè)56.data*getinfo();//取學(xué)牛全部信息〃定義友元函數(shù)以便重載運(yùn)算符friendostream&operatorvv(ostream&,constCStudent&);friendistream&operator?(istream&,CStudent&);60.61.};62.intCStudent::nowid=1;//初始化類靜態(tài)成員64.CStudent::CStudent()〃基類構(gòu)造{info.id=CStudent::nowid++;〃子增idstrcpy(,"None");〃名字info.ch=0;〃語(yǔ)文成績(jī)info.en=0;//外語(yǔ)成績(jī)info.ma=0;〃數(shù)學(xué)成績(jī)info.grade=1;〃年級(jí)altered=false;//未被修改TOC\o"1-5"\h\z}75.intCStudent::getgrade(){returninfo.grade;}80.doubleCStudent::getsum(){returninfo.ch+info.en+info.ma;}doubleCStudent::getave(){return(info.ch+info.en+info.ma)/3;}doubleCStudent::getch(){returninfo.ch;}93.doubleCStudent::geten(){returninfo.en;}98.doubleCStudent::getma(){returninfo.ma;TOC\o"1-5"\h\z}103.intCStudent::getid(){returninfo.id;}108.charCStudent::getsex(){returninfo.sex;}113.char*CStudent::getname(){;}boolCStudent::isaltered(){returnaltered;}data*CStudent::getinfo(){return&info;}voidCStudent::displayinfo(){coutvv*thisvv"\t"vvgetsum()vv"\t"vvgetave()vvendl;〃利用重載運(yùn)算符輸出}voidCStudent::displayshortinfo(){cout<<*this<<endl;}voidCStudent::displayhead(){cout<<"\n\t學(xué)號(hào)\t姓名\t性別\t專業(yè)\t年級(jí)\t中文\t英文\t數(shù)學(xué)\t總分\t平均分\n";}voidCStudent::displayshorthead(){cout<<"\n\t學(xué)號(hào)\t姓名\t性別\t專業(yè)\t年級(jí)\t中文\t英文\t數(shù)學(xué)\n";}intCStudent::set(boolisalter){coutvv"輸入學(xué)生信息:\n";
45.146.147.displayshortinfo();coutvv"\t"vvinfo.idvv"\t";cin.clear();cin>>*this;〃從標(biāo)準(zhǔn)輸入獲取學(xué)生信息altered=true;〃已修改152.if(cin.fail()){coutvv"錄入失敗5";cin.clear();cin.ignore(CIN_LEN,'\n');〃這兩行是用來(lái)清空輸入緩沖return-1;TOC\o"1-5"\h\z}else{coutvv"錄入成功\n";return1;}}166.〃重載輸出符ostream&operatorvv(ostream&out,constCStudent&right){〃輸出學(xué)生的全部信息outvv"\t".idvv"\t"vv"\t".sexvv"\t".majorvv"\t".gradevv"\t".chvv"\t".envv"\t".ma;returnout;}〃重載輸入符istream&operator?(istream&in,CStudent&right){〃輸入除ID外的其他信息in>>>>.sex?.major>>.grade>>.ch>>.en>>.ma;returnin;}184./////////////////////////////////// 初始化函數(shù) //////////////////////////////////intinitial(vector<CStudent*>&stu){fstream輸入文件CStudent*p;192.(,fstream::inlfstream::binary);〃二進(jìn)制輸入打開194.if(!文件是否打開成功return-1;while(()!=EOF)〃是否至U文件末尾{p=newCStudent();〃新建一個(gè)學(xué)生對(duì)象((char*)p->getinfo(),sizeof(data));〃讀入學(xué)生對(duì)象if(())〃檢查讀入是否失敗return-2;stu.push_back(p);〃對(duì)象加入vector}if(!stu.empty())〃如果從文件讀入了對(duì)象CStudent::nowid=stu.back()->getid()+1;〃則自增id設(shè)置為最后一個(gè)學(xué)生id+1();//關(guān)閉returnstu.size();〃返回對(duì)象個(gè)數(shù)TOC\o"1-5"\h\z}////////////////////////////////// 信息增加函數(shù) /////////////////////////////////voidinsert(vectorvCStudent*>&stu){charc='y';//輸入控制字符216.intflag=1;//標(biāo)志位,1表示新增成功218.CStudent*p=newCStudent();220.while(c!='n')//是否繼續(xù)新增TOC\o"1-5"\h\z{flag=p->set(false);//設(shè)置學(xué)生信息if(flag==1)〃如果設(shè)置成功{stu.push_back(p);〃對(duì)象加入vectorp=newCStudent();//新建下一個(gè)對(duì)象}cout<<"是否繼續(xù)添加學(xué)生(any/n)?";cin.clear();cin.ignore(CIN_LEN,'\n');cin.get(c);TOC\o"1-5"\h\z}〃刪除最后一個(gè)新建的對(duì)象,因?yàn)闆](méi)有使用它deletep;CStudent::nowid--;}238.///////////////////////////////// 查詢?nèi)啃畔⒑瘮?shù) ///////////////////////////////intcomparebynone(constvoid*a,constvoid*b){return0;}////////////////////////////////// 按學(xué)號(hào)比較函數(shù) ////////////////////////////////intcomparebyid(constvoid*a,constvoid*b){return*(constint*)a-((CStudent*)(b))->getid();}///////////////////////////////// 按姓名比較函數(shù) ////////////////////////////////intcomparebyname(constvoid*a,constvoid*b){returnstrcmp((constchar*)a,(constchar*)(((CStudent*)b)->getname()));}////////////////////////////////// 按年級(jí)比較函數(shù) ////////////////////////////////intcomparebygrade(constvoid*a,constvoid*b){return(*(constint*)a-((CStudent*)b)->getgrade());}/////////////////////////////////////// 按總分和性別比較函數(shù) /////////////////////////////////////intcomparebymarkandsex(constvoid*a,constvoid*b){doublemark;charsex;sscanf((constchar*)a,"%lf%c",&mark,&sex);return!((((CStudent*)b)->getsum()>=mark)
&&((sex=='n')II(sex==((CStudent*)b)->getsex())));279.280.}///////////////////////////////// 搜索模板 ///////////////////////////////templatevtypenameT>voidsearchframe(constchar*info,T&condition,vector<CStudent*>&stu,int(*compare)(constvoid*a,constvoid*b),boolisalter){288.{288.289.290.291.292.293.294.295.296.297.298.299.300.301.302.303.304.305.306.307.308.309.310.311.312.313.314.315.316.317.318.319.intflag;while(c!='n'){cin.clear();if(info!=NULL){coutvv"輸入"vvinfovv":";〃cin.ignore(CIN_LEN,'\n');cin>>condition;}if(cin.fail()){coutvv"輸入錯(cuò)誤5";}else{〃遍歷vector查找for(vector<CStudent*>::size_typeix=flag=0;ix!=stu.size();++ix){ 〃判斷是name是否相等if(compare(&condition,stu[ix])==0){if(isalter)stu[ix]->set(isalter);else{if(flag==0)CStudent::displayhead();stu[ix]->displayinfo();}
320.321.322.320.321.322.323.324.325.326.327.328.329.330.331.332.333.334.335.336.}}}if(flag==0)//沒(méi)有查到{coutvv"沒(méi)有";if(info==NULL)coutvv"符合條件";elsecoutvvinfovv"為"vvcondition;coutvv"的學(xué)生\n";}}coutvv"是否繼續(xù)(any/n)?";cin.clear();cin.ignore(CIN_LEN,'\n');cin.get(c);TOC\o"1-5"\h\z}339.////////////////////////////////// 信息檢索函數(shù) ////////////////////////////////voidfetch(vectorvCStudent*>&stu){intchoose,id,grade;charname[20],markandsex[20];347.while(true){coutvv"\n\t1.顯示全部學(xué)生信息\n""\t2.按學(xué)號(hào)查學(xué)生信息\n""\t3.按姓名查學(xué)生信息\n""\t4.按年級(jí)查學(xué)生信息\n""\t5.按成績(jī)和性別查詢\n""\t6.返回上級(jí)菜單\n\n";lchoose:coutvv"輸入您的選擇:";choose=0;cin>>choose;switch(choose){break;case 1:searchframe(NULL,choose,stu,comparebynone,false);break;case 2:searchframe("學(xué)號(hào)",id,stu,comparebyid,false); break;case3:searchframe(”姓名",name,stu,comparebyname,false);break;case4:searchframe(”年級(jí)",grade,stu,comparebygrade,false);break;case5 :searchframe(”分?jǐn)?shù)和性別",markandsex,stu,comparebymarkandsex,false);break;367.case6:return;368.default:coutvv"輸入有誤\n";cin.clear();cin.ignore(CIN_LEN,'\n');gotolchoose;369.}370. }371.}////////////////////////////////// 信息保存函數(shù) ////////////////////////////////intsave(vectorvCStudent*>&stu){fstreamfile;378.(,fstream::outlfstream::binary);〃二進(jìn)制寫打開文件if(!判斷打開是否成功return-1;〃遍歷全部對(duì)象for(vectorvCStudent*>::size_type ix=0;ix!=stu.size();++ix){ 〃判斷當(dāng)前對(duì)象是否已修改if(stu[ix]->isaltered()){ 〃修改了則寫入文件(ix*sizeof(data));((char*)stu[ix]->getinfo(),sizeof(data));〃寫入是否成功if(())return-2;TOC\o"1-5"\h\z}393.}();return0;}398.///////////////////////////////// 主函數(shù) //////////////////////
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 淮安2024年江蘇淮安漣水縣面向村(社區(qū))黨組織書記選聘鎮(zhèn)(街道)事業(yè)單位工作人員筆試歷年參考題庫(kù)附帶答案詳解
- 2025年中國(guó)唑螨酯市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)五金工具塑料泡罩市場(chǎng)調(diào)查研究報(bào)告
- 2025年走馬機(jī)丈根帶項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國(guó)調(diào)墨螺釘行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年移動(dòng)平板滑輪車項(xiàng)目可行性研究報(bào)告
- 成都2025年四川成都師范學(xué)院招聘高層次人才67人(第一批)筆試歷年參考題庫(kù)附帶答案詳解
- 2025年水族產(chǎn)品項(xiàng)目可行性研究報(bào)告
- 2025年顯色皂洗機(jī)項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國(guó)實(shí)心輪胎模具行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025-2030年中國(guó)汽車用鉛酸蓄電池市場(chǎng)發(fā)展趨勢(shì)展望與投資策略分析報(bào)告
- 天津市和平區(qū)2024-2025學(xué)年高一(上)期末質(zhì)量調(diào)查物理試卷(含解析)
- cpk自動(dòng)計(jì)算電子表格表格
- 第五章 曲線運(yùn)動(dòng)(基礎(chǔ)夯實(shí))-高一物理人教版(2019)必修二單元鞏固檢測(cè)
- 排球正面上手傳球 說(shuō)課稿-2023-2024學(xué)年高一上學(xué)期體育與健康人教版必修第一冊(cè)
- 2025年浙江省交通投資集團(tuán)財(cái)務(wù)共享服務(wù)中心招聘2名高頻重點(diǎn)提升(共500題)附帶答案詳解
- 客流統(tǒng)計(jì)系統(tǒng)施工方案
- 瓶裝液化氣送氣工培訓(xùn)
- 道德經(jīng)全文完整版本
- 濰坊市人民醫(yī)院招聘真題
- 銷售人員薪資提成及獎(jiǎng)勵(lì)制度
評(píng)論
0/150
提交評(píng)論