版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、遼寧工業(yè)大學(xué) 課課 程程 設(shè)設(shè) 計(jì)計(jì) 說(shuō)說(shuō) 明明 書(shū)書(shū) 題目:題目: 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 學(xué)院(系):學(xué)院(系): 電子與信息工程學(xué)院電子與信息工程學(xué)院 專(zhuān)業(yè)班級(jí):專(zhuān)業(yè)班級(jí): 計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè) 學(xué)學(xué) 號(hào):號(hào): 學(xué)生姓名:學(xué)生姓名: 指導(dǎo)教師:指導(dǎo)教師: 教師職稱(chēng):教師職稱(chēng): 副教授副教授 起止時(shí)間:起止時(shí)間: 2009.12.012009.12.012009.12.082009.12.08 課程設(shè)計(jì)(論文)任務(wù)及評(píng)語(yǔ)課程設(shè)計(jì)(論文)任務(wù)及評(píng)語(yǔ) 院(系):電子與信息工程 教研室: 軟件工程 學(xué) 號(hào)080401019學(xué)生姓名朱江雨專(zhuān)業(yè)班級(jí)計(jì)算機(jī) 081 課程設(shè)
2、計(jì) (論文) 題目 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 課程設(shè)計(jì)(論文)任務(wù) 1可從前四類(lèi)題目中,每類(lèi)選擇一個(gè)題目,共需完成四個(gè)題目,或從每五類(lèi)題目中選擇一題, 要求每個(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 除了指定的之外,數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)根據(jù)需要自行定義。 4 輸入的數(shù)據(jù)由鍵盤(pán)輸入。 5 分析算法的時(shí)間復(fù)雜度,要求算法的效率盡可能高。 6 驗(yàn)證排序算法的穩(wěn)定性。 指導(dǎo)教師評(píng)語(yǔ)及成績(jī) 成績(jī): 指導(dǎo)教師簽字: 年 月 日 目 錄 第第 1 章章課程設(shè)計(jì)目的與要求課
3、程設(shè)計(jì)目的與要求.1 1.1 課程設(shè)計(jì)目的.1 1.2 課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境.1 1.3 課程設(shè)計(jì)的預(yù)備知識(shí).1 1.4 課程設(shè)計(jì)要求.1 第第 2 章章 課程設(shè)計(jì)內(nèi)容課程設(shè)計(jì)內(nèi)容.2 2.1 第五類(lèi)題目.2 2.2 題目的具體實(shí)現(xiàn).2 2.3 題目?jī)?nèi)容.2 2.4 思考題解析.16 總總 結(jié)結(jié).18 參考文獻(xiàn)參考文獻(xiàn).19 第 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)容,培養(yǎng)學(xué)生理論和實(shí)踐相結(jié)合的能力,培養(yǎng)學(xué) 生
4、分析問(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ì)步驟的理解。 1.2 課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境 pc 機(jī),windowsxp,win-tc。 1.3 課程設(shè)計(jì)的預(yù)備知識(shí) c 語(yǔ)言程序設(shè)計(jì)、高級(jí)程序設(shè)計(jì)應(yīng)用、數(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性
5、強(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 第五類(lèi)題目 1、簡(jiǎn)單的職工管理系統(tǒng) a.問(wèn)題描述 對(duì)單位的職工進(jìn)行管理,包括插入、刪除、查找、排序等功能。 b.要求 職工對(duì)象包括姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話等信息。 (1)新增一名職工:將新增職工對(duì)象按姓名以字典方式職工管理文件中。 (2)刪除一名職工:從職工管理文件中刪除一名職工對(duì)象。 (3)查詢(xún):從職工管理文件中查詢(xún)符合某些條件的職工。 (4)修改:檢索某個(gè)職工對(duì)象,
6、對(duì)其某些屬性進(jìn)行修改。 (5)排序:按某種需要對(duì)職工對(duì)象文件進(jìn)行排序。 c.實(shí)現(xiàn)提示 職工對(duì)象數(shù)不必很多,便于一次讀入內(nèi)存,所有操作不經(jīng)過(guò)內(nèi)外存交換。 (1)由鍵盤(pán)輸入職工對(duì)象,以文件方式保存。程序執(zhí)行時(shí)先將文件讀入內(nèi)存。 (2)對(duì)職工對(duì)象中的姓名按字典順序進(jìn)行排序。 (3)對(duì)排序后的職工對(duì)象進(jìn)行增、刪、查詢(xún)、修改、排序等操作。 2.2 題目的具體實(shí)現(xiàn) (一)題目應(yīng)實(shí)現(xiàn)的具體功能 (1)新增一名職工:將新增職工對(duì)象按姓名以字典方式職工管理文件中。 (2)刪除一名職工:從職工管理文件中刪除一名職工對(duì)象。 (3)查詢(xún):從職工管理文件中查詢(xún)符合某些條件的職工。 (4)修改:檢索某個(gè)職工對(duì)象,對(duì)其某些
7、屬性進(jìn)行修改。 (5)排序:按某種需要對(duì)職工對(duì)象文件進(jìn)行排序。 2.3 題目?jī)?nèi)容 (一)題目:簡(jiǎn)單的職工管理系統(tǒng) (二)題目:運(yùn)用結(jié)構(gòu) (1)數(shù)據(jù)結(jié)構(gòu):順序表 (2)存儲(chǔ)結(jié)構(gòu):數(shù)組 (三)完整的源程序 #include #define maxsize 100 typedef struct worker char name15; char sex6; char birthday15; char workage15; char xueli15; char position15; char adress15; char tel12; worker; typedef struct worker wma
8、xsize+1; int length; *work,wor; int n=0; char password10=080401019; void creatwork(work p,int t) int i,m; p-length=0; for(i=1;); getchar(); do printf(ninput %ss sex,1:man,2:woman ,); scanf(%d, getchar(); switch(m) case 1:strcpy(p-wi.sex,man);break; case 2:strcpy(p-wi.sex,woman);brea
9、k; default:printf(input wrong,please input anain);m=0;break; while(m=0); printf(ninput %ss birthday ,p-wi.sex); scanf(%s,p-wi.birthday); printf(ninput the time when the worker begin to work ); scanf(%s,p-wi.workage); printf(ninput which school the worker graduate frow ); scanf(%s,p-wi.xueli); printf
10、(ninput position ); scanf(%s,p-wi.position); printf(ninput adress ); scanf(%s,p-wi.adress); printf(ninput tel ); scanf(%s,p-wi.tel); p-length+; save(p); int save(work p) file *fp; char filename20; int i; printf(please input the filenamen); scanf(%s,filename); if(fp=fopen(filename,wb)=null) printf(ca
11、nt open filen); return; fwrite( for(i=1;iwi),sizeof(worker),1,fp)!=1) printf(file write errorn); fclose(fp); void load(work p) file *fp; int i; char filename20; p-length=0; printf(please input the filenamen); scanf(%s,filename); if(fp=fopen(filename,rb)=null) printf(cannot open filen); return; print
12、f(file has been open:n); printf(file is:n); fread( printf(%dn,n); getch(); for (i=1;iwi,sizeof(struct worker),1,fp); p-length+; fclose(fp); void shellsort(work q,int data,int t) int k; for(k=0;kt;+k) shellsert(q,datak); int shellsert(work p,int dk) int i,j; for(i=dk+1;ilength;i+) if(strcmp(
13、,)w0=p-wi; for(j=i-dk;j0 p-wj+dk=p-w0; void insertwork(work p,worker q) int i,j; i=p-length; while(strcmp(,)wi+1=p-wi; i-; p-wi+1=q; p-length+; n+; int delete(work p,char *name) int i=1,j,k; if(p-length=0) return 0; while(strcmp(name,)!=0) if(strcmp(name,(p-wi.nam
14、e)=0) k=i; for(j=k;jlength;j+) p-wj=p-wj+1; p-length-; n-; return k; else return 0; int changework(work p,char *name) int i=1,j,m; system(cls); while(strcmp(name,)!=0) if(strcmp(name,()=0) printf(n do you want to change the works name,1:yes,2:no); scanf(%d, if(j=1) printf(n please
15、input name ); scanf(%s,); printf(n do you want to change the works sex,1:yes,2:no); scanf(%d, if(j=1) getchar(); do printf(ninput %ss sex,1:man,2:woman ,); scanf(%d, getchar(); switch(m) case 1:strcpy(p-wi.sex,man);break; case 2:strcpy(p-wi.sex,woman);break; default:printf(input wr
16、ong,please input anain);m=0;break; while(m=0); printf(n do you want to change the works birthday,1:yes,2:no); scanf(%d, if(j=1) printf(n please input birthday ); scanf(%s,p-wi.birthday); printf(n do you want to change the works workage,1:yes,2:no); scanf(%d, if(j=1) printf(n please input workage );
17、scanf(%s,p-wi.workage); printf(n do you want to change the works xueli,1:yes,2:no); scanf(%d, if(j=1) printf(n please input xueli ); scanf(%s,p-wi.xueli); printf(n do you want to change the works position,1:yes,2:no); scanf(%d, if(j=1) printf(n please input position ); scanf(%s,p-wi.position); print
18、f(n do you want to change the works adress,1:yes,2:no); scanf(%d, if(j=1) printf(n please input adress ); scanf(%s,p-wi.adress); printf(n do you want to change the works tel,1:yes,2:no); scanf(%d, if(j=1) printf(n please input tel ); scanf(%s,p-wi.tel); return i; else return 0; int chayuework(work p
19、,char *name) int i=1; system(cls); while(strcmp(name,()!=0 if(strcmp(name,()=0) printf(nthe %ds worker name is %s,i,); printf(nthe %ds worker sex,is %s,i,p-wi.sex); printf(nthe %ds worker birthday is %s,i,p-wi.birthday); printf(nthe %ds worker workage is %s,i,p-wi.workage)
20、; printf(nthe %ds worker graduate from %s,i,p-wi.xueli); printf(nthe %ds worker position is %s,i,p-wi.position); printf(nthe %ds worker adress is %s,i,p-wi.adress); printf(nthe %ds worker tel is %s,i,p-wi.tel); return i; else return 0; void qsort(work l,int low,int high) int p=0; if(loww0=l-wlow; wh
21、ile(lowhigh) while(,)=0) high-; l-wlow=l-whigh; while(,)whigh=l-wlow; l-wlow=l-w0; p=high; return p; int travser(work p) int i; for(i=1;ilength;i+) system(cls); printf(nthe %ds worker name is %s,i,); printf(nthe %ds worker sex,is %s,i,p-wi.sex
22、); printf(nthe %ds worker birthday is %s,i,p-wi.birthday); printf(nthe %ds worker workage is %s,i,p-wi.workage); printf(nthe %ds worker graduate from %s,i,p-wi.xueli); printf(nthe %ds worker position is %s,i,p-wi.position); printf(nthe %ds worker adress is %s,i,p-wi.adress); printf(nthe %ds worker t
23、el is %s,i,p-wi.tel); system(pause); printf(nthere are %d workers,p-length); void main() char s10,name15; int flag=0,a,b,c,d,e,f,i,g,j,k,data3,m=3; worker p; wor v,w; work worke,workee; worke= workee= do printf(please input you mima:n); scanf(%s,s); if(!strcmp(s,password) printf(congrulationn); flag
24、=1; break; else printf(input wrong,please input anainn:n); m-; while(m0); if(!flag) printf(you have inputtden threes times.n); return; do getchar(); printf(do you need to recreatn1:yesn2:non); scanf(%d, switch(g) case 1:printf(input how many workers do you needn); scanf(%d, creatwork(workee,n); brea
25、k; case 2:break; default:printf(input wrong,please inout againn); g=0; break; while(g=0); printf(please choose which function do you need:n0:loadf,n1:shellsort,n2:insertwork,n3:delete,n4:chaxun,n5:changework,n6:qsort,n7:t ravser,n8:save,n9:game over,nyou choose is); scanf(%d, while(k!=9) switch(k) c
26、ase 0:load(worke);break; case 1:for(i=0;i3;i+) printf(input %dth numbern,i); scanf(%d, shellsort(worke,data,3); break; case 2:printf(ninput name ); scanf(%s,); getchar(); e=chayuework(worke,); if(e!=0) printf(n there has a elemtype that has the same name,do you need to insert againn1:yes
27、n2:no); scanf(%d, if(f=2) break; do printf(ninput %ss sex,1:man,2:woman ,); scanf(%d, getchar(); switch(d) case 1:strcpy(p.sex,man); break; case 2:strcpy(p.sex,woman); break; default:printf(input wrong,please input anain);d=0;break; while(d=0); printf(ninput %ss birthday ,p.sex); scanf(%s,p.bi
28、rthday); printf(ninput the time when the worker begin to work ); scanf(%s,p.workage); printf(ninput which school the worker graduate from ); scanf(%s,p.xueli); printf(ninput position ); scanf(%s,p.position); printf(ninput adress ); scanf(%s,p.adress); printf(ninput tel ); scanf(%s,p.tel); insertwork
29、(worke,p); break; case 3:printf(input the workers name you want to delete); scanf(%s,name); a=delete(worke,name); if(a=0) printf(nthere is not the worker you want delete); else printf(nthe worker you want to delete is the %ds worker,a); break; case 4:printf(input the workers name you want to chaxun)
30、; scanf(%s,name); b=chayuework(worke,name); if(b=0) printf(nthere is not the worker you want delete); else printf(nthe worker you want to chaxune is the %ds worker,b); break; case 5:printf(input the workers name you want to change); scanf(%s,name); c=changework(worke,name); if(c=0) printf(nthere is
31、not the worker you want change); else printf(nthe worker you want to change is the %ds worker,c); break; case 6:qsort(worke,1,n); break; case 7:travser(worke); break; case 8:save(worke); default:printf(error!please choose again!);break; system(cls); printf(please choose which function do you need:n0
32、:loadf,n1:shellsort,n2:insertwork,n3:delete,n4:chaxun,n5:changework,n6:qsort,n7:t ravser,n8:save,n9:game over,nyou choose is); scanf(%d, getch(); (4)程序的輸入和輸出(可附圖) 圖 2-1 向 w數(shù)組中輸入數(shù)據(jù)并輸出可以選擇 圖 2-2 選擇向 w數(shù)組中輸入數(shù)據(jù)并輸出,顯示菜單界面 圖 2-3 選擇不向 w數(shù)組中輸入數(shù)據(jù) 圖 2-4 輸入自己的添加選擇并顯示添加結(jié)果 圖 2-5 功能菜單 圖 2-6 輸入文件名并打開(kāi)文件將其值賦給 v 圖 2-7
33、將 v中職工信息輸出 圖 2-8 運(yùn)用希爾排序使元素信息有序 圖 2-9 順序插入一個(gè)元素 圖 2-10 刪除一個(gè)職工信息 圖 2-11 查閱某個(gè)職工信息 圖 2-12 修改某個(gè)職工的某些信息 圖 2-13 快速排序使職工信息按字典順序存儲(chǔ) 圖 2-14 使元素順序輸出 按 8 整個(gè)程序運(yùn)行完畢 (5)調(diào)試程序中遇到的問(wèn)題及解決方案 問(wèn)題 1:在輸出時(shí)由于信息太多致使有的信息不能在輸出欄中顯示。 問(wèn)題 2:輸出的無(wú)用信息不能及時(shí)的清除掉。 解決方案:經(jīng)過(guò)查資料知道運(yùn)用 system(“pauses”);可以顯示最近文件內(nèi)容,解決了第一個(gè)問(wèn)題。后 有知道運(yùn)用 system(“sls”);可以刪除
34、最近輸出的內(nèi)容,解決了第二個(gè)問(wèn)題。 2.4 思考題解析 所選擇的思考題:試設(shè)計(jì)構(gòu)造一個(gè)哈希表的算法。哈希函數(shù)用除留余數(shù)法構(gòu)造,用線 性探測(cè)再散列或鏈地址法處理沖突。程序如下: #include typedef struct student int key; char name15; int chengji; int panduan; student,*stude; void creat(stude st,int n) int i,b,key; stude s; s=st; for(i=0;in;i+) si.panduan=0; for(i=0;in;i+) printf(please inp
35、ut the key of the %dth elemtypen,i); scanf(%d, b=bijiao(s,key,n); sb.key=key; printf(please input the name of the %dth elemtypen,i); scanf(%s,); printf(please input the chengji of the %dth elemtypen,i); scanf(%d, sb.panduan=1; int bijiao(stude stu,int key,int n) int a,i=0; do a=(key+i)%n; i+;
36、 while(stua.panduan=1); return a; void print(stude stu,int n) int i; for(i=0;in;i+) if(stui.panduan=1) printf(the key of the %dth elemtype is %dn,i,stui.key); printf(the name of the %dth elemtype is %sn,i,); printf(the chengji of the %dth elemtype is %dn,i,stui.chengji); void main() int a,b,c,i; student stu11; stude st; st=stu; printf(please input the number of the elemtypes do you need:i=11n); sc
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度電氣設(shè)備安裝與維修合同
- 總經(jīng)理聘請(qǐng)合同模板
- 房地產(chǎn)代理合同范文:委托與代理
- 代理合同:房地產(chǎn)估價(jià)委托協(xié)議書(shū)
- 廣告業(yè)務(wù)經(jīng)營(yíng)權(quán)轉(zhuǎn)讓合同
- 產(chǎn)品責(zé)任保險(xiǎn)合同專(zhuān)業(yè)版解析
- 自動(dòng)化機(jī)器租賃協(xié)議
- 2024裝修工程轉(zhuǎn)包合同范本
- 年度長(zhǎng)期合作協(xié)議范例
- 全面購(gòu)銷(xiāo)合同模板珍藏
- 君子自強(qiáng)不息課件
- 2022人教版高二英語(yǔ)新教材選擇性必修全四冊(cè)課文原文及翻譯(英漢對(duì)照)
- WDZANYJY23低壓電力電纜技術(shù)規(guī)格書(shū)
- 抗高血壓藥物基因檢測(cè)課件
- 醫(yī)院管理醫(yī)院應(yīng)急調(diào)配機(jī)制
- (公開(kāi)課)文言文斷句-完整版課件
- 小學(xué)生性教育調(diào)查問(wèn)卷
- 醫(yī)院感染管理質(zhì)量持續(xù)改進(jìn)反饋表
- 旅游行政管理第二章旅游行政管理體制課件
- 學(xué)生崗位實(shí)習(xí)家長(zhǎng)(或法定監(jiān)護(hù)人)知情同意書(shū)
- 衛(wèi)生院關(guān)于召開(kāi)基本公共衛(wèi)生服務(wù)項(xiàng)目培訓(xùn)會(huì)的通知
評(píng)論
0/150
提交評(píng)論