当前位置:文档之家› 文本编辑器课程设计报告

文本编辑器课程设计报告

文本编辑器课程设计报告
文本编辑器课程设计报告

目录

一、问题描述-------------------------------------------------------------------------2

1、基本要求----------------------------------------------------------------------2

2、提高要求----------------------------------------------------------------------2

二、需求分析-------------------------------------------------------------------------2

三、概要设计-------------------------------------------------------------------------3

四、详细设计-------------------------------------------------------------------------5

1、文件操作----------------------------------------------------------------------5

2、编辑操作----------------------------------------------------------------------10

3、工具操作----------------------------------------------------------------------19

4、关于操作----------------------------------------------------------------------20

五、编码与调试分析----------------------------------------------------------------20

六、使用说明-------------------------------------------------------------------------22

七、测试结果-------------------------------------------------------------------------22

八、自学知识-------------------------------------------------------------------------26

九、课程设计心得体会-------------------------------------------------------------27

一、问题的描述

设计并编写一个小型文本编辑器,使其具有通常文本编辑器(如Vi、Edlin)应具备的基本功能。

1.基本要求:编辑器应具备对文本文件的打开、保存、新建、查找、插人、删除、修改、字符串替换、统计字数,统计行数等功能,对于超过一屏的长文件,应能够分页显示。设计用户接口命令,实现对文本的编辑。

2.提高要求:可以支持“* ”、“? ”等通配符,支持复制、粘贴等功能,支持多文档同时编辑。设计用户接口命令,实现对文本的编辑。

二、需求分析

文本编辑器的基本功能:

该文本编辑器是用windows编写的一个程序,运行后弹出文本编辑器的主界面,由键盘输入或以打开的方式输入或显示文本文件内容。其中程序的编辑项可对当前的文本进行撤销、删除、剪切、复制、粘贴、在文本里显示当前时间、全选、清除、查找、替换、统计等功能。程序的文件项可以对电脑上txt,c++等格式文件的打开、对当前文本的保存和另存、对当前文本的的新建以及退出文本编辑系统。程序的工具项为背景音乐,为用户提供了优美动听的音乐,仅在用户编辑疲惫乏力的时候尽情的享用。最后在程序的帮助项有对该小型文本编辑器的关于,用来介绍该程序,还有访问链接百度,访问114网页大全,为用户提供查找资料等功能服务。

输入形式:

①直接在文本编辑框中输入文本内容;

②以打开的方式打开并在文本框中显示电脑的上文本。

输出形式:

①对编辑框中尚无文本内容时进行查找、替换、统计等,程序会弹出一

个提示尚无文本信息的小对话框,需输入文本后再进行以上操作。

②对编辑框中已有文本内容后进行查找、替换、统计操作,程序将弹出

与之对应的对话框,根据所弹出的对话框的按键要求进行之后的操作就

可以。保存文件,另存为等功能都异曲同工,撤销、删除、剪切、复制、粘贴、等就直接在主文本编辑框中操作,直接在其显示操作后的文本信

息。

测试数据要求:任意一文本文件。

三、概要设计

(1)抽象数据类型:

直接运用windows中的的窗口类,通过消息响应,调用API函数实现有关对话框的操作功能,以及自己定义一个仅含有成员函数的普通类对文本字符进行查找、替换、统计的辅助操作,对主对话框和副对话框中函数的回调和参数的回显功能。

(2)主程序流程图

(3)模块调用关系:

该文本编辑器函数括:WINAPI Main_Proc(), WINAPI Change_Proc(), WINAPI Find_Proc(), WINAPI Total_Proc(), Main_OnInitDialog();

Change _OnInitDialog(); Find_OnInitDialog(); Total_ OnInitDialog();

Main_OnCommand(); Change_ OnCommand(); Find_ OnCommand(); Total_ OnCommand(),Main_OnClose(),Change_ Main_OnClose();

Find__OnClose(); Total _OnClose(); Main_OnSize(),TCHAR * temp(),

D_change()等函数;其中每个对话框对应一组函数例如主对话框包括

WINAPI Main_Proc(), Main_OnInitDialog(),Main_OnCommand(),

Main_OnClose()函数,Main_Proc()函数通过消息响应调用

Main_OnInitDialog()完成对话框的初始化,通过调用Main_OnCommand()函数完成对对话框中控件以其菜单项的响应,通过调用Main_OnClose()关闭对话框。其它的如查找,替换等副窗口也一样。TCHAR * temp(),函数做回调函数用,返回副对话框中已经改变后的主对话框文本框中的文本内容。D_change()是实现替换功能的函数

其函数调用关系如下:

四、详细设计

〔1〕、文件操作:

1、文件的新建的实现:

int ret=MessageBox(NULL,TEXT("是否把更改保存到新建的文本文档!!!"),TEXT("温馨提示"),MB_YESNO | MB_ICONQUESTION);

if(ret==IDYES) //根据选择如果保存

{

OPENFILENAME ofn; //文件对象

char szFile[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);

}

TCHAR str[10000];

TCHAR end[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、文件打开的实现:

case ID_MENUITEMOPEN: //文本的打开

{

OPENFILENAME ofn;

char szFile[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);

}

TCHAR line[256];

TCHAR end[10000];

memset(line,0,256);

memset(end,0,256);

while(!feof(fp))

{

fgets(line,sizeof(line),fp);

lstrcat(end,line);

int w=strlen(end);

end[w-1]='\0';

lstrcat(end,"\r\n");

}

SetDlgItemText(hwnd,IDC_RICHEDIT1,end);

fclose(fp); //关闭文件

}

break;

}

break;

3、文件保存的实现:

case ID_MENUITEMSA VE: //文本的保存

{

OPENFILENAME ofnb;

char bcFile[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格式

TCHAR baoc [100000]; //保存的最大容量为100000

GetDlgItemText(hwnd,IDC_RICHEDIT1,baoc,sizeof(baoc));

fputs(baoc,fp);

fclose(fp);

}

}

break;

3、退出文本编辑器的实现:

int ret=MessageBox(NULL,TEXT("是否把更改保存到新建的文本文档!!!"),TEXT("温馨提示"),MB_YESNO | MB_ICONQUESTION);

if(ret==IDYES)

{

OPENFILENAME ofn;

char szFile[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);

}

TCHAR str[10000];

TCHAR end[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、剪切的实现:

case ID_MENUITEMCUT: //剪切

{ SendDlgItemMessage(hwnd,IDC_RICHEDIT1,WM_CUT,0,0);

//传递对话框中的内容首先获取RichEdit中的内容,WM_CUT,传递要进行操作的内容,0,0为两个WPARAM和LPARAM是约定的消息参数类型。

break;

}

2、复制的实现:

case ID_MENUITEMCOPY: //复制

{ SendDlgItemMessage(hwnd,IDC_RICHEDIT1,WM_COPY,0,0); //传递对话框中的内容首先获取RichEdit中的内容,WM_COPY,,传递要进行操作的内容,0,0为两个WPARAM和LPARAM是约定的消息参数类型。

break;

}

3、粘贴的实现:

case ID_MENUITEMPASTE: //粘贴

{

SendDlgItemMessage(hwnd,IDC_RICHEDIT1,WM_PASTE,0,0);

break;

}

4、清除的实现:

case ID_MENUITEMEMPTY: //清除

{

SetDlgItemText(hwnd,IDC_RICHEDIT1,"");

break;

}

5、撤销的实现:

case ID_MENUITEMUNDO: //“撤销”菜单

{

SendDlgItemMessage(hwnd,IDC_RICHEDIT1, EM_UNDO, 0, 0);

break;

}

6、删除的实现:

case ID_MENUITEMDELETE: //删除

{

SendMessage(GetDlgItem(hwnd, IDC_RICHEDIT1), WM_CLEAR, 0, 0);

}

break;

7、全选的实现:

case ID_MENUITEMSELECTALL: //全选

{

SendMessage(GetDlgItem(hwnd, IDC_RICHEDIT1), EM_SETSEL, 0, -1);

}

break;

8、系统时间的实现:

VOID CALLBACK MyTimerFun(HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime)

{

SYSTEMTIME strLocal; //当前时间

GetLocalTime(&strLocal);

TCHAR str[256];

wsprintf(str,"%04d-%02d-%02d %02d:%02d:%02d",strLocal.wYear,strLocal.wM onth,

strLocal.wDay,strLocal.wHour,strLocal.wMinute,strLocal.wSecond);

SetDlgItemText(hwnd,IDC_EDIT2,str);

}

9、查找功能的实现:

int count=0;

int Line_count=1;

int Row_count=1;

int num=0;

int flag=0;

TCHAR str1[256];

TCHAR temp1[5000];

TCHAR temp2[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

{

int i=0;

int j=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 列至第:%i 列!!!",count,Line_count,(Row_count-strlen(str1)),(Row_count-1));

strcat(temp1,temp2);

strcat(temp1,"\r\n");

flag=1;

}

}

else

{

i=i-j+1;

j=0;

Row_count++;

}

if(str2[i]=='\0' && flag==1)

{

SetDlgItemText(hwnd,IDC_EDIT2,temp1);

MessageBox(NULL,temp1,TEXT("嘿嘿"),MB_OK);

}

if(str2[i]=='\0' && flag==0)

{

MessageBox(NULL,TEXT("没有你想要找的内容,请重新输入查找的内容"),TEXT("呜呜"),MB_OK);

break;

}

}

}

}

break;

通过简单的字符串比配算法实现其功能。

9、替换功能的实现:

TCHAR *change::D_change(TCHAR S[], TCHAR T1[] ,TCHAR T2[]) //替换功能的主算法

{

int i=0;

int j=0;

int k=0;

int l=0;

TCHAR *S1;

while((S[i]!='\0'))

{

if(S[i]==T1[j])

{

i++;

j++;

count1=i;

}

else

{

i=i-j+1;

j=0;

count1=i;

}

if(T1[j]=='\0')

{

i=i-j;

if(strlen(T1)==strlen(T2))

{

int num1=strlen(T1);

for(k=i;k

{

S[k]=T2[l];

l++;

}

j=0;

l=0;

}

else if(strlen(T1)>strlen(T2))

{

int num2=strlen(T1)-strlen(T2);

int lengthT2=strlen(T2);

for(k=i;k

{

S[k]=S[k+num2];

}

for(k=(strlen(S)-num2);k<=strlen(S);k++) {

S[k]='\0';

}

for(k=i;k<(i+lengthT2);k++)

{

S[k]=T2[l];

l++;

}

j=0;

l=0;

}

else if(strlen(T1)

{

int num3=strlen(T2)-strlen(T1);

S1=new TCHAR[strlen(S)+num3];

for(int k=0;k

{

S1[k]=S[k];

}

for(int k2=i;k2

{

S1[k2]=T2[k2-i];

}

for(int k3=i+strlen(T1);k3

S1[k3+num3]=S[k3];

}

S1[k3+num3]='\0';

if(S[i]=='\0')

{

return S1;

}

else

{

strcpy(S,S1);

j=0;

}

}

}

}

return S;

}

也通过字符算的比配,一一找到后,一一替换,最后返回替换后的文本内容;

9、统计功能的实现:

void Total_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) {

int Line_count=1;

int Row_count=0;

int Total_count=0;

int English_count=0;

int math_count=0;

int other_count=0;

int space_count=0;

int punct_count=0;

TCHAR temp1[256];

TCHAR temp2[256];

memset(temp1,0,256);

memset(temp2,0,256);

int i=0;

while(total2[i]!='\0')

{

if((total2[i]!=' ') && (total2[i]!='\r') && (total2[i]!='\n'))

{

Total_count++;

}

if((total2[i]>='a' && total2[i]<='z') || (total2[i]>='A' && total2[i]<='Z'))

{

English_count++;

}

if(total2[i]>='0' && total2[i]<='9')

{

math_count++;

}

if(total2[i]==33 || total2[i]==34 || total2[i]==39 || total2[i]==44 || total2[i]==46 || total2[i]==58 || total2[i]==59 || total2[i]==63)

{

punct_count++;

}

if(total2[i]==' ')

{

space_count++;

}

if((total2[i]=='\n') || (Row_count==62))

{

Line_count++;

Row_count=0;

}

else

{

Row_count++;

}

i++;

}

other_count=Total_count-English_count-math_count-punct_count;

wsprintf(temp2,"<1>文本的行数为:%i !",Line_count-1);

strcat(temp1,temp2);

strcat(temp1,"\r\n");

memset(temp2,0,256);

wsprintf(temp2,"<2>文本的总字符数为:%i !",Total_count);

strcat(temp1,temp2);

strcat(temp1,"\r\n");

memset(temp2,0,256);

wsprintf(temp2,"<3>文本的英文字符数为:%i !",English_count);

strcat(temp1,temp2);

strcat(temp1,"\r\n");

memset(temp2,0,256);

wsprintf(temp2,"<4>文本的数字字符数为:%i !",math_count);

strcat(temp1,temp2);

strcat(temp1,"\r\n");

memset(temp2,0,256);

wsprintf(temp2,"<5>文本的空格数为:%i !",space_count);

strcat(temp1,temp2);

strcat(temp1,"\r\n");

memset(temp2,0,256);

wsprintf(temp2,"<6>文本的标点符号数为:%i !",punct_count);

strcat(temp1,temp2);

strcat(temp1,"\r\n");

memset(temp2,0,256);

wsprintf(temp2,"<7>文本的其它字符数为:%i !",other_count);

strcat(temp1,temp2);

strcat(temp1,"\r\n");

memset(temp2,0,256);

SetDlgItemText(hwnd,IDC_EDIT1,temp1);

}

通过传参,把文本信息传到副对话框中。然后对文本进行各项简单的统计

〔3〕、工具操作:

1、北京音乐的实现:

case ID_MENU_MUSIC:

{

TCHAR shortPath[MAX_PATH];

GetShortPathName("C:\\Documents and Settings\\user\\桌面\\edit\\邓紫棋- 寂寞星球的玫瑰.mp3",shortPath,sizeof(shortPath)); //获取音乐的途径TCHAR cmd[MAX_PATH+10];

wsprintf(cmd,"play %s",shortPath);

mciSendString(cmd," ",0,NULL);

int ret = MessageBox(NULL,TEXT("你当前正在享受音乐!!!是否要退出"),TEXT("嘻嘻"),MB_YESNO | MB_ICONQUESTION);

if(ret==IDYES)

{

MessageBox(NULL,TEXT("还好听吧!欢迎再欣赏!再见!!!"),TEXT("嘿嘿"),MB_OK);

mciSendString("CLOSE cmd"," ",0,NULL);

break;

}

else

{

break;

}

break;

}

主要是通过mciSendString()API函数的使用。

〔4〕、关于操作:

1、关于对话框的弹出实现:

case ID_MENU_ABOUT:

{

HINSTANCE

hInstance=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);

DialogBox(hInstance, MAKEINTRESOURCE(IDD_ABOUT), NULL, Main_Proc);

break;

}

用DialogBox()函数实现对话框的弹出。

课程设计报告模板)

课程设计报告模板()

————————————————————————————————作者: ————————————————————————————————日期: ?

课程设计(论文)任务书 软件学院软件+电商专业09级(2)班 一、课程设计(论文)题目基本模型机设计与实现 二、课程设计(论文)工作自2011年6月 20 日起至2011年 6月 24日止。 三、课程设计(论文) 地点:计算机组成原理实验室(5#301) 四、课程设计(论文)内容要求: 1.课程设计的目的 通过课程设计的综合训练,在掌握部件单元电路实验的基础上,进一步掌握整机 概念。培养学生实际分析问题、解决问题和动手能力,最终目标是想通过课程设计的形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。 2.课程设计的任务及要求 1)基本要求? (1)课程设计前必须根据课程设计题目认真查阅资料; (2)实验前准备好实验程序及调试时所需的输入数据; (3)实验独立认真完成; (4)对实验结果认真记录,并进行总结和讨论。 2)课程设计论文编写要求 (1)按照书稿的规格撰写打印课设论文 (2)论文包括目录、绪论、正文、小结、参考文献、附录等 (3)正文中要有问题描述、实验原理、设计思路、实验步骤、调试过程与遇到问题的解决方法、总结和讨论等 (4)课设论文装订按学校的统一要求完成 3)课设考核 从以下几方面来考查:

(1)出勤情况和课设态度; (2)设计思路; (3)代码实现; (4)动手调试能力; (5)论文的层次性、条理性、格式的规范性。 4)参考文献 [1]王爱英.计算机组成与结构[M]. 北京:清华大学出版社, 2007. [2] 王爱英. 计算机组成与结构习题详解与实验指导[M]. 北京:清华大学出版社, 2007. 5)课程设计进度安排 内容天数地点 构思及收集资料1图书馆 实验与调试 3 实验室 撰写论文 1 图书馆 6)任务及具体要求 设计实现一个简单的模型机,该模型机包含若干条简单的计算机指令,其中至少包括输入、输出指令,存储器读写指令,寄存器访问指令,运算指令,程序控制指令。学生须根据要求自行设计出这些机器指令对应的微指令代码,并将其存放于控制存储器,并利用机器指令设计一段简单机器指令程序。将实验设备通过串口连接计算机,通过联机软件将机器指令程序和编写的微指令程序存入主存中,并运行此段程序,通过联机软件显示和观察该段程序的运行,验证编写的指令和微指令的执行情况是否符 合设计要求,并对程序运行结果的正、误分析其原因。 学生签名: 亲笔签名 2011年6月20 日 课程设计(论文)评审意见 (1)设计思路:优( )、良()、中( )、一般()、差( ); (2)代码实现:优()、良()、中()、一般()、差();

2020-Linux文版-实验3-Vi编辑器的使用及C编程-学生实验报告模板-P

实验报告 课程名称: Linux操作系统 实验名称:实验3 Vi编辑器的使用及C编程 学生姓名:孙文浩班级计算机 141 学号 学院(系):信息数理学院指导教师:庄丽华 实验时间: 2016 年 9 月 30 日实验成绩: 实验3 Vi编辑器的使用及C编程 一、实验要求 (1)掌握Vi的三种运行模式及切换方法; (2)掌握使用Vi的各种操作命令进行文本文件的编辑; (3)用Vi编写Linux下C程序,掌握gcc编译。 二、实验内容和实验步骤 1、vi编辑器的使用 【操作要求1】首先用合法用户名登陆系统,不保存直接退出。 【操作步骤】 (1)在系统提示符下,输入vi,按回车键,进入vi的界面。 (2)输入:q!不保存直接退出。 【操作要求2】新建文件f1并编辑一段文字进行保存。 【操作步骤】 (1)在系统提示符下输入vi f1,按回车键。 (2)看到vi的界面,输入i,左下角会出现“插入”。 (3)输入一段文字。 10 Basic Linux Networking and Monitoring Commands You Should Know I have listed down 10 basic Linux networking and monitoring commands which each Linux user should know. These Linux basic networking and monitoring commands like hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ethtool are used for viewing the IP address of the Linux server, managing Linux server network adapter configuration, making network connections among Linux servers over telnet and

编译原理课程设计

《编译原理》课程设计大纲 课程编号: 课程名称:编译原理/Compiler Principles 周数/学分:1周/1学分 先修课程:高级程序设计语言、汇编语言、离散数学、数据结构 适用专业:计算机科学与技术专业、软件工程专业 开课学院,系或教研室:计算机科学与技术学院 一、课程设计的目的 课程设计是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,设计题中的问题比平时的练习题要复杂,也更接近实际。编译原理这门课程安排的课程设计的目的是旨在要求学生进一步巩固课堂上所学的理论知识,深化理解和灵活掌握教学内容,选择合适的数据逻辑结构表示问题,然后编制算法和程序完成设计要求,从而进一步培养学生独立思考问题、分析问题、解决实际问题的动手能力。 要求学生在上机前应认真做好各种准备工作,熟悉机器的操作系统和语言的集成环境,独立完成算法编制和程序代码的编写。 设计时间: 开发工具: (1) DOS环境下使用Turbo C; (2) Windows环境下使用Visual C++ 。 (3) 其它熟悉语言。 二、课程设计的内容和要求 设计题一:算术表达式的语法分析及语义分析程序设计。 1.目的

通过设计、编制、调试一个算术表达式的语法及语义分析程序,加深对语法及语义分析原理的理解,并实现词法分析程序对单词序列的词 法检查和分析。 2.设计内容及要求: 算术表达式的文法: 〈无符号整数〉∷= 〈数字〉{〈数字〉} 〈标志符〉∷= 〈字母〉{〈字母〉|〈数字〉} 〈表达式〉∷= [+|-]〈项〉{〈加法运算符〉〈项〉} 〈项〉∷= 〈因子〉{〈乘法运算符〉〈因子〉} 〈因子〉∷= 〈标志符〉|〈无符号整数〉|‘(’〈表达式〉‘)’ 〈加法运算符〉∷= +|- 〈乘法运算符〉∷= *|/ (1) 分别选择递归下降法、算符优先分析法(或简单优 先法)完成以上任务,中间代码选用逆波兰式。 (2) 分别选择LL(1)、LR法完成以上任务,中间代码选 用四元式。 (3) 写出算术表达式的符合分析方法要求的文法,给出 分析方法的思想,完成分析程序设计。 (4) 编制好分析程序后,设计若干用例,上机测试并通 过所设计的分析程序。 设计题二:简单计算器的设计 1.目的 通过设计、编制、调试一个简单计算器程序,加深对语法及语 义分析原理的理解,并实现词法分析程序对单词序列的词法检 查和分析。 2.设计内容及要求 算术表达式的文法:

编译实验报告+源代码

课程设计报告 ( 2013-- 2014年度第1学期) 名称:编译技术课程设计B 题目:简单编译程序的设计与实现院系:计算机系 班级:XXX 学号:XXX 学生姓名:XXX 指导教师:XXX 设计周数:XXX 成绩: 日期:XX 年XX 月

实验一.词法分析器的设计与实现 一、课程设计(综合实验)的目的与要求 1.1 词法分析器设计的实验目的 本实验是为计算机科学与技术专业的学生在学习《编译技术》课程后,为加深对课堂教学内容的理解,培养解决实际问题能力而设置的实践环节。通过这个实验,使学生应用编译程序设计的原理和技术设计出词法分析器,了解扫描器的组成结构,不同种类单词的识别方法。能使得学生在设计和调试编译程序的能力方面有所提高。为将来设计、分析编译程序打下良好的基础。 1.2 词法分析器设计的实验要求 设计一个扫描器,该扫描器是一个子程序,其输入是源程序字符串,每调用一次识别并输出一个单词符号。为了避免超前搜索,提高运行效率,简化扫描器的设计,假设该程序设计语言中,基本字(也称关键词)不能做一般标识符用,如果基本字、标识符和常数之间没有确定的运算符或界符作间隔,则用空白作间隔。 单词符号及其内部表示如表1-1所示,单词符号中标识符由一个字母后跟多个字母、数字组成,常数由多个十进制数字组成。单词符号的内部表示,即单词的输出形式为二元式:(种别编码,单词的属性值)。 表1-1 单词符号及其内部表示

二、设计(实验)正文 1.词法分析器流程图 2.词法分析器设计程序代码 // first.cpp : 定义控制台应用程序的入口点。// #include"stdafx.h" #include #include using namespace std; int what(char a) { if((int(a)>=48)&&(int(a)<=57)) {

课程设计报告【模板】

模拟电子技术课程设计报告设计题目:直流稳压电源设计 专业电子信息科学与技术 班级电信092 学号 200916022230 学生姓名夏惜 指导教师王瑞 设计时间2010-2011学年上学期 教师评分 2010年月日

昆明理工大学津桥学院模拟电子技术课程设计 目录 1.概述 (2) 1.1直流稳压电源设计目的 (2) 1.2课程设计的组成部分 (2) 2.直流稳压电源设计的内容 (4) 2.1变压电路设计 (4) 2.2整流电路设计 (4) 2.3滤波电路设计 (8) 2.4稳压电路设计 (9) 2.5总电路设计 (10) 3.总结 (12) 3.1所遇到的问题,你是怎样解决这些问题的12 3.3体会收获及建议 (12) 3.4参考资料(书、论文、网络资料) (13) 4.教师评语 (13) 5.成绩 (13)

昆明理工大学津桥学院模拟电子技术课程设计 1.概述 电源是各种电子、电器设备工作的动力,是自动化不可或缺的组成部分,直流稳压电源是应用极为广泛的一种电源。直流稳压电源是常用的电子设备,它能保证在电网电压波动或负载发生变化时,输出稳定的电压。一个低纹波、高精度的稳压源在仪器仪表、工业控制及测量领域中有着重要的实际应用价值。 直流稳压电源通常由变压器、整流电路、滤波电路、稳压控制电路所组成,具有体积小,重量轻,性能稳定可等优点,电压从零起连续可调,可串联或关联使用,直流输出纹波小,稳定度高,稳压稳流自动转换、限流式过短路保护和自动恢复功能,是大专院校、工业企业、科研单位及电子维修人员理想的直流稳压电源。适用于电子仪器设备、电器维修、实验室、电解电镀、测试、测量设备、工厂电器设备配套使用。几乎所有的电子设备都需要有稳压的电压供给,才能使其处于良好的工作状态。家用电器中的电视机、音响、电脑尤其是这样。电网电压时高时低,电子设备本身耗供电造成不稳定因家。解决这个不稳定因素的办法是在电子设备的前端进行稳压。 直流稳压电源广泛应用于国防、科研、大专院校、实验室、工矿企业、电解、电镀、充电设备等的直流供电。 1.1直流稳压电源设计目的 (1)、学习直流稳压电源的设计方法; (2)、研究直流稳压电源的设计方案; (3)、掌握直流稳压电源的稳压系数和内阻测试方法。 1.2课程设计的组成部分 1.2.1 设计原理

浙江大学Linux程序设计实验报告

Linux程序设计实验报告1 ——操作系统基本命令使用 一、实验目的 1.通过对Emacs、vi、vim、gedit文本编辑器的使用,掌握在Linux环境下文本文件的编辑方法; 2.通过对常用命令mkdir、cp、cd、ls、mv、chmod、rm等文件命令的操作,掌握Linux操作系统中文件命令的用法。 二、实验任务与要求 1.emacs的使用,要求能新建、编辑、保存一个文本文件 2.vi或vim的使用,要求能新建、编辑、保存一个文本文件 3.gedit的使用,要求能新建、编辑、保存一个文本文件 4.掌握mkdir、cd命令的操作,要求能建立目录、进入与退出目录 5.掌握cp、ls、mv、chmod、rm命令的操作,要求能拷贝文件、新建文件、查看文件、文件重命名、删除文件等操作。 三、实验工具与准备 计算机PC机,Linux Redhat Fedora Core6操作系统 四、实验步骤与操作指导 任务1.学习emacs的使用,要求能新建、编辑、保存一个文本文件 (1)启动emacs (2)输入以下C程序 (3)保存文件为kk.c (4)用emacs打开文件kk.c (5)修改程序 (6)另存为文件aa.txt并退出。 任务2.vi或vim的使用,要求能新建、编辑、保存一个文本文件 (1)点击”应用程序”→ “附件”→“终端”,打开终端,在终端输入命令: [root@localhost root]#vi kk.c 按i键,进入插入状态。 (2)输入以下C程序 #include int main( ) {

printf(“Hello world!\n”); return 0; } 此时可以用Backspace、→、←、↑、↓键编辑文本。 (3)保存文件为kk.c 按Esc键,进入最后行状态,在最后行状态输入:wq保存文件,退出vi。 (4)用vi打开文件kk.c,输入命令: [root@localhost root]#vi kk.c (5)修改程序为: #include int main( ) { printf(" Hello world!\n"); printf("*****************\n"); return 0; } (6)按Esc键,进入最后行状态,在最后行状态输入:wq aa.txt保存文件,如图1所示,另存为文件aa.txt并退出vi。。 图1 程序编辑环境 任务3.gedit的使用,要求能新建、编辑、保存一个文本文件 (1)启动gedit,点击”应用程序”→ “附件”→“文本编辑器”,打开文本编辑器,如图所示。

编译原理课程设计报告_LL(1)分析过程模拟

课程设计(论文)任务书 软件学院学院软件工程专业07-1班 一、课程设计(论文)题目LL(1)分析过程模拟 二、课程设计(论文)工作自 2010 年 6 月 22日起至 2010 年 6月 28 日止。 三、课程设计(论文) 地点: 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)使学生掌握LL(1)模块的基本工作原理; (2)培养学生基本掌握LL(1)分析的基本思路和方法; (3)使学生掌握LL(1)的调试; (4)培养学生分析、解决问题的能力; (5)提高学生的科技论文写作能力。 2.课程设计的任务及要求 1)基本要求: (1)分析LL(1)模块的工作原理; (2)提出程序的设计方案; (3)对所设计程序进行调试。 2)创新要求: 在基本要求达到后,可进行创新设计,如改算法效率。 3)课程设计论文编写要求 (1)要按照书稿的规格打印誊写课程设计论文 (2)论文包括目录、绪论、正文、小结、参考文献、附录等 (3)课程设计论文装订按学校的统一要求完成 4)答辩与评分标准: (1)完成原理分析:20分; (2)完成设计过程(含翻译):40分; (3)完成调试:20分;

(4)回答问题:20分。 5)参考文献: (1)张素琴,吕映芝,蒋维杜,戴桂兰.编译原理(第2版).清华大学出版社 (2)丁振凡.《Java语言实用教程》北京邮电大学出版社 6)课程设计进度安排 内容天数地点 构思及收集资料2图书馆 编程与调试4实验室 撰写论文1图书馆、实验室 学生签名: 2009 年6 月22 日 课程设计(论文)评审意见 (1)完成原理分析(20分):优()、良()、中()、一般()、差();(2)设计分析(20分):优()、良()、中()、一般()、差();(3)完成调试(20分):优()、良()、中()、一般()、差();(4)翻译能力(20分):优()、良()、中()、一般()、差();(5)回答问题(20分):优()、良()、中()、一般()、差();(6)格式规范性及考勤是否降等级:是()、否() 评阅人:职称: 年月日

编译原理 C++编译器课程设计报告

编译器的设计与分析 学号: 1233050143 姓名:李博 专业:计算机科学与技术 __ 课程:编译原理 指导教师:闫红

实验目的 本实验设计的小型编译程序涉及到编译前端的三个阶段:词法分析、语法分析和语义分析生成中间代码 ((四元式),编译程序的重点放在中间代码生成阶段。编译程序的输出结果包括词法分析后的二元式序 列、变量名表;语法分析后的状态栈分析过程显示;语义分析生成中间代码后的四元式程序。整个程序 分为三个部分:(1)词法分析部分(2)语法分析、语义分析及四元式生成部分(3)输出显示部分 实验要求: 本程序仅考虑由下面产生式所定义的程序语句: S →if B then S else S | while B do S | begin L end | A L →S;L | S A →i:= E B →B∧B|B∨B|~B|(B)|I rop i|i

其中,各个非终结符的含义是: S---语句 L—语句串 A—赋值句 B---布尔表达式 E---算术表达式 各个终结符的含义: i---整型变量或常数,布尔变量或常数; rop---为六种关系运算符的代表; ;---起语句分隔作用; :=---赋值符号 ~--逻辑非运算符; ∧----逻辑与运算符; ∨---逻辑或运算符; 规定程序是由一条语句或由begin和end嵌套起来的复合语句组成的,并且规定的语句末加上#@表示程序结束。下面是符合规定的程序示例:begin A:=A+B*C; C:=A+2; while AB do

if M=N THEN C:=D else while A<=D do A:=D end#@ 实验内容: 第一部分:词法分析 一.词法分析的功能: 输入:所给文法的源程序字符串 输出:1.二元组(单词种别,单词符号的属性值)构成的序列 2.关键字: { (相当于Pascal语言中的begin) , if ,else , while , }(相当于 Pascal语言中的end ) 所有的关键字都是小写字母. 3.运算符: + , - , * , / , = , < , <= , == , > , >= ,<> , && ,|| , ! 4.界符: 逗号,分号,左圆括号, 右圆括号, # 5.常数: 在这里只涉及到int型常量 6.其他单词是标识符(ID)和整形常数(NUM),通过以下正规式定义: ID = letter(letter|digit)* NUM = digit digit * 7.空格由空白,制表符和换行符组成,空格一般用来分隔ID,NUM,运算符,界符和关键字,词法分析阶段通常会被过滤掉。 二.词法分析程序设计

课程设计报告模版

课程设计报告模版

《城市排水处理》 课程设计报告 系别:城市建设系 专业班级:给水排水0601班 学生姓名: 指导教师:段泽琪 (课程设计时间: 6月15日—— 6月19日) 华中科技大学武昌分校

目录 1.课程设计目的 (1) 2.课程设计题目描述和要求 (1) 3.课程设计报告内容 (3) 3.1污水处理工艺方案比较 (3) 3.2主要污水处理构筑物选型 (6) 3.3污水处理构筑物的主要设计参数 (7) 3.4污水处理辅助构筑物设计 (8) 3.5污水处理厂平面布置设计 (8) 3.6 污水处理厂高程布置设计 (9) 3.7 设计计算………………………………………………………………………

10 4.总结……………………………………………………………………………页码 参考文献…………………………………………………………………………页码 (要求:目录题头用三号黑体字居中书写,隔行书写目录内容。目录中各级题序及标题用小四号黑体)

1. 课程设计目的 (1) 经过污水处理厂课程设计,巩固学习成果,加深对《水污染控制》课程内容的学习与理解,使学生学习使用规范、手册与文献资料,进一步掌握设计原则、方法等步骤,达到巩固、消化课程的主要内容; (2) 锻炼独立工作能力,对污水处理厂的主体构筑物、辅助设施、计量设备及污水厂总体规划、管道系统做到一般的技术设计深度,培养和提高计算能力、设计和绘图水平; (3) 在教师指导下,基本能独立完成一个中、小型污水处理厂工艺设计,锻炼和提高学生分析及解决工程问题的能力。 2.课程设计题目描述和要求 2.1 设计题目描述 (1) 设计题目 某城市污水处理厂工艺初步设计。 (2) 设计内容 根据任务书所给定的资料,综合运用所学的基础、专业基础和专业知识,设计一个中小型污水处理厂。 ①确定污水处理方法和工艺流程; ②选择各种处理构筑物形式,并进行工艺设计计算(计算书中要附计算草图); ③估算各辅助构筑物的平面尺寸; ④进行污水厂平面布置和高程布置。

java文本编辑器实验报告

Java考核 课程名称Java程序设计 题目名称文本编辑器的设计与实现学生学院计算机学院 专业班级计算机17(2)班 学号3117004479 学生姓名李泽豪 指导教师赵锐 2018 年12 月11 日

一、课程题目 编程实现一个文本编辑器 使其具有新建、打开、保存,编辑(查找、替换、大小写转换等)、统计(字数、行数、字符数等)、格式(字体设置、字体大小、字体颜色、背景颜色等)等功能。 要求:基于JFrame窗体设计、使用菜单进行功能选择。 提示:字体颜色,背景颜色的设置,可使用javax.swing包中的JColorChooser类的静态方法showDialog()调用标准颜色对话框来完成;文件操作可通过javax.swing包中JColorChooser类中的showSaveDialog()、showOpenDialog()方法调用标准的的文件对话框来完成。 二、题目分析与设计 2.1开发环境 使用Eclipse开发软件 2.2需求分析 简单的文本编辑器提供给用户基本纯文本的文字编辑功能,能够读取计算机本地磁盘中的文本内容,将用户文本导入到磁盘中之中,以及实现基本的字体设置(字体,字号,字体颜色)简单的编辑字体的功能,以及统计(字数,行数,字符数),增强视觉体验的背景颜色功能等,简单而实用。而网络上的各种编辑器,有的功能不足(如自带的记事本),而有些编辑器功能太繁杂,仅以日常应用方面来说,一个文本编辑器只需要简单的功能就够了。 2.3功能构架 本程序要构建的文本编辑器按照题目要求,分为四个方面: (1)“文件”菜单:包括“新建”并提示是否保存已编辑内容,“打开”计算机本地磁盘的文本文件,主动“保存”自己已经编辑好的内容到电脑的磁盘或“另存为”新的文件之中,以及“退出”并提示是否保存已编辑的内容。 (2)“编辑”菜单:包括对已编辑文本的一个“查找与替换”功能,对已编辑英文文本的一个“大小写转换”功能。 (3)“格式”菜单:实现对文本的“字体”设置,“字体大小”以及“字体颜色”,还有

编译原理课程设计报告(一个完整的编译器)

编译原理程序设计报告 一个简单文法的编译器的设计与实现专业班级:计算机1406班 组长姓名:宋世波 组长学号: 20143753 指导教师:肖桐 2016年12月

设计分工 组长学号及姓名:宋世波20143753 分工:文法及数据结构设计 词法分析 语法分析(LL1) 基于DAG的中间代码优化 部分目标代码生成 组员1学号及姓名:黄润华20143740 分工:中间代码生成(LR0) 部分目标代码生成 组员2学号及姓名:孙何奇20143754 分工:符号表组织 部分目标代码生成

摘要 编译器是将便于人编写,阅读,维护的高级计算机语言翻译为计算机能解读、运行的低阶机器语言的程序。编译是从源代码(通常为高阶语言)到能直接被计算机或虚拟机执行的目标代码(通常为低阶语言或机器语言)的翻译过程。 一.编译器的概述 1.编译器的概念 编译器是将便于人编写,阅读,维护的高级计算机语言翻译为计算机能解读、运行的低阶机器语言的程序。编译器将原始程序作为输入,翻译产生使用目标语言的等价程序。源代码一般为高阶语言如Pascal、C++、Java 等,而目标语言则是汇编语言或目标机器的目标代码,有时也称作机器代码。 2.编译器的种类 编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高阶语言作为输入,输出也是高阶语言的编译器。例如: 自动并行化编译器经常采用一种高阶语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语

课程设计说明书(或课程设计报告)书写说明

课程设计说明书(或课程设计报告)书写说明 (要求手写,不用打印) 1 内容要求 1.1 目录 1.2 正文 正文:正文内容层次序号为: 1、1.1、1.1.1……。 正文内容一般为: (1)选题背景:说明本课题应解决的主要问题及应达到的技术要求;简述本设计的指导思想。 (2)方案论证(设计理念):说明设计原理(理念)并进行方案选择,阐明为什么要选择这个设计方案以及所采用方案的特点。 (3)过程论述:对设计工作的详细表述。要求层次分明、表达确切。 (4)结果分析:对研究过程中所获得的主要的数据、现象进行定性或定量分析,得出结论和推论。 (5)结论或总结:对整个研究工作进行归纳和综合。 (6)课程设计心得体会。 1.3 参考文献 2. 图纸要求: 理工类:图面整洁,布局合理,线条粗细均匀,圆弧连接光滑,尺寸标注规范,标题栏规范,文字注释必须使用工程字书写;必须按国家规定标准或工程要求绘制。 课程设计说明书(报告)中图表、公式一律采用阿拉伯数字连续编号。图序及图名置于图的下方;表序及表名置于表的上方;说明书(报告)中的公式编号,用括号括起来写在右边行末,其间不加虚线。 课程设计说明书(报告)要求文字通顺,语言流畅,无错别字,不得使用铅笔书写。按学校确定的统一封皮装订。

3. 格式要求 (1)正文中各一级标题用黑体4号字,二级标题用黑体小4号; (2)正文内容其余用宋体小4号字,数字及符号用新罗马字体;首行空2个字符,两端对齐。 (3)图及标要有标题,按照顺序排序,标题宋体5号字,数字及符号用新罗马字体,居中对齐; (4)参考文献格式: 连续出版物:[序号] 作者.文题.刊名,年,卷号(期号):起~止页码 专(译)著:[序号] 作者.书名(,译者).出版地:出版者,出版年. 起~止页 码 论文集:[序号] 作者.文题. 见(in):编者,编(eds).文集名.出版地:出 版者,出版年. 起~止页码 学位论文:[序号] 姓名.文题:[XX学位论文].授予单位所在地:授予单位,授 予年. 起~止页码 专利:[序号] 申请者.专利名.国名,专利文献种类,专利号,出版日期 技术标准:[序号] 发布单位.技术标准代号.技术标准名称.出版地:出版者,出 版日期 报纸文献:[序号] 著者.文献题名.报纸名.出版日期(版面次序) 电子文献:[序号] 著者.文献题名.电子文献类型标示/载体类型标示.文献网址 或出处,更新引用日期 例如: [1]陈建军,车建文,陈勇. 具有频率和振型概率约束的工程结构动力优化设计. 计算力学学报,2001,18(1):74~80 [2]M. A. Nadkarni,C. K. Nair,V. N. Pandey,et al.Characterization of alpha-galactosidase from corynebacterium murisepticum and mechanism of its induction. J Gen App Microbiol,1992,38:223~234 [3]华罗庚,王元.论一致分布与近似分析:数论方法(Ⅰ).中国科学,1973, (4):339~357 [4]竺可桢.物候学.北京:科学出版社,1973. 16~21 [5]霍夫斯塔主编.禽病学:下册.第7版.胡祥壁译.北京:农业出版社, 1981.798~799 [6]S. P. Timoshenko.Theory of plate and shells.2nd ed.New York:McGraw-Hil1, 1959.17~36

文本编辑器c++实验报告附源代码

四川大学软件学院 实验报告 课程名称数据结构实验课时8 实验项目文本编辑器实验时间12到14周实验目的了解c++类的封装和KMP算法。 实验环境 Windows平台 VC6.0++ 实验内容(算法、程序、步骤和方法) 部分函数创建思想: 创建过程如下: a、定义LinkList指针变量*temp: LinkList *temp; b、定义文本输入变量ch,记录文本行数变量j,记录每行字符数变量i; c、申请动态存储空间:head->next=(LinkList *)malloc(sizeof(LinkList)); d、首行头指针的前驱指针为空:head->pre=NULL; 首行指针:temp=head->next; 首行指针的前驱指针也为空:temp->pre=NULL; 定义没输入字符时文章长度为0:temp->length=0; 初始化为字符串结束标志,防止出现乱码:for(i=0;i<80;i++) temp->data[i]='\0'; e、利用循环进行文本输入 for(j=0;jdata[i]=ch; //给temp指向的行赋值 ···· temp->length++;//行中字符长度加1 if(ch=='#') {NUM=j; break; //文章结束时,Num来记录整个文章的行数 }}} 在字符输入的过程中,如果在单行输入的字符超过了80个字符, 则需要以下操作: 输入字符数大于80,重新分配空间建立下一行 temp->next=(LinkList *)malloc(sizeof(LinkList)) ;

(重庆理工大学计算机学院)编译原理课程设计报告

编译原理课程设计报告 实验名称编译原理课程设计 班级 学号 姓名 指导教师 实验成绩 2013 年06月

一、实验目的 通过设计、编写和调试,将正规式转换为不确定的有穷自动机,再将不确定的有穷自动机转换为与之等价的确定的有穷自动机,最后再将确定有穷自动机进行简化。 通过设计、编写和调试构造LR(0)项目集规范簇和LR分析表、对给定的符号串进行LR分析的程序,了解构造LR(0)分析表的步骤,对文法的要求,能够从文法G出发生成LR(0)分析表,并对给定的符号串进行分析。 二、实验内容 正规式——>NFA——>DFA——>MFA 1.正规式转化为不确定的有穷自动机 (1)目的与要求 通过设计、编写和调试将正规式转换为不确定的有穷自动机的程序,使学生了解Thompson算法,掌握转换过程中的相关概念和方法,NFA的表现形式可以是表格或图形。 (2)问题描述 任意给定一个正规式r(包括连接、或、闭包运算),根据Thompson算法设计一个程序,生成与该正规式等价的NFA N。 (3)算法描述 对于Σ上的每个正规式R,可以构造一个Σ上的NFA M,使得L(M)=L(R)。 步骤1:首先构造基本符号的有穷自动机。 步骤2:其次构造连接、或和闭包运算的有穷自动机。

(4)基本要求 算法实现的基本要求是: (1) 输入一个正规式r; (2) 输出与正规式r等价的NFA。(5)测试数据 输入正规式:(a|b)*(aa|bb)(a|b)* 得到与之等价的NFA N

(6)输出结果 2.不确定的有穷自动机的确定化 (1)目的与要求 通过设计、编写和调试将不确定的有穷自动机转换为与之等价的确定的有穷自动机的程序,使学生了解子集法,掌握转换过程中的相关概念和方法。DFA的表现形式可以是表格或图形。(2)问题描述 任意给定一个不确定的有穷自动机N,根据算法设计一个程序,将该NFA N变换为与之等价的DFA D。 (3)算法描述 用子集法将NFA转换成接受同样语言的DFA。 步骤一:对状态图进行改造 (1) 增加状态X,Y,使之成为新的唯一的初态和终态。从X引ε弧到原初态结点, 从原终态结 点引ε弧到Y结点。 (2) 对状态图进一步进行如下形式的改变

数据结构课程设计——文字编辑实验报告

课程设计报告课程设计题目:文章编辑 姓名杨博 学号201520220205 班级1522202 指导教师邹国华 2016年6月30日

东华理工大学 课程设计评分表 学生姓名:杨博班级:1522202 学号:201520220205 课程设计题目:文章编辑 项目内容满分实评 选题能结合所学课程知识、有一定的能力训练。符合选题要求 (5人一题) 10 工作量适中,难易度合理10 能力水平能熟练应用所学知识,有一定查阅文献及运用文献资料能力10 理论依据充分,数据准确,公式推导正确10 能应用计算机软件进行编程、资料搜集录入、加工、排版、 制图等 10 能体现创造性思维,或有独特见解10 成果质量总体设计正确、合理,各项技术指标符合要求。10 说明书综述简练完整,概念清楚、立论正确、技术用语准确、 结论严谨合理;分析处理科学、条理分明、语言流畅、结构 严谨、版面清晰 10 设计说明书栏目齐全、合理,符号统一、编号齐全。格式、 绘图、表格、插图等规范准确,符合国家标准 10 有一定篇幅,字符数不少于5000 10 总分100 指导教师评语: 指导教师签名: 2016年6月30 日

实验题目:简单的文本编辑器 1、题目及要求 名称:简单的文本编辑器 内容:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章, 每行最多不超过80个字符,共N行。 要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数; (2)统计某一字符串在文章中出现的次数,并输出该次数; (3)删除某一字符或者子串,并将后面的字符前移。 (4)插入某一字符或者子串。 (5)查找某一字符或者子串。 存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。 输出形式: (1)分行输出用户输入的各行字符; (2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数" (3)输出删除某一字符串后的文章。 2、对题目的大概理解: 本程序应实现以下功能: (1)文章内容的输入:包括字母、标点符号、数字、空格等; (2)文章内容的统计:包括文章中大写字母、小写字母、数字、标点符号、空格以 及文章所有字数的个数的统计; (3)文章内容的处理:包括对文章内容的查找、删除以及对指定位置进行插入操作,其中在查找的过程中统计出该字符或字符串在文章中出现的次数; 1、问题分析 本程序是对一段英文文章的内容进行处理,存储方式采用链式存储,没有文件操作,故本程序对其文本内容的所有操作都是在链表中进行的。对于文本的输入,采用头插法将文本信息存储到链表已申请好的存储空间中,在此部分设计中最大的问题在于输入文章过程中输 入的字符数大于80时如何换行;对于文本内容的统计,使用循环对已存储的文章进行匹配,大写字母数、小写字母数、空格数、数字数直接通过比较即可得到,标点符号通过ASCⅡ比较即可得到;对于文本内容的处理,查找部分仍是使用循环对已存储的文章进行匹配,判断需要查找的字符或者字符串是否与文章中某部分内容相同,如果存在相同的记录相同的个数及位置并输出个数及位置。删除部分先使用程序的查找功能对文章中需要删除的字符或者字 符串进行查找,然后对其进行删除。插入部分为通过输入的插入位置(行、列)将字符或者 字符串插入到文章制定位置。 一、数据结构选择和概要设计

编译原理课程设计报告

2011-2012学年第二学期 《编译原理》课程设计报告 学院:计算机科学与工程学院 班级: 学生姓名:学号: 成绩: 指导教师: 时间:2012年5 月

目录 一、课程设计的目的 ---------------------------------------------------------------- - 1 - 二、课堂实验及课程设计的内容 -------------------------------------------------- - 1 - 2.1、课堂实验内容-------------------------------------------------------------- - 1 - 2.2、课程设计内容-------------------------------------------------------------- - 1 - 三、visual studio 2008 简介------------------------------------------------------- - 2 - 四、问题分析及相关原理介绍 ----------------------------------------------------- - 3 - 4.1、实验部分问题分析及相关原理介绍 ---------------------------------- - 3 - 4.1.1、词法分析功能介绍及分析------------------------------------- - 3 - 4.1.2、语法分析功能介绍及分析------------------------------------- - 3 - 4.1.3、语义分析功能介绍及分析------------------------------------- - 4 - 4.2、课程设计部分问题分析及相关原理介绍 ---------------------------- - 5 - 4.2.1、编译程序介绍 ----------------------------------------------------- - 5 - 4.2.2、对所写编译程序的源语言的描述(C语言) -------------- - 6 - 4.2.3、各部分的功能介绍及分析 -------------------------------------- - 7 - 4.3、关键算法:单词的识别-------------------------------------------------- - 8 - 4.3.1、算法思想介绍 ----------------------------------------------------- - 8 - 4.3.2、算法功能及分析 -------------------------------------------------- - 8 - 五、设计思路及关键问题的解决方法 ------------------------------------------ - 10 - 5.1、编译系统------------------------------------------------------------------ - 10 - 5.1.1、设计思路 --------------------------------------------------------- - 10 - 5.2、词法分析器总控算法--------------------------------------------------- - 12 - 5.2.1、设计思路 --------------------------------------------------------- - 12 - 5.2.2、关键问题及其解决方法 --------------------------------------- - 13 - 六、结果及测试分析-------------------------------------------------------------- - 14 - 6.1、软件运行环境及限制--------------------------------------------------- - 14 - 6.2、测试数据说明------------------------------------------------------------ - 14 - 6.3、运行结果及功能说明--------------------------------------------------- - 16 - 6.4、测试及分析说明--------------------------------------------------------- - 16 - 七、总结及心得体会 --------------------------------------------------------------- - 17 - 7.1、设计过程------------------------------------------------------------------ - 17 - 7.2、困难与收获 ------------------------------------------------------------- - 17 - 八、参考文献 ------------------------------------------------------------------------ - 18 -

课程设计报告撰写格式

(此文档为word格式,下载后您可任意编辑修改!) 学院:计算机工程学院 专业:计算机科学与技术 班级:12计1ZS 学号: 姓名:缪一帆 指导老师姓名:蔡秋茹

2015 年 03 月 《课程设计》报告要求 一、打渔晒网 1.问题陈述 中国有句俗语叫“三天打鱼两天晒网”。某人从2000年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是在“打渔”,还是在“晒网”? 2.程序代码 #include2) if(fun(year)) a=1; if(month>=2) sum_day+=31; if(month>=3) sum_day+=28; if(month>=4) sum_day+=31; if(month>=5) sum_day+=30; if(month>=6) sum_day+=31;

if(month>=7) sum_day+=30; if(month>=8) sum_day+=31; if(month>=9) sum_day+=31; if(month>=10) sum_day+=30; if(month>=11) sum_day+=31; if(month>=12) sum_day+=30; sum_day=sum_day+a+day; return sum_day; } int sumyear(int year) { int sum_year=0,i; for(i=2000;i

相关主题
文本预览
相关文档 最新文档