版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、課程設(shè)計報告 課程名稱:面向?qū)ο蟪绦蛟O(shè)計C+ 設(shè)計題目:學(xué)生成績管理系統(tǒng) 專 業(yè):計算機科學(xué)與技術(shù) 姓 名: 學(xué) 號: 指導(dǎo)教師:李曉虹2016 年 1 月 8目 錄1.系統(tǒng)需求分析12.總體設(shè)計23.詳細設(shè)計34.系統(tǒng)調(diào)試65.結(jié)果分析86.總結(jié)97.程序代碼1023 / 23文檔可自由編輯打印1系統(tǒng)需求分析 1.1系統(tǒng)設(shè)計的目的與意義:現(xiàn)在的學(xué)校學(xué)生數(shù)量較多,各樣的考試也比較頻繁,因此需要一個學(xué)生成績管理系統(tǒng)來對學(xué)生的成績進行管理。1.2 系統(tǒng)功能需求:本系統(tǒng)有四個類,Score類、Subject類、Student類、Class類,存儲學(xué)生的個人信息、考試科目及成績信息。有學(xué)生成績信息錄入
2、、學(xué)生成績信息修改、學(xué)生成績信息顯示、學(xué)生成績信息刪除、學(xué)生成績信息查詢以及數(shù)據(jù)保存文件等功能??傮w設(shè)計2.1 系統(tǒng)功能分析:系統(tǒng)通過調(diào)用函數(shù)來實現(xiàn)學(xué)生成績信息錄入、學(xué)生成績信息修改、學(xué)生成績信息刪除、學(xué)生成績信息查詢以及數(shù)據(jù)保存文件等功能。Insert()函數(shù)用于錄入學(xué)生成績及信息;Update1()函數(shù)用來修改學(xué)生成績及信息;Show()函數(shù)用于顯示所有已有的記錄;Delete()函數(shù)用來刪除學(xué)生成績及信息;Search1()及Search2()函數(shù)用來查詢及信息;Save()函數(shù)用于將輸入的信息存入文件內(nèi);主函數(shù)main()用于調(diào)用這些函數(shù)。 2.2系統(tǒng)功能模塊劃分與設(shè)計:本系統(tǒng)定義了S
3、core類、Subject類、Student類以及Class類這四個類,定義了Insert()、Update1()、Show()、Save()、Delete()、Search1()及Search2()等函數(shù)來實現(xiàn)系統(tǒng)所需功能。2.3 系統(tǒng)功能模塊圖:詳細設(shè)計3.1 分數(shù)類的設(shè)計:該類定義了一個整型變量用來存放分數(shù),定義了設(shè)置份總數(shù)和顯示分數(shù)的函數(shù)。Score-score:int+Score(s:int=0)+set1():void+show1()圖 3.13.2 科目類的設(shè)計:該類定義了一個Score類類型的變量,定義了一個字符數(shù)組用來存放科目名稱,定義了設(shè)置和顯示私有成員的函數(shù)。Subjec
4、t-subject20:char-sc:Score+Subject()+set2():void+show2():void圖 3.23.3 學(xué)生類的設(shè)計:該類定義了一個Subject類類型的數(shù)組,一個字符型數(shù)組和一個字符變量,兩個整型變量以及設(shè)置和顯示私有成員的函數(shù)。Student-name20:char-num:int-S:char-n:int-p18:Subject+Student()+set3():void+show3():void+getNU1():int+getNA1():char *圖 3.33.4 班級類的設(shè)計:該類定義了一個Student類類型的變量、字符型數(shù)組、整型及設(shè)置和顯示
5、私有成員的函數(shù)等。Class-name20:char-num2:int+Class()+getNU():int+set4():void+show4():void圖 3.43.5 各個類的關(guān)系描述:Subject-subject20:char+Subject()+set2():void+show2():void 1.*Score-score:int+Score(s:int=0)+set1():void+show1()-sc 1圖 3.5.1Student-name20:char-num:int-S:char-n:int+Student()+set3():void+show3():void+get
6、NU1():int+getNA1():char *Subject-subject20:char+Subject()+set2():void+show2():void 1.* -p18 1圖 3.5.2Class-name20:char-num2:int+Class()+getNU():int+set4():void+show4():voidStudent-name20:char-num:int-S:char-n:int+Student()+set3():void+show3():void+getNU1():int+getNA1():char * 1.* -stu 1圖 3.5.34系統(tǒng)調(diào)試5結(jié)
7、果分析程序總共設(shè)計了四個類,滿足了課題對類的要求,在設(shè)計的過程中,建立了較為清晰的類層次,也利用了面向?qū)ο蟮姆椒ㄒ约癈+的編程思想來完成系統(tǒng)的設(shè)計,做到了用文件存儲學(xué)生成績信息、從文件中讀取學(xué)生成績信息、修改信息、查詢信息、刪除信息顯示文件中存儲的信息等要求。而且界面簡潔,容易操作。但是程序太長,不夠簡練,導(dǎo)致出現(xiàn)錯誤很難發(fā)現(xiàn)和修改。6總結(jié)首先,接到設(shè)計題目之后,在對本題目進行分析的時候,我懂得了一個很重要的道理,那就是說一個程序的產(chǎn)生需要一個對題目要求有一個正確全面的分析。其次,就該考慮程序算法的問題了,一個好的算法是一個好程序的靈魂,也決定了一個程序的質(zhì)量。兩個星期的課設(shè)雖然有些疲勞和困倦
8、,但帶給我很多的收獲。C+已經(jīng)學(xué)了一個學(xué)期了,有許多知識都存在似懂非懂的現(xiàn)象,這種現(xiàn)象通過實際的上機操作,已經(jīng)減少了許多。對這些知識也有了更深的理解和很好的掌握。也有很多理論上說得過去的代碼,但到了實際操作,卻是行不通的。這種困惑,有許多已經(jīng)通過實際操作解決了,并能夠深刻認識,但也有很多沒有明白。只能避過這些方法,換方法實現(xiàn)。在課程設(shè)計之前,因為有了綜合實驗的經(jīng)驗與教訓(xùn),明白了寫代碼這一步是非常重要的,因為當你把代碼輸入電腦,并用編譯器將其運行,發(fā)現(xiàn)通過不了,再來檢查找出問題,這是一件非常辛苦的事情,也很浪費時間。于是在課程設(shè)計的時候,我花了四天的時間來規(guī)劃與寫代碼,將要實現(xiàn)的內(nèi)容分析清楚,才
9、把代碼輸入電腦。我覺得寫程序,應(yīng)該先找到該程序中的核心地方,用多種方法來實現(xiàn)該核心,這才可能避免等到發(fā)現(xiàn)邏輯上或者編譯器不支持上的錯誤,才來想補救的措施,這樣花費時間在想補救措施是很不值得的。這次的課程設(shè)計,真是讓我充分的感覺到了要自己設(shè)計一個程序是多么的難,以及學(xué)習(xí)好c+是多么的重要。在這個程序的設(shè)計過程中,我清楚的意識到自己的水平有多么的薄弱,課程的知識學(xué)得有多么的不扎實。看網(wǎng)上的例子好像覺得也沒那么難,自己一上機實際操作就出現(xiàn)了很多問題,調(diào)試的時候系統(tǒng)總是在報錯,還有很多警告,每增加一個函數(shù)就要調(diào)試好久,有時候應(yīng)為少了一個大括號或是分號,導(dǎo)致要找很久很久。雖然系統(tǒng)可以運行,也具有了一些基
10、本的功能,但我意識到了自己有太多的不足。以后還會有很多的課程設(shè)計,一定要吸取這次的教訓(xùn),把知識學(xué)懂學(xué)透學(xué)精,真正的為我所用,這樣走上社會我才能真正的發(fā)揮所長。7.程序代碼#include<iostream>#include<fstream>#include<string>using namespace std;int M=100;static int M2=0;class Score /分數(shù)類private:int score;public:Score(int s=0)score=s;void set1()cout<<"請輸入分數(shù):&q
11、uot;<<endl;cin>>score;void show1()cout<<": "<<score<<endl;class Subject /科目類private:Score sc;char subject20;public:Subject()for(int i=0;i<20;i+)subjecti=0;void set2()cout<<"請輸入科目名稱:"<<endl;cin>>subject;sc.set1();void show2()cout&
12、lt;<subject;sc.show1();class Student /學(xué)生類private:Subject p18; char name20;int num;char S;int n;public:Student()for(int i=0;i<20;i+)namei=0;num=0;S=0;void set3();void show3();int getNU1()return num;char *getNA1()return name;void Student:show3() /學(xué)生類顯示函數(shù)int i;cout<<"姓名:"<<n
13、ame<<"t性別:"<<S<<"t學(xué)號:"<<num<<endl;for(i=0;i<8;i+)p1i.show2();void Student:set3() /學(xué)生類修改函數(shù)int i;cout<<"請輸入學(xué)生姓名:"cin>>name;cout<<"請輸入該生學(xué)號:"cin>>num;cout<<"請輸入該生性別:"cin>>S;cout<<
14、"請輸入每門課程的名字及分數(shù)."<<endl;for(i=0;i<8;i+)p1i.set2();class Class /班級類private:Student stu;char name220;int num2;public:Class()for(int i=0;i<20;i+)name2i=0;num2=0;int getNU()return stu.getNU1();string getNA()return stu.getNA1();void set4()cout<<"請輸入該生所在班級名稱:"cin>&g
15、t;name2;cout<<"請輸入該班班號:"cin>>num2;stu.set3();void show4()cout<<"班級:"<<name2<<"t班號:t"<<num2;stu.show3();friend void Search1(Class c1,int count1); friend void Search2(Class c2,int count2);friend void Update1(Class c3,int count_d);friend
16、 void Delete(Class c4,int *count_c);friend void Insert(Class c5,int &count_a);b100;void Save(Class c6,int count) /記錄存入文件函數(shù)fstream file("class.dat",ios:out|ios:binary);if(!file)cout<<"'t open."<<endl;abort();for(int i=0;i<count;i+)(reinterpret_cast<char*&
17、gt;(&c6i),sizeof(c6i);();void Show(Class c7) /顯示記錄函數(shù)int i=0;for(i=0;c7i.getNU()!=0;i+)c7i.show4();void Insert(Class c5,int &count_a) /信息錄入函數(shù)int i,in_number,n=0;if(count_a=M)cout<<"空間已滿!"return;cout<<"請輸入學(xué)生的學(xué)號:"<<endl;dodocin>>in_number;for(i=0;i<
18、;count_a;i+)if(c5i.getNU()=in_number)cout<<"已有相同的學(xué)號,請重新輸入!"<<endl;break;while(c5i.getNU()=in_number);if(in_number<1)cout<<"輸入錯誤,請重新輸入大于零的整數(shù)!"<<endl;while(in_number<=0);i=count_a;c5i.set4();count_a+;cout<<endl<<endl;n=n+1;if(n!=0)cout<&
19、lt;"學(xué)生成績錄入成功!"<<endl;void Search1(Class c1,int count1) /按學(xué)號查詢信息函數(shù)int i,number,flag=1,n=0;cout<<"請輸入所要查詢的學(xué)生的學(xué)號:"<<endl;docin>>number;if(number<=0)cout<<"輸入錯誤,請重新輸入大于零的整數(shù)!"<<endl;while(number<=0);for(i=0;i<count1&&flag;
20、i+)if(c1i.getNU()=number)c1i.show4();flag=0;n=n+1;if(n=0)cout<<"沒有查詢到該學(xué)生的資料!"<<endl;void Search2(Class c2,int count2) /按姓名查詢信息函數(shù)int i,n=0;char nam20;cout<<"請輸入所要查詢的學(xué)生的姓名:"<<endl;cin>>nam;for(i=0;i<count2;i+)if(c2i.getNA()=nam)c2i.show4();n=n+1;if(
21、n=0)cout<<"沒有查詢到該學(xué)生的資料!"<<endl;void Update1(Class c3,int count_d) /信息修改函數(shù)int i,n=0,flag=1,m;char nam20;cout<<"請輸入所要修改的學(xué)生的姓名:"<<endl;cin>>nam;for(i=0;i<count_d&&flag;i+)if(c3i.getNA()=nam)cout<<"請輸入所要修改的學(xué)生的學(xué)號:"<<endl;c
22、in>>m;for(i=0;i<count_d&&flag;i+)if(c3i.getNU()=m)c3i.set4();flag=0;n=n+1;break;if(n!=0)cout<<"修改成功!"<<endl;if(n=0)cout<<"沒有查詢到該學(xué)生的資料!"<<endl;void Delete(Class c4) /信息刪除函數(shù)fstream file("class.dat",ios_base:in|ios_base:out|ios_base
23、:binary);int i=0;for(i=0;i<100;i+)(reinterpret_cast<char*>(&bi),sizeof(bi);for(i=0;bi.getNU()!=0;i+);M2=i;Class c9;int n=0,number,flag=1; cout<<"請輸入要要進行操作的學(xué)生的學(xué)號:"<<endl; cin>>number; for(i=0;i<M2&&flag;i+) if(c4i.getNU()=number)for(i;i<M2&&a
24、mp;flag;i+)c4i=c4i+1;flag=0;(M2)-;n=1;Save(b,M2);break;if(n=0)cout<<"沒有查詢到可以刪除的資料!"<<endl;if(n!=0)cout<<"資料刪除成功!"<<endl;int main()char a1;fstream file("class.dat",ios_base:in|ios_base:out|ios_base:binary);cout<<"tt*歡迎進入學(xué)生成績管理系統(tǒng)*"&
25、lt;<endl<<endl;docout<<"請選擇功能:"<<endl;cout<<"ttta.學(xué)生成績查詢"<<endl;cout<<"tttb.學(xué)生成績錄入"<<endl;cout<<"tttc.學(xué)生成績刪除"<<endl;cout<<"tttd.學(xué)生成績修改"<<endl;cout<<"ttte.顯示全部記錄"<<endl;cout<<"tttf.記錄存入文件"<<endl;cout<<"tttg
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校營養(yǎng)餐供應(yīng)合同
- 技術(shù)轉(zhuǎn)移合同
- 棉被購銷合同正規(guī)范本年
- 橋梁模板運輸合同
- 第三章遺傳算法
- 控制系統(tǒng)剩余壽命預(yù)測與自主維護研究綜述
- 并聯(lián)式液壓制動能量回收系統(tǒng)研究
- 2025年南京貨運資格證答題竅門
- W波段光電融合毫米波寬帶跳頻通信技術(shù)研究
- 2025年新科版九年級歷史下冊階段測試試卷含答案
- 人教八年級上冊英語第一單元《Section A (1a-2d)》教學(xué)課件
- 2023年版《安寧療護實踐指南(試行)》解讀課件
- 中國血管通路專家共識解讀
- 開學(xué)前幼兒園安全培訓(xùn)
- 《裝配式蒸壓加氣混凝土外墻板保溫系統(tǒng)構(gòu)造》中
- 中國紅十字會救護員培訓(xùn)理論考試試題及答案
- 《建設(shè)工程監(jiān)理》課件
- 2019版新人教版高中英語必修+選擇性必修共7冊詞匯表匯總(帶音標)
- 中層領(lǐng)導(dǎo)的高績效管理
- 小小銀行家-兒童銀行知識、理財知識培訓(xùn)
- 閱讀理解特訓(xùn)卷-英語四年級上冊譯林版三起含答案
評論
0/150
提交評論