c課設報告許煥_第1頁
c課設報告許煥_第2頁
c課設報告許煥_第3頁
c課設報告許煥_第4頁
c課設報告許煥_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、課 程 設 計 報 告課程名稱 面向對象程序設計課題名稱 高校學籍管理系統(tǒng) 專 業(yè) 通信工程 班 級 通信工程0981 學 號 200913120111 姓 名 許煥 指導教師 雷曉 郭芳 2011年 01 月 20日湖南工程學院課 程 設 計 任 務 書課程名稱 面向對象程序設計 課 題 高校學籍管理系統(tǒng) 專業(yè)班級 通信工程0981 學生姓名 許煥 學 號 200913120111 指導老師 雷曉 郭芳 審 批 任務書下達日期 2010年 12 月 29 日任務完成日期 2011年 01 月 20 日 高校學籍管理系統(tǒng) (一)、課程設計題目:  學籍管理系統(tǒng) (二)、目的與要求:1

2、、目的: (1)要求學生達到熟練掌握C+語言的基本知識和技能; (2)基本掌握面向對象程序設計的基本思路和方法; (3)能夠利用所學的基本知識和技能,解決簡單的面向對象程序設計問題。2、基本要求: (1)要求利用面向對象的方法以及C+的編程思想來完成系統(tǒng)的設計; (2)要求在設計的過程中,建立清晰的類層次; 3、創(chuàng)新要求: 在基本要求達到后,可進行創(chuàng)新設計,如根據(jù)查找結果進行修改的功能。4、寫出設計說明書 (三)、設計方法和基本原理:1、功能要求 要求完成以下功能:1)能夠從屏幕上讀取一個學生的信息并將信息存入到數(shù)據(jù)文件中。2)能夠將指定的信息從文件中刪除。3)能夠按編號、姓名對學生的信息進行

3、檢索并將檢索結果顯示在屏幕上。4)可以統(tǒng)計全部學生的總成績,及其在班上的排名。5)能夠統(tǒng)計各科的平均成績及及格率。6)要求有錯誤提示功能,例如性別只能輸入男女,輸入錯誤提示重新輸入。7)如果檢索不到相應的信息應提示用戶。 2、問題的解決方案:根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟: a) 寫出需求分析(做什么) b) 分析系統(tǒng)中的各個實體之間的關系及其屬性和行為; c) 根據(jù)問題描述,設計系統(tǒng)的類層次; d) 完成類層次中各個類的描述(包括屬性和方法); e) 完成類中各個成員函數(shù)的定義; f) 用戶界面的設計 g) 

4、分析系統(tǒng)功能模塊(系統(tǒng)流程圖) h) 代碼編寫 i) 功能調試; j) 完成系統(tǒng)總結報告以及系統(tǒng)使用說明書。 。(5)    刪除功能:選中某個人的姓名時,可對此人的相應數(shù)據(jù)進行刪除,并自動調整后續(xù)條目的編號。(二)其它要求:(1) 只能使用C+語言,源程序要有適當?shù)淖⑨?,使程序容易閱讀;(2) 至少采用文本菜單界面(如果能采用圖形菜單界面更好);(3) 建議使用結構和鏈表等數(shù)據(jù)結構;(4) 學生可自動增加新功能模塊(視情況可另外加分);(5)寫出課程設計報告,具體要求見相關說明文檔。

5、2、問題的解決方案: 根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟: (1)分析系統(tǒng)中的各個實體之間的關系及其屬性和行為; (2)根據(jù)問題描述,設計系統(tǒng)的類層次; (3)完成類層次中各個類的描述(包括屬性和方法); (4)完成類中各個成員函數(shù)的定義; (5)完成系統(tǒng)的應用模塊; (6)功能調試; (7)完成系統(tǒng)總結報告以及系統(tǒng)使用說明書。 四、答辯與評分標準: 1、完成基本功能:40分; 2、設計報告及使用說明書:40分; 3、設置錯誤或者按照要求改變結果:10分;4、回答問題:10分。五、  教材及參考書 朱戰(zhàn)立等著, C+面向對象程序設計,人民郵電出版社;鄭莉著, C+ 語言程序

6、設計(含實驗指導書)。 清華大學出版社 ( 結構化程序設計部分 ) 錢能主編 ,C+ 程序設計教程,清華大學出版社, 2000.11 戴鋒編著, Visual C+ 程序設計基礎 , 清華大學出版社 ,2001.4 呂日著, C+ 程序設計教程,清華大學出版社, C+ 大學教程,美國 Harvey M.Deitel 等 六、課程設計時間安排1、 班級:通信工程09812、 指導教師:雷曉3、時間安排:第十九周上機時間:第十九周 目錄(一)需求分析71、系統(tǒng)設計目的與意義72、系統(tǒng)功能需求73、輸入輸出要求7(二)結構設計 81、系統(tǒng)功能模塊劃分與設計(系統(tǒng)功能模塊圖)82、結構設計8(三)界面

7、設計與各功能模塊實現(xiàn)9(四)系統(tǒng)調試11(五)使用說明及編程體會121、使用說明122、編程體會12附件:14(一)需求分析1、設計目的與意義;(1)要求學生達到熟練掌握C+語言的基本知識和技能; (2)基本掌握面向對象程序設計的基本思路和方法; (3)能夠利用所學的基本知識和技能,解決簡單的面向對象程序設計問題。2、功能需求;高校學籍管理系統(tǒng)刪除學生信息查找學生信息顯示學生信息錄入學生信息修改學生信息統(tǒng)計學生信息保存學生信息3、輸出的要求;本系統(tǒng)的輸入輸出為: 1). 學生信息錄入2). 學生信息顯示3) 學生信息的刪除4) 學生信息的修改5) 統(tǒng)計全部學生的總成績,及其在班上的排名6) 能

8、夠統(tǒng)計各科的平均成績及及格率7) 保存學生信息其中在上述要求“1)”中,當進入系統(tǒng)后,輸入代碼“1”,則進行學生信息的輸入,當輸入學生姓名以及性別時必須以字符串的形式輸入,而輸入學生各科成績時必須以小數(shù)形式輸入,輸入學生學號時必須以整形形式輸入,最后在結果運行輸出時,各數(shù)據(jù)的結果類型也是為原先定義的數(shù)據(jù)類型。(二)結構設計1、系統(tǒng)功能模塊劃分與設計(系統(tǒng)功能模塊圖)。高校學籍管理系統(tǒng)刪除學生信息查找學生信息顯示學生信息錄入學生信息修改學生信息統(tǒng)計學生信息保存學生信息2、結構設計(1)(ER圖);學生高校學籍管理 系統(tǒng)信息查詢成績查詢信息修改學生基本信息管理基本信息錄入基本信息修改基本休息刪除學

9、生成績信息查詢學生成績錄入學生成績修改學生成績 刪除信息查詢統(tǒng)計基本信息查詢學生成績查詢學生成績統(tǒng)計(2)類層次圖 PersonSchool(3)類視圖Person#name#sex# place# nation# birth# party# id# number# score+Person()+Person()+ getname()+ getnumber()+ getscore+ getg()+ input()+ output()(三)界面設計與各功能模塊實現(xiàn) 首先此系統(tǒng)是利用switch函數(shù)來實現(xiàn)主界面的設計。當進入此系統(tǒng)時,你會看到以下主界面的設計1、錄入學生信息:選擇1,實現(xiàn)錄入模塊的

10、功能,利用cin函數(shù),來輸入學生的各項基本信息,if語句來判斷學生性別,實現(xiàn)男女的選擇。2、顯示學生信息:選擇2,實現(xiàn)顯示模塊的功能:3、查找學生信息:選擇3,實現(xiàn)查找模塊的功能,利用if語句實現(xiàn),根據(jù)程序的設計,選擇你所希望的查找方式,這里提供2種方式,選擇1為按編號查找,選擇2按姓名查找。4、刪除學生信息:選擇4,實現(xiàn)刪除模塊的功能,利用if語句實現(xiàn),這里提供選擇所要刪除的學生編號方式來實現(xiàn),以下是顯示了刪除了所選編號的學生信息。5、修改學生信息:選擇5,實現(xiàn)修改模塊的功能,利用利用cin函數(shù)和if語句實現(xiàn):6、統(tǒng)計學生成績:選擇6,實現(xiàn)統(tǒng)計模塊的功能,利用計數(shù)器count實現(xiàn):7、保存學

11、生信息:選擇7,實現(xiàn)保存模塊的功能,利用指針實現(xiàn):(四)系統(tǒng)調試系統(tǒng)調試數(shù)據(jù)見第三步界面設計和各功能模塊實現(xiàn)1、在程序完全編寫完后,而且提示無錯誤后,在程序運行,輸入變量的值時,運行出錯。 這時,應弄清楚在定義變量時,自己所選擇的變量值的類型,在程序運行輸入的時候,只能輸入符合定義的類型相同的類型的值2、有時候用到了其它庫函數(shù)而未定時會出現(xiàn)類似'strlen' undefined; assuming extern returning int的警告,雖然不是錯誤,但有時可能影響到程序最終運行結果這時候只需查找所未定義的函數(shù)所屬的庫函數(shù),然后將之定義在程序最開頭即可(五)使用說明及

12、編程體會1、使用說明 使用此系統(tǒng),當你運行時,你會首先進入主界面,然后你會看到此系統(tǒng)有8個選項,其中1-7個選項是此系統(tǒng)的功能,還有一個0選項為退出此系統(tǒng)。根據(jù)你自己的意愿按提示進行操作。例如你若要錄入學生信息,請輸入1,回車后,會有進一步的提示,按提示輸入相應的學生信息,而其中性別輸入只能輸入男或女,否則系統(tǒng)會提示輸入錯誤,無此性別,將要求你重新輸入,只到輸入正確為止。全部錄入信息后,系統(tǒng)會出現(xiàn)2個選擇,按1為繼續(xù)輸入其他學生的信息,按0為退出輸入,此時系統(tǒng)會回到主界面。你若要顯示你所輸入的學生信息,請輸入2,回車后系統(tǒng)將顯示你剛剛輸入進去的全部學生及其相關信息。你若要查找學生信息,請輸入3

13、,查找學生信息,系統(tǒng)會給你2個選擇,1為按編號查找,2為按姓名查找,根據(jù)你的選擇,輸入相應的數(shù)字,然后按要求正確輸入系統(tǒng)會顯示你所要查找的還存在的學生信息。你若要刪除學生信息,請輸入4,回車后,系統(tǒng)會提示你輸入要刪除的學生的編號,你只要輸入編號后,再按回車即可,然后系統(tǒng)會顯示你所刪除的學生的信息。你若要修改學生的信息,請輸入5,然后系統(tǒng)也會給你2種方式確定你要刪除的對象是誰,按1為按編號修改,按2為按姓名修改,選擇你的方式后,系統(tǒng)會提示你要輸入的內容,和你錄入學生信息的方法一樣,此時你可以修改你所要的信息。你若要統(tǒng)計學生各科成績總分以及對各科目進行平均分和及格率的計算及統(tǒng)計,請輸入6,回車后系

14、統(tǒng)講顯示你所要的信息。選項7為保存你以上所有操作的最后輸入輸出結果。你若想要推出此系統(tǒng),請輸入0,回車后退出系統(tǒng)。以上操作順序部分可更換。謝謝使用本系統(tǒng)。2、編程體會這已經是第二次做可課程設計了,但是遇到的問題似乎比第一次做還多,C+比C語言難很多,要用到的知識更復雜,操作起來也更麻煩,但是我們最終還是順利完成了任務要求。在老師及同學的指導下,讓我在C語言的基礎上,對C+有了更進一步的認識和了解,要想學好它要重在實踐,要通過不斷的上機操作才能更好地學習它,有時候雖然書中的知識貌似是看懂了,但是在寫程序時還是會出現(xiàn)一些自己無法單獨解決的問題。通過實踐,我也發(fā)現(xiàn)我的好多不足之處,首先是自己對C+一

15、些全新的庫函數(shù)不太了解,在程序編譯時會出現(xiàn)一些警告,或者是程序最后運行結果不對,還有對函數(shù)調用的正確使用不夠熟悉,以及對C+中經常出現(xiàn)的錯誤也不了解,英文提示錯誤不明白,但是通過實踐,使我在這幾個方面的認識有了進一步的提高。通過實踐的學習,我認識到學好計算機要重視實踐操作,不僅僅是學習C語言,還是其它的語言,以及其它的計算機方面的知識都要重在實踐,所以在后來的學習過程中,我會更加注視實踐操作,使自己便好地學好計算機。現(xiàn)在回想起學習C+的過程中,既有快樂又有煩惱。在還沒學習C+之前,聽學姐說C+難很多,我想應該也就這樣吧,也是一些基本的符號語言然后串在一起就行了,但是經過一段時間的學習,才發(fā)現(xiàn)根

16、本不是如此,從開學學習C+的第一天開始,就感覺C+很多東西完全不同于C語言,開始以為C+的學習也會很容易,但是后面很快就感覺到錯了,課還是要認真聽,理解了書上的內容還要做很多習題去了解它的變換才能做到理解透徹。從發(fā)課表的那天起,我就知道在最后的一周要進行課程設計。當時覺得也沒什么,畢竟已經做過一次了,感覺還不錯,想想這次應該也就這樣,不會很難。到了現(xiàn)在真正做C+的課設發(fā)現(xiàn)要求改了很多,更嚴格了。雖然上機的前部分一段時間,貌似什么都沒做,因為實在是感覺無從下手,不過到了后期,我感覺自己收獲越來越大,從一開始的迷茫,不知道從何下手到把報告中的幾個任務編寫出來,心里很開心如果是按照第一次的格式做,我

17、想真的很簡單,但是由于是C+,很多內容改了,也有了更多高級的表達形式,這些都是之前沒遇到,沒做過的,所以開始把程序編好之后,再來做這些新的東西,發(fā)現(xiàn)真的無從下手,不過還好有老師和同學的幫助,慢慢從不懂到懂,從笨手笨腳到得心應手,確實很開心,很快樂。最后經過自己看書自學和摸索以及在別人的幫助和提示下,我完成了整個程序設計。為期一周的課程設計結束了,在這段時間里,我又學到了更多關于C+的知識,如:對數(shù)組,各種運算符的運用更加得心應手。同時我也被提醒以后辦事的時候要多注意細節(jié),仔細,考慮周全。因為在編程時往往出現(xiàn)的錯誤只是因為少了一個符號而已。我也看到了團隊精神和互幫互助的重要性。這一點真的讓我終生

18、受益。這一周過很充實!在課程設計過程中,我學到了很多人生的哲理,通過程序一個個模塊的去編寫,完善,讓我懂得在未來怎么樣去制定計劃,怎么樣去實現(xiàn)這個計劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒,黑夜過去了,我們收獲的是黎明。在本次實踐中,給我印象最為深刻的是在文件刪除程序的編譯過程中,先有我的其他各個模塊的程序都已經編寫成功,那么我只要完成了這個程序就一切都完成了,可是在這個問題的解決上,我花了大量的時間,都無功而反,長時間的思考著這一個問題,當時真的很頭痛。然而我最終沒有自暴自棄。我鼓起勇氣,到處問,到處查資料,黃天不負有心人,我終與在自己的努力下完成了編寫。不得不說這是精神的勝利,

19、因為我看到有許多同學,往往做著做著就做不下去了,就去玩游戲了,或者是聊天,還有的則干脆不來機房上機了。謝謝給我指點迷津的老師以及同學。這次設計讓我明白了一個道理,做任何事前之前,不管做一件事的時間有多么充裕。我們對待事情開始的態(tài)度都要擺好,都要認真去對待,到最后才不會后悔!這次實踐給我的經驗是寶貴的,它可能影響我以后的畢業(yè)設計甚至是未來的生活和工作。記得有人說過吧:人在做一件事之前,是不知道它到底有沒有意義,只有做了才會有所發(fā)現(xiàn),有所收獲,但是不去做,是一定什么都得不到的!。這次的實踐讓我再次懂得了這個道理,我會把它好好的記在心中,并且會在以后的生活和工作中去實踐它,見證它所擁有的巨大價值。附

20、件:關鍵源程序(帶注釋)#include<iostream>#include<string>#include<fstream>#define N 20#include<iomanip> using namespace std;int hz=N;class student protected: int number;char nameN;char sexN;char placeN;char nationN;char birthN;char partyN;char idN;float scoreN;public: student *next; stu

21、dent() student() char* getname()return name; int getnumber() return number;double getscore(int i) return scorei;float getg() return (score0+score1+score2); void input()int e=1;cout<<"ttt按提示輸入:"<<endl;cout<<"tt輸入編號: "cin>>number;cout<<"tt輸入姓名: &q

22、uot;cin>>name;docout<<"tt輸入性別: "cin>>sex;if(strcmp(sex,"男")=0 | strcmp(sex,"女")=0)cout<<"tt輸入籍貫: "cin>>place;cout<<"tt輸入民族: "cin>>nation;cout<<"tt輸入生日: "cin>>birth;cout<<"tt輸入

23、政治面貌: "cin>>party;cout<<"tt輸入身份證號: "cin>>id;cout<<"tt輸入數(shù)學分數(shù): "cin>>score0;cout<<"tt輸入英語分數(shù): "cin>>score1;cout<<"tt輸入計算機分數(shù): "cin>>score2;e=0;elsecout<<"ttt無此類型性別!重新輸入!"<<endl;e=1;wh

24、ile(e);return ;void input(ifstream & is) is>>number>>name>>sex>>place>>nation>>birth>>party>>id>>score0>>score1>>score2;is.get(); void output()cout<<"學生基本信息如下:"<<endl;cout<<"編號:"<<number

25、<<" 姓名:"<<name<<" 性別:"<<sex<<" 籍貫:"<<place<<" 民族:"<<nation<<" 生日:"<<birth<<" 政治面貌:"<<party<<endl<<"身份證號:"<<id<<" 數(shù)學:"<<

26、;score0<<" 英語:"<<score1<<" 計算機:"<<score2<<" 總分:"<<getg()<<endl<<endl;void output(ofstream & os) os<<setw(N)<<number<<setw(N)<<name<<setw(N)<<sex<<setw(N)<<place<<se

27、tw(N)<<nation<<setw(N)<<birth<<setw(N)<<party<<setw(N)<<id<<setw(N)<<score0<<setw(N)<<score1<<setw(N)<<score2<<endl;class school public: school() head=new student; head->next=NULL; key=0; school() delete head; voi

28、d input();void mend();void del();int find(student *p,int num,char *pn="");void found();void show();void count();void save();void begin();void clear();char mainmenu();int getkey() return key;void setkey(int k) key=k; private: student *head; int key;/錄入函數(shù)void school:input()student *p,*p2=NUL

29、L;p=head; int n;while(p->next)p=p->next;while(n)p2=new student;p2->input();p->next=p2;p2->next=NULL;p=p->next; school:setkey(1);cout<<"ttt按1繼續(xù),按0返回 : "cin>>n;/子查找函數(shù)int school:find(student *p1,int num,char *pn)student *p;p=head;while(p->next)(*p1)=p;if( (p-&

30、gt;next)->getnumber()=num|!strcmp( (p->next)->getname(),pn ) )return 1;p=p->next;return 0;/查找函數(shù)void school:found()student *p;int num=-1,n=9;char nameN=""docout<<"tt1:按編號查找,2:按姓名查找: "cin>>n;while(n<1|n>2);if(n=1)cout<<"ttt輸入編號: "cin>

31、;>num;if(n=2)cout<<"ttt輸入姓名: "cin>>name;if(!find(&p,num,name) )cout<<"tt找不到你要查找的內容!"<<endl;return;(p->next)->output();/刪除函數(shù)void school:del()student *p,*p2;int num;cout<<"ttt輸入編號: "cin>>num;if( !find(&p,num,""

32、;) )cout<<"tt找不到你要刪除的內容!"<<endl;return;(p->next)->output();p2=p->next;p->next=p2->next;delete p2;school:setkey(1);/顯示函數(shù)void school:show()student *p;p=head;while(p->next)(p->next)->output();p=p->next;/修改函數(shù)void school:mend()student *p;int num=-1,n;char

33、nameN=""docout<<"tt1:按編號修改,2:按姓名修改: "cin>>n;while(n<1|n>2);if(n=1)cout<<"ttt輸入編號: "cin>>num;if(n=2)cout<<"ttt輸入姓名: "cin>>name;if( !find(&p,num,name) )cout<<"tt找不到你要修改的內容!"<<endl;return;(p->

34、next)->output();(p->next)->input();school:setkey(1);/保存函數(shù)void school:save()student *p;p=head;ofstream os("student.txt",ios:out);if (school:getkey()=1)while(p->next)(p->next)->output(os);p=p->next;cout<<"ttt文件已保存! "<<endl;school:setkey(0);/初始化函數(shù)voi

35、d school:begin()student *p,*p2;p=head;clear();long t;ifstream is("student.txt",ios:in); if(!is)ofstream os("student.txt",ios:out);os.close();return ;int num=-1;while(1)num=-1;t=is.tellg();is>>num;is.seekg(t);if(num<0) is.close();return;p2=new student;p2->input(is);p-&

36、gt;next=p2;p2->next=NULL;p=p->next;/清空函數(shù) void school:clear()student *p,*p2;p=head->next;while( p )p2=p;p=p->next;delete p2;/統(tǒng)計函數(shù) void school:count()student *p;p=head;int n=0;double g3=0,0,0;float j3=0,0,0;while(p->next)p=p->next; n+;for(int i=0;i<3;i+) gi=gi+( p->getscore(i) );(p->getscore(i) )>=60? ji+ : 0 ;cout<<"ttbbbb數(shù)學總分:"<<g0<<" 平均分:"<<g0/n<<" 及格率:"<<j0/n<<endl<<"ttbbbb英語總分:"<<g1<<" 平均分:"<<g1/n<<" 及格率:"<<j1/n<<e

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論