




已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
河南工程學院高級程序設(shè)計語言課程設(shè)計成果報告學生成績管理系統(tǒng)設(shè)計與實現(xiàn)學生學號: 學生姓名: 學 院: 計算機學院 專業(yè)班級: 軟件工程 1341班 專業(yè)課程: 高級程序設(shè)計語言指導教師: 2014 年 6 月 27 日題 目學生成績管理系統(tǒng)設(shè)計與實現(xiàn)考核項目考核內(nèi)容得分平時考核(30分)出勤情況、態(tài)度、效率;知識掌握情況、基本操作技能、知識應(yīng)用能力、獲取知識能力系統(tǒng)設(shè)計(20分)分析系統(tǒng)的功能模塊編程調(diào)試(20分)實現(xiàn)系統(tǒng)的各個功能模塊,并完成調(diào)試回答問題(15分)回答老師針對課程設(shè)計提出的問題課程設(shè)計報告撰寫(10分)嚴格按照規(guī)范要求完成課程設(shè)計報告源代碼(5分)按照規(guī)范要求完成課程設(shè)計源代碼的排版總 評 成 績指導教師評語: 日期: 年 月 日目 錄第1章 系統(tǒng)設(shè)計目的11.1 系統(tǒng)設(shè)計內(nèi)容11.2 注意及提示11.3 系統(tǒng)設(shè)計目的1第2章 系統(tǒng)實現(xiàn)思路22.1 系統(tǒng)需求分析22.2 系統(tǒng)功能模塊22.3 模塊框架圖2第3章 系統(tǒng)詳細設(shè)計33.1 頭文件33.2定義類33.3 數(shù)據(jù)處理3第4章 系統(tǒng)調(diào)試運行134.1 系統(tǒng)調(diào)試運行13課程設(shè)計體會15參考文獻16第1章 系統(tǒng)設(shè)計目的1.1 系統(tǒng)設(shè)計內(nèi)容(1)設(shè)計四個類:學生類(描述學生基本信息);成績類;班級類;課程類(描述課程信息:課程編號、科目名稱,如高等數(shù)學、大學英語等);(2)學生成績及課程信息用文件保存,程序執(zhí)行時從文件讀入;(3)能按學期,按班級完成對學生成績的錄入、修改,能按班級統(tǒng)計學生的成績;(5)求學生的總分及平均分,并能根據(jù)學生的平均成績進行排序,能查詢學生成績,不及格科目及學生名單;能按班級輸出學生的成績單。1.2 注意及提示(1)設(shè)置學生的成績信息:學生學號、姓名、所選課程名稱、平時成績、期末成績、平時成績所占百分比 ; (2)總評成績:總評成績=平時成績*平時成績所占百分比+期末成績*(1-平時成績所占百分比); (3)顯示學生的姓名、所選課程名稱以及平時成績、期末成績和總評成績信息。分單人顯示和以班輸出(班成績單格式輸出到文件); (4)至少應(yīng)包含一個班、30人、三門課。 1.3 系統(tǒng)設(shè)計目的能按學期、班級完成對學生 成績的錄入、修改;按班級統(tǒng)計學生成績;求學生總分、平均分;根據(jù)學生平均成績排序;按班級查詢成績,以及不及格科目及學生名單。第2章 系統(tǒng)實現(xiàn)思路2.1 系統(tǒng)需求分析通過對系統(tǒng)要求的分析,可以看出需要由以下幾個模塊構(gòu)成,才能實現(xiàn)對程序所要實現(xiàn)的功能利用:(1)對學生各科成績錄入、增加、刪除、修改; (2)計算學生總分及平均分; (3)對學生成績按總成績、姓名,進行查詢,輸出所有數(shù)據(jù); (4)進行成績統(tǒng)計; (5)按總分查詢排名。2.2 系統(tǒng)功能模塊系統(tǒng)由成績錄入、增加、刪除、修改、數(shù)據(jù)查詢、排序顯示構(gòu)成。以實現(xiàn)對數(shù)據(jù)表中的信息瀏覽,可以利用其對學生的信息進行查詢。2.3 模塊框架圖框架圖可以使程序設(shè)計更加清楚、明白。框架如圖2-1:學生成績管理系統(tǒng)操作查詢成績統(tǒng)計按總成績排名錄入增加刪除修改總成績查詢姓名每個學生的平均成績各科不及格的科目科人數(shù)輸出所有學生的成績圖2-1 系統(tǒng)模塊框架圖第3章 系統(tǒng)詳細設(shè)計3.1 頭文件因為要用到文件的打開和關(guān)閉、istringstream類,所以頭文件聲明中要有:#include#include3.2定義類1.聲明一個類class Tstu,進行數(shù)據(jù)輸入函數(shù)的定義,通過定義char name20、int number、float math, cpp, English, average, sum等變量以及公用函數(shù),來實現(xiàn)函數(shù)的定義:class Tstu char name20; int number; float math, cpp, english, average, sum; public: Tstu(); Tstu ( char n20, int num, float ma, float cj, float eng ) ;float getsum();/得到總分的函數(shù) float getaver(); /得到平均分的函數(shù) friend void main(); /將主函數(shù)定義為友元函數(shù),方便訪問類中成員 ;.通過作用域運算符“:”完成對類中成員函數(shù)的引用:float Tstu:getsum() 得到總分的函數(shù);float Tstu:getaver() 得到平均分的函數(shù)。3.3 數(shù)據(jù)處理數(shù)據(jù)處理包括數(shù)據(jù)錄入、增加學生、刪除學生、修改數(shù)據(jù)、按總成績查詢、按姓名查詢、輸出所有學生數(shù)據(jù)、每個學生平均成績、各科不及格人數(shù)、按總分查詢這幾個模塊。各模塊之間程序大致相似,以下只詳細寫出其中一個模塊。(1)數(shù)據(jù)錄入定義 char c(用于在小項中選擇是否繼續(xù)操作)、char name20、int number、float math, cpp, english。在該過程需用到ifelse、dowhile語句等: cout請輸入姓名:name; cout請輸入學號:number; cout請輸入數(shù)學成績:math; cout請輸入C+成績:cpp; cout請輸入英語成績:english; 文本文檔在文件夾中用于顯示所錄入數(shù)據(jù): outfile.open(f1.txt,ios:out|ios:app); if(!file) coutf1.txt can not open.n; return; /if語句的使用 outfilename 學號:number 數(shù)學成績:math C+成績:cpp 外語成績:englishendl; outfile.close(); infile.open(f1.txt,ios:in); if(!file) /判斷文件是否打開 coutf1.txt can not open.n; return; char ch; while(infile.get(ch) coutch; coutendl; infile.close(); j+; si=new Tstu(name, number, math, cpp, english); i+; cout數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎(y/n)c; chris1=0; do if(c!=y&c!=n) cout指令錯誤!請重新輸入!c; else chris1=1; while(chris1=0); (2)增加學生 根據(jù)要求輸出輸入相關(guān)內(nèi)容,如下:cout請輸入您要增加的學生的姓名:name; cout請輸入你要增加的學生的學號:number; cout請輸入數(shù)學成績:math; cout請輸入C+成績:cpp; cout請輸入英語成績:english; (3)刪除學生ifstream fin(f1.txt); fstream outfile(f2.txt,ios:trunc|ios:out); cout請輸入您要刪除的學生的姓名:xingming; while(!fin.eof() ) getline(fin,line); istringstream stream(line); name = line.substr(0,line.find( ,0);/找名字,判斷是否相等 if(name != xingming) outfilelineendl; outfile.close(); fin.close(); fstream f(f1.txt,ios:trunc|ios:out); ifstream outf(f2.txt); foutf.rdbuf(); outf.close(); f.close(); cout數(shù)據(jù)刪除成功,想繼續(xù)刪除嗎(y/n)c; if(c!=y&c!=n) cout指令錯誤!請重新輸入!c; (4)修改數(shù)據(jù)系統(tǒng)中沒有輸入數(shù)據(jù),需要先輸入要修改的數(shù)據(jù)。輸入后,while(!fin.eof() )表示在文件中查找,然后進行判斷系統(tǒng)中是否有該數(shù)據(jù)的記錄,如下: if(flag=1) coutnamenumacomeng; coutendl;outfilename 學號:nu 數(shù)學成績:ma C+成績:com 外語成績:engendl; outfile.close(); fstream outf(f1.txt,ios:trunc|ios:out); fstream inf(f.txt,ios:in); outfinf.rdbuf()endl; outf.close(); inf.close(); if(flag=0)cout對不起,您要修改的學生不存在!請查證后輸入!endl; coutc; coutendl; if(c!=y&c!=n) cout 指令錯誤!請重新輸入!endlc; (5)按總成績查詢 if(i=0)cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break; doflag=0; cout請輸入您要查詢的學生的總成績:SUM; for(int j=0;jgetsum()=SUM) flag=1; cout您要查詢的學生是:(*sj).nameendl; cout該生的信息為:endl;cout 學號:(*sj).number 數(shù)學分數(shù):(*sj).math c+分數(shù):(*sj).cpp 英語分數(shù)(*sj).englishendl; if(flag=0)cout對不起!您要查詢的學生不存在!endl;coutc; if(c!=y&c!=n) cout指令錯誤!請重新輸入!c; ; while(c=y); break;(6) 按姓名查詢輸入要查詢的學生的名字,如果系統(tǒng)中沒有數(shù)據(jù),就要用到數(shù)據(jù)的增加,見上文。姓名查詢?nèi)缦拢篶har n20;char c;int j=0;int flag; if(i=0) cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break; do flag=0; cout請輸入要查詢的名字: n; for(int j=0;ji;j+) if(strcmp(n,(*sj).name)=0) flag=1;cout您要查詢的學生是:(*sj).nameendl;cout該生的信息是:學號:(*sj).number 數(shù) :(*sj).mathc+分數(shù):(*sj).cpp英語分數(shù):(*sj).englishendl; if(flag=0)cout對不起您要查詢的學生不存在,請查證后再輸入!endl;coutc;if(c!=y&c!=n) cout指令錯誤!請重新輸入:c;while(c=y);(7)輸出所有學生數(shù)據(jù) cout所有學生數(shù)據(jù)如下:endl; ifstream file; file.open(f1.txt,ios:in); coutfile.rdbuf(); file.close(); break;(8)統(tǒng)計每個學生的平均成績if(i=0)cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break;for(int m=0;mi;m+)cout(*sm).name 學號:(*sm).number 總分:(*sm).getsum() 均分:(*sm).getaver()endl; (9)統(tǒng)計各學科不及格人數(shù)if(i=0)cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break;int m, n, k, j; m=0; n=0; k=0;for(j=0;jmathcppenglish60)k+;cout數(shù)學不及格人數(shù)為:mendl; coutc+不及格人數(shù)為:nendl;cout英語不及格人數(shù)為:kendl;(10)按總分查詢排名 通過使用者的需求進行選擇: if(w=y) cout*歡迎來到學生成績查詢系統(tǒng)*endl; cout請選擇您需要的操作!endl; /菜單的輸出 cout操作:endl; cout(1)數(shù)據(jù)錄入endl; cout(2)增加學生endl; cout(3)刪除學生endl; cout(4)修改數(shù)據(jù)endl; cout查詢:endl; cout(5)按總成績查詢endl; cout(6)按姓名查詢endl; cout(7)輸出所有學生的數(shù)據(jù)endl; cout成績統(tǒng)計:endl; cout(8)每個學生的平均成績endl; cout(9)各科不及格人數(shù)endl; cout排名:endl; cout(10)按總分查詢排名endl; cout(11)退出endl; cout選擇相關(guān)操作請輸入相對的括號里的阿拉伯數(shù)字及字母!p; 第4章 系統(tǒng)調(diào)試運行4.1 系統(tǒng)調(diào)試運行本系統(tǒng)在VC6下編譯調(diào)試通過,可順利運行,各項功能達到設(shè)計要求。經(jīng)過編譯,;連接:;運行,得到一個對話框,如圖4-1:圖4-1 主界面根據(jù)需要輸入。如:當輸入1時,代表指定選項“(1)數(shù)據(jù)錄入”,運行結(jié)果如圖4-2:圖4-2 數(shù)據(jù)錄入輸入2,則為“(2)增加學生”,如圖4-3:圖4-3增加學生輸入3,則為“(3)刪除學生”,如圖4-4:圖4-4刪除學生課程設(shè)計體會在這次C+課程設(shè)計中,通過編寫一個簡單的應(yīng)用程序,考察和鍛煉了對程序模塊的分析、設(shè)計,函數(shù)調(diào)用等能力。有助于對本專業(yè)的進一步理解。做到了理論和實踐相結(jié)合,提高了動手操作能力。在程序設(shè)計過程中,遇到了各種各樣的難題,通過預覽課本以及一些參考書,解決了自己力所能及的部分問題,從而使印象加深、增強了信心,對該專業(yè)興趣更加濃厚。不能自行解決的,再向老師,同學們求助,雖然最后解決了問題,但是因為經(jīng)驗不足,所以方法還不是很完美,會在以后的學習中努力解決。謝謝老師和同學們的幫助?!斑z憾也是一種美”。我會帶著這份“遺憾”去敲開程序設(shè)計一層層的大門。參考文獻1譚浩強.C+面向?qū)ο蟪绦蛟O(shè)計(第二版). 清華大學出版社2譚浩強C+程序設(shè)計題解與上機指導清華大學出版社3侯俊杰.深入淺出MFC(第二版).南方出版社4李濤等.Visual C+ +SQL Server數(shù)據(jù)庫開發(fā)與實例. 清華大學出版社5張榮梅.Visual C+實用教程(第六版). 中國鐵道出版社6John Lakos.Large-Scale C+ Software Design. 中國電力出版社7Bruce Eckel.Thinking in C+. 基峰出版社 8王育堅.Visual C+面向?qū)ο缶幊探坛蹋ǖ诙妫? 清華大學出版社9孔 鵬.Visual c+ 6.0完全自學手冊.北京機械工業(yè)出版社#include#includeusing namespace std; class Tstu /通過定義一個類來定義數(shù)據(jù)錄入的函數(shù) char name20; int number; float math,cpp,english,average,sum; public: Tstu() ; Tstu ( char n20, int num,float ma,float cj,float eng ) ; float getsum();/得到總分的函數(shù) float getaver(); /得到平均分的函數(shù) friend void main(); /將主函數(shù)定義為友元函數(shù),方便訪問類中的成員 ; Tstu:Tstu ( char n20, int num,float ma,float cj,float eng ) strcpy(name,n); /得到姓名 number=num; /得到學號 math=ma; /得到數(shù)學成績 cpp=cj; /得到c+成績 english=eng; /得到英語成績 float Tstu:getsum() /得到總分的函數(shù) sum=cpp+english+math; return sum; float Tstu:getaver() /得到平均分的函數(shù) average=getsum()/3; return average; void main() cout*歡迎來到學生成績查詢系統(tǒng)*endl; cout請選擇您需要的操作!endl; /菜單的輸出 cout操作:endl; cout(1)數(shù)據(jù)錄入endl; cout(2)增加學生endl; cout(3)刪除學生endl; cout(4)修改數(shù)據(jù)endl; cout查詢:endl; cout(5)按總成績查詢endl; cout(6)按姓名查詢endl; cout(7)輸出所有學生的數(shù)據(jù)endl; cout成績統(tǒng)計:endl; cout(8)每個學生的平均成績endl; cout(9)各科不及格人數(shù)endl; cout排名:endl; cout(10)按總分查詢排名endl; cout(11)退出endl; cout選擇相關(guān)操作請輸入相對的括號里的阿拉伯數(shù)字及字母!p; if(p=1&p=11) chris1=1; else cout指令錯誤!請重新輸入:endl; while(chris1=0); do switch(p) case 1: /數(shù)據(jù)的錄入 char c; /用于在小項中選擇是否繼續(xù)操作 char name20; int number; float math,cpp,english; do cout請輸入姓名:name; cout請輸入學號:number; cout請輸入數(shù)學成績:math; cout請輸入C+成績:cpp; cout請輸入英語成績:english; fstream outfile,infile; /作一個文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù) outfile.open(f1.txt,ios:out|ios:app); if(!file) coutf1.txt can not open.n; return; outfilename 學號:number 數(shù)學成績:math C+成績:cpp 外語成績:englishendl; outfile.close(); infile.open(f1.txt,ios:in); if(!file) /判斷文件是否打開 coutf1.txt can not open.n; return; char ch; while(infile.get(ch) coutch; coutendl; infile.close(); j+; si=new Tstu(name, number,math, cpp, english); i+; cout數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎(y/n)c; chris1=0; do if(c!=y&c!=n) cout指令錯誤!請重新輸入!c; else chris1=1; while(chris1=0); while(c=y); /重復輸入 break; case 2: /增加學生數(shù)據(jù) char name20; int number; float math,cpp,english; char c; do cout請輸入您要增加的學生的姓名:name; cout請輸入你要增加的學生的學號:number; cout請輸入數(shù)學成績:math; cout請輸入C+成績:cpp; cout請輸入英語成績:english; fstream outfile,infile; outfile.open(f1.txt,ios:out|ios:app); if(!file) coutf1.txt can not open.n; return; outfilename 學號:number 數(shù)學成績:math C+成績:cpp 外語成績:englishendl; outfile.close(); infile.open(f1.txt,ios:in); if(!file) coutf1.txt can not open.n; return; char h; while(infile.get(h) couth; coutendl; infile.close(); j+; si=new Tstu(name,number, math, cpp, english); i+; cout數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎(y/n)c; if(c!=y&c!=n) cout指令錯誤!請重新輸入!c; while(c=y); break; case 3:/刪除學生信息 char c; string xingming,line,str,name; do ifstream fin(f1.txt); fstream outfile(f2.txt,ios:trunc|ios:out); /作一個文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù) cout請輸入您要刪除的學生的姓名:xingming; while(!fin.eof() ) getline(fin,line); istringstream stream(line); name = line.substr(0,line.find( ,0);/找到名字,判斷是否相等 if(name != xingming) outfilelineendl; outfile.close(); fin.close(); fstream f(f1.txt,ios:trunc|ios:out); ifstream outf(f2.txt); foutf.rdbuf(); outf.close(); f.close(); cout數(shù)據(jù)刪除成功,想繼續(xù)刪除嗎(y/n)c; if(c!=y&c!=n) cout指令錯誤!請重新輸入!c; while(c=y); break; case 4:/修改數(shù)據(jù) string sname,line,str,name; int nu;float eng,ma,com;int flag;char c;if(i=0)cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break;do flag=0; coutname; fstream fin(f1.txt,ios:in); ofstream outfile(f.txt,ios:trunc|ios:out); coutendl; while(!fin.eof() ) /在文件中查找 getline(fin,line); istringstream stream(line); sname = line.substr(0,line.find( ,0);if(name!=sname)outfilelineendl;else flag=1; fin.close(); if(flag=1) coutnamenumacomeng;coutendl;outfilename 學號:nu 數(shù)學成績:ma C+成績:com 外語成績:engendl; outfile.close();fstream outf(f1.txt,ios:trunc|ios:out);fstream inf(f.txt,ios:in);outfinf.rdbuf()endl;outf.close();inf.close(); if(flag=0)cout對不起,您要修改的學生不存在!請查證后輸入!endl; coutc; coutendl; if(c!=y&c!=n) cout 指令錯誤!請重新輸入!endlc; while(c=y);break; case 5:/按總分查詢 int j=0;float SUM;char c;int flag; if(i=0)cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break; do flag=0; cout請輸入您要查詢的學生的總成績:SUM; for(int j=0;jgetsum()=SUM) flag=1;cout您要查詢的學生是:(*sj).nameendl;cout該生的信息為:endl;cout 學號:(*sj).number 數(shù)學分數(shù):(*sj).math c+分數(shù):(*sj).cpp 英語分數(shù)(*sj).englishendl; if(flag=0)cout對不起!您要查詢的學生不存在!endl;coutc;if(c!=y&c!=n)cout指令錯誤!請重新輸入!c; ; while(c=y); break; case 6:/按姓名查詢 char n20;char c;int j=0;int flag; if(i=0)cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break; do flag=0; cout請輸入要查詢的名字: n; for(int j=0
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 殘聯(lián)贈送儀器活動方案
- 沙堤元宵活動策劃方案
- 橫店比賽活動方案
- 汽車冷媒做活動方案
- 汽車專場活動策劃方案
- 氣象科普志愿活動方案
- 歡迎同事活動方案
- 泉州班級活動方案
- 汶川抗災捐款活動方案
- 梅村黨建活動方案
- 音樂劇排練課程設(shè)計
- 【MOOC期末】《信號與系統(tǒng)》(南京郵電大學)期末中國大學慕課答案
- 舞蹈治療的實證研究-洞察分析
- 一個售樓處裝修報價清單
- 農(nóng)村污水管道改造施工方案
- GB/T 28569-2024電動汽車交流充電樁電能計量
- DB11 1027-2013 防火玻璃框架系統(tǒng)設(shè)計、施工及驗收規(guī)范
- 施工現(xiàn)場易燃易爆化學物品管理措施與制度
- 靜脈炎的預防和處理
- 無人機基礎(chǔ)知識問答題庫100道及答案解析
- Unit3《Are you Su Hai?》-2024-2025學年三年級上冊英語單元測試卷(譯林版三起 2024新教材)
評論
0/150
提交評論