文本编辑器课程设计报告
VB课程设计报告---文本编辑器
VB课程设计报告——文本编辑器学院名称:计算机学院学生姓名:专业名称:计算机科学与技术班级:一、课程设计题目用Visual Basic程序设计语言编写一个简易的文本编辑器要求:有最基本的文本编辑功能,包括复制、剪切、粘贴、字体设置、背景颜色设置、字体颜色设置;同时拥有文本管理功能,包括打开文件、保存文件;以及完整的系统运行退出等功能,所有的操作可选择设定的快捷键。
二、课程设计目的(1)目标:实现类似与WINDOWS平台下的记事本程序。
(2)涉及功能:新建、打开、保存、另存为、退出、编辑、撤销、复制、粘贴、剪切、删除、查找、全选、打印、格式、字体、颜色、查看、状态栏、帮助、关于等三、课程设计说明1创建应用程序界面2设置属性3编写代码4保存应用程序5调试,运行应用程序6生成可执行文件四、源代码Dim filecount As IntegerDim inputdata As StringDim TargetPosition As IntegerDim pos As IntegerDim targey As StringDim neirong As StringPrivate Sub A_Click()On Error Resume Nextcmndlg1.Filter = "文本文件|*.txt"cmndlg1.CancelError = Truecmndlg1.Action = 2Open cmndlg1.FileName For Output As #1Print #1, Text1.TextClose #1End SubPrivate Sub C_Click()End SubPrivate Sub D_Click()End SubPrivate Sub Form_Load()Text1.Text = ""Text1.Left = 0Text1.Top = 550Text1.Width = Form1.ScaleWidthText1.Height = Form1.ScaleHeightmnucut.Enabled = Falsemnucopy.Enabled = Falsemnudelete.Enabled = Falsemnuselectall.Enabled = Falsemnupaste.Enabled = Truemnuleft.Checked = TrueEnd SubPrivate Sub Form_Resize()'如果窗体不处于最小化text1状态,改变text1大小以适应窗体大小变化If Form1.WindowState <> 1 ThenText1.Width = Form1.Width - 120If Form1.Height < 1200 ThenForm1.Height = 1200End IfText1.Height = Form1.Height - 1350End IfEnd SubPrivate Sub Form_Unload(Cancel As Integer)Dim msg As IntegerIf Text1.Text <> neirong Thenmsg = MsgBox(" 内容已被修改,是否保存文件", 48 + vbYesNoCancel, "提示")If msg = vbYes ThenOn Error GoTo Errcmndlg1.DialogTitle = "保存文件"cmndlg1.Filter = "文本文件|*.txt"cmndlg1.CancelError = Truecmndlg1.ShowSaveOpen cmndlg1.FileName For Output As #1Print #1, Text1.TextClose #1Err:If Err.Number = cdlCancel ThenCancel = TrueEnd IfElseIf msg = vbNo ThenEndElseIf msg = vbCancel ThenCancel = TrueEnd IfElseEndEnd IfEnd SubPrivate Sub mnucopy_Click() '复制利用SetText 方法,将选中的文本放入剪贴板上Clipboard.SetText Text1.SelTextPrivate Sub mnucut_Click() '剪切Clipboard.SetText Text1.SelTextText1.SelText = ""End SubPrivate Sub mnudelete_Click() '删除Text1.SelText = ""End SubPrivate Sub mnuedit_Click() '编辑菜单项代码' 如果文本框中没有选中的内容,则剪切\复制\删除和粘贴菜单无效,否则有效If Text1.SelLength <> 0 Thenmnucut.Enabled = Truemnucopy.Enabled = Truemnudelete.Enabled = Truemnupaste.Enabled = TrueElsemnucut.Enabled = Falsemnucopy.Enabled = Falsemnudelete.Enabled = FalseEnd IfEnd SubPrivate Sub mnuexit_Click() '退出EndEnd SubPrivate Sub mnufind_Click() '查找FindText 1mnuNext.Enabled = TrueEnd SubPrivate Sub mnufont_Click() '字体On Error GoTo A:cmndlg1.Flags = cdlCFBoth Or cdlCFEffectscmndlg1.ShowFontIf cmndlg1.FontName > "" ThenText1.FontName = cmndlg1.FontNameText1.FontSize = cmndlg1.FontSizeText1.FontBold = cmndlg1.FontBoldText1.FontItalic = cmndlg1.FontItalicText1.FontStrikethru = cmndlg1.FontStrikethru Text1.FontUnderline = cmndlg1.FontUnderline Text1.FontBold = cmndlg1.FontBoldText1.ForeColor = cmndlg1.ColorA:If Err.Number < 0 ThenExit SubEnd IfEnd SubPrivate Sub mnufontcolor_Click() '字体颜色cmndlg1.ShowColorText1.ForeColor = cmndlg1.ColorEnd SubPrivate Sub mnuleft_Click() '左对齐Text1.Alignment = 0mnuleft.Checked = Truemnuright(1).Checked = Falsemnuright(2).Checked = FalseEnd SubPrivate Sub mnunew_Click() '新建Text1.Text = ""End SubPrivate Sub FindTex(ByVal start_at As Integer) targey = targeypos = InStr(start_at, Text1.Text, targey)If pos > 0 Then '找到了匹配字符串TargetPosition = posText1.SelStart = TargetPosition - 1'选中找到的字符串Text1.SelLength = Len(targey)Text1.SetFocusElse '没有找到匹配的字符串MsgBox "没找到匹配的字符串", 48, "提示"Text1.SetFocusEnd IfEnd SubPrivate Sub mnuNext_Click() '查找下一个FindTex TargetPosition + 1End SubPrivate Sub mnuopen_Click() '打开Dim inputdata As StringOn Error GoTo nofilecmndlg1.Filter = "文本文件|*.txt"cmndlg1.CancelError = Truecmndlg1.ShowOpenText1.Text = ""If cmndlg1.FileName <> "" ThenOpen cmndlg1.FileName For Input As #1Do While Not EOF(1)Line Input #1, inputdataText1.Text = Text1.Text & inputdata & vbCrLoopClose #1End IfExit Subnofile:If Err.Number = 32755 Then Exit SubEnd SubPrivate Sub FindText(ByVal start_at As Integer)'获取用户输入的要查找的字符串targey = InputBox("请输入要查找的内容", "查找")pos = InStr(start_at, Text1.Text, targey)If pos > 0 Then '找到了匹配字符串TargetPosition = posForm1.Text1.SelStart = TargetPosition - 1'选中找到的字符串Form1.Text1.SelLength = Len(targey)Form1.Text1.SetFocusElse '没有找到匹配的字符串MsgBox "没找到匹配的字符串", 48, "提示"Form1.Text1.SetFocusEnd IfEnd SubPrivate Sub mnupaste_Click() '粘贴用GetText1 方法,将剪切板中的内容粘贴到光标所在位置Text1.SelText = Clipboard.GetText()End SubPrivate Sub mnuprint_Click() '打印On Error Resume Nextcmndlg1.ShowPrinterPrinter.Copies = cmndlg1.CopiesPrinter.Print Text1.TextEnd SubPrivate Sub mnuright_Click(Index As Integer) '右对齐\居中菜单代码Select Case IndexCase 1Text1.Alignment = 1mnuleft.Checked = Falsemnuright(1).Checked = Truemnuright(2).Checked = FalseCase 2Text1.Alignment = 2mnuleft.Checked = Falsemnuright(1).Checked = Falsemnuright(2).Checked = TrueEnd SelectEnd SubPrivate Sub mnusave_Click() '保存On Error Resume Nextcmndlg1.DialogTitle = "保存文件"cmndlg1.Filter = "文本文件|*.txt"cmndlg1.CancelError = Truecmndlg1.ShowSaveOpen cmndlg1.FileName For Output As #1Print #1, Text1.TextClose #1End SubPrivate Sub mnuselectall_Click() '全选Text1.SelStart = 0Text1.SelLength = Len(Text1.Text)End SubPrivate Sub Text1_Change()If Text1.Text = "" Thenmnufind.Enabled = FalsemnuNext.Enabled = FalseElsemnufind.Enabled = Truemnuselectall.Enabled = TrueEnd IfEnd SubPrivate Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case ButtonCase "新建"Call mnunew_ClickCase "打开"Call mnuopen_ClickCase "剪切"Call mnucut_ClickCase "复制"Call mnucopy_ClickCase "粘贴"Call mnupaste_ClickCase "保存"Call mnusave_ClickCase "查找"Call mnufind_ClickEnd SelectEnd SubPrivate Sub tre_Click()Shell ("notepad 使用说明.txt")End SubPrivate Sub xufeng_Click()Form2.Visible = TrueEnd Sub五、运行结果保存功能查找功能打开功能颜色修改功能字体修改功能七、心得体会作为一名计算机专业的学生,在接触了C语言、数据结构与C++课程后,对计算机语言有了一定的兴趣,于是在这个学期我毫不犹豫的选择了VB课程(算法与程序设计)。
文本编辑器报告
数据结构与算法分析课程设计报告项目名称:文本编辑器提交文档学生姓名:王熙提交文档学生学号: 1143111289教师评阅成绩:教师评阅意见:..提交报告时间:年月日1.实验题目:(1)利用List数据结构实现一个文本编辑器。
(2)熟练掌握List数据结构的逻辑结构、存储结构、基本操作。
(3)灵活运用List数据结构的各种基本操作。
(4)熟练掌握如何编辑、编译、链接和运行一个C++程序。
2实验要求:(1)创建一个友好的用户界面:所有操作在控制台实现,由用户输入操作命令,结果显示在控制台窗口;自己定义相应操作的命令字符(一般为单个字符),并给出用户提示。
用户可以输入h(或H)表示要求帮助,此时应显示所有的操作命令及其含义,也可在程序一运行给出显示所有的操作命令及其含义。
(2)能打开/新建一个文本文件,将其内容读入输入缓冲区。
输入缓冲区用List ADT,具体存储结构及实现单链表,双向链表均可)一行做为一个自选,可用顺序表,也可用链表(链表用数组元素(顺序表)或一个结点(链表)。
(3)能对当前文件内容进行编辑,包括:显示当前文件内容,任意行定位并显示、插入一行、一行, 替换当前行、统计文件行数及字符数,查找指定的某个子串、替换某个子串等保存当前文件、重新读入一个文件,退出系统。
3实验环境:软件环境:windows7环境下的VC++6.0;硬件环境:Intel(R) Core(TM) i5-2450M CPU @2.50GHz 4.0GB内存64位操作系统4..算法描述:程序流程图开始提示用户选择操作:打开、新建、定位、插入、删除、替换、统计、保存、退出根据选择进行相应操作否选择退出?是结束类的层次结构,每个类的设计, 包括数据成员和成员函数组成.class Link : public node{private:node* head;node* tail;node* fence;int leftcnt;int rightcnt;public:Link(){init();}~Link() {removeall(); //destructor}void clear(){removeall();init();}bool insert(int num,const string& item);bool deleteoneline(int num);bool append(const string& item);bool remove(string& it);bool changeline(int num,string& str);bool changeonelinecharacter(int num,string& str);bool findinallstring(string& str);bool setStart();bool setEnd();void prev();void next1(){if (fence!=tail) { //don't move fence if right empty fence=fence->next;rightcnt--;leftcnt++;}}int leftlength() const{return leftcnt;} int rightlength() const{return rightcnt;} int longlength() ;bool displayoneline();bool findappointstring(string str);bool setpos(int pos);bool getValue(string& it) const {if(rightlength()==0)return false;it=fence->next->element;return true;}void print() const;void init() ;void removeall() {while(head != NULL){fence = head;head = head->next;delete fence;}}void save_to_file(string filename);void read_from_infile(string filename); };class node{public:string element;node* pre;node* next;public:node(){element = "";pre = NULL;next = NULL;}~node(){}};●测试程序说明(1)、新建一个文件;(2)、输入前三行,分别是aaa , bbb , ccc;(3)、删除第二行;(4)、第二行插入bbb;(5)、第二行替换为kkk;(6)、统计总行数;(7)、将内容保存;5.源程序清单:●添加必要的注释Main.cpp#include "editor.h"int main(){Link item1;char sign='h';string filename1,filename2,str,str2;int num;cout<<"*****************************************************"<<endl<<" 欢迎使用文本编辑器"<<endl<<"*****************************************************"<<endl;cout<<"请输入文件名<eg. file_in.txt>:";cin>>filename1;item1.setStart();item1.setEnd();item1.read_from_infile(filename1);system("CLS");do{switch(sign) {case '?':case 'h':cout<<"*****************************************************************"<<endl;cout <<" 操作步骤"<<endl;cout << " a:只替换某行的某个子字符串 c:改变一行的内容 " << endl<< " d:删除指定的一行 f:根据输入的字符串查找行" <<endl<< " g:显示指定的一行i:插入一行" <<endl<< " r:读取文件k:保存文件"<<endl<< " o:查找子串 q:退出程序"<<endl<< " m:新建文件v:查看所有"<<endl<< " w:当前内容写入另外一个文件x:清屏"<<endl<< " l:总行数"<<endl<<"*****************************************************************"<<endl;break;case'x':system("CLS");break;case'o':cout<<"输入你想查找的子串:";cin>>str;item1.findinallstring(str);break;case'a':cout<<"请问你想修改第几行?: ";cin>>num;cout<<"请输入你要修改的子串";cin>>str;item1.changeonelinecharacter(num,str);break;case'c':cout<<"请问你想修改第几行?:";cin>>num;cout<<"请输入新字符串内容:";cin>>str;item1.changeline(num,str);break;case'd':cout<<"请问你想删掉第几行?:";cin>>num;item1.deleteoneline(num);item1.print();break;case'f':cout<<"请输入你想查找的字符串:"<<endl;cin>>str;item1.findappointstring(str);break;case'g':cout<<"请输入行序号:"<<endl;cin>>num;item1.setpos(num);item1.displayoneline();break;case'i':cout<<"请问你想插在第几行后面:";cin>>num;cout<<"请输入你要插入的字符串:";cin>>str;item1.insert(num,str);item1.print();break;case'l':item1.longlength();break;case'r':{item1.clear();item1.read_from_infile(filename1);item1.print();}break;case'v':item1.print();break;case'w':cout<<"请输入文件名<eg. file_in.txt>:";cin>>filename2;item1.save_to_file(filename2);break;case'k':item1.save_to_file(filename1);break;case'm':char newfile[30];cout<<"请输入新建文件名:"<<endl;cin>>newfile;break;default:cout<<"\n*** 不合法输入 ***\n"<<endl;}cout<<"please input command:";cin>>sign;}while (sign!='q');return 0;}Editor..h#ifndef _EDITOR_H_#define _EDITOR_H_#include <iostream>#include <iomanip>#include <string>using namespace std;#include "node.h"//Double-linked list link node with freelist support class Link : public node{private:node* head;node* tail;node* fence;int leftcnt;int rightcnt;public:Link(){init();}~Link() {removeall(); //destructor}void clear(){removeall();init();}bool insert(int num,const string& item);bool deleteoneline(int num);bool append(const string& item);bool remove(string& it);bool changeline(int num,string& str);bool changeonelinecharacter(int num,string& str);bool findinallstring(string& str);bool setStart();bool setEnd();void prev();void next1(){if (fence!=tail) { //don't move fence if right empty fence=fence->next;rightcnt--;leftcnt++;}}int leftlength() const{return leftcnt;}int rightlength() const{return rightcnt;}int longlength() ;bool displayoneline();bool findappointstring(string str);bool setpos(int pos);bool getV alue(string& it) const {if(rightlength()==0)return false;it=fence->next->element;return true;}void print() const;void init() ;void removeall() {while(head != NULL){fence = head;head = head->next;delete fence;}}//input the data to the inputfile.void save_to_file(string filename);//read the data from the filevoid read_from_infile(string filename);};#endifEditor.cpp#include "editor.h"#include <fstream>using namespace std;/************************************************************************/ /* set start of the link *//************************************************************************/ bool Link::setStart(){fence=head;rightcnt+=leftcnt;leftcnt=0;return true;}/************************************************************************/ /* set end of the link *//************************************************************************/ bool Link::setEnd(){tail = fence;leftcnt+=rightcnt;rightcnt=0;return true;}/************************************************************************//* init the link *//************************************************************************/ void Link::init(){fence=tail=head=new node;leftcnt=rightcnt=0;}/************************************************************************/ /* display the data to the screen. *//************************************************************************/ void Link::read_from_infile(string filename){string elem[100];int count = 0;ifstream infile(filename.c_str(),ios::in);if (!infile) {cout<<"open error!"<<endl;exit(1);}char ch;while ((ch=infile.get()) != EOF) {if(ch != '\n'){elem[count] = elem[count] + ch;}else{append(elem[count]);count++;}}append(elem[count]);cout<<endl;infile.close();}/************************************************************************/ /* input the data to the file. *//************************************************************************/ void Link::save_to_file(string filename){node* temp;temp=head->next;ofstream outfile(filename.c_str(), ios::out);while (temp!=NULL) {outfile<<temp->element<<endl;temp=temp->next;}outfile.close();}/************************************************************************/ /* the insert member function is according the num to *//*find the fence the insert to the next of the fence *//************************************************************************/ bool Link::insert(int num,const string& item){setpos(num);node* temp=new node;temp->element=item;if (fence->next!=NULL) {temp->next=fence->next;fence->next->pre=temp;fence->next=temp;temp->pre=fence;}else {fence->next=temp;temp->pre=fence;tail=fence->next;}rightcnt++;return true;}/************************************************************************/ /* append string to end of the list *//* the list is doubly linked list *//************************************************************************/ bool Link::append(const string&item){node* p;p=tail;tail=tail->next=new node;tail->element = item;tail->pre = p;rightcnt++; //Added to rightreturn true;}/************************************************************************/ /* remove and return first string in right partition *//************************************************************************/ bool Link::remove(string& it){if (fence->next==NULL) { //empty rightreturn false;}it=fence->next->element; //remember valuenode* itemp=fence->next; //remem link nodeif (itemp->next!=NULL) {itemp->next->pre=fence;}elsetail=fence; //reset tailfence->next=itemp->next; //remove from the listdelete itemp; //reclaim spacerightcnt--; //remove from rightreturn true;}/************************************************************************/ /* move fence one stepleft ,no change if left is empty *//************************************************************************/ void Link::prev(){if (fence!=head) { //cannot back up from list headfence=fence->pre;leftcnt--;rightcnt++;}}/************************************************************************/ /* according you enter the number to find the fence *//************************************************************************/ bool Link::setpos(int pos){fence=head;if (pos<0) {fence = head;}else if (pos>rightcnt+leftcnt) {for(int j=0; j<rightcnt+leftcnt; j++)fence = fence->next;}else{for (int i=0;i<pos;i++) {fence=fence->next;}}return true;}/************************************************************************/ /* print the all the node in the list *//************************************************************************/ void Link::print() const{node* temp;int num=0;temp=head;while (temp!=tail->next) {if (num>0) {cout<<num<<" . ";}cout<< temp->element <<" "<<endl;temp=temp->next;num++;}cout<<endl;}/************************************************************************/ /* to calculate the file include the number of the row *//* to calculate the number of the character *//************************************************************************/ int Link::longlength(){string actfor;node* temp;int length=-1,num=0;temp=head;while (temp!=NULL) {actfor=temp->element;num=num+actfor.length();length++;temp=temp->next;}cout<<"the file length is"<<length<<endl;cout<<"the number of the character is:"<<num<<endl;return length;}/************************************************************************/ /* display one line *//************************************************************************/ bool Link::displayoneline(){if (fence!=NULL && fence!=head) {cout<<fence->element<<endl;}else{cout<<"the present line is empty."<<endl;}return true;}/************************************************************************/ /* according your enter string to find the line number *//* print the find number *//************************************************************************/ bool Link::findappointstring(string str){node* temp;int num=0;bool bo=true;temp=head->next;while (temp!=NULL) {num++;if (temp->element==str) {cout<<"找到了!"<<endl;cout<<"字符串在第"<<num<<" 行"<<endl;cout<<"the appointed is :"<<temp->element<<endl;bo=false;}temp=temp->next;}if (bo) {cout<<"抱歉!未找到!"<<endl;}return true;}/************************************************************************/ /* delete one line according you enter the line number *//************************************************************************/ bool Link::deleteoneline(int num)num=num-1;setpos(num);node* q;// if (fence->next==NULL) {// fence->next=NULL;// delete fence->next;// }if (fence==tail) {q=tail;tail=fence->pre;delete q;}else{node* p;p = fence->next;fence->next=fence->next->next;fence->next->pre=fence;delete p;}return true;}/************************************************************************/ /* according you enter line number to find the line *//*replace the find line to you enter string *//************************************************************************/ bool Link::changeline(int num,string& str){setpos(num);fence->element=str;return true;}/************************************************************************/ /* change appointed line's character *//************************************************************************/ bool Link::changeonelinecharacter(int num,string& str){char m[256];char n[256];char z[256];int len=0;string str2;node* temp;setpos(num);temp=fence;strcpy(m,str.c_str());strcpy(n,temp->element.c_str());num=temp->element.find(m,0);if (temp->element.find(m,0) != string::npos) {cout<<"请输入修改后的字符串(必须与上面查的字符串长度相等):";cin>>str2;while (str.length() != str2.length()) {cout<<"错误!长度不一致!"<<endl;cout<<"请再次输入:"<<endl;cout<<"请输入修改后的字符串(必须与上面查的字符串长度相等):";cin>>str2;}len=str2.length();strcpy(z,str2.c_str());for (int j=0;j<len;j++) {n[num]=z[j];temp->element=n;num++;}cout<<"修改成功!"<<endl;}elsecout<<"未找到相应子串."<<endl;return true;}/************************************************************************/ /* find the postation in the file and print it out *//************************************************************************/ bool Link::findinallstring(string& str){char m[256];char n[256];int num=0;node* temp;temp=head;strcpy(m,str.c_str());while (temp->next!=NULL) {temp=temp->next;num++;if (temp->element.find(m,0) != string::npos) {cout<<"在第"<<num<<" 行"<<endl;}elsecout<<"不在第"<<num<<" 行"<<endl;}return true;}void creatfile(){char newfile[30];cout<<"请输入新建文件名:"<<endl;cin>>newfile;fopen(newfile,"w+");}Node.h#ifndef _NODE_H_#define _NODE_H_class node{public:string element;node* pre;node* next;public:node(){element = "";pre = NULL;next = NULL;}~node(){}};#endif6.运行结果:●测试数据选择aaa bbb ccc kkk●测试结果分析能够完完成对字符串的定位、插入、删除、查找、替换和显示等操作。
面向对象课程设计报告-文本编辑器
《面向对象程序设计》课程设计报告题目:java文本编辑器院(系):专业班级:学生姓名:学号:指导教师:20 14 年 12 月 29 日至20 15 年 1 月 9 日面向对象程序设计课程设计任务书目录1需求与总体设计 (4)1.1总体功能图 (4)1.2 总体设计思路 (4)(1)文件菜单 (4)(2)编辑菜单 (4)(3)右键菜单 (4)1.3 总体模块图 (5)1.4简要类图 (5)2详细设计 (6)2.1各类的功能及关键代码设计和类图表示 (6)(1)首先创建一个公共的类名为Bjq (6)(2)创建一个空的菜单条并添加两个菜单项(文件、编辑) (7)(3)先设计一个匿名内部类,为文件、编辑菜单添加其它下拉子菜单 (7)(4)右键快捷菜单的字体子菜单的创建 (8)(5)为鼠标创建监听器。
用于用鼠标点击右键时出现快捷菜单:复制、粘贴、字体大小、字体颜色。
(9)(6)为窗体添加监听器 (9)(7)设计main方法:为整个程序的开始提供了入口 (9)2.2程序流程图 (10)2.3 详细类图 (12)3编码实现 (12)3.1程序实现代码 (12)4系统测试 (19)4.1错误处理 (19)4.2主要的测试截图 (19)1. 程序运行界面 (19)2. 编辑菜单及其复制粘贴功能 (20)3. 右键菜单及其功能效果 (21)4. 文件菜单及其功能界面 (23)总结 (26)1需求与总体设计1.1总体功能图图1.01.2 总体设计思路在本程序中,设计了一个菜单栏和文本内容区。
要想记事本完成需求分析中相应的功能,还必须添加事件监听器。
事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。
本程序中Act Listener实现了Action Listener接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。
另外,还用来Window Listener来监听处理容器关闭触发的事件,Window Listener继承了Windows Adapter类并覆盖了Windows Closing方法。
文本编辑器课程设计
文本编辑器课程设计一、课程目标知识目标:1. 理解文本编辑器的基本功能与操作,掌握常见的文本编辑命令;2. 学会使用文本编辑器进行文档的创建、编辑、保存和打印;3. 了解文本编辑器的不同类型,如记事本、Word等,并掌握它们的特点与适用场景。
技能目标:1. 能够熟练运用文本编辑器进行文字输入、排版和格式设置;2. 学会使用文本编辑器的查找与替换功能,提高文本处理效率;3. 掌握文本编辑器的拼写检查、语法检查功能,提升写作质量。
情感态度价值观目标:1. 培养学生对文本编辑器的兴趣,激发他们主动探索和使用新工具的积极性;2. 培养学生的信息素养,使他们认识到文本编辑器在日常生活和学习中的重要性;3. 引导学生养成良好的文本编辑习惯,注重文档的美观与规范,提升个人形象。
本课程针对年级:小学四年级课程性质:信息技术课程学生特点:四年级学生对电脑操作已有一定的基础,对新事物充满好奇心,但操作熟练程度和文本编辑能力有限。
教学要求:1. 结合学生特点,课程内容应以实践操作为主,注重培养学生的动手能力;2. 教学过程中,教师应充分调动学生的积极性,鼓励他们主动探索和尝试;3. 教学评价应以学生实际操作能力和学习态度为主要标准,关注学生的学习过程和成果。
二、教学内容1. 文本编辑器简介:介绍文本编辑器的概念、作用和常见类型,如记事本、Word等。
- 教材章节:第一章 认识文本编辑器- 内容列举:文本编辑器的定义、功能、分类及其适用场景。
2. 文本编辑器基本操作:学习文本输入、选取、删除、复制、粘贴等基本操作。
- 教材章节:第二章 文本编辑器的基本操作- 内容列举:文字输入、基本编辑命令、撤销与重做。
3. 文档格式设置:学习字体、字号、颜色、对齐方式等格式设置。
- 教材章节:第三章 文档格式设置- 内容列举:字体设置、段落设置、页面布局。
4. 文档高级功能:掌握查找与替换、拼写检查、语法检查等功能。
- 教材章节:第四章 文档高级功能- 内容列举:查找与替换、拼写检查、语法检查。
数据结构课程设计之文本编辑器
##大学数据结构课程设计报告题目:简易文本编辑器院(系):计算机工程学院学生姓名:班级:学号:____起迄日期: 2011年6月20日至2011年6月30日指导教师:2010—2011年度第 2 学期一、需求分析1.问题描述:简易文本编辑器主要是针对文字编辑处理,对于如何编辑一个简易文本编辑器程序我们可以利用线性表示实现其功能,线性表便于插入删除查找功能,而文本编辑器需要用到这些功能,因此可以利用线性表实现。
对于文本编辑器应该具有插入、删除、查找等功能,并且可以显示所有输入数据,可正确存盘、取盘,正确显示编辑的文字长度。
2.基本功能:简易文本编辑器应该具有的功能:图形菜单界面:位置查找:数据查找:显示所有输入数据:插入:删除文本信息:可正确存盘、取盘:正确显示长度:3.输入输出:输入数据,数据类型为整形,且输入的字符或数字不多于100个,输出为输出输入的数据,输出输入数据的长度,输出插入元素及插入后的数据,输出查找元素的,输出的数据均为整形。
二、概要设计1.设计思路:首先构造一个线性表, 然后利用线性表的存储结构顺序存储方式,实现文本的编辑添加查找删除.2.数据结构设计:程序采取了线性结构利用顺序存储的方法,采用该结构的原因是线性表利于存储、插入、删除、查找、修改等功能,使用它可以使程序运行简单方便。
定义程序中用到的抽象数据类型;抽象数据类型线性表的定义如下:ADT SqList{数据对象:D={ai | ai∈data,i=1,2,3……,n,n≥0}数据关系:R1={<ai-1,ai>| ai-1,ai∈D,i=1,2,3,……,n}基本操作:InitList(*L)操作结果:构造一个空的线性表L。
GetLength(L)初始条件:线性表L已存在。
操作结果:返回L中数据元素的个数。
GetElem( L, i,*e)初始条件:线性表L已存在,1≤i≤L.Length.操作结果:查找指定的某元素i,并将值赋给e,用e 输出。
制作一个文本编辑器-java课程设计报告
制作一个文本编辑器-java课程设计报告封面《Java语言程序设计》课程设计报告设计题目:制作一个文本编辑器分院:电信分院班级:姓名:学号:指导教师:黄建华实验地点:三教机六课设时间:2009-12-20——2009-12-25二OO九年十二月二十五日《Java语言程序设计课程设计》目录一、设计思路…………………………………………… (2)二、设计过程…………………………………………… (3)三、测试结果…………………………………………… (12)四、心得体会…………………………………………… (13)五、程序代码…………………………………………… (14)一、设计思路(一)设计概念要制作一个文本编辑器,首先得理清思路,要做一个什么样的文本编辑器,做成的编辑器要求要实现哪些功能,要实现这些功能分别需要用到什么方法以及怎样组织编辑器的框架结构等等问题。
现把我的设计思路简要介绍如下:1、明确设计要求首先要创建了一个窗体,标题为“×××设计的文本编辑器”,设计要求是要编辑文件和编辑这两个菜单项,要求在文件菜单项上添加新建、打开、保存、退出四个下拉子菜单,要求当用户单击新建时就可以新建一个空白文档;当单击打开时可以从已有的目录下打开需要打开的文本文件,在原有文件中可以选择要打开的文件;当单击保存时可以出现保存的路径,选择自己要保存到的路径将文件保存到指定的文件夹中;单击退出菜单时退出文件的下拉菜单。
在编辑菜单下的子菜单复制,可以进行对文本的复制。
在文本区内要求当单击鼠标右键时可以弹出菜单,要求有两个子菜单为复制和字体,通过单击字体菜单可以实现对字体改变。
而且在窗体的右上方有三个按钮可以实现最小化、最大化、和关闭。
而且用户也可以根据自己的需要改变窗体的大小。
2、确定设计思路即设计步骤(必须想到要用到哪几个方面的程序、包、方法、以及基本的程序语言)(1)创建一个窗体,包括构造一个文本域为编辑器各种功能的实现提供一个伸展平台;(2)新建一个空的菜单条,然后添加菜单项(文件菜单和编辑菜单);(3)设计程序在菜单项下添加子菜单,文本菜单对应新建、打开、保存和退出,编辑菜单包括的子菜单为复制和粘贴;(4)添加右键快捷弹出式菜单,包括复制、字体等菜单项。
VB文本编辑器设计报告
课程设计报告课程:Visual Basic 程序设计课题:文本编辑器(易记本)专业:计算机信息管理班级:学号:姓名:@一路偏向北教师:2011-12-23一、课程设计目的通过一学期的Visual Basic 程序设计学习,以及平时的上机实验,初步掌握了VB程序设计的各种方法,学会了编写最基本的VB程序;对于完整的VB程序设计来讲是很不足的,平时掌握的只是单独的窗体(Form)程序编写,以及各种简单控件的使用,没有做到很好连贯性,所以有必要做一次完整的VB程序设计,结合所学的基本知识,使用多个窗体自成一套系统,加上各种控件的综合运用,初步设计一个合格的VB应用程序;这样在巩固VB所学的同时,更好地学会程序设计的一些思想和方法,对于以后的编程学习或是工作有重要的实践意义。
二、题目及简介文本编辑器模仿Windows自带的本文编辑器,要求:做到有下拉式菜单栏,有最基本的文本编辑功能,包括复制、剪切、粘贴、全选、查找;同时拥有文本的管理功能,其中包括新建文本、打开、保存;以及完整的运行退出等系统应用功能,所有操作可选择设定快捷键,更快更方便地使用程序,同时对于一个小程序而言,可给出基本的使用说明以及相关信息。
提示:注意使用消息框,以及使用右击弹出式菜单,注意程序的完整性可可用性。
三、设计说明题目为文本编辑器,即是最基本的文本编辑程序,首先必须做好文本编辑器本身的功能,然后对其完善,做成一个完整的小程序功能设计说明:功能是这个文本编辑器的核心内容,也就是程序的作用,它是用来做什么的;本程序就是用来编写文本的,编写过程中要利用到窗体(Form)一个,控件包括:RichTextBox1(超文本框)、CommonDialog(通用对话框),以及InputBox(消息框)、菜单编辑器等,。
要做的工作就是编写代码把这些控件和窗体等结合为一体,使得程序能够成为一体,顺畅运行。
本次设计在按照题目要求的前提下,为了完整地展示一个应用程序,在最初就设计为最基本的文本的编辑器,所以取名为“易记本”,就是简易记事本的简称,然后加入图标,在程序完成之后还进行了大包操作,得到应用程序的安装文件,最后安装在电脑上运行使用。
文本编辑器 java课程设计实验报告 完整 预览显示不全 含全部代码
淮 海 工 学 院 计算机工程学院课程设计报告设计名称: 选题名称: 姓 名: 面向对象课程设计文本编辑器的设计与实现学号:专业班级: 系 (院) : 设计时间: 设计地点: 计算机工程学院 2010.6.21~2010.7.2 软件实验室、教室指导教师评语:成绩:签名:年 月 日面向对象课程设计报告第2页,共24页1.设计要求设计一个类似于 Windows 记事本(Notepad)的 Java 程序。
可以打开、新建、保存一个文本文件;对 选中的文本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复制、粘贴、剪切、 查找、替换等) ;在文本中能够插入对象。
2.总体设计打开文 件保存另存为查找 红色 复制 字 体 颜 色退出编 辑蓝色剪切文 本 编 辑 器宋体绿色 粘贴字仿宋体楷体字 形粗体 斜体 常规字 号面向对象课程设计报告第3页,共24页3.详细设计JTextArea textarea;//建立文本 JRadioButtonMenuItem rbmi_red,rbmi_blue,rbmi_green;//鼠标右击改变颜色JMenuItem menuitem_copy,menuitem_cut,menuitem_paste,menuitem_seek;//复制, 剪切,粘贴 JMenuItem menuitem_song,menuitem_fang,menuitem_kai;//字体变量 JMenuItem menuitem_normal,menuitem_bold,menuitem_italic;//字形变量 JMenuItem menuitem_12,menuitem_24,menuitem_36;//字号变量 JMenuItem menuitem_exit,menuitem_infor; JPopupMenu popupmenu;//文本快捷键 JMenuItem menuitem_red,menuitem_green,menuitem_blue;//颜色变量 JDialog dialog;//调用对话框 JButton button_seek;//查找 JTextField textfield_seek; JLabel label_seek,label_infor;4.代码调试面向对象课程设计报告 程序代码: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import javax.swing.JColorChooser; import javax.swing.event.*; public class Notepad extends第4页,共24页JFrameimplementsActionListener,ItemListener,MouseListener { File file; JTextArea textarea; JRadioButtonMenuItem rbmi_red,rbmi_blue,rbmi_green;JMenuItem menuitem_copy,menuitem_cut,menuitem_paste,menuitem_seek; JMenuItem menuitem_song,menuitem_fang,menuitem_kai;//字体变量 JMenuItem menuitem_normal,menuitem_bold,menuitem_italic;//字形变量 JMenuItem menuitem_12,menuitem_24,menuitem_36;//字号变量 JMenuItem menuitem_exit,menuitem_infor; JMenuItem menuitem_zidingyi; JPopupMenu popupmenu; JMenuItem menuitem_red,menuitem_green,menuitem_blue; JDialog dialog; JButton button_seek; JTextField textfield_seek; JLabel label_seek,label_infor; String seek;public Notepad() { super("文本编辑器"); this.setSize(600,400); this.setLocation(250,150); this.setDefaultCloseOperation(HIDE_ON_CLOSE); textarea = new JTextArea();面向对象课程设计报告 Container ss=this.getContentPane();第5页,共24页JScrollPane dd=new JScrollPane(textarea); ss.add(dd); this.textarea.addMouseListener(this); this.addMenu(); this.setVisible(true); this.Dialog(); this.file = null; } public Notepad(String filename) { this(); if (filename!=null) { this.file = new File(filename); this.setTitle(filename); this.textarea.setText(this.readFromFile()); } } public Notepad(File file) { this(); if (file!=null) { this.file = file; this.setTitle(this.file.getName()); this.textarea.setText(this.readFromFile()); } } public void Dialog() { dialog=new JDialog(this,"查找",true); dialog.setLayout(new FlowLayout()); //建立对话框的方法面向对象课程设计报告 dialog.setSize(200,90); label_seek=new JLabel("关键字"); dialog.add(label_seek); textfield_seek=new JTextField(10); dialog.add(textfield_seek); button_seek=new JButton("查找"); dialog.add(button_seek); button_seek.addActionListener(this); } public void addMenu() { JMenuBar menubar = new JMenuBar(); this.setJMenuBar(menubar); JMenu menu_file = new JMenu("文件"); menubar.add(menu_file);第6页,共24页//文件菜单JMenuItem menuitem_open = new JMenuItem("打开"); menu_file.add(menuitem_open); menuitem_open.addActionListener(this); JMenuItem menuitem_save = new JMenuItem("保存"); menu_file.add(menuitem_save); menuitem_save.addActionListener(this); JMenuItem menuitem_saveas = new JMenuItem("另存为"); menu_file.add(menuitem_saveas); menuitem_saveas.addActionListener(this); menuitem_exit=new JMenuItem("退出" ); menu_file.add(menuitem_exit); menuitem_exit.addActionListener(this); JMenu menu_editor=new JMenu("编辑");//编辑菜单 menubar.add(menu_editor); menuitem_seek=new JMenuItem("查找"); menu_editor.add(menuitem_seek); menuitem_seek.addActionListener(this); menuitem_copy=new JMenuItem("复制");面向对象课程设计报告 menuitem_copy.addActionListener(this); menu_editor.add(menuitem_copy); menuitem_cut=new JMenuItem("剪切"); menu_editor.add(menuitem_cut); menuitem_cut.addActionListener(this); menuitem_paste=new JMenuItem("粘贴"); menu_editor.add(menuitem_paste); menuitem_paste.addActionListener(this);第7页,共24页JMenuItem menu_color=new JMenu("颜色");//颜色菜单 menu_editor.add(menu_color); ButtonGroup buttongroup=new ButtonGroup();rbmi_red=new JRadioButtonMenuItem("红",true); buttongroup.add(rbmi_red); menu_color.add(rbmi_red); rbmi_red.addItemListener(this); rbmi_blue=new JRadioButtonMenuItem("蓝",true); buttongroup.add(rbmi_blue); menu_color.add(rbmi_blue); rbmi_blue.addItemListener(this); rbmi_green=new JRadioButtonMenuItem("绿",true); buttongroup.add(rbmi_green); menu_color.add(rbmi_green); rbmi_green.addItemListener(this); JMenu menu_font=new JMenu("设置字体");//设置字体菜单 menubar.add(menu_font); menuitem_song=new JMenuItem("宋体"); menu_font.add(menuitem_song); menuitem_song.addActionListener(this); menuitem_fang=new JMenuItem("仿宋"); menu_font.add(menuitem_fang); menuitem_fang.addActionListener(this); menuitem_kai=new JMenuItem("楷体"); menu_font.add(menuitem_kai);面向对象课程设计报告 menuitem_kai.addActionListener(this);第8页,共24页JMenu menu_style=new JMenu("设置字形");//设置字形菜单 menubar.add(menu_style); menuitem_bold=new JMenuItem("粗体"); menu_style.add(menuitem_bold); menuitem_bold.addActionListener(this); menuitem_italic=new JMenuItem("斜体"); menu_style.add(menuitem_italic); menuitem_italic.addActionListener(this); menuitem_normal=new JMenuItem("常规"); menu_style.add(menuitem_normal); menuitem_normal.addActionListener(this); JMenu menu_size=new JMenu("设置字号"); menubar.add(menu_size); menuitem_12=new JMenuItem("12"); menu_size.add(menuitem_12); menuitem_12.addActionListener(this); menuitem_24=new JMenuItem("24"); menu_size.add(menuitem_24); menuitem_24.addActionListener(this); menuitem_36=new JMenuItem("36"); menu_size.add(menuitem_36); menuitem_36.addActionListener(this); popupmenu=new JPopupMenu(); JMenuItem menuitem_red=new JMenuItem("红色"); popupmenu.add(menuitem_red); menuitem_red.addActionListener(this); JMenuItem menuitem_green=new JMenuItem("绿色"); popupmenu.add(menuitem_green); menuitem_green.addActionListener(this); menuitem_blue=new JMenuItem("蓝色"); popupmenu.add(menuitem_blue); menuitem_blue.addActionListener(this); //快捷菜单 //设置字号菜单面向对象课程设计报告 textarea.add(popupmenu); }第 9 页,共 24 //向文本区内添加快捷菜单页public void writeToFile(String lines) { try {//写文件FileWriter fout = new FileWriter(this.file); fout.write(lines+"\r\n"); fout.close(); } catch (IOException ioex) { return; } } public String readFromFile() { try { FileReader fin = new FileReader(this.file); BufferedReader bin = new BufferedReader(fin); String aline="", lines=""; do { aline = bin.readLine(); if (aline!=null) lines += aline + "\r\n"; } while (aline!=null); bin.close(); fin.close(); return lines; } catch (IOException ioex) //读文件面向对象课程设计报告 { return null; } } public boolean openDialog() {第10页,共24页//打开对话框FileDialog filedialog = new FileDialog(this,"Open",FileDialog.LOAD); filedialog.setVisible(true); if ((filedialog.getDirectory()!=null) && (filedialog.getFile()!=null)) { this.file filedialog.getFile()); return true; } else return false; } public boolean saveDialog() { FileDialog filedialog = new FileDialog(this,"SaveAs",FileDialog.SAVE); filedialog.setFile(this.file.getName()); filedialog.setVisible(true); if ((filedialog.getDirectory()!=null) && (filedialog.getFile()!=null)) { this.file = new File(filedialog.getDirectory(), //保存对话框 = new File(filedialog.getDirectory(),filedialog.getFile()+".txt"); return true; } else return false; } public void actionPerformed(ActionEvent e) { //事件处理面向对象课程设计报告 if(e.getActionCommand()=="打开") { if (this.openDialog()) {第11页,共24页this.setTitle(this.file.getName()); this.textarea.setText(this.readFromFile()); } } if(e.getActionCommand()=="保存" && this.file!=null) { this.writeToFile(this.textarea.getText()); } if(e.getActionCommand()==" e.getActionCommand()=="另存为") { if (this.saveDialog()) { this.writeToFile(this.textarea.getText()); this.setTitle(this.file.getName()); } } if(e.getActionCommand()=="退出") { System.exit(0); } if(e.getSource()==menuitem_copy) { textarea.copy(); } if(e.getSource()==menuitem_paste) { textarea.paste(); } //编辑菜单的事件处理 保 存 " && this.file==null ||面向对象课程设计报告 if(e.getSource()==menuitem_cut) { textarea.cut(); } if(e.getSource()==menuitem_red) { textarea.setForeground(Color.red); } if(e.getSource()==menuitem_blue) { textarea.setForeground(Color.blue); } if(e.getSource()==menuitem_green) { textarea.setForeground(Color.green); } Font font=textarea.getFont(); int style=font.getStyle(); if(e.getSource()==menuitem_song) { textarea.setFont(new第12页,共24页//颜色菜单的事件处理//设置字体变量java.awt.Font("宋体",java.awt.Font.PLAIN,font.getSize())); } if(e.getSource()==menuitem_fang) { textarea.setFont(new java.awt.Font(" 仿 宋",java.awt.Font.PLAIN,font.getSize())); } if(e.getSource()==menuitem_kai) { textarea.setFont(new java.awt.Font(" 楷 体",java.awt.Font.PLAIN,font.getSize()));面向对象课程设计报告 } if(e.getSource()==menuitem_bold) { style=style^1;第13页,共24页//设置字形菜单的事件处理textarea.setFont(new java.awt.Font("",style,font.getSize())); } if(e.getSource()==menuitem_italic) { style=style^2; textarea.setFont(new java.awt.Font("",style,font.getSize())); } if(e.getSource()==menuitem_normal) { style=style^3; textarea.setFont(new java.awt.Font("",style,font.getSize())); } if(e.getSource()==menuitem_12) { textarea.setFont(new java.awt.Font(font.getName(),style,12)); } if(e.getSource()==menuitem_24) { textarea.setFont(new java.awt.Font(font.getName(),style,24)); } if(e.getSource()==menuitem_36) { textarea.setFont(new java.awt.Font(font.getName(),style,36)); } if(e.getSource()==menuitem_seek) { dialog.setVisible(true); } seek=textarea.getText(); //查找菜单项的处理事件面向对象课程设计报告 第 String tseek=textfield_seek.getText(); if(e.getSource()==button_seek) { int i=textfield_seek.getText().length(); int j=seek.indexOf(tseek); textarea.setSelectionStart(j); textarea.setSelectionEnd(i+j); textfield_seek.setText(""); } } public void itemStateChanged(ItemEvent e) { if(e.getSource()==rbmi_red) { textarea.setForeground(java.awt.Color.red); } if(e.getSource()==rbmi_blue) { textarea.setForeground(java.awt.Color.blue); } if(e.getSource()==rbmi_green) { textarea.setForeground(java.awt.Color.green); } } public void mouseClicked(MouseEvent mec) { if (mec.getModifiers()==mec.BUTTON3_MASK)14页,共24页//ItemListener 事件处理方法//鼠标处理事件popupmenu.show(textarea,mec.getX(),mec.getY()); } public void mousePressed(MouseEvent mep) public void mouseReleased(MouseEvent mer) public void mouseEntered(MouseEvent mee) { { { } } }面向对象课程设计报告 public void mouseExited(MouseEvent mex) public void mouseDragged(MouseEvent med) public static void main(String arg[]) { new Notepad("文本编辑器"); } }第 { {15 页,共 } }24页//main 方法编译代码实现各种功能:打开任意目录下一文本文件:文件目录下“另存为”功能:面向对象课程设计报告第16页,共24页编辑目录下“查找”功能:编辑目录下“复制” “剪切” “粘贴”功能:面向对象课程设计报告第17页,共24页面向对象课程设计报告第18页,共24页字体设置功能:面向对象课程设计报告第19页,共24页编辑目录下“颜色“功能:设置字型功能:面向对象课程设计报告第20页,共24页设置字号功能:面向对象课程设计报告第21页,共24页运行完毕,可关闭窗口退出程序或点击文件目录下的“退出”功能面向对象课程设计报告第22页,共24页5. 软件发布面向对象课程设计报告 首先制作 Manifest 文件,代码如下; Manifest-Version:1.0 Mani-Class: notepad Created-Boy:1.6(Sun Microsystems Inc.) 保存为 Manifest.mf,保存在 D:\java 打开 CMD 在 DOS 下生成 jar 文件:第23页,共24页D:\java\jar cmf Notepad.jar Manifest.mf notepad.class 生成 JAR 文件,双击运行。
文本编辑器课程设计报告
青岛农业大学理学与信息科学学院高级语言课程设计报告设计题目文本编辑器学生专业班级计算机科学与技术学生姓名(学号)设计小组其他同学姓名(学号)指导教师完成时间 2011-11-03 设计地点信息楼机房2011年 11 月 05 日一、课程设计目的和任务为了方便处理文本内容,减少在处理文本时的额外活动,设计了本程序。
比如在统计文本中的中英文字母数和空格数以及整篇文章的总字数时,可以利用本程序,这样比较方便、省时。
又比如统计某一字符串在文章中出现的次数,并输出该次数,也可利用本程序。
还可以利用本程序将文本的某一子串删除并将后面的字符前移。
二、分析与设计1.程序的基本功能:(1)分别统计出其中英文字母数和空格数以及整篇文章的总字数。
(2)统计某一字符串在文章中出现的次数,并输出该次数。
(3)删除某一子串,并将后面的字符前移。
2.系统总框图:(1)、统计字符个数算法流程图(2)、删除某一字符串算法流程图(3)、查找某一字符串出现的次数算法流程图3.定义的函数及说明:此程序由12个函数构成。
(1)存储结构:char wz[N][80]存储文章的字符数组,为全局变量(2)输入函数:readdat()通过此函数从文件中读取文本(3)输出函数:out()将文本内容输出(4)字符数统计函数:int countword(int n1,int n2)统计ASC 码在n1与n2之间的字符(5)字符串出现次数统计函数:int cz(char *s)查找某一字符串出现的次数(6)字符删除函数:void del(char *s)删除要删除的字符串(7)主函数:void main()通过主函数调用各个子函数完成程序功能(8)文件函数open("E:/yy/wzin.dat","r+")打开文件(9) 字符串位置函数strstr(wz[i],s);字符串s 在文章第i行首次出现的位置(10) 字符串长度函数strlen(wz[i]);文章第i 行的长度(11) 字符串比较函数strcmp(s1,"@@")比较字符串内容当为@@时停止输入(12) 字符串复制函数strcpy(wz[i],s1);/*将s1中的内容复制到wz[i]中4.算法设计:本程序要求储存结构为线性表结构,可以输入大小写的英文字母,任何数字和标点符号。
文本编辑器课程设计报告
目录一、问题描述-------------------------------------------------------------------------21、基本要求----------------------------------------------------------------------22、提高要求----------------------------------------------------------------------2二、需求分析-------------------------------------------------------------------------2三、概要设计-------------------------------------------------------------------------3四、详细设计-------------------------------------------------------------------------51、文件操作----------------------------------------------------------------------52、编辑操作----------------------------------------------------------------------103、工具操作----------------------------------------------------------------------194、关于操作----------------------------------------------------------------------20五、编码与调试分析----------------------------------------------------------------20六、使用说明-------------------------------------------------------------------------22七、测试结果-------------------------------------------------------------------------22八、自学知识-------------------------------------------------------------------------26九、课程设计心得体会-------------------------------------------------------------27一、问题的描述设计并编写一个小型文本编辑器,使其具有通常文本编辑器(如Vi、Edlin)应具备的基本功能。
简易文本编辑器课程设计报告说明书
简易文本编辑器摘要:此次课程设计设计了一个简易的文本编辑器,该程序主要用于文本编辑的几个操作,主要由C语言实现。
基于对文本编辑的需求该程序的功能在于:输入一页文字,程序可以统计出文字、数字、空格的个数统计某一字符串在文章中出现的次数,并输出该次数;删除某一子串,并将后面的字符前移。
程序算法立足于书本并适当改良,能够实现文本的一些特定操作。
关键词:文本编辑 C语言程序算法Abstract:The curriculum designed a simple text editor, which is mainly used for text editing of several operations, mainly by the C programming language. Based on the needs of the program text editing ,the program can input a text, count the number of words numbers and spaces in the file, statistics the number of a string of in the article, and output the number of times; to remove a substring, and the characters behind the forward. Program algorithm based on the book also have some improvement. Able to achieve some specific text operations.Key words:Text editing C programming language Program algorithm1引言目前社会上文字编辑系统发展飞快,文本编辑软件在人们的日常生活和学习、科研、生产等各个方面有着重要的应用。
数据结构课程设计报告-文本编辑器参考模板
《数据结构》课程设计报告题目:基于顺序结构的文本编辑器的设计专业:计算机科学与技术班级:姓名:学号:指导教师:成绩:2014-2015学年第一学期目录1课程设计内容 (1)1.1 设计内容 (1)1.2 设计任务 (1)1.3 具体要求 (1)2 概要设计 (1)2.1 系统的功能简介 (1)2.2 各个模块之间的主要关系 (2)3 设计过程及代码分析 (2)4 设计结果与分析 (15)5 源程序 (16)6 总结 (24)7 致谢 (24)8 参考文献 (25)1 课程设计内容1.1 设计内容《文本编辑器》主要根据课程设计要求进行设计的,本次课程设计的内容及要求是设计一个文本编辑器,能实现文本内容输入、显示、统计、处理、保存和退出文本编辑器等基本功能,主界面具有图形菜单界面、输入文本、打开文件、显示当前文本内容、进入文本内容统计菜单、进入文本内容处理菜单、保存、退出文本编辑器。
其中文本内容统计菜单包含大小写字母、数字、标点符号、空格、所有字符的统计;文本内容处理菜单包含查找、删除文章中的字符或者字符串,向文章中插入字符或者字符串,从文章中复制字符或者字符串,修改行内容,替换字符或者字符串。
1.2 设计任务主要利用C语言的文件操作能力设计一个简单的文本编辑器,对于文本编辑器来说,数据结构相对简单,使用一个有较大长度的顺序表即可,在程序中可采用一维数组来实现。
使用数组表示的顺序表来存储文本具有简洁、访问方便、输出方便等特点。
1.3 具体要求明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用数据结构进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。
2 概要设计2.1 系统的功能简介该系统的主要功能是实现文本内容输入、显示、统计、处理、保存。
首先,输入文本内容并保存;选择打开文件,打开刚才保存的文件;选择显示当前文章内容,可以预览文件内容;进入文章内容统计菜单,可以对文章中大写字母、小写字母、数字、标点符号、空格、所有字数的统计;进入文章内容处理菜单,查找、删除文章中的字符或者字符串,向文章中插入字符或者字符串,从文章中复制字符或者字符串,修改行内容,替换字符或者字符串。
文本编辑器课程设计
文本编辑器 课程设计一、课程目标知识目标:1. 学生能理解文本编辑器的基本功能和操作方法。
2. 学生掌握文本编辑器的排版技巧,包括字体、字号、颜色设置,以及段落格式的调整。
3. 学生了解文本编辑器中的查找与替换功能,并能运用其提高编辑效率。
技能目标:1. 学生能够熟练运用文本编辑器进行文档的创建、编辑和保存。
2. 学生掌握文本编辑器的快捷键操作,提高文本编辑速度。
3. 学生通过实践操作,培养解决问题的能力和团队协作能力。
情感态度价值观目标:1. 学生培养对信息技术课程的兴趣,增强学习动力。
2. 学生认识到文本编辑在日常生活和未来工作中的重要性,提高职业素养。
3. 学生在团队协作中,学会分享与交流,培养合作精神和集体荣誉感。
课程性质:本课程为信息技术课程,旨在让学生掌握文本编辑器的使用技巧,提高文字处理能力。
学生特点:六年级学生已经具备一定的计算机操作基础,对新鲜事物充满好奇心,喜欢动手实践。
教学要求:结合学生特点,注重理论与实践相结合,以任务驱动法引导学生自主探究和合作学习,关注学生的个体差异,使每个学生都能在课程中收获成长。
通过具体的学习成果分解,为后续教学设计和评估提供依据。
二、教学内容1. 文本编辑器简介:介绍文本编辑器的概念、作用和常见类型,使学生对其有一个整体认识。
教材章节:第一章 认识文本编辑器2. 文本编辑器基本操作:包括新建、打开、保存、关闭文档,以及撤销与重做操作。
教材章节:第二章 文本编辑器的基本操作3. 文本格式设置:教授字体、字号、颜色设置,以及段落格式调整。
教材章节:第三章 文本格式设置4. 排版技巧:讲解文本对齐、缩进、行距、项目符号等排版方法。
教材章节:第四章 文本排版技巧5. 查找与替换:介绍文本编辑器中的查找与替换功能,提高编辑效率。
教材章节:第五章 查找与替换6. 文本编辑快捷键:学习常用的文本编辑快捷键,提高编辑速度。
教材章节:第六章 文本编辑快捷键7. 实践操作:安排综合实践任务,让学生运用所学知识完成文档编辑,巩固所学内容。
c设计文本编辑器课程设计
c 设计文本编辑器课程设计一、教学目标本课程的设计文本编辑器课程旨在让学生掌握文本编辑器的基本概念、原理和应用,培养学生具备文本编辑器的使用和开发能力。
具体的教学目标如下:1.知识目标:(1)了解文本编辑器的发展历程和基本原理。
(2)掌握文本编辑器的主要功能和特点。
(3)了解文本编辑器的应用领域和前景。
2.技能目标:(1)能够熟练使用常见的文本编辑器。
(2)能够根据实际需求,编写简单的文本编辑器程序。
(3)能够对文本编辑器进行基本的维护和优化。
3.情感态度价值观目标:(1)培养学生对文本编辑器的兴趣,提高学生主动学习的积极性。
(2)培养学生团队协作的精神,提高学生的沟通与协作能力。
(3)培养学生勇于创新、追求卓越的品质,提高学生的自主创新能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.文本编辑器概述:介绍文本编辑器的发展历程、基本原理和主要功能。
2.文本编辑器的使用:讲解如何熟练使用常见的文本编辑器,包括基本操作和高级功能。
3.文本编辑器程序设计:介绍文本编辑器的程序设计方法,包括界面设计、字符处理、文件操作等。
4.文本编辑器的维护与优化:讲解如何对文本编辑器进行维护和优化,以提高性能和稳定性。
5.文本编辑器的应用案例:介绍文本编辑器在实际应用中的案例,激发学生的学习兴趣和应用能力。
三、教学方法为了提高教学效果,本课程将采用以下教学方法:1.讲授法:通过讲解文本编辑器的基本概念、原理和应用,使学生掌握相关知识。
2.案例分析法:分析文本编辑器的实际应用案例,使学生更好地理解文本编辑器的功能和作用。
3.实验法:让学生动手编写文本编辑器程序,提高学生的实际操作能力和实践能力。
4.讨论法:学生进行小组讨论,培养学生的团队协作能力和沟通与表达能力。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选用一本与文本编辑器相关的教材,作为学生学习的主要参考资料。
2.参考书:提供一些与文本编辑器相关的参考书籍,供学生拓展阅读。
文本编辑器Delphi课程设计报告书
目录课程设计任务书 (1)1、实验题目: (2)2、项目概述 (2)3、系统的功能需求 (2)3.1总体设计 (2)3.2系统功能 (2)3.3系统工作流程 (3)4、文本编辑器的详细设计 (3)4.1文本编辑器的界面设置 (3)4.1.1新建工程 (3)4.1.2修改窗口: (3)4.2文本编辑器的详细代码分析 (6)5.心得体会: (9)6.参考文献 (10)7.致 (10)8.附录 (10)课程设计任务书班级1、实验题目:文本编辑器2、项目概述程序大部分菜单都在窗体中对应有一个快捷图标。
包括新建、打开、保存、剪切、复制、粘贴、左对齐、右对齐、居中、文字加粗、文字倾斜、文字加下划线和文字大小等命令,在菜单中还包括字体颜色、窗体背景颜色等命令。
利用这些基本命令,可以很方便地处理很多文本文档。
该程序界面友好,当把鼠标放在快捷工具栏上时,程序会给出快捷菜单提示,同时,在窗体下方的中间,也有该快捷命令的说明文字。
首先要解决窗体的布局和设计问题。
然后给各个菜单和快捷工具栏中的按钮添加相关程序代码。
这个文本编辑器与一般的简易的文字编辑程序的制作有所不同。
首先,必须设置好菜单的属性及功能;其次,当所有的菜单都设计好之后,还必须对工具栏进行设计,工具栏的开发与设计是最具挑战性的工作,因为整个界面的美观都取决于工具栏的制作,而整个程序使用是否方便、快捷,也取决于工具栏的安排和属性的设置。
然后,还需进行一些细部的修饰,例如底部任务栏上的提示用语以及帮助菜单的设计等。
3、系统的功能需求3.1总体设计3.2系统功能该文本编辑器具有完整的菜单,大部分菜单都在窗体对应有一个快捷图标。
包括新建、打开、保存、剪切、复制、粘贴、做对齐、右对齐、居中、文字加粗、文字倾斜、文字下划线和文字大小等命令,在菜单中还包括字体颜色、窗体背景颜色。
利用这些命令,可以很方便地处理很多文本文档。
该程序界面有好,当把鼠标放在快捷工具栏上时,程序会给出快捷菜单提示,同时,在窗体下方的中间,也有该快捷命令的说明文字。
C#编写的文本编辑器课程设计
河南中医学院《C#程序设计》课程设计报告文本编辑器院系:信息技术学院专业:信息管理与信息系统专业班级: 2010级信管一班姓名:指导教师:完成日期: 2011年6月10日设计题目:文本编辑器1.题目描述设计一个文本编辑器,能够实现对文本的编辑,窗体应有:文件,编辑,格式,查看,帮助。
(模拟文本文档,添加部分word功能)提供以下功能:1.1文件操作能够实现:新建、打开、保存、另存为、页面属性、打印、打印预览、退出功能。
1.2编辑操作能够实现:撤销、剪切、复制、粘贴、删除、查找、转到、全选、时间/日期、替换功能。
1.3格式操作能够实现:自动换行、字体、颜色、背景颜色设置。
1.4查看操作能够实现:状态栏。
1.5 帮助操作能够实现:帮助主题、关于记事本。
另:(1)实现鼠标的右键常用功能,如复制、粘贴、剪切、撤销、全选、颜色。
(2)实现各功能的快捷键设置(3)实现文本框的外观设置2.应用程序功能说明新建:在未保存的情况下提示是否需要对文件进行保存打开:打开已有的文件保存:对文件进行保存,并显示保存的位置另存为:和保存的功能基本相似文件页面属性:显示文本文档的页面属性打印:实现对文本的打印功能打印预览:打印前对打印效果的预览退出:关闭打开的文本文档撤销:撤除上一步操作剪切:将选中的部分剪切掉复制:复制选中的部分粘贴:对剪切和复制的部分进行粘贴编辑删除:删除选中的部分查找:实现单方向查找全选:选中文本文档中的全部内容时间/日期:在文本后加上时间替换:对那些需要改变的内容实施替换和全部替换自动换行:在一行写满之后,自动跳转到下一行格式字体:调用系统中自带的字体,实现对字体样式和大小的改变颜色:调用系统中自带的颜色,实现对字体颜色的改变背景颜色:在给定的几种颜色中选一种作为背景颜色查看状态栏:显示当前输入文本的字数和年/月/日帮助主题:显示帮助部分帮助关于记事本:版权的说明客户反馈:对客户的满意程度实施调查3. 源程序3.1 Form1部分源代码using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;//调用命名空间using System.Drawing.Printing;//调用打印命名空间namespace模拟文本文档Ì{public partial class Form1 : Form{string name;string dk;StringReader streamToPrint = null;Font printFont;//int FindPosition = 0;public int k = 0;public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){撤销¨²ToolStripMenuItem.Enabled = false;//在程序运行开始时这些选择都是无效的剪切DToolStripMenuItem.Enabled = false;复制ToolStripMenuItem.Enabled = false;删除yToolStripMenuItem.Enabled = false;转到Ì?ToolStripMenuItem.Enabled = false;//状态栏ToolStripMenuItem.Enabled = false;查找替换ToolStripMenuItem.Enabled = false;this.richTextBox1.Anchor =(System.Windows.Forms.AnchorStyles)(System.Windows.Forms.AnchorStyles.Left |System.Windows.Forms.AnchorStyles.Bottom |System.Windows.Forms.AnchorStyles.Right |System.Windows.Forms.AnchorStyles.Top);//richTextBox1的放大与还原代码}private void字体¬?ToolStripMenuItem_Click(object sender, EventArgs e){if (fontDialog1.ShowDialog() == DialogResult.OK)//获取对话框的返回值是确定richTextBox1.SelectionFont = fontDialog1.Font;//获取系统的字体}private void新建ToolStripMenuItem_Click(object sender, EventArgs e){if (richTextBox1.Modified == true){DialogResult n = MessageBox.Show("文件" + Text + "”内容已修改\n是否要保存", "提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation);//带有黄色感叹号的MessageBoxswitch (n)//使switch用语句判断{case (DialogResult.Yes):保存ToolStripMenuItem_Click(sender, e);break;case (DialogResult.No):richTextBox1.Text = "";break;case (DialogResult.Cancel):richTextBox1.Modified = false;break;}}}private void打开ToolStripMenuItem_Click_1(object sender, EventArgs e){OpenFileDialog newdk = new OpenFileDialog();//实例化 newdknewdk.Title = "打开";//设置文件对话框的标题string dakai =Environment.GetFolderPath(Environment.SpecialFolder.Desktop);//从电脑中检索的对应文件赋值给字符串变量dakainewdk.InitialDirectory = dakai;//将dakai赋值给newdknewdk.Filter = "纯文本(*.txt)|*.txt|c#源文件(*.cs)|*.cs|10信管一班陈勇(*.txt)|*.10信管一班陈勇";//文件名筛选器newdk.ValidateNames = true;newdk.CheckFileExists = true;newdk.ShowHelp = true;//获取帮助按钮newdk.Multiselect = true;newdk.FilterIndex = 2;//表示32位的有效整数不可随意赋值if (openFileDialog1.ShowDialog() == DialogResult.OK)//在打开对话框确认的情况下{dk = openFileDialog1.FileName;//将获取的文件名字符串赋值给dkthis.richTextBox1.Text = newdk.FileName;richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.PlainText);}}private void保存ToolStripMenuItem_Click(object sender, EventArgs e){try//使用语句处理异常情况{StreamWriter bc = new StreamWriter(name, false,Encoding.GetEncoding("gb2312"));string baocun = richTextBox1.Text;bc.Write(baocun);bc.Close();}catch{saveFileDialog1.Filter = "纯文本(*.txt)|*.txt|10信管一班陈勇c#源文件(*.cs)|*.cs";saveFileDialog1.OverwritePrompt = true;if (richTextBox1.Text == ""){MessageBox.Show("请输入要保存的内容", "提示");}else{if (saveFileDialog1.ShowDialog() == DialogResult.OK){StreamWriter c = new StreamWriter(saveFileDialog1.FileName, false, Encoding.GetEncoding("gb2312"));//gb2312国标,中国自己的name = saveFileDialog1.FileName;string d = richTextBox1.Text;//将文本中的字符串赋值给局部变量c.Write(d);//将字符串重载c.Close();}}}}private void另存为aToolStripMenuItem_Click(object sender, EventArgs e)//类似保存{if (richTextBox1.Modified == true){DialogResult close = MessageBox.Show("是否保存已修改的内容, "提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);switch (close){case DialogResult.Yes:this.保存ToolStripMenuItem_Click(sender, e);try//使用语句处理异常情况{StreamWriter sww = new StreamWriter(name, false, Encoding.GetEncoding("gb2312"));string data = richTextBox1.Text;sww.Write(data);sww.Close();}catch{saveFileDialog1.Filter = "文件t|*.txt";saveFileDialog1.OverwritePrompt = true;if (saveFileDialog1.ShowDialog() == DialogResult.OK){StreamWriter sww = newStreamWriter(saveFileDialog1.FileName, false, Encoding.GetEncoding("gb2312"));name = saveFileDialog1.FileName;string data = richTextBox1.Text;sww.Write(data);sww.Close();}}break;case DialogResult.No:richTextBox1.Clear();break;case DialogResult.Cancel:break;}}}private void撤销ToolStripMenuItem_Click(object sender, EventArgs e){richTextBox1.Undo();//撤销}private void richTextBox1_TextChanged(object sender, EventArgs e){if (richTextBox1 == null){剪切DToolStripMenuItem.Enabled = false;}else{剪切DToolStripMenuItem.Enabled = true;}if (richTextBox1.Text == null){撤销ToolStripMenuItem.Enabled = false;//如果richTextBox1为空则无法执行}else{撤销ToolStripMenuItem.Enabled = true;}if (richTextBox1.Text == null)//复制{复制ToolStripMenuItem.Enabled = false;}else{复制ToolStripMenuItem.Enabled = true;}if (richTextBox1.Text == null)//粘贴{粘贴ToolStripMenuItem.Enabled = false;}else{粘贴ToolStripMenuItem.Enabled = true;}if (richTextBox1.Text == null){删除ToolStripMenuItem.Enabled = false;}else{删除ToolStripMenuItem.Enabled = true;}if (richTextBox1.Text == null){查找替换ToolStripMenuItem.Enabled = false;}else{查找替换ToolStripMenuItem.Enabled = true;}this.toolStripStatusLabel5.Text = "当前文档字数合计为" +this.richTextBox1.Text.Length;this.toolStripStatusLabel6.Text =datetime.now.Tosting();}private void剪?切DToolStripMenuItem_Click(object sender, EventArgs e) {richTextBox1.Cut();//剪切}private void复制ToolStripMenuItem_Click(object sender, EventArgs e){richTextBox1.Copy();//复制}private void粘贴ToolStripMenuItem_Click(object sender, EventArgs e){richTextBox1.Paste();//粘贴}private void删除ToolStripMenuItem_Click(object sender, EventArgs e){richTextBox1.SelectedText = "";//删除}private void撤销ToolStripMenuItem1_Click(object sender, EventArgs e) {richTextBox1.Undo();}private void全选ToolStripMenuItem1_Click(object sender, EventArgs e) {richTextBox1.SelectAll();}private void剪切ToolStripMenuItem1_Click(object sender, EventArgs e) {richTextBox1.Cut();}private void复制ToolStripMenuItem1_Click_1(object sender, EventArgs e) {richTextBox1.Copy();}private void Form1_FormClosing(object sender, FormClosingEventArgs e)}private void saveFileDialog1_FileOk(object sender, CancelEventArgs e){}private void自动换行ToolStripMenuItem_Click(object sender, EventArgs e){richTextBox1.WordWrap = true;}private void打开ToolStripMenuItem_Click(object sender, EventArgs e){this.openFileDialog1.Title = "打开";this.openFileDialog1.Filter = "文本文件t(*.txt;*.rtf)|*.txt;*.rtf|所有文件t(*.*)|*.*";this.openFileDialog1.FilterIndex = 1;this.openFileDialog1.InitialDirectory = "桌面";this.openFileDialog1.ShowReadOnly = true;this.openFileDialog1.ReadOnlyChecked = false;this.openFileDialog1.FileName = "";if (this.openFileDialog1.ShowDialog() == DialogResult.OK){this.Text = this.openFileDialog1.FileName;StreamReader str = new StreamReader(this.openFileDialog1.FileName, Encoding.Default);this.richTextBox1.Text = str.ReadToEnd();str.Close();}}private void页面属性ToolStripMenuItem_Click(object sender, EventArgs e){printDialog1.Document = printDocument1;printDialog1.ShowDialog();}private void粘贴ToolStripMenuItem1_Click(object sender, EventArgs e){richTextBox1.Paste();}private void复制ToolStripMenuItem1_Click(object sender, EventArgs e){richTextBox1.Copy();}private void粘贴ToolStripMenuItem1_Click_1(object sender, EventArgs e){richTextBox1.Paste();}private void页面属性ToolStripMenuItem_Click_1(object sender, EventArgs e)pageSetupDialog1.Document = printDocument1;pageSetupDialog1.ShowDialog();}private void颜色ToolStripMenuItem_Click(object sender, EventArgs e){if (colorDialog1.ShowDialog() == DialogResult.OK)//对Click事件中的颜色richTextBox1.SelectionColor = colorDialog1.Color;}private void颜色ToolStripMenuItem_Click(object sender, EventArgs e){if (colorDialog1.ShowDialog() == DialogResult.OK)//右键功能中的颜色设置对选中的进行修改richTextBox1.SelectionColor = colorDialog1.Color;//获取选中的文字}private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)//打印{//用浮点类型因为可能出现小数float linesPerPage = 0;//记录每页的最大行数float yPosition = 0;//垂直方向的位置int count = 0;//每页打印的行数float leftMargin = e.MarginBounds.Left;//左边距float topMargin = e.MarginBounds.Top;//顶边距string line = null;//从中读取段字符串存储到line中linesPerPage = e.MarginBounds.Height / printFont.GetHeight(e.Graphics);//行数总高度每行高度while(count < linesPerPage && ((line = streamToPrint.ReadLine())) != null)//如果当前打印页面行数不足页的最大行数并且读取的行数不为空那么继续打印{yPosition = topMargin + (count * printFont.GetHeight(e.Graphics));//计算高度e.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, yPosition, new StringFormat());count++;//已打印行数再加}if (line != null)//判断是否需要打印下一页e.HasMorePages = true;elsee.HasMorePages = false;}private void printDocument1_BeginPrint(object sender, PrintEventArgs e){printFont = richTextBox1.Font;//打印使用的字体将richTextBox中的赋值给printFontstreamToPrint = new StringReader(richTextBox1.Text);//创建读取字符串的对象}private void printDocument1_EndPrint(object sender, PrintEventArgs e){if (streamToPrint != null)streamToPrint.Close();}private void退出XToolStripMenuItem_Click(object sender, EventArgs e){if (this.richTextBox1.Modified == true){DialogResult tc =MessageBox.Show("文件t“¡”" + this.Text + "的内容已经修改是否要保存", "提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation);if (tc == DialogResult.Yes){另存为aToolStripMenuItem_Click(sender, e);this.richTextBox1.Clear();this.Text = "";}if (tc == DialogResult.No){Application.Exit();}else{this.Close();}}}private void toolStripMenuItem1_Click(object sender, EventArgs e)//打印预览 {printPreviewDialog1.Document = printDocument1;printPreviewDialog1.ShowDialog();}private void打印ToolStripMenuItem_Click_2(object sender, EventArgs e){printDialog1.Document = printDocument1;if (printDialog1.ShowDialog(this) == DialogResult.OK)printDocument1.Print();}private void fileSystemWatcher1_Changed(object sender, FileSystemEventArgs e) {}private void页面属性ToolStripMenuItem_Click_2(object sender, EventArgs e) {pageSetupDialog1.Document = printDocument1;//添加控件pageSetupDialog1.ShowDialog();}private void颜?色ToolStripMenuItem_Click_1(object sender, EventArgs e){if (colorDialog1.ShowDialog() == DialogResult.OK)richTextBox1.SelectionColor = colorDialog1.Color;}private void颜色ToolStripMenuItem_Click_1(object sender, EventArgs e){if (colorDialog1.ShowDialog() == DialogResult.OK)richTextBox1.SelectionColor = colorDialog1.Color;}private void关于记事本ToolStripMenuItem_Click_1(object sender, EventArgs e) {formabout about = new formabout();about.ShowDialog();}private void全选ToolStripMenuItem_Click_1(object sender, EventArgs e){richTextBox1.SelectAll();}private void日期时间ToolStripMenuItem_Click_1(object sender, EventArgs e) {richTextBox1.Text = richTextBox1.Text + DateTime.Now.ToString();}private void查找ToolStripMenuItem_Click(object sender, EventArgs e)//查找替换{//FindPosition = 0;//formFind FindReplaceDialog = new formFind();//FindReplaceDialog.Show();formFind f = new formFind();f.rtb = this.richTextBox1; //传值(从主窗口传到FindForm)f.Owner = this; //悬浮于当前窗体f.Show();}private void状态栏ToolStripMenuItem_Click(object sender, EventArgs e){if (k == -1){statusStrip1.Show();状态栏ToolStripMenuItem.Checked = true;k = 0;}else{statusStrip1.Hide();状态栏ToolStripMenuItem.Checked = false;k = -1;}}private void toolStripStatusLabel5_Click(object sender, EventArgs e){}private void白色ToolStripMenuItem_Click(object sender, EventArgs e) {richTextBox1.BackColor = Color.White;白色ToolStripMenuItem.Enabled = true;灰色ToolStripMenuItem.Enabled = false;咖啡色ToolStripMenuItem.Enabled = false;}private void灰色ToolStripMenuItem_Click(object sender, EventArgs e) {richTextBox1.BackColor = Color.Gray;白色ToolStripMenuItem.Enabled = false;灰色ToolStripMenuItem.Enabled = true;咖啡色ToolStripMenuItem.Enabled = false;}private void咖啡色ToolStripMenuItem_Click(object sender, EventArgs e) {richTextBox1.BackColor = Color.BurlyWood;白色ToolStripMenuItem.Enabled = false;灰色ToolStripMenuItem.Enabled = false;咖啡色ToolStripMenuItem.Enabled = true;}private void替换TToolStripMenuItem_Click(object sender, EventArgs e) {tihuan newth = new tihuan();// newth.Show();newth.rtb = this.richTextBox1; //传值(从主窗口传到FindForm)newth.Owner = this; //悬浮于当前窗体newth.Show();// tihuan newth = new tihuan();// newth.Show();}3.2 formabout部分源代码(关于)using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace模拟文本文档{public partial class formabout : Form{public formabout(){InitializeComponent();}private void formabout_Load(object sender, EventArgs e){MaximizeBox = false;//没有最大化MinimizeBox = false;//没有最小化label1.Text = "Microsoft(R)文本文档版本:模拟Windows记事本,添加部分offce 功能版权所有严禁盗版本产品最终解释权归冰点所有;}private void pictureBox1_Click(object sender, EventArgs e){}private void label1_Click(object sender, EventArgs e){}private void button1_Click(object sender, EventArgs e){Close();}private void pictureBox1_Click_1(object sender, EventArgs e){}3.3 formFind部分源代码(查找)using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace模拟文本文档{public partial class formFind : Form{ public formFind(){InitializeComponent();}public RichTextBox rtb;int start = 0;//查找的起始位置?string nr = "";//查找的内容RichTextBoxFinds f=0;private void button1_Click_1(object sender, EventArgs e){this.Close();}private void button3_Click(object sender, EventArgs e){nr = this.textBox1.Text; //查找start = rtb.Find(nr, start, f);if (start == -1){MessageBox.Show("对不起查找不到与+ nr +相符的内容, (记事本)查找示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);start = 0;}else{start = start + nr.Length;//找到后从找到位置之后开始下一次rtb.Focus(); //给予焦点}}private void formFind_Load(object sender, EventArgs e){}3.4 tihuan部分源代码using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace模拟文本文档{public partial class tihuan : Form{public tihuan(){InitializeComponent();}public RichTextBox rtb;int start = 0;//开始位置string nr = "";//定义内容字符串string th = "";//定义转换字符串RichTextBoxFinds f=0;//int i = 0;private void tihuan_Load(object sender, EventArgs e){}private void button1_Click(object sender, EventArgs e)//查找{nr = this.textBox1.Text;//将textBox1中的内容赋值给start = rtb.Find(nr, start, f);//开始的位置是找到的内容if (start == -1)//找不到啊{MessageBox.Show("对不起查找不到与+ nr +内容相匹配的信息, 记事本查找提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);start = 0;//返回开始位置}else{start = start + nr.Length;//找到后从找到位置之后开始下一次rtb.Focus(); //给予焦点,此处不解}}private void button2_Click(object sender, EventArgs e){nr = this.textBox1.Text;//找的内容th = this.textBox2.Text;//替换的内容// rtb.SelectedText = th;//start = rtb.Find(nr, start, f);if (start == -1){MessageBox.Show("对不起查找不到与+ nr + 内容相匹配的信息, 记事本查找提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);}else{rtb.SelectedText =th;// start = start + th.Length;//找到后从找到位置之后开始下一次// rtb.Focus(); //给予焦点}}private void button3_Click(object sender, EventArgs e){nr = this.textBox1.Text;//找的内容th = this.textBox2.Text;start = rtb.Find(nr, start, f);while (start != -1){rtb.SelectedText = th;start = start + nr.Length;start = rtb.Find(nr, start, f);i++;}MessageBox.Show("全部替换完毕,全部一共替换了 + i.ToString() + "次, "记事本替换完毕信息);start = 0;}private void button4_Click(object sender, EventArgs e){this.Close();}}}4. 调试结果4.1在实现查找功能时无法在文本文档中找到相应的内容一个警告,原因是我在别人的电脑上调试,出现这种情况解决方案4.2解决方案是在主窗体中将定义的初始位置注释掉,结果发现还不行,于是从新分析查找过程,根据过程再修改代码,调试成功。
语言课程设计文本编辑器
语言课程设计文本编辑器一、教学目标本课程的教学目标是让学生掌握文本编辑器的基本操作和使用技巧,培养学生熟练运用文本编辑器进行文本处理和排版的能力。
具体分为以下三个部分:1.知识目标:使学生了解文本编辑器的发展历程、基本功能和常用操作,理解文本编辑器在现代办公和学术研究中的重要性。
2.技能目标:培养学生能够熟练使用文本编辑器进行文本输入、编辑、排版、校对和打印输出,掌握字体设置、段落调整、制作等基本技能。
3.情感态度价值观目标:培养学生对文本编辑器的正确使用态度,注重知识产权保护,养成规范、高效的文本处理习惯,提高学生的信息素养和职业道德。
二、教学内容本课程的教学内容主要包括以下几个部分:1.文本编辑器的基本概念和功能介绍,包括文本编辑器的发展历程、种类和特点。
2.文本编辑器的基本操作,包括文本输入、编辑、复制、剪切、粘贴、撤销和恢复等。
3.文本编辑器的排版技巧,包括字体设置、段落调整、标题编号、列表制作、制作等。
4.文本编辑器的的高级应用,包括查找和替换、语法检查、拼音输入、文本朗读等。
5.文本编辑器在实际应用中的案例分析,例如:撰写教案、编写程序代码、撰写学术论文等。
三、教学方法本课程采用讲授法、实践操作法和案例分析法进行教学。
在教学过程中,教师首先向学生讲解文本编辑器的基本概念和功能,然后引导学生进行实践操作,让学生在实际操作中掌握文本编辑器的使用技巧。
同时,通过案例分析法,让学生了解文本编辑器在实际应用中的重要性,提高学生的学习兴趣和主动性。
四、教学资源本课程的教学资源包括教材、多媒体资料和实验设备。
教材主要用于为学生提供理论知识和操作指南,多媒体资料用于辅助教学,丰富学生的学习体验。
实验设备则是学生进行实践操作的重要工具,包括计算机、投影仪等。
在教学过程中,教师还可以利用网络资源,为学生提供更多的学习资料和实践案例,帮助学生更好地掌握文本编辑器的使用技巧。
五、教学评估本课程的教学评估主要包括以下几个方面:1.平时表现:评估学生的课堂参与度、提问回答、小组讨论等,以检验学生的学习态度和积极性。
文本编辑器课程设计报告
.Java课程设计报告目:文本编辑器题班级:号:学姓名:绩:成日日期:月年..目录一、综合设计的目的与要求3……………………………………二、综合设计正文3…………………………………………………1.系统分析 (3)1.1……………………3系统开发背景、开发范围、建设目标与必要性开发1.2..................................................................3需求分析2.系统设计 (3)2.1…………………………………………………………3功能设计2.2...................................................4系统运行环境与开发工具3 .系统实施 (4)3.1……………………………………………………………4源程序3.2......................................................12 . 系统测试及部分截图三、综合设计总结或结论 (13)四、参考文献 (13)..《文本编辑器》一、综合设计的目的与要求要求在学生能够较熟练使用java程序设计语言进行软件代码的编写,同时还要具备较好的项目分析的能力,加深对相关课程基本内容的理解。
同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统的练习。
二、综合设计正文1 系统分析1.1系统开发背景、开发范围、建设目标与必要性随着计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
当然对文本编辑操作仍然占据着重要地位,记事本是简单便捷的文本编辑器,可实现对文本编辑操作的基本功能。
1.2需求分析程序设计主要分为两大部分:简单GUI设计和程序功能设计。
通过GUI设计实现图形用户界面,提供图形菜单,方便用户操作。
使用Java语言编写一个能够对输入文字进行操作,具有合理的界面,能够在界面中实现右键快捷方式,对文档内容进行编辑操作,并且能够顺利退出的程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
. I Java课程设计报告题目:文本编辑器班级:学号:姓名:成绩:日期:年月日目录一、综合设计的目的与要求 (3)二、综合设计正文 (3)1.系统分析 (3)1.1系统开发背景、开发围、建设目标与必要性开发 (3)1.2需求分析 (3)2.系统设计 (3)2.1功能设计 (3)2.2系统运行环境与开发工具 (4)3 .系统实施 (4)3.1源程序 (4)3.2.系统测试及部分截图 (12)三、综合设计总结或结论 (13)四、参考文献 (13)《文本编辑器》一、综合设计的目的与要求要求在学生能够较熟练使用java程序设计语言进行软件代码的编写,同时还要具备较好的项目分析的能力,加深对相关课程基本容的理解。
同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统的练习。
二、综合设计正文1 系统分析1.1系统开发背景、开发围、建设目标与必要性随着计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
当然对文本编辑操作仍然占据着重要地位,记事本是简单便捷的文本编辑器,可实现对文本编辑操作的基本功能。
1.2需求分析程序设计主要分为两大部分:简单GUI设计和程序功能设计。
通过GUI设计实现图形用户界面,提供图形菜单,方便用户操作。
使用Java语言编写一个能够对输入文字进行操作,具有合理的界面,能够在界面中实现右键快捷方式,对文档容进行编辑操作,并且能够顺利退出的程序。
通过设计和实现一个具有基本功能的文本编辑器,提高我们对Java语言设计的掌握能力,理论联系实际,进一步提高软件开发技术,从而培养我们分析、解决问题的能力。
2 系统设计2.1功能设计根据系统自带的文档编辑器的特征设计,包括如下的功能模块:一、整体结构框架包括:菜单栏和文档编辑区二、每个框架分别包含不同的子框架,各个模块的具体框架:1.菜单栏:文件、编辑、工具、帮助2.菜单栏中各个子菜单功能文件:新建、打开、保存、另存为、退出编辑:剪切、复制、粘贴工具:查找、替换3.子菜单功能的实现主要的几个功能介绍1)打开与另存为:两个窗体调用系统函数直接利用,注意格式的选择2)查找:查找容、查找、查找下一个4.文本编辑区监视文本容是否改变、监听光标所在位置2.2系统运行环境与开发工具开发环境与工具:jdk2.0 Eclipse SDK3 系统实施3.1 源程序import javax.swing.*;import java.awt.*;import java.io.*;import java.awt.event.*;public class TxtEditor extends JFrame implements ActionListener{String file_name;String file_dir;String tempString;//上次保存后的文件名和地址String fileName = "";JPanel x=new JPanel();JTextArea wen=new JTextArea(20,50);JMenuItem ziti=new JMenuItem("字体");JMenuItem a=new JMenuItem("普通");//定义菜单项JMenuItem xin=new JMenuItem("新建");JMenuItem open=new JMenuItem("打开");JMenuItem save=new JMenuItem("保存");JMenuItem lsave=new JMenuItem("另存为");JMenuItem tui=new JMenuItem("退出");JMenuItem cut=new JMenuItem("剪切");JMenuItem copy=new JMenuItem("复制");JMenuItem cast=new JMenuItem("粘贴");JMenuItem delete=new JMenuItem("删除");JMenuItem b=new JMenuItem("粗体");JMenuItem c=new JMenuItem("斜体");TxtEditor(){super ("文本编辑器");//对话框setBounds(250,100,700,450);setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e) {int option= JOptionPane.showConfirmDialog(TxtEditor.this, "确定要退出吗... ", "系统和你对话",JOptionPane.YES_NO_OPTION);if(option==JOptionPane.YES_OPTION)if(e.getWindow() == TxtEditor.this){System.exit(0);}else{return;}}});//热键设置xin.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,ActionEvent.CTRL_MA SK));open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,ActionEvent.CTRL_ MASK));save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_M ASK));cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,ActionEvent.CTRL_M ASK));copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,ActionEvent.CTRL_ MASK));cast.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,ActionEvent.CTRL_M ASK));//定义面板// x.add(add(new JScrollPane (wen));//);//滚动条wen.setFont(new Font("楷体" , Font.PLAIN ,20)); // wen.setBackground(Color.blue);// add(x);//菜单栏的创建JMenuBar cai=new JMenuBar();this.setJMenuBar(cai);cai.setOpaque(true);JMenu jian=new JMenu("文件");jian.add(xin);jian.add(open);jian.add(save);jian.add(lsave);jian.addSeparator( );jian.add(tui);cai.add(jian);JMenu bian= new JMenu("编辑");bian.add(cut);bian.add(copy);bian.add(cast);bian.add(delete);cai.add(bian);JMenu geshi = new JMenu ("格式");JMenu optionsMenu=new JMenu("字体"); geshi.add(optionsMenu);optionsMenu.add(a);optionsMenu.add(b);optionsMenu.add(c);cai.add(geshi);//增加监听器xin.addActionListener(this);open.addActionListener(this);save.addActionListener(this);lsave.addActionListener(this);tui.addActionListener(this);cut.addActionListener(this);copy.addActionListener(this);cast.addActionListener(this);delete.addActionListener(this);ziti.addActionListener(this);a.addActionListener(this);b.addActionListener(this);c.addActionListener(this);// 文本框锁定//this.setResizable(false);}//重写方法public void actionPerformed(ActionEvent e){String actionCommand=e.getActionCommand();if(e.getSource()instanceof JMenu);{if(e.getSource()==xin){newfile();}else if(e.getSource()==open){openfile();}else if(e.getSource()==save){savefile();}else if(e.getSource()==lsave){lsavefile();}else if(e.getSource()==cut){cutfile();}else if(e.getSource()==copy){copyfile();}else if(e.getSource()==cast){castfile();}else if(e.getSource()==delete){deletefile();}else if(e.getSource()==a){afile();}else if(e.getSource()==b){bfile();}else if(e.getSource()==c){cfile();}else if("退出".equals(actionCommand))System.exit(0);}}// 方法定义public void newfile(){savefile();wen.setText(null);fileName = "";}//打开public void openfile(){String fileName = null;FileDialog df = new FileDialog(this,"打开文件",FileDialog.LOAD);df.setVisible(true);//建立新文件File f = new File( df.getDirectory()+df.getFile() );//得到文件名fileName = df.getDirectory()+df.getFile();//用此文件的长度建立一个字符数组(特别标注)char ch[] = new char [(int)f.length()];//异常处理try{//读出数据,并存入字符数组ch中BufferedReader bw = new BufferedReader( new FileReader(f) );bw.read(ch);bw.close();}catch( FileNotFoundException fe ){System.out.println("file not found");System.exit(0);catch( IOException ie){System.out.println("IO error");System.exit(0);}String s =new String (ch);wen.setText(s);}//保存public void savefile(){if( fileName.equals("") ){FileDialog df = new FileDialog(this,"保存文件",FileDialog.SAVE);df.addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent ee){System.exit(0);}});df.setVisible(true);String s = wen.getText();try{File f = new File( df.getDirectory()+df.getFile());fileName = df.getDirectory()+df.getFile();BufferedWriter bw = new BufferedWriter( new FileWriter (f));bw.write(s , 0 , s.length());bw.close();}catch(FileNotFoundException fe_){System.out.println("file not found");System.exit(0);}catch( IOException ie_){System.out.println(" IO error");System.exit(0);}}//如果文件已经保存过else{String s = wen.getText();try{File f = new File( fileName );BufferedWriter bw = new BufferedWriter( new FileWriter (f));bw.write(s , 0 , s.length());bw.close();}catch(FileNotFoundException fe_){System.out.println("file not found");System.exit(0);}catch( IOException ie_){System.out.println(" IO error");System.exit(0);}}}//另存为public void lsavefile(){FileDialog df = new FileDialog(this,"另存为",FileDialog.SAVE);df.addWindowListener( new WindowAdapter(){public void windowClosing(WindowEvent ee){System.exit(0);}});df.setVisible(true);String s = wen.getText();try{File f = new File( df.getDirectory()+df.getFile());BufferedWriter bw = new BufferedWriter( new FileWriter (f));bw.write(s , 0 , s.length());bw.close();}catch(FileNotFoundException fe_){System.out.println("file not found");System.exit(0);}catch( IOException ie_){System.out.println(" IO error");System.exit(0);}}//剪切public void cutfile(){tempString = wen.getSelectedText();StringBuffer tmp = new StringBuffer ( wen.getText());int start = wen.getSelectionStart();int len = wen.getSelectedText().length();tmp.delete( start , start+len);wen.setText(tmp.toString());}//复制public void copyfile(){tempString = wen.getSelectedText();}//粘贴public void castfile(){StringBuffer tmp = new StringBuffer ( wen.getText());//得到要粘贴的位置int start = wen.getSelectionStart();tmp.insert(start , tempString);//用新文本设置原文本wen.setText(tmp.toString());}//删除public void deletefile(){StringBuffer tmp = new StringBuffer ( wen.getText());int start = wen.getSelectionStart();int len = wen.getSelectedText().length();tmp.delete( start , start+len);wen.setText(tmp.toString());}//字体public void afile(){wen.setFont(new Font("楷体", Font.PLAIN ,wen.getFont().getSize()) );//普通文字}public void bfile(){wen.setFont(new Font("楷体" , Font.BOLD ,wen.getFont().getSize()) );//粗体文字}public void cfile(){wen.setFont(new Font("楷体" , Font.ITALIC ,wen.getFont().getSize()) );//斜体文字}public static void main(String[] args) {TxtEditor w=new TxtEditor();w.pack();w.setVisible(true);}}3.2系统测试及部分截图4 系统测试三、综合设计总结或结论虽然这次试验比较简单,但是做起来还是比较吃力,由此可见,我在java学习上还不够透彻和明白。