




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 北 華 航 天 工 業(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é)果保存到文
2、本文件中。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)測試
3、,能夠很好的運行,達到了預期的效果。關(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è)計過程中遇到的
4、問題.總結(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筆記本電腦(顯示器,鼠標等)第二章 需求分析第二章
5、需求分析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)應(yīng)用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以
6、及界面的組織和設(shè)計;2)分析系統(tǒng)中的各個實體及它們之間的關(guān)系; 3)根據(jù)問題描述,設(shè)計系統(tǒng)的類層次; 4)完成類層次中各個類的描述; 5)完成類中各個成員函數(shù)的定義; 6)完成系統(tǒng)的應(yī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 s
7、100;存放輸入的數(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 studen
8、tfriend 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ù)算法輸入的字符存
9、入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é)果;當
10、輸入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中,輸入新刪除學生的學號和相應(yīng)的信息,每刪除一條數(shù)據(jù),記錄數(shù)n減1.32 結(jié)構(gòu)設(shè)計321 系統(tǒng)流程圖studentoutputsuminputbrick類創(chuàng)建函數(shù)create查
11、找函數(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()coutschoolnumbertnametsextgradetmathtenglis
12、htctmath+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();pr
13、ivate: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() ofstre
14、am 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.e
15、nglish+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; c
16、har 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.schoolnum
17、ber=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.mat
18、htsn-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+
19、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=
20、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)ifstr
21、eam 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
22、+)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+
23、)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; c
24、asec: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)用大學類的相應(yīng)功能的成員函數(shù) do coutn- 學生信息管理系統(tǒng)-n;cout-s-瀏覽關(guān)機后學生信息-n; cout-1-錄入學生信息-n; cout-2-查詢學生信息-n; cout-3-修改學生的信息-n; cout-4-增加學生的信息-n; cout-
25、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
26、();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:displ
27、ay()/修改編輯函數(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)相應(yīng)功能,這樣可以降低main函數(shù)的復雜度,增加程序的可讀性。遇到的問題2:定義成student類的友元類后,不能使用命名空間解決方法:將#include#include#inclu
28、deusing 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
29、*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:比較后對象不能交
30、換。解決方法:定義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
31、!=t);遇到的問題11:界面不友好。解決方法:main函數(shù)改成int main()brick b; cout學生信息管理系統(tǒng)endl; coutendl; char choose; /顯示主菜單,接受選擇,并分支調(diào)用大學類的相應(yīng)功能的成員函數(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;
32、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;
33、 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譚浩強,
34、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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 足球訓練科技的發(fā)展與團隊配合、個人技巧的進步
- 跨文化背景下的節(jié)日慶祝習慣比較研究
- 零售業(yè)資產(chǎn)證券化的策略與實踐
- 跨區(qū)域醫(yī)療資源分配與醫(yī)養(yǎng)服務(wù)網(wǎng)絡(luò)構(gòu)建
- 質(zhì)量提升關(guān)鍵點之一-對標行業(yè)標桿的血檢儀器如精準度保持措施詳解
- 廣西2025年01月廣西壯族自治區(qū)衛(wèi)生健康對外交流合作中心2025年招考工作人員筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 跨文化背景下電商平臺的發(fā)展策略
- 四年級數(shù)學下冊折線統(tǒng)計圖教案蘇教版
- 高中語文情感美文不要隨便牽手更不隨便放手
- 高效的時間管理卓越的演講表現(xiàn)
- sinamic變頻器家族cu250s-操作手冊
- 機械設(shè)計基礎(chǔ)網(wǎng)考題庫答案 吉林大學
- 建筑垃圾回收利用統(tǒng)計臺賬
- 《不一樣的你我他》(完美)課件
- 新蘇教版科學六年級下冊全冊教案(含反思)
- 原油電脫鹽電脫水技術(shù)
- 國考斷面水站建設(shè)及運維技術(shù)要求參考
- Q∕GDW 10799.7-2020 國家電網(wǎng)有限公司電力安全工作規(guī)程 第7部分:調(diào)相機部分
- 熱工學后題答案
- 不吸煙不喝酒課件
- 奧數(shù)知識點 間隔問題
評論
0/150
提交評論