




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)題目:文章編輯 學(xué) 院:姓 名: 班 級(jí):學(xué) 號(hào):專(zhuān) 業(yè): 指導(dǎo)教師: 2012年06月04日一、需求分析說(shuō)明 我們編此程序 為了便于統(tǒng)計(jì)文章中的字?jǐn)?shù),標(biāo)點(diǎn)數(shù),以及數(shù)字的個(gè)數(shù),因此它的功能要求也就應(yīng)該包含這些。主要的是如下幾點(diǎn):1)、分別統(tǒng)計(jì)出其中英文字母數(shù)和空格數(shù)及整篇文章總字?jǐn)?shù);2)、統(tǒng)計(jì)某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);3)、刪除某一子串,并將后面的字符前移。存儲(chǔ)結(jié)構(gòu)使用線性表,分別用幾個(gè)子函數(shù)實(shí)現(xiàn)相應(yīng)的功能(要求用菜單選擇操作);輸入數(shù)據(jù)的形式和范圍:可以輸入大寫(xiě)、小寫(xiě)的英文字母、任何數(shù)字及標(biāo)點(diǎn)符號(hào)。輸出形式:(1)分行輸出用戶輸入的各行字符;(2)分4行
2、輸出"全部字母數(shù)"、"數(shù)字個(gè)數(shù)"、"空格個(gè)數(shù)"、"文章總字?jǐn)?shù)"(3)輸出刪除某一字符串后的文章;問(wèn)題分析:本次程序我計(jì)劃利用單鏈表結(jié)構(gòu)實(shí)現(xiàn)對(duì)文章編輯的操作,因?yàn)?,在?shí)際應(yīng)用中,輸入的文章有很大的容量,動(dòng)輒上萬(wàn),如果利用順序表不足以充分利用空間,并且可能造成溢出,使整個(gè)系統(tǒng)趨于崩潰,內(nèi)存的資源是很寶貴的,為了盡可能利用到內(nèi)存資源,所以,利用鏈表實(shí)現(xiàn)。為了利用鏈表控制,必須利用到大量指針,所以,建立了一個(gè)link類(lèi),通過(guò)該類(lèi),確定不同指針對(duì)象,實(shí)現(xiàn)操作。再建立一個(gè)類(lèi),chuan,中文名“串”的拼音,在當(dāng)中實(shí)現(xiàn)對(duì)鏈表的操
3、作功能,通過(guò)對(duì)這兩個(gè)類(lèi)的操作實(shí)現(xiàn)課程設(shè)計(jì)的要求。主要功能有:1.插入字符或者文章2.刪除字符串或文章3.查找字符串4.刪除文章中出現(xiàn)的單個(gè)字符5.統(tǒng)計(jì)文章中數(shù)字,大寫(xiě)字母,小寫(xiě)字母以及各種符號(hào)的個(gè)數(shù)6.顯示當(dāng)前文章內(nèi)容二、總體設(shè)計(jì)1.存儲(chǔ)結(jié)構(gòu)利用單鏈表存儲(chǔ),為線性結(jié)構(gòu),程序總體為鏈表,通過(guò)對(duì)鏈表的插入刪除,統(tǒng)計(jì)等等實(shí)現(xiàn)各類(lèi)功能。2. 主要功能:(1)插入字符或者文章(2)刪除字符串或文章(3)查找字符串(4)刪除文章中出現(xiàn)的單個(gè)字符(5)統(tǒng)計(jì)文章中數(shù)字,大寫(xiě)字母,小寫(xiě)字母以及各種符號(hào)的個(gè)數(shù)(6)顯示當(dāng)前文章內(nèi)容1.插入字符或者文章2.刪除字符串或文章3.查找字符串4.刪除文章中出現(xiàn)的單個(gè)字符5
4、.統(tǒng)計(jì)文章中數(shù)字,大寫(xiě)字母,小寫(xiě)字母以及各種符號(hào)的個(gè)數(shù)6.顯示當(dāng)前文章內(nèi)容0.退出輸入1插入功能輸入3查找功能輸入2刪除功能輸入4刪除單個(gè)字符功能輸入5統(tǒng)計(jì)功能輸入6顯示存儲(chǔ)內(nèi)容功能輸入0退出三、詳細(xì)設(shè)計(jì)1.類(lèi):建立了link類(lèi),公有成員為指針,因?yàn)轭}目要求利用幾個(gè)函數(shù)實(shí)現(xiàn)文章編輯的功能,所以對(duì)于文章編輯的功能沒(méi)有用到類(lèi)。class link/定義關(guān)于指針的類(lèi)public:char data;link *next;class chuan/實(shí)現(xiàn)串的各類(lèi)功能public:chuan();chuan();void inputlink(link* &l);void insert(link* &
5、amp;a);void delete1(link* &c);link* index(link* &head);void delete2(link* &head,char &x);void print(link* &head);void count1(link* &head);2.對(duì)象:link:void chuan:inputlink函數(shù)包括的對(duì)象(link * s,*r,*p;)void chuan:insert函數(shù)包括的對(duì)象(link *s,*q,*b;)void chuan:delete1函數(shù)包括的對(duì)象(link *p,*q;)link*
6、chuan:index函數(shù)包括的對(duì)象(link *p,*q,*r,*e;)void chuan:delete2函數(shù)包括的對(duì)象(link *p,*q;)void chuan:count1函數(shù)包括的對(duì)象(link *p,*q;)void chuan:print函數(shù)包括的對(duì)象(link *p,*q;)chuan:對(duì)象:a3.結(jié)構(gòu)分析:uml圖linkpublic:char data;link *next;chuanpublic:chuan();chuan();void inputlink(link* &l);void insert(link* &a);void delete1(lin
7、k* &c);link* index(link* &head);void delete2(link* &head,char &x);void print(link* &head);void count1(link* &head);4.程序測(cè)試程序運(yùn)行截圖:系統(tǒng)進(jìn)入中跳入注意項(xiàng)目界面輸入文字插入功能插入后的結(jié)果,輸出79個(gè)字符統(tǒng)計(jì)得到的結(jié)果由于篇幅有限,剩下的各類(lèi)功能請(qǐng)自我嘗試。本程序達(dá)到了題目要求,并很好的實(shí)現(xiàn)了,其中還有幾相自我添加的功能,在不斷地完善。但在查找方面有一些不足自出,在今后中還需要不斷的自我完善,查找功能通過(guò)循環(huán)掃描存儲(chǔ)進(jìn)去的字符
8、,實(shí)現(xiàn)查找,各類(lèi)功能都是如此??臻g復(fù)雜度為o(n)所用時(shí)間為:四、總結(jié)得到文本編輯器這一課程設(shè)計(jì)題目時(shí),自己還比較害怕是制作向windows系統(tǒng)中記事 本一樣的程序??戳巳蝿?wù)書(shū)之后自己有了些欣慰,任務(wù)書(shū)上要求是對(duì)輸入的信息進(jìn)行操作,這是我們經(jīng)常練習(xí)的內(nèi)容,雖然是比平時(shí)練習(xí)的更為難,更有深度,但自己畢竟知道該向什么方向去努力,自己應(yīng)該如何去編寫(xiě)這個(gè)程序。所以自己在整個(gè)課程設(shè)計(jì)過(guò)程中還是比較輕松的,編寫(xiě)過(guò)程中遇到的困難及問(wèn)題都通過(guò)查閱資料、向老師提問(wèn)得以解決。這都是基于對(duì)課題有一個(gè)明確的了解,清楚向什么方向去寫(xiě)。所以本次課程設(shè)計(jì)自己最大的體會(huì)就是不管寫(xiě)什么程序,自己首先得對(duì)這個(gè)問(wèn)題要分析透徹,要知
9、道自己要干什么,然后才能讓自己干什么。 今后我要多讀一些關(guān)于計(jì)算機(jī)方面的書(shū),并注重理論與實(shí)踐的結(jié)合,多上機(jī)練習(xí)編寫(xiě)程序,提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力,不斷充實(shí)自己,更好的開(kāi)始。在這過(guò)程中,還是遇到不少的麻煩事的,起初,我的代碼已經(jīng)完成,可是在這個(gè)過(guò)程中我運(yùn)用的是cin輸入函數(shù),可是,cin不接受空格字符,該字符直接跳過(guò),不計(jì)入文章中,針對(duì)這個(gè)問(wèn)題,我不斷研究,找了好多這方面的資料,試了getchar(),cin.get()等不同函數(shù),可是均不行,最終,找到了問(wèn)題所在,是內(nèi)存讀取問(wèn)題,因此,運(yùn)用系統(tǒng)函數(shù)fflush(stdin)清除內(nèi)存使程序最終運(yùn)行。費(fèi)了好大功夫。在這次課程設(shè)計(jì)中我得
10、到了好多啟示與經(jīng)驗(yàn),收益匪淺,懂了好多,并且充分練習(xí)了單鏈表,使自己有個(gè)好的升華,并明白了不同的輸入函數(shù)有不同的效果!以后遇到問(wèn)題不能輕易放棄,必須細(xì)細(xì)琢磨不停前進(jìn),強(qiáng)化獨(dú)立制作,獨(dú)立思考的能力,在今后的學(xué)習(xí)工作中,更加用心!源代碼附錄(采用分頁(yè)式編寫(xiě)):/類(lèi)定義 頭文件,”鏈串.h”class link/定義關(guān)于指針的類(lèi)public:char data;link *next;class chuan/實(shí)現(xiàn)串的各類(lèi)功能public:chuan();chuan();void inputlink(link* &l);void insert(link* &a);void delete1
11、(link* &c);link* index(link* &head);void delete2(link* &head,char &x);void print(link* &head);void count1(link* &head);/類(lèi)功能實(shí)現(xiàn)文件,源文件,”文章.cpp”#include "鏈串.h"#include<iostream>#include<string>using namespace std;int count=0;/通過(guò)全局變量控制鏈表中的個(gè)數(shù)void chuan:inputli
12、nk(link* &head) /通過(guò)尾插法建立鏈表,控制頭指針,通過(guò)頭指針操作鏈表cout<<"輸入文字,輸入#結(jié)束:"<<endl;int i=0;link* s,*r,*p;/link* p=new link;p=r=new link;p->next=null;head=p;/確定頭指針位置head->data=null;fflush(stdin);for(;i+)/尾插法循環(huán)建立鏈表 s=new link;s->data=getchar();/cin.get()>>s->data;if(s->
13、data='#')cout<<"輸入結(jié)束!"<<endl;break;r->next=s;r=s; r->next=null;void chuan:insert(link* &head)/插入功能,通過(guò)尋找頭指針確定鏈表int j=0,i=0,k=1;cout<<"輸入想插入的行號(hào):"cin>>i;cout<<"輸入想插入的列號(hào):"cin>>k;if(i-1)*79+k)>count)cout<<"插
14、入失敗,該篇文章沒(méi)有這么長(zhǎng)!系統(tǒng)直接退出!"<<endl;exit(0);link *s,*q,*b;s=head;/控制頭指針,確定頭指針的位置while (s!=null)&&(j<(i-1)*79+k)j+;s=s->next;inputlink(b);/調(diào)用輸入函數(shù),再建立一個(gè)鏈表q=b;while(q->next!=null)q=q->next;/查找要插入的位置if(s!=null)/去掉頭指針,兩個(gè)指針合并為一個(gè)q->next=s->next;s->next=b->next;/去掉b串頭指針el
15、secout<<"找不到插入位置!"<<endl;/找不到插入位置void chuan:delete1(link* &c)/刪除功能int g=0,j=0,i=0;cout<<"輸入想刪除的行位置:"cin>>i;cout<<"輸入想刪除的列位置:"cin>>g;if(i-1)*79+g)>count)/判斷刪除位置是否合法cout<<"刪除失敗!文章沒(méi)有那么長(zhǎng)!"<<endl;i=(i-1)*79+g;c
16、out<<"輸入想刪除字符的個(gè)數(shù):"cin>>j;link *p,*q;int k=0;p=c;while (p!=null)&&(k<i-1)/查找第i-1位置k+;p=p->next;q=p;while(q!=null)&&(k<i+j)/查找i+j位置k+;q=q->next;if(p!=null)if(q!=null)p->next=q;else p->next=null;else cout<<"刪除錯(cuò)誤!刪除的內(nèi)容不存在!"<<e
17、ndl;link* chuan:index(link* &head)int i=0;link *p,*q,*r,*e;/假設(shè)不同的鏈串inputlink(e);p=head->next;q=e->next;r=p;while (p!=null)&&(q!=null)if (p->data=q->data)p=p->next;q=q->next;elser=r->next;/指針回溯p=r;q=e->next;i=i+1;if(q=null)cout<<"查找成功!"cout<<&
18、quot;查找的內(nèi)容在第"<<(i/79)+1)<<"行;"<<"第"<<(i%79+1)<<"列!"<<endl;/確定位置,查找成功return r;else cout<<"查找失??!該文章中沒(méi)有你所查找的內(nèi)容!"return null;void chuan:delete2(link* &head,char &x)/刪除鏈表中一個(gè)相同字符cout<<"輸入想刪除的字符(按回車(chē)結(jié)束)
19、:"cin>>x;/輸入端口link *p,*q;if(head->next=null)/判斷鏈表是否為空cout<<"不能刪除!"<<endl;elseq=head;p=head->next;while(p!=null)/指針前進(jìn)if(p->data=x)q->next=p->next;delete p;p=q->next;cout<<x<<"字符已刪除!"<<endl;else q=p;p=p->next;void chuan:
20、count1(link* &head)/統(tǒng)計(jì)字符功能int i=0;/分不同變量統(tǒng)計(jì)字符個(gè)數(shù)int j=0;int s=0;int k=0;int l=0;link *p,*q;p=head;q=head->next;if(q!=null)while(q!=null)if(q->data>=65)&&(q->data<=90)/大寫(xiě)字母i=i+1;else if(q->data>=97)&&(q->data<=122)/小寫(xiě)字母j=j+1;else if(q->data>=48)&
21、&(q->data<=57)/數(shù)字s=s+1;else if(q->data=32)/空格l=l+1;else /(q->data>=33)&&(q->data<=47)|(q->data>=58)&&(p->data<=64)|(q->data>=91)&&(q->data<=96)|(q->data>=123)&&(q->data<=127)/其他字符k=k+1;q=q->next;cout<&
22、lt;"大寫(xiě)字母的個(gè)數(shù)為:"<<i<<endl;cout<<"小寫(xiě)字母的個(gè)數(shù)為:"<<j<<endl;cout<<"數(shù)字字符的個(gè)數(shù)為:"<<s<<endl;cout<<"空格字符的個(gè)數(shù)為:"<<l<<endl;cout<<"其他各類(lèi)字符數(shù)為:"<<k<<endl;cout<<"文章字?jǐn)?shù)統(tǒng)計(jì),總數(shù)為:"
23、;<<count<<endl;void chuan:print(link * &head)/輸出功能int i=0,j=0;link *p,*q;if(head->next=null)/判斷文章是否為空cout<<"輸入的文章為空!"<<endl;system("pause");elsep=head;/確定頭結(jié)點(diǎn)q=head->next;/指針前進(jìn)while(q!=null)i=i+1;j=j+1;cout<<q->data;if(i%79=0)cout<<
24、endl;/每行輸出不多于80個(gè)字符,完成輸出功能q=q->next;count=j;/統(tǒng)計(jì)文章總字?jǐn)?shù)cout<<endl;/主文件,main文件,源文件,”主文件.cpp”#include"鏈串.h"#include<iostream>#include <windows.h>using namespace std;int main()int i=0,j=0;chuan a;char x,k;system("color 09");cout<<endl;cout<<endl;cout<
25、<endl;cout<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<"tttt歡迎進(jìn)入文章編輯系統(tǒng)"<<endl;cout<<"ttttt請(qǐng)等待"for(int t=6;t>0;t-)sleep(1000);cout<<"."system("cls");system("color 04");cout<<endl;cout<<
26、;endl;cout<<endl;cout<<endl;cout<<endl;cout<<" 警告:欲用此系統(tǒng),必先建立自己的文章"<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<endl;system("pause");system("cls");system("color
27、 0f");link *head;a.inputlink(head);cout<<"輸入的文章為:"<<endl;a.print(head);docout<<endl;cout<<" 1.插入字符或者文章"<<endl;cout<<" 2.刪除字符串或文章"<<endl;cout<<" 3.查找字符串"<<endl;cout<<" 4.刪除文章中出現(xiàn)的單個(gè)字符"<
28、;<endl;cout<<" 5.統(tǒng)計(jì)文章中數(shù)字,大寫(xiě)字母,小寫(xiě)字母以及各種符號(hào)的個(gè)數(shù)"<<endl;cout<<" 6.顯示當(dāng)前文章內(nèi)容 "<<endl;cout<<" 0.退出本系統(tǒng)"<<endl;cout<<"請(qǐng)輸入選擇的功能項(xiàng):"cin>>k;if(k<='0')&&(k>='7')cout<<"輸入錯(cuò)誤請(qǐng)重新輸入!"<<endl;switch(k)/實(shí)現(xiàn)菜單控制case '1':a.insert(head);a.print(head);system("pause");system("
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院分院簽約協(xié)議合同范本
- 辦公室文員年度總結(jié)報(bào)告范文大全
- 分期購(gòu)車(chē)購(gòu)車(chē)合同范例
- 制作件合同范本
- 買(mǎi)商鋪合同范本
- 佰仟手機(jī)分期合同范本
- 高中數(shù)學(xué)教學(xué)中學(xué)生創(chuàng)新素質(zhì)培養(yǎng)策略
- 2025年浙江省建筑安全員C證考試(專(zhuān)職安全員)題庫(kù)及答案
- 2025黑龍江省建筑安全員-A證考試題庫(kù)及答案
- 大氣層太陽(yáng)光反射工程合同
- 兔子坡(閱讀課上課課件)
- 高中數(shù)學(xué)《立體幾何》教材分析及教學(xué)建議
- 八年級(jí)英語(yǔ)初中英語(yǔ)閱讀理解閱讀專(zhuān)項(xiàng)練習(xí)試卷附答案
- 固定資產(chǎn)清查盤(pán)點(diǎn)明細(xì)表
- 人教版八年級(jí)數(shù)學(xué)下冊(cè)課件【全冊(cè)】
- 物聯(lián)網(wǎng)管理平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
- 1例妊娠糖尿病的個(gè)案護(hù)理
- 光伏發(fā)電職業(yè)病危害預(yù)評(píng)價(jià)方案方案
- 財(cái)務(wù)報(bào)表涉稅分析
- 立式單軸木工銑床安全操作規(guī)程
- 重癥患者識(shí)別課件
評(píng)論
0/150
提交評(píng)論