![C++課程設(shè)計學生成績管理管理系統(tǒng)說明書_第1頁](http://file4.renrendoc.com/view/5fa0be81947315eea50a5322d4157e94/5fa0be81947315eea50a5322d4157e941.gif)
![C++課程設(shè)計學生成績管理管理系統(tǒng)說明書_第2頁](http://file4.renrendoc.com/view/5fa0be81947315eea50a5322d4157e94/5fa0be81947315eea50a5322d4157e942.gif)
![C++課程設(shè)計學生成績管理管理系統(tǒng)說明書_第3頁](http://file4.renrendoc.com/view/5fa0be81947315eea50a5322d4157e94/5fa0be81947315eea50a5322d4157e943.gif)
![C++課程設(shè)計學生成績管理管理系統(tǒng)說明書_第4頁](http://file4.renrendoc.com/view/5fa0be81947315eea50a5322d4157e94/5fa0be81947315eea50a5322d4157e944.gif)
![C++課程設(shè)計學生成績管理管理系統(tǒng)說明書_第5頁](http://file4.renrendoc.com/view/5fa0be81947315eea50a5322d4157e94/5fa0be81947315eea50a5322d4157e945.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
*******************實踐教學*******************XXX大學計算機與通信學院2015年秋季學期C++程序設(shè)計課程設(shè)計題目:學生成績管理系統(tǒng)專業(yè)班級:姓名:學號:指導教師:學生成績管理系統(tǒng)摘要:本次課程設(shè)計采用面向?qū)ο螅?+語言,開發(fā)了一個基本的學生成績管理系統(tǒng),該系統(tǒng)具備了按班級完成對學生成績信息的錄入和修改,并用文件保存。實現(xiàn)按班級輸出學生的成績單;實現(xiàn)按學號和姓名進行查詢,按平均成績進行排序功能,對學生的管理也可以更加方便快捷。采用的的方法和過程:(1)將學生的信息存入文件中,并命名為:score.txt;(2)編譯一個C++語言函數(shù),其中包含三個類:Person類(人員的基本屬性),student類(繼承Person),Manage類(實現(xiàn)對成績信息的操作)。(輸入學號時必須是6位以上字符串,不允許重復。)意義:使學生對成績管理有所了解,并且培養(yǎng)學生的分析能力和動手能力、增強學生對課本理論知識的鞏固。關(guān)鍵詞:面向?qū)ο驝++;課程設(shè)計;學生成績管理系統(tǒng)。2.總體程序框圖學生成績管理系統(tǒng)學生成績管理系統(tǒng) 按平均分顯示退出系統(tǒng)按班錄入學生成績按班輸出學生成績修改成績查詢個人成績按平均分顯示退出系統(tǒng)按班錄入學生成績按班輸出學生成績修改成績查詢個人成績按學號查詢按姓名查詢按學號查詢按姓名查詢2.1.2運行環(huán)境1.硬件環(huán)境:主機、顯示器、優(yōu)盤、外部設(shè)備等。2.軟件環(huán)境:操作系統(tǒng)、網(wǎng)絡軟件、數(shù)據(jù)庫系統(tǒng)以及其它特殊軟件要求。2.1.3限制條件(可選)(1)必須使用或者避免的特定技術(shù)、工具、編程語言和數(shù)據(jù)庫;(2)目前所掌握的只是較少,對于有些函數(shù)不能很好的編譯,使系統(tǒng)不能完成一些高端的任務;(3)系統(tǒng)對外部因素存在依賴,需要有其他組件的參與才能夠完成任務。2.2功能需求按班級完成對學生成績信息的錄入和修改,并用文件保存。實現(xiàn)按班級輸出學生的成績單;實現(xiàn)按學號和姓名進行查詢,按平均成績進行排序功能。2.2.1功能1按班錄入所有的學生成績信息管理員可以錄入學生的班級,姓名,學號,各科成績等信息。2.2.2功能2查詢個人成績(擁有二級菜單:學號,姓名)可以通過輸入學號或姓名查詢學生成績。2.2.3功能3修改成績(按學號,課程)管理員可以修改學生信息。2.2.4功能4按班輸出成績單管理員可以按照班級輸出學生成績單。2.2.5功能5按平均分顯示可以直接按照平均分顯示學生成績。2.2.6功能6退出系統(tǒng)2.3數(shù)據(jù)描述學生成績管理系統(tǒng)學生成績管理系統(tǒng)退出系統(tǒng)按平均分顯示按班輸出學生成績修改成績查詢個人成績按班錄入學生成績退出系統(tǒng)按平均分顯示按班輸出學生成績修改成績查詢個人成績按班錄入學生成績按姓名查詢按學號查詢按姓名查詢按學號查詢3概要本系統(tǒng)主要依據(jù)學生成績管理為背景,進行軟件的設(shè)計和開發(fā)。該系統(tǒng)主要通過三個類,一個文件用于錄入學生成績信息。分為五大模塊,以完成對學生成績的錄入,查詢,修改,顯示,輸出等功能。3詳細設(shè)計3.1系統(tǒng)主要函數(shù)說明1)主函數(shù)main():定義學生結(jié)構(gòu)體數(shù)組,調(diào)用錄入、統(tǒng)計等函數(shù)對成績表進行處理;2)錄入函數(shù)Input():輸入班級到政治課成績;3)統(tǒng)計函數(shù)Statistic():計算平均成績;4)查詢函數(shù)Lookup():查詢指定學號學生成績記錄;5)修改函數(shù)Modify():修改指定學號學生成績記錄;6)刪除函數(shù)Delete():刪除指定學號學生記錄;7)輸出函數(shù)Output():輸出班級所有學生成績記錄;8)排序函數(shù)Sort():按平均分對學生成績記錄項進行降序排序;9)插入函數(shù)Insert():按平均分順序插入新記錄。3.1.1函數(shù)【功能】主函數(shù)根據(jù)學生成績管理系統(tǒng)的要求,對學生成績等信息實現(xiàn)錄入,查詢,修改,輸出,顯示等功能。4系統(tǒng)測試界面功能一:錄入學生成績功能二:顯示學生成績功能三:查找學生成績按學號查找按姓名查找功能四:修改學生成績功能五:插入學生信息功能六:排列管理成績功能七:顯示班級學生成績功能零:退出系統(tǒng)5總結(jié)通過這次課程設(shè)計,使我對面向?qū)ο驝++語言有了更進一步的認識和了解,想要學好它重在于實踐,要通過不斷地上機操作才能更好的學習它,我也發(fā)現(xiàn)我自己的好多不足之處。通過學習也有所改進,再又對面向?qū)ο驝++語言的一些函數(shù)不太了解,所以在以后的學習過程中我會更加注重實踐操作。在課程設(shè)計的過程中,收獲知識和提高能力的同時,我也懂得如何去制定和實現(xiàn)計劃。課程設(shè)計是培養(yǎng)學生綜合運用所學知識發(fā)展提出分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié)是對學生實際工作能力的具體訓練和考察過程。隨著科學技術(shù)的的日新月異,從拿到題目到完成整個編程,從理論到實踐,可以學到很多的東西。同時不僅可以鞏固以前課本中的知識,而且還學到課本以外的知識。通過課程設(shè)計使我們知道理論和實踐的結(jié)合是十分重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識和課外實踐很好地結(jié)合起來,才能對自己的的專業(yè)知識有所了解,或者說是為自己以后專業(yè)知識的學習做以鋪墊。在課程過程中發(fā)現(xiàn)了自己一些明顯的不足,如對面向?qū)ο驝++語言基礎(chǔ)知識掌握的不牢靠,不能很好地運用自己以前所學內(nèi)容進行編程,而且不能夠在特定的環(huán)境下做到仔細認真,很小的問題在編程過程中出現(xiàn)很多次。但是在老師的耐心教導下,我們逐步進入狀態(tài),并且做了一個簡單的學生成績管理系統(tǒng)。通過對整個系統(tǒng)的設(shè)計,編譯,使我們對各個系統(tǒng)有所了解。在整個系統(tǒng)中,內(nèi)容包括很多,運用的函數(shù)也十分復雜,所以過程中容不得半點馬虎。當然在操作過程中也遇到一些大的問題,如文件的操作,需要有模塊化思維能力,也就是在編程任意功能模塊和函數(shù)的時候需要全面的思考,不能夠局限于完成當前任務的簡單思路上,不能夠讓模塊脫離整個系統(tǒng)??傊谡n設(shè)過程中,學到了很多課外的東西,并且自己對面向?qū)ο驝++語言有了更進一步的了解。自己的動手能力和分析能力有了很大程度的提高,這兩周看似過的很是悠閑但卻是受益匪淺。致謝非常感謝張璽君老師和馬維俊老師的指導,在設(shè)計中我們遇到了很多編程問題,最后在老師的指導下,我們慢慢地進入狀態(tài),順利的完成了所有編程題目。每天我們在機房編寫程序,老師們也是寸步不離,幫助我們解決問題,由于編程是在英文狀態(tài)下進行的,很多單詞不知道意思,導致不懂提示錯誤源頭的意思,從而無法找出錯誤的原因。在這方面老師給我們提供很大幫助。在程序出現(xiàn)錯誤的時候老師耐心講解,查找錯誤幫我們調(diào)試。在此,我們對各位辛勤工作的老師致以最誠摯的感謝。附錄:源程序:#include<iostream.h>#include<fstream.h>#include<stdlib.h>#include<string.h>#include<stdio.h>classPerson{public:charname[8];};classstudent:publicPerson//構(gòu)建學生類{public: friendvoidManage(studentstud[]); friendvoidInput(studentstud[]); friendvoidStatistic(studentstud[]); friendvoidLookup(studentstud[]); friendvoidModify(studentstud[]); friendvoidOutput(studentstud[]); friendvoidInsert(studentstud[]); friendvoidWrite(studentstud[],intn);friendintRead(studentstud[]);private: intnum; charname[8]; charclass_0[20]; floatc_program; floatenglish; floatmath; floataverage; intorder;}stud[100];classManage:publicstudent{};voidWrite(studentstud[],intn)//向文件中寫入數(shù)據(jù){ fstreammyFile; myFile.open("score.txt",ios::out|ios::binary); if(!myFile) { cout<<"score.txtcan'topen!"<<endl; abort(); } intcount=n; myFile<<count<<endl<<endl; for(inti=0;i<=count;i++) {myFile<<stud[i].class_0<<""<<stud[i].num<<""<<stud[i].name<<""<<stud[i].c_program<<""<<stud[i].english<<""<<stud[i].math<<""<<stud[i].average<<endl; }myFile.close();}intRead(studentstud[])//從文件中讀數(shù)據(jù){fstreammyFile;myFile.open("score.txt",ios::in|ios::binary); if(!myFile) { cout<<"score.txtcan'topen!"<<endl; abort(); } intcount; myFile.seekg(0);myFile>>count; for(inti=0;i<=count;i++) {myFile>>stud[i].class_0>>stud[i].num>>stud[i].name>>stud[i].c_program>>stud[i].english>>stud[i].math>>stud[i].average; }myFile.close();returncount;}voidInput(studentstud[])//---------------輸入學生成績{ system("cls");/*運行前清屏*/ inti=0; intflag; charsign; cout<<endl<<">>>>>>>>請輸入學生成績<<<<<<<<\n"<<endl; while(sign!='n'&&sign!='N')/*判斷*/ { cout<<"班級:";/*交互輸入*/ cin>>stud[i].class_0;loop: cout<<"學號:"; cin>>stud[i].num; intc=0; while(c<i) { c++; if(stud[i].num==stud[i-c].num) { cout<<"你輸入的學號已經(jīng)存在!請重新輸入!"<<endl; gotoloop; } } cout<<"姓名:"; cin>>stud[i].name; do{ flag=0; cout<<"C++成績:"; cin>>stud[i].c_program;if(stud[i].c_program>100||stud[i].c_program<1)cout<<"請輸入1-100之間的數(shù)字!\n";elseflag=1; }while(flag==0);do{ flag=0; cout<<"英語成績:"; cin>>stud[i].english;if(stud[i].english>100||stud[i].english<1)cout<<"請輸入1-100之間的數(shù)字!\n";elseflag=1; }while(flag==0);do{ flag=0; cout<<"數(shù)學成績:"; cin>>stud[i].math;if(stud[i].math>100||stud[i].math<1)cout<<"請輸入1-100之間的數(shù)字!\n";elseflag=1; }while(flag==0); stud[i].average=(stud[i].c_program+stud[i].english+stud[i].math)/3; cout<<"平均分:"<<stud[i].average<<endl; cout<<"繼續(xù)錄入學生成績?(y/n)"; cin>>sign;/*輸入判斷*/ i++; } Write(stud,i);}voidStatistic(studentstud[])//---------------統(tǒng)計學生數(shù)據(jù){system("cls");/*運行前清屏*/intn=Read(stud); cout<<endl<<">>>>>>>>輸出學生成績<<<<<<<<\n"<<endl;cout<<"班級"<<"\t"<<"學號"<<"\t"<<"姓名"<<"\t"<<"平均分"<<endl;for(inti=0;i<n;i++)cout<<stud[i].class_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<stud[i].average<<endl;system("pause");}voidLookup(studentstud[])//---------------查找學生成績{intp;cout<<"請選擇1.按學號查找2.按姓名查找"<<endl; cin>>p; if(p==1){ system("cls");/*運行前清屏*/intn=Read(stud); ints; inti=0; cout<<endl<<">>>>>>>>查找學生成績<<<<<<<<\n"<<endl; cout<<"請輸入查找學生的學號:"<<endl; cin>>s; while((stud[i].num-s)!=0&&i<n)i++;/*查找判斷*/ if(i==n) { cout<<"沒有該學生的信息!"<<endl;/*輸入失敗信息*/ } else { cout<<"---------------------------"<<endl; cout<<"班級:"<<stud[i].class_0<<endl;/*輸出該學生信息*/ cout<<"學號:"<<stud[i].num<<endl; cout<<"姓名:"<<stud[i].name<<endl; cout<<"C++:"<<stud[i].c_program<<endl; cout<<"英語:"<<stud[i].english<<endl; cout<<"數(shù)學:"<<stud[i].math<<endl; cout<<"平均分:"<<stud[i].average<<endl; }} if(p==2) {system("cls");/*運行前清屏*/intm=Read(stud); chart; inti=0; cout<<endl<<">>>>>>>>查找學生成績<<<<<<<<\n"<<endl; cout<<"請輸入查找學生的姓名:"<<endl; cin>>t; while(strcmp(stud[i].name-t,stud[i].name)==0&&i<m)i++;/*查找判斷*/ { cout<<"---------------------------"<<endl; cout<<"班級:"<<stud[i].class_0<<endl;/*輸出該學生信息*/ cout<<"學號:"<<stud[i].num<<endl; cout<<"姓名:"<<stud[i].name<<endl; cout<<"C++:"<<stud[i].c_program<<endl; cout<<"英語:"<<stud[i].english<<endl; cout<<"數(shù)學:"<<stud[i].math<<endl; cout<<"平均分:"<<stud[i].average<<endl; }}}voidModify(studentstud[])//---------------修改學生成績{ system("cls");/*運行前清屏*/intn=Read(stud); ints,a;floatq; inti=0; cout<<endl<<">>>>>>>>修改學生成績<<<<<<<<\n"<<endl; cout<<"輸入修改成績學生的學號:"<<endl; cin>>s; while((stud[i].num-s)!=0&&i<n)i++;/*查找判斷*/ if(i==n) { cout<<"沒有該學生的成績!"<<endl;/*輸入失敗信息*/ } else { cout<<"----------該學生的信息----------\n"<<endl;/*格式頭*/ cout<<"班級"<<"\t"<<"學號"<<"\t"<<"姓名"<<"\t"<<"c++"<<"\t"<<"英語"<<"\t"<<"數(shù)學"<<"\t"<<"平均分"<<endl; cout<<"---------------------------------"<<endl; cout<<stud[i].class_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<stud[i].c_program<<"\t"<<stud[i].english<<"\t"<<stud[i].math<<"\t"<<stud[i].average<<endl; cout<<"---------------------------------"<<endl; cout<<"請輸入要修改的課程號"<<endl; cout<<"1.c語言2.英語3.數(shù)學"<<endl; cin>>a; cout<<"重新輸入分數(shù)"<<endl; cin>>q; if(a==1)stud[i].c_program=q; if(a==2)stud[i].english=q; if(a==3)stud[i].math=q; stud[i].average=(stud[i].c_program+stud[i].english+stud[i].math)/3;cout<<"----------該學生的信息----------\n"<<endl;/*格式頭*/ cout<<"班級"<<"\t"<<"學號"<<"\t"<<"姓名"<<"\t"<<"c++"<<"\t"<<"英語"<<"\t"<<"數(shù)學"<<"\t"<<"平均分"<<endl; cout<<"---------------------------------"<<endl; cout<<stud[i].class_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<stud[i].c_program<<"\t"<<stud[i].english<<"\t"<<stud[i].math<<"\t"<<stud[i].average<<endl; charc; cout<<"是否保存數(shù)據(jù)?(y/n)"<<endl; cin>>c; if(c!='n'&&c!='N') Write(stud,n); }}voidInsert(studentstud[])//---------------增加學生成績{ system("cls");/*運行前清屏*/ intn=Read(stud); chars; cout<<endl<<"************插入學生成績***********\n"<<endl; while(s!='n'&&s!='N') { cout<<"班級:"<<endl;/*交互輸入*/cin>>stud[n].class_0;cout<<"學號:";cin>>stud[n].num;cout<<"姓名:";cin>>stud[n].name; cout<<"C++成績:"; cin>>stud[n].c_program; cout<<"英語成績:"; cin>>stud[n].english; cout<<"數(shù)學成績:"; cin>>stud[n].math; stud[n].average=(stud[n].c_program+stud[n].english+stud[n].math)/3; cout<<"平均分"<<stud[n].average; n++; cout<<"插入成功!"<<endl;/*返回成功信息*/ cout<<"是否繼續(xù)輸入(y/n)"<<endl; cin>>s; } Write(stud,n);}voidManage(studentstud[])//---------------按平均分對學生成績記錄項進行降序排序{ system("cls");/*運行前清屏*/ inti,j,k; floats; chart[20]; cout<<endl<<"**********排列管理成績**********\n"<<endl; intn=Read(stud); for(i=0;i<n-1;i++)/*冒泡法排序*/ for(j=0;j<n-1-i;j++) if(stud[j].average<stud[j+1].average) { strcpy(t,stud[j+1].class_0); strcpy(stud[j+1].class_0,stud[j].class_0); strcpy(stud[j].class_0,t); k=stud[j+1].num; stud[j+1].num=stud[j].num; stud[j].num=k; strcpy(t,stud[j+1].name); strcpy(stud[j+1].name,stud[j].name); strcpy(stud[j].name,t); s=stud[j+1].c_program; stud[j+1].c_program=stud[j].c_program; stud[j].c_program=s; s=stud[j+1].english; stud[j+1].english=stud[j].english; stud[j].english=s; s=stud[j+1].math; stud[j+1].math=stud[j].math; s=stud[j+1].average; stud[j+1].average=stud[j].average; stud[j].average=s; } cout<<"-------------------------------------"<<endl;/*格式頭*/ cout<<"班級"<<"\t"<<"學號"<<"\t"<<"姓名"<<"\t"<<"C++"<<"\t"<<"英語"<<"\t"<<"數(shù)學"<<"\t"<<"平均分"<<"\t"<<"名次"<<endl; for(i=0;i<n;i++)/*循環(huán)輸入*/ { stud[i].order=i+1; cout<<stud[i].class_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<stud[i].c_program<<"\t"<<stud[i].english<<"\t"<<stud[i].math<<"\t"<<stud[i].average<<"\t"<<stud[i].order<<endl; } Write(stud,n);}voidOutput(studentstud[])//---------------顯示全部學生成績{ system("cls");/*運行前清屏*/ intn=Read(stud); cout<<"*****************顯示班級學生成績*****************\n"<<endl; if(!stud) cout<<"沒有記錄"; else { cout<<"-------------------------------------------------------------------------"<<endl;/*格式頭*/ cout<<"班級"<<"\t"<<"學號"<<"\t"<<"姓名"<<"\t"<<"c++"<<"\t"<<"英語"<<"\t"<<"數(shù)學"<<"\t"<<"平均分"<<endl; for(inti=0;i<n;i++)/*循環(huán)輸入*/ { cout<<stud[i].class_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<stud[i].c_program<<"\t"<<stud[i].english<<"\t"<<stud[i].math<<"\t"<<stud[i].average<<endl; }cout<<"-------------------------------------------------------------------------"<<endl; }}intmenu()/*菜單函數(shù)*/{ charc; do { system("cls");/*運行前清屏*/cout<<"*******************************************************\n"<<endl;cout<<"-----------------歡迎使用學生成績管理系統(tǒng)-------------\n"<<endl;cout<<"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"<<endl;cout<<"*【1】輸入學生成績*"<<endl; cout<<"*【2】顯示學生成績*"<<endl; cout<<"*【3】查找學生成績*"<<endl; cout<<"*【4】修改學生成績*"<<endl; cout<<"*【5】插入學生成績
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年風電錨板生產(chǎn)線建設(shè)項目可行性研究報告1
- 班組成員滿意度調(diào)查的方法與技巧
- 知識產(chǎn)杈推動教育創(chuàng)新的重要力量
- 中國門部件項目投資可行性研究報告
- 2025年絲巾項目可行性研究報告
- 2025年鹽酸普奈洛爾項目投資可行性研究分析報告
- 中國起撥道機械行業(yè)發(fā)展運行現(xiàn)狀及投資戰(zhàn)略規(guī)劃報告
- 原位熱親-疏復合潤濕性網(wǎng)膜的油水分離性能和機制研究
- 視覺修辭視域下美團微電影廣告視覺意象研究
- 漢水流域稻作農(nóng)業(yè)文化遺產(chǎn)潛在分布區(qū)識別研究
- 封條模板A4直接打印版
- 立式加工中心說明書
- 唐太宗李世民
- 作文紙格子信紙
- 第八版神經(jīng)病學配套課件-12-中樞神經(jīng)系統(tǒng)感染性疾病
- 污水管網(wǎng)計算說明書
- 15MW風力發(fā)電機
- 正面管教 讀書分享(課堂PPT)
- 肌肉注射流程
- 互聯(lián)網(wǎng)銷售卷煙(煙草)案件的分析
- 公務員考察政審表樣本
評論
0/150
提交評論