文档库 最新最全的文档下载
当前位置:文档库 › 实验5 文本编辑器

实验5 文本编辑器

实验5  文本编辑器
实验5  文本编辑器

实验5 文本编辑器

实验目的:

(l) 理解和掌握字节流的类以及它们的使用特点 ;

(2) 理解和区分字节流和字符流 ;

(3) 了解和运用字节流和字符流进行文件复制。

实验任务:

设计一个简单的文本编辑器 , 可以实现多文件处理、实现文件的创建、浏览、编辑( 允许文本复制、修改、删除 ) 、对己经修改的文件进行保存或以另外的文件名称保存。实验步骤:

打开 Eclipse, 在己有工程 Chapter14.jpx 中 , 按照下列要求完成实验 :

要求:

设计一个简单的文本编辑器 , 可以实现多文件处理、实现文件的创建、浏览、编辑( 允许对文件复制和修改 ) 、对己经修改的文件可以进行保存或以另外的文件名称保存。阅读和分析程序TextEditor.java, 见程序清单2-6,将程序中的|代码 1|~|代码 7|处补充完整 , 观察运行结果。

程序清单2-6 TextEditor.java

//TextEditor.java

import javax.swing.*;

import java.awt.event.*;

import javax.swing.event.*;

import java.awt.*;

import java.io.*;

import javax.swing.text.Document;

public class TextEditor extends JFrame{

JDesktopPane desktopPane;

//定义菜单组件

JMenuBar menuBar;

JMenu fileMenu,helpMenu;//定义文件菜单、帮助菜单

JMenuItem newItem,openItem,saveItem,othersaveItem,closeItem,exitItem;

//定义文件菜单的:新建菜单项、打开菜单项、保存菜单项、另存菜单项、关闭菜单项、//退出菜单项

JMenuItem aboutItem;//定义帮助菜单的:关于菜单项

StringBuffer buffer=new StringBuffer();//定义一个字符串缓冲区;

File currentFile;//当前处理的文件;

int status;//记录当前状态0:新建、1:打开、2:保存、3:另存;4:关闭;

DisplayFrame currentFrame;//当前打开的窗口

public TextEditor() {

super("文本编辑器");

Container container=getContentPane();

desktopPane=new JDesktopPane();

container.add(desktopPane);

createMenu();

setJMenuBar(menuBar);

}

public void createMenu(){

//定义菜单条;

menuBar=new JMenuBar();

//定义文件菜单

fileMenu=new JMenu("文件");

//定义文件菜单的:新建菜单项、打开菜单项、保存菜单项、另存菜单项、关闭菜单//退出菜单项

//定义新建菜单项

newItem=new JMenuItem("新建");

newItem.addActionListener(new NewFileListener());

//定义打开菜单项

openItem=new JMenuItem("打开");

openItem.addActionListener(new OpenFileListener());

saveItem=new JMenuItem("保存");

saveItem.addActionListener(new SaveFileListener());

othersaveItem=new JMenuItem("另存为");

othersaveItem.addActionListener(new OtherSaveFileListener());

closeItem=new JMenuItem("关闭");

closeItem.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

if(e.getSource()==closeItem){

currentFrame.dispose();

}

}

});

exitItem=new JMenuItem("退出");

exitItem.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

System.exit(0);

}

});

//添加菜单项到文件菜单中;

fileMenu.add(newItem);

fileMenu.add(openItem);

fileMenu.addSeparator();

fileMenu.add(saveItem);

fileMenu.add(othersaveItem);

fileMenu.addSeparator();

fileMenu.add(closeItem);

fileMenu.add(exitItem);

//定义帮助菜单

helpMenu=new JMenu("帮助");

//定义帮助菜单的:关于菜单项

aboutItem=new JMenuItem("关于");

aboutItem.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

if(e.getSource()==aboutItem){

JOptionPane.showMessageDialog(null,"TextEditor 1.1",

"版本",https://www.wendangku.net/doc/a817799840.html,RMATION_MESSAGE);

}

}

});

//添加菜单项到帮助菜单中;

helpMenu.add(aboutItem);

//将文件菜单和帮助菜单加入到菜单条中;

menuBar.add(fileMenu);

menuBar.add(helpMenu);

}//end createMenu method;

public File chooseFile(int chooseMode){

//从选择文件对话框中选择文件,chooseMode为选择模式

//1:为文件打开对话框模式,2:为文件保存对话框模式;

JFileChooser filechooser=new JFileChooser();

filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);

int result=0;

switch(chooseMode){

case 1:

result =代码1;

//按照文件打开对话框模式选择文件

break;

case 2:

result=代码2;

//按照文件保存对话框模式选择文件

break;

}

if(result==filechooser.CANCEL_OPTION) return null;

File fileName=filechooser.代码3;//从对话框中选择文件,赋值给fileName; return fileName;//返回选定的文件;

}

public void saveFile(File file,int saveMode) throws IOException{

//保存文件fileName,saveMode是保存文件模式:

//1:新建文件的保存;2:将修改的已有文件保存;

File fileName=null;

switch(saveMode){

case 0:fileName=chooseFile(2);

if(fileName.createNewFile()!=true) return;

break;

case 1:fileName=file;break;

default:return;

}

currentFile=fileName;

if(fileName.exists()!=true) return;//文件不存在,则返回;

BufferedWriter input=new BufferedWriter(代码4);

//将文件fileName写入到字符缓冲写入器input中;

input.write(buffer.toString(),0,buffer.length()-1);

//将buffer字符串写入到字符缓冲写入器input中

System.err.println(buffer.length());

if(input!=null)

input.close();

status=1;

}

public void showFile(File fileName,DisplayFrame contentFrame){ //将指定文件fileName的内容在窗口contentFrame内显示出来。

try{

BufferedReader output=new BufferedReader(代码5);

//将文件fileName读到字符缓冲读取器output中;

String text;

buffer=new StringBuffer();

while((text=代码6)!=null)//依次访问文件的每一行;

buffer.append(text+”\n”);//将每一行添加到buffer中;

contentFrame.displayArea.setText(buffer.toString());

//将buffer的字符串在contentFrame窗口中显示出来;

contentFrame.setTitle(fileName.getName());//改变窗口的标题;

代码7;//关闭字符缓冲流output;

}

catch(IOException ex){

JOptionPane.showMessageDialog(null,"错误发生!");

}

catch(NullPointerException ex3){

JOptionPane.showMessageDialog(null,"警告!");

}

}

public static void main(String[] args) {

TextEditor texteditor = new TextEditor();

texteditor.setSize(400,300);

texteditor.setVisible(true);

texteditor.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }//end main

class NewFileListener implements ActionListener{

public void actionPerformed(ActionEvent e){//新建

DisplayFrame txtFrame=new DisplayFrame();

currentFrame=txtFrame;

txtFrame.setTitle("新建文件");

desktopPane.add(txtFrame);

status=0;

}

}//end class newFileListener;

class OpenFileListener implements ActionListener{

public void actionPerformed(ActionEvent e){//打开文件监视接口;

File fileName=chooseFile(1);//打开模式打开文件;

currentFile=fileName;

try{

if(fileName.exists()){

DisplayFrame contentFrame=new DisplayFrame();

currentFrame=contentFrame;

desktopPane.add(contentFrame);

showFile(fileName,contentFrame);

}//end if

status=1;

}catch(Exception ex){}

}//end actionPerformed

}//end class openFileListener;

class SaveFileListener implements ActionListener{

public void actionPerformed(ActionEvent e){//保存处理

if (e.getSource() == saveItem) {

try {

saveFile(currentFile, status);

}

catch (IOException ex) {

JOptionPane.showMessageDialog(null, "保存文件失败!!!!"); }

catch(Exception ex){ }

}

}

}//end class SaveFileListener;

class OtherSaveFileListener implements ActionListener{

public void actionPerformed(ActionEvent e){//另存处理;

if(e.getSource()==othersaveItem){

File fileName=chooseFile(2);

BufferedWriter output=null;

BufferedReader input=null;

try{

if(fileName.exists()!=true) fileName.createNewFile();

input = new BufferedReader(new FileReader(currentFile));

output = new BufferedWriter(new FileWriter(fileName)); String ch;

while ((ch=input.readLine())!=null) {

output.write(ch);

output.newLine();

}

input.close();

output.close();

currentFrame.dispose();//将源文件显示窗口关闭;

DisplayFrame contentFrame=new DisplayFrame();

desktopPane.add(contentFrame);//创建新的显示窗口;

currentFrame=contentFrame;//新窗口设置为当前显示窗口;

currentFile=fileName;

showFile(fileName,contentFrame);

//在窗口contentFrame中显示文件fileName;

}catch(IOException ex){

JOptionPane.showMessageDialog(null,"文件另存失败!!!!");

}

}//end outer if

}//end actionPerformed method;

}//end class OtherSaveListener;

class DisplayFrame extends JInternalFrame implements DocumentListener{

JTextArea displayArea;

public DisplayFrame() {

super("文本内容:", true, true, true, true);

displayArea = new JTextArea(8, 30);

displayArea.getDocument().addDocumentListener(this);

getContentPane().add(displayArea);

pack();

setVisible(true);

}

public void insertUpdate(DocumentEvent e) {

buffer=new StringBuffer(displayArea.getText());

displayArea.setCaretPosition(displayArea.getDocument().getLength());

}

public void removeUpdate(DocumentEvent e) {

buffer=new StringBuffer(displayArea.getText());

displayArea.setCaretPosition(displayArea.getDocument().getLength());

}

public void changedUpdate(DocumentEvent e) {

//Plain text components don't fire these events.

}

}//end DisplayFrame.java

}//end class TextEditor.java

思考

(1) 观察程序中的类 SaveFileListener 和类 OtherSaveFileListener 的定义 , 它们都有处理保存文件数据的功能 , 问在具体实现上 , 它们有什么不同 ?

(2) 在 OtherSaveFileListener 类中的 actionPerformed() 方法中有语句 :

output = new BufferedWriter(new FileWriter(fileName));

如果将该语句改写成:

output = new BufferedWriter(new FileWriter(filename, true));

程序是否可以正常运行 , 如果不能正常运行 , 原因是什么 ?

(3) 在定义 OtherSaveFileListener 类的 actionPerformed() 方法中 , 采用了字符缓冲读写器 (BufferedReader 和 BufferedWriter), 来实现文件数据的读取和写入。如果在该方法中改用字节缓冲输入和输出流 (BufferedInputstream 和 BuferedOutputstream) 来实现文件数据的读取和写入 , 该如何改写这个 actionPerformed() 方法 ? 请写出。

(4) 如果程序中没有定义 BufferedReader 和 BufferedWriter 字符缓冲读写器 , 那么可以通过 FileReader 和 FileWriter 文件读写器直接实现文件的读取和写入吗 ? 程序中字符缓冲读写器的作用是什么 ?

MATLAB基本操作实验报告

南昌航空大学 数学与信息科学学院 实验报告 课程名称:数学实验 实验名称: MATLAB基本操作 实验类型:验证性■综合性□ 设计性□ 实验室名称:数学实验室 班级学号: 10 学生姓名:钟 X 任课教师(教师签名): 成绩: 实验日期: 2011-10- 10

一、实验目的 1、熟悉MATLAB基本命令与操作 2、熟悉MATLAB作图的基本原理与步骤 3、学会用matlab软件做图 二、实验用仪器设备、器材或软件环境 计算机MATLAB软件 三、实验原理、方案设计、程序框图、预编程序等 问题1:在区间【0,2π】画sinx 实验程序: >> x=linspace(0,2*pi,30); >> y=sin(x); >> plot(x,y) 问题2:在【0,2π】用红线画sinx,用绿圈画cosx,实验程序:

>> x=linspace(0,2*pi,30); >> y=sin(x); >> z=cos(x); >> plot(x,y,'r',x,z,'co') >> 问题3:在【0,π】上画y=sinx的图形。 实验程序: >> ezplot('sin(x)',[0,pi]) >> 问题4:在【0,π】上画x=cos3t,y=sin3t星形图形。

实验程序: >> ezplot('cos(t).^3','sin(t).^3',[0,pi]) >> 问题5:[-2,0.5],[0,2]上画隐函数 实验程序: >> ezplot('exp(x)+sin(x*y)',[-2,0.5,0,2]) >> 问题6:在[-2,2]范围内绘制tanh的图形。实验程序: >> fplot('tanh',[-2,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

图的遍历操作实验报告

. .. . .. .. 实验三、图的遍历操作 一、目的 掌握有向图和无向图的概念;掌握邻接矩阵和邻接链表建立图的存储结构;掌握DFS及BFS对图的遍历操作;了解图结构在人工智能、工程等领域的广泛应用。 二、要求 采用邻接矩阵和邻接链表作为图的存储结构,完成有向图和无向图的DFS 和BFS操作。 三、DFS和BFS 的基本思想 深度优先搜索法DFS的基本思想:从图G中某个顶点Vo出发,首先访问Vo,然后选择一个与Vo相邻且没被访问过的顶点Vi访问,再从Vi出发选择一个与Vi相邻且没被访问过的顶点Vj访问,……依次继续。如果当前被访问过的顶点的所有邻接顶点都已被访问,则回退到已被访问的顶点序列中最后一个拥有未被访问的相邻顶点的顶点W,从W出发按同样方法向前遍历。直到图中所有的顶点都被访问。 广度优先算法BFS的基本思想:从图G中某个顶点Vo出发,首先访问Vo,然后访问与Vo相邻的所有未被访问过的顶点V1,V2,……,Vt;再依次访问与V1,V2,……,Vt相邻的起且未被访问过的的所有顶点。如此继续,直到访问完图中的所有顶点。 四、示例程序 1.邻接矩阵作为存储结构的程序示例

#include"stdio.h" #include"stdlib.h" #define MaxVertexNum 100 //定义最大顶点数 typedef struct{ char vexs[MaxVertexNum]; //顶点表 int edges[MaxVertexNum][MaxVertexNum]; //邻接矩阵,可看作边表int n,e; //图中的顶点数n和边数e }MGraph; //用邻接矩阵表示的图的类型 //=========建立邻接矩阵======= void CreatMGraph(MGraph *G) { int i,j,k; char a; printf("Input VertexNum(n) and EdgesNum(e): "); scanf("%d,%d",&G->n,&G->e); //输入顶点数和边数 scanf("%c",&a); printf("Input Vertex string:"); for(i=0;in;i++) { scanf("%c",&a); G->vexs[i]=a; //读入顶点信息,建立顶点表 }

实验3:文本编辑器vi

实验三:文本编辑器vi 1实验目的 通过实验掌握Linux操作系统的文本编辑器vi。 2实验设备 硬件:PC机一台 软件:Windows98/XP/2000系统,VMware Workstation6.0,Red Hat Linux 3实验内容 (1)v i,vim的使用。 (2)修改/etc/inittab文件。 4实验预习要求 仔细阅读参考书: 【1】鸟哥的Linux私房菜基础学习篇第三版,人民邮电出版社,鸟哥【2】嵌入式Linux系统开发标准教程,人民邮电出版社,华清远见嵌入式培训中心 【3】嵌入式Linux应用程序开发标准教程,人民邮电出版社,华清远见嵌入式培训中心 关于vi的部分。 5实验步骤 (1)通过vi新建文件。 (2)分别在一般模式,编辑模式和命令模式下测试vi的使用。 6实验重点:

(1)vim简介 系统管理员的重要工作就是修改与设定某些重要软件的配置文件,因此至少得要学会一种以上的命令界面文本编辑器。在所有的Linux distributions 上都会有的一套文字编辑器就是vi,而且很多软件默认的也是使用vi 为他们编辑接口。 vim 是高级版本的vi ,vim 不但可以用不同颜色显示文字内容,还能够进行诸如shell script, C program 等程序的编辑功能。 为何要学vim ●所有的Unix Like 系统都会内建vi 文本编辑器,其他的文本编辑器则不 一定会存在; ●很多软件的编辑接口都会主动调用vi (例如crontab, visudo, edquota 等 指令); ●vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性, 方便程序设计; ●因为程序简单,编辑速度相当快速。 (2)vi的使用 基本上vi 共分为三种模式,分别是“一般模式”、“编辑模式”和“命令模式”。这三种模式的作用分别是: ●一般模式:以vi 打开一个文档就直接进入一般模式(这是默认的模式)。 在这个模式中,你可以使用“上下左右”键来移动光标,可以使用“删除字符”或“删除整行”来处理文档内容,也可以使用“复制、粘贴”

浙江大学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,点击”应用程序”→ “附件”→“文本编辑器”,打开文本编辑器,如图所示。

实验报告1windows的基本操作范例

实验名称:Windows的基本操作 一、实验目的 1.掌握桌面主题的设置。 2.掌握快捷方式的创建。 3.掌握开始菜单的组织。 4.掌握多任务间的数据传递——剪贴板的使用。 5.掌握文件夹和文件的创建、属性查看和设置。 6.掌握文件夹和文件的复制、移动和删除与恢复。 7.熟悉文件和文件夹的搜索。 8.熟悉文件和文件夹的压缩存储和解压缩。 二、实验环境 1.中文Windows 7操作系统。 三、实验内容及步骤 通过上机完成实验4、实验5所有内容后完成该实验报告 1.按“实验4--范例内容(1)”的要求设置桌面,将修改后的界面复制过来。 注:没有桌面背景图“Autumn”的,可选择其它背景图。 步骤:在桌面空白区域右击,选择菜单中的“个性化”,在弹出的窗口中点击“桌面背景”,在背景栏内选中“某一张图片”,单击“确定”。 修改后的界面如下图所示: 2.将画图程序添加到“开始”菜单的“固定项目列表”上。 步骤:右击“开始/所有程序/附件”菜单中的画图程序项,在弹出的快捷菜单中选“附到「开始」菜单”命令。 3.在D盘上建立以“自己的学号+姓名”为名的文件夹(如01108101刘琳)和其子文件 夹sub1,然后:

步骤:选定D:\为当前文件夹,选择“文件/新建/文件夹”命令,并将名字改为“学号+姓名”;选定“ D:\学号+姓名”为当前文件夹,选择“文件/新建/文件夹”命令,并将名字改为“sub1” ①在C:\WINDOWS中任选2个TXT文本文件,将它们复制到“学号+姓名”文件夹中;步骤:选定“C:\WINDOWS”为当前文件夹,随机选取2个文件, CTRL+C复制,返回“D:\学号+姓名”的文件夹,CTRL+V粘贴 ②将“学号+姓名”文件夹中的一个文件移到其子文件夹sub1中; 步骤:选定“ D:\学号+姓名”为当前文件夹,选中其中任意一个文件将其拖拽文件到subl ③在sub1文件夹中建立名为“”的空文本文档; 步骤:选定“ D:\学号+姓名\ sub1”为当前文件夹,在空白处单击右键,选择“新建\文本文档”,把名字改为test,回车完成。 ④删除文件夹sub1,然后再将其恢复。 步骤:选定“ D:\学号+姓名”为当前文件夹,右键单击“sub1”文件夹,选择“删除”,然后打开回收站,右键单击“sub1”文件夹,在弹出的快捷菜单中选择“还原”。 4.搜索C:\WINDOWS\system文件夹及其子文件夹下所有文件名第一个字母为s、文件长 度小于10KB且扩展名为exe的文件,并将它们复制到sub1文件夹中。 步骤:选定“ C:\WINDOWS\system”为当前文件夹,单击“搜索”按钮,在左侧窗格选择“所有文件和文件夹”,在“全部或部分文件名”中输入“s*.exe”,在“大小”中,选择“0~10KB”。 5.用不同的方法,在桌面上创建名为“计算器”、“画图”和“剪贴板”的三个快捷方式, 它们应用程序分别为:、和。并将三个快捷方式复制到sub1文件夹中。 步骤:①在"开始"菜单的"所有程序"子菜单中找到"计算器",单击右键,在弹出的快捷菜单中选择“发送到\桌面快捷方式”。 ②在"开始"菜单的"所有程序"子菜单中找到"画图",将其拖至桌面空白处。 ③在桌面上单击右键,在弹出的快捷菜单中选择“新建\快捷方式”,在“创建快捷方式”

实验三Shell和Vi编辑器

实验二Shell和Vi编辑器 一.实验目的: 1.熟悉shell的各项功能; 2.掌握Linux系统终端方式使用的编辑器vi; 3.学习vi的启动、存盘、文本输入、现有文件的打开、光标移动、复制/剪贴、查找 /替换等命令。 二.实验内容: 1.练习使用shell的各项功能; 2.熟练掌握vi编辑器的使用。 三.实验练习: 1.熟悉Shell环境,使用Shell的各种功能 1)命令补齐功能 ●用date命令查看系统当前时间,在输入da后,按tab键,让shell自动补 齐命令的后半部分。 ●用mkdir命令创建新的目录。首先输入第一个字母m,然后按tab键,由于 以m开头的命令太多,shell会提示是否显示全部的可能命令,输入n。 ●再多输入一个字母k,按tab键,让shell列出以mk开头的所有命令的列表。 ●在列表中查找mkdir命令,看看还需要多输入几个字母才能确定mkdir这个 命令,然后输入需要的字母,再按tab键,让shell补齐剩下的命令。 ●最后输入要创建的目录名,按回车键执行命令。 ●多试几个命令利用tab键补齐。 2)命令别名功能 ●输入alias命令,显示目前已经设置好的命令的别名。 ●设置别名ls为ls –l,以长格形式显示文件列表:#alias ls=‘ls -l’。 ●显示别名ls代表的命令,确认设置生效:#alias ls。 ●使用别名ls显示当前目录中的文件列表。 ●在使定义的别名不失效的情况下,使用系统的ls命令显示当前目录中的命令列表:#\ls。

●删除别名ls:#unalias ls。 ●显示别名ls,确认删除别名已经生效:#alias ls。 ●最后再用命令ls 显示当前目录中的文件列表。 ●写出定义别名cde为:cd /etc的命令()。 3)输入、输出重定向和管道 (1)输出重定向 ●用ls命令显示当前目录中的文件列表:#ls –l。 ●使用输出重定向,把ls命令在终端上显示的当前目录中的文件列表重定向到文件list 中:#ls –l > list。 ●查看文件list中的内容,注意在列表中会多出一个文件list,其长度为0。这说明shell 是首先创建了一个空文件,然后再运行ls命令:#cat list。 ●再次使用输出重定向,把ls命令在终端上显示的当前目录中的文件列表重定向到文件list中。这次使用管道符号>>进行重定向:#ls –l >> list。 ●查看文件list的内容,可以看到用>>进行重定向是把新的输出内容附加在文件的末尾,注意其中两行list文件的信息中文件大小的区别:cat list。 ●重复命令#ls –l > list。 ●再次查看文件list中的内容,和前两次的结果相比较,注意list文件大小和创建时间的区别,完成课后第一题。 (2)输入重定向 ●使用输入重定向,把上面生成的文件list用mail命令发送给自己:#mail root < list。 ●查看新邮件,看看收到的新邮件中其内容是否为list文件中的内容。 (3)管道 ●利用管道和grep命令,在上面建立的文件list中查找字符串list:#cat list | grep list。 ●利用管道和wc命令,计算文件list中的行数、单词数和字符数:#cat list | wc。 4)查看和修改Shell变量 ●用echo命令查看环境变量PATH的值:#echo $PATH。

Linux操作系统Vi文本编辑器试验报告

Vi 文本编辑器 1.实验目的 文本编辑器的原理和操作。1.了解vi文本编辑器的相关命令。了解vi 2.2.实验原理和实验设备 1.操作系统inuxL. 3.实验步骤 1.什么是vi文本编辑器? Vi是一个全屏幕文本编辑器 优点: 具有文本编辑所需的所有功能.1 适用于各种版本的Unix/Linux2.适用于各种类型的终端.3使用灵活快捷.4缺点: 界面不太好看1.按键命令太多2.2. 如何调用vi 在系统提示符后输入vi和想要编辑(或建立)的文件名(如:vi [path]filename),便可进入vi。如果只输入vi,而不带有文件名,也可以进入vi。然后先创建文件的内容,时,只需在退出命令后输入文件名即可。vi在退出进入vi之后,首先进入的就是编辑模式,进入编辑模式后vi等待编辑命令输入而不是文本输入,也就是说,这时输入的字母都将作为编辑命令来解释。.进入编辑模式后光标停在屏幕的第一行首位上(用_表示),其余各行的行首均有一个“~”符号,表示该行为空行。最后一行是状态行,显示出当前正在编辑的文件名及其状态。如果是[New File],则表示该文件是一个新建的文件。如果输入vi带有文件名后,文件已在系统中存在的话,则在屏幕上显示出该文件的内容,并且光标停在第一行的首位,在状态行显示出该文件的文件名,行数和字符数。在编辑模式下输入插入命令i、附加命令a、打开命令o、修改命令c、取代命令r或替换命令s都可以进入插入模式。在插入模式下,用户输入的任何字符都被vi当作文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式,按ESC键即可。在编辑模式下,用户按“:”键即可进入命令模式,此时vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为命令模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的。末行命令执行完成后,vi自动回到编辑模式。如图3.1所示。若在命令模式下输入命令过程中改变了主意,可用退格键(backspace)将输入的命令全回到编辑模式。部删除之后,再按一下退格键,即可使vi3. vi 的三种基本工作模式: 。)编辑模式、插入模式和命令模式(末行模式 三种模式之间的转换示意图图3.1 vi文件的保存和退出;4. 键切换ESC要通过如果我们处于其它命令模式时,的默认模式,vim或vi模式是Command 过来。会在屏幕的最下方等待我们输入命令:号时,vi当我们按ESC键后,接着再输入:保存;:w ;filename另存为:w filename

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)“格式”菜单:实现对文本的“字体”设置,“字体大小”以及“字体颜色”,还有

数据结构实验图的基本操作

浙江大学城市学院实验报告 课程名称数据结构 实验项目名称实验十三/十四图的基本操作 学生姓名专业班级学号 实验成绩指导老师(签名)日期2014/06/09 一.实验目的和要求 1、掌握图的主要存储结构。 2、学会对几种常见的图的存储结构进行基本操作。 二.实验内容 1、图的邻接矩阵定义及实现: 建立头文件test13_AdjM.h,在该文件中定义图的邻接矩阵存储结构,并编写图的初始化、建立图、输出图、输出图的每个顶点的度等基本操作实现函数。同时建立一个验证操作实现的主函数文件test13.cpp(以下图为例),编译并调试程序,直到正确运行。 2、图的邻接表的定义及实现: 建立头文件test13_AdjL.h,在该文件中定义图的邻接表存储结构,并编写图的初始化、建立图、输出图、输出图的每个顶点的度等基本操作实现函数。同时在主函数文件test13.cpp中调用这些函数进行验证(以下图为例)。

3、填写实验报告,实验报告文件取名为report13.doc。 4、上传实验报告文件report13.doc到BB。 注: 下载p256_GraphMatrix.cpp(邻接矩阵)和 p258_GraphAdjoin.cpp(邻接表)源程序,读懂程序完成空缺部分代码。 三. 函数的功能说明及算法思路 (包括每个函数的功能说明,及一些重要函数的算法实现思路) 四. 实验结果与分析 (包括运行结果截图、结果分析等)

五.心得体会

程序比较难写,但是可以通过之前的一些程序来找到一些规律 (记录实验感受、上机过程中遇到的困难及解决办法、遗留的问题、意见和建议等。) 【附录----源程序】 256: //p-255 图的存储结构以数组邻接矩阵表示, 构造图的算法。 #include #include #include #include typedef char VertexType; //顶点的名称为字符 const int MaxVertexNum=10; //图的最大顶点数 const int MaxEdgeNum=100; //边数的最大值 typedef int WeightType; //权值的类型 const WeightType MaxValue=32767; //权值的无穷大表示 typedef VertexType Vexlist[MaxVertexNum]; //顶点信息,定点名称 typedef WeightType AdjMatrix[MaxVertexNum][MaxVertexNum]; //邻接矩阵typedef enum{DG,DN,AG,AN} GraphKind; //有向图,有向网,无向图,无向网typedef struct{ Vexlist vexs; // 顶点数据元素 AdjMatrix arcs; // 二维数组作邻接矩阵 int vexnum, arcnum; // 图的当前顶点数和弧数 GraphKind kind; // 图的种类标志 } MGraph; void CreateGraph(MGraph &G, GraphKind kd)// 采用数组邻接矩阵表示法,构造图G {//构造有向网G int i,j,k,q; char v, w; G.kind=kd; //图的种类 printf("输入要构造的图的顶点数和弧数:\n"); scanf("%d,%d",&G.vexnum,&G.arcnum); getchar();//过滤回车 printf("依次输入图的顶点名称ABCD...等等:\n"); for (i=0; i

实验2 vi编辑器的使用-2014

实验二vi编辑器的使用 班级:计本112 姓名:邵绪宝 学号:201106080226 三、实验操作 1、创建文件 1)使用vi创建一个名为vitest的文件,文件的内容自己录入。需要输入多行来学习编 辑器的常用命令 ? $ cd ? $ pwd ? $ vi vitest 2)返回命令行格式,写入并且退出文件。注意,当你输入”:”的时候,它将出现在你 输入区域的最后一行。一旦这个缓冲区是空的并且文件被关闭了,你将看到一个包 含有该文件的行数和字符数的消息。 :wq or :x or ZZ 使用键来从输入模式进入命令行模式 用以下的命令之一可以保存文件并且关闭vi,:wq 或者:x 或者ZZ 2、编辑文件 3)打开vitest,注意屏幕的底端将会显示文件名和字符数,使用, , ,键, 练习在文件中进行光标移动 ? $ vi vitest ?j down one line向下一行 ?k up one line向上一行 ?h left one character向左一格 ?l right one character向右一格 4)显示行数,并且让光标停在第四行 ? 4G or :4 and ?:set number ?:set tabstop=4 5)删除单个字符,删除整行,删除多行 x 删除光标位置的一个字符 dd 删除光标所在行 ndd 删除光标所在行开始向下的n行 6)进行文字的复制、移动、粘贴操作 yy、Y 复制光标所在的行 nyy、nY 复制从光标开始的n行

p 粘贴在光标后 P 粘贴在光标前 w 光标右移到下一个单词的开头(以非字母的符号分隔)W 同上(以空格分隔) b 光标左移到前一个单词的开头(以非字母的符号分隔) 7)对文本内容进行修改 r 替换光标位置上的1个字符 nr 替换从光标位置开始的n个字符 R 替换从光标位置开始的连续字符(进入替换模式) nR 同上,当按Esc键时,重复n遍(进入替换模式) s 替换光标位置上的1个字符(进入输入模式) S 替换光标所在的1行(进入输入模式) 8)使用:r 、:w 、:e 命令同时编辑多个文档。

文本编辑器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)) ;

数字图像处理实验报告

目录 实验一:数字图像的基本处理操作 (4) :实验目的 (4) :实验任务和要求 (4) :实验步骤和结果 (5) :结果分析 (8) 实验二:图像的灰度变换和直方图变换 (9) :实验目的 (9) :实验任务和要求 (9) :实验步骤和结果 (9) :结果分析 (13) 实验三:图像的平滑处理 (14) :实验目的 (14) :实验任务和要求 (14) :实验步骤和结果 (14) :结果分析 (18) 实验四:图像的锐化处理 (19) :实验目的 (19) :实验任务和要求 (19) :实验步骤和结果 (19) :结果分析 (21)

实验一:数字图像的基本处理操作 :实验目的 1、熟悉并掌握MATLAB、PHOTOSHOP等工具的使用; 2、实现图像的读取、显示、代数运算和简单变换。 3、熟悉及掌握图像的傅里叶变换原理及性质,实现图像的傅里叶变换。:实验任务和要求 1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分 成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。 2.对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分 别显示,注上文字标题。 3.对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换, 显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。 4.对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里 叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的 对应关系。 :实验步骤和结果 1.对实验任务1的实现代码如下: a=imread('d:\'); i=rgb2gray(a); I=im2bw(a,; subplot(1,3,1);imshow(a);title('原图像'); subplot(1,3,2);imshow(i);title('灰度图像'); subplot(1,3,3);imshow(I);title('二值图像'); subplot(1,3,1);imshow(a);title('原图像'); 结果如图所示:

linux实验报告vi编辑器的使用

一、实验目的 学习使用vi编辑器建立、编辑、显示及加工处理文本 二、实验内容 1.进入和退出vi 2.利用文本插入方式建立一个文件 3.在新建的文本文件上移动光标位置 4.对文件执行删除、复原、修改、替换等操作 三、主要的实验步骤 (1)vim简介 系统管理员的重要工作就是修改与设定某些重要软件的配置文件,因此至少得要学会一种以上的命令界面文本编辑器。在所有的Linux distributions 上都会有的一套文字编辑器就是vi,而且很多软件默认的也是使用vi 为他们编辑接口。 vim 是高级版本的vi ,vim 不但可以用不同颜色显示文字内容,还能够进行诸如shell script, C program 等程序的编辑功能。(2)vi的使用 基本上vi 共分为三种模式,分别是“一般模式”、“编辑模式”和“命令模式”。这三种模式的作用分别是: 一般模式:以vi 打开一个文档就直接进入一般模式(这是默认的模式)。在这个模式中,你可以使用“上下左右”键来移 动光标,可以使用“删除字符”或“删除整行”来处理文档内 容,也可以使用“复制、粘贴”来处理文件数据。

●编辑模式:在一般模式中可以进行删除、复制、粘贴等操作, 但是却无法编辑文件内容!要按下“i, I, o, O, a, A, r, R”等任 何一个字母后才会进入编辑模式。通常在Linux 中,按下这 些按键时,在屏幕的左下方会出现“INSERT或REPLACE” 字样,此时才可以进行编辑。而如果要回到一般模式时,则必 须要按下“Esc”这个按键即可退出编辑模式。 ●命令模式:在一般模式当中,输入: / ?三个中的任何一个按 钮,就可以将光标移动到最底下那一行。在这个模式当中,可 以提供查找数据的操作。读取、保存、大量替换字符、离开vi 、显示行号等的操作是在此模式中完成的! (3)具体的操作步骤如下 1、进入vi 2、建立一个文件,如file.c 进入插入模式,输入一个C语言程序的各行内容,故意制造几处错误,最后,将文件存盘,回到shell状态下

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

课程设计报告课程设计题目:文章编辑 姓名杨博 学号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Ⅱ比较即可得到;对于文本内容的处理,查找部分仍是使用循环对已存储的文章进行匹配,判断需要查找的字符或者字符串是否与文章中某部分内容相同,如果存在相同的记录相同的个数及位置并输出个数及位置。删除部分先使用程序的查找功能对文章中需要删除的字符或者字 符串进行查找,然后对其进行删除。插入部分为通过输入的插入位置(行、列)将字符或者 字符串插入到文章制定位置。 一、数据结构选择和概要设计

数字图像处理实验报告

目录 实验一:数字图像的基本处理操作....................................................................... 错误!未定义书签。:实验目的 .............................................................................................................. 错误!未定义书签。:实验任务和要求..................................................................................................... 错误!未定义书签。:实验步骤和结果..................................................................................................... 错误!未定义书签。:结果分析................................................................................................................. 错误!未定义书签。实验二:图像的灰度变换和直方图变换............................................................... 错误!未定义书签。:实验目的 .............................................................................................................. 错误!未定义书签。:实验任务和要求..................................................................................................... 错误!未定义书签。:实验步骤和结果..................................................................................................... 错误!未定义书签。:结果分析................................................................................................................. 错误!未定义书签。实验三:图像的平滑处理....................................................................................... 错误!未定义书签。:实验目的 .............................................................................................................. 错误!未定义书签。:实验任务和要求..................................................................................................... 错误!未定义书签。:实验步骤和结果..................................................................................................... 错误!未定义书签。:结果分析................................................................................................................. 错误!未定义书签。实验四:图像的锐化处理......................................................................................... 错误!未定义书签。:实验目的 .............................................................................................................. 错误!未定义书签。:实验任务和要求..................................................................................................... 错误!未定义书签。:实验步骤和结果..................................................................................................... 错误!未定义书签。:结果分析................................................................................................................. 错误!未定义书签。

相关文档
相关文档 最新文档