數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)管理系統(tǒng)_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)管理系統(tǒng)_第2頁(yè)
已閱讀5頁(yè),還剩16頁(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ì) 說(shuō) 明 書(shū)題目:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)學(xué)院(系):專(zhuān)業(yè)班級(jí): 學(xué) 號(hào): 學(xué)生姓名: 指導(dǎo)教師: 教師職稱(chēng): 起止時(shí)間: 課程設(shè)計(jì)(論文)任務(wù)及評(píng)語(yǔ)院(系): 教研室: 軟件工程學(xué) 號(hào)學(xué)生姓名專(zhuān)業(yè)班級(jí)課程設(shè)計(jì)(論文)題目數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)課程設(shè)計(jì)(論文)任務(wù)1從十個(gè)題目中選擇一個(gè)題目,,要求每個(gè)題目用標(biāo)準(zhǔn)的C語(yǔ)言程序?qū)崿F(xiàn),另外,完成思考題一題,思考題須寫(xiě)出相應(yīng)的類(lèi)C算法即可。2每個(gè)題目編寫(xiě)源程序時(shí),要求有主菜單,每個(gè)子功能定義為相應(yīng)的子函數(shù),在主函數(shù)中調(diào)用各子函數(shù),程序結(jié)構(gòu)清晰。3 根據(jù)題目,選擇合適的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)。4 輸入的數(shù)據(jù)由鍵盤(pán)輸入。5 分析算法的時(shí)間復(fù)雜度,

2、要求算法的效率盡可能高。6 驗(yàn)證排序算法的穩(wěn)定性。指導(dǎo)教師評(píng)語(yǔ)及成績(jī)成績(jī): 指導(dǎo)教師簽字:2012 年 月 日. v.目 錄第1章課程設(shè)計(jì)目的與要求11.1 課程設(shè)計(jì)目的11.2 課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境11.3 課程設(shè)計(jì)的預(yù)備知識(shí)11.4 課程設(shè)計(jì)要求1第2章課程設(shè)計(jì)內(nèi)容22.1題目的選擇22.2 題目的具體實(shí)現(xiàn)22.3 思考題解析12總結(jié):14參考文獻(xiàn)錯(cuò)誤!未定義書(shū)簽。. v.第1章 課程設(shè)計(jì)目的與要求1.1 課程設(shè)計(jì)目的本課程設(shè)計(jì)是計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)、軟件工程專(zhuān)業(yè)的專(zhuān)業(yè)技術(shù)實(shí)踐課。 本實(shí)踐課的主要目的是:使學(xué)生學(xué)會(huì)利用在課堂中學(xué)過(guò)的理論知識(shí),解決相應(yīng)的實(shí)際問(wèn)題,深入理解和靈活掌握所學(xué)的內(nèi)容,

3、培養(yǎng)學(xué)生理論和實(shí)踐相結(jié)合的能力,培養(yǎng)學(xué)生分析問(wèn)題解決問(wèn)題的能力。同時(shí),在實(shí)驗(yàn)步驟規(guī)范化、程序設(shè)計(jì)方法等方面受到比較系統(tǒng)和規(guī)范的訓(xùn)練。通過(guò)實(shí)踐設(shè)計(jì)使學(xué)生進(jìn)一步加深對(duì)程序設(shè)計(jì)的規(guī)范化及對(duì)復(fù)雜程序設(shè)計(jì)步驟的理解。通過(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)題的能力

4、。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ì)要求(1)認(rèn)真查找資料,分析每個(gè)題目應(yīng)選擇的數(shù)據(jù)結(jié)構(gòu)(邏輯結(jié)構(gòu)和物理結(jié)構(gòu));(2)按時(shí)到實(shí)驗(yàn)室調(diào)試程序,遵守實(shí)驗(yàn)室的規(guī)章制度,愛(ài)護(hù)設(shè)備;(3)每個(gè)題目編寫(xiě)源程序時(shí),每個(gè)子功能定義為相應(yīng)的子函數(shù),在主函數(shù)中調(diào)用各子函數(shù),程序結(jié)構(gòu)清晰,有必要的注釋?zhuān)勺x性強(qiáng)。(4)程序健壯性強(qiáng),當(dāng)數(shù)據(jù)輸入錯(cuò)誤時(shí),要進(jìn)行相應(yīng)的處理; (5)分析算法的時(shí)間復(fù)雜度,要求算法的效率盡可能高;(6)對(duì)于排序算法,要驗(yàn)證排序算法的穩(wěn)定性。第2章 課程設(shè)計(jì)內(nèi)容2.1題目的選擇6、學(xué)生成績(jī)管理系統(tǒng)

5、2.2 題目的具體實(shí)現(xiàn)(1)題目應(yīng)實(shí)現(xiàn)的具體功能;錄入學(xué)生成績(jī)信息并保存;可查詢顯示所有學(xué)生的個(gè)人信息;可查詢顯示所有學(xué)生的所學(xué)課程信息;按學(xué)號(hào)或姓名查詢成績(jī)信息;能添加、刪除和修改學(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> struct stud long num; char name20; double score1,score2; ; typedef struct stucode st

6、ruct stud student ; struct stucode *next; L; void menu(); void createlist(struct stucode *r); void out(struct stucode *r); void search1(struct stucode *r); void search2(struct stucode *r); void del(struct stucode *r); void insert(struct stucode *r);void change(struct stucode *r); void main() char ch

7、oose; int flag=1; struct stucode *r=NULL; while(flag) system("cls"); menu(); choose=getchar(); switch(choose) case '1': createlist(&r); out(r); printf("Testing function 1nPress any key to continuen"); getchar();getchar(); break;case '2': search1(r); printf(&qu

8、ot;Testing function 1nPress any key to continuen"); getchar(); getchar(); break; case '3': search2(r); printf("Testing function 1nPress any key to continuen"); getchar(); getchar(); break; case '4': del(&r); out(r); printf("Testing function 1nPress any key to

9、continuen"); getchar(); getchar(); break; case '5': insert(&r); out(r); printf("Testing function 1nPress any key to continuen"); getchar(); getchar(); break;case '6':out(r);printf("Testing function 1nPress any key to continuen");getchar(); getchar();break

10、;case '7':change(&r);out(r);printf("Testing function 1nPress any key to continuen"); getchar(); getchar(); break;case '0': flag=0; printf("The end.n"); break; default: printf("nWrong Selection!(選擇錯(cuò)誤,請(qǐng)重選!)n");getchar();getchar(); void createlist(struc

11、t stucode *r) struct stucode *p,*t; long n; char a20; double s1,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.

12、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

13、%lf%lf",&n,a,&s1,&s2); void search1(struct stucode *r) long x; struct stucode *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("Er

14、ror! No such student !n"); else printf("%ld%s%.2lf%.2lfn",p->student.num,p->,p->student.score1,p->student.score2); void search2(struct stucode *r) char m20; if(!r) printf("沒(méi)有學(xué)生信息可查詢!n"); return ; printf(" 請(qǐng)輸入要查詢的學(xué)生信息的學(xué)生姓名:n"); scanf("%s

15、",m); while(r&&strcmp(r->,m) r=r->next; if(r=NULL) printf("Error! No such student !n"); else printf("%ld%s%.2lf%.2lfn",r->student.num,r->,r->student.score1,r->student.score2); void del(struct stucode *r) long k; struct stucod

16、e *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

17、! No such student !n"); else t=p->next; p->next=p->next->next; free(t); void insert(struct stucode *r) long n; char a20; double s1,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-&g

18、t;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

19、) t=t->next; p->next=t->next; t->next=p; *r=k; void out(struct stucode *r) printf("nn"); if(!r) printf("沒(méi)有學(xué)生信息可輸出!n"); return ; while(r) printf("%ld%s%.2lf%.2lfn",r->student.num,r->,r->student.score1,r->student.score2); r=r->next;

20、printf("nn"); void change(struct stucode *r)struct stucode *p=*r;long x;long n; char a20; double s1,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!

21、 No such student !n"); else printf("%ld%s%.2lf%.2lfn",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->

22、student.score1=s1; p->student.score2=s2; void menu() printf("n 學(xué)生成績(jī)管理系統(tǒng)n"); printf("n 菜單nn"); printf("n 1建立鏈表n"); printf("n 2查找某學(xué)號(hào)的學(xué)生信息n"); printf("n 3查找某姓名的學(xué)生信息n"); printf("n 4刪除某學(xué)號(hào)的學(xué)生信息n");printf("n 5插入新的學(xué)生信息n");printf("

23、n 6顯示所有學(xué)生的個(gè)人信息n");printf("n 7更改學(xué)生個(gè)人信息n"); printf("n 0退出n"); printf("n 請(qǐng)選擇您要執(zhí)行的選項(xiàng):n"); (4)程序的輸入和輸出圖1按學(xué)生學(xué)號(hào)查找結(jié)果:圖2按學(xué)生姓名查找:圖3刪除某學(xué)生的運(yùn)行結(jié)果:圖4插入某學(xué)生的運(yùn)行結(jié)果:圖5顯示所有學(xué)生的信息:圖6(5)調(diào)試程序中遇到的問(wèn)題及解決方案在調(diào)試search1子函數(shù)由于在查找中移動(dòng)了原指針,導(dǎo)致search1中不能查找,解決方法設(shè)一結(jié)構(gòu)體類(lèi)型的指針,將原指針賦給該指針,將該指針進(jìn)行移動(dòng)查找。在調(diào)試chance()

24、中,如何對(duì)已有的記錄進(jìn)行從新輸入更改。解決方案為在chance()子函數(shù)中加入一個(gè)查找的程序,也就是說(shuō)先找到要修改的學(xué)生信息,用scanf語(yǔ)句對(duì)要修改的學(xué)生的信息進(jìn)行重新輸入,再將所賦的信息通過(guò)賦值語(yǔ)句將修改后的學(xué)生信息賦給該學(xué)生對(duì)應(yīng)的結(jié)構(gòu)體。如何返回一個(gè)結(jié)構(gòu)體中信息,解決方案是采用指針類(lèi)型,將變量的地址作為實(shí)參賦給子函數(shù)。數(shù)組名代表數(shù)組首地址,用scanf語(yǔ)句賦值字符串時(shí),不用加地址操作符。2.3 思考題解析所選擇的思考題:編寫(xiě)一個(gè)算法,構(gòu)造一棵哈夫曼樹(shù)。程序如下:typedef structunsigned int weight;unsigned int parent,lchild,rch

25、ild;HTNode,*HuffmanTree;typedef char * *HuffmanCodevoid HnffCodeding(HnffmanTree &HT,&HC,int *w,int n)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,s

26、2); HTs1.parent=i; HTs2.parent=i; HTi.lchild=s1; HTi.rchild=s2; HTi.weight=HTs1.weight+HTs2.weight; HC=(HuffmanCode)malloc(n+1)*size(char *); cd=(char *)malloc(n*sizeof(char); cdn-1=0; for(i=1;i<=n;+i) start=n-1; for(c=i;f=HTi.parent;f!=0;c=f,f=HTf.parent) if(HTf.lchild=c) cd-start="0" else cd-start="1" HCi=(char*)malloc(n-start)*sizeof(char); strcpy(HCi,&cdstart); free(cd);

溫馨提示

  • 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)論