已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
計算機工程學院實 踐 報 告課程名稱:數(shù)據(jù)結構課程設計設計題目: 學生成績管理 院 系: 數(shù)理學院 專 業(yè): 信息與計算科學 組 別: 28 學生姓名: 陸君 學號: 1114101128 起止日期: 2013年 7月 1日2013 年 7月5日 指導教師: 周海巖 寇海洲 學年學期: 2012 2013 學年 第 2 學期設計任務書課題名稱學生成績管理設計目的綜合運用程序設計、算法設計的方法,對實際應用中的問題進行數(shù)據(jù)分析和組織、算法設計和分析、程序設計和調試等環(huán)節(jié),將理論與實踐相結合,掌握利用計算機解決實際問題的基本方法和基本步驟,培養(yǎng)學生良好的程序設計風格、算法設計和分析能力。實驗環(huán)境p iv以上計算機,window xp以上操作系統(tǒng);編程語言不限。任務要求要求學生結合課程體系的實際需求及實踐能力、實驗條件等外部因素,完成學生成績管理課題的設計任務。課題功能:1)實現(xiàn)對學生成績的錄入;2)對輸入的數(shù)據(jù)進行查詢、修改、刪除、排序等操作;任務要求:1)界面友好,函數(shù)功能要劃分好;2)總體設計應畫流程圖;3)程序要加必要的注釋。4)學生完成設計任務后,按要求提交算法設計報告,設計報告規(guī)范化,并能夠反映算法設計的實際內容。工作進度計劃序號起止時間工 作 內 容116周制定課程設計計劃,編寫課程設計指導書21318周下發(fā)任務,學生選題,分組,查閱資料319周上機系統(tǒng)調試,課程設計報告,課程設計答辯420周上交報告電子及打印文檔指導教師:周海巖 年 月 日 摘要:學生成績管理系統(tǒng)是典型的信息管理系統(tǒng)(mis),其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和維護以及前端應用程序的開發(fā)兩個方面。對于前者要求建立起數(shù)據(jù)一致性和完整性強,數(shù)據(jù)安全性強,數(shù)據(jù)安全性好的庫。而對于后者則要求應用程序功能完備易使用等特點。該系統(tǒng)主要實現(xiàn),添加、修改、刪除、讀出、寫入、查找、排序、計算總分、平均分、分類匯總等功能。系統(tǒng)的核心是添加、修改和刪除三者之間的聯(lián)系,每個表的修改都將聯(lián)動的影響其他的表,當完成添加或刪除操作時系統(tǒng)會自動地完成學生成績的修改。查詢功能也是系統(tǒng)的核心之一,在系統(tǒng)中主要根據(jù)學生姓名和學號進行查詢,其目的就是為了方便用戶使用。系統(tǒng)有完整的用戶添加、修改、刪除和密碼修改功能,并具備報表打印功能。關鍵詞:添加;修改;刪除;查找;排序;總分;平均分目錄1 需求分析:11.1任務及要求11.2程序設計思想11.3實現(xiàn)功能12 概要設計:22.1線性順序表的抽象數(shù)據(jù)定義:32.2程序框圖32.3程序模塊33 詳細設計:53.1聲明一個student的結構體類型并且定義變量53.2聲明類system且構造函數(shù)63.3調用添加函數(shù)63.4調用查詢函數(shù)73.5調用顯示函數(shù)73.6調用修改函數(shù)83.7調用刪除函數(shù)93.8調用排序函數(shù)93.9 dowhile判斷是否循環(huán)114 調試分析:125 測試結果:135.1主菜單135.2添加學生成績135.3查詢學生成績145.4顯示學生成績145.5修改學生成績155.6刪除學生成績155.7對學生成績排序155.8退出165.9源程序文件名清單166 附錄:171需求分析1.1 任務及要求該系統(tǒng)主要實現(xiàn),添加、修改、刪除、讀出、查找、排序、計算總分、平均分、分類匯總等功能。1.2 程序設計思想該系統(tǒng)需要解決多個問題,數(shù)據(jù)類型特征并不都相同。為了解決問題的方便化,采用結構體來做程序。并且很多數(shù)據(jù)在輸出時采用了循環(huán)語句人為完成。1.3 實現(xiàn)功能1)錄入數(shù)據(jù):將學生學號、姓名、成績寫入文件。2)增加人員:增加學生,并將學生姓名、學號和成績寫入文件。3)刪除人員:刪除學生信息和成績。4)修改數(shù)據(jù):修改學生成績。5)按學號查詢:根據(jù)學號查詢學生成績,包括平均分。6)按姓名查詢:根據(jù)學生姓名查詢學生成績,包括總分和平均分。7)輸出所有學生成績。8)按照總分、平均分從高到低排序。2概要設計2.1 涉及到的基礎知識所用到的基礎知識有結構體和簡單的do-while循環(huán)語句和“break”跳出循環(huán)語句同時還有多處用到了for循環(huán)語句。通過多個函數(shù)的結合完成預期的結果。1.結構、類和構造函數(shù)聲明結構類型時,首先指定關鍵字struct和結構名,然后用一對花括號將若干個結構成員數(shù)據(jù)類型說明括起來。(1).struct student /聲明一個名為student的結構體類型/定義變量;int main()/定義student的結構變量,分配變量空間(2)class systempublic:system() /成員函數(shù)private: /數(shù)據(jù)成員2循環(huán)結構:(1) switch語句switch語句,它也稱為多選擇語句。它可以根據(jù)給定的條件,從多個分支語句序列中選擇執(zhí)行一個分支的語句序列。switch語句的一般格式為:switch(表達式) case常量表達式1:語句; break; case常量表達式n:語句; default:語句;(2)for語句這種循環(huán)語句不僅用于循環(huán)次數(shù)已知的情況,還能用于循環(huán)次數(shù)預先不能確定只給出循環(huán)結束條件的情況下。for 語句的一般形式:for (表達式1;表達式2;表達式3)語句; /循環(huán)體(3)dowhile語句do循環(huán)體while(條件表達式)當流程到達do后,立即執(zhí)行循環(huán)體語句,然后再對表達式進行測試。若條件表達式的值為真,則重復循環(huán),否則退出。2.2 程序框圖成績管理系統(tǒng)輸入學生成績顯示學生成績修改學生成績刪除學生成績成績排序計算總分平均分查詢學生成績退出2.3程序模塊2.3.1主程序模塊void main() system person;2.3.2添加模塊“學生成績管理系統(tǒng)”包括幾個模塊:添加學生成績,顯示學生成績,查詢學生成績、修改學生成績、刪除學生成績、將學生成績進行排序,最后退出程序主要程序的模塊說明:1)查詢學生成績模塊void system:search()/查詢case 1:/按照學號查詢for( ) if(stui.number=num ) 輸出學生成績 break; if(stui.number!=num)cout未找到該學生信息!endl;break;case 2:/按照姓名查詢方法同上2)修改學生成績模塊void system:change() /修改for( ) if(stui.number=num) 輸入新的學生成績break; if(stui.number!=num)cout無此學生信息!endl; 3)刪除學生成績void system:del() /刪除輸入新的學生成績for( ) if(stui.number=num) for( ) 用后一個學生信息覆蓋前一個學生信息,學生人數(shù)減少一個 break; 4)將學生成績進行排序模塊void system:px() /排序 switch (k) case 1:/按學生總分排序 for( ) for( ) if( ) 冒泡排序法 break; case 2:/按學生平均分排序方法同上5)各個模塊之間的關系如下: 主程序模塊 添加 查詢 顯示 修改 刪除 排序 按學號 按姓名 按總分 按平均分3.詳細設計3.1聲明一個名為student的結構體類型并且定義變量struct student string name; long number; double shuxue; double yingyu; double cyuyan; double tiyu; double zf; double pjf; ; 3.2 聲明類system且構造函數(shù) class system public: system()n=0; /構造函數(shù)void add();/添加void show();/顯示void search();/查詢void change();/修改void del();/刪除void px();/排序private:student stu1000;/定義一個結構體類型student的變量stu,其最大值為1000int n;3.3 調用添加函數(shù)void system:add()/添加 cout學號:stun.number; cout姓名:; cout數(shù)學:stun.shuxue; cout英語:stun.yingyu; coutc語言:stun.cyuyan; cout體育:stun.tiyu; stun.zf= stun.shuxue+ stun.yingyu+ stun.cyuyan+ stun.tiyu;stun.pjf=( stun.shuxue+ stun.yingyu+ stun.cyuyan+ stun.tiyu)/4; n+;/學生個數(shù)增加一個3.4 調用查詢函數(shù)void system:search()/查詢cout請選擇查詢方式:endl;cout1.按學號查詢endl; cout2.按姓名查詢c; switch (c) case 1:/按照學號查詢long num;cout請輸入要查詢的學號:num;for(i=0;in;i+) if(stui.number=num) cout學號 姓名 數(shù)學 英語 c語言 體育 總分 平均分endl;coutstui.number stui.shuxue stui.yingyu stui.cyuyan stui.tiyu stui.zf stui.pjfendl;break; if(stui.number!=num)cout未找到該學生信息!endl;break;case 2:/按照姓名查詢與按學號查詢相似3.5調用顯示函數(shù)void system:show()/顯示 cout學號 姓名 數(shù)學 英語 c語言 體育 總分 平均分endl; for(int i=0;in;i+) coutstui.number stui.shuxue stui.yingyu stui.cyuyan stui.tiyu stui.zf stui.pjfendl; 3.6 調用修改函數(shù)void system:change() /修改long num; cout請輸入要修改的學生學號:num; for(int i=0;in;i+)if(stui.number=num)cout該學號的學生信息如下:endl; cout學號 姓名 數(shù)學 英語 c語言 體育 總分 平均分endl; coutstui.number stui.shuxue stui.yingyu stui.cyuyan stui.tiyu stui.zf stui.pjfendl;cout請輸入新的學生信息:endl; cout學號:stui.number;stun.number=stui.number; cout姓名:;=; cout數(shù)學:stui.shuxue;stun.shuxue=stui.shuxue; cout英語:stui.yingyu;stun.yingyu=stui.yingyu; coutc語言:stui.cyuyan;stun.cyuyan=stui.cyuyan; cout體育:stui.tiyu;stun.tiyu=stui.tiyu; stui.zf= stui.shuxue+ stui.yingyu+ stui.cyuyan+ stui.tiyu; stui.pjf=( stui.shuxue+ stui.yingyu+ stui.cyuyan+ stui.tiyu)/4; break;if(stui.number!=num)cout無此學生信息!endl;void system:change()來實現(xiàn)對學生成績的修改。實現(xiàn)這個功能用到了先查找即用學號作為處理對象用change ()函數(shù)與已存入的學號作對比,用循環(huán)語句控制查找,如果相同輸出該學生的已存在的信息,再輸入修改信息;如果不是就輸出“未找到”。3.7 調用刪除函數(shù)void system:del() /刪除 long num; cout請輸入要刪除學生的學號,然后按回車確認:num; for(int i=0;in;i+) if(stui.number=num) for(int j=i;jn-1;j+) stuj=stuj+1; n-; /學生人數(shù)減少一個該代碼主要實現(xiàn)了刪除學生成績的功能,首先要找到刪除的是那個學生信息”stuj=stuj+1;”將后面的學生信息向前移。最后再輸出學生成績。cout已成功刪除該學生信息!endl;break; 3.8 調用排序函數(shù)void system:px() /排序cout請選擇排序方式:endl; cout1.按學生總分排序endl; cout2.按學生平均分排序endl; cout3.返回k; switch (k) case 1:/按學生總分排序 student p; /定義一個student類型的變量pfor(int i=0;in;i+) for(int j=0;jn-i;j+) if(stuj.zfstuj+1.zf) p=stuj; stuj=stuj+1; stuj+1=p; 該程序實現(xiàn)了對學生成績的排序,其中“p”為函數(shù)參數(shù)是中間變量,利用該變量實現(xiàn)了兩個數(shù)據(jù)的交換。而利用結構體則可以方便快捷的將一個學生的所有信息進行交換。按照總分的高低來進行的排序。由高到低排序。利用“for”循環(huán)語句的嵌套實現(xiàn)了學生之間總分的比較。cout學號 姓名 數(shù)學 英語 c語言 體育 總分endl;for(int m=0;mn;m+)coutstum.number stum.shuxue stum.yingyu stum.cyuyan stum.tiyu stum.zfendl; break; case 2:/按學生平均分排序 與總分排序類似 break;case 3:return;/返回 3.9 dowhile判斷是否循環(huán)void main() system person; int b; do/do-while循環(huán)語句是先執(zhí)行循環(huán)體里的語句,再進行判斷,如果不符合while條件(即b7)時要執(zhí)行一次循環(huán)體,直到b的值大于或等于7是才退出循環(huán)。 cout*endl; cout 1.添加 6.排 序endl; cout 2.查詢 7.退 出endl; cout 3.顯示 endl; cout 4.修改 endl; cout 5.刪除 endl;cout*endl; coutb; switch(b) case 1: cout請依次輸入該學生的相關信息:endl; person.add(); break; case 2: person.search(); break; case 3: person.show(); break; case 4: person.change(); break; case 5: person.del(); break; case 6: person.px(); break; case 7: cout謝謝使用本系統(tǒng)!endl; while(b7);4.調試分析1)本程序的算法都比較合理,盡可能的減少不必要的麻煩。模塊的劃分也十分的合理,根據(jù)題目的要求,將模塊十分分成六個大的模塊,由于測驗數(shù)據(jù)對象并比較少,所以都是采用最簡便最有效的方式。然后通過主函數(shù)直接調用這些函數(shù)來達到完成所需要的命令。2)由于學生成績數(shù)字不是很多,所以在查找的選擇上沒有使用其他計較麻煩的查找方式而是直接使用比較簡便的、針對查找對象較少的情況下使用的直接查找法。3)但是在定義學生成績管理是直接使用結構體去定義,設定了好幾個數(shù)組,在現(xiàn)實生活中使用,數(shù)據(jù)多的情況下顯得非常麻煩。5.測試結果5.1主菜單圖5-15.2 添加學生成績 圖5-2圖5-3圖5-2,5-3是輸入兩個學生的成績,題目中以依次輸入7個學生成績?yōu)槔?.3 查詢學生成績圖5-4 按學號查詢圖5-5 按姓名查詢5.4顯示學生成績 圖5-65.5修改學生成績圖5-7 圖5-8 顯示修改后的所有學生成績5.6刪除學生成績圖5-95.7對學生成績排序圖5-10 按總分排序圖5-11 按平均分排序5.8退出圖5-125.9源程序文件名清單#include #include 6附錄總 結通過這次的課程設計,我鞏固了以往學過的知識。第一次嘗試著將以前學過的東西按照自己的想法寫出來。雖然寫的代碼還顯得幼稚也不成熟,但我覺得這是一次新的嘗試。對于自己開說也是一個挑戰(zhàn)。培養(yǎng)了編程能力,為后續(xù)課程的學習提供知識和能力支撐。回顧起此次課程設計,至今我們仍感慨頗多綜合起來,主要體現(xiàn)在以下幾個方面:首先,對數(shù)據(jù)結構的掌握還不夠。雖然完成了程序,但是只用到了基本的結構體、數(shù)組和類,以及一些簡單的循環(huán)語句,像for循環(huán),dowhile語句和switchcase選擇語句。只覆蓋了書上很少的知識,例如鏈表,指針之類的知識都沒有用到。其次,在程序整體的設計上還不夠完善,編寫的程序是通過手動輸入學生的各個成績,調試時只是輸入七組數(shù)據(jù)做實驗,一旦有幾千個數(shù)據(jù)通過這樣的程序來運行時非常不可取的。但是,我覺得該程序還有很大的改進空間,譬如可以用多文件做,這樣功能更強大,也便于以后更好地改進和完善程序;而在程序的內容方面,還能增加更多功能,以滿足不同需要的各種要求。當然,值得欣慰的是,該程序基本完成里設計要求,并能順利運行,界面清晰易理解,且具備各項基本功能,易于操作。比如在做查詢的時候,按照學號、姓名查詢,做排序的時候,按照總分、平均分排序的思想就考慮的非常全面,基本能夠滿足不同使用者的需求。在寫課程設計的過程中,和同學之間的交流也讓我受益良多。在寫代碼時教了我許多也啟發(fā)了我很多。讓我能夠一遍遍的不斷完善。通過一個學期的學習,我認為要學好數(shù)據(jù)結構這門課程,不僅要認真閱讀課本知識,更重要的是要通過上機實踐才可以學以致用。總之,這次課程設計是我真正的去做的一個系統(tǒng),肯定會有
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年人教版(2024)九年級歷史上冊月考試卷含答案
- 2025年湘教版高三歷史下冊階段測試試卷含答案
- 2025年湘教版選修3歷史上冊階段測試試卷含答案
- 2025年浙教新版八年級地理上冊階段測試試卷含答案
- 2025年蘇科新版選擇性必修3生物下冊階段測試試卷
- 2025年統(tǒng)編版2024高一數(shù)學下冊月考試卷
- 2025年華東師大版九年級地理下冊月考試卷含答案
- 2025年浙教新版七年級生物下冊階段測試試卷含答案
- 2025年湘教新版選擇性必修3語文下冊階段測試試卷
- 2025年湘師大新版九年級歷史下冊月考試卷
- 中央2025年國務院發(fā)展研究中心有關直屬事業(yè)單位招聘19人筆試歷年參考題庫附帶答案詳解
- 2024年09月北京中信銀行北京分行社會招考(917)筆試歷年參考題庫附帶答案詳解
- 外呼合作協(xié)議
- 小學二年級100以內進退位加減法800道題
- 保險公司2025年工作總結與2025年工作計劃
- 2024年公司領導在新年動員會上的講話樣本(3篇)
- 眼科護理進修專題匯報
- 介入手術室感染控制管理
- GB/T 33629-2024風能發(fā)電系統(tǒng)雷電防護
- GB/T 19885-2005聲學隔聲間的隔聲性能測定實驗室和現(xiàn)場測量
- 高標準基本農(nóng)田建設規(guī)范培訓課件
評論
0/150
提交評論