![數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)_第1頁(yè)](http://file4.renrendoc.com/view3/M01/3B/27/wKhkFmYsK-WACAowAABuGAJAkCw981.jpg)
![數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)_第2頁(yè)](http://file4.renrendoc.com/view3/M01/3B/27/wKhkFmYsK-WACAowAABuGAJAkCw9812.jpg)
![數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)_第3頁(yè)](http://file4.renrendoc.com/view3/M01/3B/27/wKhkFmYsK-WACAowAABuGAJAkCw9813.jpg)
![數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)_第4頁(yè)](http://file4.renrendoc.com/view3/M01/3B/27/wKhkFmYsK-WACAowAABuGAJAkCw9814.jpg)
![數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)_第5頁(yè)](http://file4.renrendoc.com/view3/M01/3B/27/wKhkFmYsK-WACAowAABuGAJAkCw9815.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課程設(shè)計(jì)說(shuō)明書(shū)題目:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)學(xué)院(系):專業(yè)班級(jí):學(xué)號(hào):學(xué)生姓名:指導(dǎo)教師:教師職稱:起止時(shí)間:
課程設(shè)計(jì)(論文)任務(wù)及評(píng)語(yǔ)院(系):教研室:軟件工程學(xué)號(hào)學(xué)生姓名專業(yè)班級(jí)課程設(shè)計(jì)(論文)題目數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)課程設(shè)計(jì)(論文)任務(wù)1.從十個(gè)題目中選擇一個(gè)題目,,規(guī)定每個(gè)題目用標(biāo)準(zhǔn)的C語(yǔ)言程序?qū)崿F(xiàn),此外,完畢思考題一題,思考題須寫(xiě)出相應(yīng)的類C算法即可。2.每個(gè)題目編寫(xiě)源程序時(shí),規(guī)定有主菜單,每個(gè)子功能定義為相應(yīng)的子函數(shù),在主函數(shù)中調(diào)用各子函數(shù),程序結(jié)構(gòu)清楚。根據(jù)題目,選擇合適的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)。輸入的數(shù)據(jù)由鍵盤輸入。分析算法的時(shí)間復(fù)雜度,規(guī)定算法的效率盡也許高。驗(yàn)證排序算法的穩(wěn)定性。指導(dǎo)教師評(píng)語(yǔ)及成績(jī)成績(jī):指導(dǎo)教師簽字:2023年月日目錄第1章 課程設(shè)計(jì)目的與規(guī)定 11.1課程設(shè)計(jì)目的 11.2課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境 11.3課程設(shè)計(jì)的預(yù)備知識(shí) 11.4課程設(shè)計(jì)規(guī)定 1第2章課程設(shè)計(jì)內(nèi)容 22.1題目的選擇 22.2題目的具體實(shí)現(xiàn) 22.3思考題解析 12總結(jié): 14參考文獻(xiàn) 錯(cuò)誤!未定義書(shū)簽。課程設(shè)計(jì)目的與規(guī)定1.1課程設(shè)計(jì)目的本課程設(shè)計(jì)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)、軟件工程專業(yè)的專業(yè)技術(shù)實(shí)踐課。本實(shí)踐課的重要目的是:使學(xué)生學(xué)會(huì)運(yùn)用在課堂中學(xué)過(guò)的理論知識(shí),解決相應(yīng)的實(shí)際問(wèn)題,進(jìn)一步理解和靈活掌握所學(xué)的內(nèi)容,培養(yǎng)學(xué)生理論和實(shí)踐相結(jié)合的能力,培養(yǎng)學(xué)生分析問(wèn)題解決問(wèn)題的能力。同時(shí),在實(shí)驗(yàn)環(huán)節(jié)規(guī)范化、程序設(shè)計(jì)方法等方面受到比較系統(tǒng)和規(guī)范的訓(xùn)練。通過(guò)實(shí)踐設(shè)計(jì)使學(xué)生進(jìn)一步加深對(duì)程序設(shè)計(jì)的規(guī)范化及對(duì)復(fù)雜程序設(shè)計(jì)環(huán)節(jié)的理解。通過(guò)課程設(shè)計(jì),加深對(duì)《數(shù)據(jù)結(jié)構(gòu)》這一課程所學(xué)內(nèi)容的進(jìn)一步理解與鞏固。通過(guò)課程設(shè)計(jì),加深對(duì)結(jié)構(gòu)化設(shè)計(jì)思想的理解,能對(duì)系統(tǒng)功能進(jìn)行分析,并設(shè)計(jì)合理的模塊化結(jié)構(gòu)。通過(guò)課程設(shè)計(jì),提高程序開(kāi)發(fā)功能,能運(yùn)用合理的控制流程編寫(xiě)清楚高效的程序。通過(guò)課程設(shè)計(jì),訓(xùn)練C程序調(diào)試能力,能將一個(gè)中小型各級(jí)組織系統(tǒng)聯(lián)調(diào)通過(guò)。通過(guò)課程設(shè)計(jì),開(kāi)發(fā)一個(gè)中小型系統(tǒng),掌握系統(tǒng)研發(fā)全過(guò)程。通話課程設(shè)計(jì),培養(yǎng)分析問(wèn)題、解決實(shí)際問(wèn)題的能力。1.2課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境PC機(jī),WindowsXP,C++。1.3課程設(shè)計(jì)的預(yù)備知識(shí)C語(yǔ)言程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)。1.4課程設(shè)計(jì)規(guī)定(1)認(rèn)真查找資料,分析每個(gè)題目應(yīng)選擇的數(shù)據(jù)結(jié)構(gòu)(邏輯結(jié)構(gòu)和物理結(jié)構(gòu));(2)準(zhǔn)時(shí)到實(shí)驗(yàn)室調(diào)試程序,遵守實(shí)驗(yàn)室的規(guī)章制度,愛(ài)惜設(shè)備;(3)每個(gè)題目編寫(xiě)源程序時(shí),每個(gè)子功能定義為相應(yīng)的子函數(shù),在主函數(shù)中調(diào)用各子函數(shù),程序結(jié)構(gòu)清楚,有必要的注釋,可讀性強(qiáng)。(4)程序健壯性強(qiáng),當(dāng)數(shù)據(jù)輸入錯(cuò)誤時(shí),要進(jìn)行相應(yīng)的解決;(5)分析算法的時(shí)間復(fù)雜度,規(guī)定算法的效率盡也許高;(6)對(duì)于排序算法,要驗(yàn)證排序算法的穩(wěn)定性。第2章課程設(shè)計(jì)內(nèi)容2.1題目的選擇6、學(xué)生成績(jī)管理系統(tǒng)2.2題目的具體實(shí)現(xiàn)(1)題目應(yīng)實(shí)現(xiàn)的具體功能;eq\o\ac(○,1)錄入學(xué)生成績(jī)信息并保存;eq\o\ac(○,2)可查詢顯示所有學(xué)生的個(gè)人信息;eq\o\ac(○,3)可查詢顯示所有學(xué)生的所學(xué)課程信息;eq\o\ac(○,4)按學(xué)號(hào)或姓名查詢成績(jī)信息;eq\o\ac(○,5)能添加、刪除和修改學(xué)生的成績(jī)信息;(2)題目所選擇的數(shù)據(jù)結(jié)構(gòu)及存儲(chǔ)結(jié)構(gòu);采用線性數(shù)據(jù)結(jié)構(gòu)及鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)(3)完整的源程序#include<stdio.h>#include<stdlib.h>#include<string.h>structstud{longnum;charname[20];doublescore1,score2;};typedefstructstucode{structstudstudent;structstucode*next;}L;voidmenu();voidcreatelist(structstucode**r);voidout(structstucode*r);voidsearch1(structstucode*r);voidsearch2(structstucode*r);voiddel(structstucode**r);voidinsert(structstucode**r);voidchange(structstucode**r);voidmain(){charchoose;intflag=1;structstucode*r=NULL;while(flag){system("cls");menu();choose=getchar();switch(choose){case'1':createlist(&r);out(r);printf("Testingfunction1\nPressanykeytocontinue\n");getchar();getchar();break;case'2':search1(r);printf("Testingfunction1\nPressanykeytocontinue\n");getchar();getchar();break;case'3':search2(r);printf("Testingfunction1\nPressanykeytocontinue\n");getchar();getchar();break;case'4':del(&r);out(r);printf("Testingfunction1\nPressanykeytocontinue\n");getchar();getchar();break;case'5':insert(&r);out(r);printf("Testingfunction1\nPressanykeytocontinue\n");getchar();getchar();break;case'6':out(r);printf("Testingfunction1\nPressanykeytocontinue\n");getchar();getchar();break;case'7':change(&r);out(r);printf("Testingfunction1\nPressanykeytocontinue\n");getchar();getchar();break;case'0':flag=0;printf("Theend.\n");break;default:printf("\nWrongSelection!(選擇錯(cuò)誤,請(qǐng)重選!)\n");getchar();getchar();}}}voidcreatelist(structstucode**r){structstucode*p,*t;longn;chara[20];doubles1,s2;if(*r)*r=NULL;printf("\n請(qǐng)輸入:\n學(xué)號(hào)姓名分?jǐn)?shù)1分?jǐn)?shù)2(若要結(jié)束請(qǐng)輸入四個(gè)為零)\n");scanf("%ld%s%lf%lf",&n,a,&s1,&s2);if(n==0)return;p=(L*)malloc(sizeof(L));p->student.num=n;strcpy(p->,a);p->student.score1=s1;p->student.score2=s2;p->next=NULL;*r=p;scanf("%ld%s%lf%lf",&n,a,&s1,&s2);while(n){t=p;p=(L*)malloc(sizeof(L));p->student.num=n;strcpy(p->,a);p->student.score1=s1;p->student.score2=s2;p->next=NULL;t->next=p;scanf("%ld%s%lf%lf",&n,a,&s1,&s2);}}voidsearch1(structstucode*r){longx;structstucode*p=r;if(!r){printf("沒(méi)有學(xué)生信息可查詢!\n");return;}printf("請(qǐng)輸入要查詢的學(xué)生信息的學(xué)生學(xué)號(hào):\n");scanf("%ld",&x);while(p&&p->student.num!=x)p=p->next;if(p==NULL)printf("Error!Nosuchstudent!\n");elseprintf("%ld%s%.2lf%.2lf\n",p->student.num,p->,p->student.score1,p->student.score2);}voidsearch2(structstucode*r){charm[20];if(!r){printf("沒(méi)有學(xué)生信息可查詢!\n");return;}printf("請(qǐng)輸入要查詢的學(xué)生信息的學(xué)生姓名:\n");scanf("%s",m);while(r&&strcmp(r->,m))r=r->next;if(r==NULL)printf("Error!Nosuchstudent!\n");elseprintf("%ld%s%.2lf%.2lf\n",r->student.num,r->,r->student.score1,r->student.score2);}voiddel(structstucode**r){longk;structstucode*p=*r,*t;if(!(*r)){printf("沒(méi)有學(xué)生信息可刪除!\n");return;}printf("請(qǐng)輸入要?jiǎng)h除的學(xué)生信息的學(xué)生學(xué)號(hào):\n");scanf("%ld",&k);if(p->student.num==k)*r=(*r)->next,free(p);else{while(p->next&&p->next->student.num!=k)p=p->next;if(p->next==NULL)printf("Error!Nosuchstudent!\n");else{t=p->next;p->next=p->next->next;free(t);}}}voidinsert(structstucode**r){longn;chara[20];doubles1,s2;L*p,*t,*k;printf("請(qǐng)輸入要插入的學(xué)生信息的學(xué)生學(xué)號(hào)姓名分?jǐn)?shù)1分?jǐn)?shù)2:\n");scanf("%ld%s%lf%lf",&n,a,&s1,&s2);p=(L*)malloc(sizeof(L));p->student.num=n;p->student.score1=s1;p->student.score2=s2;strcpy(p->,a);if(!(*r)){*r=p;(*r)->next=NULL;return;}if(p->student.num<(*r)->student.num)p->next=(*r),(*r)=p;else{t=*r;k=t;while(t->next&&t->next->student.num<=p->student.num)t=t->next;p->next=t->next;t->next=p;*r=k;}}voidout(structstucode*r){printf("\n\n");if(!r){printf("沒(méi)有學(xué)生信息可輸出!\n");return;}while(r){printf("%ld%s%.2lf%.2lf\n",r->student.num,r->,r->student.score1,r->student.score2);r=r->next;}printf("\n\n");}voidchange(structstucode**r){structstucode*p=*r;longx;longn;chara[20];doubles1,s2;printf("更改的學(xué)生的信息\n");printf("請(qǐng)輸入要查詢的學(xué)生信息的學(xué)生學(xué)號(hào):\n");scanf("%ld",&x);while(p&&p->student.num!=x)p=p->next;if(p==NULL)printf("Error!Nosuchstudent!\n");elseprintf("%ld%s%.2lf%.2lf\n",p->student.num,p->,p->student.score1,p->student.score2);printf("請(qǐng)輸入要修改的學(xué)生信息:\n");scanf("%ld%s%lf%lf",&n,a,&s1,&s2);p->student.num=n;strcpy(p->,a);p->student.score1=s1;p->student.score2=s2;}voidmenu(){printf("\n學(xué)生成績(jī)管理系統(tǒng)\n");printf("\n菜單\n\n");printf("\n1建立鏈表\n");printf("\n2查找某學(xué)號(hào)的學(xué)生信息\n");printf("\n3查找某姓名的學(xué)生信息\n");printf("\n4刪除某學(xué)號(hào)的學(xué)生信息\n");printf("\n5插入新的學(xué)生信息\n");printf("\n6顯示所有學(xué)生的個(gè)人信息\n");printf("\n7更改學(xué)生個(gè)人信息\n");printf("\n0退出\n");printf("\n請(qǐng)選擇您要執(zhí)行的選項(xiàng):\n");}(4)程序的輸入和輸出圖1按學(xué)生學(xué)號(hào)查找結(jié)果:圖2按學(xué)生姓名查找:圖3刪除某學(xué)生的運(yùn)營(yíng)結(jié)果:圖4插入某學(xué)生的運(yùn)營(yíng)結(jié)果:圖5顯示所有學(xué)生的信息:圖6(5)調(diào)試程序中碰到的問(wèn)題及解決方案在調(diào)試search1子函數(shù)由于在查找中移動(dòng)了原指針,導(dǎo)致search1中不能查找,解決方法設(shè)一結(jié)構(gòu)體類型的指針,將原指針賦給該指針,將該指針進(jìn)行移動(dòng)查找。在調(diào)試chance()中,如何對(duì)已有的記錄進(jìn)行從新輸入更改。解決方案為在chance()子函數(shù)中加入一個(gè)查找的程序,也就是說(shuō)先找到要修改的學(xué)生信息,用scanf語(yǔ)句對(duì)要修改的學(xué)生的信息進(jìn)行重新輸入,再將所賦的信息通過(guò)賦值語(yǔ)句將修改后的學(xué)生信息賦給該學(xué)生相應(yīng)的結(jié)構(gòu)體。如何返回一個(gè)結(jié)構(gòu)體中信息,解決方案是采用指針類型,將變量的地址作為實(shí)參賦給子函數(shù)。數(shù)組名代表數(shù)組首地址,用scanf語(yǔ)句賦值字符串時(shí),不用加地址操作符。2.3思考題解析所選擇的思考題: 編寫(xiě)一個(gè)算法,構(gòu)造一棵哈夫曼樹(shù)。程序如下:typedefstruct{ unsignedintweight; unsignedintparent,lchild,rchild;}HTNode,*HuffmanTree;typedefchar**HuffmanCodevoidHnffCodeding(HnffmanTree&HT,&HC,int*w,intn){ if(n<=1)return; m=2*n-1;HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode));for(p=HT;i=1;i<=n;++i,++,++w)*p={*w,0,0,0};for(;i<=m;++i,++p)*p={*w,0,0,0};for(i=n+1;i<=m;++i){Select(HT,i-1,s1,s2);HT[s1].parent=i;HT[s2].parent=i;HT[i].lchild=s1;HT[i].rchild=s2;HT[i].weight=HT[s1].weight+HT[s2].weight;}HC=(HuffmanCode)malloc((n+1)*size(char*));cd=(char*)malloc(n*sizeof(char));cd[n-1]=0;for(i=1;i<=n;++i){ start=n-1; for(c=i;f=HT[i].parent;f!=0;c=f,f=HT[f].parent) if(HT[f].lchild==c)cd[--start]="0"; elsecd[--start]="1";HC[i]=(char*)malloc((n-start)*sizeof(char)); strcpy(HC[i],&cd[start]);}free(cd);}算法分析:哈夫曼樹(shù)構(gòu)造方法如下:根據(jù)給定的n個(gè)權(quán)值{W1,W2,…….Wn}構(gòu)成n課二叉樹(shù)的集合F={T1,T
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版地理八年級(jí)上冊(cè)第二節(jié)《人口》聽(tīng)課評(píng)課記錄3
- 粵教版道德與法治九年級(jí)上冊(cè)3.1.1《可持續(xù)發(fā)展戰(zhàn)略》聽(tīng)課評(píng)課記錄
- 2025年運(yùn)載火箭承力殼段合作協(xié)議書(shū)
- 環(huán)保清潔標(biāo)準(zhǔn)協(xié)議書(shū)(2篇)
- 【部編版】道德與法治九年級(jí)下冊(cè)5.1《走向世界大舞臺(tái)》聽(tīng)課評(píng)課記錄
- 新版湘教版秋八年級(jí)數(shù)學(xué)上冊(cè)第四章一元一次不等式組課題一元一次不等式組聽(tīng)評(píng)課記錄
- 新北師大版數(shù)學(xué)一年級(jí)下冊(cè)《數(shù)一數(shù)》聽(tīng)評(píng)課記錄
- 人教版七年級(jí)道德與法治七年級(jí)上冊(cè)聽(tīng)課評(píng)課記錄:第四單元生命的思考第八課探問(wèn)生命第一課時(shí)《生命可以永恒嗎》
- 湘教版九年級(jí)數(shù)學(xué)下冊(cè)2.2圓心角、圓周角2.2.1圓心角聽(tīng)評(píng)課記錄
- 人教部編版八年級(jí)道德與法治上冊(cè):4.1《尊重他人》聽(tīng)課評(píng)課記錄1
- 2024年山東省淄博市中考?xì)v史試題卷(含答案解析)
- 借名買車的協(xié)議書(shū)范文范本
- 浙江省杭州市2024年中考英語(yǔ)真題(含答案)
- 《2024 ESC血壓升高和高血壓管理指南》解讀
- 歷史公開(kāi)課《第1課中華人民共和國(guó)成立》教案教學(xué)設(shè)計(jì)-第1課中華人民共和國(guó)成立-初二下冊(cè)歷史
- 北京中考英語(yǔ)詞匯表(1600詞匯)
- 20世紀(jì)西方音樂(lè)智慧樹(shù)知到期末考試答案章節(jié)答案2024年北京大學(xué)
- 期末模擬試卷 (試題)-2023-2024學(xué)年六年級(jí)下冊(cè)數(shù)學(xué)人教版
- 塑料 聚氨酯生產(chǎn)用聚醚多元醇 堿性物質(zhì)含量的測(cè)定
- 運(yùn)動(dòng)技能學(xué)習(xí)與控制課件第十二章運(yùn)動(dòng)技能學(xué)習(xí)的反饋
- 食材配送售后服務(wù)方案
評(píng)論
0/150
提交評(píng)論