c++面向?qū)ο笳n程設(shè)計報告-(學(xué)生成績管理系統(tǒng))_第1頁
c++面向?qū)ο笳n程設(shè)計報告-(學(xué)生成績管理系統(tǒng))_第2頁
c++面向?qū)ο笳n程設(shè)計報告-(學(xué)生成績管理系統(tǒng))_第3頁
c++面向?qū)ο笳n程設(shè)計報告-(學(xué)生成績管理系統(tǒng))_第4頁
c++面向?qū)ο笳n程設(shè)計報告-(學(xué)生成績管理系統(tǒng))_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上課 程 設(shè) 計 報 告課程名稱 面向?qū)ο蟪绦蛟O(shè)計 課題名稱 學(xué)生成績管理系統(tǒng) 專 業(yè) 計算機(jī)科學(xué)與技術(shù) 班 級 計算機(jī) 1001 學(xué) 號 姓 名 指導(dǎo)教師 李珍輝 陳淑紅 李杰軍 2011年 12 月 28 日湖南工程學(xué)院課 程 設(shè) 計 任 務(wù) 書課程名稱 面向?qū)ο蟪绦蛟O(shè)計 課 題 學(xué)生成績管理系統(tǒng) 專業(yè)班級 計算機(jī)1001 學(xué)生姓名 學(xué) 號 指導(dǎo)老師 李珍輝 陳淑紅 李杰軍 審 批 任務(wù)書下達(dá)日期 2011 年 11 月 15 日任務(wù)完成日期 2011 年 12 月 28 日一、設(shè)計內(nèi)容與設(shè)計要求1.課程設(shè)計目的:面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計是集中實踐性環(huán)節(jié)之一,是學(xué)習(xí)

2、完面向?qū)ο蟪绦蛟O(shè)計課程后進(jìn)行的一次全面的綜合練習(xí)。要求學(xué)生達(dá)到熟練掌握C+語言的基本知識和技能;基本掌握面向?qū)ο蟪绦蛟O(shè)計的思想和方法;能夠利用所學(xué)的基本知識和技能,解決簡單的面向?qū)ο蟪绦蛟O(shè)計問題,從而提高動手編程解決實際問題的能力。2.課題題目1)公司庫存管理系統(tǒng)2)高校學(xué)籍管理系統(tǒng)3)高校工資管理系統(tǒng)4)高校人事管理系統(tǒng)5)通訊錄程序設(shè)計6)學(xué)生成績管理系統(tǒng)7) 圖書管理系統(tǒng)8)文本編輯器的設(shè)計與實現(xiàn)9)學(xué)生考勤管理系統(tǒng)10)公司人員管理系統(tǒng)3設(shè)計要求: 設(shè)計課題題目:每位同學(xué)根據(jù)自己學(xué)號除以10所得的余數(shù)加1選擇相應(yīng)題號的課題。隨意換題者不記成績。 根據(jù)自己對應(yīng)的課題完成以下主要工作:完成

3、系統(tǒng)需求分析:包括系統(tǒng)設(shè)計目的與意義;系統(tǒng)功能需求(系統(tǒng)流程圖);輸入輸出的要求。完成系統(tǒng)總體設(shè)計:包括系統(tǒng)功能分析;系統(tǒng)功能模塊劃分與設(shè)計(系統(tǒng)功能模塊圖)。完成系統(tǒng)詳細(xì)設(shè)計:包括數(shù)據(jù)庫需求分析;數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(ER圖);數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計;類層次圖;界面設(shè)計與各功能模塊實現(xiàn)。系統(tǒng)調(diào)試:調(diào)試出現(xiàn)的主要問題,編譯語法錯誤及修改,重點是運行邏輯問題修改和調(diào)整。使用說明書及編程體會:說明如何使用你編寫的程序,詳細(xì)列出每一步的操作步驟。關(guān)鍵源程序(帶注釋) 按規(guī)定格式完成課程設(shè)計報告,將其打印稿(A4紙)上交給老師存檔。 不得抄襲他人程序、課程設(shè)計報告,每個人應(yīng)體現(xiàn)自己的個性設(shè)計。專心-專注-專

4、業(yè)二、進(jìn)度安排第 17 周 星期一 8:0012:00 星期二 8:0012:00 星期四 8:0012:00第 18 周 星期一 8:0012:00 星期二 14:3018:30 星期三 8:0012:00三、參考書籍1.C程序設(shè)計課程設(shè)計 劉振安編著 TP312C5632.C+ Builder和Delphi課程設(shè)計與系統(tǒng)開發(fā)案例 伍俊良 清華大學(xué)出版社 7-302-06072-X 3.Visual C+課程設(shè)計案例精編 嚴(yán)華峰 中國水利水電出版社 7-5084-2007-1 2004 4.Visual C+課程設(shè)計與系統(tǒng)開發(fā)案例 伍俊良 清華大學(xué)出版社 7-302-05968-3 2002

5、5.Visual C+語言課程設(shè)計 : 案例精選與編程指導(dǎo) 陳清華朱紅 東南大學(xué)出版社 7-81089-275-4 2003 6.VisualC+課程設(shè)計案例精編 中國水利水電出版社 7-5084-1004-1 2002 7.數(shù)據(jù)結(jié)構(gòu)課程設(shè)計案例精編 : 用C/C+描述 李建學(xué)李光元吳春芳 清華大學(xué)出版社 7-302-14536-9 2007 (編程平臺不限,vc+, c+ Builder等等。) 課題6:學(xué)生成績管理系統(tǒng)(一)、課程設(shè)計題目:學(xué)生成績管理系統(tǒng)(二)、目的與要求: 1、目的: (1)要求學(xué)生達(dá)到熟練掌握C+語言的基本知識和技能; (2)基本掌握面向?qū)ο蟪绦蛟O(shè)計的基本思路和方法;

6、 (3)能夠利用所學(xué)的基本知識和技能,解決簡單的面向?qū)ο蟪绦蛟O(shè)計問題。 2、基本要求: (1)要求利用面向?qū)ο蟮姆椒ㄒ约癈+的編程思想來完成系統(tǒng)的設(shè)計; (2)要求在設(shè)計的過程中,建立清晰的類層次; (3)在系統(tǒng)中至少要定義四個類,每個類中要有各自的屬性和方法; (4)在系統(tǒng)的設(shè)計中,至少要用到面向?qū)ο蟮囊环N機(jī)制。 3、創(chuàng)新要求: 在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計,如根據(jù)查找結(jié)果進(jìn)行修改的功能。 4、寫出設(shè)計說明書 (三)、設(shè)計方法和基本原理: 1、問題描述(功能要求): 設(shè)計一個實用的小型學(xué)生成績管理程序,具有查詢,檢索和刪除功能,并且能夠打開或修改指定文件及將多個文件組成一個文件。它完全使

7、用類來實現(xiàn),充分體現(xiàn)面向?qū)ο蟮某绦蛟O(shè)計特點。要求: 實現(xiàn)主要功能:建立文件,文件的存取和顯示,刪除記錄,查詢記錄。可以隨時檢索,刪除,或增加記錄,也可以保存或取消新的記錄。2、問題的解決方案: 根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟: (1)應(yīng)用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以及界面的組織和設(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é)報告以及系統(tǒng)使用說明書目 錄1. 系統(tǒng)需

8、求分析 1.1系統(tǒng)設(shè)計的目的與意義: 現(xiàn)在的學(xué)校學(xué)生數(shù)量較多,各樣的考試也比較頻繁,因此需要一個學(xué)生成績管理系統(tǒng)來對學(xué)生的成績進(jìn)行管理。1.2 系統(tǒng)功能需求:本系統(tǒng)有四個類,Score類、Subject類、Student類、Class類,存儲學(xué)生的個人信息、考試科目及成績信息。有學(xué)生成績信息錄入、學(xué)生成績信息修改、學(xué)生成績信息顯示、學(xué)生成績信息刪除、學(xué)生成績信息查詢以及數(shù)據(jù)保存文件等功能。2. 總體設(shè)計2.1 系統(tǒng)功能分析:系統(tǒng)通過調(diào)用函數(shù)來實現(xiàn)學(xué)生成績信息錄入、學(xué)生成績信息修改、學(xué)生成績信息刪除、學(xué)生成績信息查詢以及數(shù)據(jù)保存文件等功能。Insert()函數(shù)用于錄入學(xué)生成績及信息;Update

9、1()函數(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)定義了Score類、Subject類、Student類以及Class類這四個類,定義了Insert()、Update1()、Show()、Save()、Delete()、Search1()及Search2()等函數(shù)來實現(xiàn)系統(tǒng)所需功能。2.3 系統(tǒng)功能模塊圖:學(xué)生成績查詢學(xué)生成績錄入學(xué)生成績刪除學(xué)生成績管理

10、系統(tǒng) 無此記錄查詢成功錄入成功無此記錄刪除成功無此記錄修改成功保存成功顯示成功退出成功顯示全部記錄記錄存入文件學(xué)生成績修改 退出系統(tǒng)3. 詳細(xì)設(shè)計3.1 分?jǐn)?shù)類的設(shè)計:該類定義了一個整型變量用來存放分?jǐn)?shù),定義了設(shè)置份總數(shù)和顯示分?jǐn)?shù)的函數(shù)。Score-score:int+Score(s:int=0)+set1():void+show1() 圖 3.13.2 科目類的設(shè)計:該類定義了一個Score類類型的變量,定義了一個字符數(shù)組用來存放科目名稱,定義了設(shè)置和顯示私有成員的函數(shù)。Subject-subject20:char-sc:Score+Subject()+set2():void+show2()

11、: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.3 3.4 班級類的設(shè)計:該類定義了一個Student類類型的變量、字符型數(shù)組、整型及設(shè)置和顯示私有成員的函數(shù)等。Class-name20:char-num2:int+Class()+getNU():

12、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+getNU1():int+getNA1():char *Subject-subject20:char+S

13、ubject()+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)試4.1 在調(diào)試過程中,出現(xiàn)了下面一些錯誤:1、輸入數(shù)據(jù)時,輸錯了數(shù)據(jù)的類型會造成死循環(huán),因此輸

14、入時需要注意。2、一開始主界面輸入非正確字母時,沒有提示錯誤。容易造成用戶誤解,在主函數(shù)的switch語句結(jié)束處加上default:cout<<"選擇錯誤,請從新選擇!"就可以了。4.2 具體調(diào)試過程:主界面學(xué)生成績錄入學(xué)生成績查詢學(xué)生成績顯示學(xué)生成績修改記錄存入文件學(xué)生成績刪除5. 結(jié)果分析 程序總共設(shè)計了四個類,滿足了課題對類的要求,在設(shè)計的過程中,建立了較為清晰的類層次,也利用了面向?qū)ο蟮姆椒ㄒ约癈+的編程思想來完成系統(tǒng)的設(shè)計,做到了用文件存儲學(xué)生成績信息、從文件中讀取學(xué)生成績信息、修改信息、查詢信息、刪除信息顯示文件中存儲的信息等要求。而且界面簡潔,容易

15、操作。但是程序太長,不夠簡練,導(dǎo)致出現(xiàn)錯誤很難發(fā)現(xiàn)和修改。6. 總結(jié)首先,接到設(shè)計題目之后,在對本題目進(jìn)行分析的時候,我懂得了一個很重要的道理,那就是說一個程序的產(chǎn)生需要一個對題目要求有一個正確全面的分析。其次,就該考慮程序算法的問題了,一個好的算法是一個好程序的靈魂,也決定了一個程序的質(zhì)量。兩個星期的課設(shè)雖然有些疲勞和困倦,但帶給我很多的收獲。C+已經(jīng)學(xué)了一個學(xué)期了,有許多知識都存在似懂非懂的現(xiàn)象,這種現(xiàn)象通過實際的上機(jī)操作,已經(jīng)減少了許多。對這些知識也有了更深的理解和很好的掌握。也有很多理論上說得過去的代碼,但到了實際操作,卻是行不通的。這種困惑,有許多已經(jīng)通過實際操作解決了,并能夠深刻認(rèn)

16、識,但也有很多沒有明白。只能避過這些方法,換方法實現(xiàn)。在課程設(shè)計之前,因為有了綜合實驗的經(jīng)驗與教訓(xùn),明白了寫代碼這一步是非常重要的,因為當(dāng)你把代碼輸入電腦,并用編譯器將其運行,發(fā)現(xiàn)通過不了,再來檢查找出問題,這是一件非常辛苦的事情,也很浪費時間。于是在課程設(shè)計的時候,我花了四天的時間來規(guī)劃與寫代碼,將要實現(xiàn)的內(nèi)容分析清楚,才把代碼輸入電腦。我覺得寫程序,應(yīng)該先找到該程序中的核心地方,用多種方法來實現(xiàn)該核心,這才可能避免等到發(fā)現(xiàn)邏輯上或者編譯器不支持上的錯誤,才來想補(bǔ)救的措施,這樣花費時間在想補(bǔ)救措施是很不值得的。這次的課程設(shè)計,真是讓我充分的感覺到了要自己設(shè)計一個程序是多么的難,以及學(xué)習(xí)好c+

17、是多么的重要。在這個程序的設(shè)計過程中,我清楚的意識到自己的水平有多么的薄弱,課程的知識學(xué)得有多么的不扎實??淳W(wǎng)上的例子好像覺得也沒那么難,自己一上機(jī)實際操作就出現(xiàn)了很多問題,調(diào)試的時候系統(tǒng)總是在報錯,還有很多警告,每增加一個函數(shù)就要調(diào)試好久,有時候應(yīng)為少了一個大括號或是分號,導(dǎo)致要找很久很久。雖然系統(tǒng)可以運行,也具有了一些基本的功能,但我意識到了自己有太多的不足。以后還會有很多的課程設(shè)計,一定要吸取這次的教訓(xùn),把知識學(xué)懂學(xué)透學(xué)精,真正的為我所用,這樣走上社會我才能真正的發(fā)揮所長。7. 程序代碼#include<iostream>#include<fstream>#inc

18、lude<string>using namespace std;int M=100;static int M2=0;class Score /分?jǐn)?shù)類private:int score;public:Score(int s=0)score=s;void set1()cout<<"請輸入分?jǐn)?shù):"<<endl;cin>>score;void show1()cout<<": "<<score<<endl;class Subject /科目類private:Score sc;cha

19、r subject20;public:Subject()for(int i=0;i<20;i+)subjecti=0;void set2()cout<<"請輸入科目名稱:"<<endl;cin>>subject;sc.set1();void show2()cout<<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+

20、)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<<"姓名:"<<name<<"t性別:"<<S<<"t學(xué)號:"<<num<<endl;for(i=0;i<8;i+)p1i.show2();void Student:set3() /學(xué)

21、生類修改函數(shù)int i;cout<<"請輸入學(xué)生姓名:"cin>>name;cout<<"請輸入該生學(xué)號:"cin>>num;cout<<"請輸入該生性別:"cin>>S;cout<<"請輸入每門課程的名字及分?jǐn)?shù)."<<endl;for(i=0;i<8;i+)p1i.set2();class Class /班級類private:Student stu;char name220;int num2;public:Cla

22、ss()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>>name2;cout<<"請輸入該班班號:"cin>>num2;stu.set3();void show4()cout<<"班級:"<<name2<<"t班號

23、: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 void Delete(Class c4,int *count_c);friend void Insert(Class c5,int &count_a);b100;void Save(Class c6,int count) /記錄存入文件函數(shù)fstream fi

24、le("class.dat",ios:out|ios:binary);if(!file)cout<<"file coun't open."<<endl;abort();for(int i=0;i<count;i+)file.write(reinterpret_cast<char*>(&c6i),sizeof(c6i);file.close();void Show(Class c7) /顯示記錄函數(shù)int i=0;for(i=0;c7i.getNU()!=0;i+)c7i.show4();void

25、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<count_a;i+)if(c5i.getNU()=in_number)cout<<"已有相同的學(xué)號,請重新輸入!"<<endl;break;while(c5i.get

26、NU()=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<<"學(xué)生成績錄入成功!"<<endl;void Search1(Class c1,int count1) /按學(xué)號查詢信息函數(shù)int i,number,flag=1,n=0;co

27、ut<<"請輸入所要查詢的學(xué)生的學(xué)號:"<<endl;docin>>number;if(number<=0)cout<<"輸入錯誤,請重新輸入大于零的整數(shù)!"<<endl;while(number<=0);for(i=0;i<count1&&flag;i+)if(c1i.getNU()=number)c1i.show4();flag=0;n=n+1;if(n=0)cout<<"沒有查詢到該學(xué)生的資料!"<<endl;v

28、oid 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(n=0)cout<<"沒有查詢到該學(xué)生的資料!"<<endl;void Update1(Class c3,int count_d) /信息修改函數(shù)int i,n=0,fl

29、ag=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;cin>>m;for(i=0;i<count_d&&flag;i+)if(c3i.getNU()=m)c3i.set4();flag=0;n=n+1;break;if(n!=0)co

30、ut<<"修改成功!"<<endl;if(n=0)cout<<"沒有查詢到該學(xué)生的資料!"<<endl;void Delete(Class c4) /信息刪除函數(shù)fstream file("class.dat",ios_base:in|ios_base:out|ios_base:binary);int i=0;for(i=0;i<100;i+)file.read(reinterpret_cast<char*>(&bi),sizeof(bi);for(i=0;bi

31、.getNU()!=0;i+);M2=i;Class c9;int n=0,number,flag=1; cout<<"請輸入要要進(jìn)行操作的學(xué)生的學(xué)號:"<<endl; cin>>number; for(i=0;i<M2&&flag;i+) if(c4i.getNU()=number)for(i;i<M2&&flag;i+)c4i=c4i+1;flag=0;(M2)-;n=1;Save(b,M2);break;if(n=0)cout<<"沒有查詢到可以刪除的資料!"

32、;<<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*歡迎進(jìn)入學(xué)生成績管理系統(tǒng)*"<<endl<<endl;docout<<"請選擇功能:"<<endl;cout<<"ttta.學(xué)生成績查詢"<<endl;cout<<"tttb.學(xué)生成績錄入"<<endl;cout<<"tttc.學(xué)生成績刪除"<<endl;cout<<"tttd.學(xué)生成績修改"<<endl;cout<<

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論