大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 學(xué)生成績管理系統(tǒng)27475

上傳人:仙*** 文檔編號:85465061 上傳時間:2022-05-05 格式:DOC 頁數(shù):47 大?。?78KB
收藏 版權(quán)申訴 舉報 下載
大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 學(xué)生成績管理系統(tǒng)27475_第1頁
第1頁 / 共47頁
大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 學(xué)生成績管理系統(tǒng)27475_第2頁
第2頁 / 共47頁
大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 學(xué)生成績管理系統(tǒng)27475_第3頁
第3頁 / 共47頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 學(xué)生成績管理系統(tǒng)27475》由會員分享,可在線閱讀,更多相關(guān)《大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 學(xué)生成績管理系統(tǒng)27475(47頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、word 課 程 設(shè) 計 報 告 ] 課程名稱 數(shù)據(jù)結(jié)構(gòu) 課題名稱 學(xué)生成績管理系統(tǒng) 專 業(yè) 通信工程 班 級 1301 學(xué) 號 2 姓 名 momom 指導(dǎo)教師 鏖烽 幀 黃哲

2、 2015年 7月 2日 工程學(xué)院 課 程 設(shè) 計 任 務(wù) 書 課程名稱 數(shù)據(jù)結(jié)構(gòu) 課 題 學(xué)生成績管理系統(tǒng) 專業(yè)班級 通信工程1301 學(xué)生 momom 學(xué) 號 2 指導(dǎo)教師 鏖烽 幀 黃哲 審 批 鏖烽 任務(wù)書下達(dá)日期 2015年 6月 29日 任 務(wù) 完成日期 2015年 7月 5日 目

3、 錄 一、課程設(shè)計的分析4 1.課程設(shè)計目的:4 2.課程設(shè)計題目4 3.需求分析5 二、概要設(shè)計5 三、詳細(xì)設(shè)計6 四、調(diào)試分析11 (1)調(diào)試過程中遇到的問題11 (2)經(jīng)驗和體會11 五、用戶使用說明12 六、測試結(jié)果13 七、附錄18 八、課程設(shè)計評分表37 一、課程設(shè)計的分析 1.課程設(shè)計目的: 課程設(shè)計是對學(xué)生的一種全面綜合訓(xùn)練,是與課堂聽講、自學(xué)和練習(xí)相輔相成的必不可少的一個教學(xué)環(huán)節(jié)。通常,實習(xí)題中的問題比平時的習(xí)題復(fù)雜得多,也更接近實際。實習(xí)著眼于原理與應(yīng)用的結(jié)合點,使讀者學(xué)會如何把書上學(xué)到的知識用于解決實際問題,培養(yǎng)軟件工作所需

4、要的動手能力;另一方面,能使書上的知識變“活〞,起到深化理解和靈活掌握教學(xué)容的目的。平時的練習(xí)較偏重于如何編寫功能單一的“小〞算法,而實習(xí)題是軟件設(shè)計的綜合訓(xùn)練,包括問題分析、總體結(jié)構(gòu)設(shè)計、用戶界面設(shè)計、程序設(shè)計根本技能和技巧,多人合作,以至一整套軟件工作規(guī)的訓(xùn)練和科學(xué)作風(fēng)的培養(yǎng)。 【課題】 學(xué)生成績管理系統(tǒng) 【問題描述】 根據(jù)自己這個學(xué)期的課程表,設(shè)計一個成績管理系統(tǒng)管理自己班的成績;每個學(xué)生記錄包含學(xué)號、、每門課程成績、總分以與加權(quán)平均分。 【根本要求】 一個完整的成績管理系統(tǒng)應(yīng)具有以下功能: (1)輸入:成績錄入; (2)輸出:輸出成績表; (3)插入:在成績表中適

5、當(dāng)位置插入某個學(xué)生成績; (4)刪除:在成績表中刪除某個學(xué)生成績; (5)查找:根據(jù)某個關(guān)鍵字查找某個學(xué)生成績; (6)排序:根據(jù)某一個或某幾個關(guān)鍵字進(jìn)展排序; (7)篩選:根據(jù)某個關(guān)鍵字篩選出符合某些條件的數(shù)據(jù); 【測試數(shù)據(jù)】 用本班的成績總表作為測試數(shù)據(jù)。 本次課程設(shè)計的題目是學(xué)生成績管理系統(tǒng),要求可以存入學(xué)生,學(xué)生信息包括學(xué)生學(xué)號、、每科成績和平均成績以與加權(quán)平均成績等。該系統(tǒng)主要有以下七個功能,即對學(xué)生信息進(jìn)展:輸入、輸出、插入、刪除、查找、排序、篩選等功能。 對學(xué)生進(jìn)展操作可以有很多思路,而我選用的是單鏈表村學(xué)生信息那一條思路,即設(shè)置一個單鏈表,其中節(jié)點數(shù)據(jù)域

6、保存學(xué)生根本信息。由于我們學(xué)號比擬長,用整型數(shù)據(jù)無法保存,所以我定義char型的字符串來保存學(xué)號和。用一個數(shù)組來保存學(xué)生每一科的成績,此外在定義一個總分和平均分變量。定義學(xué)生如下:typedef struct Student { char mun[12]; //學(xué)號 char name[20]; // float score[8]; //成績 float all_score; //總分 float ave_score; //加權(quán)平均分 struct Student *next; }LinkList; 二、概要設(shè)計 本程序采用鏈表的方法將每一個學(xué)生設(shè)置成

7、為一個鏈表中的數(shù)據(jù)節(jié)點,節(jié)點中有字符型mun[12]〔學(xué)號〕、name[20]〔〕、浮點型數(shù)據(jù)score[8]〔放置每一科成績的數(shù)組〕、all_score〔總分〕和ave_score〔加權(quán)平均分〕。 主函數(shù)中在執(zhí)行成績管理系統(tǒng)之前會先創(chuàng)建一個鏈表,并調(diào)用void InitList (LinkList *&L)函數(shù)來初始化鏈表;而后進(jìn)入菜單項選擇擇項選擇功能進(jìn)展操作,主程序流程圖如下: 三、詳細(xì)設(shè)計 1、添加學(xué)生: 2、輸出學(xué)生: 創(chuàng)建節(jié)點s

8、 LinkList *p=L->next; 輸入學(xué)生信息,計算總分與加權(quán)分for(m=1;m<=總?cè)藬?shù)&&p!=NULL;m++) r->next=s;r=s;〔尾插法插入鏈表〕輸出學(xué)生信息,p=p->nextcount=count+1;學(xué)生總數(shù)加1 3、插入學(xué)生4、刪除學(xué)生 輸入要插入的位置 數(shù)字選擇刪除方式 scanf("%d",&w); 按編號刪除和學(xué)號刪除 調(diào)用插入函數(shù)

9、 1編號 調(diào)用Delete_Student Insert_Student(h,w); 2學(xué)號 調(diào)用Locate_Student找到 學(xué)生位置,在用Delete_Student 的流程圖如下: Insert_Student 函數(shù) Delete_Student的函數(shù)流程圖: Locate_Student函數(shù)的流程圖與如下:Locate_Student1的流程圖類似,不再重復(fù)了 5查找學(xué)生:調(diào)用Se

10、ek_Student函數(shù),分為按學(xué)號查找和按查找 1按編號 調(diào)用Locate_Student函數(shù)返回i在調(diào)用Out_one_Student輸出第i個學(xué)生 2 按調(diào)用Locate_Student1函數(shù)返回i在調(diào)用Out_one_Student輸出第i個學(xué)生 6排序函數(shù) 調(diào)用Queue_Student函數(shù):其中有按學(xué)號,總分,各科成績排序 我這里采用的是冒泡排序法進(jìn)展排序,分別定義了兩個節(jié)點指針q指向頭指針p指向q的下一個節(jié)點,在進(jìn)入雙重循環(huán)進(jìn)展比擬排序 流程圖如下: 排序的方法都類似,知識比擬數(shù)據(jù)不同,所以就沒有一一畫出來了 7 篩選 創(chuàng)建另一個鏈表r用于存

11、篩選出來的學(xué)生,并調(diào)用output_Student函數(shù)輸出 篩選程序流程圖如下: 篩選程序又分為1 按總分選 2 全部與格的人 3 按各科成績 1 而總分篩選主要是輸入一個數(shù)值,判斷數(shù)據(jù)是否大于輸入數(shù)據(jù),大于的都輸出 2 去不幾個的人通過比擬每一科成績是否都大于60分,大于的就選出插入新鏈表并輸出 3 各科成績的話是只比擬其中一科來創(chuàng)建鏈表并輸出 其比擬流程圖都如上圖所示,這里便不再一一畫出來了。 四、調(diào)試分析 (1)調(diào)試過程中遇到的問題是如何解決的以與對設(shè)計與實現(xiàn)的回顧討論和分析 在調(diào)試過程中遇到的第一個問題是輸出學(xué)生的問題,因為輸出的問題,其中總是發(fā)現(xiàn)輸出亂碼

12、,找了好久,后來終于發(fā)現(xiàn)是輸入時出了問題,因為我定義了字符串型,而字符串長度我定義了20,在創(chuàng)建節(jié)點的時候我卻把name[20]給了學(xué)生節(jié)點,導(dǎo)致輸出時地址錯誤而輸出亂碼。 第二個問題是查找,我開始一直想不到怎么把查找到的學(xué)生輸出,后來想了很久,找到了方法,我先通過查找關(guān)鍵字去找到該學(xué)生是在鏈表的那個位置,在通過返回的位置的值來輸出想要輸出的那個學(xué)生,所以就定義了Locate_Student和Out_one_Student來完成查找功能。 第三個問題是篩選功能的實現(xiàn),我本來想通過比擬,將符合關(guān)鍵字的學(xué)生篩選出來在輸出,結(jié)果發(fā)現(xiàn)輸出函數(shù)是已經(jīng)定義成一次性全部輸出的形式。導(dǎo)致我一直想不到好的方

13、法來進(jìn)展這個功能的代碼編寫。后來經(jīng)過教師的指導(dǎo),我知道了一種新的方法來編寫,就是通過創(chuàng)建一個新的學(xué)生鏈表來存已經(jīng)篩選出來的學(xué)生。然后在通過輸出函數(shù)來將新鏈表進(jìn)展輸出,這樣就可以達(dá)到篩選的目的。 改良方法:現(xiàn)在想了一下,其實可以將輸出函數(shù)進(jìn)展改良,改成一個一個學(xué)生輸出的形式,在通過一個判斷語句進(jìn)展選擇性輸出,用這個輸出的方法可以減少代碼的的量,而達(dá)到同樣的效果。 第四個問題是主函數(shù)的問題,因為我想讓主函數(shù)看起來簡潔一點,就把主函數(shù)分成兩局部,一局部用于選擇操作,另一局部用于進(jìn)展選擇好的操作,可是這樣一來卻出現(xiàn)了問題,就是輸出數(shù)據(jù)之后無法暫停在輸出界面,而是閃了一下就退出來進(jìn)入主界面了,這個問

14、題我開始以為是輸出函數(shù)的問題,結(jié)果我去改了輸出函數(shù),結(jié)果還是無法停留。后來知道原因了,主函數(shù)退出switch循環(huán)之后會立即回到主菜單界面,到時無法停在輸出界面。我在主函數(shù)最后加一個system〔“pause〞〕之后才打到可以觀察到的地方。 改良方法:可以將主函數(shù)定義成一個,不用分開,去掉for〔;;〕這個循環(huán)會好點。 (2)經(jīng)驗和體會 本次課程設(shè)計的題目我一開始看到的時候以為很容易就能做出來,所以只是大概想了一下思路,就直接開始了,其實這個實驗可以用順序表做會思路更清晰一些,我沒有選擇順序表來做,因為我在單鏈表這一局部有點模糊,所以想挑戰(zhàn)一下用單鏈表來做。這個程序的每一個代碼都是我經(jīng)

15、過一步一步分析寫出來的,在編寫的過程中遇到了很多的阻礙,很多自己無法預(yù)知的錯誤,在不斷的找錯過程中,我感覺到自己在c語言這一方面的不足,對算法的精髓還不是很了解, 對于單鏈表的操作也不是很熟練,尤其是在節(jié)點指針多起來的時候會有點亂,甚至搞不清指針到底指向哪里了。 然而,在編程過程中,一次次的測試失敗,再一次次修改正確卻讓我慢慢的熟悉了數(shù)據(jù)結(jié)構(gòu)一些用法,漸漸的知道要編寫一個系統(tǒng),需要各種功能協(xié)調(diào)才能算一個系統(tǒng),而每一個功能有需要很多函數(shù)之間的相互聯(lián)系來調(diào)用與支撐。同時要想將課程設(shè)計完成的好,就需要積極提問,遇到不懂的地方可以找教師或同學(xué)相互交流經(jīng)驗,這樣才會更加有效率的完成課設(shè)。 經(jīng)過這

16、一段時間的課設(shè),我學(xué)到的不僅僅是數(shù)據(jù)結(jié)構(gòu)的想關(guān)知識,也懂得了團隊協(xié)作的重要性,知道學(xué)習(xí)需要真正扎實去學(xué)習(xí),這樣才能真正學(xué)到知識,并靈活運用這些所學(xué)知識。 五、用戶使用說明 1、添加學(xué)生功能:進(jìn)入系統(tǒng)后先選擇1回車即可進(jìn)入輸入界面,然后按照提示輸入學(xué)生學(xué)號、和數(shù)據(jù)結(jié)構(gòu)、數(shù)字信號處理、數(shù)字電子技術(shù)根底的分?jǐn)?shù)在按回車,如果還想再繼續(xù)添加就按1繼續(xù),否如此可以按任何鍵退出。 2、輸出學(xué)生:用戶在輸入完學(xué)生數(shù)據(jù)后既可以按2輸出所輸入的全部學(xué)生 3、插入學(xué)生:用戶需在主界面按3即可以進(jìn)入插入界面,此時可以按數(shù)字鍵在選擇要插入的位置,如輸入1即可以將要插入的學(xué)生插入到第一個位置,可以在主界面輸入

17、2進(jìn)展查看是否插入到指定位置。 4、刪除學(xué)生:用戶可以在主界面輸入4進(jìn)入刪除,在通過選擇編號來刪除要刪除的學(xué)生。 5、查找:查找查找功能有按學(xué)號和查找,如按一進(jìn)入學(xué)號查找,可以輸入要查找的學(xué)號,回車即可以輸出要查找的學(xué)生。 6、排序:排序可以通過學(xué)號,總分,和各科成績,輸入1可以按學(xué)號從小到大排序,輸入2可以按總分從小到大進(jìn)展排序,輸入3可以進(jìn)入科目選擇,再按1進(jìn)展數(shù)據(jù)結(jié)構(gòu)排序,2進(jìn)展數(shù)字型號處理排序,3進(jìn)展數(shù)電的排序。 7、篩選:可以按1進(jìn)入總分篩選,進(jìn)入之后輸入篩選多少分以上的人,輸入分?jǐn)?shù),如:200,即可輸出所有大于200分的學(xué)生;在篩選界面輸入2可以輸出全部與格的學(xué)生;按3可以

18、進(jìn)入各科成績的篩選,再按1選出所有數(shù)據(jù)結(jié)構(gòu)與格的學(xué)生、再按2選出所有數(shù)字信號處理與格的學(xué)生、再按3選出所有數(shù)字電子技術(shù)根底與格的學(xué)生。 8、退出:退出程序只需要在主界面按0再回車即可以退出程序。 六、測試結(jié)果 1、添加學(xué)生: 2、輸出學(xué)生: 3、插入學(xué)生: 4、刪除學(xué)生: 5、查找學(xué)生: 6、排序 7、篩選 0、退出程序: 七、附錄 #include #include #include #include int count

19、 =0; //記錄學(xué)生人數(shù) typedef struct Student { char mun[12]; //學(xué)號 char name[20]; // float score[8]; //成績 float all_score; //總分 float ave_score; //加權(quán)平均分 struct Student *next; }LinkList; void InitList (LinkList *&L) //初始化鏈表 { L=(LinkList *)malloc(sizeof(LinkList)); L->next=NULL;

20、 } void Creat_Student (LinkList *&L) //輸入學(xué)生并添加到鏈表里面 { LinkList *r=L,*s; int i=0,j=1; float all=0,ave,a[8]; while(j==1) { while(r->next!=NULL) r=r->next; s=(LinkList *)malloc(sizeof(LinkList)); s->next=NULL; printf("輸入學(xué)生學(xué)號、、每科成績\n"); printf("學(xué)號:"); scanf("%s",&s->mun); printf

21、(":"); scanf("%s",&s->name);/*數(shù)據(jù)結(jié)構(gòu)3.0、數(shù)字信號處理4.0、數(shù)字電子技術(shù)根底2.5 這里只輸入三門成績作為示*/ for(i=0;i<3;i++) { if(i==0) { printf("輸入數(shù)據(jù)結(jié)構(gòu)分?jǐn)?shù)\n"); scanf("%f",&a[i]); s->score[i]=a[i]; } if(i==1) { printf("輸入數(shù)字信號處理分?jǐn)?shù)\n"); scanf("%f",&a[i]); s->score[i]=a[i]; } if(i==2) { printf("輸入數(shù)字電子技術(shù)根底分?jǐn)?shù)\n"); sc

22、anf("%f",&a[i]); s->score[i]=a[i]; } } all=a[0]+a[1]+a[2]; s->all_score=all; ave=(a[0]*3.0+a[1]*4.0+a[2]*2.5)/9.5; s->ave_score=ave; r->next=s; r=s; count=count+1; printf("是否繼續(xù)?〔按1繼續(xù),其他退出?!?); scanf("%d",&j); } } void output_Student (LinkList *&L,int n) //輸出全部學(xué)生 { LinkList *

23、p=L->next; if(p==NULL) { printf("沒有學(xué)生成績!請?zhí)砑訉W(xué)生。。。\n"); return; } printf("\t\t 學(xué)生成績表 \n"); printf("編號 學(xué)號 數(shù)據(jù)結(jié)構(gòu) 數(shù)字信號 數(shù)字電路 總分 加權(quán)平均分\n"); int m; for(m=1;m<=n&&p!=NULL;m++) { printf("%-5d%-9s%-9s%-10.1f%-10.1f%-10.1f%-8.1f %-10.1f\n",m,p->mun,p->name,p->score[0],p->scor

24、e[1],p->score[2],p->all_score,p->ave_score); p=p->next; } } void Delete_Student(LinkList *&L,int i) //刪除第i個學(xué)生 { int j=0; LinkList *p=L,*q; if (i<=0) { printf("沒有找到該學(xué)生"); return; } while(jnext; } if(p==NULL) { printf("沒有找到該學(xué)生"); return ; } else {

25、 q=p->next; if(q==NULL) return ; p->next=q->next; free(q); count=count-1; printf("刪除成功!\n"); return; } } int Locate_Student(LinkList *L,char* mun) //按學(xué)號定位,返回第i個學(xué)生 { int i=1; LinkList *p=L->next; while(p!=NULL&&strcmp(p->mun,mun)!=0) { i++; p=p->next; } if(p==NULL) return (0);

26、 else return (i); } int Locate_Student1(LinkList *L,char* name) //按定位,返回第i個學(xué)生 { int i=1; LinkList *p=L->next; while(p!=NULL&&strcmp(p->name,name)!=0) { i++; p=p->next; } if(p==NULL) return (0); else return (i); } void Queue_Subject(LinkList *&L) //不同科目排序 {

27、int i; LinkList *q,*p,*t1,*t2; printf("請輸入科目的代號:1 數(shù)據(jù)結(jié)構(gòu) 2 數(shù)字信號處理 3 數(shù)電\n請輸入:"); scanf("%d",&i); if(i>=1||i<=3) { for(q=L;q->next!=NULL;q=q->next) for(p=q->next;p->next!=NULL;p=p->next) { if(q->next->score[i-1]>p->next->score[i-1]) { if(q->next==p) { t1=p->next; p->next=p->next->next; t1

28、->next=q->next; q->next=t1; p=t1; } else { t1=p->next; t2=q->next; p->next=p->next->next; q->next=q->next->next; t1->next=q->next; q->next=t1; t2->next=p->next; p->next=t2; } } } } else { printf("沒有找到該科目!\n"); return; } } void Queue_Student(LinkList *&L) //排序

29、函數(shù) { int i,j=1; printf("1、按照學(xué)號 2、總分3、按各科分排序\n請輸入:"); scanf("%d",&i); LinkList *q,*p,*t1,*t2; switch(i) { case 1: //學(xué)號排序 for(q=L;q->next!=NULL;q=q->next) for(p=q->next;p->next!=NULL;p=p->next) { if(strcmp(q->next->mun,p->next->mun)==1) {

30、if(q->next==p) { t1=p->next; p->next=p->next->next; t1->next=q->next; q->next=t1; p=t1; } else { t1=p->next; t2=q->next; p->next=p->next->next; q->next=q->next->next; t1->next=q->next; q->next=t1; t2->next=p->next; p->next=t2; } } } break; case 2:

31、 //總分排序 for(q=L;q->next!=NULL;q=q->next) for(p=q->next;p->next!=NULL;p=p->next) { if(q->next->all_score>p->next->all_score) { if(q->next==p) { t1=p->next; p->next=p->next->next; t1->next=q->next; q->next=t1; p=t1; } else { t1=p->next; t2=q->next; p->next=p->next->next; q->ne

32、xt=q->next->next; t1->next=q->next; q->next=t1; t2->next=p->next; p->next=t2; } } } break; case 3: Queue_Subject(L); //科目排序 break; } } void Out_one_Student(LinkList *L,int i) //輸出第i個學(xué)生 { int j=0; LinkList *p=L; while(jnext; } printf("%-9s%-9s%-10.1f%-10.1

33、f%-10.1f%-8.1f %-10.1f\n",p->mun,p->name,p->score[0],p->score[1],p->score[2],p->all_score,p->ave_score); } int Seek_Student(LinkList *L) //查找學(xué)生 1 按學(xué)號查找 2 按查找 { int m; printf("1 按學(xué)號查找 2 按查找 3 退出\n請輸入:"); scanf("%d",&m); switch(m) { case 1: char a[12]; printf("輸入學(xué)號:"); scanf("%s",&a); r

34、eturn (Locate_Student(L,a)); //返回學(xué)號查找到的值 break; case 2: char b[20]; printf("輸入:"); scanf("%s",&b); return(Locate_Student1(L,b)); break; case 3: break; } } void Filter_Student(LinkList *&L) //篩選 { LinkList *s,*p=L->next,*r,*q; int y,count2=0; printf("1 按總分選 2 全部與格的人 3 按各科成績 4

35、 退出\n請輸入:"); scanf("%d",&y); switch(y) { case 1: s=(LinkList *)malloc(sizeof(LinkList)); q=s; int i; float all; printf("您要總分多少分以上的人,請輸入:"); scanf("%f",&all); for (i=0;inext) { if (p==NULL) { printf("沒有"); return; } if(p->all_score>all) { r=(LinkList *)malloc(sizeo

36、f(LinkList)); strcpy(r->mun,p->mun); strcpy(r->name,p->name); r->score[1]=p->score[1]; r->score[2]=p->score[2]; r->score[0]=p->score[0]; r->all_score=p->all_score; r->ave_score=p->ave_score; q->next=r; q=q->next; q->next=NULL; count2++; } } output_Student(s,count2); free(s); break;

37、 case 2: s=(LinkList *)malloc(sizeof(LinkList)); q=s; int j; for (j=0;jnext) { if (p==NULL) { printf("沒有"); return; } if(p->score[0]>59&&p->score[1]>59&&p->score[2]>59) { r=(LinkList *)malloc(sizeof(LinkList)); strcpy(r->mun,p->mun); strcpy(r->name,p->name); r->sco

38、re[1]=p->score[1]; r->score[2]=p->score[2]; r->score[0]=p->score[0]; r->all_score=p->all_score; r->ave_score=p->ave_score; q->next=r; q=q->next; q->next=NULL; count2++; } } output_Student(s,count2); free(s); break; case 3: s=(LinkList *)malloc(sizeof(LinkList)); q=s; int k,x; print

39、f("選擇 1 數(shù)據(jù)結(jié)構(gòu)與格的 2 數(shù)字信號處理與格的 3 數(shù)電與格的\n"); printf("請輸入:"); scanf("%d",&x); for (k=0;knext) { if (p==NULL) { printf("沒有"); return; } if(p->score[x-1]>59) { r=(LinkList *)malloc(sizeof(LinkList)); strcpy(r->mun,p->mun); strcpy(r->name,p->name); r->score[1]=p->score[1]; r

40、->score[2]=p->score[2]; r->score[0]=p->score[0]; r->all_score=p->all_score; r->ave_score=p->ave_score; q->next=r; q=q->next; q->next=NULL; count2++; } } output_Student(s,count2); free(s); break; case 4: break; } } bool Insert_Student(LinkList *&L,int i) //插入學(xué)生 { int j=0; Li

41、nkList *p=L,*s; if (i<=0) { printf("對不起,沒有該位置!\n"); return false; } while(jnext; } if(p==NULL) { printf("對不起,沒有該位置!\n"); return false; } else { s=(LinkList *)malloc(sizeof(LinkList)); s->next=NULL; float all,ave,score; printf("輸入學(xué)生學(xué)號、、每科成績\n"); printf

42、("學(xué)號:"); scanf("%s",&s->mun); printf(":"); scanf("%s",&s->name); for(i=0;i<3;i++) { if(i==0) { printf("輸入數(shù)據(jù)結(jié)構(gòu)分?jǐn)?shù)\n"); scanf("%f",&score); s->score[i]=score; } if(i==1) { printf("輸入數(shù)字信號處理分?jǐn)?shù)\n"); scanf("%f",&score); s->score[i]=score; } if(i==2) { printf("輸入數(shù)字電子技術(shù)根底分?jǐn)?shù)\n"); scanf("%

43、f",&score); s->score[i]=score; } } all=s->score[1]+s->score[2]+s->score[0]; s->all_score=all; ave=(s->score[0]*3.0+s->score[1]*4.0+s->score[2]*2.5)/9.5; s->ave_score=ave; s->next=p->next; p->next=s; count++; printf("插入成功\n"); return true; } } int menu_select() /*菜單項選擇擇程序*/

44、{ int c; do{ system("cls"); printf("\n\t 歡迎使用學(xué)生成績管理系統(tǒng) \n"); printf("\t 1. 添加學(xué)生 \n"); printf("\t 2. 輸出學(xué)生 \n"); printf("\t 3. 插入學(xué)生 \n"); printf("\t 4. 刪除學(xué)生 \n"); printf("\t 5. 查找學(xué)生 \n"); printf("\t 6. 排序 \n"); printf("\t

45、 7. 篩選 \n"); printf("\t 0. 退出程序 \n"); printf("\t **************************\n"); printf("\t 請您選擇(0-7):"); scanf("%d",&c); } while(c<0||c>7); return(c); } void main() { LinkList *h; InitList(h);

46、 //初始化 for(;;) { switch(menu_select()) { case 1: //添加學(xué)生 Creat_Student(h); //添加學(xué)生 break; case 2: output_Student(h,count); //輸出全部學(xué)生 break; case 3: //插入 int w; printf("輸入插入的位置,位置為大于或等于1的數(shù),〔如1、2...〕\n"); printf("請輸入:");

47、 scanf("%d",&w); Insert_Student(h,w); break; case 4: //刪除 printf("選擇刪除方式:1 按編號 2 按學(xué)號 3 退出\n"); printf("請輸入:"); int i; scanf("%d",&i); if(i==1) { int j; printf("輸入編號:");scanf("%d",&j); Delete_Student(h,j); break; } if(i==2) { int j; char s[12]; printf("輸入學(xué)號

48、:");scanf("%s",&s); j=Locate_Student(h,s); Delete_Student(h,j); break; } if(i==3) break; case 5://查找 int z; z=Seek_Student(h); if(z) { printf("學(xué)號 數(shù)據(jù)結(jié)構(gòu) 數(shù)字信號 數(shù)字電路 總分 加權(quán)平均分\n"); Out_one_Student(h,z); } break; case 6: //排序 Queue_Student(h); output_

49、Student(h,count); break; case 7: //篩選 Filter_Student(h); break; case 0: printf("\n\t使用,再見!\n"); /*退出*/ printf("\n\t"); system("pause"); exit(0); } system("pause"); } } 課程設(shè)計評分表 課程名稱: 項 目 評 價 設(shè)計方案的合理性與創(chuàng)造性 設(shè)計與調(diào)試結(jié)果 設(shè)計說明書的質(zhì)量 辯論述與回答如下問題情況 課程設(shè)計周表現(xiàn)情況 綜合成績 教師簽名: 日 期: 47 / 47

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!