


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、WORD格式課程設計說明書題目:數據構造與算法課程設計學院系:專業班級:學號:學生*:指導教師:教師職稱:起止時間:專業資料整理WORD格式課程設計論文任務及評語院系:教研室:軟件工程學 號學生*專業班級課程設計論文數據構造與算法課程設計題目1從十個題目中選擇一個題目,,要求每個題目用標準的C 語言程序實現, 另外 ,課完成思考題一題,思考題須寫出相應的類C 算法即可。程設2每個題目編寫源程序時,要求有主菜單,每個子功能定義為相應的子函數,在計主函數中調用各子函數,程序構造清晰。3根據題目 ,選擇適宜的邏輯構造和存儲構造。論 4輸入的數據由鍵盤輸入。文) 5分析算法的時間復雜度,要求算法的效率
2、盡可能高。任 6驗證排序算法的穩定性。務指導教師評語及成績成績:指導教師簽字:專業資料整理WORD格式2021年月日專業資料整理WORD格式目錄第 1 章課程設計目的與要求11.1課程設計目的11.2課程設計的實驗環境11.3課程設計的預備知識11.4課程設計要求1第 2 章 課程設計內容22.1題目的選擇22.2題目的具體實現22.3思考題解析12總結:14參考文獻錯誤!未定義書簽。專業資料整理WORD格式第 1章課程設計目的與要求1.1 課程設計目的本課程設計是計算機科學與技術專業、軟件工程專業的專業技術實踐課。本實踐課的主要目的是:使學生學會利用在課堂中學過的理論知識,解決相應的實際問題
3、,深入理解和靈活掌握所學的內容,培養學生理論和實踐相結合的能力, 培養學生分析問題解決問題的能力。同時,在實驗步驟標準化、程序設計方法等方面受到比較系統和標準的訓練。 通過實踐設計使學生進一步加深對程序設計的標準化及對復雜程序設計步驟的理解。通過課程設計,加深對"數據構造"這一課程所學內容的進一步理解與穩固。通過課程設計,加深對構造化設計思想的理解,能對系統功能進展分析,并設計合理的模塊化構造。通過課程設計,提高程序開發功能, 能運用合理的控制流程編寫清晰高效的程序。通過課程設計,訓練 C 程序調試能力,能將一個中小型各級組織系統聯調通過。通過課程設計,開發一個中小型系統,
4、掌握系統研發全過程。通話課程設計,培養分析問題、解決實際問題的能力。1.2 課程設計的實驗環境PC 機, WindowsXP,C+。1.3 課程設計的預備知識C 語言程序設計、數據構造。1.4 課程設計要求1認真查找資料,分析每個題目應選擇的數據構造邏輯構造和物理構造 ;2按時到實驗室調試程序,遵守實驗室的規章制度,保護設備;3每個題目編寫源程序時,每個子功能定義為相應的子函數,在主函數中調用各子函數,程序構造清晰,有必要的注釋,可讀性強。4程序強健性強,當數據輸入錯誤時,要進展相應的處理;5分析算法的時間復雜度,要求算法的效率盡可能高;6對于排序算法,要驗證排序算法的穩定性。專業資料整理WO
5、RD格式1專業資料整理WORD格式第 2 章 課程設計內容2.1 題目的選擇6、學生成績管理系統2.2 題目的具體實現1題目應實現的具體功能;1錄入學生成績信息并保存;2可查詢顯示所有學生的個人信息;3可查詢顯示所有學生的所學課程信息;4按學號或*查詢成績信息;5能添加、刪除和修改學生的成績信息;2題目所選擇的數據構造及存儲構造;采用線性數據構造及鏈式存儲構造3完整的源程序#include<stdio.h>#include<stdlib.h>#include<string.h>struct studlong num;char name20;double sc
6、ore1,score2;typedef struct stucodestruct 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);專業資料整理WORD格式2專業資料整理WORD格式void insert(struct stucode *r)
7、;void change(struct stucode *r);void main()char choose;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;cas
8、e '2':search1(r);printf("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 func
9、tion 1nPress any key to continuen");getchar();getchar();break;case '5':insert(&r);out(r);printf("Testing function 1nPress any key to continuen"); getchar();專業資料整理WORD格式3專業資料整理WORD格式getchar();break;case '6':out(r);printf("Testing function 1nPress any key to con
10、tinuen");getchar();getchar();break;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!( 選擇錯誤 ,請重選 !)n"); getch
11、ar();getchar();void createlist(struct stucode *r)struct stucode *p,*t;long n;char a20;double s1,s2;if(*r) *r=NULL;printf(" n 請輸入: n 學號* 分數 1分數 2假設要完畢請輸入四個為零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->st
12、,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)專業資料整理WORD格式4專業資料整理WORD格式t=p;p=(L *)malloc(sizeof(L);p->student.num=n;strcpy(p->,a);p->student.score1=s1;p->student.score2=s2;p-&
13、gt;next=NULL;t->next=p;scanf("%ld%s%lf%lf",&n,a,&s1,&s2);void search1(struct stucode *r)long x; struct stucode *p=r;if(!r)printf(" 沒有學生信息可查詢 !n");return ;printf(" 請輸入要查詢的學生信息的學生學號:n");scanf("%ld",&x);while(p&&p->student.num!=x)p=p
14、->next;if(p=NULL)printf("Error! No such student !n");elseprintf("%ld%s%.2lf%.2lfn",p->student.num,p->,p->student.score1,p->student.score2);void search2(struct stucode *r)char m20;if(!r)printf(" 沒有學生信息可查詢 !n");return ;printf(" 請輸入要查詢的學生信息的
15、學生*:n");scanf("%s",m);while(r&&strcmp(r->,m)r=r->next;if(r=NULL)printf("Error! No such student !n");elseprintf("%ld%s%.2lf%.2lfn",r->student.num,r->,r->student.score1,r->student.sc專業資料整理WORD格式5專業資料整理WORD格式ore2);void
16、 del(struct stucode *r)long k;struct stucode *p=*r,*t;if(!(*r)printf(" 沒有學生信息可刪除!n");return ;printf(" 請輸入要刪除的學生信息的學生學號 :n"); scanf("%ld",&k);if(p->student.num=k)*r=(*r)->next,free(p);elsewhile(p->next&&p->next->student.num!=k)p=p->next;if(p
17、->next=NULL)printf("Error! No such student !n");elset=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(" 請輸入要插入的學生信息的學生學號* 分數 1 分數 2 :n");scanf("%ld%s%lf%lf",&n,a,&s1,&s2);p=(L
18、*)malloc(sizeof(L);p->student.num=n;p->student.score1=s1;p->student.score2=s2;strcpy(p->,a);if(!(*r)*r=p;專業資料整理WORD格式6專業資料整理WORD格式(*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-&
19、gt;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(" 沒有學生信息可輸出 !n");return ;while(r)printf("%ld%s%.2lf%.2lfn",r->student.num,r->,r->student.score1,r->stud
20、ent.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(" 更改的學生的信息 n");printf("請輸入要查詢的學生信息的學生學號:n");scanf("%ld",&x);while(p&&p->student.num!=x)p=p->next;if(p=NULL)pri
21、ntf("Error! No such student !n");elseprintf("%ld%s%.2lf%.2lfn",p->student.num,p->,p->student.score1,p->student.s專業資料整理WORD格式7專業資料整理WORD格式core2);printf("請輸入要修改的學生信息:n");scanf("%ld%s%lf%lf",&n,a,&s1,&s2);p->student.num=n;st
22、rcpy(p->,a);p->student.score1=s1;p->student.score2=s2;void menu()printf("n學生成績管理系統 n");printf("n菜單 nn");printf("n 1建立鏈表 n");printf("n 2查找某學號的學生信息 n");printf("n 3查找某*的學生信息 n");printf("n 4刪除某學號的學生信息 n");printf("n 5插入
23、新的學生信息 n");printf("n 6顯示所有學生的個人信息 n");printf("n 7更改學生個人信息 n");printf("n 0退出 n");printf("n請選擇您要執行的選項 :n");4程序的輸入和輸出專業資料整理WORD格式8專業資料整理WORD格式圖 1按學生學號查找結果:圖 2專業資料整理WORD格式9專業資料整理WORD格式按學生*查找:圖 3刪除某學生的運行結果:圖 4專業資料整理WORD格式10專業資料整理WORD格式插入某學生的運行結果:圖 5顯示所有學生的信息:圖
24、 6專業資料整理WORD格式11專業資料整理WORD格式5調試程序中遇到的問題及解決方案在調試 search1子函數由于在查找中移動了原指針, 導致 search1中不能查找,解決方法設一構造體類型的指針,將原指針賦給該指針,將該指針進展移動查找。在調試 chance()中,如何對已有的記錄進展從新輸入更改。解決方案為在chance()子函數中參加一個查找的程序,也就是說先找到要修改的學生信息,用 scanf 語句對要修改的學生的信息進展重新輸入, 再將所賦的信息通過賦值語句將修改后的學生信息賦給該學生對應的構造體。如何返回一個構造體*息,解決方案是采用指針類型, 將變量的地址作為實參賦給子函
25、數。數組名代表數組首地址,用 scanf 語句賦值字符串時,不用加地址操作符。2.3 思考題解析所選擇的思考題:編寫一個算法,構造一棵哈夫曼樹。程序如下: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
26、(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);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(
27、char);cdn-1=0;for(i=1;i<=n;+i)專業資料整理WORD格式12專業資料整理WORD格式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 根 據 給 定 的n 個 權 值 W1,W2, .Wn 構 成 n 課 二 叉 樹 的 集 合 F=T1,T2 .Tn ,其中每棵二叉樹 Ti 中只有一個帶權為 Wi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農用車買賣合同協議書
- 建筑企業勞務合同
- 新能源車輛租賃合同
- 建筑水電工程勞務合同
- 勞動法律服務合同
- 信托資金借款合同經典
- 保護市場協議合同
- 水電費剩余合同協議書
- 建設合同作廢協議
- 居間供貨合同協議
- 政務服務人員培訓
- 寵物醫院招聘課件
- 2025建筑安全員C證考試(專職安全員)題庫及答案
- 安全標識(教學設計)-2024-2025學年浙美版(2012)美術四年級下冊
- 2024-2025學年七年級下冊歷史 【教學課件】第10課《金與南宋的對峙》
- 滁州地鐵筆試試題及答案
- 八年級英語下學期期中模擬卷(上海專用)-2024-2025學年(牛津上海版)
- 小學課本劇一年級《雪孩子》-劇本
- 會計畢業論文范文:大數據時代的會計變革
- GB/T 24628-2025醫療保健產品滅菌生物與化學指示物測試設備
- 2025-2030年中國太陽能供熱項目可行性研究報告
評論
0/150
提交評論