C語(yǔ)言實(shí)訓(xùn)報(bào)告-學(xué)生成績(jī)管理系統(tǒng)_第1頁(yè)
C語(yǔ)言實(shí)訓(xùn)報(bào)告-學(xué)生成績(jī)管理系統(tǒng)_第2頁(yè)
C語(yǔ)言實(shí)訓(xùn)報(bào)告-學(xué)生成績(jī)管理系統(tǒng)_第3頁(yè)
C語(yǔ)言實(shí)訓(xùn)報(bào)告-學(xué)生成績(jī)管理系統(tǒng)_第4頁(yè)
C語(yǔ)言實(shí)訓(xùn)報(bào)告-學(xué)生成績(jī)管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(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、設(shè)計(jì)時(shí)間:2008/6/12實(shí)訓(xùn)報(bào)告題 目: 學(xué)生成績(jī)管理系統(tǒng)院 系: 信息科技學(xué)院專 業(yè): 電子信息科學(xué)與技術(shù)姓 名: 周謁真 學(xué) 號(hào): 指導(dǎo)教師: 王小瓊 日 期: 2011年7月5日 桂林電子科技大學(xué)信息科技學(xué)院目錄1應(yīng)用程序的名稱32應(yīng)用程序的主題和設(shè)計(jì)目的33應(yīng)用程序簡(jiǎn)介&應(yīng)用程序的總體設(shè)計(jì)圖(見(jiàn)需求規(guī)格說(shuō)明書(shū))34需求規(guī)格說(shuō)明書(shū)31. 綜合需求32數(shù)據(jù)要求33界面要求44軟件描述45界面介紹46程序源代碼57.測(cè)試結(jié)果138課程設(shè)計(jì)中存在的問(wèn)題159在設(shè)計(jì)實(shí)踐過(guò)程中的自我感受15附錄17學(xué)生成績(jī)管理系統(tǒng) 實(shí)訓(xùn)報(bào)告1 應(yīng)用程序的名稱學(xué)生成績(jī)管理系統(tǒng)2 應(yīng)用程序的主題和設(shè)計(jì)目的主題:用

2、于學(xué)生成績(jī)管理和查詢?cè)O(shè)計(jì)目的:方便老師管理和查詢學(xué)生成績(jī)3 應(yīng)用程序簡(jiǎn)介&應(yīng)用程序的總體設(shè)計(jì)圖(見(jiàn)需求規(guī)格說(shuō)明書(shū))4 需求規(guī)格說(shuō)明書(shū)1. 綜合需求1) 功能要求使用的學(xué)生成績(jī)管理系統(tǒng),可以錄入學(xué)生信息,按學(xué)號(hào)對(duì)學(xué)生信息進(jìn)行查詢,并將學(xué)生信息按學(xué)號(hào)進(jìn)行排序。2) 性能要求能夠讓前來(lái)查詢的管理人員和學(xué)生能夠在2秒鐘內(nèi)查到需要的正確的信息,并且能夠重復(fù)查詢。3) 運(yùn)行要求能在windows98以上的系統(tǒng)中運(yùn)行。4) 升級(jí)要求暫無(wú)2數(shù)據(jù)要求1)數(shù)據(jù)輸入可根據(jù)自己需要定義多個(gè)數(shù)據(jù)供查詢,數(shù)據(jù)輸入有學(xué)號(hào)(char10),姓名(char20),英語(yǔ)成績(jī)(float4),數(shù)學(xué)成績(jī)(float4),計(jì)算機(jī)成績(jī)(

3、float4)。.2)數(shù)據(jù)輸出輸出到屏幕上。有學(xué)號(hào)(char10),姓名(char20),英語(yǔ)成績(jī)(float4),數(shù)學(xué)成績(jī)(float4),計(jì)算機(jī)成績(jī)(float4),總成績(jī)(float4),平均成績(jī)(float4), 英語(yǔ)班級(jí)均分(float4),數(shù)學(xué)班級(jí)均分(float4),計(jì)算機(jī)班級(jí)均分(float4)。3)數(shù)據(jù)存儲(chǔ)根據(jù)不同的電腦來(lái)配備,普通存儲(chǔ)數(shù)據(jù)80G硬盤(pán)足夠了。4)數(shù)據(jù)備份可以導(dǎo)入/導(dǎo)出到備用硬盤(pán)。數(shù)據(jù)字典:數(shù)據(jù)元素:編號(hào)數(shù)據(jù)元素名長(zhǎng)度L1學(xué)號(hào)10L2姓名20L3英語(yǔ)成績(jī)4L4數(shù)學(xué)成績(jī)4L5計(jì)算機(jī)成績(jī)45) 數(shù)據(jù)篩選按需篩選6) 主要算法For循環(huán),while循環(huán) 冒泡法排序3界

4、面要求文本菜單界面4軟件描述1)功能描述使用的學(xué)生成績(jī)管理系統(tǒng),可以錄入學(xué)生信息,按學(xué)號(hào)對(duì)學(xué)生信息進(jìn)行查詢,并將學(xué)生信息按學(xué)號(hào)進(jìn)行排序。2)性能描述相應(yīng)時(shí)間控制在2秒以內(nèi),數(shù)據(jù)文件讀取正確。3)操作步驟選擇查詢方式,輸入查詢要素,點(diǎn)擊查詢。 5 界面介紹系統(tǒng)初始化界面錄入界面統(tǒng)計(jì)界面6 程序源代碼#include#include #include#include#includetypedef struct STUDENT/定義一個(gè)名為STUDENT的結(jié)構(gòu)體char studentNumber10;/學(xué)生學(xué)號(hào)char studentName20;/學(xué)生姓名float mark1;/英語(yǔ)成績(jī)flo

5、at mark2;/數(shù)學(xué)成績(jī)float mark3;/計(jì)算機(jī)成績(jī)struct STUDENT *next;/鏈表指針STUDENT;int choose;/用于接受用戶的選擇STUDENT *headLink;/鏈表HEAD指針void CreateHeadLink();/聲明函數(shù)以下雷同void DesplayMenu();STUDENT *MallocNode();void GetInformation(STUDENT *t);void OutputInformation();void DesplayInfoBystudentNumber();void DesplayOneNode(STU

6、DENT *t);void InsertOneNode(STUDENT *t);void DeleteNodeBystudentNumber();void CompositorBystudentNumber();void CompositorMenu();void CompositorBystudentClass();void Exit();/主函數(shù)void main()CreateHeadLink();/調(diào)用建立表頭函數(shù)DesplayMenu();/調(diào)用菜單顯示函數(shù)/*函數(shù)功能:顯示菜單,根據(jù)用戶的輸入信息來(lái)完成對(duì)應(yīng)的功能*/void DesplayMenu() STUDENT *p;pri

7、ntf(*);printf( 歡 迎 使 用 學(xué) 生 成 績(jī) 管 理 系 統(tǒng)n);printf( 1排序 (按學(xué)號(hào))n);printf( 2插入 (錄入)n);printf( 3查找 (輸入一個(gè)學(xué)生學(xué)號(hào),輸出其各科成績(jī))n);printf( 4刪除 (從數(shù)組中按輸入的學(xué)號(hào)刪除該學(xué)生)n);printf( 5統(tǒng)計(jì)n);printf( 6退出n);printf(*);printf( 請(qǐng)輸入序號(hào)進(jìn)行操作: );scanf(%d,&choose);/從終端讀入一個(gè)值進(jìn)行菜單選擇getch();system(cls);switch(choose)case 1:CompositorBystudentNum

8、ber();break;case 2:p=MallocNode();/讓p指向新節(jié)點(diǎn)的首地址GetInformation(p);/獲取學(xué)生信息InsertOneNode(p);break;/插入學(xué)生信息case 3:DesplayInfoBystudentNumber();break;case 4:DeleteNodeBystudentNumber();break;case 5:CompositorMenu();break;case 6:Exit();break;getch();system(cls);DesplayMenu();/遞歸調(diào)用菜單顯示函數(shù)/*函數(shù)功能:建立鏈表表頭*/void C

9、reateHeadLink()STUDENT *p;p=(STUDENT*)malloc(sizeof(STUDENT);/在內(nèi)存中開(kāi)辟一個(gè)大小為sizeof(STUDENT)的空間并使p指向它的首地址headLink=p;/令鏈表head指針指向p指針p-next=NULL;/初始化鏈表/*函數(shù)功能:申請(qǐng)一個(gè)新結(jié)點(diǎn),并將其初始化*/STUDENT *MallocNode()STUDENT * p;/定義一個(gè)STUDENT變量int i;p=(STUDENT*)malloc(sizeof(STUDENT);/在內(nèi)存中開(kāi)辟一個(gè)大小為sizeof(STUDENT)的空間并使p指向它的首地址if(p

10、=NULL)/如果p指向的是空地址,那么返回一個(gè)空值return NULL;for(i=0;istudentNumberi=0;for(i=0;istudentNamei=0;for(i=0;istudentNumberi=0;p-mark1=0.0;p-mark2=0.0;p-mark3=0.0;p-next=NULL;return p;/*函數(shù)功能:取得用戶輸入的學(xué)生信息*/void GetInformation(STUDENT *t)printf(*n);printf( 請(qǐng)輸入學(xué)生學(xué)號(hào): );scanf(%s,t-studentNumber);printf( 請(qǐng)輸入學(xué)生姓名: );sca

11、nf(%s,t-studentName);printf( 請(qǐng)輸入學(xué)生英語(yǔ)成績(jī): );scanf(%f,&t-mark1);printf( 請(qǐng)輸入學(xué)生數(shù)學(xué)成績(jī): );scanf(%f,&t-mark2);printf( 請(qǐng)輸入學(xué)生計(jì)算機(jī)成績(jī): );scanf(%f,&t-mark3);printf(n 錄入成功!按任意鍵返回上級(jí)。);/*函數(shù)功能:在鏈表的結(jié)尾處增加一個(gè)節(jié)點(diǎn)*/void InsertOneNode(STUDENT *t)STUDENT *p;p=headLink;while(p-next)/當(dāng)p不指向空地址時(shí),就指向下一個(gè)地址p=p-next;p-next=t;/在最后一個(gè)空地址

12、中插入學(xué)生的信息/*函數(shù)功能:根據(jù)用戶輸入的學(xué)生學(xué)號(hào)顯示該學(xué)生信息*/void DesplayInfoBystudentNumber()STUDENT *p;char studentNumber10;char flag=0;/這里作為一個(gè)判斷變量,意在判斷是否存在學(xué)號(hào)為用戶輸入值的學(xué)生p=headLink-next;/初始化head指針printf(請(qǐng)輸入學(xué)生學(xué)號(hào));scanf(%s,studentNumber);/輸入學(xué)生學(xué)號(hào)字符串while(p)if(strcmp(p-studentNumber,studentNumber)=0)/在鏈表中查找相同學(xué)號(hào)的學(xué)生,如果找到了則輸出他們的信息pr

13、intf(學(xué)號(hào)t姓名t英語(yǔ)t數(shù)學(xué)t計(jì)算機(jī)t總成績(jī)t平均成績(jī)nn);DesplayOneNode(p);flag=1;break;p=p-next;if(!flag)printf(對(duì)不起,不存在學(xué)號(hào)為%s的學(xué)生n,studentNumber);/*函數(shù)功能:輸出一個(gè)節(jié)點(diǎn)的信息*/void DesplayOneNode(STUDENT *t)printf(%st,t-studentNumber);/輸出該結(jié)構(gòu)體對(duì)象的信息printf(%st,t-studentName);printf(%.0ft,t-mark1);printf(%.0ft,t-mark2);printf(%.0ft,t-mark3

14、);printf(%.0ft,t-mark1+t-mark2+t-mark3);printf(%.0ftn,(t-mark1+t-mark2+t-mark3)/3.0);/*函數(shù)功能:根據(jù)用戶輸入的學(xué)號(hào)刪除該學(xué)生*/void DeleteNodeBystudentNumber()char studentNumber10;STUDENT *p,*q;char flag=0;printf(請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào): );scanf(%s,studentNumber);/輸入學(xué)生學(xué)號(hào)字符串p=headLink;q=headLink-next;while(q)/當(dāng)q不指向空地址的時(shí)候,查找與用戶輸入的學(xué)

15、號(hào)相一致的學(xué)生,并刪除if(strcmp(q-studentNumber,studentNumber)=0)/strcmp函數(shù)比較兩個(gè)字符串是否相同p-next=q-next;free(q);/釋放q指向地址的空間flag=1;break;p=p-next;/把下一個(gè)人的地址補(bǔ)空,下同q=q-next;if(!flag)printf(不存在該學(xué)號(hào)的學(xué)生n);return;printf(成功刪除n);/*函數(shù)功能:根據(jù)用戶輸入的學(xué)號(hào)排序*/void CompositorBystudentNumber()STUDENT exchange,*r,*p,*q;r=headLink-next;if(r=

16、NULL)/當(dāng)指針指向空地址時(shí)則認(rèn)為沒(méi)有學(xué)生信息printf(nn現(xiàn)在還沒(méi)有學(xué)生信息,請(qǐng)先輸入學(xué)生信息n);return;while(r)/用r,q構(gòu)成循環(huán),使用冒泡法進(jìn)行排序,p=r;q=r-next;while(q)if(strcmp(q-studentNumber,p-studentNumber)studentNumber);strcpy(exchange.studentName,q-studentName);strcpy(q-studentNumber,p-studentNumber);strcpy(q-studentName,p-studentName);strcpy(p-stude

17、ntNumber,exchange.studentNumber);strcpy(p-studentName,exchange.studentName);exchange.mark1=q-mark1;exchange.mark2=q-mark2;exchange.mark3=q-mark3;q-mark1=p-mark1;q-mark2=p-mark2;q-mark3=p-mark3;p-mark1=exchange.mark1;p-mark2=exchange.mark2;p-mark3=exchange.mark3;q=q-next;r=r-next;OutputInformation();

18、/*函數(shù)功能:輸出信息*/void OutputInformation()STUDENT *p;p=headLink-next;/使p指向headLink-nextif(p=NULL)/如果p指向空地址說(shuō)明沒(méi)有學(xué)生信息printf(nn現(xiàn)在沒(méi)有學(xué)生信息,請(qǐng)先輸入學(xué)生信息nn);printf(nn學(xué)號(hào)t姓名t英語(yǔ)t數(shù)學(xué)t計(jì)算機(jī)t總成績(jī)t平均成績(jī) n n);while(p)/當(dāng)p指向地址存在則調(diào)用DesplayOneNode()函數(shù)進(jìn)行輸出操作DesplayOneNode(p);p=p-next;/指向下一名學(xué)生/*函數(shù)功能:計(jì)算平均分的菜單*/void CompositorMenu()print

19、f(nn1.輸入學(xué)生的學(xué)號(hào)統(tǒng)計(jì)該生的總分及平均分nn);printf(nn2.輸入課程求該門課程的總平均分nn);int c;scanf(%d,&c);if(c=1)CompositorBystudentNumber();/調(diào)用CompositorBystudentNumber()函數(shù)else if(c=2)CompositorBystudentClass();/調(diào)用CompositorBystudentClass()函數(shù)/*函數(shù)功能:根據(jù)用戶輸入的科目計(jì)算平均分*/void CompositorBystudentClass()float k=0;STUDENT *q;q=headLink-n

20、ext;if(q=NULL)/如果p指向空地址說(shuō)明沒(méi)有學(xué)生信息printf(nn現(xiàn)在還沒(méi)有學(xué)生信息,請(qǐng)先輸入學(xué)生信息n);int i;float s=0;printf(nn請(qǐng)輸入課程求該門課程的總平均分n); printf(n1.英語(yǔ)n);printf(n2.數(shù)學(xué)n);printf(n3.計(jì)算機(jī)n);scanf(%d,&i);if(i=1)while(q)/把第一門課的所有人的成績(jī)相加除以總?cè)藬?shù),下面以此類推k=k+q-mark1;q=q-next;s+;printf(英語(yǔ)平均分:%f,k/s);else if(i=2)k=0;s=0;while(q)k=k+q-mark2;q=q-next;

21、s+;printf(數(shù)學(xué)平均分:%f,k/s);else if(i=3)k=0;s=0;while(q)k=k+q-mark3;q=q-next;s+;printf(計(jì)算機(jī)平均分:%f,k/s);void Exit()printf(歡迎使用本系統(tǒng),按任意鍵退出。);getch();exit(0);7.測(cè)試結(jié)果報(bào)錯(cuò) 先錄入三個(gè)學(xué)生的信息按學(xué)號(hào)排序并輸出按學(xué)號(hào)查詢某學(xué)生信息刪除某學(xué)生信息輸出刪除后的學(xué)生信息調(diào)用統(tǒng)計(jì)功能,獲得班級(jí)單科平均分完成信息管理,選擇6退出系統(tǒng)測(cè)試結(jié)果顯示程序各部分功能均得以完整實(shí)現(xiàn),輸入提示清晰,操作簡(jiǎn)單出錯(cuò)也有完整的提示(未錄入學(xué)生信息),程序運(yùn)行可按需重復(fù)使用,程序健壯

22、性強(qiáng)8 課程設(shè)計(jì)中存在的問(wèn)題界面設(shè)計(jì)過(guò)于簡(jiǎn)單,不夠美觀,人性化。該程序只執(zhí)行簡(jiǎn)單的錄入,查找,刪除,統(tǒng)計(jì)功能,并未對(duì)操作人員身份進(jìn)行區(qū)分,存在一定安全問(wèn)題。9 在設(shè)計(jì)實(shí)踐過(guò)程中的自我感受這次程序設(shè)計(jì)加深了我對(duì)課堂講授內(nèi)容的理解,課堂上講授的許多關(guān)于c語(yǔ)言的語(yǔ)法規(guī)則,聽(tīng)起來(lái)十分枯燥無(wú)味,也不容易記住,然而程序設(shè)計(jì)的過(guò)程有要求使用c語(yǔ)言這個(gè)工具解決實(shí)際問(wèn)題,必須要掌握。通過(guò)程序的編寫(xiě),讓我對(duì)于語(yǔ)法知識(shí)有了感性的認(rèn)識(shí),加深對(duì)它的理解,在理解的基礎(chǔ)上就會(huì)自然而然地掌握c語(yǔ)言的語(yǔ)法規(guī)定。對(duì)于一些內(nèi)容自己認(rèn)為在課堂上聽(tīng)懂了,但編程中會(huì)發(fā)現(xiàn)原來(lái)理解的偏差,這是由于大部分學(xué)生是初次接觸程序設(shè)計(jì),缺乏程序設(shè)計(jì)的實(shí)踐所致。學(xué)習(xí)c語(yǔ)言不能停留在學(xué)習(xí)它的語(yǔ)法規(guī)則,而是利用學(xué)到的知識(shí)編寫(xiě)c語(yǔ)言程序,解決實(shí)際問(wèn)題。即把c語(yǔ)言作為工具,描述解決實(shí)際問(wèn)題的步驟,由計(jì)算機(jī)幫助我們解題。只有通過(guò)上機(jī)編程才能檢驗(yàn)自己是否掌握c語(yǔ)言、自己編寫(xiě)的程序是否能夠正確地解題。通過(guò)上機(jī)編程來(lái)驗(yàn)證自己編制的程序是否正確,恐怕是大多數(shù)

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論