结对项目 记事本

一、题目简介

所选项目名称:编写一个记事本程序

项目需求描述:现在网络上各种文档编辑器数不胜数,有EmEditorUEStudioGridinSoft NotepadNotepad++win32padSkimEditUniRed,xint。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。

本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:

(1).菜单中有“文件”,“编辑”,“关于”三个主菜单。

(2)“文件”有“新建”“打开”“保存”“退出”四个子菜单:分别用于新建文件,打开文件,保存文件,退出记事本。

(3)“编辑”中有“剪切”“复制”“粘贴”“颜色”三个字菜单:用于剪切文字,复制文字,粘贴文字。增加了“颜色”子菜单来对文字的颜色进行设置。

(4)“关于”菜单中有关于记事本程序的制作日期,作者等信息。

二、结对分工及过程

分工:互相讨论该程序的结构,由我进行代码的编写,代码完成后,王鲁跃进行代码的测试,并且将其改正,运行成功后进行截图保存。

过程

类详细设计及类实现代码

整个记事本分为2块:菜单栏和内容输入区。本程序中首先定义一个mynotepad类继承JFrame作为最底层容器。

(1).Textcontent为程序文本输入区。

(2).Menu为菜单栏。

(3).AboutDialog为关于对话框。

(4).要想记事本完成需求分析中相应的功能,还必须添加事件监听器。事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。本程序中ActListener实现了ActionListener接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。

另外,还用来WindowListener来监听处理容器关闭触发的事件,WindowListener继承了WindowsAdapter类并覆盖了WindowsClosing方法。

主函数Notepad

1)简要描述:

该类是整个程序的主框架,是javax.swing包中Jframe的一个子类。并实现了AddWindowListener、ActionListener接口。

2)类详细设计:

该类的成员变量、构造方法及方法设计如下:

1) 成员变量

l  color变量的值确定文本颜色。

2) 构造方法

l  Notepad()是构造方法,负责完成初始化。

3)方法

l  main()方法运行Notepad类。

3)类详细代码

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.io.*;public class Notepad{

public static void main(String args[]){

MyNotepad noted=new MyNotepad();

noted.addWindowListener(new WindowAdapter(){

});

noted.setTitle("胡如姣和王鲁跃的记事本程序");

noted.setSize(640,320);

noted.show();

noted.setLocation(150,100);

}

}

MyNotepad

(1)  简要描述:

实现了记事本菜单的编辑操作

2)类详细设计:

该类的成员变量、构造方法及方法设计如下:

1)成员变量

l  color变量的值确定文本颜色。

2)构造方法

MyNotepad()是构造方法,负责完成初始化。

3)方法

l  intTextcontent()方法是Notepad类格式化文本内容的方法。

l  initMenu()方法是Notepad类定义菜单的方法。

l  saveFile()方法是Notepad类定义保存文件的方法。

l  unfold()方法是Notepad类定义读出文件的方法。

l  initAboutDialog()方法是Notepad类定义关于对话框的方法。

程序分模块详细设计与分析

1)初始化组件

initTextContent();

initMenu();

initAboutDialog();

2)构建菜单栏及其下拉菜单

JMenu[] menus=new JMenu[]{

new JMenu("文件"),

new JMenu("编辑"),

new JMenu("关于")

};

JMenuItem optionofmenu[][]=new JMenuItem[][]{{

new JMenuItem("新建"),

new JMenuItem("打开"),

new JMenuItem("保存"),

new JMenuItem("退出")

},

{

new JMenuItem("复制"),

new JMenuItem("剪切"),

new JMenuItem("粘贴"),

new JMenuItem("颜色")

},

{

new JMenuItem("关于")

}

};

3)“文件”菜单的事件监听

ActionListener action=new ActionListener(){

public void actionPerformed(ActionEvent e){

String name = e.getActionCommand();

JMenuItem MI=(JMenuItem)e.getSource();

if("新建".equals(name)){

content.setText("");

file=null;

}else if("打开".equals(name)){

if(file !=null)openfile.setSelectedFile(file);

int returnVal=openfile.showOpenDialog(mynotepad.this);

if(returnVal==JFileChooser.APPROVE_OPTION){

file=openfile.getSelectedFile();

unfold();

}

}else if("保存".equals(name)){

if(file!=null) openfile.setSelectedFile(file);

int returnVal=openfile.showSaveDialog(mynotepad.this);

if(returnVal==JFileChooser.APPROVE_OPTION){

file=openfile.getSelectedFile();

saving();

}

}else if("退出".equals(name)){

mynotepad f=new mynotepad();

int s=JOptionPane.showConfirmDialog(f,"退出?","退出",JOptionPane.YES_NO_OPTION);

4)“编辑”菜单的事件监听

else if("剪切".equals(name)){

content.cut();

}else if("复制".equals(name)){

content.copy();

}else if("粘贴".equals(name)){

content.paste();

}else if("颜色".equals(name)){

color=JColorChooser.showDialog(mynotepad.this,"",color);

content.setForeground(color);

5)异常处理

在运行程序代码是有可能会产生异常情况或异常事件,为了避免这种情况,就需要在程序中用到Java异常处理机制。本程序中选用的异常处理机制是try,catch。捕获处理异常的第一步是用try选定要监控的异常范围,try后跟随catch代码块。

saving(){

try{

FileWriter Writef=new FileWriter(file);

Writef.write(content.getText());

Writef.close();

}catch(Exception e){e.printStackTrace();}

}

void unfold(){

try{

FileReader Readf=new FileReader(file);

int len=(int)file.length();

char []buffer=new char[len];

Readf.read(buffer,0,len);

Readf.close();

content.setText(new String(buffer));

}catch(Exception e){e.printStackTrace();}

}

三、源码的github链接

https://github.com/xujinxia/text/blob/master/jiedui

四.测试情况

五、心得体会

自己根据所学的知识基本上完成我的实验报告-编写一个记事本程序,也基本上实现了我在需求分析时所预期的功能。通过这次的实验,将我从书本上学习到的理论知识用到了实践上,从而进一步巩固和丰富了我所学过的知识,让我更深层次地认识到Java及其强大的功能。同时,做这次实验也进一步加强了我的动手能力。为了完成好这次实验报告,我提前做了较多的准备,一边上网查找相关资料,另一方面查阅相关书籍。在这过程中也无形中锻炼了我的思维分析、遇到问题及想方设法通过各种途径解决问题的能力。

附于结对实验同学的学习照片  结对同学 许金霞

时间: 2024-10-11 06:28:52

结对项目 记事本的相关文章

结对项目更新

本周确实对结对项目没投入多少时间,新的需求没进行跟进,应该要被老板扣钱的吧.只针对之前的程序进行了争论和修改,之前的程序在处理除法的时候其实是有缺陷的,我们二人就此展开过讨论,在并没有达成共识的情况下,用各自的方法进行了编程试验,也没有解决问题,最后询问了同学,采用了新的办法,才解决了遗留的问题.

结对项目 - 词频统计Ⅱ

目的与要求 代码复审练习 结对练习 编写单元测试 基于上一个结对项目的结果,读取小文本文件A_Tale_of_Two_Cities.txt 或者 大文本文件Gone_with_the_wind.txt,统计某一指定单词在该文本文件中出现的频率. 命令行格式: 提示符> Myapp.exe -f filename.txt -w word (PS:C++ 程序,Java 程序输出方式类似) 解释: 选项 -f 表示打开某一文件 选项 -w 表示统计其后单词在打开的文件中的频率 详细内容 开发语言:J

结对项目之小游戏编程(斗地主)

一.题目简介    本次的项目是编写一个斗地主的小游戏,实现语言:java:主要完成了GUI设计.计时线程.算法.本次项目的主要目的是对算法的学习.算法分析在心得里面. 技术难点:1.图片的移动    2.计时线程的设定   3.对牌的分割,必须考虑到优先拆分方案,将权值低的拆分方案舍去. 4.在删除的时候遇到问题了,删除不了. 二.结对分工及过程 本次结对项目的成员有两个,张国伟:负责对GUI界面的设计,完成功能:洗牌功能,发牌功能,打牌功能的图片的位移处理,基本打牌的桌面等等. 我主要负责对

结对项目—地铁出行路线规划

结对项目—地铁出行路线规划 我的搭档:陈鸿超 14061216 https://github.com/ChengFR/PairProgramming_SubwayRoute- 会在十一期间发布新版本 结对编程体会: 结对编程的优点: 站在软件开发的角度,两个人共同面对同一台电脑进行开发,无论是效率还是软件质量都要超过一个人进行开发的情况. 对于还处于学习阶段的年轻软件开发者来说,结对编程是一个很好的互相学习的机会 结对编程时动力.责任感更强 结对编程的缺点: 对于我们来说,寻找两个人共同的时间进

软工_结对项目总结博客

关于结对编程 第一次进行真正的结对编程,而且我们组又是最奇葩的三人组合(14061183韩青长)(14061195陈彦吉),在经历了三天的合作以后,感觉收获还是蛮多的,下面是我对于结对编程的一些个人体验. 优点 在结对编程的过程中,两个人共同面对同一份代码,编码时旁边时刻有人提示监督.这样写出的代码,首先考虑的特殊情况会更多,能避免很多一个人编程时因为考虑不周而在某个不起眼的地方产生的Bug,代码质量更高,少了很多调试时间. 同时,由于两个人交替工作,一方面可以缓解疲劳,同时又因为身旁有人共同工

软件工程 结对项目总结

在结对项目中我和王以正同学一组.我们决定以王以正同学个人项目为基础开发.原因主要有几点:我使用的C++在开发效率和难易度上没有王以正用的java好:java语言的跨平台特性可以更好地支持网页端.安卓端:还有就是王以正同学个人项目的功能比我的更为完善.综合以上几点我们选用王以正同学的作为基础开发. 在这次结对项目中我学到了结对编程的方法.感觉这个方法十分实用,效率很高.因为个人开发的话遇到问题很容易陷入困境.止步不前继而工作效率十分低下.结对编程除了两个人分工合作提高了效率之外遇到问题也可以一起解

结对项目2

题目:构造程序,分别是: •不能触发Fault •触发Fault,但是不能触发Error. •触发Error,但是不能产生Failure. 结对对象:王翰林   博客地址:http://www.cnblogs.com/whl1127/p/5405639.html 双方贡献比例:1:1 编程照片: 源代码: import java.util.Scanner; public class MainTest { public static void main(String[] args) { doubl

结对项目总结

时为几周的结对项目结束了,经历了整个结对项目开发周期,我对结对开发软件有了一些新的认识.不同于个人的开发,结对项目强调的是两个人的合作关系.之前一个人能够搞定的问题,这下不得不两个人来做,开始时我是拒绝的.但是逐渐我发现,在两个人讨论的过程中,能够发现一些隐含的问题.比如,一个人设计的时候,有些事情没想明白就先做别的了,之后就忘掉了,但是在结对项目里面,这些问题想不搞清楚也不行,经常是随便提一句,然后就讨论了起来,然后就xx了:).咳 总的来看,整个结对项目可以分为几个大的阶段:一是讨论阶段,如

结对项目(附加题)开发总结

结对项目(附加题)开发总结 这次附加题的任务就是把两个小组写的独立的UI和CORE模块打乱重组,拼接成一个新的APP. 我们小组选择了大神刘乾所在小组和我们合作交换.一拿到乾神的核心代码,我不得不说,乾神就是乾神,代码一出,直接把我镇住了,各种参数看不懂咋办?咋写UI? 还好我们的乾神同志给我们提供了帮助文档,介绍了各个参数的作用,现摘录如下: 对于计算表达式的值(CALC模式): AnswerGet(string s)其中s是给定的算式,以等号结尾. 调用生成器时,使用: public Gen