C++課程設(shè)計報告-學生信息管理系統(tǒng).doc_第1頁
C++課程設(shè)計報告-學生信息管理系統(tǒng).doc_第2頁
C++課程設(shè)計報告-學生信息管理系統(tǒng).doc_第3頁
C++課程設(shè)計報告-學生信息管理系統(tǒng).doc_第4頁
C++課程設(shè)計報告-學生信息管理系統(tǒng).doc_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

北 華 航 天 工 業(yè) 學 院基于c+的面向?qū)ο蟪绦蛟O(shè)計實例課程設(shè)計報告報告題目: 學生信息管理系統(tǒng) 作者所在系部: 計算機科學與工程系 作者所在專業(yè): 計算機科學與技術(shù) 作者所在班級: 作 者 姓 名 : 指導教師姓名: 完 成 時 間 : 2009年6月25日星期四 北華航天工業(yè)學院教務(wù)處制摘 要在當前的各個大學,中學,小學都需要擁有一套完善的,并且適合自身特點的學生信息管理系統(tǒng),用它來管理學生信息。如1)添加學生信息。2)刪除學生信息。3)修改學生信息。4)查詢學生信息。5)顯示學生信息。6)綜合統(tǒng)計(各課程平均成績和合格率)。7)總分排序。8)保存功能:將添加、刪除、修改結(jié)果保存到文本文件中。9)退出系統(tǒng)。以實現(xiàn)對學生信息的統(tǒng)一管理。本文利用microsoft visual c+6.0編寫程序?qū)崿F(xiàn)了用戶對學生信息的管理操作。該程序中定義了student類和brick類,在brick類中定義了創(chuàng)建函數(shù),顯示函數(shù),查找函數(shù),修改編輯函數(shù),添加函數(shù),刪除函數(shù),排序函數(shù),平均分函數(shù),求合格率函數(shù)。再用這些函數(shù)調(diào)用student類對象student s100 實現(xiàn)題中要求實現(xiàn)的功能。本系統(tǒng)主要有 十個功能模塊:-錄入學生信息 查詢學生信息 -修改學生的信息- 增加學生的信息 -刪除學生的信息 -總分排序-瀏覽學生信息-求各課程平均成績-求合格率-瀏覽關(guān)機后學生信已經(jīng)過全面的系統(tǒng)測試,能夠很好的運行,達到了預期的效果。關(guān)鍵詞:系統(tǒng)設(shè)計 數(shù)據(jù)庫 信息 功能模塊 -錄入 查詢 修改 增加 刪除 總分排序 瀏覽 平均成績 合格率 關(guān)機后目 錄摘要第1章 緒 論11.1 課題研究的目的11.2 選題的目的及意義5 1.3 課程設(shè)計環(huán)境.第2章 系統(tǒng)需求分析12 21 問題描述. 22 功能要求. 23 問題的解決方案.第3章 系統(tǒng)開發(fā)的技術(shù)背景17 31 數(shù)據(jù)設(shè)計. 311 類設(shè)計。. 312 類之間的關(guān)系. 313 函數(shù)設(shè)計. 32 結(jié)構(gòu)設(shè)計.第4章 系統(tǒng)實現(xiàn).41 類實現(xiàn).42 函數(shù)實現(xiàn). 4.3主函數(shù)實現(xiàn).第5章 系統(tǒng)測試255.1模塊測試25 5.2 課程設(shè)計過程中遇到的問題.總結(jié)37致謝38參考文獻39附錄40第一章 緒論11 課程設(shè)計的目的1)要求學生能夠熟練掌握c+語言的基本知識和技能。2)基本掌握面向?qū)ο蟪绦蛟O(shè)計的基本思路和方法。3)能夠利用所學的基本知識和技能,解決簡單的面向?qū)ο蟪绦蛟O(shè)計問題。12 課程設(shè)計的背景和意義121 課程設(shè)計的背景 當前的各個大學,中學,小學都需要擁有一套完善的,并且適合自身特點的學生信息管理系統(tǒng),用它來管理學生信息。2. 技術(shù)層面的支持122 課程設(shè)計的意義實現(xiàn)對學生信息的統(tǒng)一管理。從而提高管理人員的工作效率。13 課程設(shè)計環(huán)境microsoft visual c+6.0筆記本電腦(顯示器,鼠標等)第二章 需求分析第二章 需求分析21 問題描述某校學生信息包括學號、姓名、性別、班級、三門課成績和總成績。設(shè)計一程序?qū)崿F(xiàn)對學生信息的管理,22 功能要求(1)本程序完成的功能主要有:1)添加學生信息。 2)刪除學生信息。3)修改學生信息。4)查詢學生信息。5)顯示學生信息。6)綜合統(tǒng)計(各課程平均成績和合格率)。7)總分排序。8)保存功能:將添加、刪除、修改結(jié)果保存到文本文件中。9)退出系統(tǒng)。(2)學生在完成本次課程設(shè)計的基本要求后,從便于用戶使用和功能完整性的角度考慮進一步完善程序,請參照題目1和2的要求。23 問題的解決方案根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟:1)應用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以及界面的組織和設(shè)計;2)分析系統(tǒng)中的各個實體及它們之間的關(guān)系; 3)根據(jù)問題描述,設(shè)計系統(tǒng)的類層次; 4)完成類層次中各個類的描述; 5)完成類中各個成員函數(shù)的定義; 6)完成系統(tǒng)的應用模塊; 7)功能調(diào)試; 8)完成系統(tǒng)總結(jié)報告。 第3章 系統(tǒng)設(shè)計31 數(shù)據(jù)設(shè)計311 類設(shè)計。brick類student類char name5; 姓名 char sex; 性別int schoolnumber; 學號char grade7; 班級int math; 數(shù)學int english; 英語int c; c+int ssum 總分brick;static int n;統(tǒng)計文本中對象個數(shù)student s100;存放輸入的數(shù)據(jù)student t;比較后交換si與si+1的值int sum();求和函數(shù)void input()輸入數(shù)據(jù)函數(shù)void output()輸出數(shù)據(jù)函數(shù)brick()構(gòu)造函數(shù)void create();創(chuàng)建函數(shù)void display();顯示函數(shù)void search();查找函數(shù)void modify();修改編輯函數(shù)void add();添加函數(shù)void deleted();刪除函數(shù)void average();平均分函數(shù)void sort();排序函數(shù)void hegelv();求合格率函數(shù)student s100;312 類之間的關(guān)系友元類class studentfriend class brick;/模塊類中定義模塊函數(shù)brick void create();void display();void search();void modify();void add();void deleted();void average();void sort();void hegelv(); 通過student s100;調(diào)用student 類中的數(shù)據(jù)成員char name5; char sex;int schoolnumber;char grade7;int math;int english;int c;int ssum ;313 函數(shù)設(shè)計主函數(shù)算法輸入的字符存入choose變量中在主函數(shù)中需要輸出主菜單選擇界面,cout-s-瀏覽關(guān)機后學生信息-n; cout-1-錄入學生信息-n; cout-2-查詢學生信息-n; cout-3-修改學生的信息-n; cout-4-增加學生的信息-n; cout-5-刪除學生的信息-n; cout-6-總分排序-n;cout-7-瀏覽學生信息-n;cout-8-求各課程平均成績-n;cout-9-求合格率-n; cout-t-退出n=60)count1變量自加1,再輸出count1除于記錄數(shù)n的結(jié)果;當輸入e或e時,if(si.english=60)count2變量自加1,再輸出count2除于記錄數(shù)n的結(jié)果;當輸入c或c時,if(si.c=60)count3變量自加1,再輸出count3除于記錄數(shù)n的結(jié)果;/排序函數(shù)算法,打開學生信息管理系統(tǒng)文本文件,從文件中通過循環(huán)讀取數(shù)據(jù)并將它們存放student s100中,if(si.sumsi+1.sum)使si與si+1互換,最后用循環(huán)將所有數(shù)據(jù)存入學生信息管理系統(tǒng)文本文件中。/刪除函數(shù)算法,打開學生信息管理系統(tǒng)文本文件,從文件中通過循環(huán)讀取數(shù)據(jù)并將它們存放student s100中,輸入新刪除學生的學號和相應的信息,每刪除一條數(shù)據(jù),記錄數(shù)n減1.32 結(jié)構(gòu)設(shè)計321 系統(tǒng)流程圖studentoutputsuminputbrick類創(chuàng)建函數(shù)create查找函數(shù)search修改函數(shù)modify添加函數(shù)add刪除函數(shù)deleted顯示函數(shù)display總分排序sort求合格率hegelv求平均分average顯示關(guān)機look322 界面設(shè)計主菜單合格率子菜單平均分子菜單第四章 系統(tǒng)實現(xiàn)41 類實現(xiàn)class studentpublic:student()int sum();void input()coutschoolnumber;coutname;coutsex;coutgrade;coutmath;coutenglish;coutc;void output()coutschoolnumbertnametsextgradetmathtenglishtctmath+english+ctendl;friend class brick;/模塊類中定義模塊函數(shù)private:char name5; char sex;int schoolnumber;char grade7;int math;int english;int c;int ssum ;class brickpublic:brick()void create();void display();void search();void modify();void add();void deleted();void average();void sort();void hegelv();private:static int n;student s100;student t;42 函數(shù)實現(xiàn)void input()coutschoolnumber;coutname;coutsex;coutgrade;coutmath;coutenglish;coutc;void output()coutschoolnumbertnametsextgradetmathtenglishtctmath+english+ctendl; /求和函數(shù)int student:sum() int s;s=math+english+c;return s; /創(chuàng)建函數(shù)void brick:create() ofstream outfile(d:f1.txt,ios:app);if(!outfile)coutopen error!endl;return;int m; cout錄入學生信息人數(shù)m; /outfile學號,姓名,性別,班級,數(shù)學,英語,c+,總分endl;cout學號,姓名,性別,班級,數(shù)學,英語,c+,endl;cout請輸入相關(guān)信息endl;for(int i=0;im;i+)si.input(); for(i=0;im;i+) tsi.sextsi.gradetsi.mathtsi.englishtsi.ctsi.math+si.english+si.ctendl; n+;outfile.close();/顯示函數(shù)void brick:display()cout學號t姓名t性別t班級t數(shù)學t英語tc+t總分endl;for(int i=0;in;i+) si.output();/查找函數(shù)void brick:search()int num,i;coutnum;cout學號t姓名t性別t班級t數(shù)學t英語tc+t總分endl;for( i=0;in;i+) if(num=si.schoolnumber)si.output();/修改編輯函數(shù)void brick:modify()int num,i,j;char nam5; char se;int number;char gra7;int m;int e;int c;coutnum;ofstream outfile(d:f1.txt,ios:app);if(!outfile)coutopen error!endl;return;for(i=0;in;i+)if(num=si.schoolnumber)for(j=i;jn-1;j+)sj=sj+1;cout學號,姓名,性別,班級,數(shù)學,英語,c+endl;cout請輸入相關(guān)信息endl;coutnumber;coutnam;coutse;coutgra;coutm;coute;coutc;sn-1.schoolnumber=number;strcpy(,nam);sn-1.sex=se;strcpy(sn-1.grade,gra);sn-1.math=m;sn-1.english=e;sn-1.c=c;tsn-1.sextsn-1.gradetsn-1.mathtsn-1.englishtsn-1.ctsn-1.math+sn-1.english+sn-1.ctendl;outfile.close();tsn-1.sextsn-1.gradetsn-1.mathtsn-1.englishtsn-1.ctsn-1.math+sn-1.english+sn-1.ctendl; /添加函數(shù)void brick:add()ofstream outfile(d:f1.txt,ios:app);if(!outfile)coutopen error!endl;return;char c;docout學號,姓名,性別,班級,數(shù)學,英語,c+endl;cout錄入增加學生的信息endl; sn.input();tsn.sextsn.gradetsn.mathtsn.englishtsn.ctsn.math+sn.english+sn.ctendl;coutd:f1.txt中已經(jīng)了增加tsn.sextsn.gradetsn.mathtsn.englishtsn.ctsn.math+sn.english+sn.ctendl;n+;cout還要增加嗎(y /n) ?c;while(n100&(c=y|c=y);outfile.close();/刪除函數(shù)void brick:deleted() int i,j;int num;cout請輸入刪除學生的學生號num;for( i=0;in;i+)if(si.schoolnumber=num)n-;for( j=i;jn;j+)sj=sj+1; ofstream outfile(d:f1.txt,ios:app);if(!outfile)coutopen error!endl;return;outfile學號t姓名t性別t班級t數(shù)學t英語tc+t總分endl;for( i=0;in;i+)tsi.sextsi.gradetsi.mathtsi.englishtsi.ctsi.math+si.english+si.ctendl;outfile.close();cout刪除成功endl;void look(char *filename)ifstream ifs(filename,ios:in );if(!ifs)cerropen error!endl;return;char ch;while(ifs.get(ch)cout.put(ch);coutendl;ifs.close(); /排序函數(shù)void brick:sort()int i;int j;for( i=0;in;i+)si.sum();for( j=0;jn-1;j+)for( i=0;isi+1.sum()t=si; si=si+1; si+1=t;coutsi.sum()endl;cout學號t姓名t性別t班級t數(shù)學t英語tc+t總分endl;for( i=0;in;i+)si.output();/平均分函數(shù)void brick:average()float s1=0; float s2=0; float s3=0; char ch;cout你要查的各平均課程(math-m,english-e,c)ch;switch(ch) casem:casem:for(int i=0;in;i+)s1=s1+si.math;cout數(shù)學平均分s1/nendl;break;casee:casee:for(int i=0;in;i+)s2=s2+si.english;cout英語平均分s2/nendl;break; casec:casec:for(int i=0;in;i+)s3=s3+si.c;coutc平均分s3/nendl;break; default:cout非法選項endl; /求合格率函數(shù)void brick: hegelv()int count1=0,count2=0,count3=0;char ch;cout你要查的合格率課程(math-m,english-e,c)ch;switch(ch)casem:casem:for(int i=0;i=60)count1+; cout(float)count1/n;break;casee:casee:for(int i=0;i=60)count2+; cout(float)count2/n;break; casec:casec:for(int i=0;i=60)count3+; cout(float)count3/n;break; default:cout非法選項endl;43 主函數(shù)實現(xiàn)int main()brick b; cout學生信息管理系統(tǒng)endl; coutendl; char choose; /顯示主菜單,接受選擇,并分支調(diào)用大學類的相應功能的成員函數(shù) do coutn- 學生信息管理系統(tǒng)-n;cout-s-瀏覽關(guān)機后學生信息-n; cout-1-錄入學生信息-n; cout-2-查詢學生信息-n; cout-3-修改學生的信息-n; cout-4-增加學生的信息-n; cout-5-刪除學生的信息-n; cout-6-總分排序-n;cout-7-瀏覽學生信息-n;cout-8-求各課程平均成績-n;cout-9-求合格率-n; cout-t-退出n請選擇:-n;coutchoose; switch(choose) case1:b.create();break; case2:b.search();break; case3:b.modify();break; case4:b.add();break; case5:b.deleted();break; case6:b.sort();break; case7:b.display();break; case8:b.average();break; case9:b.hegelv();break; cases:look(d:f1.txt);break; while(choose!=t); return 0;第五章 系統(tǒng)測試51模塊測試輸入函數(shù)抓圖查詢函數(shù)抓圖添加函數(shù)抓圖瀏覽函數(shù)抓圖總分排序函數(shù)抓圖平均分函數(shù)抓圖合格率函數(shù)抓圖平均分函數(shù)抓圖退出函數(shù)抓圖52 課程設(shè)計過程中遇到的問題遇到的問題1:開始設(shè)計時main函數(shù)實現(xiàn)代碼太長,不便于閱讀程序解決方法:再設(shè)計一個brick類,將其 定義成student類的友元類,在brick類中定義/創(chuàng)建函數(shù)void brick:create()/顯示函數(shù)void brick:display()/修改編輯函數(shù)void brick:modify()/查找函數(shù)void brick:search()/添加函數(shù)void brick:add()/刪除函數(shù)void brick:deleted()/求合格率函數(shù)void brick: hegelv()/排序函數(shù)void brick:sort()/平均分函數(shù)void brick:average(),再用這些函數(shù)調(diào)用student類的對象student s100實現(xiàn)相應功能,這樣可以降低main函數(shù)的復雜度,增加程序的可讀性。遇到的問題2:定義成student類的友元類后,不能使用命名空間解決方法:將#include#include#includeusing namespace std;改成#include#include#include遇到的問題3:類外調(diào)用數(shù)據(jù)成員不方便。解決方法:在student類中定義成員函數(shù)int sum();void input()void output()遇到的問題4:輸出結(jié)果不對齊。解決方法:語句中加t如:coutschoolnumbertnametsextgradetmathtenglishtctmath+english+ctendl;cout學號t姓名t性別t班級t數(shù)學t英語tc+t總分endl;遇到的問題5:不能讀取關(guān)機后的數(shù)據(jù)。解決方法:添加函數(shù)讀取關(guān)機后數(shù)據(jù)函數(shù)void look(char *filename)ifstream ifs(filename,ios:in );if(!ifs)cerropen error!endl;return;char ch;while(ifs.get(ch)cout.put(ch);coutendl;ifs.close();遇到的問題6:不能統(tǒng)計已有對象的個數(shù)。解決方法:定義靜態(tài)變量n,static int n=0;遇到的問題7:不能向文本文件中輸出數(shù)據(jù)。解決方法:添加語句ofstream outfile(d:f1.txt,ios:app);if(!outfile)coutopen error!endl;return;遇到的問題8:比較后對象不能交換。解決方法:定義student t;再for( j=0;jn-1;j+)for( i=0;isi+1.sum()t=si; si=si+1; si+1=t;遇到的問題9:在average函數(shù)中定義float s=0; s=s+si.math;s=s+si.english;s=s+si.c;三條語句出錯解決方法:float s1=0; float s2=0; float s3=0; s1=s1+si.math;s2=s2+si.english;s3=s3+si.c;遇到的問題10:不能退出系統(tǒng)。解決方法:用 do cinchoose; switch(choose) . while(choose!=t);遇到的問題11:界面不友好。解決方法:main函數(shù)改成int main()brick b; cout學生信息管理系統(tǒng)endl; coutendl; char choose; /顯示主菜單,接受選擇,并分支調(diào)用大學類的相應功能的成員函數(shù) do coutn- 學生信息管理系統(tǒng)-n;cout-s-瀏覽關(guān)機后學生信息-n; cout-1-錄入學生信息-n; cout-2-查詢學生信息-n; cout-3-修改學生的信息-n; cout-4-增加學生的信息-n; cout-5-刪除學生的信息-n; cout-6-總分排序-n;cout-7-瀏覽學生信息-n;cout-8-求各課程平均成績-n;cout-9-求合格率-n; cout-t-退出n請選擇:-n;coutchoose; switch(choose) case1:b.create();break; case2:b.search();break; case3:b.modify();break; case4:b.add();break; case5:b.deleted();break; case6:b.sort();break; case7:b.display();break; case8:b.average();break; case9:b.hegelv();break; cases:look(d:f1.txt);break; while(choose!=t); return 0;總 結(jié)該程序代碼清晰,一目了然,程序中的變量見名知義,具有很好的可讀性,該程序功能齊全,嚴格按題目要求完成所規(guī)定的任務(wù)。程序中的求和函數(shù),創(chuàng)建函數(shù),顯示函數(shù),修改編輯函數(shù),查找函數(shù),添加函數(shù),刪除函數(shù),求合格率函數(shù),排序函數(shù),平均分函數(shù),實現(xiàn)功能都很強。致 謝經(jīng)過了本次課程設(shè)計,使筆者能夠熟練掌握c+語言的基本知識和技能。能基本掌握面向?qū)ο蟪绦蛟O(shè)計的基本思路和方法。能夠利用所學的基本知識和技能,解決簡單的面向?qū)ο蟪绦蛟O(shè)計問題。基本了解編寫大程序的思想和方法。參考文獻1譚浩強,c+面向?qū)ο蟪绦蛟O(shè)計,北京, 清華大學出版社,20062譚浩強,c程序設(shè)計,北京,清華大學出版社,2006附 錄將源程序代碼附到附錄中。#include#include#includeclass brick;class studentpublic:student()int sum();void input()coutschoolnumber;coutname;coutsex;coutgrade;coutmath;coutenglish;coutc;void output()coutschoolnumbertnametsextgradetmathtenglishtctmath+english+ctendl;friend class brick;/模塊類中定義模塊函數(shù)private:char name5; char sex;int schoolnumber;char grade7;int math;in

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論