![c課程設(shè)計文章編輯_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/9b816fd6-e07d-47d7-b782-f701ce442e37/9b816fd6-e07d-47d7-b782-f701ce442e371.gif)
![c課程設(shè)計文章編輯_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/9b816fd6-e07d-47d7-b782-f701ce442e37/9b816fd6-e07d-47d7-b782-f701ce442e372.gif)
![c課程設(shè)計文章編輯_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/9b816fd6-e07d-47d7-b782-f701ce442e37/9b816fd6-e07d-47d7-b782-f701ce442e373.gif)
![c課程設(shè)計文章編輯_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/9b816fd6-e07d-47d7-b782-f701ce442e37/9b816fd6-e07d-47d7-b782-f701ce442e374.gif)
![c課程設(shè)計文章編輯_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/9b816fd6-e07d-47d7-b782-f701ce442e37/9b816fd6-e07d-47d7-b782-f701ce442e375.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、課程設(shè)計報告課程設(shè)計題目:文章編輯 學 院:姓 名: 班 級:學 號:專 業(yè): 指導教師: 2012年06月04日一、需求分析說明 我們編此程序 為了便于統(tǒng)計文章中的字數(shù),標點數(shù),以及數(shù)字的個數(shù),因此它的功能要求也就應(yīng)該包含這些。主要的是如下幾點:1)、分別統(tǒng)計出其中英文字母數(shù)和空格數(shù)及整篇文章總字數(shù);2)、統(tǒng)計某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);3)、刪除某一子串,并將后面的字符前移。存儲結(jié)構(gòu)使用線性表,分別用幾個子函數(shù)實現(xiàn)相應(yīng)的功能(要求用菜單選擇操作);輸入數(shù)據(jù)的形式和范圍:可以輸入大寫、小寫的英文字母、任何數(shù)字及標點符號。輸出形式:(1)分行輸出用戶輸入的各行字符;(2)分4行
2、輸出"全部字母數(shù)"、"數(shù)字個數(shù)"、"空格個數(shù)"、"文章總字數(shù)"(3)輸出刪除某一字符串后的文章;問題分析:本次程序我計劃利用單鏈表結(jié)構(gòu)實現(xiàn)對文章編輯的操作,因為,在實際應(yīng)用中,輸入的文章有很大的容量,動輒上萬,如果利用順序表不足以充分利用空間,并且可能造成溢出,使整個系統(tǒng)趨于崩潰,內(nèi)存的資源是很寶貴的,為了盡可能利用到內(nèi)存資源,所以,利用鏈表實現(xiàn)。為了利用鏈表控制,必須利用到大量指針,所以,建立了一個link類,通過該類,確定不同指針對象,實現(xiàn)操作。再建立一個類,chuan,中文名“串”的拼音,在當中實現(xiàn)對鏈表的操
3、作功能,通過對這兩個類的操作實現(xiàn)課程設(shè)計的要求。主要功能有:1.插入字符或者文章2.刪除字符串或文章3.查找字符串4.刪除文章中出現(xiàn)的單個字符5.統(tǒng)計文章中數(shù)字,大寫字母,小寫字母以及各種符號的個數(shù)6.顯示當前文章內(nèi)容二、總體設(shè)計1.存儲結(jié)構(gòu)利用單鏈表存儲,為線性結(jié)構(gòu),程序總體為鏈表,通過對鏈表的插入刪除,統(tǒng)計等等實現(xiàn)各類功能。2. 主要功能:(1)插入字符或者文章(2)刪除字符串或文章(3)查找字符串(4)刪除文章中出現(xiàn)的單個字符(5)統(tǒng)計文章中數(shù)字,大寫字母,小寫字母以及各種符號的個數(shù)(6)顯示當前文章內(nèi)容1.插入字符或者文章2.刪除字符串或文章3.查找字符串4.刪除文章中出現(xiàn)的單個字符5
4、.統(tǒng)計文章中數(shù)字,大寫字母,小寫字母以及各種符號的個數(shù)6.顯示當前文章內(nèi)容0.退出輸入1插入功能輸入3查找功能輸入2刪除功能輸入4刪除單個字符功能輸入5統(tǒng)計功能輸入6顯示存儲內(nèi)容功能輸入0退出三、詳細設(shè)計1.類:建立了link類,公有成員為指針,因為題目要求利用幾個函數(shù)實現(xiàn)文章編輯的功能,所以對于文章編輯的功能沒有用到類。class link/定義關(guān)于指針的類public:char data;link *next;class chuan/實現(xiàn)串的各類功能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.對象:link:void chuan:inputlink函數(shù)包括的對象(link * s,*r,*p;)void chuan:insert函數(shù)包括的對象(link *s,*q,*b;)void chuan:delete1函數(shù)包括的對象(link *p,*q;)link*
6、chuan:index函數(shù)包括的對象(link *p,*q,*r,*e;)void chuan:delete2函數(shù)包括的對象(link *p,*q;)void chuan:count1函數(shù)包括的對象(link *p,*q;)void chuan:print函數(shù)包括的對象(link *p,*q;)chuan:對象: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.程序測試程序運行截圖:系統(tǒng)進入中跳入注意項目界面輸入文字插入功能插入后的結(jié)果,輸出79個字符統(tǒng)計得到的結(jié)果由于篇幅有限,剩下的各類功能請自我嘗試。本程序達到了題目要求,并很好的實現(xiàn)了,其中還有幾相自我添加的功能,在不斷地完善。但在查找方面有一些不足自出,在今后中還需要不斷的自我完善,查找功能通過循環(huán)掃描存儲進去的字符
8、,實現(xiàn)查找,各類功能都是如此。空間復(fù)雜度為o(n)所用時間為:四、總結(jié)得到文本編輯器這一課程設(shè)計題目時,自己還比較害怕是制作向windows系統(tǒng)中記事 本一樣的程序??戳巳蝿?wù)書之后自己有了些欣慰,任務(wù)書上要求是對輸入的信息進行操作,這是我們經(jīng)常練習的內(nèi)容,雖然是比平時練習的更為難,更有深度,但自己畢竟知道該向什么方向去努力,自己應(yīng)該如何去編寫這個程序。所以自己在整個課程設(shè)計過程中還是比較輕松的,編寫過程中遇到的困難及問題都通過查閱資料、向老師提問得以解決。這都是基于對課題有一個明確的了解,清楚向什么方向去寫。所以本次課程設(shè)計自己最大的體會就是不管寫什么程序,自己首先得對這個問題要分析透徹,要知
9、道自己要干什么,然后才能讓自己干什么。 今后我要多讀一些關(guān)于計算機方面的書,并注重理論與實踐的結(jié)合,多上機練習編寫程序,提高自己的實際動手能力和獨立思考的能力,不斷充實自己,更好的開始。在這過程中,還是遇到不少的麻煩事的,起初,我的代碼已經(jīng)完成,可是在這個過程中我運用的是cin輸入函數(shù),可是,cin不接受空格字符,該字符直接跳過,不計入文章中,針對這個問題,我不斷研究,找了好多這方面的資料,試了getchar(),cin.get()等不同函數(shù),可是均不行,最終,找到了問題所在,是內(nèi)存讀取問題,因此,運用系統(tǒng)函數(shù)fflush(stdin)清除內(nèi)存使程序最終運行。費了好大功夫。在這次課程設(shè)計中我得
10、到了好多啟示與經(jīng)驗,收益匪淺,懂了好多,并且充分練習了單鏈表,使自己有個好的升華,并明白了不同的輸入函數(shù)有不同的效果!以后遇到問題不能輕易放棄,必須細細琢磨不停前進,強化獨立制作,獨立思考的能力,在今后的學習工作中,更加用心!源代碼附錄(采用分頁式編寫):/類定義 頭文件,”鏈串.h”class link/定義關(guān)于指針的類public:char data;link *next;class chuan/實現(xiàn)串的各類功能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);/類功能實現(xiàn)文件,源文件,”文章.cpp”#include "鏈串.h"#include<iostream>#include<string>using namespace std;int count=0;/通過全局變量控制鏈表中的個數(shù)void chuan:inputli
12、nk(link* &head) /通過尾插法建立鏈表,控制頭指針,通過頭指針操作鏈表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)/插入功能,通過尋找頭指針確定鏈表int j=0,i=0,k=1;cout<<"輸入想插入的行號:"cin>>i;cout<<"輸入想插入的列號:"cin>>k;if(i-1)*79+k)>count)cout<<"插
14、入失敗,該篇文章沒有這么長!系統(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ù),再建立一個鏈表q=b;while(q->next!=null)q=q->next;/查找要插入的位置if(s!=null)/去掉頭指針,兩個指針合并為一個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<<"刪除失??!文章沒有那么長!"<<endl;i=(i-1)*79+g;c
16、out<<"輸入想刪除字符的個數(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<<"刪除錯誤!刪除的內(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<<"查找失??!該文章中沒有你所查找的內(nèi)容!"return null;void chuan:delete2(link* &head,char &x)/刪除鏈表中一個相同字符cout<<"輸入想刪除的字符(按回車結(jié)束)
19、:"cin>>x;/輸入端口link *p,*q;if(head->next=null)/判斷鏈表是否為空cout<<"不能刪除!"<<endl;elseq=head;p=head->next;while(p!=null)/指針前進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)計字符功能int i=0;/分不同變量統(tǒng)計字符個數(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)/大寫字母i=i+1;else if(q->data>=97)&&(q->data<=122)/小寫字母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;"大寫字母的個數(shù)為:"<<i<<endl;cout<<"小寫字母的個數(shù)為:"<<j<<endl;cout<<"數(shù)字字符的個數(shù)為:"<<s<<endl;cout<<"空格字符的個數(shù)為:"<<l<<endl;cout<<"其他各類字符數(shù)為:"<<k<<endl;cout<<"文章字數(shù)統(tǒng)計,總數(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é)點q=head->next;/指針前進while(q!=null)i=i+1;j=j+1;cout<<q->data;if(i%79=0)cout<<
24、endl;/每行輸出不多于80個字符,完成輸出功能q=q->next;count=j;/統(tǒng)計文章總字數(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歡迎進入文章編輯系統(tǒng)"<<endl;cout<<"ttttt請等待"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)的單個字符"<
28、;<endl;cout<<" 5.統(tǒng)計文章中數(shù)字,大寫字母,小寫字母以及各種符號的個數(shù)"<<endl;cout<<" 6.顯示當前文章內(nèi)容 "<<endl;cout<<" 0.退出本系統(tǒng)"<<endl;cout<<"請輸入選擇的功能項:"cin>>k;if(k<='0')&&(k>='7')cout<<"輸入錯誤請重新輸入!"<<endl;switch(k)/實現(xiàn)菜單控制case '1':a.insert(head);a.print(head);system("pause");system("
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)文化宣傳合同范例
- 農(nóng)村裝修貸款合同范本
- 2021-2026年中國電力維護合板市場競爭策略及行業(yè)投資潛力預(yù)測報告
- 中醫(yī)私承合同范本
- 一租房合同范本個人
- 獸藥代加工合同范本
- 上海汽車租車合同范本
- 保潔補簽合同范本
- 2025年度酒水行業(yè)知識產(chǎn)權(quán)保護與糾紛解決合同范本
- 勞務(wù)公司之間合同范本
- 廣東大灣區(qū)2024-2025學年度高一上學期期末統(tǒng)一測試英語試題(無答案)
- 失效模式和效應(yīng)分析護理
- 2025年四川中煙工業(yè)限責任公司招聘110人高頻重點提升(共500題)附帶答案詳解
- 2025年山東菏澤投資發(fā)展集團限公司招聘61人管理單位筆試遴選500模擬題附帶答案詳解
- 2025山東能源集團新能源限公司招聘12人管理單位筆試遴選500模擬題附帶答案詳解
- 課題申報書:反饋對青少年努力投入的影響機制及干預(yù)研究
- 康復(fù)評定頸椎病
- 公司章程范本(完整版)
- 廠房委托經(jīng)營管理合同范本
- 高中語文《記念劉和珍君》隨堂練習(含答案)
- 部編教材《村居》《詠柳》1-古詩兩首名師公開課獲獎?wù)n件百校聯(lián)賽一等獎?wù)n件
評論
0/150
提交評論