何文培-241311030-綜合設(shè)計(jì)實(shí)訓(xùn)報(bào)告終極版 - 副本 (2)_第1頁(yè)
何文培-241311030-綜合設(shè)計(jì)實(shí)訓(xùn)報(bào)告終極版 - 副本 (2)_第2頁(yè)
何文培-241311030-綜合設(shè)計(jì)實(shí)訓(xùn)報(bào)告終極版 - 副本 (2)_第3頁(yè)
何文培-241311030-綜合設(shè)計(jì)實(shí)訓(xùn)報(bào)告終極版 - 副本 (2)_第4頁(yè)
何文培-241311030-綜合設(shè)計(jì)實(shí)訓(xùn)報(bào)告終極版 - 副本 (2)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 18 綜合設(shè)計(jì)實(shí)訓(xùn)報(bào)告實(shí)訓(xùn)項(xiàng)目:學(xué)生成績(jī)管理系統(tǒng)學(xué) 院:信息工程學(xué)院專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)班 級(jí):2011級(jí)計(jì)科本(1)班學(xué) 號(hào):24131101030學(xué)生姓名:何文培 同組成員:張德利 石明虎 何文培指導(dǎo)老師:張仕學(xué) 2014 年 6月 20 日 摘要:隨著信息技術(shù)的快速發(fā)展,信息的自動(dòng)化管理變得越來(lái)越重要。本題目所設(shè)計(jì)的學(xué)生成績(jī)管理系統(tǒng),實(shí)現(xiàn)了學(xué)生信息和成績(jī)的錄入,查詢,刪除,顯示,保存,讀寫文件,復(fù)制文件,排序,追加記錄,索引,分類合計(jì)等功能。使得學(xué)生成績(jī)的管理更加方便和快捷。一 實(shí)訓(xùn)目的了解軟件工程中的一些系統(tǒng)分析,模塊分析,代碼設(shè)計(jì)的概念,利用WIN-TC實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)的錄

2、入、查詢、刪除、統(tǒng)計(jì)等基本擦作,使用單鏈表結(jié)構(gòu)實(shí)現(xiàn)學(xué)生成績(jī)管理,了解數(shù)據(jù)庫(kù)管理的基本功能,掌握C語(yǔ)言中的結(jié)構(gòu)體、指針、函數(shù)(系統(tǒng)函數(shù)、自定義函數(shù))、文件操作等知識(shí)。通過(guò)對(duì)系統(tǒng)的分析和設(shè)計(jì),進(jìn)一步鞏固C語(yǔ)言的學(xué)習(xí),以提高對(duì)開發(fā)環(huán)境的進(jìn)一步認(rèn)識(shí)和綜合編程的能力。(1) 綜合應(yīng)用所學(xué)知識(shí)的能力(2) 模塊haunted程序設(shè)計(jì)能力(3) 項(xiàng)目組協(xié)作開發(fā)能力(4) 項(xiàng)目文檔開發(fā)能力(5) 項(xiàng)目管理能力(6) 項(xiàng)目測(cè)試、測(cè)試能力二 需求分析1.系統(tǒng)功能:本實(shí)訓(xùn)的題目是學(xué)生成績(jī)管理系統(tǒng),實(shí)現(xiàn)的是對(duì)學(xué)生成績(jī)的系統(tǒng)管理。包括學(xué)生信息的創(chuàng)建、刪除、插入或添加、保存、格式化輸出;學(xué)生信息,成績(jī)的修改或更新、成績(jī)的

3、統(tǒng)計(jì)、匯總、排序。檢索及輸出。2.對(duì)系統(tǒng)通過(guò)單鏈表實(shí)現(xiàn)對(duì)學(xué)生成績(jī)的管理。具有如下功能: (1)輸入記錄 (2)從表中刪除記錄 (3)按照姓名查找所有記錄 (4)將單鏈表中的記錄保存到文件 (5)從文件中讀入記錄(6)計(jì)算所有學(xué)生的總分和平均分(7)插入記錄到表中(8)復(fù)制文件(9)排序(10)添加記錄到文件中(11)索引(12)分類合計(jì)四,系統(tǒng)環(huán)境1. 運(yùn)行環(huán)境硬件環(huán)境:CPU 80386 內(nèi)存32MB、硬盤200MB以上微機(jī)軟件環(huán)境:MS-DOS 5.0以上操作系統(tǒng)/WINDOWS 9X以上系統(tǒng) Turbo c2.0集成環(huán)境,UCDOS漢字系統(tǒng) visual C+以上圖:上圖是學(xué)生信息管理系

4、統(tǒng)的流程圖。(1)數(shù)據(jù)結(jié)構(gòu) 鏈表是線性表中的一種,線性表中分為順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)浇Y(jié)構(gòu)。線性表的順序存儲(chǔ)結(jié)構(gòu)的特點(diǎn)是邏輯關(guān)系上相鄰的兩個(gè)元素物理位置上相鄰,因此可以隨機(jī)查找表中的沒一個(gè)元素,。Typedef struct z Char no 11 Char name 15 Int score n Float sum Float average ; Int order; Struct z1*next;Student;(2) main()主函數(shù)主函數(shù)是程序的入口,采用模塊化的設(shè)計(jì)。首先在主程序種打印歡迎界面,聲明一些必要的變量,作為一無(wú)限循環(huán)程序,循環(huán)體作為一開關(guān)語(yǔ)句,該語(yǔ)句設(shè)置一個(gè)斷點(diǎn),其中條件值

5、通過(guò)調(diào)用過(guò)主菜單函數(shù)得到的返回值。根據(jù)該值,調(diào)用相應(yīng)的功能函數(shù)。同時(shí)設(shè)置一個(gè)斷點(diǎn),當(dāng)返回值為一定條件是結(jié)束程序。(3)memnu_select()函數(shù) 為了美化界面,制作單邊框窗口,窗口中顯示主菜單。通過(guò)putch()輸出圖形符號(hào)的ASCII碼值(十六進(jìn)制),到達(dá)顯示的目。 Putch(0xda) Putch(0xc4)對(duì)菜單的選項(xiàng)的選擇是利用移動(dòng)光標(biāo)按回車鍵進(jìn)行選擇。 4 init()初始化 單鏈表需要一個(gè)頭指針來(lái)指向表的第一個(gè)結(jié)點(diǎn)面對(duì)單鏈表的訪問(wèn)是從頭指針開始的。初始化單鏈表為空,用null表示,該值在文件stdlib.h中定義為常數(shù)0.5 creat()創(chuàng)建鏈表 當(dāng)用戶選擇輸入增加記錄后

6、,進(jìn)入該函數(shù),輸入學(xué)生信息,并把信息輸入鏈表。在輸入過(guò)程中,有相關(guān)的提示。當(dāng)輸入的時(shí)候,會(huì)出現(xiàn)彈出到主菜單,在生成單鏈時(shí),每次新輸入的結(jié)點(diǎn)都放在表頭,這樣最先輸入的結(jié)點(diǎn)存放在表頭,這樣最先輸入的結(jié)點(diǎn)存放在最后。(7).append()追加記錄到文件尾當(dāng)想要在文件尾增加一條記錄時(shí)使用該函數(shù),首先輸入新結(jié)點(diǎn)信息,然后輸入要追加的文件名,按追加方式打開文件,將新信息寫入文件。(8).insert() 插入結(jié)點(diǎn)在指定結(jié)點(diǎn)前面插入新結(jié)點(diǎn),申請(qǐng)空間得到指針info,輸入新結(jié)點(diǎn)信息,存放info中,設(shè)鏈表頭指針為h,p為指定結(jié)點(diǎn)的指針,q為P的前驅(qū)指針。從頭結(jié)點(diǎn)開始循環(huán)移動(dòng)指針p查找指定結(jié)點(diǎn),查找和插入時(shí)分

7、兩種情況處理:1).指針p 為空,如果p等于h,說(shuō)明鏈表為空,則新結(jié)點(diǎn)即為頭結(jié)點(diǎn),修改指針h=info。否則,說(shuō)明表中沒有指定結(jié)點(diǎn),則新結(jié)點(diǎn)插入在表尾部,此是q把指的結(jié)點(diǎn)是最后一個(gè)結(jié)點(diǎn),所以修改指針q-next=info。2).指針p不為空,如果p等于h,說(shuō)明新結(jié)點(diǎn)插入在當(dāng)前第一個(gè)結(jié)點(diǎn)之前,為新的頭結(jié)點(diǎn),修改指針info-next=p,h=info。否則,說(shuō)明新結(jié)點(diǎn)的位置應(yīng)在q和p兩個(gè)結(jié)點(diǎn)之間,修改指針info-next=p,q-next=info。(9).print()顯示所有記錄采用順序訪問(wèn)的方法顯示和查找記錄,定義一個(gè)指向結(jié)點(diǎn)的臨時(shí)變量p,初值為單鏈表的頭指針,輸出指針?biāo)涗浀臄?shù)據(jù)后,將

8、指針后移一個(gè)記錄,直到p指針值為空,則所有記錄輸出完畢。(10).search()查找結(jié)點(diǎn)按照姓名來(lái)查找記錄。從頭結(jié)點(diǎn)開始順序查找,若沒有記錄顯示沒有,遇到一個(gè)匹配的記錄則顯示此記錄,后到尾結(jié)點(diǎn)結(jié)束。(11).save()保存記錄到文件將學(xué)生信息保存到指定的文件中。按照文件讀寫要求,先定義一個(gè)只想文件的指針,輸入要保存的磁盤文件名,如果輸入的是絕對(duì)路徑,則文件保存到指定的位置;如果只要文件名,則文件保存在TC默認(rèn)的路徑。如果文件打不開,則退出程序,否則選擇一種寫文件方式,打開文件。如果文件打不開,則退出程序,否則選擇一種寫入文件方式,從鏈表的頭指針。開始,順序?qū)⒂涗泴懭胛募钡剿杏涗泴懲辏?/p>

9、標(biāo)志就是移動(dòng)指針空。(12).load()從文件中加載記錄按照文件讀寫要求,先定義一個(gè)指向文件的指針,輸入要讀入數(shù)據(jù)的磁盤文件名,然后確定文件的打開方式。如果文件打不開,則退出函數(shù),否則選擇一種讀文件方式,從文件頭開始,將記錄寫入內(nèi)存,直到文件尾。文件打開方式和讀入方式的確定要依據(jù)輸出文件是二進(jìn)制文件,塊寫操作,讀入也應(yīng)設(shè)置為二進(jìn)制打開方式,塊讀取方式。每讀入一條記錄,都要做好指鏈接關(guān)系,本函數(shù)將新結(jié)點(diǎn)鏈接到當(dāng)前鏈表的尾部,鏈表的順序和文件保存的順序一致。(13).copy()備份文件將文件讀寫功能結(jié)合到一起,先輸入源文件名,再輸入目標(biāo)文件名,然后利用文件讀寫函數(shù)將源文件中的信息寫到目標(biāo)文件中

10、,以達(dá)到備份文件的目的。(14).computer()計(jì)算所有學(xué)生的課程的總成績(jī)成績(jī)和總平均成績(jī)(15).sort()排序本函數(shù)實(shí)現(xiàn)按總分排序的功能。在算法上,選擇直接插入算法,即:每步將一個(gè)待排序的按其排序碼值的大小插到前面已經(jīng)排好序的表中,直到全部插入為止。先將鏈表的頭結(jié)點(diǎn)看作是已經(jīng)排好序的結(jié)點(diǎn),然后取下一個(gè)結(jié)點(diǎn)作為待排序的結(jié)點(diǎn),插入到已排好序的表中。具體做法為:(1. 先將原表頭結(jié)點(diǎn)作為新排好序表的頭結(jié)點(diǎn)h,原表下一個(gè)節(jié)點(diǎn)作為原表頭結(jié)點(diǎn)h1。(2. 原表頭結(jié)點(diǎn)為待排序結(jié)點(diǎn),將其總分與新表結(jié)點(diǎn)的總分進(jìn)行比較,如果待排序結(jié)點(diǎn)總分大,則插在表頭,否則插在其后,原表頭結(jié)點(diǎn)移一位。(3. 重復(fù)第二

11、步,即將原表頭結(jié)點(diǎn)的總分與新表結(jié)點(diǎn)的總分進(jìn)行比較,如果待排序結(jié)點(diǎn)總分小,則移動(dòng)新表指針,直到找到合適的位置將其插入。當(dāng)原表為空時(shí),所有結(jié)點(diǎn)排序完畢。排好序后,系統(tǒng)自動(dòng)將名次數(shù)據(jù)寫入結(jié)點(diǎn)數(shù)據(jù)域的order中。(16).index()索引定義臨時(shí)工指針后,將原表的頭指針的下一個(gè)結(jié)點(diǎn)作為指針,再使第一個(gè)結(jié)點(diǎn)定義為新表的頭結(jié)點(diǎn)。當(dāng)原表不為空時(shí),進(jìn)行排序。(17).total()分類合計(jì)追加班別信息,對(duì)各班的總成績(jī)和總平均成績(jī)進(jìn)行平均成績(jī)統(tǒng)計(jì)并顯示。(18).exit() 退出程序4.系統(tǒng)的界面設(shè)計(jì)(1) 主菜單(2) 創(chuàng)建鏈表(3) 刪除記錄(4) 顯示全部記錄(5) 查找記錄(6) 保存文件(7)

12、讀文件(8) 計(jì)算總分和平均分(9) 插入記錄(10) 復(fù)制文件(11) 排序(12) 追加記錄(13) 索引(14) 分類合計(jì)5 系統(tǒng)實(shí)現(xiàn)1. 使用的語(yǔ)言 C語(yǔ)言2. 模塊代碼實(shí)現(xiàn)(以下舉3例為參考)模塊1模塊名稱:創(chuàng)建鏈表輸入:學(xué)號(hào),姓名,成績(jī)輸出:輸出一個(gè)二維表模塊代碼:STUDENT *create() int i;float s; STUDENT *h=NULL,*info;for(;)info=(STUDENT *)malloc(sizeof(STUDENT);if(!info)printf(nout of memory);return NULL;inputs(enter no:,

13、info-no,11);if(info-no0=) break;inputs(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模塊名稱:從表中刪除一個(gè)記錄輸入:輸入需要?jiǎng)h除的學(xué)生學(xué)號(hào)輸出:輸出要?jiǎng)h除

14、學(xué)生信息二維表模塊代碼: STUDENT *delete(STUDENT *h) STUDENT *p,*q; char s11; clrscr(); printf(please delete non); scanf(%s,s); 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); print

15、f(|-|-|-|-|-|-|-|-|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); 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、模塊名稱:按姓名查找學(xué)生記錄輸入:輸入學(xué)生姓名輸出:以二維表的形式輸出查詢到的信息模塊代碼: void search(STUDENT*h) STUDENT *p; char s15; clrscr(); printf(please enter name for searchn); scanf(%s,s); 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

17、 |sc3 | sum| 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. 集成測(cè)試各個(gè)模塊間的相互關(guān)聯(lián)和借口測(cè)試1. 創(chuàng)建鏈表、顯示鏈表、從鏈表中刪除信息、按名查找、插入之間的集成測(cè)試當(dāng)創(chuàng)建完成一個(gè)鏈表是,按顯示鏈表,則以二維表的形式顯示創(chuàng)建鏈表的信息;當(dāng)要從鏈表刪除一個(gè)學(xué)生的信息時(shí),輸入要?jiǎng)h除學(xué)

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

19、醒你輸入保存路徑,若路徑無(wú)誤,回車后保存成功;按加載,提醒輸入加載路徑,若輸入路徑無(wú)誤,則加載成功,且按顯示后悔顯示載入的學(xué)生信息;排序分類顯示均正常;追加,會(huì)提醒輸入添加的學(xué)生信息,輸入完成后,提醒輸入追加文件,若文件路徑無(wú)誤,則追加成功,按顯示,則顯示更新后的信息。以上測(cè)試說(shuō)明創(chuàng)建鏈表、顯示、保存、載入、分類合計(jì)、追加之間的聯(lián)系正常,接口無(wú)誤。說(shuō)明測(cè)試成功! 六、總結(jié)這次實(shí)訓(xùn),我主要是負(fù)責(zé)前期工作的準(zhǔn)備,了解相關(guān)的鏈表形式,數(shù)據(jù)結(jié)構(gòu),函數(shù)類型等的研究。下面我來(lái)總結(jié)一下這幾個(gè)發(fā)那個(gè)面的感想。數(shù)據(jù)結(jié)構(gòu):鏈表是線形表的一種,線形表分為順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。 這二者的共同點(diǎn)就是可以對(duì)表的添加,刪除,查找,排序等操作比較方便,所以我們采用的是鏈表的形式來(lái)存儲(chǔ)學(xué)生的相關(guān)信息。線性順序存儲(chǔ)結(jié)構(gòu)的特點(diǎn)是邏輯關(guān)系上的相鄰的兩個(gè)元素物理位置上也相鄰,所他可以隨機(jī)存取表中的任一元素。鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的特點(diǎn)是用一組任意的存儲(chǔ)單元存儲(chǔ)線形表的數(shù)據(jù)元素。我說(shuō)一下在創(chuàng)建鏈表的時(shí)候的相關(guān)注意的事項(xiàng),我們一般是用creat()函數(shù)來(lái)創(chuàng)建鏈表的,當(dāng)用戶選擇輸入添加的記錄后,進(jìn)入該函數(shù),輸入了學(xué)生的序號(hào),學(xué)號(hào),姓名,還有相關(guān)的信息后。并在這個(gè)過(guò)程中把信息加入了鏈表。注意的是,在輸入的過(guò)程中,有相關(guān)的提示,入學(xué)號(hào)我們先定的是10位,字符型。同時(shí)對(duì)某些信息做了限定,就拿分?jǐn)?shù)來(lái)說(shuō)吧,如果輸入的分?jǐn)?shù)不在01

溫馨提示

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

評(píng)論

0/150

提交評(píng)論