文本编辑器操作系统课程设计报告书.docx
- 文档编号:10092887
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:35
- 大小:59.81KB
文本编辑器操作系统课程设计报告书.docx
《文本编辑器操作系统课程设计报告书.docx》由会员分享,可在线阅读,更多相关《文本编辑器操作系统课程设计报告书.docx(35页珍藏版)》请在冰点文库上搜索。
文本编辑器操作系统课程设计报告书
农林大学计算机与信息学院
课程设计报告
课程名称:
操作系统
实习题目:
文本编辑器
姓名:
学院:
计算机与信息
专业:
计算机科学与技术
年级:
学号:
指导教师:
职称:
年月日
课程设计报告结果评定
评语:
成绩:
指导教师签字:
评定日期:
一、采用技术----------------------------------------------------------
1、visualstudio2005编辑环境-------------------------------
2、C#的窗体编程--------------------------------------------------
二、选题说明------------------------------------------------------------三、总体说明-----------------------------------------------------
1、程序的基本结构-----------------------------------------------
2、程序的主要技术---------------------------------------------
四、详细设计------------------------------------------------------------
1、文件操作--------------------------------------------------------
3、编辑操作-------------------------------------------------------
4、工具操作-------------------------------------------------------
5、关于操作-------------------------------------------------------
五、编码与调试分析--------------------------------------------------
六、运行结果------------------------------------------------------------
七、课程设计心得体会----------------------------------------------
八、部分程序代码-----------------------------------------------------
一、采用技术
1.visualstudio2005编辑环境
VisualStudio是微软公司推出的开发环境。
是目前最流行的Windows平台应用程序开发环境。
目前已经开发到8.0版本,也就是VisualStudio2005。
VisualStudio可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件。
VisualStudio是一套完整的开发工具集,用于生成ASP.NETWeb应用程序、XMLWebServices、桌面应用程序和移动应用程序。
VisualBasic、VisualC++、VisualC#和VisualJ#全都使用一样的集成开发环境(IDE),利用此IDE可以共享工具且有助于创建混合语言解决方案。
另外,这些语言利用了.NETFramework的功能,通过此框架可使用简化ASPWeb应用程序和XMLWebServices开发的关键技术。
2.C#的窗体编程
Windows窗体是用于MicrosoftWindows应用程序开发的、基于.NETFramework的新平台。
此框架提供一个有条理的、面向对象的、可扩展的类集,使您能够开发功能丰富的Windows应用程序。
另外,Windows窗体可作为多层分布式解决方案中的本地用户界面。
窗体是一种文档,可以用来收集信息。
它包括两部分,一部分是由窗体设计者输入的,填写窗体的人无法更改的文字或图形。
窗体设计者可以插入希望得到回答的问题、选项列表、信息表格等。
另一部分是由窗体填写者输入的,用于从填写窗体者处收集信息并进行整理的空白区域。
窗体设计者可以在文档中插入窗体域或ActiveX控件,为窗体填写者提供用于收集数据的位置。
二、选题说明
随着科技的发展,人们对精神生活要求的越来越高,纸质的手动式的书写方式已经不是能够代表新世纪的生活需要了,所以现在各种不同功能的文本编辑器已经悄悄走进我们的生活和学习中,像简单的就有记事本。
但是一个简单的文本编辑器也是很重要的,是基础。
所以在结合自己的一个学期的很认真的学习c#后,决定自己编译一个类似与记事本的,但功能比记事本强大的文本编辑器。
文本编辑器的基本功能:
该文本编辑器是用windows编写的一个程序,运行后弹出文本编辑器的主界面,由键盘输入或以打开的方式输入或显示文本文件容。
其中程序的编辑项可对当前的文本进行撤销、删除、剪切、复制、粘贴、在文本里显示当前时间、全选、清除、查找、替换、统计等功能。
程序的文件项可以对电脑上txt,c++等格式文件的打开、对当前文本的保存和另存、对当前文本的的新建以与退出文本编辑系统。
程序的工具项为背景音乐,为用户提供了优美动听的音乐,仅在用户编辑疲惫乏力的时候尽情的享用。
最后在程序的帮助项有对该小型文本编辑器的关于,用来介绍该程序,还有访问XX,访问114网页大全,为用户提供查找资料等功能服务。
输入形式:
①直接在文本编辑框中输入文本容;
②以打开的方式打开并在文本框中显示电脑的上文本。
输出形式:
①对编辑框无文本容时进行查找、替换、统计等,程序会弹出一个提示尚无文本信息的小对话框,需输入文本后再进行以上操作。
②对编辑框中已有文本容后进行查找、替换、统计操作,程序将弹出与之对应的对话框,根据所弹出的对话框的按键要求进行之后的操作就可以。
保存文件,另存为等功能都异曲同工,撤销、删除、剪切、复制、粘贴、等就直接在主文本编辑框中操作,直接在其显示操作后的文本信息。
测试数据要求:
任意一文本文件。
三.总体说明
1.程序的基本结构
操作界面的主窗口为文本编辑器的主入口,类似于记事本的形式,菜单栏要如下的几项(
),另外还有两个简单的toolstripe式的图片按钮,分别是新建和保存。
当点击新建的时候,会弹出我们将要编辑的文档文本窗口,这是我们编写文字的地方。
书写完毕后,要先确认是否保存此文件夹,这样就不会发生自己所编辑的容会丢失。
2.程序的主要技术
(1)编写要先新建,编写之后要有保存功能;
(2)基本的操作功能如,复制、粘贴、剪切、撤销等;
(3)还可以设置文字的字体字形和字体的颜色。
四、详细设计
〔1〕、文件操作:
1、文件的新建的实现:
intret=MessageBox(NULL,TEXT("是否把更改保存到新建的文本文档!
!
!
"),TEXT("温馨提示"),MB_YESNO|MB_ICONQUESTION);
if(ret==IDYES)//根据选择如果保存
{
OPENFILENAMEofn;//文件对象
charszFile[MAX_PATH];//文件的大小,最大
ZeroMemory(&ofn,sizeof(ofn));//文件的初始化
ofn.lStructSize=sizeof(ofn);
ofn.lpstrFile=szFile;
ofn.lpstrFile[0]=TEXT('\0');
ofn.nMaxFile=sizeof(szFile);
ofn.lpstrFilter=TEXT("ALL\0*.*\0Text\0*.TXT\0C++\0*.cpp\0");//保存的文件类型
ofn.nFilterIndex=1;
ofn.lpstrFileTitle=NULL;
ofn.nMaxFileTitle=0;
ofn.lpstrInitialDir=NULL;
ofn.hwndOwner=hwnd;
ofn.Flags=OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;
ofn.lpstrTitle=TEXT("保存");
if(GetSaveFileName(&ofn))
{
FILE*fp;
fp=fopen(szFile,"w");//打开文件
if(fp==NULL)
{
MessageBox(NULL,TEXT("文件无法保存"),TEXT("呜呜"),MB_OK);
}
TCHARstr[10000];
TCHARend[10000];
memset(end,0,10000);
GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));
fputs(str,fp);
fclose(fp);
}
SetDlgItemText(hwnd,IDC_EDIT1,"");
}
else
{
SetDlgItemText(hwnd,IDC_EDIT1,"");
}
2、文件打开的实现:
caseID_MENUITEMOPEN:
//文本的打开
{
OPENFILENAMEofn;
charszFile[MAX_PATH];//保存路径变量
ZeroMemory(&ofn,sizeof(ofn));
在这里我们使用ZeroMemory“函数”,ZeroMemory其实并不是函数,看一下ZeroMemory的定义:
ofn.lStructSize=sizeof(ofn);
ofn.lpstrFile=szFile;
//szFile是一个字符数组,那么szFile这个名字就代表这个字符数组的首地址
这是一个指针的应用,把接收选择文件名的数组的地址传递到GetOpenFileName函数中。
ofn.lpstrFile[0]=TEXT('\0');
ofn.lpstrFile[0]=TEXT('\0');效果等价于ZeroMemory(szFile,sizeof(szFile)/sizeof(char));
ofn.nMaxFile=sizeof(szFile);
ofn.lpstrFilter=TEXT("ALL\0*.*\0Text\0*.txt\0");
文件过滤器
*.*就表示所有文件
*.txt就表示所有文本文件
abc*.*就表示所有以abc开头的文件
abc*.txt就表示所有以abc开头的文本文件(txt)
ofn.lpstrFilter=TEXT("ALL\0*.*\0Text\0*.TXT\0");用“\0”分割出几个段,每两段是一组过滤器,每组的第一个段代表过滤器的显示的值,而第二段表示真正的过滤器
ofn.nFilterIndex=1;//选择一个过滤器
ofn.lpstrFileTitle=NULL;
windows的一个惯例:
结构体的指针类型别名一般是LP+结构体的名字
GetOpenFileName(&ofn)而不是GetOpenFileName(ofn),因为GetOpenFileName函数要的是OPENFILENAME的指针
(8)只要用户还没关闭对话框,那么GetOpenFileName函数是停住的,同步模式的PlaySound以与getchar、scanf是一样的。
用户关闭对话框,GetOpenFileName函数返回,返回值是BOOL,等于TRUE表示用户选择了文件,如果等于FALSE就表示用户选择了[取消]按钮
ofn.nMaxFileTitle=0;
ofn.lpstrInitialDir=NULL;
ofn.hwndOwner=hwnd;
ofn.Flags=OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;
if(GetOpenFileName(&ofn))
{
FILE*fp;
fp=fopen(szFile,"r");
if(fp==NULL)
{
MessageBox(NULL,TEXT("文件打开错误!
"),TEXT("记事本"),MB_OK);
}
TCHARline[256];
TCHARend[10000];
memset(line,0,256);
memset(end,0,256);
while(!
feof(fp))
{
fgets(line,sizeof(line),fp);
lstrcat(end,line);
intw=strlen(end);
end[w-1]='\0';
lstrcat(end,"\r\n");
}
SetDlgItemText(hwnd,IDC_RICHEDIT1,end);
fclose(fp);//关闭文件
}
break;
}
break;
3、文件保存的实现:
caseID_MENUITEMSAVE:
//文本的保存
{
OPENFILENAMEofnb;
charbcFile[MAX_PATH];
ZeroMemory(&ofnb,sizeof(ofnb));
ofnb.lStructSize=sizeof(ofnb);
ofnb.lpstrFile=bcFile;
ofnb.lpstrFile[0]=TEXT('\0');
ofnb.nMaxFile=sizeof(bcFile);
ofnb.lpstrFilter=TEXT("ALL\0*.*\0Text\0*.txt\0");
ofnb.nFilterIndex=1;
ofnb.lpstrFileTitle=NULL;
ofnb.nMaxFileTitle=0;
ofnb.lpstrInitialDir=NULL;
ofnb.hwndOwner=hwnd;
ofnb.Flags=OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST|OFN_OVERWRITEPROMPT;
if(GetSaveFileName(&ofnb))
{
FILE*fp=fopen(".txt","w");//保存所有文件都为txt格式
TCHARbaoc[100000];//保存的最大容量为100000
GetDlgItemText(hwnd,IDC_RICHEDIT1,baoc,sizeof(baoc));
fputs(baoc,fp);
fclose(fp);
}
}
break;
3、退出文本编辑器的实现:
intret=MessageBox(NULL,TEXT("是否把更改保存到新建的文本文档!
!
!
"),TEXT("温馨提示"),MB_YESNO|MB_ICONQUESTION);
if(ret==IDYES)
{
OPENFILENAMEofn;
charszFile[MAX_PATH];
ZeroMemory(&ofn,sizeof(ofn));
ofn.lStructSize=sizeof(ofn);
ofn.lpstrFile=szFile;
ofn.lpstrFile[0]=TEXT('\0');
ofn.nMaxFile=sizeof(szFile);
ofn.lpstrFilter=TEXT("ALL\0*.*\0Text\0*.TXT\0C++\0*.cpp\0");
ofn.nFilterIndex=1;
ofn.lpstrFileTitle=NULL;
ofn.nMaxFileTitle=0;
ofn.lpstrInitialDir=NULL;
ofn.hwndOwner=hwnd;
ofn.Flags=OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;
ofn.lpstrTitle=TEXT("保存");
if(GetSaveFileName(&ofn))
{
FILE*fp;
fp=fopen(szFile,"w");
if(fp==NULL)
{
MessageBox(NULL,TEXT("文件无法保存"),TEXT("呜呜"),MB_OK);
}
TCHARstr[10000];
TCHARend[10000];
memset(end,0,10000);
GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));
fputs(str,fp);
fclose(fp);
}
MessageBox(NULL,TEXT("文件保存成功!
放心关闭!
!
!
"),TEXT("嘻嘻"),MB_OK);
}
EndDialog(hwnd,0);
〔2〕、编辑操作:
1、剪切的实现:
caseID_MENUITEMCUT:
//剪切
{SendDlgItemMessage(hwnd,IDC_RICHEDIT1,WM_CUT,0,0);
//传递对话框中的容首先获取RichEdit中的容,WM_CUT,传递要进行操作的容,0,0为两个WPARAM和LPARAM是约定的消息参数类型。
break;
}
2、复制的实现:
caseID_MENUITEMCOPY:
//复制
{SendDlgItemMessage(hwnd,IDC_RICHEDIT1,WM_COPY,0,0);
//传递对话框中的容首先获取RichEdit中的容,WM_COPY,,传递要进行操作的容,0,0为两个WPARAM和LPARAM是约定的消息参数类型。
break;
}
3、粘贴的实现:
caseID_MENUITEMPASTE:
//粘贴
{SendDlgItemMessage(hwnd,IDC_RICHEDIT1,WM_PASTE,0,0);
break;
}
4、清除的实现:
caseID_MENUITEMEMPTY:
//清除
{
SetDlgItemText(hwnd,IDC_RICHEDIT1,"");
break;
}
5、撤销的实现:
caseID_MENUITEMUNDO:
//“撤销”菜单
{
SendDlgItemMessage(hwnd,IDC_RICHEDIT1,EM_UNDO,0,0);
break;
}
6、删除的实现:
caseID_MENUITEMDELETE:
//删除
{
SendMessage(GetDlgItem(hwnd,IDC_RICHEDIT1),WM_CLEAR,0,0);
}
break;
7、全选的实现:
caseID_MENUITEMSELECTALL:
//全选
{
SendMessage(GetDlgItem(hwnd,IDC_RICHEDIT1),EM_SETSEL,0,-1);
}
break;
8、系统时间的实现:
VOIDCALLBACKMyTimerFun(HWNDhwnd,UINTmessage,UINTiTimerID,DWORDdwTime)
{
SYSTEMTIMEstrLocal;//当前时间
GetLocalTime(&strLocal);
TCHARstr[256];
wsprintf(str,"%04d-%02d-%02d%02d:
%02d:
%02d",strLocal.wYear,strLocal.wMonth,
strLocal.wDay,strLocal.wHour,strLocal.wMinute,strLocal.wSecond);
SetDlgItemText(hwnd,IDC_EDIT2,str);
}
9、查找功能的实现:
intcount=0;
intLine_count=1;
intRow_count=1;
intnum=0;
intflag=0;
TCHARstr1[256];
TCHARtemp1[5000];
TCHARtemp2[5000];
memset(temp1,0,5000);
memset(temp2,0,5000);
memset(str1,0,256);
GetDlgItemText(hwnd,IDC_EDIT_FINDWORD,str1,sizeof(str1));
if(strlen(str1)==0)
{
MessageBox(NULL,TEXT("查找的容为空,请输入容后再查找!
!
!
"),TEXT("呜呜"),MB_OK);
}
else
{
inti=0;
intj=0;
while(str2[i]!
='\0')
{
if((str2[i]=='\n')||(Row_count==63))
{
Line_count++;
Row_count=0;
}
if(str2[i]==str1[j])
{
i++;
j++;
Row_count++;
if(str1[j]=='\0')
{
j=0;
count++;
wsprintf(temp2,"<%i>你要寻找的容在第:
%i行,第:
%i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文本 编辑器 操作系统 课程设计 报告书