实现一个简单的文本文件编辑系统.doc
《实现一个简单的文本文件编辑系统.doc》由会员分享,可在线阅读,更多相关《实现一个简单的文本文件编辑系统.doc(40页珍藏版)》请在沃文网上搜索。
1、摘要这个文本编辑器的功能类似windows的记事本,有新建、打开、保存、退出的文件操作功能,有复制、粘贴、剪切、清除的文件编辑功能,又有帮助与关于功能菜单。在主函数main()中多次调用其他子函数是这个文本编辑器的最大特点。最主体的子函数莫过于drawmenu()画出文本编辑器的功能列表,其他还有各种功能的子函数,如drawmain()画出整个文本编辑器的主界面,如del()定义删除功能,在这里就不一一介绍,详见下面。目录一、 功能设计4二、 详细设计7三、运行结果34四、结束语41一、功能设计通过对Windows自配的记事本的功能研究,并结合老师对本次课程设计的要求,让用户在我设计完成的文本
2、编辑器中可以通过快捷和选择菜单项,完成基本的文本编辑和文件处理工作。该文本文件编辑系统应该至少具备有以下功能模块:文件操作模块、文本编辑模块、剪切操作模块、菜单控制模块和帮助及其他模块。(一)文件操作模块1、新建:新建功能应该要可以不只是单纯地把输入文本框清空, 而且还应该可以智能判断文本框中是否有数据,如果有数据未 保存或者保存过后又有数据变动,则会弹出提示信息询问是否 保存。新建功能可以通过选择File菜单上的New子菜单来实现。2、打开:打开功能应该要可以通过记事本读入文件。打开功能可以通过选择File菜单上的Open子菜单来实现。在文件打开时,保存和另存为操作中,系统会提示用户输入文件
3、路径及文件名。特别注意的是,当用户打开一个文件时,指定的文件必须存在,否则系统会报错。3、保存:保存功能应该要可以直接将文本框中的内容记忆保存。保存功能可以通过选择File菜单上的Save子菜单来实现。4、另存为:另存为功能应该要可以将文本框中的内容记忆保存,并且可以进一步把整个文件保存到指定地方。另存为功能可以通过选择File菜单上的Save as子菜单来实现。5、退出:退出功能应该要可以直接退出文本文件编辑系统。退出功能可以通过选择File菜单上的Exit子菜单来实现。(二)文本编辑器模块1、添加:当光标所在位置及后面没有字符时,系统会以添加的方式输入字符。2、插入:当光标所在位置及后面有
4、字符时,系统会以插入的方式输入字符。3、删除:用户可以通过Backspace键删除光标前一个字符,也可以使用Del键删除当前位置的字符。4、选定:用户可以使用左移键()、右移键、上移键、下移键来移动光标位置。也可以通过Ctrl+左移键(或右移键)来选定多个字符。(三)剪贴板操作模块1、剪切:如果用户要剪切文本以便可以将它移动到其他位置,可通过Ctrl+X左移键(或右移键)先选定文本,然后选择Edit菜单上的Cut子菜单或按Ctrl+X快捷键来完成剪切任务。2、复制:如果用户要复制文本以便可以将它到其他位置,必须先选定文本,然后选择Edit菜单上的Copy子菜单或按Ctrl+C快捷键来完成复制任
5、务。3、粘贴:如果用户要粘贴剪切或复制的文本,必须将光标置于要粘贴文本的位置,然后选择Edit菜单上的Paste子菜单或按Ctrl+V快捷键来完成粘贴任务。(四)菜单控制模块1、File子菜单:用户可以按F1功能键来完成该菜单项的调用,即显示该项菜单。用户可按光标上移或下移键在该菜单项的子菜单之间循环移动,也可以使用光标的左移键或右移键在3个菜单项之间循环移动。当光带移动到某个子菜单项上时,用户此时可使用Enter键来选取相关菜单选项。2、Edit子菜单:用户可以按F2功能键来完成该菜单项的调用,即显示该项菜单。其他功能调用如上。3、Help子菜单:用户可以按F3功能键来完成该菜单项的调用,即
6、显示该项菜单。其他功能调用如上。(五)帮助及其他模块1、帮助:帮助功能可以提示使用者如何进入菜单中的各个项目。2、关于:关于功能是描述此文本文件编辑系统的设计者。3、快速预览:用户可按F10功能键来打开快速预览窗口,在快速预览窗口中没有功能菜单条。二、详细设计1、程序预处理。首先有头文件的加载,再有宏定义上下左右、退格、换行、复制、粘贴、剪切等热键,使用户可以直接从键盘上录入字符进行操控(字符即ASCII码字符),为了方便下面程序的运行,还要定义3个结构体,分别与剪贴板、列单链表和行单链表相关。2、main()主函数。因为程序是从main()函数开始执行,在main()函数结束的,所以在mai
7、n()函数下。(1)首先在main()中初始化一些全局变量及结构数组,接着调用drawmain()函数来显示主窗口,然后调用while(1)进入主循环,等待用户按键,最后程序根据用户的按键值,进行相应的处理,完成文本编辑的相关工作。(2)若按键为常规字符,则继续判断在文本编辑区的当前光标位置有没有字符,若有字符,则调用insert()函数,将此字符插入在当前位置,否则直接输入即可。(3)若按键为Enter键,则将光标移至下一行的行首,等待用户输入新的字符。(4)若按键为左,右,上,下,则执行gotoxy()操作,将光标移动至目标位置。(5) 若按键为退格(BackSpace)键,则将调用del
8、()函数将光标的前一个字符删除;若按键为Del键,也将调用del()函数将光标的当前位置的字符中删除。(6)若按键为Ctrl开头的按键,则执行与其相关的操作。具体来说,若为Ctrl+左移键(),则将选定当前光标的位置开始向右的一个字符,若按住Ctrl键不放,连续按右移键,可以选定多个字符。若为Ctrl+左移键(),则将执行与以上相同的操作。若为Ctrl+X键,则为剪切键(即将选定相关内容保存起来,且删除选定的字符)。若为Ctrl+C键,则为复制键(即将选定的相关内容保存起来)。若为Ctrl+V键,则调用insert()函数将保存起来的字符插入光标所在字符之前。(7)若按键为F10键,则调用qv
9、iew()函数,实现文本的快速预览。若按键为F1,F2,F3功能键,则调用menuctrl()菜单控制函数。若为F1键,则调用File菜单;若为F2键,则调用Edit菜单;若为F3键,则调用Help菜单。具体程序如下:void main() char a; int i,A,x,y,flag=0,b; Hnode *Hhead,*q; node *p1,*p2; Hhead=(Hnode *)malloc(sizeof(Hnode); /*为行单链表中首节点分配内存空间*/ q=Hhead; Hhead-nextl=NULL; p1=p2=q-next=(node *)malloc(sizeof
10、(node); /*为列单链表中首节点分配内存空间*/ p1-ch=13; p1-next=NULL; drawmain(); /*显示主窗口*/ window(2,2,79,23); textbackground(9); for(i=0;i=32&a127) /*若输入为常规字符或回车键*/ if(check(Hhead,wherey(),wherex()ch=a; putch(a); if(NUM=76)/*连续输入满行,分别生成一个新的行单链表和列单链表节点*/ p2-next=NULL; q-nextl=(Hnode *)malloc(sizeof(Hnode); q=q-nextl;
11、 q-nextl=NULL; q-next=NULL; p1=p2=q-next=(node *)malloc(sizeof(node); p1-ch=13; p1-next=NULL; NUM=0; else /*连续输入未满一行,生成一个新的列单链表节点*/ p2-next=(node *)malloc(sizeof(node); p2=p2-next; p2-ch=13; p2-next=NULL; else /*当前位置有字符且输入是常规字符,则执行插入字符操作*/ x=wherex(); y=wherey(); insert(Hhead,wherey(),wherex(),a); N
12、UM+; view(Hhead); gotoxy(x,y); if(a=13) /*若输入为回车键*/ gotoxy(1,wherey()+1); q-nextl=(Hnode *)malloc(sizeof(Hnode); q=q-nextl; q-nextl=NULL; q-next=NULL; p1=p2=q-next=(node *)malloc(sizeof(node); p1-ch=13; p1-next=NULL; NUM=0; x=wherex(); y=wherey(); /*文本窗口中左移,当前光标不在窗口的第1列*/ if(A=LEFT)&(x!=1) gotoxy(wh
13、erex()-1,wherey(); /*文本窗口中左移,当前光标在窗口的第1列*/ if(A=LEFT)&(x=1) gotoxy(abs(judge(Hhead,wherey()-1),wherey()-1); /*文本窗口中右移,若当前光标的右边一位有字符*/ if(A=RIGHT)&check(Hhead,wherey(),wherex()0) gotoxy(wherex()+1,wherey(); /*文本窗口中右移至下行的第1列,若当前光标位置没有字符且下行的第1列有字符*/ if(A=RIGHT)&check(Hhead,wherey()+1,1)!=0&check(Hhead,
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实现 一个 简单 文本文件 编辑 系统
