數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告-學生成績管理系統(tǒng)(1)_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告-學生成績管理系統(tǒng)(1)_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告-學生成績管理系統(tǒng)(1)_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告-學生成績管理系統(tǒng)(1)_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告-學生成績管理系統(tǒng)(1)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、學院:職業(yè)技術(shù)學院專業(yè):計算機科學與技術(shù)姓名:學號:_J_ 班級:計科061班實習性質(zhì):課程設(shè)計實習地點:蔡家關(guān)校區(qū)國合樓二樓訃算機房指導教師:曾勖成績:學生成績管理系統(tǒng)設(shè)計一、需求分析隨著社會的發(fā)展,學校的規(guī)模不斷的擴大,日常教學活動中提取相關(guān)信息, 以反映教學情況。傳統(tǒng)的手工操作方式,易發(fā)生數(shù)據(jù)丟失,統(tǒng)計錯誤,勞動強度 高,且速度慢。使用計算機可以高速,快捷地完成以上工作。在計算機聯(lián)網(wǎng)后, 數(shù)據(jù)在網(wǎng)上傳遞,可以實現(xiàn)數(shù)據(jù)共享,避免重復勞動,規(guī)范教學管理行為,從而 提高了管理效率和水平。學生成績管理系統(tǒng)以汁算機為工具,通過對學生成績管 理所需的信息管理,把管理人員和老師從繁瑣的數(shù)據(jù)汁算處理中解

2、脫出來,使其 有更多的精力從事教務(wù)管理政策的研究實施,教學訃劃的制定執(zhí)行和教學質(zhì)量的 監(jiān)督檢查,從而全面提高教學質(zhì)量。信息社會的高科技,商品經(jīng)濟化的高效益,使訃算機的應(yīng)用已普及到經(jīng)濟和 社會生活的各個領(lǐng)域。計算機雖然與人類的關(guān)系愈來愈密切,還有人山于計算機 操作不方便繼續(xù)用手工勞動。為了適應(yīng)現(xiàn)代社會人們高度強烈的時間觀念,學生 成績管理系統(tǒng)軟件為教學辦公室?guī)砹藰O大的方便。該軟件是以C語言為實現(xiàn) 語言,其功能在系統(tǒng)內(nèi)部有源代碼直接完成。通過操作Ll錄,管理者和老師可以 了解本軟件的基本工作原理。管理者和老師只需輸入一些簡單的漢字、數(shù)字,即 可達到自己管理學生成績的目標。在學生成績管理系統(tǒng)中,需

3、要從大量的日常教學活動中提取相關(guān)信息,以反 映教學情況。傳統(tǒng)的手工操作方式,易發(fā)生數(shù)據(jù)丟失,統(tǒng)計錯誤,勞動強度高, 且速度慢。使用計算機可以高速,快捷地完成以上工作。在計算機聯(lián)網(wǎng)后,數(shù)據(jù) 在網(wǎng)上傳遞,可以實現(xiàn)數(shù)據(jù)共享,避免重復勞動,規(guī)范教學管理行為,從而提高 了管理效率和水平。通過本學生成績管理系統(tǒng),可以從一下兒個方面減少老師的工作負擔和提高 學校的管理效率,實現(xiàn)學校的信息化和自動化。1. 應(yīng)用學生成績管理系統(tǒng),把老師從繁雜的學生成績了登記分數(shù)、統(tǒng)計分數(shù)、 學生排名等等的工作職工解脫岀來,把更多的時間和精力用來提高教學質(zhì)量和學 生的輔導工作上,提高學生的學生效率和成績。2. 應(yīng)用學生成績管理系

4、統(tǒng),可以學校教務(wù)處的工作效率,有效的管理學校學 生的成績,更加科學的統(tǒng)計管理學生成績。學生成績管理適用各學校的教學老師用于班上的學生成績了登錄、統(tǒng)訃和對 班上學生成績的排名。學生管理系統(tǒng)以計算機為工具,通過對學生成績管理所需的信息管理,把老 師從繁瑣的數(shù)據(jù)計算處理中解脫出來,使其有更多的精力從事教務(wù)管理政策的研 究實施,教學計劃的制定執(zhí)行和教學質(zhì)量的監(jiān)督檢查,從而全面提高教學質(zhì)量。二、概要設(shè)計數(shù)據(jù)結(jié)構(gòu)形式:鏈表+二義排序樹。以成績?yōu)楣?jié)點建立二叉排序樹,以學生 為節(jié)點,以鏈表形式接在成績節(jié)點之后。功能:查找(按學號、成績、姓名)、插入、刪除、統(tǒng)計(統(tǒng)計平均成績、, 統(tǒng)計分數(shù)段的人數(shù)。)學生成績管

5、理系統(tǒng)是以計算機為工具,通過對教務(wù)管理所需的信息管理,把 管理人員從繁瑣的數(shù)據(jù)計算處理中解脫出來,使其有更多的精力從事教務(wù)管理政 策的研究實施,教學計劃的制定執(zhí)行和教學質(zhì)量的監(jiān)督檢查,從而全面提高教學 質(zhì)量。軟件開發(fā)的意圖為便于學校和老師的管理,方便查看有關(guān)學校及學生的情 況。如教學老師對學生成績的修改、刪除、查找、添加、總分數(shù)的統(tǒng)計、總分排 名,單科排名等。成績管理系統(tǒng)是面向中學的管理系統(tǒng),其Ll的是提高老師對學生的科學化管 理。本軟件針對學校的管理現(xiàn)狀和要求,從理論和應(yīng)用的角度論述了學生成績管 理信息系統(tǒng)的特點、功能、設(shè)計思路。本系統(tǒng)主要包括五個模塊:學生成績錄入、 學生成績查詢、學生成績

6、的添加、修改、統(tǒng)計學生的總成績、并對其進行排名、 求侮個學生的平均分等這八個模塊基本實現(xiàn)設(shè)計。1. 定義頭文件,包括標準輸入輸岀函數(shù)庫、標準函數(shù)庫、字符串函數(shù)庫、屏 幕操作函數(shù)庫SinCIUde ZZStdio. h"SinCIUde ZZStdIib h#include ,zstring h#inCIUde "conio. h"片define HEADERI "學生成績n"Sdefine HEADER2 " 學號姓名ICl數(shù)學I英語I總分丨平均 丨名次In,zSdefineHEADER3"+define FORMAT %-

7、10s %-15s %4d %4d %4d %4d%. 2f %4dIWSdefineDATAp->data num, p->data name, p->data egrade, p->data mg:Tdde, p->data CgradeJ p->data total, p->data. ave, p->data mingciSdefineEND"2. 建立查詢菜單,方便軟件使用者根據(jù)根據(jù)自己的需要進行操作:VOid menu()SySten("CIS");學生成績管理系統(tǒng));CPrintf("CPri

8、ntfCCPrintf (,* 1輸入成績2刪除成績CPrintf (,* 3查詢成績4修改成績叭);CPrintf (,* 5插入成績6統(tǒng)計成績叭);CPrintfr* 7名次排名8保存成績叭n");CPrintf (,* 9顯示成績O退出系統(tǒng)水n");CPrintfr本軟件由張進,楊秀玲共同設(shè)計,歡迎使用!);3定義與學生有關(guān)的數(shù)據(jù)結(jié)構(gòu)typedef StrUCt StUdent標記為 StUdent*/Char num10 ;/水學號*/int cgrade; int mgrade; int egrade; int total; float ave;int IlIin

9、gCi;Char name 15; /*姓名 */*C語言成績-*數(shù)學成績*/*英語成績*/*總分*/*平均分*/*名次*/;4山于是動態(tài)內(nèi)存分配空間的數(shù)據(jù)操作,而非文件I/O,那么在程序一開始的時候首先得建立數(shù)據(jù),返回頭成績節(jié)點。于是首先要有一個創(chuàng)建數(shù)據(jù)的函數(shù):Creat ()。分析要求,可以得到一些初步的功能函數(shù):插入函數(shù)InSert ()、查找函數(shù)SearCh O (2利X按學號、按姓名)、刪除函數(shù)Delete ()、輸出學生信息函數(shù)Print ( )o1. Creat ():以二義排序樹的定義建立樹并返回根節(jié)點,在輸入學生信息 的同時判斷是否已有該成績節(jié)點,若有則直接鏈在該成績的學生節(jié)

10、點之后;若無, 開辟新空間給此成績節(jié)點,并把學生節(jié)點鏈在其后。2. InSert ():方法和Creat () 一樣,只要指明根節(jié)點就可以了。3. SearCh ():按成績:只要按二叉排序樹的定義就可以找到成績,然后遍歷其成績節(jié)點后 的學生鏈按學號:遍歷二義排序樹的方法。按姓名:遍歷二義排序樹的方法。4. Delet ():在查找成績的時候就可以返回該成績的節(jié)點指針和其父節(jié)點指針,那么可以根據(jù)二義排序樹的刪除定義進行操作。5. Print ():遍歷二叉.排序樹的方法。6. TongjiO:統(tǒng)計該班的總分第一名和單科第一,和各科不及格人數(shù)。三、詳細設(shè)計一、對整體的設(shè)計思想進行構(gòu)思,并寫出軟件

11、大概的設(shè)計步驟和軟件要實現(xiàn) 的功能,并對需要的硬件設(shè)備和軟件進行準備,電腦等相關(guān)的設(shè)備和資料。I. 打開TC編譯器,新建一個文件。2. 輸入源程序,實現(xiàn)學生成績管理系統(tǒng)的相關(guān)功能。 二、軟件具體功能的設(shè)計方法和步驟。1、定義整個程序需要的頭文件,#include "stdio.h"/*標準輸入輸出函數(shù)庫*/include ,stdlib.h" /*標準函數(shù)庫*/#include "string.h" /*字符串函數(shù)庫*/#include "conio.h"/*屏幕操作函數(shù)庫*/3. 定義所有和學生有關(guān)的數(shù)據(jù)結(jié)構(gòu)。typede

12、f StrUCt StUdentChar num10;/*學號3*7Char name15; /*姓名*/int cgrade;*C 語言成績*/int mgrade; /*數(shù)學成績*/int egrade;/*英語成績*/int total;/*總分*/float ave;/*平均分*/int mingci;/* 名次*/;4. 編寫學生成績管理系統(tǒng)的菜單,方便軟件使用者的操作。學生成績管理系統(tǒng)F);CPrintf(CPnntf(M* 1輸入成績2刪除成績*n");CPrintf(H*3查詢成績4修改成績CPrintf(M*5插入成績6統(tǒng)訃成績*n");CPrintf(H

13、*7名次排名8保存成績*");CPrintf(*9顯示成績0退出系統(tǒng)*n");cprintf(''* * *CPrintf(本軟件山王興宇和崔凱共同設(shè)計,歡迎使用!十);5. 定義錯誤信息時函數(shù)調(diào)用,軟件的提示信息。VOid WrOngOPrintf(Mnnnn * 輸入錯誤,任意鍵返回!* W);getchar();6. 定義查詢時的錯誤提示函數(shù)。VOid NOfindoPrintf("=> 沒有發(fā)現(xiàn)該學生!n“);)7. 顯示單鏈表1中存儲的學生記錄,內(nèi)容為StUdent結(jié)構(gòu)中定義的內(nèi)容,存儲 單鏈表中頭結(jié)點的指針,該頭結(jié)點沒有存儲學生信

14、息,指針域指向的后繼結(jié)點才 有學生信息。查詢時指針時,逐條輸出鏈表中存儲的學生信息。VOid DiSP(Link 1) NOde *p;p=l->next;if(!p)/*P=NULL,NUll 在 Stdlib 中定義為 0*/Printf("=> 沒有學生記錄 n”);getchar();return;Printdata(p);p=p->next;Printf(HEADER3);&定位鏈表中符合要求的節(jié)點,并返回指向該節(jié)點的指針,其中findmess 保存要查找的具體內(nèi)容;nameornum保存按什么查找;在單鏈表1中查找;Node* LOCate(Li

15、nk 1,Char findmess,char nameornum)NOde *r;if(strcmp(nameornum,num)=0)=l->next;While(r)if(strcmp(r->data.num,findness)=O)return r;r=r->next;else if(strcmp(nameornum,nameH)=O)r=P>next;WhiIe(r)if(strcnp(r->,findmess)=O)return r;-=r->next;9. 進行分數(shù)的驗證,輸入的分數(shù)必須在O到IOO之間,大于100或小于0時

16、提示輸入錯誤,并要求重新輸入。int numberinput(char *notice)int t=0;doPrintf(notice);SCanf(,%d"t);if(t>100 Il t<0) Printf("成績必須在0,100! n");)vvhile(t>100 Il t<0);return t;10. 構(gòu)造增加學生記錄的函數(shù),實現(xiàn)添加操作的臨時的結(jié)構(gòu)體指針變量,并 且保證輸入的學號沒有被使用,若輸入學號為0,則退出添加記錄操作。若增加 的學生型號已經(jīng)存在,則要求重新輸入一個未被占用的學號。VOid Add(Link 1)NOde

17、 *p,*r,*s;Char ch,flag=0jum 10;=l;s=l->next;SyStem(HClS,);Disp(I); WhiIe(r->next!=NULL)-=r->next; WhiIe(I) WhiIe(I) StringinPUt(num, 10,"輸入0返回主菜單,輸入學號:");Aag=O;if(strcmp(num/On)=O)return;s=l->next;WhiIe(S) if(strcnp(s->data.numjum)=O)flag=l;break;s=s->next;if(flag=l) getc

18、har();Printf(,=>學號%s已經(jīng)存在,是否重新輸入7(yn)z,num);SCanf(M%cH,&ch);if(ch=,y,llch=,Y,)continue;elsereturn;elsebreak;)11 構(gòu)造查詢成績的函數(shù),查詢的方法有兩種:一.按學號查詢,二、按學生姓名查詢。int select;Char SearChinPUt20; NOde *p;if(!l->next) SyStem(HClS,);Printf("ii=> 沒有學生記錄!n“);getchar();return;systeni(nclsH);Printf(,n=&g

19、t;1按學號查詢=>2按姓名查詢n”);PrintfC*選擇1,2:“);SCanf(H%d,<feselect);if(select=l)12. 構(gòu)造刪除學生記錄的函數(shù),首先查詢要刪除的學生是否存在,若不存在, 提示重新輸入,若存在,找到該節(jié)點,然后刪除該節(jié)點。if(!l->next) SyStem(HCls);Printf("=> 沒有學生記錄!n“);getchar();return;=l;While(r->next!=p)=r->next;r->next=p->next;/*將P所指節(jié)點從鏈表中去除*/free(p);嚴釋放內(nèi)存

20、空間*/Printf("n=> 刪除成功!n);getchar();Saveflag=I;13. 修改學生記錄。先按輸入的學號查詢到該記錄,然后提示用戶修改學號 之外的值,學號不能修改。if(!l->next) SyStem(HCls);Printf("=> 沒有學生記錄!n“);getchar();return;SyStem("cls");Printf("修改學生成績");Disp(I);14. 插入記錄:按學號查詢到要插入的節(jié)點的位置,然后在該學號之后插入一 個新節(jié)點。若學號存在,則進行插入之前的新記錄的輸入操作

21、。15. 統(tǒng)計該班的總分第一名和單科第一,和各科不及格人數(shù),并顯示出來。VOid TOngji(Link 1)NOde *pm,*pe,*pc,*pt;NOde *r=l->next;int COUntC=0,COUntm=0,COUnte=0;if(!r) SyStem("cls");Printf("=> 沒有學生記錄 n”);getchar();return ;SyStenI(MClSH);Disp(l);Pm=Pe=PC=pt=r;While(r)if(r->data.cgrade<60) COUntC+;if(r->data.

22、mgrade<60) COUntn+;if(r->data.egrade<60) COUnte+;if(r->data.cgrade>=pc->data.cgrade)pc=r;if(r->data.mgrade>=pm->data.mgrade) pm=r;if(r->data.egrade>=pe->data.egrade)pe=r;if(r->data.total>=pt->data.total)pt=r;=r->next;Printf(,n統(tǒng)計結(jié)果n");Printf("

23、C 成績不及格有:d ()n",countc);Printf("數(shù)學不及格有:d (人)n,',countm);Printf("英語不及格有:%d (人)n',counte);Printf(,n");Pnntf("總分最高的學生姓名:S 總分:%dn",pt->,pt->data.total);Printf("語最高成績學生姓名:S 分數(shù):%dn",pe->,pe->data.egrade);Printf(,'數(shù)學最高學生姓名:s

24、分數(shù)%dn",pm->,pm->data.ngrade);Printf(,C 語言最高學生姓名:s 成績%dn",pc->,pc->data.cgrade);Printf("n 任意鍵返回");getchar();16. 利用插入排序法實現(xiàn)單鏈表的按總分字段的降序排序,從高到低為學生 成績排名。17. 數(shù)據(jù)存盤,若用戶沒有專門進行此操作且對數(shù)據(jù)有修改,在退岀系統(tǒng)時, 會提示用戶存盤.getchar();Printf("n=> 是否保存?(y/n):”);SCanf("%

25、c",&ch);if(ch=,y,llch=,Y,)SaVe ;FILE* fp;NOde *p;int COUnt=0;fp=fopen(c:WStUdent'wb);18建立菜單。CaSe 1: Adel(l);break;CaSe 2:DeI(l);break;CaSe 3:QUr(l);break;CaSe 4:MOdify(l);break;CaSe 5:InSert(l);break;CaSe 6:TOngji(l);break;CaSe 7:SOrt(I);break;CaSe 8:SaVe(l);break;*增加學生記錄*/*刪除學生記錄*/*查詢學

26、生記錄*/*修改學生記錄*/*插入學生記錄*/*統(tǒng)計學生記錄*/*排序?qū)W生記錄*/*保存學生記錄*/四、軟件測試L利用VC+進行軟件的測試,并記錄相關(guān)的數(shù)據(jù)。編譯、連接、運行 程序,出現(xiàn)如圖的菜單。圖22.選擇1,添加學生成績,出現(xiàn)如圖的視圖。圖3圖4 如圖所示,系統(tǒng)中已經(jīng)加入了三條數(shù)據(jù)。3.選擇2,出現(xiàn)如圖所示的畫面。圖53選擇1和選擇2分別按學號刪除學生成績記錄和按姓名刪除學生成績記 錄,出現(xiàn)如圖所示。圖6圖74.選擇3,查詢學生的各科成績,分別按學號和姓名查詢。圖85.選擇4,修改學生成績。Y D學號軟件Vc-學生成績管理Dobu學生成鑽管理.OXd1×圖96.選擇5,增加學生

27、學號為7的姓名以及各科成績。C數(shù)學;英語I總分45i36;65I14665I47;65;17754 132 1 G5J IGI 5B.005 J:60000加:7四 ICL ¾0- IO:/知成成 入入名怒s數(shù)買000-0-號一學小三小四I張三2 :B WI;李四I!I!36 III!1:87:651III!II 188 III!I:62.00:II!: 0I4;小二!III 751IiII 65!361II!176 IIII 58.00:I: 0l圖107選擇6統(tǒng)計全部學生成績的總分,單科成績第一、各科不及格人數(shù)以及總 分第一名和各科成績第一名的詳細情況。圖H8選擇7,為全部學生排

28、名。學號學 !姓名!戯績I CI 丨I 一學一 一數(shù)一 -! ISi!IIi ":平均 !矗次I3”卜三I! 45II t36!IIII 65:II146 I " 一 J ! 48.00 II: 0I?小四I:65II47!IIII 65:177 g I ! 59.00:I: 0I _1I張三1IIII 54«32 IIIIIII 65 III_151 ; " 一 ;I 50.00 III0I2!李四!1I 36IB I87!IiI 6£ !II188 " 一 I! 62.00 Ii!RI4;小二!IIII 75II65;ItIII

29、36!II176 I " I! 58.00 I.IIII 0IIIIIlIII1I學號I姓名II CII數(shù)學I英語II -II總分J平均1 : " 一 JI名次II2!李四!II 36II I871III 6£ !II188! 62附IB! 1I7小四I:65II47!IIII 65:II1?7 I " I! 59.00 II: 2I4;小二:I! 75I65;一1III 36!176 I " 一 J ! 58.00 III 31;張三iIIIi 54II32 ;IIII 65 :II_151 I_ I! 50.00 III4II3:小三iI

30、4£I36 !i,I!146. " I! 4.S% IiIE圖129.選擇8,保存全部學生數(shù)據(jù)。圖1310.選擇0,退出學生成績管理系統(tǒng)。圖1411通過各項功能的測試,學生成績管理系統(tǒng)可以實現(xiàn)預期的相關(guān)操作,因 此,學生成績管理系統(tǒng)設(shè)計成功。五、實驗總結(jié)在一個星期的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計中,我們組的四個小組成員,細致分工,通 力合作,每個人都認真的完成自己所承擔的任務(wù),為完成數(shù)據(jù)結(jié)構(gòu)課程設(shè)計一起 努力,其中王興宇負責需求分析部分,他細致的分析了軟件適用的行業(yè)和軟件的 具體功能,崔凱負責概要設(shè)計部分,我和楊秀玲主要負責學生成績管理系統(tǒng)的詳 細設(shè)計和對軟件的測試,對軟件的功能進行完善和對各個功能模塊的調(diào)試,并寫 出詳細的設(shè)計過程和軟件調(diào)試情況。通過這一個星期的程序設(shè)計,我們基本熟悉了數(shù)據(jù)結(jié)構(gòu)中對于二叉排序樹和 單鏈表的運用,特別是二叉排序樹的結(jié)果特點,在對其查找的時候特別方便。結(jié) 合了二義樹和鏈表的特點,就比較出二叉樹在查找上的結(jié)構(gòu)特點優(yōu)于單鏈表。但 在結(jié)合二義樹和鏈表的時候,對于查找鏈表中的內(nèi)容時就比較麻煩,我

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論