




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、計算機(jī)高級語言課程設(shè)計報告 學(xué)生成績管理系統(tǒng)班級:191142班學(xué)號:姓名:日期:2015年1月22日一 課程設(shè)計題目與要求 (包括題目與系統(tǒng)功能要求)【實習(xí)內(nèi)容】C+語言,面向?qū)ο蟮姆治雠c設(shè)計?!净疽蟆繉W(xué)生成績管理是高等學(xué)校教務(wù)管理的重要組成部分,主要包括學(xué)生成績的錄入、刪除、查找及修改、成績的統(tǒng)計分析等等。請設(shè)計一個系統(tǒng)實現(xiàn)對學(xué)生成績的管理。系統(tǒng)要求實現(xiàn)以下功能:(1)增加記錄:要求可以連續(xù)增加多條記錄。(2)刪除一個學(xué)生的記錄:要求可以先查找,再刪除。刪除前,要求用戶確認(rèn)。(3)成績修改:若輸入錯誤可進(jìn)行修改;要求可以先查找,再修改。(4)查找:可以根據(jù)姓名(或?qū)W號)查找某個學(xué)生的課
2、程成績,查找某門課程成績處于指定分?jǐn)?shù)段內(nèi)的學(xué)生名單等等。(5)統(tǒng)計分析:對某個班級學(xué)生的單科成績進(jìn)行統(tǒng)計,求出平均成績;求平均成績要求實現(xiàn)函數(shù)的重載,既能求單科的平均成績,又能求三科總分的平均成績。求出一門課程標(biāo)準(zhǔn)差和合格率;(6)排序功能:要求按總分進(jìn)行排序(從高到低),若總分相同,則按數(shù)學(xué)排序;若總分和數(shù)學(xué)相同,則按物理排序;若總分和各科成績都相同,則按學(xué)號排序;(7)文件操作:可以打開文件,顯示班級的所有學(xué)生信息;可以將增加或修改后的成績重新寫入文件;可以將排序好的信息寫入新的文件?!据^高要求】查找可以實現(xiàn)模糊查詢,即輸入名字的一部分,可以列出滿足條件的所有記錄。再從這個記錄中進(jìn)行二次選
3、擇。二 需求分析【問題描述】在編寫過程中,主要的困難有:1. 模糊搜索(不能使用string中的find函數(shù))需要自定義一個函數(shù)。2. 排序,需要自己學(xué)習(xí)算法?!鞠到y(tǒng)環(huán)境】Visual C+6.0三 概要設(shè)計流程圖如下:四 詳細(xì)設(shè)計【增加記錄】:【刪除記錄】:先查找出要刪除的信息,然后再刪除。刪除前要求用戶是否確認(rèn)刪除。確認(rèn)則在數(shù)據(jù)庫中刪除然后會主菜單。否則回主菜單?!境煽冃薷摹浚翰檎页鲇脩羲薷牡男畔?。然后在數(shù)據(jù)庫中將信息提取出來,修改前要求用戶是否確認(rèn)修改,若要修改,修改后回主菜單。否則直接會主菜單?!静檎摇浚翰檎曳譃槟抽T成績分?jǐn)?shù)段查找和個人信息查找,個人信息查找支持模糊搜索??筛鶕?jù)學(xué)號
4、或姓名進(jìn)行查找,查找后支持二次搜索?!窘y(tǒng)計分析】:統(tǒng)計分析主要是了解各科的總體情況,平均分、及格率、以及標(biāo)準(zhǔn)差。即可查詢單科也可查詢?nèi)啤!九判颉吭谥鞑藛沃羞x擇排序,然后系統(tǒng)先根據(jù)總成績排序。若總成績相等,比較數(shù)學(xué)則按數(shù)學(xué)排序;若總成績和數(shù)學(xué)相同,則按物理排序;若總分和各科成績都相同,則按學(xué)號排序;【退出系統(tǒng)】:在主菜單中選擇退出系統(tǒng)。擇結(jié)束程序。【設(shè)計的類的代碼】:class managementprivate:vectorstu;public:void addtxt(); void deletetxt(); void changetxt(); void findtxt(); void fi
5、ndtxt1(); void ptxt(); void otxt(); void itxt(); void show(); void ttxt(); void ttxt(int,int); ;class studentprivate:string m_id, m_name;int m_math, m_eng, m_phy;public:student(string, string, int, int, int); student(const student &); student(); string getId(); string getName(); intgetMath(); int ge
6、tEng();int getPhy();int total();student operator=(const student &); / ;五 測試 【原有數(shù)據(jù)】20121000290 邊達(dá)宇 75 60 65 20121000424 王晨 85 95 9620121000553 高佳維 86 93 9020121000570 初國利 85 87 8520121000584 利振彬 70 88 8820121000818 孟珂 90 86 96 20121000921 羅云迪 86 90 7520121001121 田甜 95 85 8720121001248 王如男 90 89 94201
7、21001316 邵葉飛 80 84 8620121001375 周晨曦 87 86 9020121001695 王洪 96 88 9120121001842 尹笛露 85 90 9420121002002 劉宇坤 88 86 9020121002152 尹然宇 82 90 8820121002162 孫史磊 80 94 8020121002269 陳云鍋 83 95 8520121002321 于文濤 88 90 8620121002439 景揭俊 85 92 8520121002585 戴賢鐸 88 86 7820121002685 曹厚臻 90 87 9020121002775 馬晴 9
8、3 85 9020121003127 馮澤宇 80 89 7520121003358 肖寒 88 90 9020121003359 張賡 87 95 8420121003398 劉劍峰 88 84 8620121003399 龔方怡 90 93 9620121004233 賈國棟 88 90 8620121004415 孫一卓 86 95 90六 結(jié)論【亮點】1. 能夠二次模糊搜索2. 代碼簡便、易懂。【不足】1.算法比較粗糙。七 附錄#ifndef STUDENT_H#define STUDENT_H#include#include#include#include#include#inclu
9、deusing namespace std;class studentprivate:string m_id, m_name;int m_math, m_eng, m_phy;public:student(string, string, int, int, int); /構(gòu)造函數(shù)student(const student &); /復(fù)制構(gòu)造函數(shù)student(); / 析構(gòu)函數(shù)string getId(); /自定義接口string getName(); intgetMath(); int getEng();int getPhy();int total();student operator=(
10、const student &); / =號重載;#endif#ifndef MANAGEMENT_H#define MANAGEMENT_H#include student.hclass managementprivate:vectorstu;public:void addtxt(); /增加記錄void deletetxt(); /刪除記錄void changetxt(); /成績修改void findtxt(); /模糊搜索void findtxt1(); /分?jǐn)?shù)段搜索void ptxt(); /排序void otxt(); /文件輸出void itxt(); /文件寫入void sho
11、w(); /輸出void ttxt(); /統(tǒng)計分析void ttxt(int,int); /統(tǒng)計分析重載;#endif#includestudent.hstudent:student(string id=0, string name=0, int math=0, int eng=0, int phy=0)m_id=id;m_name=name;m_math=math;m_eng=eng;m_phy=phy;student:student(const student & s)m_id=s.m_id;m_name=s.m_name;m_math=s.m_math;m_eng=s.m_eng;m_
12、phy=s.m_phy;string student:getId()return m_id;string student:getName()return m_name;intstudent:getMath()return m_math;int student:getEng()return m_eng;int student:getPhy()return m_phy;int student:total()return (getMath()+getEng()+getPhy();student student:operator =(const student & s)m_id=s.m_id;m_na
13、me=s.m_name;m_math=s.m_math;m_eng=s.m_eng;m_phy=s.m_phy;return *this;#includemanagement.h#includevoid management:addtxt() /增加記錄string id, name;int math, eng, phy,m;int p(0);while(1) cout 請輸入您所添加的信息: id name math eng phy; student s(id, name, math, eng, phy);for(int i=0;istu.size();i+)if(s.getId()=stu
14、i.getId()&(s.getName()=stui.getName()cout數(shù)據(jù)庫已有此人!不能再添加!endl;p+;if(p=0) stu.push_back(s); otxt();cout是否繼續(xù)增加? (繼續(xù)回復(fù)1。否則回復(fù)0.)m;if(m=0) break;void management:itxt() /文件寫入ifstream ifile;ifile.open(D:data.txt);string id, name;int math, eng, phy;doifileidnamemathengphy;student s(id, name, math, eng, phy);s
15、tu.push_back(s); while (!ifile.eof();ifile.close();void management:otxt() /文件輸出ofstream ofile;ofile.open(D:date.txt);for (int i=0; istu.size();i+)ofilesetw(20)stui.getId()setw(6)stui.getName()setw(6)stui.getMath()setw(6)stui.getEng()setw(6)stui.getPhy()endl;ofile.close(); void management:show()cout學(xué)
16、號tt姓名t數(shù)學(xué)t英語t物理t總分endl;for(int i=0;istu.size();i+)coutstui.getId()tstui.getName()tstui.getMath()tstui.getEng()tstui.getPhy()t;coutstui.total()endl;void management:findtxt() /模糊搜索vectors;string m,n;int p(0),q(0);int i,j,k,x,a,b,c;cout請輸入您需要查找的學(xué)號或姓名:m;for(i=0;istu.size();i+)for(j=0;jm.size();j+) if(mj!
17、=stui.getId()j) break;if(j=m.size()s.push_back(stui); p+;coutstui.getId()tstui.getName()tstui.getMath()tstui.getEng()tstui.getPhy()endl;for(k=0;km.size();k+) if(mk!=stui.getName()k) break;if(k=m.size()s.push_back(stui); p+;coutstui.getId()tstui.getName()tstui.getMath()tstui.getEng()tstui.getPhy()end
18、l;if (p = 0) cout 對不起,沒有您所查找的信息! endl;cout是否進(jìn)行二次搜索?(回復(fù)1進(jìn)行。否則回復(fù)0.)x;if(x=1)cout請輸入您二次查找學(xué)生的學(xué)號或姓名:n;for(a=0;as.size();a+) for(b=0;bn.size();b+) if(nb!=sa.getId()b) break;if(b=n.size() q+;coutsa.getId()tsa.getName()tsa.getMath()tsa.getEng()tsa.getPhy()endl;for(c=0;cn.size();c+) if(nc!=sa.getName()c) bre
19、ak;if(c=n.size() q+;coutsa.getId()tsa.getName()tsa.getMath()tsa.getEng()tsa.getPhy()endl;if (q = 0) cout 對不起,沒有您所查找的信息! endl;void management:findtxt1() /分?jǐn)?shù)段搜索string m;int a,b,p(0);cout請輸入您查找的某一門課程名稱及分?jǐn)?shù)段:mab;if(m=數(shù)學(xué)) for(int i=0;i=a&stui.getMath()=b)coutstui.getId()tstui.getName()tstui.getMath()tstui
20、.getEng()tstui.getPhy()endl;p+;if (p = 0) cout 對不起,沒有您所查范圍的分?jǐn)?shù)! endl;else if(m=英語)for(int j=0;j=a&stuj.getEng()=b)coutstuj.getId()tstuj.getName()tstuj.getMath()tstuj.getEng()tstuj.getPhy()endl;p+;if (p = 0) cout 對不起,沒有您所查范圍的分?jǐn)?shù)! endl;else if(m=物理)for(int k=0;k=a&stuk.getPhy()=b)coutstuk.getId()tstuk.g
21、etName()tstuk.getMath()tstuk.getEng()tstuk.getPhy()endl;p+;if (p = 0) cout 對不起,沒有您所查范圍的分?jǐn)?shù)! endl;else cout沒有其他的課程成績!endl;void management:deletetxt() /刪除記錄int i,x;string m;cout請輸入您所需要刪除的學(xué)生的姓名或?qū)W號:m;for(i=0;istu.size();i+)if(m=stui.getId()|m =stui.getName()break;cout是否確定刪除?(是回復(fù)1. 否回復(fù)0.)x;if(x=1)vector:i
22、terator it=stu.begin()+i;stu.erase(it);otxt();cout刪除成功!endl;void management:ttxt() /統(tǒng)計分析int i,j;double sum1(0),sum2(0),sum3(0),p1(0),p2(0),p3(0),v1(0),v2(0),v3(0);for(i=0;i=60) p1+;if(stui.getEng()=60) p2+;if(stui.getPhy()=60) p3+;sum1/=i;sum2/=i;sum3/=i;p1/=i;p2/=i;p3/=i;for(j=0;jstu.size();j+)v1+=
23、(stui.getMath()-sum1)*(stui.getMath()-sum1);v2+=(stui.getEng()-sum2)*(stui.getEng()-sum2);v3+=(stui.getPhy()-sum3)*(stui.getPhy()-sum3);v1=sqrt(v1/i);v2=sqrt(v2/i);v3=sqrt(v3/i);string m;cout請輸入您要查的科目名稱:m;if(m=數(shù)學(xué))cout平均分:sum1t合格率:p1*100%t標(biāo)準(zhǔn)差:v1endl;else if(m=英語)cout平均分:sum2t合格率:p2*100%t標(biāo)準(zhǔn)差:v2endl;el
24、se if(m=物理)cout平均分:sum3t合格率:p3*100%t標(biāo)準(zhǔn)差:v3endl;else cout對不起,沒有其它的課程成績!endl;void management:ttxt(int i,int j)double sum1(0),sum2(0),sum3(0),p1(0),p2(0),p3(0),v1(0),v2(0),v3(0);double total;for(i;i=60) p1+;if(stui.getEng()=60) p2+;if(stui.getPhy()=60) p3+;sum1/=i;sum2/=i;sum3/=i;p1/=i;p2/=i;p3/=i;tota
25、l=(sum1+sum2+sum3)/3;for(j;jstu.size();j+)v1+=(stui.getMath()-sum1)*(stui.getMath()-sum1);v2+=(stui.getEng()-sum2)*(stui.getEng()-sum2);v3+=(stui.getPhy()-sum3)*(stui.getPhy()-sum3);v1=sqrt(v1/i);v2=sqrt(v2/i);v3=sqrt(v3/i);cout數(shù)學(xué)平均分:sum1t數(shù)學(xué)合格率:p1*100%t數(shù)學(xué)標(biāo)準(zhǔn)差:v1endl;cout英語平均分:sum2t英語合格率:p2*100%t英語標(biāo)準(zhǔn)差
26、:v2endl;cout物理平均分:sum3t物理合格率:p3*100%t物理標(biāo)準(zhǔn)差:v3endl;cout總分平均分為:totalendl;void management:changetxt()string id,name,m;int math,eng,phy,i,x;cout請輸入您所要改學(xué)生的學(xué)號或姓名:m;cout請輸入您所改的全部信息!idnamemathengphy;student s(id,name,math,eng,phy);for(i=0;istu.size();i+)if(m=stui.getId()|m=stui.getName()break;cout是否確定修改? (回
27、復(fù)1則修改?;貜?fù)2則放棄修改)x;if(x=1)stui=s;otxt();cout修改成功!endl;void management:ptxt() /排序int i,j;student t(0,0,0,0,0);for(i=1;i=0;j-)if(stuj+1.total()stuj.total()t=stuj;stuj=stuj+1;stuj+1=t;else if(stuj+1.total()=stuj.total()if(stuj+1.getMath()stuj.getMath() /比較數(shù)學(xué)成績t=stuj; stuj=stuj+1; stuj+1=t;else if(stuj+1.getMath()=stuj.getMath() /比較物理成績if(stuj+1.getPhy
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國家具五金電商項目創(chuàng)業(yè)計劃書
- 中國三維掃描軟件項目創(chuàng)業(yè)計劃書
- 中國B2C跨境電商項目創(chuàng)業(yè)計劃書
- 中國近視康復(fù)治療儀項目創(chuàng)業(yè)計劃書
- 中國光纖標(biāo)簽項目創(chuàng)業(yè)計劃書
- 中國固網(wǎng)寬帶項目創(chuàng)業(yè)計劃書
- 中國能源信息安全項目創(chuàng)業(yè)計劃書
- 中國高粱項目創(chuàng)業(yè)計劃書
- 中國5G小基站項目創(chuàng)業(yè)計劃書
- 中藥制劑的質(zhì)量控制體系構(gòu)建-洞察闡釋
- 五年級科學(xué)上冊(粵教版)第18課空氣中有水嗎(教學(xué)設(shè)計)
- 糖尿病患者體重管理專家共識(2024年版)解讀
- 化工廠電氣施工方案
- 2024胃腸間質(zhì)瘤(GIST)診療指南更新解讀
- 成長類作文“六段式”課件-2024-2025學(xué)年統(tǒng)編版語文九年級上冊
- 《區(qū)塊鏈技術(shù)導(dǎo)論》全套教學(xué)課件
- 上海浦東新區(qū)公辦學(xué)校儲備教師教輔招聘筆試真題2022
- 成都市2022級(2025屆)高中畢業(yè)班摸底測試(零診)英語試卷(含答案)
- JT-T-1045-2016道路運(yùn)輸企業(yè)車輛技術(shù)管理規(guī)范
- 2025屆上海市八校高一物理第二學(xué)期期末綜合測試試題含解析
- 2024年公共衛(wèi)生監(jiān)督員職責(zé)及管理知識考試題庫(附含答案)
評論
0/150
提交評論