數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告—文本編輯器(共27頁(yè))
《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告—文本編輯器(共27頁(yè))》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告—文本編輯器(共27頁(yè))(27頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-----傾情為你奉上 學(xué)號(hào) 2014-2015學(xué)年 第一學(xué)期 《數(shù)據(jù)結(jié)構(gòu)》 課程設(shè)計(jì)報(bào)告 題目: 基于順序結(jié)構(gòu)的文本編輯器的設(shè)計(jì) 專(zhuān)業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 班級(jí): 姓名: 學(xué)號(hào): 指導(dǎo)教師: 成績(jī): 目錄 1課程設(shè)計(jì)內(nèi)容.............................................1 1.1 設(shè)計(jì)內(nèi)容...........................................1 1.2 設(shè)計(jì)任務(wù)..............
2、.............................1 1.3 具體要求............................................1 2 概要設(shè)計(jì)................................................1 2.1 系統(tǒng)的功能簡(jiǎn)介......................................1 2.2 各個(gè)模塊之間的主要關(guān)系..............................2 3 設(shè)計(jì)過(guò)程及代碼分析......................................2 4 設(shè)計(jì)
3、結(jié)果與分析.........................................15 5 源程序.................................................16 6 總結(jié)...................................................24 7 致謝...................................................24 8 參考文獻(xiàn)...............................................25 專(zhuān)
4、心---專(zhuān)注---專(zhuān)業(yè) 1 課程設(shè)計(jì)內(nèi)容 1.1 設(shè)計(jì)內(nèi)容 《文本編輯器》主要根據(jù)課程設(shè)計(jì)要求進(jìn)行設(shè)計(jì)的,本次課程設(shè)計(jì)的內(nèi)容及要求是設(shè)計(jì)一個(gè)文本編輯器,能實(shí)現(xiàn)文本內(nèi)容輸入、顯示、統(tǒng)計(jì)、處理、保存和退出文本編輯器等基本功能,主界面具有圖形菜單界面、輸入文本、打開(kāi)文件、顯示當(dāng)前文本內(nèi)容、進(jìn)入文本內(nèi)容統(tǒng)計(jì)菜單、進(jìn)入文本內(nèi)容處理菜單、保存、退出文本編輯器。 其中文本內(nèi)容統(tǒng)計(jì)菜單包含大小寫(xiě)字母、數(shù)字、標(biāo)點(diǎn)符號(hào)、空格、所有字符的統(tǒng)計(jì);文本內(nèi)容處理菜單包含查找、刪除文章中的字符或者字符串,向文章中插入字符或者字符串,從文章中復(fù)制字符或者字符串,修改行內(nèi)容,替換字符或者字符串。 1.
5、2 設(shè)計(jì)任務(wù) 主要利用C語(yǔ)言的文件操作能力設(shè)計(jì)一個(gè)簡(jiǎn)單的文本編輯器,對(duì)于文本編輯器來(lái)說(shuō),數(shù)據(jù)結(jié)構(gòu)相對(duì)簡(jiǎn)單,使用一個(gè)有較大長(zhǎng)度的順序表即可,在程序中可采用一維數(shù)組來(lái)實(shí)現(xiàn)。使用數(shù)組表示的順序表來(lái)存儲(chǔ)文本具有簡(jiǎn)潔、訪(fǎng)問(wèn)方便、輸出方便等特點(diǎn)。 1.3 具體要求 明確課程設(shè)計(jì)的目的,能根據(jù)課程設(shè)計(jì)的要求,查閱相關(guān)文獻(xiàn),為完成設(shè)計(jì)準(zhǔn)備必要的知識(shí); 提高學(xué)生用數(shù)據(jù)結(jié)構(gòu)進(jìn)行程序設(shè)計(jì)的能力,重點(diǎn)提高用C語(yǔ)言進(jìn)行文件操作和繪圖應(yīng)用的編程技術(shù)水平;初步了解軟件開(kāi)發(fā)的一般方法和步驟; 提高撰寫(xiě)技術(shù)文檔的能力。 2 概要設(shè)計(jì) 2.1 系統(tǒng)的功能簡(jiǎn)介 該系統(tǒng)的主要功能是實(shí)現(xiàn)文本內(nèi)容輸入
6、、顯示、統(tǒng)計(jì)、處理、保存。首先,輸入文本內(nèi)容并保存;選擇打開(kāi)文件,打開(kāi)剛才保存的文件;選擇顯示當(dāng)前文章內(nèi)容,可以預(yù)覽文件內(nèi)容;進(jìn)入文章內(nèi)容統(tǒng)計(jì)菜單,可以對(duì)文章中大寫(xiě)字母、小寫(xiě)字母、數(shù)字、標(biāo)點(diǎn)符號(hào)、空格、所有字?jǐn)?shù)的統(tǒng)計(jì);進(jìn)入文章內(nèi)容處理菜單,查找、刪除文章中的字符或者字符串,向文章中插入字符或者字符串,從文章中復(fù)制字符或者字符串,修改行內(nèi)容,替換字符或者字符串。 2.2各個(gè)模塊之間的主要關(guān)系 該程序的功能主要是文本編輯,定義的操作方法是整個(gè)程序的核心,各個(gè)模塊之間的關(guān)系是相互聯(lián)系的。首先,需操作者輸入文本內(nèi)容,打開(kāi)剛才編輯的文本文件,可以先預(yù)覽文件內(nèi)容,然后進(jìn)入文章內(nèi)容統(tǒng)計(jì)菜單,可以
7、對(duì)文章中大寫(xiě)字母、小寫(xiě)字母、數(shù)字、標(biāo)點(diǎn)符號(hào)、空格、所有字?jǐn)?shù)的統(tǒng)計(jì);進(jìn)入文章內(nèi)容處理菜單,查找、刪除文章中的字符或者字符串,向文章中插入字符或者字符串,從文章中復(fù)制字符或者字符串,修改行內(nèi)容,替換字符或者字符串。 只有在上步做出選擇后,后面的程序才會(huì)接著執(zhí)行,這便表明它們之間存在著緊密的聯(lián)系,缺少任何一個(gè)模塊都將導(dǎo)致程序無(wú)法繼續(xù)執(zhí)行。要求各個(gè)模塊之間上下相連,具有緊密相扣的關(guān)系。 3 設(shè)計(jì)過(guò)程及代碼分析 (1)主函數(shù)流程圖及運(yùn)行界面 ①主函數(shù)流程圖(見(jiàn)圖3(1)-A) main( ) 定義變量:Status s=1; int i; fo
8、r(i=0;i 9、r();
}
fclose(sfp);
}
①輸入文本流程圖(見(jiàn)圖3(2)-A)
圖3(2)-A
②運(yùn)行界面(見(jiàn)圖3(2)-B)
圖3(2)-B
(3) 打開(kāi)文件與顯示當(dāng)前文章內(nèi)容流程圖及運(yùn)行界面
①打開(kāi)文件與顯示當(dāng)前文章內(nèi)容流程圖(見(jiàn)圖3(3)-A、B)
void Open()
定義變量:int k;
while(1)
{ fgets(str,LINE_LEN,fp);
if(feof(fp))
{break;}
k=strlen(str);
10、 str[k-1]=0; // 將10強(qiáng)制改為0
if(k>0)
{ StrAssign(T[n],str);
n++;
if(n>MAX_LEN)
{ printf("文件太大\n");
return;
}}}
圖3(3)-A
void List()
定義變量:int i;
{
for(i=0;i 11、(T[i+1]);
}
getchar();
}
圖3(3)-B
②運(yùn)行界面(見(jiàn)圖3(3)-C、D)
圖3(3)-C
圖3(3)-D
(4) 進(jìn)入文章內(nèi)容統(tǒng)計(jì)菜單流程圖及運(yùn)行界面
①進(jìn)入文章內(nèi)容統(tǒng)計(jì)菜單流程圖(見(jiàn)圖3(4)-A)
void CountWord()
定義變量:int WORD=0,word=0,space=0,num=0,punct=0,sum=0;
int i,j;
char ch;
for(i=0;i 12、 13、的個(gè)數(shù):
圖3(4)-E
統(tǒng)計(jì)文章中標(biāo)點(diǎn)符號(hào)的個(gè)數(shù):
圖3(4)-F
統(tǒng)計(jì)文章中空格的個(gè)數(shù):
圖3(4)-G
統(tǒng)計(jì)文章中所有字?jǐn)?shù):
圖3(4)-H
(5)進(jìn)入文章內(nèi)容處理菜單流程圖及運(yùn)行界面
①進(jìn)入文章內(nèi)容處理菜單流程圖(見(jiàn)圖3(5)-A)
void Dispose()
定義變量:int t=0;
switch(t)
{ case 1:
Search();break;
case 2:
Delete();break;
case 3:
Insert();break;
case 4:
Cop 14、y();break;
case 5:
Modify();break;
case 6:
Replace();break;
case 7:
Hello();break;
圖3(5)-A
②運(yùn)行界面(見(jiàn)圖3(5)-B~J)
主界面:
圖3(5)-B
查找文本中的字符或字符串:
圖3(5)-C
刪除文本中的字符或字符串:
圖3(5)-D
向文本中插入字符或字符串:
圖3(5)-E
從文本中復(fù)制字符或字符串:
圖3(5)-F
修改行內(nèi)容:
圖3(5)-G
替換字符或字符串:
圖3(5)-H
15、圖3(5)-I
替換后的文本內(nèi)容:
圖3(5)-J
4 設(shè)計(jì)結(jié)果與分析
通過(guò)本次課程設(shè)計(jì),實(shí)現(xiàn)了簡(jiǎn)單的文本編輯器,可以對(duì)文本內(nèi)容輸入、顯示、統(tǒng)計(jì)、處理、保存等基本操作。當(dāng)把程序?qū)懞貌⑦M(jìn)行調(diào)試時(shí),并不是一帆風(fēng)順的,總會(huì)遇到很多在調(diào)試時(shí)遇到的錯(cuò)誤。
1.在程序中,變量的類(lèi)型有多種,如int型、char型、指針和指針數(shù)組,前后定義變量要統(tǒng)一。
2.對(duì)背景色和前景色設(shè)置的時(shí)候,當(dāng)你輸入的顏色在內(nèi)存中不存在時(shí),運(yùn)行程序過(guò)后,系統(tǒng)會(huì)告訴你相應(yīng)的顏色符號(hào)常數(shù)及數(shù)值。在程序中我選擇“system("color 0F");”,背景色為黑色,前景色亮白色。
3.如果程序在運(yùn)行 16、的過(guò)程中,對(duì)于一個(gè)循環(huán)語(yǔ)句,如果你返回的值始終是真的,那么程序?qū)⑦M(jìn)如死循環(huán)。
4.對(duì)應(yīng)該有花括弧的復(fù)合語(yǔ)句,忘記加花括弧,將會(huì)導(dǎo)致程序報(bào)錯(cuò)。
5.所調(diào)用的函數(shù)在調(diào)用語(yǔ)句之后才定義,而又在調(diào)用前未加說(shuō)明。
5 源程序
text editing.cpp
#include "edit.h"
#include "text.h"
void main()
{ Status s=1;
system("color 0F");
int i;
for(i=0;i 17、 while(s)
{ Hello();
}}
text.h主要代碼
void Edit() //輸入文本內(nèi)容
{ FILE *sfp;
if((sfp=fopen("e://wmc.txt","a+"))==NULL)
{ printf("打開(kāi)文件失敗");
exit(0);
}
printf("請(qǐng)輸入文本(默認(rèn)存儲(chǔ)地址為E:\\wmc.txt,文本輸入完成后,按Enter,以Ctrl+Z結(jié)束):");
char c;
c=getchar();
while(c!=EOF)
{ fputc( 18、c,sfp);
c=getchar();
}
fclose(sfp);
}
void Open() // 打開(kāi)文件(新或舊)
{ system("cls");
int k;
if(filename[0]) // 文件已打開(kāi)
printf("已存在打開(kāi)的文件\n");
else
{ printf("請(qǐng)輸入文件名(可包括盤(pán)符、路徑,不超過(guò)%d個(gè)字符,如E:\\wmc.txt): ",NAME_LEN-1);
scanf("%s",filename);
fp=fopen(filename,"r");
if 19、(fp) // 已存在此文件
{ while(1)
{ fgets(str,LINE_LEN,fp);
if(feof(fp))
{ break;
}
k=strlen(str);
str[k-1]=0; // 將10強(qiáng)制改為0
if(k>0)
{ StrAssign(T[n],str);
n++;
if(n>MAX_LEN)
{ printf("文件太大\n");
return;
}}}
fclose(fp);
}
el 20、se
printf("新文件\n");
}}
void List() // 顯示文件內(nèi)容
{ system("cls");
int i;
for(i=0;i 21、;
for(i=0;i 22、ch==63)
{punct++;}
}}
sum=WORD+word+num;
do
{ int t=0;
printf("\n");
}
void Insert() // 插入行
{ system("cls");
int i,l,m;
printf("在第l行前插m行,請(qǐng)輸入l m: ");
scanf("%d%d%*c",&l,&m);
if(n+m>MAX_LEN)
{ printf("插入行太多\n");
return;
}
if(n>=l-1&&l>0)
{ for(i= 23、n-1;i>=l-1;i--)
T[i+m]=T[i];
n+=m;
printf("請(qǐng)順序輸入待插入內(nèi)容:\n");
for(i=l-1;i 24、("%d%d%*c",&l,&m);
if(n>=l+m-1&&l>0)
{ for(i=l-1+m;i 25、l,&m,&k);
if(n+m>MAX_LEN)
{ printf("拷貝行太多\n");
return;
}
if(n>=k-1&&n>=l-1+m&&(k>=l+m||k<=l))
{ for(i=n-1;i>=k-1;i--)
T[i+m]=T[i];
n+=m;
if(k<=l)
l+=m;
for(i=l-1;i 26、;
}
void Modify() // 修改行
{ system("cls");
int i;
printf("請(qǐng)輸入待修改的行號(hào): ");
scanf("%d%*c",&i);
if(i>0&&i<=n) // 行號(hào)合法
{ printf("%d: ",i);
StrPrint(T[i-1]);
printf("請(qǐng)輸入新內(nèi)容: ");
gets(str);
StrAssign(T[i-1],str);
}
else
printf("行號(hào)超出范圍\n");
}
void Search( 27、) // 查找字符串
{ system("cls");
int i,k,f=1; // f為繼續(xù)查找標(biāo)志
char b;
HString s;
printf("請(qǐng)輸入待查找的字符串: ");
scanf("%s%*c",str);
InitString(s);
StrAssign(s,str);
for(i=0;i 28、f(k) // 找到
{
printf("第%d行: ",i+1);
StrPrint(T[i]);
printf("第%d個(gè)字符處找到。繼續(xù)查找嗎(Y/N)? ",k);
b=getchar();
getchar();
if(b!=Y&&b!=y) // 中斷查找
{ f=0;
break;
}
else
k++;
}}}
if(f)
printf("沒(méi)找到\n");
}
void Replace() // 替換字符串
{ syste 29、m("cls");
int i,k,f=1; // f為繼續(xù)替換標(biāo)志
char b;
HString s,t;
printf("請(qǐng)輸入待替換的字符串: ");
scanf("%s%*c",str);
InitString(s);
StrAssign(s,str);
printf("替換為: ");
scanf("%s%*c",str);
InitString(t);
StrAssign(t,str);
for(i=0;i 30、個(gè)字符起查找
while(k)
{ k=Index(T[i],s,k); // 由本行的第k個(gè)字符開(kāi)始查找
if(k) // 找到
{ printf("第%d行: ",i+1);
StrPrint(T[i]);
printf("第%d個(gè)字符處找到。是否替換(Y/N)? ",k);
b=getchar();
getchar();
if(b==Y||b==y)
{
StrDelete(T[i],k,StrLength(s));
StrInsert(T[i],k,t);
}
31、
printf("繼續(xù)替換嗎(Y/N)?");
b=getchar();
getchar();
if(b!=Y&&b!=y) // 中斷查找、替換
{ f=0;
break;
}
else
k+=StrLength(t);
}}}
if(f)
printf("沒(méi)找到\n");
}
6 總結(jié)
在當(dāng)今應(yīng)用市場(chǎng)下,應(yīng)用開(kāi)發(fā)這個(gè)行業(yè)前景非常可觀(guān)。隨著科技發(fā)展,用戶(hù)對(duì)應(yīng)用的界面要求更加精致和細(xì)膩。這就要求應(yīng)用要有足夠的吸引,界面美觀(guān),操作簡(jiǎn)單。
在本課程設(shè)計(jì)的設(shè)計(jì)過(guò)程中,我剛開(kāi) 32、始感覺(jué)到有點(diǎn)困難。要通過(guò)上學(xué)期數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí),將所學(xué)知識(shí)運(yùn)用起來(lái),起初對(duì)知識(shí)有點(diǎn)遺忘,但后來(lái)去看看數(shù)據(jù)結(jié)構(gòu)書(shū)后,對(duì)相關(guān)知識(shí)點(diǎn),概念和算法有了更深入的理解。
在調(diào)試程序的過(guò)程中,我體會(huì)到了作為一名編程者的艱辛。編程者需要謹(jǐn)慎、認(rèn)真的態(tài)度和作風(fēng),對(duì)每個(gè)細(xì)微的細(xì)節(jié)都必須十分注意,不能馬虎大意。
在開(kāi)始編寫(xiě)程序的時(shí)候,我看到別人的程序功能非常的詳細(xì),而且界面非常美觀(guān),總是希望自己的程序也非常的完善,但是,發(fā)現(xiàn)編一個(gè)好的程序不是一蹴而就的事情,需要經(jīng)過(guò)長(zhǎng)期的編程經(jīng)驗(yàn)積累。
在反反復(fù)復(fù)的調(diào)試過(guò)程中,我終于作出一個(gè)簡(jiǎn)單的文本編輯器,雖然這個(gè)程序的功能非常簡(jiǎn)單,而且在實(shí)際運(yùn)用中還有些不足。由 33、于我現(xiàn)在知識(shí)淺薄,經(jīng)驗(yàn)不足和閱歷尚淺,對(duì)這個(gè)文本編輯器設(shè)計(jì)得還有很多不足之處,比如界面沒(méi)有那么美觀(guān),功能較單一等。我相信在以后的學(xué)習(xí)中,隨著知識(shí)的增長(zhǎng)和經(jīng)驗(yàn)的積累,我可以做出更好的成果。
7 致謝
在這次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)中,我的老師和同學(xué)給了我及大的幫助。特別是《數(shù)據(jù)結(jié)構(gòu)》的王源老師,還有負(fù)責(zé)審核課程設(shè)計(jì)的陳茅老師。在此,我對(duì)他們表示感謝!感謝他們?cè)谖颐鎸?duì)困難時(shí)給了我?guī)椭椭С?。也感謝那些給我?guī)椭乃型瑢W(xué)!
8 參考文獻(xiàn)
[1]嚴(yán)蔚敏,吳偉民編著 .《數(shù)據(jù)結(jié)構(gòu)》(C語(yǔ)言版) .北京清華大學(xué)出版社.1997
[2]徐孝凱編.《數(shù)據(jù)結(jié)構(gòu)實(shí)用教程》(C/C++描述).北京清華大學(xué)出版社.1999
[3]嚴(yán)蔚敏,吳偉民,米寧著.《數(shù)據(jù)結(jié)構(gòu)題集》.北京清華大學(xué)出版社.1999
[4]編.《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)》.北京清華大學(xué)出版社.2010
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑施工重大危險(xiǎn)源安全管理制度
- 安全培訓(xùn)資料:典型建筑火災(zāi)的防治基本原則與救援技術(shù)
- 企業(yè)雙重預(yù)防體系應(yīng)知應(yīng)會(huì)知識(shí)問(wèn)答
- 8 各種煤礦安全考試試題
- 9 危險(xiǎn)化學(xué)品經(jīng)營(yíng)單位安全生產(chǎn)管理人員模擬考試題庫(kù)試卷附答案
- 加壓過(guò)濾機(jī)司機(jī)技術(shù)操作規(guī)程
- 樹(shù)脂砂混砂工藝知識(shí)總結(jié)
- XXXXX現(xiàn)場(chǎng)安全應(yīng)急處置預(yù)案
- 某公司消防安全檢查制度總結(jié)
- 1 煤礦安全檢查工(中級(jí))職業(yè)技能理論知識(shí)考核試題含答案
- 4.燃?xì)獍踩a(chǎn)企業(yè)主要負(fù)責(zé)人模擬考試題庫(kù)試卷含答案
- 工段(班組)級(jí)安全檢查表
- D 氯化工藝作業(yè)模擬考試題庫(kù)試卷含答案-4
- 建筑起重司索信號(hào)工安全操作要點(diǎn)
- 實(shí)驗(yàn)室計(jì)量常見(jiàn)的30個(gè)問(wèn)問(wèn)答題含解析