版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 課程設(shè)計(jì)題目: 文章編輯 </p><p><b> 學(xué)生姓名: </b></p><p> 專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)</p><p><b> 班 級(jí):</b></p&g
2、t;<p><b> 學(xué) 號(hào): </b></p><p><b> 指導(dǎo)教師: </b></p><p> 2012年 06月21日</p><p><b> 目錄</b></p><p><b> 一、實(shí)驗(yàn)題目1</b>
3、</p><p> 二、實(shí)驗(yàn)時(shí)間、地點(diǎn)1</p><p><b> 三、實(shí)驗(yàn)?zāi)康?</b></p><p><b> 四、實(shí)驗(yàn)要求1</b></p><p><b> 五、實(shí)現(xiàn)思路2</b></p><p><b> 1、定義
4、結(jié)構(gòu)體2</b></p><p><b> 2、主要函數(shù):2</b></p><p><b> 六、實(shí)現(xiàn)過程4</b></p><p><b> 主要代碼:4</b></p><p><b> 運(yùn)行結(jié)果:10</b></
5、p><p><b> 七、實(shí)驗(yàn)總結(jié)14</b></p><p><b> 八、參考文獻(xiàn)14</b></p><p><b> 一、實(shí)驗(yàn)題目</b></p><p> 文章編輯:輸入一頁文字,程序可以統(tǒng)計(jì)出字母、數(shù)字、空格的個(gè)數(shù)。靜態(tài)存儲(chǔ)一頁文章,每行最多不超過80個(gè)字符
6、,共N行;</p><p><b> 二、實(shí)驗(yàn)時(shí)間、地點(diǎn)</b></p><p> 第十九周,軟件樓603</p><p><b> 三、實(shí)驗(yàn)?zāi)康?lt;/b></p><p> 本次課程設(shè)計(jì)的主要目的是綜合運(yùn)用所學(xué)的數(shù)據(jù)結(jié)構(gòu)知識(shí)解決一個(gè)比較實(shí)際問題,側(cè)重對(duì)鏈表、數(shù)組、字符串、圖、樹等相關(guān)內(nèi)容的綜
7、合應(yīng)用,使同學(xué)們能進(jìn)一步熟悉掌握數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)知識(shí),進(jìn)一步提升自己的解決問題和編程調(diào)試能力,為后續(xù)專業(yè)課程的學(xué)習(xí)打下良好的基礎(chǔ)。</p><p><b> 四、實(shí)驗(yàn)要求</b></p><p> ?。?)分別統(tǒng)計(jì)出其中英文字母數(shù)和空格數(shù)及整篇文章總字?jǐn)?shù); </p><p> (2)統(tǒng)計(jì)某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù); </
8、p><p> ?。?)刪除某一子串,并將后面的字符前移。存儲(chǔ)結(jié)構(gòu)使用線性表,分別用幾個(gè)子函數(shù)實(shí)現(xiàn)相應(yīng)的功能;輸入數(shù)據(jù)的形式和范圍:可以輸入大寫、小寫的英文字母、任何數(shù)字及標(biāo)點(diǎn)符號(hào)。 </p><p><b> 輸出形式:</b></p><p> (1)分行輸出用戶輸入的各行字符; </p><p> (2)分4行輸出
9、"全部字母數(shù)"、"數(shù)字個(gè)數(shù)"、"空格個(gè)數(shù)"、"文章總字?jǐn)?shù)"</p><p> ?。?)輸出刪除某一字符串后的文章; </p><p><b> 五、實(shí)現(xiàn)思路</b></p><p><b> 1、定義結(jié)構(gòu)體</b></p>&
10、lt;p> 定義結(jié)構(gòu)體 struct line,文本行采用順序存儲(chǔ),行與行之間采用鏈?zhǔn)酱鎯?chǔ)</p><p><b> 2、主要函數(shù):</b></p><p> int FindString(LINE * &head,char *str) /*統(tǒng)計(jì)str在文章中出現(xiàn)的次數(shù)*/</p><p> 求在一行中Str出現(xiàn)的次數(shù)的流
11、程圖:</p><p> ①.查找第一個(gè)字符,如果有第一個(gè)字符即p->data[i]==str[0],設(shè)計(jì)數(shù)器k=0</p><p> ②.查找這個(gè)字符后面的字符與要查找的字符串是否匹配即p->data[i+j]==str[j],如果匹配k++</p><p> ③.重復(fù)第二步,如果k=len2,則查找到,count++;如果沒查找到,重新進(jìn)行第一
12、步</p><p> void delstringword(char *s,char *str) /*刪除字符串*s中的字符串*str*/</p><p><b> 實(shí)現(xiàn)思想:</b></p><p> ①.從字符串s中尋找str第一次出現(xiàn)的位置 *p=strstr(s,str);</p><p> ?、冢甽en
13、=strlen(s);i=len-strlen(p)即前i項(xiàng)恰好不含要?jiǎng)h除的字符串,將前i項(xiàng)復(fù)制到tmp中</p><p> ③.j=i+strlen(str) 即要?jiǎng)h除的字符串在i+1和j之間,將j之后的字符串復(fù)制到tmp中</p><p> ④.將tmp賦給串s,返回s</p><p><b> 六、實(shí)現(xiàn)過程</b></p>
14、;<p><b> 主要代碼:</b></p><p> #include <string.h></p><p> #include <stdio.h></p><p> #include <stdlib.h></p><p> #include <con
15、io.h></p><p> typedef struct line</p><p><b> {</b></p><p> char *data;</p><p> struct line *next;</p><p><b> }LINE;</b><
16、/p><p> void Create(LINE * &head)</p><p><b> {</b></p><p> printf ("請(qǐng)輸入一頁文章,以Ctrl+E(^E)為結(jié)尾(每行最多輸入80字符!):\n");</p><p> LINE *p=new LINE;
17、 /*首先為鏈表 建立一個(gè)附加表頭結(jié)點(diǎn)*/ </p><p> head=p; /*將p付給 表頭指針*/</p><p> char ch[100];</p><p><b> while(1)</b>
18、;</p><p><b> {</b></p><p> gets(ch); /*輸入字符串!*/</p><p> if(strlen(ch)>80)</p><p><b> {</b></p><p> printf
19、("每行最多輸入80字符");</p><p><b> break;</b></p><p><b> }</b></p><p> if(ch[0]==5)break; /*如果發(fā)現(xiàn)輸入 ^E,則退出輸入*/ </p><p> p=p
20、->next=new LINE;</p><p> p->data=new char[strlen(ch)+1]; /*為結(jié)點(diǎn)分配空間 */ </p><p> strcpy(p->data,ch);</p><p> if(ch[strlen(ch)-1]==5) /*除去最后一個(gè)控制符 ^E */&l
21、t;/p><p> { </p><p> p->data[strlen(ch)-1]='\0';</p><p><b> break;</b></p><p><b> }</b></p><p><b> }<
22、/b></p><p> p->next=NULL; /*最后的一個(gè)指針為空 */</p><p> head=head->next;</p><p><b> }</b></p><p> /**文本字?jǐn)?shù)統(tǒng)計(jì)**/</p><p&
23、gt; int Count_Space(LINE* &head)//統(tǒng)計(jì)空格數(shù) </p><p><b> {</b></p><p> LINE *p=head;</p><p> int asc_space=32;</p><p> int count=0;</p><p>
24、<b> int i;</b></p><p><b> int Len;</b></p><p><b> do{</b></p><p> Len=strlen(p->data);</p><p> for(i=0;i<Len;i++)</p&g
25、t;<p> if(p->data[i]==asc_space)</p><p><b> count++;</b></p><p> }while((p=p->next)!=NULL);</p><p> return count;</p><p><b> }</b
26、></p><p> int Count_Num(LINE * &head)//統(tǒng)計(jì)數(shù)字個(gè)數(shù) </p><p><b> {</b></p><p> LINE *p=head;</p><p> int count=0;</p><p><b> int Len
27、;</b></p><p><b> int i;</b></p><p><b> do{</b></p><p> Len=strlen(p->data);</p><p> for(i=0;i<Len;i++)</p><p> if(
28、p->data[i]>=48 && p->data[i]<=57)</p><p><b> count++;</b></p><p> }while((p=p->next)!=NULL);</p><p> return count; </p><p><b&g
29、t; }</b></p><p> int Count_All_Word(LINE * &head)//統(tǒng)計(jì)文章的總字?jǐn)?shù) </p><p><b> {</b></p><p> LINE *p=head;</p><p> int count=0;</p><p>
30、<b> do{</b></p><p> count+=strlen(p->data);</p><p> }while((p=p->next)!=NULL);</p><p> return count;</p><p><b> }</b></p><
31、p> int Count_Letter(LINE * &head)//統(tǒng)計(jì)字母數(shù) </p><p><b> {</b></p><p> LINE *p=head;</p><p> int count=0;</p><p><b> int Len;</b></p&
32、gt;<p><b> int i;</b></p><p><b> do{</b></p><p> Len=strlen(p->data);</p><p> for(i=0;i<Len;i++)</p><p> if(p->data[i]>=
33、'a' && p->data[i]<='z'||p->data[i]>='A' && p->data[i]<='Z')count++; //計(jì)算字母?jìng)€(gè)數(shù)</p><p><b> }</b></p><p> while((p=
34、p->next)!=NULL);</p><p> return count;</p><p><b> }</b></p><p> int Find_Word(LINE * &head,char *sch)//統(tǒng)計(jì) sch 在文章中出現(xiàn)的次數(shù)</p><p><b> {</b&
35、gt;</p><p> LINE *p=head;</p><p> int count=0;</p><p> int len1=0;</p><p> int len2=strlen(sch);</p><p> int i,j,k;</p><p><b> do{
36、</b></p><p> len1=strlen(p->data);//當(dāng)前行的字符數(shù)</p><p> for(i=0;i<len1;i++)</p><p><b> {</b></p><p> if(p->data[i]==sch[0])</p><p&
37、gt;<b> {</b></p><p><b> k=0;</b></p><p> for(j=0;j<=len2-1;j++)</p><p> if(p->data[i+j]==sch[j])k=k+1;</p><p> if(k==len2) {count++;i
38、=i+k-1;}</p><p><b> }</b></p><p><b> }</b></p><p> }while((p=p->next)!=NULL);</p><p> return count; </p><p><b> }<
39、/b></p><p> /**特定字符串的刪除**/</p><p> void del_string_word(char *s,char *sch) </p><p><b> {</b></p><p> char *p=strstr(s,sch);</p><p> ch
40、ar tmp[80];</p><p> int len=strlen(s);</p><p><b> int k,kk;</b></p><p> int i=len-strlen(p);</p><p> int j=i+strlen(sch);</p><p> int coun
41、t=0;</p><p> for(k=0;k<i;k++)</p><p> tmp[count++]=s[k];</p><p> for(kk=j;kk<len;kk++)</p><p> tmp[count++]=s[kk];</p><p> tmp[count]='\0
42、9;;</p><p> strcpy(s,tmp);</p><p><b> }</b></p><p> void Del_String(LINE * &head,char *sch)//刪除指定的字符串</p><p><b> {</b></p><p&
43、gt; LINE *p=head;</p><p><b> do{</b></p><p> while(strstr(p->data,sch)!=NULL)</p><p> del_string_word(p->data,sch);</p><p> }while((p=p->next)
44、!=NULL);</p><p><b> }</b></p><p> /**打印輸入的文本**/</p><p> void OutPutTxt(LINE * &head)//向屏幕輸出文章 </p><p><b> {</b></p><p> LI
45、NE *p=head;</p><p> printf("文本文件輸出如下:");</p><p><b> do{</b></p><p> printf("%s\n",p->data);</p><p> }while((p=p->next)!=NULL);
46、</p><p><b> }</b></p><p> void Count(LINE * &head)</p><p><b> {</b></p><p> printf("文章統(tǒng)計(jì)信息結(jié)果如下:\n");</p><p> pri
47、ntf("英文字母數(shù):%d\n",Count_Letter(head));</p><p> printf("空格數(shù): %d \n",Count_Space(head));</p><p> printf("文章中共出現(xiàn)數(shù)字:%d\n",Count_Num(head));</p><p> print
48、f("文章出現(xiàn)的漢字和標(biāo)點(diǎn)(全角)總數(shù): %d\n",(Count_All_Word(head)-Count_Num(head)-Count_Space(head)-Count_Letter(head))/2);</p><p> printf("統(tǒng)計(jì)文章的總字?jǐn)?shù): %d\n",(Count_All_Word(head)+Count_Num(head)+Count_Spa
49、ce(head)+Count_Letter(head))/2);</p><p> printf("\n");</p><p><b> }</b></p><p> void main()</p><p><b> {</b></p><p>
50、 LINE *head;</p><p> char sch[20];</p><p> char ID[10];</p><p><b> char ch;</b></p><p> char tmp_sch[20];</p><p> printf("
51、 文章編輯系統(tǒng) \n");</p><p> printf(" 主菜單如下:\n");</p><p><b> while(1)</b></p><p><b> {</b></p>&
52、lt;p> printf(" *******************************************************************\n");</p><p> printf(" 1.新建文本\n");</p><p> printf("
53、 2.瀏覽輸入文本\n");</p><p> printf(" 3.文本字符統(tǒng)計(jì)\n");</p><p> printf(" 4.特定字符串的統(tǒng)計(jì)\n");</p><p> prin
54、tf(" 5.特定字符串的刪除\n");</p><p> printf(" 6.退出\n");</p><p> printf(" ********************************************************
55、***********\n");</p><p> printf("注:請(qǐng)您按關(guān)鍵字代號(hào)選擇菜單操作!如是第一次操作,務(wù)必先選第一步!\n");</p><p> printf("請(qǐng)輸入序號(hào):");</p><p> scanf("%s",ID);</p><p>&
56、lt;b> while(1)</b></p><p><b> {</b></p><p> if(strcmp(ID,"1")==0)</p><p><b> {</b></p><p> printf("新建文本要覆蓋已有文本,是否繼續(xù)
57、輸入?(Y/N)\n");</p><p> getchar();</p><p> scanf("%c",&ch);</p><p> system("cls");</p><p> if(ch=='n'||ch=='N')</p>
58、<p><b> break;</b></p><p> else if(ch=='y'||ch=='Y')</p><p> Create(head);</p><p><b> break;</b></p><p><b> }&
59、lt;/b></p><p> else if(strcmp(ID,"2")==0)</p><p><b> {</b></p><p> system("cls");</p><p> OutPutTxt(head);</p><p>&l
60、t;b> break;</b></p><p><b> }</b></p><p> else if(strcmp(ID,"3")==0)</p><p><b> {</b></p><p> system("cls");<
61、;/p><p> OutPutTxt(head);</p><p> printf("\n");</p><p> Count(head);</p><p><b> break;</b></p><p><b> }</b></p>
62、<p> else if(strcmp(ID,"4")==0)</p><p><b> {</b></p><p> system("cls");</p><p> printf("請(qǐng)輸入要統(tǒng)計(jì)的字符串:");</p><p> scanf
63、("%s",sch);</p><p> printf("\n");</p><p> OutPutTxt(head);</p><p> printf("\n");</p><p> printf("出現(xiàn)的次數(shù)為: %d\n",Find_Word(
64、head,sch));</p><p><b> break;</b></p><p><b> }</b></p><p> else if(strcmp(ID,"5")==0)</p><p><b> {</b></p><
65、p> system("cls");</p><p> printf("請(qǐng)輸入要?jiǎng)h除的某一字符串:");</p><p> scanf("%s",tmp_sch);</p><p> printf("\n");</p><p> OutPutTxt(
66、head);</p><p> Del_String(head,tmp_sch);</p><p> printf("刪除后");</p><p> OutPutTxt(head);</p><p><b> break;</b></p><p><b>
67、}</b></p><p> else if(strcmp(ID,"6")==0)</p><p><b> {</b></p><p> printf("你確定要退出系統(tǒng)嗎?(Y/N)\n");</p><p> getchar();</p>&
68、lt;p> scanf("%c",&ch);</p><p> system("cls");</p><p> if(ch=='n'||ch=='N')</p><p><b> break;</b></p><p> els
69、e if(ch=='y'||ch=='Y') exit(0);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> system("cls&q
70、uot;);</p><p> printf("您輸入字母有錯(cuò),請(qǐng)重新輸入!\n\n");</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p&
71、gt;<b> }</b></p><p><b> }</b></p><p><b> 運(yùn)行結(jié)果:</b></p><p><b> 1、主界面</b></p><p><b> 2、新建文本界面</b></p&g
72、t;<p><b> 3、瀏覽文本</b></p><p><b> 4、文本字符統(tǒng)計(jì)</b></p><p><b> 5、特定字符串統(tǒng)計(jì)</b></p><p><b> 6、特定字符串刪除</b></p><p><b&g
73、t; 七、實(shí)驗(yàn)總結(jié)</b></p><p> 本次課程設(shè)計(jì)歷時(shí)一周,所用知識(shí)基本上包括了課本所學(xué)的知識(shí)以及很多有關(guān)C++的基礎(chǔ)知識(shí),課程設(shè)計(jì)的過程中自己更更進(jìn)一步了解了鏈表,掌握了數(shù)據(jù)結(jié)構(gòu)的思想與方法,也使我認(rèn)識(shí)到自己在學(xué)習(xí)編程方面還有很多的不足。自己在編寫程序的過程中,不是所有知識(shí)一下就想起來的,而是出現(xiàn)了不少錯(cuò)誤,通過調(diào)試,在查閱一些資料后,才整理出來的。今后我要多讀一些編程方面的書籍,不能只
74、拘泥于課本上的知識(shí),并注重理論與實(shí)踐的結(jié)合,多上機(jī)練習(xí)編寫程序,提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力,不斷充實(shí)自己,更好的掌握編程思想。我相信,隨著時(shí)間的積累系統(tǒng)中很多內(nèi)容都將得到充實(shí)。</p><p> 其實(shí),系統(tǒng)中也有不少亮點(diǎn),比如:統(tǒng)計(jì)出漢字個(gè)數(shù),strstr()函數(shù)的應(yīng)用,鏈表的運(yùn)用,清屏函數(shù)等。</p><p><b> 八、參考文獻(xiàn)</b></
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---文章編輯
- 文章編輯_數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 文章編輯_數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-文章編輯
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--文章編輯系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--文章編輯
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)—文章編輯設(shè)計(jì)報(bào)告
- c語言數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---文章編輯
- c語言數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-文章編輯
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--文章編輯集合運(yùn)算
- 高級(jí)數(shù)據(jù)結(jié)構(gòu)課程論文---文章編輯
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----行編輯程序
- 簡(jiǎn)單行編輯系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——簡(jiǎn)單行編輯程序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----huffman編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--文本編輯器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(論文)任務(wù)書--棧和隊(duì)列及其應(yīng)用 文章編輯
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--文字編輯器
- c語言(數(shù)據(jù)結(jié)構(gòu))-文章編輯系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論