數(shù)據(jù)結構課程設計——成績管理系統(tǒng)_第1頁
數(shù)據(jù)結構課程設計——成績管理系統(tǒng)_第2頁
數(shù)據(jù)結構課程設計——成績管理系統(tǒng)_第3頁
數(shù)據(jù)結構課程設計——成績管理系統(tǒng)_第4頁
數(shù)據(jù)結構課程設計——成績管理系統(tǒng)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、guangxi university of science and technology課程設計報告課程名稱: 數(shù)據(jù)結構 課題名稱: 成績管理系統(tǒng)的設計 姓 名: 王永源 學 號: 院 系: 計算機學院 專業(yè)班級: 通信121 指導教師: 完成日期: 2013年12月15日 目 錄 第1部分 課程設計報告3第1章 課程設計目的3第2章 課程設計內(nèi)容和要求42.1 問題描述42.2 設計要求4第3章 課程設計總體方案及分析43.1 問題分析43.2 概要設計53.3 模塊結構圖63.4 流程圖63.5 詳細設計63.6 調(diào)試分析83.7 測試結果83.8 參考文獻10第2部分 課程設計總結10附

2、錄(源代碼)12第1部分 課程設計報告第1章 課程設計目的數(shù)據(jù)結構作為一門計算機專業(yè)必修的學科之一,主要研究數(shù)據(jù)的各種邏輯結構和存儲結構,以及對數(shù)據(jù)的各種基本操作。一般來說,大體上可以分為三個方面的內(nèi)容:數(shù)據(jù)的邏輯結構;數(shù)據(jù)的物理存儲結構;對數(shù)據(jù)的操作(或算法)。通常,算法的設計取決于數(shù)據(jù)的邏輯結構,算法的實現(xiàn)取決于數(shù)據(jù)的物理存儲結構。數(shù)據(jù)結構是信息的一種組織方式,其目的是為了提高算法的效率,它通常與一組算法的集合相對應,通過這組算法集合可以對數(shù)據(jù)結構中的數(shù)據(jù)進行某種操作。作為計算機專業(yè)的學生,我們應該很好的掌握這門技術。在課堂上,我們學到的只是理論知識,很少有過自己動手實踐的機會。那么,課程

3、設計就是為解決這個問題的一個很好平臺。 數(shù)據(jù)結構這門課具有比較強的理論性,同時也具有較強的實踐性。其中課程設計就是是一個重要的教學環(huán)節(jié)。通過課程設計,我們需要達到以下目的: 了解并掌握數(shù)據(jù)結構與算法的設計方法,具備初步的獨立分析和設計能力,并進一步學習 和掌握c語言基礎、數(shù)據(jù)結構算法基礎; 初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設計、程序編碼、測試等基本方法和技能; 提高綜合運用所學的理論知識和方法獨立分析和解決問題的能力; 通過上機操作和調(diào)試程序,培養(yǎng)用學到的書本知識解決實際問題的能力;培養(yǎng)實際工作所需要的動手能力;培養(yǎng)以科學理論和工程上能力的技術,規(guī)范地開發(fā)大型、復雜、高質(zhì)量的應用軟件和系統(tǒng)

4、軟件具有關鍵性作用; 訓練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進行軟件開發(fā),培養(yǎng)軟件工作者所應具備的科學的工作方法和作風;第2章 課程設計內(nèi)容和要求2.1問題描述: 學生成績管理系統(tǒng)是學校教務管理的重要組成部分,處理信息量很大。該題目是對學生的成績管理做簡單的模擬,其中學生信息包括學號、姓名與成績。成績分為課程1成績、課程2成績、課程3成績、課程4成績和總成績及平均成績。另外還需統(tǒng)計出成績優(yōu)秀的學生人數(shù)。該成績管理系統(tǒng)要求可以登記學生成績、查詢學生成績、插入學生成績、刪除學生成績等功能。2.2設計要求:1. 用鏈表實現(xiàn)應用系統(tǒng),完成鏈表的建立以及鏈表中信息的插入、刪除、查找、修改、輸出等操作。2.建

5、立學生成績單鏈表,鏈表中每個節(jié)點由五個域組成,分別是學號、姓名、性別、成績、存放下一個結點地址的next域。3. 通過菜單選擇操作方式完成以下功能:(1) 登記學生成績;(2) 查詢學生成績;(3) 插入學生成績;(4) 刪除學生成績;(5) 輸出學生成績;(6) 統(tǒng)計優(yōu)秀學生人數(shù); 第3章 課程設計總體方案及分析3.1 問題分析:該題目涉及到單鏈表的各種操作,包括單鏈表的建立,結點的查找、插入、刪除等基本運算。首先建立學生成績單鏈表,鏈表中每個節(jié)點由五個域組成,分別是學號、姓名、性別、成績、存放下一個結點地址的next域。然后將要求完成的各項功能寫成函數(shù),登記學生成績對應建立單鏈表的功能。由

6、于該系統(tǒng)處理的信息量大,采用單鏈表的形式容易處理插入、刪除學生信息,故采用單鏈表來存儲學生信息,用結構體類型定義每個學生記錄,這樣單鏈表中每個結點可描述為:typedef struct nodeint num;char namemallen;char sex20int score1;int score2;int score3;int score4;int total;double average;struct node *next;node;3.2 概要設計本項目的模塊結構如圖。圖中方塊表示函數(shù),方塊中指出函數(shù)名,箭頭表示函數(shù)間的調(diào)用關系,虛線表示文件的組成。學生成績管理系統(tǒng)程序包含以下函數(shù):

7、(1) node *create(node *h,int n):創(chuàng)建學生成績信息表。(2) void find(node *h):查找學生成績。(3) void insert(node *h):插入學生信息。(4) void shanchu(node *h):刪除學生信息。(5) void youxiu(node *p):統(tǒng)計優(yōu)秀學生人數(shù)。(6) void output(node *h):輸出全部學生信息。 3.3 模塊結構圖: 圖3.3.13.4 流程圖圖3.4.13.5 詳細設計1. 創(chuàng)建學生成績信息表node *create(node *h,int n)node *p,*r;int i;

8、h=(node *)malloc(sizeof(node);h-next=null;r=h;for(i=1;inext;q=(node *)malloc(sizeof(node);printf(請輸入插入學生的學號:);scanf(%d,&q-num);printf(請輸入學生的姓名:);scanf(%s,q-name);printf(請輸入學生的第1門成績:);scanf(%d,&q-score1);printf(請輸入學生的第2門成績:);scanf(%d,&q-score2);printf(請輸入學生的第3門成績:);scanf(%d,&q-score3);printf(請輸入學生的第4

9、門成績:);scanf(%d,&q-score4);q-total=q-score1+q-score2+q-score3+q-score4;q-average=q-total/4;q-next=null;while(p!=null)r=p;p=p-next;/whiler-next=q;/r=r-next;/insert3. 查找學生成績:void find(node *h)4.刪除學生信息:void shanchu(node *h) 5. 統(tǒng)計優(yōu)秀學生人數(shù):void yoxiu(node *p)6.輸出全部學生信息:void output(node *h)注:具體源代碼見附錄3.6 調(diào)試分析

10、 (1) 開始執(zhí)行程序,系統(tǒng)創(chuàng)建鏈表,進入輸出的選擇界面; (2)按需要進行的操作選擇輸入相應的選項,系統(tǒng)執(zhí)行輸入的字符命令; (3)輸出相應的數(shù)據(jù); (4)測試無誤,完成測試;3.7 測試結果1. 首先,進入成績管理系統(tǒng)的界面 圖3.7.1 2.輸入“1”,進入成績登記界面,登記成績 .圖3.7.2 3.輸入“5”,輸出所有所登記學生的成績及平均成績 圖3.7.3 4.輸入“6”,輸出優(yōu)秀學生總人數(shù)及其各自的信息 圖3.7.4 5.輸入“2”,查詢學生成績 圖3.7.5 6.輸入“3”,插入學生成績 圖3.7.6 7.,輸入“4”,刪除學生成績 圖3.7.7 3.8 參考文獻 【1】 劉勇

11、郭韶升 張煒 周麗雅 數(shù)據(jù)結構實驗與實訓教程 國防工業(yè)出版社 2011年7月 【2】 嚴蔚敏 吳偉民 數(shù)據(jù)結構(c語言版) 清華大學出版社 2007年 【3】 譚浩強 c語言程序設計(第四版) 清華大學出版社 2010年6月 第2部分 課程設計總結為了備考4級,花了大量的時間復習,本想說終于松了一口氣。但回想了一下,16周還有更重的任務,數(shù)據(jù)結構課程設計及考試、信號與系統(tǒng)測試等。所以,考完4級后我立馬轉(zhuǎn)身把時間投入到課程設計中。整個過程花了一周多的時間才完成。回想過去的一周,當我看到題目的時候,一頭霧水,什么都不懂,回想往事,忙于學生會工作、班級工作等我忽視了學習這一塊,也就在此時我認識到了學

12、習刻不容緩的真實性??床欢趺崔k?我去了圖書館找資料,學校的圖書是多,但關于數(shù)據(jù)結構這一塊,雖然書不算少,但自我感覺對本次課程設計有用的不多,而且還是很舊的。在圖書館找了許久,終于找到了我設計的源泉數(shù)據(jù)結構實驗與實訓教程(國防工業(yè)出版社),從此開始了我的數(shù)據(jù)結構課程設計之路。我的c語言基礎不好,興趣也不在程序這一塊,所以剛開始的時候有很大的難度,在這里,我不得不感謝大三計y的一個學長和跟我同在一個學生會部門同屆計y的一個同學。他們給予了我很大的幫助,也就是在他們的幫助,我順利地做好了課程設計,當然,最重要的是我的不懈努力。 通過本次的課程設計,我進一步學習和掌握了c語言、數(shù)據(jù)結構的基礎知識和理

13、論,各方面都有了一定的收獲。尤其是c語言的進步讓我深刻的感受到任何所學的知識都需要實踐,沒有實踐就無法真正理解這些知識以及掌握它們,使其成為自己的財富。在理論學習和上機實踐的各個環(huán)節(jié)中,通過自主學習和請教學長及同學,我收獲了不少。當然也遇到不少的問題,也正是因為這些問題引發(fā)的思考給我?guī)Я耸斋@。在這段時間里,我對for、while等的循環(huán)函數(shù)用法更加熟悉,逐漸形成了較好的編程習慣。在學長的指導幫助下,同學們課余時間的討論中,這些問題都一一得到了解決。在程序的調(diào)試能力上,無形中得到了許多的提高。例如:頭文件的使用,變量和數(shù)組的范圍問題,定義變量時出現(xiàn)的問題等等。在實際的上機操作過程中,不僅是讓我們

14、了解數(shù)據(jù)結構的理論知識,更重要的是培養(yǎng)解決實際問題的能力,所以相信通過此次課程設計可以提高我們分析設計能力和編程能力,為后續(xù)課程的學習及實踐打下良好的基礎。在這次短短的課程實踐里,我就清楚的認識到實踐是檢驗真理的正確性,我學會了如何解決現(xiàn)實問題,如何將理論知識應用到實際問題上??偟膩碚f,我認為課程設計很有必要,也很重要。附 錄/ 成績管理系統(tǒng)2.cpp : 定義控制臺應用程序的入口點。/#include stdafx.h/ 成績系統(tǒng).cpp : 定義控制臺應用程序的入口點。/#include#include#include#define maxlen 100#define null 0type

15、def struct nodeint num;char namemaxlen;char sex20;int score1;int score2;int score3;int score4;int total;double average ;struct node *next;node;/*創(chuàng)建學生成績信息表*/node *create(node *h,int n)node *p,*r;int i;h=(node *)malloc(sizeof(node);h-next=null;r=h;for(i=1;inum);printf(請輸入學生的姓名:);scanf(%s,p-name);print

16、f(請輸入學生的性別:);scanf(%s,p-sex);printf(請輸入學生的第1門成績:);scanf(%d,&p-score1);printf(請輸入學生的第2門成績:);scanf(%d,&p-score2);printf(請輸入學生的第3門成績:);scanf(%d,&p-score3);printf(請輸入學生的第4門成績:);scanf(%d,&p-score4);p-total=p-score1+p-score2+p-score3+p-score4;p-average=1.0*p-total/4;p-next=null;r-next=p;r=r-next;/forretur

17、n h;/createvoid add(node *h)node *p,*q,*r;/r=h;p=h-next;q=(node *)malloc(sizeof(node);printf(請輸入插入學生的學號:);scanf(%d,&q-num);printf(請輸入學生的姓名:);scanf(%s,q-name);printf(請輸入學生的性別:);scanf(%s,q-sex);printf(請輸入學生的第1門成績:);scanf(%d,&q-score1);printf(請輸入學生的第2門成績:);scanf(%d,&q-score2);printf(請輸入學生的第3門成績:);scanf

18、(%d,&q-score3);printf(請輸入學生的第4門成績:);scanf(%d,&q-score4);q-total=q-score1+q-score2+q-score3+q-score4;q-average=1.0*q-total/4;q-next=null;while(p!=null)r=p;p=p-next;/whiler-next=q;/r=r-next;/addvoid find(node *h)int k;node *p;p=h-next;printf(請輸入要查找學生的學號:n);scanf(%d,&k);while(p&p-num!=k)p=p-next;if(p)p

19、rintf(學號t姓名t性別t成績1t成績2t成績3t成績4t總成績t平均成績n);printf(%dt%st%st%dt%dt%dt%dt%dt%0.2lfn,p-num,p-name,p-sex,p-score1,p-score2,p-score3,p-score4,p-total,p-average);/ifelseprintf(沒找到!n);/findvoid delete(node *h)int k;node *p,*q;q=h;p=h-next;printf(請輸入待刪除學生的學號:);scanf(%d,&k);while(p&p-num!=k)q=p;p=p-next;/whil

20、eif(p)q-next=p-next;free(p);elseprintf(該學生信息不存在,無法刪除!n);/deletevoid list(node *h)node *p;p=h-next;printf(學號t姓名t性別t成績1t成績2t成績3t成績4t總成績t平均成績n);while(p!=null)printf(%dt%st%st%dt%dt%dt%dt%dt%0.2lfn,p-num,p-name,p-sex,p-score1,p-score2,p-score3,p-score4,p-total,p-average);p=p-next;/listvoid youxiu(node *p)node *q=p-next ;int n=0;while(q!=null)if(q-average =90)n+;q=q-next;q=p;printf(優(yōu)秀學生總數(shù):%dn,n); printf(優(yōu)秀學生詳細信息如下:n); printf(學號t姓名t性別t成績1t成績2t成績3t成績4t總成績t平均成績n); while(q!=null) if(q-average =90)printf(%dt%st%st%dt%dt%dt%dt%dt%0.2lfn,

溫馨提示

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

評論

0/150

提交評論