版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計任務(wù)書課程名稱面向?qū)ο蟪绦蛟O(shè)計課 題學(xué)生成績管理系統(tǒng)專業(yè)班級計算機學(xué)生姓名 學(xué) 號指導(dǎo)老師李珍輝陳淑紅李杰軍審 批任務(wù)書下達日期 2011年11月15日任務(wù)完成日期 2011年12月28日設(shè)計內(nèi)容與設(shè)計要求1. 課程設(shè)計目的:面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計是集中實踐性環(huán)節(jié)之一, 是學(xué)習(xí)完面向?qū)ο蟪绦蛟O(shè)計 課程后進行的一次全面的綜合練習(xí)。要求學(xué)生達到熟練掌握C+語言的基本知識和技能; 基本掌握面向?qū)ο蟪绦蛟O(shè)計的思想和方法;能夠利用所學(xué)的基本知識和技能,解決簡單 的面向?qū)ο蟪绦蛟O(shè)計問題,從而提高動手編程解決實際問題的能力。2. 課題題目1)公司庫存管理系統(tǒng)2)高校學(xué)籍管理系統(tǒng)3)高校工資管理系統(tǒng)
2、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)的課題完成以下主要工作:完成系統(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è)計(E-R圖);數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計;類層次圖;界面設(shè)計與各功能模塊實現(xiàn)。系
3、 統(tǒng)調(diào)試:調(diào)試出現(xiàn)的主要問題,編譯語法錯誤及修改,重點是運行邏輯問題修 改和調(diào)整。使用說明書及編程體會:說明如何使用你編寫的程序,詳細(xì)列出 每一步的操作步驟。關(guān)鍵源程序(帶注釋) 按規(guī)定格式完成課程設(shè)計報告,將其打印稿 (A4 紙) 上交給老師存檔 不得抄襲他人程序、課程設(shè)計報告,每個人應(yīng)體現(xiàn)自己的個性設(shè)計。進度安排第17周星期一8 :0012:00星期二8 :0012: 00星期四8 :0012: 00第18周星期一8 :0012: 00星期二14:30 18:30星期三8 :0012: 00課題 6:學(xué)生成績管理系統(tǒng)(一)、課程設(shè)計題目:學(xué)生成績管理系統(tǒng)(二)、目的與要求:1、目的:(1)
4、要求學(xué)生達到熟練掌握 C+語言的基本知識和技能;( 2)基本掌握面向?qū)ο蟪绦蛟O(shè)計的基本思路和方法;(3)能夠利用所學(xué)的基本知識和技能,解決簡單的面向?qū)ο蟪绦蛟O(shè)計問題。2、基本要求:(1)要求利用面向?qū)ο蟮姆椒ㄒ约?C+的編程思想來完成系統(tǒng)的設(shè)計;(2)要求在設(shè)計的過程中,建立清晰的類層次;(3)在系統(tǒng)中至少要定義四個類,每個類中要有各自的屬性和方法; ( 4)在系統(tǒng)的設(shè)計中,至少要用到面向?qū)ο蟮囊环N機制。3、創(chuàng)新要求:在基本要求達到后,可進行創(chuàng)新設(shè)計,如根據(jù)查找結(jié)果進行修改的功能。4、寫出設(shè)計說明書(三)、設(shè)計方法和基本原理:1、問題描述(功能要求) :設(shè)計一個實用的小型學(xué)生成績管理程序,具有
5、查詢,檢索和刪除功能,并且能夠打 開或修改指定文件及將多個文件組成一個文件。它完全使用類來實現(xiàn),充分體現(xiàn)面向?qū)?象的程序設(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)
6、功能調(diào)試;(8)完成系統(tǒng)總結(jié)報告以及系統(tǒng)使用說明書目錄1.系統(tǒng)需求分析 12.總體設(shè)計 13. 詳細(xì)設(shè)計 34. 系統(tǒng)調(diào)試 55. 結(jié)果分析 86. 總結(jié) 87. 程序代碼 91. 系統(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é)生成績信息錄入、學(xué)生成績信息修改、學(xué)生成績信息 顯示、學(xué)生成績信息刪除、學(xué)生成績信息查詢以及數(shù)據(jù)保存文件等功能。2. 總體設(shè)計
7、2.1 系統(tǒng)功能分析:系統(tǒng)通過調(diào)用函數(shù)來實現(xiàn)學(xué)生成績信息錄入、學(xué)生成績信息修改、學(xué)生成績信息刪 除、學(xué)生成績信息查詢以及數(shù)據(jù)保存文件等功能。In sert ()函數(shù)用于錄入學(xué)生成績及 信息;Updatel ()函數(shù)用來修改學(xué)生成績及信息;Show()函數(shù)用于顯示所有已有的記錄;Delete ()函數(shù)用來刪除學(xué)生成績及信息;Searchi ()及Search2 ()函數(shù)用來 查詢及信息;Save ()函數(shù)用于將輸入的信息存入文件內(nèi);主函數(shù)main ()用于調(diào)用這些函數(shù)。2.2系統(tǒng)功能模塊劃分與設(shè)計:本系統(tǒng)定義了 Score類、Subject類、Student類以及Class類這四個類,定義了 I
8、nsert ()、Update1 ()、Show()、Save () > Delete ()、Search1 ()及 Search2 () 等函數(shù)來實現(xiàn)系統(tǒng)所需功能。2.3系統(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 :
9、char-sc : Score+Subject ()+set2 (): void+show2(): void圖3.23.3學(xué)生類的設(shè)計:該類定義了一個Subject類類型的數(shù)組,一個字符型數(shù)組和一個字符變量,兩個整 型變量以及設(shè)置和顯示私有成員的函數(shù)。Stude nt -name20 : char -num: int -S: char -n : int -p18 : Subject +Student () +set3 (): void +show3(): void +getNU1(): int圖3.33.4班級類的設(shè)計:該類定義了一個Student類類型的變量、字符型數(shù)組、整型及設(shè)置和顯示私有
10、成員 的函數(shù)等。Class-name20 : char -num2: int +Class () +getNU(): int +set4 (): void +show4(): void圖3.43.5各個類的關(guān)系描述圖 3.5.1Stude nt-name20:char-num: int-S: char-n : int+Student ()1r仁*-p18Subject-subject20 : char+Subject () +set2 (): void +show2(): void1圖 3.5.2圖 3.5.34.系統(tǒng)調(diào)試4.1在調(diào)試過程中,出現(xiàn)了下面一些錯誤:1輸入數(shù)據(jù)時,輸錯了數(shù)據(jù)的類型會
11、造成死循環(huán),因此輸入時需要注意。2 開始主界面輸入非正確字母時,沒有提示錯誤。容易造成用戶誤解,在主函 數(shù)的switch語句結(jié)朿處加上default:cout<<"選擇錯誤,請從新選擇!"就可以了4.2具體調(diào)試過程:主界面閔入除改錄件 甘錄刪傷記文 頊績績績部入統(tǒng) Jm主 王生生生示番 hh盂于顯記ia a b c d e fIII學(xué)生成績錄入請輸入學(xué)生的學(xué)號.-SJ所矍學(xué)性課名 4班注4生門目 該該善該每科 入入入入入入入數(shù)!11! A!入+ 輸 主月主冃主月主月主闍主冃壬扃>圭月0學(xué)生成績查詢班號1- fe2- fc息色心 ft.隹 £ 號名
12、 學(xué)姓承伯“姓名:張三性別B學(xué)號就+: H0學(xué)生成績顯示I.班級:計算機 班號:10肛姓名二張三 性別加 學(xué)號認(rèn)C+:90學(xué)生成績修改請樹入所要修改的學(xué)峑的姓名:簷話入所要修改的學(xué)生的學(xué)號:|數(shù)分及字名>- 在號名號 所卅n學(xué)性課名: 蠱生生Re數(shù) 該該養(yǎng)該每科分IAIJAIJAIA吹11 AJA+ 輸 請看溝溝請青溝:+溝0 UIL 1- IL > 1LP 1 0 J b tl l- r V fur TL記錄存入文件詢?nèi)氤匿浖?查錄刪修記文 績績績?nèi)虢y(tǒng) 成成成威全 生生生生示 a.b.cd.e fg-保存文件成珈學(xué)生成績刪除詢?nèi)氤匿浖?查>.刪修記文 績績績績部入蟒 成
13、成咸威全44 生生主蘭示番 盂于顯記退請輸入舉進行操作的學(xué)注的學(xué)弓5. 結(jié)果分析程序總共設(shè)計了四個類,滿足了課題對類的要求,在設(shè)計的過程中,建立了較為清 晰的類層次,也利用了面向?qū)ο蟮姆椒ㄒ约?C+勺編程思想來完成系統(tǒng)的設(shè)計,做到了 用文件存儲學(xué)生成績信息、從文件中讀取學(xué)生成績信息、修改信息、查詢信息、刪除信 息顯示文件中存儲的信息等要求。 而且界面簡潔, 容易操作。 但是程序太長, 不夠簡練, 導(dǎo)致出現(xiàn)錯誤很難發(fā)現(xiàn)和修改。6. 總結(jié)首先,接到設(shè)計題目之后,在對本題目進行分析的時候,我懂得了一個很重要的道 理,那就是說一個程序的產(chǎn)生需要一個對題目要求有一個正確全面的分析。其次,就該 考慮程序算
14、法的問題了, 一個好的算法是一個好程序的靈魂, 也決定了一個程序的質(zhì)量。兩個星期的課設(shè)雖然有些疲勞和困倦,但帶給我很多的收獲。C+已經(jīng)學(xué)了一個學(xué)期了,有許多知識都存在似懂非懂的現(xiàn)象,這種現(xiàn)象通過實際的上機操作,已經(jīng)減少了 許多。對這些知識也有了更深的理解和很好的掌握。也有很多理論上說得過去的代碼, 但到了實際操作,卻是行不通的。這種困惑,有許多已經(jīng)通過實際操作解決了,并能夠 深刻認(rèn)識,但也有很多沒有明白。只能避過這些方法,換方法實現(xiàn)。在課程設(shè)計之前, 因為有了綜合實驗的經(jīng)驗與教訓(xùn),明白了寫代碼這一步是非常重要的,因為當(dāng)你把代碼 輸入電腦,并用編譯器將其運行,發(fā)現(xiàn)通過不了,再來檢查找出問題,這是
15、一件非常辛 苦的事情, 也很浪費時間。 于是在課程設(shè)計的時候, 我花了四天的時間來規(guī)劃與寫代碼, 將要實現(xiàn)的內(nèi)容分析清楚,才把代碼輸入電腦。我覺得寫程序,應(yīng)該先找到該程序中的 核心地方,用多種方法來實現(xiàn)該核心,這才可能避免等到發(fā)現(xiàn)邏輯上或者編譯器不支持 上的錯誤,才來想補救的措施,這樣花費時間在想補救措施是很不值得的。這次的課程設(shè)計,真是讓我充分的感覺到了要自己設(shè)計一個程序是多么的難,以及 學(xué)習(xí)好C+是多么的重要。在這個程序的設(shè)計過程中,我清楚的意識到自己的水平有多 么的薄弱,課程的知識學(xué)得有多么的不扎實。看網(wǎng)上的例子好像覺得也沒那么難,自己 一上機實際操作就出現(xiàn)了很多問題,調(diào)試的時候系統(tǒng)總是
16、在報錯,還有很多警告,每增 加一個函數(shù)就要調(diào)試好久,有時候應(yīng)為少了一個大括號或是分號,導(dǎo)致要找很久很久。 雖然系統(tǒng)可以運行,也具有了一些基本的功能,但我意識到了自己有太多的不足。以后還會有很多的課程設(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 / 分?jǐn)?shù)類 private:in
17、t 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;char subject20;public:Subject()for(int i=0;i<20;i+)subjecti=0;void set2()cout<<&q
18、uot; 請輸入科目名稱 :"<<endl;cin>>subject;sc.set1();void show2() cout<<subject; sc.show1();學(xué)生類class Student /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()ret
19、urn name; ;/學(xué)生類顯示函數(shù)void Student:show3() int i;coutvv"姓名:"<<namevv"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é)號 :&
20、quot;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:Class()for(int i=0;i<20;i+)name2i=0;num2=0;int getNU()return stu.getNU1();string get
21、NA()return stu.getNA1();void set4()cout<<" 請輸入該生所在班級名稱 :"cin>>name2;cout<<" 請輸入該班班號 :"cin>>num2;stu.set3();void show4()cout«"班級:"<<name2«"t 班號:t"<<num2;stu.show3();friend void Search1(Class c1,int count1);friend vo
22、id 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 file("class.dat",ios:out|ios:binary);if(!file)cout<<"file coun
23、9;t open."<<endl;abort();for(int i=0;i<count;i+)file.write(reinterpret_cast<char*>(&c6i),sizeof(c6i);file.close();顯示記錄函數(shù)void Show(Class c7) / 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<
24、;<" 空間已滿 !"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.getNU()=in_number);if(in_number<1)cout<<" 輸入錯誤,請重新輸入大于零的整數(shù) !&
25、quot;<<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;cout<<" 請輸入所要查詢的學(xué)生的學(xué)號 :"<<endl;docin>>nu
26、mber;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;void Search2(Class c2,int count2) /按姓名查詢信息函數(shù)int i,n=0;char n
27、am20;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,flag=1,m;char nam20;cout<<" 請輸入所要修改的學(xué)生的姓名
28、:"<<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)cout<<" 修改成功 !"<<endl;if(n=
29、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.getNU()!=0;i+)M2=i;Class c9;int n=0,numbe
30、r,flag=1;cout<<" 請輸入要要進行操作的學(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<<" 沒有查詢到可以刪除的資料 !"<<endl;if(n!=0)cout<<"
31、資料刪除成功 !"<<endl;int main()char a1;fstream file("class.dat",ios_base:in|ios_base:out|ios_base:binary);cout<<"tt*歡迎進入學(xué)生成績管理系統(tǒng)*"<<endl<<endl;docout<<" 請選擇功能: "<<endl;cout<<"ttta.學(xué)生成績查詢 "<<endl;cout<<"
32、;tttb.學(xué)生成績錄入 "<<endl;cout<<"tttc.學(xué)生成績刪除 "<<endl;cout<<"tttd.學(xué)生成績修改 "<<endl;cout<<"ttte.顯示全部記錄 "<<endl;cout<<"tttf.記錄存入文件 "<<endl;cout<<"tttg.退出系統(tǒng) "<<endl;int i=0;for(i=0;i<100;i+) file.read(reinterpret_cast<char*>(&bi),sizeof(bi);for(i=0;bi.getNU()!=0;i+)M2=i;cin>>a1;switch(a1)case a':cout<<"ttt 請繼續(xù)選
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025服務(wù)外包合同
- 2025房地產(chǎn)交割監(jiān)管合同
- 2025合同法討論案例
- 2024年神經(jīng)系統(tǒng)用藥項目資金籌措計劃書代可行性研究報告
- 智慧校園建設(shè)與學(xué)生學(xué)習(xí)方式的變革
- 現(xiàn)代農(nóng)業(yè)產(chǎn)業(yè)園區(qū)規(guī)劃與管理研究
- 高速公路服務(wù)區(qū)物業(yè)服務(wù)方案
- 二零二五年度出租房水電費在線結(jié)算服務(wù)合同4篇
- 2025年新科版八年級生物上冊階段測試試卷含答案
- 2025年牛津譯林版九年級歷史上冊月考試卷含答案
- 不同茶葉的沖泡方法
- 光伏發(fā)電并網(wǎng)申辦具體流程
- 建筑勞務(wù)專業(yè)分包合同范本(2025年)
- 企業(yè)融資報告特斯拉成功案例分享
- 五年(2020-2024)高考地理真題分類匯編(全國版)專題12區(qū)域發(fā)展解析版
- 《阻燃材料與技術(shù)》課件 第8講 阻燃木質(zhì)材料
- 低空經(jīng)濟的社會接受度與倫理問題分析
- GB/T 4732.1-2024壓力容器分析設(shè)計第1部分:通用要求
- 河北省保定市競秀區(qū)2023-2024學(xué)年七年級下學(xué)期期末生物學(xué)試題(解析版)
- 運動技能學(xué)習(xí)與控制課件
- 六編元代文學(xué)
評論
0/150
提交評論