版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課 程 設(shè) 計(jì) 說 明 書</p><p> 題目: 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) </p><p> 學(xué)院(系): 電子與信息工程學(xué)院 </p><p> 專業(yè)班級(jí): 計(jì)算機(jī)科學(xué)與技術(shù)專業(yè) </p><p> 學(xué) 號(hào):
2、 </p><p> 課程設(shè)計(jì)(論文)任務(wù)及評(píng)語</p><p> 院(系):電子與信息工程 教研室: 軟件工程</p><p><b> 目 錄</b></p><p> 第1章課程設(shè)計(jì)目的與要求1</p><p> 1.1 課程設(shè)
3、計(jì)目的1</p><p> 1.2 課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境1</p><p> 1.3 課程設(shè)計(jì)的預(yù)備知識(shí)1</p><p> 1.4 課程設(shè)計(jì)要求1</p><p> 第2章 課程設(shè)計(jì)內(nèi)容2</p><p> 2.1 第五類題目2</p><p> 2.2 題目的具體實(shí)現(xiàn)
4、2</p><p> 2.3 題目?jī)?nèi)容2</p><p> 2.4 思考題解析16</p><p><b> 總 結(jié)18</b></p><p><b> 參考文獻(xiàn)19</b></p><p><b> 課程設(shè)計(jì)目的與要求</b><
5、;/p><p> 1.1 課程設(shè)計(jì)目的</p><p> 本課程設(shè)計(jì)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)、軟件工程專業(yè)的專業(yè)技術(shù)實(shí)踐課。</p><p> 本實(shí)踐課的主要目的是:使學(xué)生學(xué)會(huì)利用在課堂中學(xué)過的理論知識(shí),解決相應(yīng)的實(shí)際問題,深入理解和靈活掌握所學(xué)的內(nèi)容,培養(yǎng)學(xué)生理論和實(shí)踐相結(jié)合的能力,培養(yǎng)學(xué)生分析問題解決問題的能力。同時(shí),在實(shí)驗(yàn)步驟規(guī)范化、程序設(shè)計(jì)方法等方面受到比較
6、系統(tǒng)和規(guī)范的訓(xùn)練。通過實(shí)踐設(shè)計(jì)使學(xué)生進(jìn)一步加深對(duì)程序設(shè)計(jì)的規(guī)范化及對(duì)復(fù)雜程序設(shè)計(jì)步驟的理解。</p><p> 1.2 課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境</p><p> PC機(jī),WindowsXP,Win-tc。</p><p> 1.3 課程設(shè)計(jì)的預(yù)備知識(shí)</p><p> C語言程序設(shè)計(jì)、高級(jí)程序設(shè)計(jì)應(yīng)用、數(shù)據(jù)結(jié)構(gòu)。</p>&
7、lt;p> 1.4 課程設(shè)計(jì)要求</p><p> (1)認(rèn)真查找資料,分析每個(gè)題目應(yīng)選擇的數(shù)據(jù)結(jié)構(gòu)(邏輯結(jié)構(gòu)和物理結(jié)構(gòu));</p><p> ?。?)按時(shí)到實(shí)驗(yàn)室調(diào)試程序,遵守實(shí)驗(yàn)室的規(guī)章制度,愛護(hù)設(shè)備;</p><p> (3)每個(gè)題目編寫源程序時(shí),每個(gè)子功能定義為相應(yīng)的子函數(shù),在主函數(shù)中調(diào)用各子函數(shù),程序結(jié)構(gòu)清晰,有必要的注釋,可讀性強(qiáng)。</
8、p><p> ?。?)程序健壯性強(qiáng),當(dāng)數(shù)據(jù)輸入錯(cuò)誤時(shí),要進(jìn)行相應(yīng)的處理; </p><p> ?。?)分析算法的時(shí)間復(fù)雜度,要求算法的效率盡可能高;</p><p> ?。?)對(duì)于排序算法,要驗(yàn)證排序算法的穩(wěn)定性。</p><p> 第2章 課程設(shè)計(jì)內(nèi)容</p><p><b> 2.1 第五類題目</
9、b></p><p> 1、簡(jiǎn)單的職工管理系統(tǒng)</p><p><b> a.問題描述</b></p><p> 對(duì)單位的職工進(jìn)行管理,包括插入、刪除、查找、排序等功能。</p><p><b> b.要求</b></p><p> 職工對(duì)象包括姓名、性別、出
10、生年月、工作年月、學(xué)歷、職務(wù)、住址、電話等信息。</p><p> (1)新增一名職工:將新增職工對(duì)象按姓名以字典方式職工管理文件中。</p><p> ?。?)刪除一名職工:從職工管理文件中刪除一名職工對(duì)象。</p><p> ?。?)查詢:從職工管理文件中查詢符合某些條件的職工。</p><p> (4)修改:檢索某個(gè)職工對(duì)象,對(duì)其某
11、些屬性進(jìn)行修改。</p><p> ?。?)排序:按某種需要對(duì)職工對(duì)象文件進(jìn)行排序。</p><p><b> c.實(shí)現(xiàn)提示</b></p><p> 職工對(duì)象數(shù)不必很多,便于一次讀入內(nèi)存,所有操作不經(jīng)過內(nèi)外存交換。</p><p> (1)由鍵盤輸入職工對(duì)象,以文件方式保存。程序執(zhí)行時(shí)先將文件讀入內(nèi)存。</
12、p><p> (2)對(duì)職工對(duì)象中的"姓名"按字典順序進(jìn)行排序。</p><p> (3)對(duì)排序后的職工對(duì)象進(jìn)行增、刪、查詢、修改、排序等操作。</p><p> 2.2 題目的具體實(shí)現(xiàn)</p><p> ?。ㄒ唬╊}目應(yīng)實(shí)現(xiàn)的具體功能</p><p> ?。?)新增一名職工:將新增職工對(duì)象按姓名以字
13、典方式職工管理文件中。</p><p> ?。?)刪除一名職工:從職工管理文件中刪除一名職工對(duì)象。</p><p> ?。?)查詢:從職工管理文件中查詢符合某些條件的職工。</p><p> (4)修改:檢索某個(gè)職工對(duì)象,對(duì)其某些屬性進(jìn)行修改。</p><p> (5)排序:按某種需要對(duì)職工對(duì)象文件進(jìn)行排序。</p><
14、;p><b> 2.3 題目?jī)?nèi)容</b></p><p> (一)題目:簡(jiǎn)單的職工管理系統(tǒng)</p><p> ?。ǘ╊}目:運(yùn)用結(jié)構(gòu)</p><p> ?。?)數(shù)據(jù)結(jié)構(gòu):順序表</p><p> (2)存儲(chǔ)結(jié)構(gòu):數(shù)組</p><p><b> ?。ㄈ┩暾脑闯绦?lt;/b
15、></p><p> #include<stdio.h></p><p> #define maxsize 100</p><p> typedef struct worker</p><p><b> {</b></p><p> char name[15];<
16、;/p><p> char sex[6];</p><p> char birthday[15];</p><p> char workage[15];</p><p> char xueli[15];</p><p> char position[15];</p><p> char
17、adress[15];</p><p> char tel[12];</p><p><b> }worker;</b></p><p> typedef struct</p><p><b> {</b></p><p> worker w[maxsize+1];
18、</p><p> int length;</p><p> }*work,wor;</p><p><b> int n=0;</b></p><p> char password[10]="080401019";</p><p> void creatwork(w
19、ork p,int t)</p><p><b> {</b></p><p><b> int i,m;</b></p><p> p->length=0;</p><p> for(i=1;i<=t;i++)</p><p><b> {&
20、lt;/b></p><p> printf("\ninput name ");</p><p> scanf("%s",p->w[i].name);</p><p> getchar();</p><p><b> do{</b></p><
21、;p> printf("\ninput %s's sex,1:man,2:woman ",p->w[i].name);</p><p> scanf("%d",&m);</p><p> getchar();</p><p><b> switch(m)</b><
22、/p><p><b> {</b></p><p> case 1:strcpy(p->w[i].sex,"man");break;</p><p> case 2:strcpy(p->w[i].sex,"woman");break;</p><p> defaul
23、t:printf("input wrong,please input anain");m=0;break;</p><p><b> }</b></p><p> }while(m==0);</p><p> printf("\ninput %s's birthday ",p->w[i
24、].sex);</p><p> scanf("%s",p->w[i].birthday);</p><p> printf("\ninput the time when the worker begin to work ");</p><p> scanf("%s",p->w[i].wo
25、rkage);</p><p> printf("\ninput which school the worker graduate frow ");</p><p> scanf("%s",p->w[i].xueli);</p><p> printf("\ninput position ");
26、</p><p> scanf("%s",p->w[i].position);</p><p> printf("\ninput adress ");</p><p> scanf("%s",p->w[i].adress);</p><p> printf(&qu
27、ot;\ninput tel ");</p><p> scanf("%s",p->w[i].tel);</p><p> p->length++;</p><p><b> }</b></p><p><b> save(p);</b></p
28、><p><b> }</b></p><p> int save(work p)</p><p> { FILE *fp;</p><p> char filename[20];</p><p><b> int i;</b></p><p>
29、 printf("Please input the filename\n");</p><p> scanf("%s",filename);</p><p> if((fp=fopen(filename,"wb"))==NULL)</p><p> {printf("can't o
30、pen file\n");</p><p><b> return;</b></p><p><b> }</b></p><p> fwrite(&n,sizeof(int),1,fp);</p><p> for(i=1;i<=n;i++)</p>
31、<p> if(fwrite(&(p->w[i]),sizeof(worker),1,fp)!=1)</p><p> printf("file write error\n");</p><p> fclose(fp);</p><p><b> }</b></p><p&
32、gt; void load(work p)</p><p> {FILE *fp;</p><p><b> int i;</b></p><p> char filename[20];</p><p> p->length=0;</p><p> printf("Pl
33、ease input the filename\n");</p><p> scanf("%s",filename);</p><p> if((fp=fopen(filename,"rb"))==NULL)</p><p> {printf("cannot open file\n");&l
34、t;/p><p><b> return;</b></p><p><b> }</b></p><p> printf("File has been open:\n");</p><p> printf("File is:\n");</p>
35、<p> fread(&n,sizeof(int),1,fp);</p><p> printf("%d\n",n);</p><p><b> getch();</b></p><p> for (i=1;i<=n;i++)</p><p><b> {
36、</b></p><p> fread(&p->w[i],sizeof(struct worker),1,fp);</p><p> p->length++;</p><p><b> }</b></p><p> fclose(fp);</p><p>&
37、lt;b> }</b></p><p> void shellsort(work q,int data[],int t)</p><p><b> {</b></p><p><b> int k;</b></p><p> for(k=0;k<t;++k)<
38、/p><p> shellsert(q,data[k]);</p><p><b> }</b></p><p> int shellsert(work p,int dk)</p><p><b> {</b></p><p><b> int i,j;<
39、;/b></p><p> for(i=dk+1;i<=p->length;i++)</p><p> if(strcmp(p->w[i].name,p->w[i-dk].name)<=0)</p><p><b> {</b></p><p> p->w[0]=p-&g
40、t;w[i];</p><p> for(j=i-dk;j>0&&strcmp(p->w[0].name,p->w[j].name)<=0;j-=dk)</p><p> p->w[j+dk]=p->w[j];</p><p> p->w[j+dk]=p->w[0];</p><
41、;p><b> }</b></p><p><b> }</b></p><p> void insertwork(work p,worker q)</p><p><b> {</b></p><p><b> int i,j;</b>&
42、lt;/p><p> i=p->length;</p><p> while(strcmp(q.name,p->w[i].name)<=0)</p><p><b> {</b></p><p> p->w[i+1]=p->w[i];</p><p><b&
43、gt; i--;</b></p><p><b> }</b></p><p> p->w[i+1]=q;</p><p> p->length++;</p><p><b> n++;</b></p><p><b> }<
44、;/b></p><p> int delete(work p,char *name)</p><p><b> {</b></p><p> int i=1,j,k;</p><p> if(p->length==0)</p><p><b> return 0;
45、</b></p><p> while((strcmp(name,p->w[i].name)!=0)&&(i<=p->length))</p><p><b> ++i;</b></p><p> if(strcmp(name,(p->w[i].name))==0)</p>
46、<p><b> {</b></p><p><b> k=i;</b></p><p> for(j=k;j<p->length;j++)</p><p> p->w[j]=p->w[j+1];</p><p> p->length--;<
47、/p><p><b> n--;</b></p><p><b> return k;</b></p><p><b> }</b></p><p> else return 0;</p><p><b> }</b><
48、/p><p> int changework(work p,char *name)</p><p><b> {</b></p><p> int i=1,j,m;</p><p> system("cls");</p><p> while((strcmp(name,p
49、->w[i].name)!=0)&&(i<=p->length))</p><p><b> ++i;</b></p><p> if(strcmp(name,(p->w[i].name))==0)</p><p><b> {</b></p><p>
50、 printf("\n do you want to change the work's name,1:yes,2:no");</p><p> scanf("%d",&j);</p><p><b> if(j==1)</b></p><p><b> {</b&
51、gt;</p><p> printf("\n please input name ");</p><p> scanf("%s",p->w[i].name);</p><p><b> }</b></p><p> printf("\n do you wa
52、nt to change the work's sex,1:yes,2:no");</p><p> scanf("%d",&j);</p><p><b> if(j==1)</b></p><p> {getchar();</p><p><b> do
53、{</b></p><p> printf("\ninput %s's sex,1:man,2:woman ",p->w[i].name);</p><p> scanf("%d",&m);</p><p> getchar();</p><p><b>
54、; switch(m)</b></p><p><b> {</b></p><p> case 1:strcpy(p->w[i].sex,"man");break;</p><p> case 2:strcpy(p->w[i].sex,"woman");break;<
55、;/p><p> default:printf("input wrong,please input anain");m=0;break;</p><p><b> }</b></p><p> }while(m==0);</p><p><b> }</b></p>
56、;<p> printf("\n do you want to change the work's birthday,1:yes,2:no");</p><p> scanf("%d",&j);</p><p><b> if(j==1)</b></p><p><
57、;b> {</b></p><p> printf("\n please input birthday ");</p><p> scanf("%s",p->w[i].birthday);</p><p><b> }</b></p><p> p
58、rintf("\n do you want to change the work's workage,1:yes,2:no");</p><p> scanf("%d",&j);</p><p><b> if(j==1)</b></p><p><b> {</b&
59、gt;</p><p> printf("\n please input workage ");</p><p> scanf("%s",p->w[i].workage);</p><p><b> }</b></p><p> printf("\n do
60、you want to change the work's xueli,1:yes,2:no");</p><p> scanf("%d",&j);</p><p><b> if(j==1)</b></p><p><b> {</b></p><p
61、> printf("\n please input xueli ");</p><p> scanf("%s",p->w[i].xueli);</p><p><b> }</b></p><p> printf("\n do you want to change the w
62、ork's position,1:yes,2:no");</p><p> scanf("%d",&j);</p><p><b> if(j==1)</b></p><p><b> {</b></p><p> printf("\n
63、 please input position ");</p><p> scanf("%s",p->w[i].position);</p><p><b> }</b></p><p> printf("\n do you want to change the work's adres
64、s,1:yes,2:no");</p><p> scanf("%d",&j);</p><p><b> if(j==1)</b></p><p><b> {</b></p><p> printf("\n please input adr
65、ess ");</p><p> scanf("%s",p->w[i].adress);</p><p><b> }</b></p><p> printf("\n do you want to change the work's tel,1:yes,2:no");<
66、/p><p> scanf("%d",&j);</p><p><b> if(j==1)</b></p><p><b> {</b></p><p> printf("\n please input tel ");</p><
67、;p> scanf("%s",p->w[i].tel);</p><p><b> return i;</b></p><p><b> }</b></p><p><b> }</b></p><p> else return 0;&
68、lt;/p><p><b> }</b></p><p> int chayuework(work p,char *name)</p><p><b> {</b></p><p><b> int i=1;</b></p><p> system
69、("cls");</p><p> while(strcmp(name,(p->w[i].name))!=0&&i<=p->length)</p><p><b> ++i;</b></p><p> if(strcmp(name,(p->w[i].name))==0)</
70、p><p> {printf("\nthe %d's worker name is %s",i,p->w[i].name);</p><p> printf("\nthe %d's worker sex,is %s",i,p->w[i].sex);</p><p> printf("\n
71、the %d's worker birthday is %s",i,p->w[i].birthday);</p><p> printf("\nthe %d's worker workage is %s",i,p->w[i].workage);</p><p> printf("\nthe %d's worke
72、r graduate from %s",i,p->w[i].xueli);</p><p> printf("\nthe %d's worker position is %s",i,p->w[i].position);</p><p> printf("\nthe %d's worker adress is %s&qu
73、ot;,i,p->w[i].adress);</p><p> printf("\nthe %d's worker tel is %s",i,p->w[i].tel);</p><p><b> return i;</b></p><p><b> }</b></p>
74、;<p> else return 0;</p><p><b> }</b></p><p> void qsort(work l,int low,int high)</p><p> { int p=0;</p><p> if(low<high)</p><p>
75、; {p=quicksort(l,low,high);</p><p> qsort(l,low,p-1);</p><p> qsort(l,p+1,high);</p><p><b> }</b></p><p><b> }</b></p><p> in
76、t quicksort(work l,int low,int high)</p><p><b> {</b></p><p><b> int p;</b></p><p> l->w[0]=l->w[low];</p><p> while(low<high)</
77、p><p><b> {</b></p><p> while((low<high)&&(strcmp(l->w[high].name,l->w[low].name)>=0))</p><p><b> high--;</b></p><p> l->
78、;w[low]=l->w[high];</p><p> while((low<high)&&(strcmp(l->w[high].name,l->w[low].name)<=0))</p><p><b> low++;</b></p><p> l->w[high]=l->w[
79、low];</p><p><b> }</b></p><p> l->w[low]=l->w[0];</p><p><b> p=high;</b></p><p><b> return p;</b></p><p><
80、b> }</b></p><p> int travser(work p)</p><p><b> {int i;</b></p><p> for(i=1;i<=p->length;i++)</p><p> { system("cls");</p&g
81、t;<p> printf("\nthe %d's worker name is %s",i,p->w[i].name);</p><p> printf("\nthe %d's worker sex,is %s",i,p->w[i].sex);</p><p> printf("\nthe
82、%d's worker birthday is %s",i,p->w[i].birthday);</p><p> printf("\nthe %d's worker workage is %s",i,p->w[i].workage);</p><p> printf("\nthe %d's worker gr
83、aduate from %s",i,p->w[i].xueli);</p><p> printf("\nthe %d's worker position is %s",i,p->w[i].position);</p><p> printf("\nthe %d's worker adress is %s",
84、i,p->w[i].adress);</p><p> printf("\nthe %d's worker tel is %s",i,p->w[i].tel);</p><p> system("pause");</p><p><b> }</b></p><
85、;p> printf("\nthere are %d workers",p->length);</p><p><b> }</b></p><p> void main()</p><p><b> {</b></p><p> char s[10],na
86、me[15];</p><p> int flag=0,a,b,c,d,e,f,i,g,j,k,data[3],m=3;</p><p><b> worker p;</b></p><p><b> wor v,w;</b></p><p> work worke,workee;</
87、p><p><b> worke=&w;</b></p><p> workee=&v;</p><p><b> do</b></p><p><b> {</b></p><p> printf("please inp
88、ut you mima:\n");</p><p> scanf("%s",s);</p><p> if(!strcmp(s,password))</p><p><b> {</b></p><p> printf("congrulation\n");<
89、/p><p><b> flag=1;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> else </b></p><p><b> {<
90、/b></p><p> printf("input wrong,please input anain\n:\n");</p><p><b> m--;</b></p><p><b> }</b></p><p> }while(m>0);</p&g
91、t;<p><b> if(!flag)</b></p><p><b> {</b></p><p> printf("you have inputtden threes times.\n");</p><p><b> return;</b></p&
92、gt;<p><b> }</b></p><p><b> do{</b></p><p> getchar();</p><p> printf("do you need to recreat\n1:yes\n2:no\n");</p><p> sc
93、anf("%d",&g);</p><p><b> switch(g)</b></p><p><b> {</b></p><p> case 1:printf("input how many workers do you need\n");</p>
94、<p> scanf("%d",&n);</p><p> creatwork(workee,n);</p><p><b> break;</b></p><p> case 2:break;</p><p> default:printf("input wro
95、ng,please inout again\n");</p><p><b> g=0;</b></p><p><b> break;</b></p><p><b> }</b></p><p> }while(g==0);</p><
96、p> printf("please choose which function do you need:\n0:loadf,\n1:shellsort,\n2:insertwork,\n3:delete,\n4:chaxun,\n5:changework,\n6:qsort,\n7:travser,\n8:save,\n9:game over,\nyou choose is");</p><
97、;p> scanf("%d",&k);</p><p> while(k!=9)</p><p><b> {</b></p><p><b> switch(k)</b></p><p><b> {</b></p>
98、<p> case 0:load(worke);break;</p><p> case 1:for(i=0;i<3;i++)</p><p><b> {</b></p><p> printf("input %dth number\n",i);</p><p> scan
99、f("%d",&data[i]);</p><p><b> }</b></p><p> shellsort(worke,data,3);</p><p><b> break;</b></p><p> case 2:printf("\ninput
100、name ");</p><p> scanf("%s",p.name);</p><p> getchar();</p><p> e=chayuework(worke,p.name);</p><p><b> if(e!=0)</b></p><p>&
101、lt;b> {</b></p><p> printf("\n there has a elemtype that has the same name,do you need to insert again\n1:yes\n2:no");</p><p> scanf("%d",&f);</p><
102、p><b> if(f==2)</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> do{</b></p><p> printf("\ninput %s'
103、;s sex,1:man,2:woman ",p.name);</p><p> scanf("%d",&d);</p><p> getchar();</p><p><b> switch(d)</b></p><p><b> {</b></
104、p><p> case 1:strcpy(p.sex,"man");</p><p><b> break;</b></p><p> case 2:strcpy(p.sex,"woman");</p><p><b> break;</b></p&
105、gt;<p> default:printf("input wrong,please input anain");d=0;break;</p><p><b> }</b></p><p> }while(d==0);</p><p> printf("\ninput %s's bir
106、thday ",p.sex);</p><p> scanf("%s",p.birthday);</p><p> printf("\ninput the time when the worker begin to work ");</p><p> scanf("%s",p.workage
107、);</p><p> printf("\ninput which school the worker graduate from ");</p><p> scanf("%s",p.xueli);</p><p> printf("\ninput position ");</p>&l
108、t;p> scanf("%s",p.position);</p><p> printf("\ninput adress ");</p><p> scanf("%s",p.adress);</p><p> printf("\ninput tel ");</p>
109、;<p> scanf("%s",p.tel);</p><p> insertwork(worke,p);</p><p><b> break;</b></p><p> case 3:printf("input the worker's name you want to dele
110、te");</p><p> scanf("%s",name);</p><p> a=delete(worke,name);</p><p><b> if(a==0)</b></p><p> printf("\nthere is not the worker you
111、want delete");</p><p> else printf("\nthe worker you want to delete is the %d's worker",a);</p><p><b> break;</b></p><p> case 4:printf("input
112、 the worker's name you want to chaxun");</p><p> scanf("%s",name);</p><p> b=chayuework(worke,name);</p><p><b> if(b==0)</b></p><p>
113、printf("\nthere is not the worker you want delete");</p><p> else printf("\nthe worker you want to chaxune is the %d's worker",b);</p><p><b> break;</b><
114、/p><p> case 5:printf("input the worker's name you want to change");</p><p> scanf("%s",name);</p><p> c=changework(worke,name);</p><p><b>
115、; if(c==0)</b></p><p> printf("\nthere is not the worker you want change");</p><p> else printf("\nthe worker you want to change is the %d's worker",c);</p>
116、;<p><b> break;</b></p><p> case 6:qsort(worke,1,n);</p><p><b> break;</b></p><p> case 7:travser(worke);</p><p><b> break;<
117、;/b></p><p> case 8:save(worke);</p><p> default:printf("Error!!Please choose again!");break;</p><p><b> }</b></p><p> system("cls&quo
118、t;);</p><p> printf("please choose which function do you need:\n0:loadf,\n1:shellsort,\n2:insertwork,\n3:delete,\n4:chaxun,\n5:changework,\n6:qsort,\n7:travser,\n8:save,\n9:game over,\nyou choose is&qu
119、ot;);</p><p> scanf("%d",&k);</p><p><b> }</b></p><p><b> getch();</b></p><p><b> }</b></p><p> ?。?)程
120、序的輸入和輸出(可附圖)</p><p> 圖2-1 向w[]數(shù)組中輸入數(shù)據(jù)并輸出可以選擇</p><p> 圖2-2選擇向w[]數(shù)組中輸入數(shù)據(jù)并輸出,顯示菜單界面</p><p> 圖2-3選擇不向w[]數(shù)組中輸入數(shù)據(jù)</p><p> 圖2-4 輸入自己的添加選擇并顯示添加結(jié)果</p><p><b&
121、gt; 圖2-5功能菜單</b></p><p> 圖2-6 輸入文件名并打開文件將其值賦給v[]</p><p> 圖2-7 將v[]中職工信息輸出</p><p> 圖2-8 運(yùn)用希爾排序使元素信息有序</p><p> 圖2-9 順序插入一個(gè)元素</p><p> 圖2-10 刪除一個(gè)職工
122、信息</p><p> 圖2-11 查閱某個(gè)職工信息</p><p> 圖2-12 修改某個(gè)職工的某些信息</p><p> 圖2-13 快速排序使職工信息按字典順序存儲(chǔ)</p><p> 圖2-14 使元素順序輸出</p><p> 按8整個(gè)程序運(yùn)行完畢</p><p> (5)調(diào)
123、試程序中遇到的問題及解決方案</p><p> 問題1:在輸出時(shí)由于信息太多致使有的信息不能在輸出欄中顯示。</p><p> 問題2:輸出的無用信息不能及時(shí)的清除掉。</p><p> 解決方案:經(jīng)過查資料知道運(yùn)用system(“pauses”);可以顯示最近文件內(nèi)容,解決了第一個(gè)問題。后有知道運(yùn)用system(“sls”);可以刪除最近輸出的內(nèi)容,解決了第
124、二個(gè)問題。</p><p><b> 2.4 思考題解析</b></p><p> 所選擇的思考題:試設(shè)計(jì)構(gòu)造一個(gè)哈希表的算法。哈希函數(shù)用除留余數(shù)法構(gòu)造,用線性探測(cè)再散列或鏈地址法處理沖突。程序如下:</p><p> #include<stdio.h></p><p> typedef struct
125、 student</p><p><b> {</b></p><p><b> int key;</b></p><p> char name[15];</p><p> int chengji;</p><p> int panduan;</p>
126、<p> }student,*stude;</p><p> void creat(stude st,int n)</p><p><b> {</b></p><p> int i,b,key;</p><p><b> stude s;</b></p><
127、p><b> s=st;</b></p><p> for(i=0;i<n;i++)</p><p> s[i].panduan=0;</p><p> for(i=0;i<n;i++)</p><p><b> {</b></p><p> p
128、rintf("please input the key of the %dth elemtype\n",i);</p><p> scanf("%d",&key);</p><p> b=bijiao(s,key,n);</p><p> s[b].key=key;</p><p> p
129、rintf("please input the name of the %dth elemtype\n",i);</p><p> scanf("%s",s[b].name);</p><p> printf("please input the chengji of the %dth elemtype\n",i);</p
130、><p> scanf("%d",&s[b].chengji);</p><p> s[b].panduan=1;</p><p><b> }</b></p><p><b> }</b></p><p> int bijiao(stude
131、 stu,int key,int n)</p><p><b> {</b></p><p> int a,i=0;</p><p><b> do{</b></p><p> a=(key+i)%n;</p><p><b> i++;</b>
132、;</p><p> }while(stu[a].panduan==1);</p><p><b> return a;</b></p><p><b> }</b></p><p> void print(stude stu,int n)</p><p><b
133、> {</b></p><p><b> int i;</b></p><p> for(i=0;i<n;i++)</p><p> if(stu[i].panduan==1)</p><p><b> {</b></p><p> pri
134、ntf("the key of the %dth elemtype is %d\n",i,stu[i].key);</p><p> printf("the name of the %dth elemtype is %s\n",i,stu[i].name);</p><p> printf("the chengji of the %dt
135、h elemtype is %d\n",i,stu[i].chengji);</p><p><b> }</b></p><p><b> }</b></p><p> void main()</p><p><b> {</b></p>&l
136、t;p> int a,b,c,i;</p><p> student stu[11];</p><p><b> stude st;</b></p><p><b> st=stu;</b></p><p> printf("please input the number
137、of the elemtypes do you need:i<=11\n");</p><p> scanf("%d",&i);</p><p> creat(st,i);</p><p> print(st,11);</p><p><b> getch();</b>
138、</p><p><b> }</b></p><p><b> 程序分析:</b></p><p> 哈希表的的構(gòu)造過程就是一個(gè)邊查找邊插入的過程。先用除留余數(shù)法算出該關(guān)鍵字的哈希地址,然后在哈希表中查找該哈希地址下是否存在其他關(guān)鍵字。若有,則再根據(jù)線性探測(cè)再散列的方法處理沖突,計(jì)算出下一個(gè)哈希地址,繼續(xù)查找;若沒
139、有,將該關(guān)鍵字插入到這個(gè)位置。</p><p><b> 總 結(jié)</b></p><p> 本次課程設(shè)計(jì)對(duì)我來說應(yīng)該是最成功也最有效的一次</p><p> 這次我選的使第五類題中的第一個(gè)題,選擇這道題的原因使因?yàn)槲矣X得這十分具有現(xiàn)實(shí)意義,具有可使用性,對(duì)于以后進(jìn)入工作崗位非常的有幫助。</p><p> 本程序
140、的主要功能如下</p><p> ?。?)新增一名職工:將新增職工對(duì)象按姓名以字典方式職工管理文件中。</p><p> ?。?)刪除一名職工:從職工管理文件中刪除一名職工對(duì)象。</p><p> (3)查詢:從職工管理文件中查詢符合某些條件的職工。</p><p> ?。?)修改:檢索某個(gè)職工對(duì)象,對(duì)其某些屬性進(jìn)行修改。</p>
141、;<p> ?。?)排序:按某種需要對(duì)職工對(duì)象文件進(jìn)行排序。</p><p> 在編程中,我運(yùn)用了七個(gè)主要的子函數(shù),一個(gè)是從文件中讀入職工信息,第二個(gè)是希爾排序,第三個(gè)是順序插入一個(gè)元素,第四個(gè)是查找某個(gè)職工的信息,第五個(gè)是輸入姓名刪除這個(gè)職工的信息。第六個(gè)是按姓名快速排序,第七個(gè)是輸入所有職工的信息。</p><p> 這次編程總體說來遇到了非常多的困難,開始時(shí)的確覺得
142、應(yīng)該是非常簡(jiǎn)單的程序,在做的過程中漏洞百出,一個(gè)非常明顯的錯(cuò)誤,也是一個(gè)非常常見的錯(cuò)誤就是在按照姓名比較的時(shí)候經(jīng)常會(huì)出現(xiàn)只要第一個(gè)字母相同就會(huì)輸出的問題,在費(fèi)了好大勁之后才把其中的原因弄明白,雖然很簡(jiǎn)單,但是讓我明白,無論多么小的一個(gè)知識(shí)點(diǎn),只要不會(huì),就會(huì)遇到非常大的麻煩,還有一個(gè)問題,也在上面提到過,就是輸出的時(shí)候,由于內(nèi)容過多,致使有些內(nèi)容不可見,或者是前面的輸出弄亂了屏幕,使得不容易判斷,在查過書之后,發(fā)現(xiàn)用一個(gè)非常小的語句就能把
143、這些問題給解決掉。當(dāng)然了,還有一些其他的問題,就沒有必要一一說出來。</p><p> 盡管遇到這么多麻煩,我還是非常滿意,因?yàn)檫@是我完全是我自己編寫的,雖然不是很完美,但是我已經(jīng)非常盡力了。在整個(gè)編程的過程中,我也體會(huì)到了作為一個(gè)編程人員的煩惱與快樂,并且堅(jiān)定了自己從事程序開發(fā)這個(gè)方向的決心與信心。我相信自己會(huì)成為一名非常優(yōu)秀的程序員。</p><p> 還有的收獲就是要經(jīng)常的查找資
144、料,善于和同學(xué)交流,這樣自己才能更快的發(fā)展。</p><p> 給我的啟示就是要經(jīng)常性的編程,經(jīng)常性的看書。</p><p><b> 本人簽字: </b></p><p><b> 參考文獻(xiàn)</b></p><p> 1.徐孝凱,魏榮《數(shù)據(jù)結(jié)構(gòu)》,機(jī)械工業(yè)出版社,1996年</p&
145、gt;<p> 2.徐孝凱《數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)明教程》,清華大學(xué)出版社,1995年</p><p> 3.陳文博,朱青《數(shù)據(jù)結(jié)構(gòu)與算法》,機(jī)械工業(yè)出版社,1996年 </p><p> 4.許卓群,張乃孝,楊冬青,唐世渭《數(shù)據(jù)結(jié)構(gòu)》,高等教育出版社,1988年 </p><p> 5.李廉治,姜文清,郭福順《數(shù)據(jù)結(jié)構(gòu)》,大連理工大學(xué)出版社,1989年&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 職工管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---簡(jiǎn)單的職工管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)-課程設(shè)計(jì)--學(xué)生管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--航班管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)—機(jī)場(chǎng)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---員工管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---員工管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----huffman編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--車庫管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--學(xué)生籍貫管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--圖書借閱管理系統(tǒng)
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)---圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--個(gè)人賬簿管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----倉庫管理系統(tǒng)統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-圖書管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論