學生成績管理系統(tǒng)綜合設(shè)計實訓報告_第1頁
學生成績管理系統(tǒng)綜合設(shè)計實訓報告_第2頁
學生成績管理系統(tǒng)綜合設(shè)計實訓報告_第3頁
學生成績管理系統(tǒng)綜合設(shè)計實訓報告_第4頁
學生成績管理系統(tǒng)綜合設(shè)計實訓報告_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1 摘要:隨著信息技術(shù)的快速發(fā)展, 信息的自動化管理變得越來越重要。本題目所設(shè)計的學生成績管理系統(tǒng),實現(xiàn)了學生信息和成績的錄入,查詢,刪除,顯示,保存,讀寫文件,復(fù)制文件,排序,追加記錄,索引,分類合計等功能。使得學生成績的管理更加方便和快捷。一實訓目的了解軟件工程中的一些系統(tǒng)分析,模塊分析,代碼設(shè)計的概念, 利用 win-tc實現(xiàn)學生成績管理系統(tǒng)的錄入、查詢、刪除、統(tǒng)計等基本擦作,使用單鏈表結(jié)構(gòu)實現(xiàn)學生成績管理, 了解數(shù)據(jù)庫管理的基本功能, 掌握 c語言中的結(jié)構(gòu)體、 指針、函數(shù)(系統(tǒng)函數(shù)、自定義函數(shù)) 、文件操作等知識。通過對系統(tǒng)的分析和設(shè)計,進一步鞏固 c語言的學習,以提高對開發(fā)環(huán)境的進一

2、步認識和綜合編程的能力。(1)綜合應(yīng)用所學知識的能力(2)模塊 haunted 程序設(shè)計能力(3)項目組協(xié)作開發(fā)能力(4)項目文檔開發(fā)能力(5)項目管理能力(6)項目測試、測試能力二需求分析1. 系統(tǒng)功能:本實訓的題目是學生成績管理系統(tǒng),實現(xiàn)的是對學生成績的系統(tǒng)管理。包括學生信息的創(chuàng)建、刪除、插入或添加、保存、格式化輸出;學生信息,成績的修改或更新、成績的統(tǒng)計、匯總、排序。檢索及輸出。2. 對系統(tǒng)通過單鏈表實現(xiàn)對學生成績的管理。具有如下功能:(1)輸入記錄(2)從表中刪除記錄(3)按照姓名查找所有記錄(4)將單鏈表中的記錄保存到文件(5)從文件中讀入記錄(6) 計算所有學生的總分和平均分(7)

3、插入記錄到表中(8)復(fù)制文件(9)排序(10)添加記錄到文件中(11)索引(12)分類合計四,系統(tǒng)環(huán)境2 1. 運行環(huán)境硬件環(huán)境: cpu 80386 內(nèi)存 32mb 、硬盤 200mb 以上微機軟件環(huán)境: ms-dos 5.0以上操作系統(tǒng) /windows 9x 以上系統(tǒng) turbo c2.0集成環(huán)境,ucdos 漢字系統(tǒng) visual c+以上圖:上圖是學生信息管理系統(tǒng)的流程圖。(1)數(shù)據(jù)結(jié)構(gòu)鏈表是線性表中的一種,線性表中分為順序存儲結(jié)構(gòu)和鏈式結(jié)構(gòu)。線性表的順序存儲結(jié)構(gòu)的特點是邏輯關(guān)系上相鄰的兩個元素物理位置上相鄰,因此可以隨機查找表中的沒一個元素, 。typedef struct z c

4、har no 11 char name 15 int score n float sum 3 float average ; int order; struct z1*next; student; (2) main()主函數(shù)主函數(shù)是程序的入口, 采用模塊化的設(shè)計。 首先在主程序種打印歡迎界面,聲明一些必要的變量, 作為一無限循環(huán)程序, 循環(huán)體作為一開關(guān)語句, 該語句設(shè)置一個斷點,其中條件值通過調(diào)用過主菜單函數(shù)得到的返回值。根據(jù)該值, 調(diào)用相應(yīng)的功能函數(shù)。同時設(shè)置一個斷點,當返回值為一定條件是結(jié)束程序。(3)memnu_select() 函數(shù)為了美化界面,制作單邊框窗口,窗口中顯示主菜單。通過p

5、utch ()輸出圖形符號的 ascii 碼值(十六進制),到達顯示的目。 putch(0 xda) putch(0 xc4) 對菜單的選項的選擇是利用移動光標按回車鍵進行選擇。 4 init()初始化單鏈表需要一個頭指針來指向表的第一個結(jié)點面對單鏈表的訪問是從頭指針開始的。初始化單鏈表為空,用null表示,該值在文件stdlib.h中定義為常數(shù)0. 5 creat ()創(chuàng)建鏈表當用戶選擇輸入增加記錄后,進入該函數(shù),輸入學生信息,并把信息輸入鏈表。在輸入過程中,有相關(guān)的提示。當輸入 的時候,會出現(xiàn)彈出到主菜單,在生成單鏈時,每次新輸入的結(jié)點都放在表頭,這樣最先輸入的結(jié)點存放在表頭,這樣最先輸入

6、的結(jié)點存放在最后。(7).append() 追加記錄到文件尾當想要在文件尾增加一條記錄時使用該函數(shù),首先輸入新結(jié)點信息,然后輸入要追加的文件名,按追加方式打開文件,將新信息寫入文件。4 (8).insert() 插入結(jié)點在指定結(jié)點前面插入新結(jié)點,申請空間得到指針info,輸入新結(jié)點信息,存放 info 中,設(shè)鏈表頭指針為h,p 為指定結(jié)點的指針, q 為 p 的前驅(qū)指針。從頭結(jié)點開始循環(huán)移動指針p 查找指定結(jié)點,查找和插入時分兩種情況處理:1).指針 p 為空,如果 p 等于 h,說明鏈表為空,則新結(jié)點即為頭結(jié)點,修改指針 h=info。否則,說明表中沒有指定結(jié)點,則新結(jié)點插入在表尾部,此是q

7、 把指的結(jié)點是最后一個結(jié)點,所以修改指針q-next=info。2).指針 p 不為空,如果 p 等于 h,說明新結(jié)點插入在當前第一個結(jié)點之前,為新的頭結(jié)點,修改指針info-next=p,h=info。否則,說明新結(jié)點的位置應(yīng)在q和 p 兩個結(jié)點之間,修改指針info-next=p,q-next=info。(9).print()顯示所有記錄采用順序訪問的方法顯示和查找記錄,定義一個指向結(jié)點的臨時變量p,5 初值為單鏈表的頭指針, 輸出指針所記錄的數(shù)據(jù)后, 將指針后移一個記錄, 直到p 指針值為空,則所有記錄輸出完畢。(10).search() 查找結(jié)點按照姓名來查找記錄。 從頭結(jié)點開始順序查

8、找, 若沒有記錄顯示沒有, 遇到一個匹配的記錄則顯示此記錄,后到尾結(jié)點結(jié)束。(11).save()保存記錄到文件將學生信息保存到指定的文件中。按照文件讀寫要求, 先定義一個只想文件的指針,輸入要保存的磁盤文件名, 如果輸入的是絕對路徑, 則文件保存到指定的位置;如果只要文件名,則文件保存在tc 默認的路徑。如果文件打不開,則退出程序,否則選擇一種寫文件方式,打開文件。如果文件打不開,則退出程序,否則選擇一種寫入文件方式,從鏈表的頭指針。開始,順序?qū)⒂涗泴懭胛募?直到所有記錄寫完, 標志就是移動指針空。(12).load()從文件中加載記錄按照文件讀寫要求,先定義一個指向文件的指針,輸入要讀入

9、數(shù)據(jù)的磁盤文件名,然后確定文件的打開方式。如果文件打不開,則退出函數(shù),否則選擇一種讀文件方式,從文件頭開始,將記錄寫入內(nèi)存,直到文件尾。文件打開方式和讀入方式的確定要依據(jù)輸出文件是二進制文件,塊寫操作,讀入也應(yīng)設(shè)置為二進制打開方式,塊讀取方式。每讀入一條記錄,都要做好指鏈接關(guān)系,本函數(shù)將新結(jié)點鏈接到當前鏈表的尾部,鏈表的順序和文件保存的順序一致。(13).copy()備份文件將文件讀寫功能結(jié)合到一起, 先輸入源文件名, 再輸入目標文件名, 然后利用6 文件讀寫函數(shù)將源文件中的信息寫到目標文件中,以達到備份文件的目的。(14).computer()計算所有學生的課程的總成績成績和總平均成績(15

10、).sort()排序本函數(shù)實現(xiàn)按總分排序的功能。在算法上,選擇直接插入算法,即:每步將一個待排序的按其排序碼值的大小插到前面已經(jīng)排好序的表中,直到全部插入為止。先將鏈表的頭結(jié)點看作是已經(jīng)排好序的結(jié)點,然后取下一個結(jié)點作為待排序的結(jié)點,插入到已排好序的表中。具體做法為:(1.先將原表頭結(jié)點作為新排好序表的頭結(jié)點h,原表下一個節(jié)點作為原表頭結(jié)點 h1。(2.原表頭結(jié)點為待排序結(jié)點, 將其總分與新表結(jié)點的總分進行比較,如果待排序結(jié)點總分大,則插在表頭,否則插在其后,原表頭結(jié)點移一位。(3.重復(fù)第二步, 即將原表頭結(jié)點的總分與新表結(jié)點的總分進行比較,如果待排序結(jié)點總分小,則移動新表指針,直到找到合適的

11、位置將其插入。當原表為空時,所有結(jié)點排序完畢。排好序后,系統(tǒng)自動將名次數(shù)據(jù)寫入結(jié)點數(shù)據(jù)域的order中。(16).index()索引定義臨時工指針后,將原表的頭指針的下一個結(jié)點作為指針,再使第一個結(jié)點定義為新表的頭結(jié)點。當原表不為空時,進行排序。7 (17).total()分類合計追加班別信息,對各班的總成績和總平均成績進行平均成績統(tǒng)計并顯示。(18).exit() 退出程序4.系統(tǒng)的界面設(shè)計(1) 主菜單(2) 創(chuàng)建鏈表(3)刪除記錄8 (4)顯示全部記錄(5) 查找記錄9 (6)保存文件(7)讀文件(8)計算總分和平均分10 (9)插入記錄(10)復(fù)制文件11 (11)排序(12)追加記錄

12、(13)索引12 (14)分類合計五系統(tǒng)實現(xiàn)1.使用的語言c 語言2.模塊代碼實現(xiàn)(以下舉3 例為參考)模塊 1 模塊名稱:創(chuàng)建鏈表輸入:學號,姓名,成績輸出:輸出一個二維表模塊代碼:student *create() int i;float s; student *h=null,*info; for(;) 13 info=(student *)malloc(sizeof(student); if(!info) printf(nout of memory); return null; inputs(enter no:,info-no,11); if(info-no0=) break; inpu

13、ts(enter name:, info-name,15); printf(please input %d scoren,n); s=0; for(i=0;iscorei); if(info-scorei100|info-scoreiscorei100|info-scoreiscorei; info-sum=s; info-average=(float)s/n; info-order=0; info-right=h; h=info; return(h); 模塊 2 模塊名稱:從表中刪除一個記錄輸入:輸入需要刪除的學生學號輸出:輸出要刪除學生信息二維表模塊代碼:student *delete(s

14、tudent *h) student *p,*q; char s11; clrscr(); printf(please delete non); scanf(%s,s); 14 q=p=h; while(strcmp(p-no,s)&p!=null) q=p; p=p-right; if(p=null) printf(nlist no %s studentn,s); else printf(*have found*n); printf(|no | name |sc1 |sc2 |sc3 | sum| ave |order|n); printf(|-|-|-|-|-|-|-|-|n);

15、printf(|%-11s|%-15s|%4d|%4d|%4d|%-6.2f|%-6.2f|%5d|n,p-no, p-name,p-score0,p-score1,p-score2,p-sum, p-average,p-order); printf(*end*n); getch(); if(p=h) h=p-right; else q-right=p-right; free(p); printf(n have delete no %s studentn,s); printf(do not forget saven); return(h); 模塊 3 模塊名稱:按姓名查找學生記錄輸入:輸入學生

16、姓名輸出:以二維表的形式輸出查詢到的信息模塊代碼:void search(student*h) student *p; char s15; clrscr(); printf(please enter name for searchn); scanf(%s,s); 15 p=h; while(strcmp(p-name,s)&p!=null) p=p-right; if(p=null) printf(nlist no %s studentn,s); else printf(nn*have found*n); printf(|no | name |sc1 |sc2 |sc3 | sum|

17、ave |order|n); printf(|-|-|-|-|-|-|-|-|n); printf(|%-11s|%-15s|%4d|%4d|%4d|%-6.2f|%-6.2f|%5d|n,p-no, p-name,p-score0,p-score1,p-score2,p-sum,p-average,p-order); printf(*end*n); 3.集成測試各個模塊間的相互關(guān)聯(lián)和借口測試1. 創(chuàng)建鏈表、顯示鏈表、從鏈表中刪除信息、按名查找、插入之間的集成測試當創(chuàng)建完成一個鏈表是,按顯示鏈表,則以二維表的形式顯示創(chuàng)建鏈表的信息;當要從鏈表刪除一個學生的信息時,輸入要刪除學生的學號, 顯示刪

18、除成功, 再按顯示鏈表,則顯示刪除后的信息;當要查找信息時,輸入查找學生的姓名,則顯示要查找的學生信息; 插入學生信息時, 輸入在某個學生學號之前插入,再輸入插入學生的信息,插入完成后,按顯示,則顯示插入完成后的鏈表。以上測試表面:創(chuàng)建鏈表、顯示鏈表、從鏈表中刪除信息、按名查找、插入之間的接口和聯(lián)系是正確的。說明該集成測試成功。2. 創(chuàng)建鏈表、顯示、保存、載入、排序、分類合計、追加之間的集成測試當完成了一個鏈表的創(chuàng)建后,按顯示,在窗口中顯示該鏈表的信息;排序后,按顯示,此時會顯示排序后的信息,在排序欄會有學生成績名次;分類合計后,按顯示,此時會顯示各個班級的總分和均分;按保存時,會提醒你輸入保

19、存路徑,若路徑無誤,回車后保存成功;按加載,提醒輸入加載路徑,若輸入路徑無誤,則加載成功,且按顯示后悔顯示載入的學生信息;排序分類顯示均正常;追加,會提醒輸入添加的學生信息, 輸入完成后,提醒輸入追加文件, 若文件路徑無誤,則追加成功,按顯示,則顯示更新后的信息。以上測試說明創(chuàng)建鏈表、顯示、保存、載入、分類合計、追加之間的聯(lián)系正常,接口無誤。說明測試成功!16 六、總結(jié)這次實訓, 我主要是負責前期工作的準備,了解相關(guān)的鏈表形式,數(shù)據(jù)結(jié)構(gòu),函數(shù)類型等的研究。下面我來總結(jié)一下這幾個發(fā)那個面的感想。數(shù)據(jù)結(jié)構(gòu):鏈表是線形表的一種,線形表分為順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)。這二者的共同點就是可以對表的添加,

20、刪除,查找,排序等操作比較方便,所以我們采用的是鏈表的形式來存儲學生的相關(guān)信息。線性順序存儲結(jié)構(gòu)的特點是邏輯關(guān)系上的相鄰的兩個元素物理位置上也相鄰,所他可以隨機存取表中的任一元素。鏈式存儲結(jié)構(gòu)的特點是用一組任意的存儲單元存儲線形表的數(shù)據(jù)元素。我說一下在創(chuàng)建鏈表的時候的相關(guān)注意的事項,我們一般是用creat()函數(shù)來創(chuàng)建鏈表的,當用戶選擇輸入添加的記錄后,進入該函數(shù),輸入了學生的序號,學號,姓名,還有相關(guān)的信息后。并在這個過程中把信息加入了鏈表。注意的是,在輸入的過程中,有相關(guān)的提示,入學號我們先定的是10 位,字符型。同時對某些信息做了限定,就拿分數(shù)來說吧,如果輸入的分數(shù)不在0100 之間的話,系統(tǒng)就

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論