程序设计_文本编辑器的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计报告
(2014/2015学年第一学期)
题目:文档编辑器的设计与实现
专业
组长学号姓名
组员学号姓名
指导教师
指导单位
日期
文档编辑器的设计与实现
一课题内容与要求
文档编辑器系统是对一个文本内容进行各种常规操作,例如:插入、删除、查找、替换等功能。通过此课题,熟练掌握文本文件的操作及用字符数组来实现字符串操作的功能。
基本要求:
(1)首先文件标准化处理:如果句子有前导空格和后导空格,则删除这些空格,单词与单词之间只保留一个空格。
(2)统计功能:可方便地统计出文档中所有出现次数最多和最少的字符串。
(3)查找与替换功能:能够查找任意一个字符串在文档中出现的次数,并可以选择全部或有选择地将其替换为另一个字符串。
(4)显示功能:编辑完成后可以显示编辑后的文档。
(5)抽取功能:根据要求将文件中的某一类字符抽取,并存入另外的文件,如抽取所有的数字、抽取所有的字母等。
(1)提供可操作的主菜单:输出个菜单,用于显示若干个可选的功能选项。根据输入的选项来运行不同的功能,运行不同的函数。
(2)进行文本信息的载入:选择输入方式,输入文本内容,提供可操作文本。
(3)统计数据功能:输出第二子菜单,用于显示若干个可选的功能选项。
根据输入的选项来运行不同的功能,运行不同的函数。
(4)编辑数据功能:输出个菜单,用于显示若干个可选的功能选项。根据
输入的选项来运行查找、删除、插入、显示当前文本等不同的功能,运行不
同的函数。
(5)退出程序:退出当前程序。
三概要设计
本程序共有11个函数
1、HeadWord() 标题函数,即一个输出标题,永远出现在程序的最顶端。
2、CreatWord() 文本输入函数,实现对文本的内容进行输入;
3、PrintWord() 当前文本内容输出函数,实现文本内容输出;
4、CountWord() 文章内容统计函数,文本内容进行统计,包括对文
本内容中的大写字母、小写字母、数字、标点符号、空格以及文章所有
字数的个数的统计;
5、SearchWord() 文章内容查找函数,实现查找部分;
6、DeleteWord() 文章内容删除函数,实现删除部分;
7、InsertWord() 文章内容插入函数,实现插入部分;
8、Bmenu() 第二子菜单函数,实现子菜单功能;
9、AboutWord() 显示作者信息的函数;
10、menu() 主菜单函数,实现可操作菜单;
11、main()主函数。
(1)查找功能:
图二:查找功能图
图三:插入功能图
图四:删除功能图
图五:统计功能图四源程序代码
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define Link_Size 100
int NUM,C,N;
typedef struct list
{
char data[80];
int length;
struct list *next;
struct list *pre;
int row;
} LinkList;
LinkList *head;
void HeadWord()
{
// system("cls");
cout<<"\t\t****************************************************\n"; cout<<"\t\t**** 欢迎使用简单的文本编辑器****\n"; cout<<"\t\t****************************************************\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->data[i]='\0';
cout<<"继续上次输入(输入#号结束):\n";
for(j=0;j { for(i=0;i<80;i++) { ch=getchar(); temp->data[i]=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->data[i]='\0'; } ofstream ocout; ocout.open("f://text.txt",ios::app); ocout< ocout.close(); LinkList *temp; char ch; temp->row=NUM+1; system("cls"); return temp; } LinkList *CreatWord() { 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->data[i]='\0'; cout<<"开始创建文本,请输入文章(输入#号结束):\n"; for(j=0;j {