![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)制輸入打開(kāi)194.if(!文件是否打開(kāi)成功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)制寫打開(kāi)文件if(!判斷打開(kāi)是否成功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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 八上青春多美好-課件(北師大版)
- 二零二五年度期貨居間業(yè)務(wù)合同補(bǔ)充協(xié)議(全面專業(yè)版)
- 文旅產(chǎn)業(yè)發(fā)展的趨勢(shì)與人才需求
- 人才管理與發(fā)展中的新挑戰(zhàn)
- 企業(yè)文化與組織變革的協(xié)同作用
- 本科生-畢業(yè)論文答辯模板課件
- 2023七年級(jí)英語(yǔ)下冊(cè) Unit 5 Why do you like pandas Section A 第2課時(shí)(3a-3c)說(shuō)課稿 (新版)人教新目標(biāo)版
- 14《母雞》第1課時(shí)說(shuō)課稿-2023-2024學(xué)年四年級(jí)下冊(cè)語(yǔ)文統(tǒng)編版
- 《DDC系統(tǒng)設(shè)計(jì)》課件
- 《管理制度體系》課件
- 特殊感染手術(shù)的配合與術(shù)后處理課件
- 檢驗(yàn)科生物安全工作總結(jié)
- 《ESPEN重癥病人營(yíng)養(yǎng)指南(2023版)》解讀課件
- 《金屬與石材幕墻工程技術(shù)規(guī)范》jgj1332001-2021112401384
- 即時(shí)通訊系統(tǒng)建設(shè)方案
- 2024年山東省聊城市東昌府區(qū)小升初英語(yǔ)試卷
- 《堅(jiān)毅:釋放激情與堅(jiān)持的力量》隨筆
- 區(qū)塊鏈應(yīng)用操作員技能大賽考試題庫(kù)大全-下(多選、判斷題)
- 數(shù)據(jù)中心基礎(chǔ)設(shè)施管理考核試卷
- TB-T 3263.1-2023 動(dòng)車組座椅 第1部分:一等座椅和二等座椅
- 部編版五年級(jí)下冊(cè)語(yǔ)文1-8單元習(xí)作課件
評(píng)論
0/150
提交評(píng)論