版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計說明書題目:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計學(xué)院(系):專業(yè)班級:學(xué) 號:學(xué)生姓名: 指導(dǎo)教師:教師職稱:起止時間: 課程設(shè)計(論文)任務(wù)與評語院(系):教研室:軟件工程學(xué)號學(xué)生姓名專業(yè)班級課程設(shè) 計(論 文)題目數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計課程設(shè)計(論文)任務(wù)1 .從十個題目中選擇一個題目,要求每個題目用標(biāo)準(zhǔn)的 C語言程序?qū)崿F(xiàn),另外,完成思考題一題,思考題須寫出相應(yīng)的類C算法即可。2 .每個題目編寫源程序時,要求有主菜單 ,每個子功能定義為相應(yīng)的子函數(shù),在主函數(shù)中調(diào)用各子函數(shù),程序結(jié)構(gòu)清晰。3. 根據(jù)題目,選擇合適的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)。4. 輸入的數(shù)據(jù)由鍵盤輸入。5. 分析算法的時間復(fù)雜度,要求算法
2、的效率盡可能高。6. 驗證排序算法的穩(wěn)定性。指導(dǎo)教師評語與成績成績:指導(dǎo)教師簽字:2012 年月日第1章 課程設(shè)計目的與要求 41.1課程設(shè)計目的 41.2課程設(shè)計的實驗環(huán)境51.3課程設(shè)計的預(yù)備知識51.4課程設(shè)計要求5第2章課程設(shè)計內(nèi)容2.1題目的選擇62.2題目的具體實現(xiàn)62.3思考題解析 24總結(jié):26參考文獻 錯誤!未定義書簽。第1章 課程設(shè)計目的與要求1.1課程設(shè)計目的本課程設(shè)計是計算機科學(xué)與技術(shù)專業(yè)、軟件工程專業(yè)的專業(yè)技術(shù)實踐課。本實踐課的主要目的是:使學(xué)生學(xué)會利用在課堂中學(xué)過的理論知識,解決相應(yīng)的實際問題,深入理解和靈活掌握所學(xué)的內(nèi)容, 培養(yǎng)學(xué)生理論和實踐相結(jié)合的能力,培養(yǎng)學(xué)生
3、分析問題解決問題的能力。同時,在實驗步驟規(guī)范化、程序設(shè)計 方法等方面受到比較系統(tǒng)和規(guī)范的訓(xùn)練。通過實踐設(shè)計使學(xué)生進一步加深對程序 設(shè)計的規(guī)范化與對復(fù)雜程序設(shè)計步驟的理解。通過課程設(shè)計,加深對數(shù)據(jù)結(jié)構(gòu)這一課程所學(xué)內(nèi)容的進一步理解與鞏固。通過課程設(shè)計,加深對結(jié)構(gòu)化設(shè)計思想的理解,能對系統(tǒng)功能進行分析,并設(shè)計合理的模塊化結(jié)構(gòu)。通過課程設(shè)計,提 高程序幵發(fā)功能,能運用合理的控制流程編寫清晰高效的程序。通過課程設(shè)計, 訓(xùn)練C程序調(diào)試能力,能將一個中小型各級組織系統(tǒng)聯(lián)調(diào)通過。通過課程設(shè)計, 幵發(fā)一個中小型系統(tǒng),掌握系統(tǒng)研發(fā)全過程。通話課程設(shè)計,培養(yǎng)分析問題、解 決實際問題的能力。1.2課程設(shè)計的實驗環(huán)境P
4、C 機,WindowsXP ,C+。1.3課程設(shè)計的預(yù)備知識C語言程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)。1.4課程設(shè)計要求(1)認(rèn)真查找資料,分析每個題目應(yīng)選擇的數(shù)據(jù)結(jié)構(gòu)(邏輯結(jié)構(gòu)和物理結(jié)構(gòu))(2 )按時到實驗室調(diào)試程序,遵守實驗室的規(guī)章制度,愛護設(shè)備;(3 )每個題目編寫源程序時,每個子功能定義為相應(yīng)的子函數(shù),在主函數(shù)中調(diào)用各子函數(shù),程序結(jié)構(gòu)清晰,有必要的注釋,可讀性強。(4)程序健壯性強,當(dāng)數(shù)據(jù)輸入錯誤時,要進行相應(yīng)的處理;(5 )分析算法的時間復(fù)雜度,要求算法的效率盡可能高;(6)對于排序算法,要驗證排序算法的穩(wěn)定性。第2章課程設(shè)計內(nèi)容2.1題目的選擇6、學(xué)生成績管理系統(tǒng)2.2題目的具體實現(xiàn)(1)題目應(yīng)實
5、現(xiàn)的具體功能;1錄入學(xué)生成績信息并保存;?可查詢顯示所有學(xué)生的個人信息;可查詢顯示所有學(xué)生的所學(xué)課程信息;1按學(xué)號或姓名查詢成績信息;53能添加、刪除和修改學(xué)生的成績信息;(2 )題目所選擇的數(shù)據(jù)結(jié)構(gòu)與存儲結(jié)構(gòu);采用線性數(shù)據(jù)結(jié)構(gòu)與鏈?zhǔn)酱鎯Y(jié)構(gòu)(3)完整的源程序#in clude<stdio.h>#in clude<stdlib.h>#include<string.h>struct studlong num;char name20;double score1,score2;typedef struct stucodestruct stud student ;s
6、truct 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 choose;int flag=1;struct stuco
7、de *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("Testing function 1nPress any key to c
8、ontinuen"); 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 continuen"); getchar();getchar();break;case
9、9;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;case '7': change(&r);out(r);printf("Testin
10、g function 1nPress any key to continuen"); getchar();getchar();break;case '0':flag=0;printf("The end.n");break;default: printf("nWrong Selection!( 選擇錯誤 ,請重選 !)n"); getchar();getchar();void createlist(struct stucode *r)struct stucode *p,*t;long n;char a20;double s1,s2
11、;if(*r) *r=NULL;printf(" n請輸入:n學(xué)號 姓名分?jǐn)?shù)1分?jǐn)?shù)2 (若要結(jié)束請輸入四個為零)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%
12、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);void search1(struct stucode *r)long
13、x; struct stucode *p=r;if(!r)printf(" 沒有學(xué)生信息可查詢 !n");return ;:n");printf(" 請輸入要查詢的學(xué)生信息的學(xué)生學(xué)號 scanf("%ld",&x);while(p&&p->student.num!=x) p=p->next;if(p=NULL)printf("Error! No such student !n");elseprintf("%ld%s%.2lf%.2lfn",p->stud
14、ent.num,p->,p->studen t.score1,p->student.score2);void search2(struct stucode *r)char m20;if(!r)printf(" 沒有學(xué)生信息可查詢 !n");return ;printf(" 請輸入要查詢的學(xué)生信息的學(xué)生姓名 :n"); scanf("%s",m);while(r&&strcmp(r->,m)r=r->next;if(r=NULL)printf(
15、"Error! No such student !n");elseprintf("%ld%s%.2lf%.2lfn",r->student.num,r->,r->student. score1,r->student.score2);void del(struct stucode *r)long k;struct stucode *p=*r,*t;if(!(*r)printf(" 沒有學(xué)生信息可刪除 !n");return ;:n");printf(" 請輸入要刪除的學(xué)
16、生信息的學(xué)生學(xué)號 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! No such student !n");elset=p->next;p->next=p->next->next;free(t);void insert(stru
17、ct stucode *r)long n;char a20;double s1,s2;L *p,*t,*k;printf(" 請輸入要插入的學(xué)生信息的學(xué)生學(xué)號 姓名 分?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;(
18、*r)->next=NULL;return ;if(p->student.num<(*r)->student.num) p->next=(*r),(*r)=p;elset=*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;void out(struct stucode *r)printf("nn");if(!r)printf(
19、" 沒有學(xué)生信息可輸出 !n");return ;while(r)printf("%ld%s%.2lf%.2lfn",r->student.num,r->,r->student. score1,r->student.score2);r=r->next;printf("nn");void change(struct stucode *r)struct stucode *p=*r;long x;long n;char a20;double s1,s2;printf(" 更改的
20、學(xué)生的信息 n");printf(" 請輸入要查詢的學(xué)生信息的學(xué)生學(xué)號 :n"); scanf("%ld",&x);while(p&&p->student.num!=x)p=p->next;if(p=NULL)printf("Error! No such student !n");elseprintf("%ld%s%.2lf%.2lfn",p->student.num,p->,p->student.score1,p->st
21、udent.score2);printf(" 請輸入要修改的學(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;void menu()printf("n學(xué)生成績管理系統(tǒng) n");printf("n菜單 nn");printf("n 1建立鏈表 n"
22、;);printf("n 2查找某學(xué)號的學(xué)生信息n");printf("n 3查找某姓名的學(xué)生信息n");printf("n 4刪除某學(xué)號的學(xué)生信息n");printf("n 5插入新的學(xué)生信息 n");printf("n 6顯示所有學(xué)生的個人信息n");printf("n 7更改學(xué)生個人信息 n");printf("n 0退出 n");prin tf("n請選擇您要執(zhí)行的選項:n");(4)程序的輸入和輸出學(xué)生成績管理系統(tǒng)菜單1建立鏈
23、表2查找某學(xué)號的學(xué)生信息?查找某姓名的學(xué)生信息 娜除某學(xué)號的學(xué)生信息5插入新的學(xué) 生信息百顯三斫有學(xué)主打個人信恵7更改學(xué)生個人宿息0退出請選擇您要扶行的選琢按學(xué)生學(xué)號查找結(jié)果:1建立鏈表,查找某學(xué)號的學(xué)生信息耳查找某姓名的學(xué)生信息、刪除某學(xué)號的學(xué)生信息百插入新的學(xué)生信息右顯示所有學(xué)生的個人信息7更改學(xué)生個人信息0退出請選S您要扶行的選頂::諭入要査詢的學(xué)竺信息的學(xué)生學(xué)號: 1010S21010021139,0092.00Testing function 1Press any key to continue按學(xué)生姓名查找:1建立鏈表2查找某學(xué)號的學(xué)生信息查找某姓名的學(xué)生信息、刪除某學(xué)號的學(xué)生信息
24、百插入新的學(xué)生信息血示所有學(xué)主的個人信息更改學(xué)生個人信息退岀情選S您要牧行的選頂匕3f輸入要査詢的羊三信息的學(xué)生姓名:li1010&21139.0992,00Testiing function 1Press anv kev to Gonitinue圖3刪除某學(xué)生的運行結(jié)果:、查找某學(xué)號的學(xué)生信息事査找某姓名的學(xué)生信息4刪除某學(xué)號的學(xué)生信息5插入新的學(xué)生信息百顯示所有學(xué)生的個人信息硬改學(xué)生個人信息退出:il選8您更刪亍的說珈f請輸入要刪除的學(xué)生信息的學(xué)生學(xué)號:lltLOU161SQ3vjang&5 “BE164.Q&插入某學(xué)生的運行結(jié)果:i建立椎表、查我某學(xué)號的學(xué)生信息日
25、查找某姓名的學(xué)生信息4刪除某學(xué)號的學(xué)生唁息、插入新的學(xué)生信息、顯示所有學(xué)生的個人信息、更改學(xué)生個人信息E退出:情選擇您要執(zhí)行的選項:r請輸入雯插入的學(xué)生信息的學(xué)生學(xué)號姓名分?jǐn)?shù)i分?jǐn)?shù)*: 1Q1002 11 39 921010021137,0092.00101卵3昨“犧§-00£4-00顯示所有學(xué)生的信息:i建立鏈表、查錢某學(xué)號的學(xué)生信息 、查錢某姓名的學(xué)生信息4刪除某學(xué)號的學(xué)生信息 、插入新的學(xué)生信息 、顯示所有學(xué)生的個人信息 "更改學(xué)生個人信息D退岀請選擇您要執(zhí)行的選恥61B1SS21139.0092.M101083uang85.60&4,00(5)調(diào)試
26、程序中遇到的問題與解決方案在調(diào)試searchi子函數(shù)由于在查找中移動了原指針,導(dǎo)致searchi中不能查找,解決方法設(shè)一結(jié)構(gòu)體類型的指針,將原指針賦給該指針,將該指針進 行移動查找。在調(diào)試 chance()中,如何對已有的記錄進行從新輸入更改。解決 方案為在chance()子函數(shù)中加入一個查找的程序,也就是說先找到要修改的學(xué) 生信息,用scanf語句對要修改的學(xué)生的信息進行重新輸入,再將所賦的信息通 過賦值語句將修改后的學(xué)生信息賦給該學(xué)生對應(yīng)的結(jié)構(gòu)體。如何返回一個結(jié)構(gòu)體中信息,解決方案是采用指針類型,將變量的地址作為實參賦給子函數(shù)。數(shù)組名 代表數(shù)組首地址,用scanf語句賦值字符串時,不用加地
27、址操作符。2.3 思考題解析所選擇的思考題: 編寫一個算法,構(gòu)造一棵哈夫曼樹。程序如下:typedef structunsigned int weight;unsigned int parent,lchild,rchild;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
28、;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);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)*sizeo
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年高中政治第三單元思想方法與創(chuàng)新意識第7課第2框用聯(lián)系的觀點看問題訓(xùn)練含解析新人教版必修4
- 2025年度春夏季草花種植基地合作采購合同3篇
- 2025年電子商務(wù)平臺產(chǎn)品入駐合作協(xié)議書模板4篇
- 深圳市龍城初級中學(xué)2025屆中考三模生物試題含解析
- 2025年節(jié)能環(huán)保廠房股權(quán)交易執(zhí)行協(xié)議4篇
- 2025年度綠色校園與環(huán)保企業(yè)深度合作項目合同范本3篇
- 2025年度礦產(chǎn)資源勘查測繪技術(shù)服務(wù)合同4篇
- 二零二五年度船舶保險合同3篇
- 2025版小米智能家居產(chǎn)品售后服務(wù)協(xié)議3篇
- 2025年度倉儲信息化管理合同4篇
- 勞動合同續(xù)簽意見單
- 大學(xué)生國家安全教育意義
- 2024年保育員(初級)培訓(xùn)計劃和教學(xué)大綱-(目錄版)
- 河北省石家莊市2023-2024學(xué)年高二上學(xué)期期末考試 語文 Word版含答案
- 企業(yè)正確認(rèn)識和運用矩陣式管理
- 分布式光伏高處作業(yè)專項施工方案
- 陳閱增普通生物學(xué)全部課件
- 檢驗科主任就職演講稿范文
- 人防工程主體監(jiān)理質(zhì)量評估報告
- 20225GRedCap通信技術(shù)白皮書
- 燃?xì)庥邢薰究蛻舴?wù)規(guī)范制度
評論
0/150
提交評論