學(xué)生成績(jī)管理系統(tǒng)C編程實(shí)驗(yàn)報(bào)告_第1頁(yè)
學(xué)生成績(jī)管理系統(tǒng)C編程實(shí)驗(yàn)報(bào)告_第2頁(yè)
學(xué)生成績(jī)管理系統(tǒng)C編程實(shí)驗(yàn)報(bào)告_第3頁(yè)
學(xué)生成績(jī)管理系統(tǒng)C編程實(shí)驗(yàn)報(bào)告_第4頁(yè)
學(xué)生成績(jī)管理系統(tǒng)C編程實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

《C++程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目:學(xué)生成績(jī)管理系統(tǒng)專(zhuān)業(yè):計(jì)算機(jī)科學(xué)與技術(shù)(網(wǎng)絡(luò)工程)班級(jí):學(xué)號(hào):姓名:指導(dǎo)老師:日期:2023.05.31目錄一、設(shè)計(jì)任務(wù)與規(guī)定…………1.設(shè)計(jì)內(nèi)容………………32.課程設(shè)計(jì)的規(guī)定………3二、系統(tǒng)分析(需求分析)…………………31.需求分析…………32.系統(tǒng)性能規(guī)定……33.系統(tǒng)的功能分析……34.系統(tǒng)功能模塊……35.模塊框架圖…………3三、系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)……41.界面設(shè)計(jì)…………42.功能設(shè)計(jì)與實(shí)現(xiàn)………………4四、測(cè)試結(jié)果……4五、總結(jié)…………5六、參考資料……5附錄:源程序……5一、設(shè)計(jì)任務(wù)與規(guī)定1.設(shè)計(jì)內(nèi)容:a.設(shè)計(jì)四個(gè)類(lèi);學(xué)生類(lèi)(描述學(xué)生基本信息);成績(jī)類(lèi):班級(jí)類(lèi);課程類(lèi)(描述課程信息:課程編號(hào),科目名稱(chēng)(如高等數(shù)學(xué),大學(xué)英語(yǔ)等);學(xué)生成績(jī)及課程信息用文獻(xiàn)保存,每個(gè)類(lèi)一個(gè)文獻(xiàn),程序執(zhí)行時(shí)從文獻(xiàn)讀入;b.能按學(xué)期,按班級(jí)完畢對(duì)學(xué)生成績(jī)的錄入,修改,能按班級(jí)記錄學(xué)生的成績(jī);求學(xué)生的總分及平均分;并能根據(jù)學(xué)生的平均成績(jī)進(jìn)行排序,能查詢學(xué)生成績(jī),不及格科目及學(xué)生名單;能按班級(jí)輸出學(xué)生的成績(jī)單。–設(shè)立學(xué)生的成績(jī)信息:學(xué)生學(xué)號(hào)、姓名、所選課程名稱(chēng)、平時(shí)成績(jī)、期末成績(jī)、平時(shí)成績(jī)所占比例–計(jì)算學(xué)生總評(píng)成績(jī):總評(píng)成績(jī)=平時(shí)成績(jī)*平時(shí)成績(jī)所占比例+期末成績(jī)*(1-平時(shí)成績(jī)所占比例)–顯示學(xué)生的姓名、所選課程名稱(chēng)以及平時(shí)成績(jī)、期末成績(jī)和總評(píng)成績(jī)信息。分單人顯示和以班輸出(班成績(jī)單格式輸出到文獻(xiàn))–注意,至少一個(gè)班,30人三門(mén)課2.課程設(shè)計(jì)的規(guī)定:根據(jù)C++課程所學(xué)的概念、理論和方法,按照C++程序設(shè)計(jì)的基本環(huán)節(jié),設(shè)計(jì)出一個(gè)適當(dāng)規(guī)模的程序來(lái)實(shí)現(xiàn)設(shè)計(jì)課程內(nèi)容中的所有功能;設(shè)計(jì)主控模塊程序.對(duì)給出的程序源代碼要給出各部分的具體注釋?zhuān)约焊鶕?jù)能力及需要添加相應(yīng)功能模塊,增強(qiáng)模擬系統(tǒng)功能。涉及系統(tǒng)的功能分析、系統(tǒng)的功能模塊設(shè)計(jì)、程序流程圖或結(jié)構(gòu)框圖、邏輯結(jié)構(gòu)設(shè)計(jì),數(shù)據(jù)庫(kù)中的表、視圖(假如使用)、索引的結(jié)構(gòu)和定義、觸發(fā)器、存儲(chǔ)過(guò)程、課程設(shè)計(jì)體會(huì)。二、系統(tǒng)分析(需求分析)1.需求分析:a.能對(duì)學(xué)生各科成績(jī)進(jìn)行錄入:。b.能對(duì)學(xué)生的成績(jī)進(jìn)行增長(zhǎng)。c.能對(duì)學(xué)生的成績(jī)進(jìn)行刪除。d.能對(duì)學(xué)生的成績(jī)進(jìn)行修改。e.能對(duì)學(xué)生的成績(jī)按總成績(jī),姓名,進(jìn)行查詢。f.能輸出學(xué)生的所有數(shù)據(jù)。g.能進(jìn)行成績(jī)記錄h能進(jìn)行總分查詢排名。2.系統(tǒng)性能規(guī)定:a.系統(tǒng)安全、可靠;b.功能齊全;c.操作方便、界面和諧;d易于維護(hù)和擴(kuò)充。3.系統(tǒng)的功能分析:資料維護(hù):系統(tǒng)維護(hù)涉及對(duì)學(xué)生信息的錄入操作及數(shù)據(jù)表中的信息進(jìn)行瀏覽。系統(tǒng)功能:可以對(duì)數(shù)據(jù)表中的信息進(jìn)行瀏覽。系統(tǒng)查詢:可以對(duì)學(xué)生的信息進(jìn)行查詢。4.系統(tǒng)功能模塊學(xué)生成績(jī)查詢系統(tǒng)有:成績(jī)錄入、增長(zhǎng)、刪除、修改,數(shù)據(jù)查詢,排序顯示構(gòu)成。5.模塊框架圖學(xué)生成績(jī)管理系統(tǒng)學(xué)生成績(jī)管理系統(tǒng)操作查詢成績(jī)記錄按總成績(jī)排名錄入增長(zhǎng)刪除修改總成績(jī)查詢姓名每個(gè)學(xué)生的平均成績(jī)各科不及格的人數(shù)輸出所有學(xué)生的成績(jī)?nèi)⑾到y(tǒng)設(shè)計(jì)與實(shí)現(xiàn)1.界面設(shè)計(jì)程序運(yùn)營(yíng)后會(huì)出現(xiàn)一個(gè)簡(jiǎn)捷的窗口,便于用戶查詢數(shù)據(jù)。2.功能設(shè)計(jì)與實(shí)現(xiàn)通過(guò)主窗體調(diào)用其他窗體,具體實(shí)現(xiàn)可以參照系統(tǒng)分析相關(guān)內(nèi)容。應(yīng)用系統(tǒng)主控界面涉及記錄編輯和記錄查詢等功能模塊。記錄編輯功能完畢學(xué)生成績(jī)記錄編輯和記錄查詢功能。記錄查詢功能可以對(duì)數(shù)據(jù)各分類(lèi)的記錄進(jìn)行查詢四、測(cè)試結(jié)果每一個(gè)case都能執(zhí)行,但是有很多的地方都不夠完善,例如:在總成績(jī)排序中,只能輸出總成績(jī),不能單獨(dú)的輸出學(xué)生的相應(yīng)的信息;每次進(jìn)行別的操作之前都要在進(jìn)行一次數(shù)據(jù)的錄入,不能直接對(duì)原有的文獻(xiàn)進(jìn)行讀取。五、總結(jié)本次c++課程設(shè)計(jì),在指導(dǎo)教師的精心教導(dǎo)下,我們學(xué)會(huì)了如何用C++編寫(xiě)一個(gè)簡(jiǎn)樸的應(yīng)用程序。一方面要對(duì)程序的設(shè)計(jì)規(guī)定有一個(gè)比較明確的結(jié)識(shí),然后系統(tǒng)分析與系統(tǒng)設(shè)計(jì),最后是代碼設(shè)計(jì)與調(diào)試。程序?qū)崿F(xiàn)上,設(shè)計(jì)了簡(jiǎn)樸的查詢界面,將各個(gè)功能集中出來(lái)按照程序編寫(xiě)原則,便于查詢。根據(jù)C++課程所學(xué)的概念、理論和方法,按照C++程序設(shè)計(jì)的基本環(huán)節(jié),設(shè)計(jì)出一個(gè)適當(dāng)規(guī)模的程序;進(jìn)一步加深對(duì)C++語(yǔ)言的理解和掌握。理論聯(lián)系實(shí)際,加深和鞏固所學(xué)的理論知識(shí),提高實(shí)踐能力和計(jì)算機(jī)的綜合運(yùn)用能力。我們編寫(xiě)程序的過(guò)程是辛勞與快樂(lè)的,程序的編寫(xiě)原則很重要,只要我們?cè)诰幊蹋捅仨毑粩喔纳?,才干更好提高編程能力。六、參考資料C++程序設(shè)計(jì)譚浩強(qiáng)清華大學(xué)出版社附錄:源程序#include<iostream>#include<string>#include<fstream>#include<sstream>#include<iomanip>usingnamespacestd;classTstu//通過(guò)定義一個(gè)類(lèi)來(lái)定義數(shù)據(jù)錄入的函數(shù){charname[20];intnumber;floatmath,cpp,english,average,sum;public:Tstu(){};Tstu(charn[20],intnum,floatma,floatcj,floateng);floatgetsum();//得到總分的函數(shù)floatgetaver();//得到平均分的函數(shù)friendvoidmain();//將主函數(shù)定義為友元函數(shù),方便訪問(wèn)類(lèi)中的成員};Tstu::Tstu(charn[20],intnum,floatma,floatcj,floateng){strcpy(name,n);//得到姓名number=num;//得到學(xué)號(hào)math=ma;//得到數(shù)學(xué)成績(jī)cpp=cj;//得到c++成績(jī)english=eng;//得到英語(yǔ)成績(jī)}floatTstu::getsum()//得到總分的函數(shù){sum=cpp+english+math;returnsum;}floatTstu::getaver()//得到平均分的函數(shù){average=getsum()/3;returnaverage;}voidmain(){cout<<"*****************歡迎來(lái)到學(xué)生成績(jī)查詢系統(tǒng)*****************"<<endl;cout<<"請(qǐng)選擇您需要的操作!"<<endl;//菜單的輸出cout<<"操作:"<<endl;cout<<"(1)數(shù)據(jù)錄入"<<endl;cout<<"(2)增長(zhǎng)學(xué)生"<<endl;cout<<"(3)刪除學(xué)生"<<endl;cout<<"(4)修改數(shù)據(jù)"<<endl;cout<<"查詢:"<<endl;cout<<"(5)按總成績(jī)查詢"<<endl;cout<<"(6)按姓名查詢"<<endl;cout<<"(7)輸出所有學(xué)生的數(shù)據(jù)"<<endl;cout<<"成績(jī)記錄:"<<endl;cout<<"(8)每個(gè)學(xué)生的平均成績(jī)"<<endl;cout<<"(9)各科不及格人數(shù)"<<endl;cout<<"排名:"<<endl;cout<<"(10)按總分查詢排名"<<endl;cout<<"(11)退出"<<endl;cout<<"選擇相關(guān)操作請(qǐng)輸入相對(duì)的括號(hào)里的阿拉伯?dāng)?shù)字及字母!"<<endl;intp=0;//全局變量,用于選擇菜單時(shí)的輸入charw;//全局變量,用于在大項(xiàng)中選擇是否繼續(xù)操作Tstu*s[100];//類(lèi)定義的指針將所錄入的數(shù)據(jù)按類(lèi)中的形式分別存儲(chǔ)ofstream*file[100];inti=0;//全局變量,用于做每個(gè)錄入數(shù)據(jù)的下標(biāo)intj=0;intchris1=0;//用于判斷do—while語(yǔ)句do//判斷輸入是否對(duì)的{cin>>p;if((p>=1&&p<=11))chris1=1;elsecout<<"指令錯(cuò)誤!請(qǐng)重新輸入:"<<endl;}while(chris1==0);do{switch(p){case1://數(shù)據(jù)的錄入 {charc;//用于在小項(xiàng)中選擇是否繼續(xù)操作charname[20];intnumber;floatmath,cpp,english;do{cout<<"請(qǐng)輸入姓名:"<<endl;cin>>name;cout<<"請(qǐng)輸入學(xué)號(hào):"<<endl;cin>>number;cout<<"請(qǐng)輸入數(shù)學(xué)成績(jī):"<<endl;cin>>math;cout<<"請(qǐng)輸入C++成績(jī):"<<endl;cin>>cpp;cout<<"請(qǐng)輸入英語(yǔ)成績(jī):"<<endl;cin>>english;fstreamoutfile,infile;//作一個(gè)文本文檔在文獻(xiàn)夾中用于顯示所錄入的數(shù)據(jù)outfile.open("f1.txt",ios::out|ios::app);if(!file){cout<<"f1.txtcannotopen.\n";return; }outfile<<name<<""<<"學(xué)號(hào):"<<number<<""<<"數(shù)學(xué)成績(jī):"<<math<<""<<"C++成績(jī):"<<cpp<<""<<"外語(yǔ)成績(jī):"<<english<<endl;outfile.close();infile.open("f1.txt",ios::in);if(!file)//判斷文獻(xiàn)是否打開(kāi) {cout<<"f1.txtcannotopen.\n";return;}charch;while(infile.get(ch))cout<<ch;cout<<endl;infile.close();j++;s[i]=newTstu(name,number,math,cpp,english);i++;cout<<"數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎(y/n)"<<endl;cin>>c;chris1=0;do{if(c!='y'&&c!='n') {cout<<"指令錯(cuò)誤!請(qǐng)重新輸入!"<<endl;cin>>c;}elsechris1=1; }while(chris1==0); }while(c=='y');//反復(fù)輸入break; } case2://增長(zhǎng)學(xué)生數(shù)據(jù) {charname[20];intnumber;floatmath,cpp,english;charc;do {cout<<"請(qǐng)輸入您要增長(zhǎng)的學(xué)生的姓名:"<<endl;cin>>name;cout<<"請(qǐng)輸入你要增長(zhǎng)的學(xué)生的學(xué)號(hào):"<<endl;cin>>number;cout<<"請(qǐng)輸入數(shù)學(xué)成績(jī):"<<endl;cin>>math;cout<<"請(qǐng)輸入C++成績(jī):"<<endl;cin>>cpp;cout<<"請(qǐng)輸入英語(yǔ)成績(jī):"<<endl;cin>>english;fstreamoutfile,infile;outfile.open("f1.txt",ios::out|ios::app);if(!file) {cout<<"f1.txtcannotopen.\n";return; }outfile<<name<<""<<"學(xué)號(hào):"<<number<<""<<"數(shù)學(xué)成績(jī):"<<math<<""<<"C++成績(jī):"<<cpp<<""<<"外語(yǔ)成績(jī):"<<english<<endl;outfile.close();infile.open("f1.txt",ios::in);if(!file) {cout<<"f1.txtcannotopen.\n";return; }charh;while(infile.get(h))cout<<h;cout<<endl;infile.close();j++;s[i]=newTstu(name,number,math,cpp,english);i++;cout<<"數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎(y/n)"<<endl;cin>>c;if(c!='y'&&c!='n') {cout<<"指令錯(cuò)誤!請(qǐng)重新輸入!"<<endl;cin>>c; } }while(c=='y');break; } case3://刪除學(xué)生信息 { charc;stringxingming,line,str,name; do {ifstreamfin("f1.txt");fstreamoutfile("f2.txt",ios::trunc|ios::out);//作一個(gè)文本文檔在文獻(xiàn)夾中用于顯示所錄入的數(shù)據(jù)cout<<"請(qǐng)輸入您要?jiǎng)h除的學(xué)生的姓名:"<<endl;cin>>xingming; while(!fin.eof()) { getline(fin,line);istringstreamstream(line);name=line.substr(0,line.find("",0));//找到名字,判斷是否相等if(name!=xingming)outfile<<line<<endl; }outfile.close();fin.close();fstreamf("f1.txt",ios::trunc|ios::out);ifstreamoutf("f2.txt");f<<outf.rdbuf();outf.close();f.close();cout<<"數(shù)據(jù)刪除成功,想繼續(xù)刪除嗎(y/n)"<<endl;cin>>c;if(c!='y'&&c!='n') { cout<<"指令錯(cuò)誤!請(qǐng)重新輸入!"<<endl;cin>>c; } }while(c=='y');break; } case4://修改數(shù)據(jù) { stringsname,line,str,name; intnu;floateng,ma,com;intflag;charc; if(i==0) { cout<<"系統(tǒng)中沒(méi)有輸入數(shù)據(jù),請(qǐng)先輸入數(shù)據(jù)!"<<endl;break; } do { flag=0; cout<<"請(qǐng)輸入您要修改的學(xué)生的姓名:"; cin>>name; fstreamfin("f1.txt",ios::in); ofstreamoutfile("f.txt",ios::trunc|ios::out); cout<<endl; while(!fin.eof())//在文獻(xiàn)中查找 { getline(fin,line); istringstreamstream(line); sname=line.substr(0,line.find("",0)); if(name!=sname) { outfile<<line<<endl; } elseflag=1; } fin.close(); if(flag=1) { cout<<"請(qǐng)輸入修改學(xué)生姓名及其新學(xué)號(hào),數(shù)學(xué),c++和英語(yǔ)成績(jī):"; cin>>name>>nu>>ma>>com>>eng; cout<<endl; outfile<<name<<""<<"學(xué)號(hào):"<<nu<<""<<"數(shù)學(xué)成績(jī):"<<ma<<""<<"C++成績(jī):"<<com<<""<<"外語(yǔ)成績(jī):"<<eng<<endl; outfile.close(); fstreamoutf("f1.txt",ios::trunc|ios::out); fstreaminf("f.txt",ios::in); outf<<inf.rdbuf()<<endl; outf.close(); inf.close(); } if(flag=0)cout<<"對(duì)不起,您要修改的學(xué)生不存在!請(qǐng)查證后輸入!"<<endl; cout<<"想繼續(xù)修改嗎(y/n):"; cin>>c; cout<<endl; if(c!='y'&&c!='n') { cout<<"指令錯(cuò)誤!請(qǐng)重新輸入!"<<endl<<""; cin>>c; } }while(c=='y'); break; } case5://按總分查詢 { intj=0;floatSUM;charc;intflag; if(i==0) { cout<<"系統(tǒng)中沒(méi)有輸入數(shù)據(jù),請(qǐng)先輸入數(shù)據(jù)!"<<endl;break; } do { flag=0; cout<<"請(qǐng)輸入您要查詢的學(xué)生的總成績(jī):"<<endl; cin>>SUM; for(intj=0;j<i;j++) { if(s[j]->getsum()==SUM) { flag=1; cout<<"您要查詢的學(xué)生是:"<<(*s[j]).name<<endl; cout<<"該生的信息為:"<<endl; cout<<"學(xué)號(hào):"<<(*s[j]).number<<"數(shù)學(xué)分?jǐn)?shù):"<<(*s[j]).math<<"c++分?jǐn)?shù):"<<(*s[j]).cpp<<"英語(yǔ)分?jǐn)?shù)"<<(*s[j]).english<<endl; } } if(flag==0)cout<<"對(duì)不起!您要查詢的學(xué)生不存在!"<<endl; cout<<"是否繼續(xù)查?(y/n):"; cin>>c; if(c!='y'&&c!='n') { cout<<"指令錯(cuò)誤!請(qǐng)重新輸入!"<<endl; cin>>c; }; }while(c=='y'); break; } case6://按姓名查詢 { charn[20];charc;intj=0;intflag; if(i==0) { cout<<"系統(tǒng)中沒(méi)有輸入數(shù)據(jù),請(qǐng)先輸入數(shù)據(jù)!"<<endl;break; } do { flag=0; cout<<"請(qǐng)輸入要查詢的名字:"<<endl; cin>>n; for(intj=0;j<i;j++) { if(strcmp(n,(*s[j]).name)==0) { flag=1; cout<<"您要查詢的學(xué)生是:"<<(*s[j]).name<<endl; cout<<"該生的信息是:學(xué)號(hào):"<<(*s[j]).number<<"數(shù)學(xué)分?jǐn)?shù):"<<(*s[j]).math<<"c++分?jǐn)?shù):"<<(*s[j]).cpp<<"英語(yǔ)分?jǐn)?shù):"<<(*s[j]).english<<endl; } } if(flag==0) cout<<"對(duì)不起您要查詢的學(xué)生不存在,請(qǐng)查證后再輸入!"<<endl; cout<<"您想繼續(xù)查詢嗎?(y/n):"; cin>>c; if(c!='y'&&c!='n') { cout<<"指令錯(cuò)誤!請(qǐng)重新輸入:"<<endl; cin>>c; } }while(c=='y'); break; } case7://輸出所有學(xué)生數(shù)據(jù) { cout<<"所有學(xué)生數(shù)據(jù)如下:"<<endl; ifstreamfile;file.open("f1.txt",ios::in); cout<<file.rdbuf(); file.close(); break; } case8://記錄每個(gè)學(xué)生的平均成績(jī) {if(i==0) { cout<<"系統(tǒng)中沒(méi)有輸入數(shù)據(jù),請(qǐng)先輸入數(shù)據(jù)!"<<endl;break; } for(intm=0;m<i;m++) { cout<<(*s[m]).name<<"學(xué)號(hào):"<<(*s[m]).number<<"總分:"<<(*s[m]).getsum()<<"均分:"<<(*s[m]).getaver()<<endl; } break; } case9://記錄各學(xué)科不及格人數(shù) { if(i==0) { cout<<"系統(tǒng)中沒(méi)有輸入數(shù)據(jù),請(qǐng)先輸入數(shù)據(jù)!"<<endl;break; } intm,n,k,j;m=0;n=0;k=0; for(j=0;j<i;j++) { if(s[j]->math<60)m++; if(s[j]->cpp<60)n++; if(s[j]->english<60)k++; } cout<<"數(shù)學(xué)不及格人數(shù)為:"<<m<<endl; cout<<"c++不及格人數(shù)為:"<<n<<endl; cout<<"英語(yǔ)不及格人數(shù)為:"<<k<<endl; break; } case10://按總分排名 { if(i

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論