程序設(shè)計_文本編輯器的設(shè)計與實現(xiàn)_第1頁
程序設(shè)計_文本編輯器的設(shè)計與實現(xiàn)_第2頁
程序設(shè)計_文本編輯器的設(shè)計與實現(xiàn)_第3頁
程序設(shè)計_文本編輯器的設(shè)計與實現(xiàn)_第4頁
程序設(shè)計_文本編輯器的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 程序設(shè)計報告(2014/2015學年 第一學期)題 目:文檔編輯器的設(shè)計與實現(xiàn) 專 業(yè) 組長 學號姓名 組員 學號姓名 指 導 教 師 指 導 單 位 日 期 成 員 分 工 組 長()對文件操作功能(查找,刪除,插入)的代碼編寫,報告中概要設(shè)計與代碼調(diào)試問題部分的撰寫 組 員()統(tǒng)計功能代碼的編寫,翻閱書籍查找資料,報告中課程設(shè)計總結(jié)及需求分析部分的撰寫 組 員()可操作的主菜單及主函數(shù)部分代碼的編寫,報告整體的撰寫及測試數(shù)據(jù)及其結(jié)果分析,制圖等 評 分 細 則 評分項優(yōu)秀優(yōu)優(yōu)秀 優(yōu)秀 優(yōu)秀 優(yōu)秀 良好 及格 差 遵守機房規(guī)章制度 上機時的表現(xiàn) 學習態(tài)度 程序準備情況 程序設(shè)計能力 團隊合

2、作精神 課題功能實現(xiàn)情況 算法設(shè)計合理性 用戶界面設(shè)計 報告書寫認真程度 內(nèi)容詳實程度 文字表達熟練程度 回答問題準確度 簡 單 評 語 教師簽名 年 月 日 評 分 等 級 備注評分等級分為五種:優(yōu)秀,良好,中等,及格,不及格文檔編輯器的設(shè)計與實現(xiàn)一 課題內(nèi)容與要求 文檔編輯器系統(tǒng)是對一個文本內(nèi)容進行各種常規(guī)操作,例如:插入、刪除、查找、替換等功能。通過此課題,熟練掌握文本文件的操作及用字符數(shù)組來實現(xiàn)字符串操作的功能。 基本要求: (1)首先文件標準化處理:如果句子有前導空格和后導空格,則刪除這些空格,單詞與單詞之間只保留一個空格。 (2)統(tǒng)計功能:可方便地統(tǒng)計出文檔中所有出現(xiàn)次數(shù)最多和最少

3、的字符串。 (3)查找與替換功能:能夠查找任意一個字符串在文檔中出現(xiàn)的次數(shù),并可以選擇全部或有選擇地將其替換為另一個字符串。 (4)顯示功能:編輯完成后可以顯示編輯后的文檔。(5)抽取功能:根據(jù)要求將文件中的某一類字符抽取,并存入另外的文件,如抽取所有的數(shù)字、抽取所有的字母等。 編輯 退出 統(tǒng)計 主菜單 輸入繼續(xù)上次輸入重新輸入大寫字母個數(shù)小寫字母個數(shù)數(shù)字的個數(shù)標點符號個數(shù)空格的個數(shù)所有字數(shù)查找字符串刪除字符串插入字符串顯示當前內(nèi)容二 需求分析圖一:文檔編輯器系統(tǒng)的功能框架圖(1)提供可操作的主菜單:輸出個菜單,用于顯示若干個可選的功能選項。根據(jù)輸入的選項來運行不同的功能,運行不同的函數(shù)。(2

4、)進行文本信息的載入:選擇輸入方式,輸入文本內(nèi)容,提供可操作文本。(3)統(tǒng)計數(shù)據(jù)功能:輸出第二子菜單,用于顯示若干個可選的功能選項。根據(jù)輸入的選項來運行不同的功能,運行不同的函數(shù)。(4)編輯數(shù)據(jù)功能:輸出個菜單,用于顯示若干個可選的功能選項。根據(jù)輸入的選項來運行查找、刪除、插入、顯示當前文本等不同的功能,運行不同的函數(shù)。(5)退出程序:退出當前程序。三 概要設(shè)計本程序共有11個函數(shù)1、HeadWord() 標題函數(shù),即一個輸出標題,永遠出現(xiàn)在程序的最頂端。 2、CreatWord() 文本輸入函數(shù),實現(xiàn)對文本的內(nèi)容進行輸入;3、PrintWord() 當前文本內(nèi)容輸出函數(shù),實現(xiàn)文本內(nèi)容輸出;

5、4、CountWord() 文章內(nèi)容統(tǒng)計函數(shù),文本內(nèi)容進 行統(tǒng)計,包括對文本內(nèi)容中的大寫字母、小寫字母、數(shù)字、標點符號、空格以及文章所有字 數(shù)的個數(shù)的統(tǒng)計;5、SearchWord() 文章內(nèi)容查找函數(shù),實現(xiàn)查找部分;6、DeleteWord() 文章內(nèi)容刪除函數(shù),實現(xiàn)刪除部分;7、InsertWord() 文章內(nèi)容插入函數(shù),實現(xiàn)插入部分; 8、Bmenu() 第二子菜單函數(shù),實現(xiàn)子菜單功能; 9、AboutWord() 顯示作者信息的函數(shù);10、menu() 主菜單函數(shù),實現(xiàn)可操作菜單;11、main()主函數(shù)。(1)查找功能: 開始 申請訪問輸入要查找的字符判斷是否存在記錄位置 輸出 結(jié)束

6、 否是圖二:查找功能圖(2)插入功能 開始 創(chuàng)建空間輸入要插入的字符或字符串輸入要插入的位置計算出插入字符串的長度n將要插入位置之后的字符串向后移n位插入要插入的字符或者字符串 結(jié)束圖三:插入功能圖 開始輸入字符串查找所輸入字符串所在的位置能否找到將其后字符串向前移動覆蓋之 結(jié)束否是(3)刪除功能圖四:刪除功能圖開始申請訪問輸入要統(tǒng)計的內(nèi)容查找符合條件的字符字符統(tǒng)計個數(shù)輸出統(tǒng)計個數(shù) 結(jié)束(4)統(tǒng)計功能圖五:統(tǒng)計功能圖四 源程序代碼#include<stdio.h>#include<malloc.h>#include<string>#include<io

7、stream>#include<stdlib.h>#include<conio.h>#include<fstream>using namespace std;#define Link_Size 100int NUM,C,N;typedef struct list char data80; int length; struct list *next; struct list *pre; int row; LinkList;LinkList *head;void HeadWord()/system("cls"); cout<<

8、;"tt*n"cout<<"tt* 歡迎使用簡單的文本編輯器 *n"cout<<"tt*n"LinkList *LoadWord() LinkList *temp; char ch; int i,j; head->next=(LinkList *)malloc(sizeof(LinkList); head->pre=NULL; temp=head->next; temp->pre=NULL; temp->length=0; for(i=0;i<80;i+) temp->

9、datai='0'cout<<"繼續(xù)上次輸入(輸入#號結(jié)束):n"for(j=0;j<Link_Size;j+) for(i=0;i<80;i+) ch=getchar(); temp->datai=ch; temp->length+; if(ch='#') NUM=j; break; if(ch='#') temp->length=i; temp->next=NULL; break; temp->next=(LinkList *)malloc(sizeof(LinkLis

10、t) ; temp->next->pre=temp; temp=temp->next; for(i=0;i<80;i+) temp->datai='0'ofstream ocout;ocout.open("f:/text.txt",ios:app);ocout<<temp->data;ocout.close(); LinkList *temp; char ch; temp->row=NUM+1;system("cls");return temp;LinkList *CreatWord(

11、) int i,j; head->next=(LinkList *)malloc(sizeof(LinkList); head->pre=NULL; temp=head->next; temp->pre=NULL; temp->length=0; for(i=0;i<80;i+) temp->datai='0'cout<<"開始創(chuàng)建文本,請輸入文章(輸入#號結(jié)束):n"for(j=0;j<Link_Size;j+) for(i=0;i<80;i+) ch=getchar(); temp->

12、;datai=ch; temp->length+; if(ch='#') NUM=j; break; if(ch='#') temp->length=i; temp->next=NULL; break; temp->next=(LinkList *)malloc(sizeof(LinkList) ; temp->next->pre=temp; temp=temp->next; for(i=0;i<80;i+) temp->datai='0'ofstream ocout;ocout.open(&

13、quot;f:/text.txt");ocout<<temp->data;ocout.close();temp->row=NUM+1;system("cls");return temp;void PrintWord()ifstream icin;icin.open("f:/text.txt");char tt100=0;icin.getline(tt,100,0);cout<<tt<<endl;void CountWord() LinkList *temp; char ch; int i,j,t;

14、 int WORD=0,word=0,space=0,num=0,punct=0,sum=0; temp=head->next; for(j=0;j<=NUM;j+) for(i=0;(i<80)&&(temp->datai)!='#'i+) ch=temp->datai; if(ch>='A')&&(ch<='Z') WORD+; else if(ch>='a')&&(ch<='z') word+; else i

15、f(ch>='0')&&(ch<='9') num+; else if(ch=' ') space+; else if(ch=33|ch=34|ch=39|ch=44|ch=46|ch=58|ch=59|ch=63) punct+; sum=WORD+word+num; while(1) cout<<"n" HeadWord(); cout<<"tt*n" cout<<"tt* 文章內(nèi)容統(tǒng)計菜單 *n" cout<&l

16、t;"tt*n" cout<<"tt* 1、文章中大寫字母的個數(shù) *n" cout<<"tt* 2、文章中小寫字母的個數(shù) *n" cout<<"tt* 3、文章中數(shù)字的個數(shù) *n" cout<<"tt* 4、文章中標點符號的個數(shù) *n" cout<<"tt* 5、文章中空格的個數(shù) *n" cout<<"tt* 6、文章中所有字數(shù) *n" cout<<"tt* 7、

17、退出返回主菜單 *n" cout<<"tt* 8、直接退出本系統(tǒng) *n" cout<<"tt*n" cout<<"tt請選擇需統(tǒng)計項目:" cin>>t; switch(t) case 1: system("cls"); HeadWord(); cout<<"文章中大寫字母的個數(shù):"<<WORD<<endl; cout<<"按回車鍵繼續(xù)····

18、;·"getchar();getchar();system("cls"); break; case 2: system("cls"); HeadWord(); cout<<"文章中小寫字母的個數(shù):"<<word<<endl; cout<<"按回車鍵繼續(xù)·····"getchar();getchar();system("cls");break; case 3: system(&qu

19、ot;cls"); HeadWord(); cout<<"文章中數(shù)字的個數(shù):"<<num<<endl; cout<<"按回車鍵繼續(xù)·····"getchar();getchar();system("cls");break; case 4: system("cls"); HeadWord(); cout<<"文章中標點符號的個數(shù):"<<punct<<end

20、l; cout<<"按回車鍵繼續(xù)·····"getchar();getchar();system("cls"); break; case 5: system("cls"); HeadWord(); cout<<"文章中空格的個數(shù):"<<space<<endl; cout<<"按回車鍵繼續(xù)·····"getchar();getchar();

21、system("cls"); break; case 6: system("cls"); HeadWord(); cout<<"文章中所有字數(shù):"<<sum<<endl; cout<<"按回車鍵繼續(xù)·····"getchar();getchar();system("cls"); break; if(t=7) system("cls"); break; if(t=8) exit(0

22、); void SearchWord(char *str1,LinkList* temp) char Data20 ; int i,j,k=0,sum=0;int l=1; temp=head->next; strcpy(Data,str1); for(i=0;i<=NUM;i+) for(j=0;j<80;j+) if(temp->dataj)=Datak) k+; else if(Datak!='0')j=j-k;k=0; if(Datak='0') sum+;j=j-k+1;cout<<"ttt第"&

23、lt;<l<<"次出現(xiàn)在第"<<i+1<<"行第"<<j+1<<"列n"l+;k=0;continue; temp=temp->next; cout<<"ttt字符串總共出現(xiàn)次數(shù)為:"<<sum<<endl; C=sum;N=i*80+j; void DeleteWord(char *str2) char Data20; LinkList *temp,*term; int i,j,k,m,y,num; str

24、cpy(Data,str2); for(y=0;y<C;y+) num=80;k=0,m=0; temp=head; for(i=0;i<=NUM;i+) term=temp; temp=temp->next; for(j=0;j<80;j+) if(temp->dataj)=Datak) k+; else if(Datak!='0') j=j-k;k=0; if(Datak='0') num=j;break; if(num<80) break; for(;i<=NUM;i+) for(;j<80;j+) if(j

25、+1<k) term->data80-k+num=temp->dataj+1; elsetemp->dataj-k+1=temp->dataj+1; term=temp; temp=temp->next; j=0; LinkList * InsertWord(LinkList *temp) char Data20; int h,l; cout<<"tt請輸入要插入的字符或字符串:"<<endl;getchar();gets(Data);printf("ntt當前文章內(nèi)容為:");PrintWor

26、d();printf("ntt請輸入要插入的行:");scanf("%d",&h);printf("ntt請輸入要插入的列:");scanf("%d",&l); int i=(h-1)*80+l; LinkList *a;int n=strlen(Data);int m ;int insertRow=i/80+1;int row=temp->row;int j;if(insertRow=row)for(m=temp->length-1;m>=(i%80)&&n>

27、;0;m-)temp->datam+n=temp->datam;for(m=(i%80),j=0;m<n+(i%80);m+,j+)temp->datam=Dataj; elseint r=0;for(int p=insertRow; p<row;p+)if(p = insertRow) r=0; elser=n;for(m=temp->length-1-r;m>=0&&n>0;m-)temp->datam+n=temp->datam;a=temp;temp = temp->pre;temp->length

28、 = 80;for(m = temp->length-n,j=0;m<temp->length;m+,j+)a->dataj=temp->datam;for(m=temp->length-n-1;m>=(i%80);m-) temp->datam+n=temp->datam;for(m=(i%80),j=0;m<(i%80)+n;m+,j+) temp->datam =Dataj;return temp;void Bmenu(LinkList *temp) char str120;char str220;int a;doHead

29、Word();cout<<"ntt*n"cout<<"tt* 文章內(nèi)容處理菜單 *n"cout<<"tt*n"cout<<"tt* 1、查找文章中的字符或者字符串 *n"cout<<"tt* 2、刪除文章中的字符或者字符串 *n"cout<<"tt* 3、向文章中插入字符或者字符串 *n"cout<<"tt* 4、顯示當前文章內(nèi)容 *n"cout<<"

30、tt* 5、返回主菜單 *n"cout<<"tt* 6、直接退出系統(tǒng) *n"cout<<"tt*n"cout<<"tt 請選擇:"cin>>a;switch(a)case 1: system("cls"); HeadWord(); cout<<"ttt請輸入您需要查找的字符或字符串:" getchar(); gets(str1); SearchWord(str1,temp); cout<<"按回車鍵繼續(xù)&

31、#183;····"getchar();getchar();system("cls"); break;case 2: system("cls"); HeadWord(); cout<<"ttt請輸入您需要刪除的字符或字符串:" getchar(); gets(str2); SearchWord(str2,temp); DeleteWord(str2); cout<<"ttt刪除 %s 后的文章為:"<<str2<<en

32、dl; PrintWord(); cout<<"按回車鍵繼續(xù)·····"getchar();getchar();system("cls"); break;case 3: system("cls"); HeadWord(); InsertWord(temp); cout<<"ttt插入字符或字符串后文章為:" PrintWord(); cout<<"按回車鍵繼續(xù)·····&

33、quot;getchar();getchar();system("cls"); break;case 4: system("cls"); HeadWord(); PrintWord(); cout<<"按回車鍵繼續(xù)·····"getchar();getchar();system("cls"); break;if(a=5) system("cls"); break;if(a=6) exit(0); while(1); void Abou

34、tWord() cout<<"nntt 關(guān) 于 n" cout<<"tt*n"cout<<"tt* 謝謝使用 *n" cout<<"tt*n"cout<<"n"void menu(LinkList *temp)int t;doHeadWord();printf("n");cout<<"tt*n"cout<<"tt* 主菜單 *n"cout<<

35、"tt*n"cout<<"tt* 1、文章內(nèi)容輸入 *n"cout<<"tt* 2、顯示當前文章內(nèi)容 *n"cout<<"tt* 3、進入文章內(nèi)容統(tǒng)計菜單 *n"cout<<"tt* 4、進入文章內(nèi)容處理菜單 *n"cout<<"tt* 5、關(guān)于 *n"cout<<"tt* 6、退出文本編輯器 *n"cout<<"tt*n"cout<<&qu

36、ot;tt* 注:第一次運行本程序時請選擇1號功能 *n"cout<<"tt*n"cout<<" tt 請選擇:"cin>>t;if(t>6)&&(t<1) cout<<"對不起,無此功能,請輸入正確的功能序號!n"elseswitch(t) case 1: system("cls"); cout<<"tt*繼續(xù)上次輸入還是重新輸入?*"<<endl; cout<<"

37、;tt*1:繼續(xù)輸入*2:重新輸入*n" int s; cin>>s; switch(s) case 1:HeadWord();temp=LoadWord(); break; case 2:HeadWord();temp=CreatWord(); break; case 2: system("cls"); PrintWord(); printf("n"); cout<<"按回車鍵繼續(xù)·····" getchar(); getchar(); system

38、("cls"); break;case 3: system("cls"); CountWord(); break; case 4: system("cls"); Bmenu(temp); break;case 5: system("cls"); HeadWord(); AboutWord();cout<<"按回車鍵繼續(xù)·····"getchar();getchar();system("cls");break;if(

39、t=6) break;while(1);int main()head=(LinkList *)malloc(sizeof(LinkList);LinkList *temp;menu(temp);return 0;五 測試結(jié)果及數(shù)據(jù)分析運行程序后,主菜單如圖所示:圖2 主菜單欲輸入文本,輸入1,按Enter鍵,出現(xiàn)下圖:圖3 選擇輸入方式:1:繼續(xù)輸入;2:重新輸入輸入2,按Enter鍵,出現(xiàn)下圖:圖4 創(chuàng)建文本輸入文章內(nèi)容,以#號鍵結(jié)束,按Enter鍵,出現(xiàn)下圖:圖5 主菜單輸入3,按Enter鍵,進入文章內(nèi)容統(tǒng)計菜單,如下圖:圖6 文章內(nèi)容統(tǒng)計菜單輸入1,按Enter鍵,出現(xiàn)下圖:圖7 輸出

40、文章中大寫字母個數(shù)按Enter鍵繼續(xù),輸入2出現(xiàn)下圖:圖8輸出文章中小寫字母個數(shù)按Enter鍵繼續(xù),出現(xiàn)下圖:圖9 輸入3,按Enter鍵繼續(xù),出現(xiàn)下圖:圖10 輸出文章中數(shù)字個數(shù)按Enter鍵繼續(xù),出現(xiàn)下圖:圖11 輸入4,按Enter鍵繼續(xù),出現(xiàn)下圖:圖12 輸出文章中標點符號的個數(shù)按Enter鍵繼續(xù),出現(xiàn)下圖:圖13 輸入5,按Enter鍵繼續(xù),出現(xiàn)下圖:圖14 輸出文章中空格個數(shù)按Enter鍵繼續(xù),輸入6,出現(xiàn)下圖:圖15 輸出文章中所有字數(shù)按Enter鍵繼續(xù),出現(xiàn)下圖:圖16主菜單,輸入4按Enter鍵繼續(xù),進入文章內(nèi)容處理菜單,出現(xiàn)下圖:圖17 輸入1,按Enter鍵繼續(xù),出現(xiàn)下圖:圖18 輸入o,按Enter鍵繼續(xù),進行查找,出現(xiàn)下圖:圖19 輸出查找結(jié)果按Enter鍵繼續(xù),出現(xiàn)下圖:圖20 輸入2 按Enter鍵繼續(xù),出現(xiàn)下圖:圖21 輸入要刪除的字符或字符串按Enter鍵繼續(xù),出現(xiàn)下圖:圖22 輸出刪除

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論