软件工程实验报告(电脑端记事本开发设计)

时间:2024-03-03 18:40:03

电脑端记事本开发设计

一、 绪论

1.1引言

在校使用电脑学习时,常需要快速记笔记,根据当前在民大学习的Java语言,而且电脑已经成为了每位同学甚至每家每户手头都必有的一种实用性工具,它大大提高了人们的工作效率。电脑端的记事本应用一直是每台电脑所必备的实用性应用,为使用者提供了多种编辑上的便利,特别是快速笔记。正因为它的这些特点,才让它成为每台电脑中必不可少的成分。

1.2编写目的

根据胡老师要求,再结合现如今电脑端记事本是每台电脑的标配,有相当大的实用性,方便人们平时的记事之用,尤其是在快速笔记这方面,更是有非常大的作用,基本能满足人们的记事需求,有很大的开发及继续完善开发的意义。

基于记事本的诸多优点,本次设计针对电脑端的记事本进行开发设计,并在原有基础上进行完善,使它的功能更完善、更人性化及更实用化。

二、 系统可行性研究

2.1系统分析

在实现系统自带笔记本的功能同时,再添加一些个性化功能,例如为记事本添加上行号(这大大提高了我们程序员看代码的方便性),在状态栏添加上当前时间以及字数统计,让用户能够对自己所写的字数一目了然,大大增强了用户体验。

此外,此记事本支持用户自定义背景颜色以及字体颜色,增强了趣味性,用户可以根据自己的喜好选择符合自己的主题。

即实现的功能有:

1)“文件”主菜单中有“新建”、“打开”、“保存”、“另存为”、“页面设置”、“打印”、“退出”这几个子功能。

2)“编辑”主菜单中有“撤销”、“剪切”、“复制”、“粘贴”、“删除”、“查找”、“查找下一个”、“替换”、“转到”、“全选”、“日期/时间”这几个子功能。

3)“格式”主菜单中有“自动换行”、“字体”、“背景颜色”、“字体颜色”这四个子功能。

4)“查看”主菜单中有“状态栏”子功能。

5)“帮助”主菜单中有“查看帮助”、“关于记事本”这两个子功能。

2.2技术可行性

由于当前学期主修的是Java程序设计,所以本电脑端记事本采用JAVA语言进行开发设计。Java语言是一门面向对象的语言,风格接近C、C++语言,但又舍弃了C和C++语言中易引起错误的指针、运算符重载、多重继承等特性,使开发的程序质量更高。由于开发记事本的难度不高,因此通过Java语言在当今主流的IDEA编译器上就可以实现开发了。


 

 

三、 需求分析

3.1系统功能概述

第一次是在机房使用PPT画,之后转为图片,有点不太熟练,字可能有点小。


 

3.2功能图


 

3.3系统功能实现

时序图

类图(只在程序中选取了主要函数)

3.4系统角色

用户可以在系统里创建新文件,编辑文字,并保存,以便查看,还可以进行批处理文件等操作。

3.5系统流程图

打开记事本后,可在文本域进行文本输入,或者进行一系列执行操作包括:文件、编辑、格式以及帮助菜单。


 

主流程图


 

文件菜单操作流程图


 

编辑菜单操作流程图


 

格式菜单操作流程图

 

3.6数据流图

四、 概要设计

4.1全局ER图


 

4.2系统总体结构与模块


 

4.3接口设计


 

五、 概要设计

5.1数据流图

用户

用户

电脑端

记事本

处理

 

处理


       基本模型:

细化后的数据流图:

记事本

 

用户

7

打印

 

 

5

页面设置

 

 

4

编辑

 

 

字符

 

6

 保存

 

 

3

格式

 

 

本地磁盘

 

记事本

 

用户

1

新建

 

 

2

打开

 

 

记事本

 

记事本

 

字符

 

字符

 

字符

 

记事本

 

记事本

 

打印文档

 

 


 

5.2层次方框图

5.3功能模块图

六、 系统实现

6.1关键代码

①背景颜色实现

JColorChooser jcc1 = new JColorChooser();

JOptionPane.showMessageDialog(thisjcc1,"选择背景颜色颜色",-1);

 color = jcc1.getColor();

 textArea.setBackground(color);

 

效果:

②字体颜色

jcc1=new JColorChooser();

            JOptionPane.showMessageDialog(thisjcc1"选择字体颜色", -1);

            color = jcc1.getColor();

            //String string=textArea.getSelectedText();

            textArea.setForeground(color);

 

③鼠标右击菜单

// 创建弹出菜单

        final JPopupMenu jp=new JPopupMenu();    //创建弹出式菜单,下面三项是菜单项

        textArea.addMouseListener(new MouseAdapter() {

            @Override

            public void mouseClicked(MouseEvent e) {

                if(e.getButton()==MouseEvent.BUTTON3)//只响应鼠标右键单击事件

                {

                    jp.show(e.getComponent(),e.getX(),e.getY());//在鼠标位置显示弹出式菜单

                }

            }

    });

④打印功能

public void Print()

    {

        try{

            p = getToolkit().getPrintJob(this,"ok",null);//创建一个Printfjob 对象 p

            g = p.getGraphics();//p 获取一个用于打印的 Graphics 的对象

            //g.translate(120,200);//改变组建的位置

            this.textArea.printAll(g);

            p.end();//释放对象 g 

        }

        catch(Exception a){

        }

}

⑤显示时间

//用到了线程,每1秒刷新一次时间
public class Clock extends Thread{   

    public void run() { 

        while (true) { 

            GregorianCalendar time = new GregorianCalendar(); 

            int hour = time.get(Calendar.HOUR_OF_DAY); 

            int min = time.get(Calendar.MINUTE); 

            int second = time.get(Calendar.SECOND); 

            NotepadMainFrame.label1.setText("    当前时间:" + hour":" + min + ":" + second); 

            try { 

                Thread.sleep(1000); 

            } catch (InterruptedException exception) { 

            } 

        } 

    } 

}

⑥显示行数和列数

label2 = new JLabel("    第 " + linenum + " 行, 第 " + columnnum+" 列  ");

        toolState.add(label2);

        toolState.addSeparator();

textArea.addCaretListener(new CaretListener() {        //记录行数和列数
    public void caretUpdate(CaretEvent e) {
    JTextArea editArea = (JTextArea)e.getSource();
        try {
            int caretpos = editArea.getCaretPosition();
            linenum = editArea.getLineOfOffset(caretpos);
            columnnum = caretpos - textArea.getLineStartOffset(linenum);
            linenum += 1;
            label2.setText("    第 " + linenum + " 行, 第 " + (columnnum+1)+" 列  ");
        }
    catch(Exception ex) { }
}});
contentPane.add(toolState, BorderLayout.SOUTH);
toolState.setVisible(false);
toolState.setFloatable(false);

 

6.2系统总体结构与模块

6.3测试效果

 

① 文件菜单

② 编辑菜单

③ 更换颜色、字体大小

 

七、 总结

从刚开始上实验课不知道画什么图开始,到后来每次都能画的得心应手,这是一个质的飞跃。通过本学期的实验课既提升了个人作图水平,更是在不断深入了解软件工程这一门学科。也深切体会到,一个软件的开发需要一步步脚踏实地地进行。

 

文档源文件下载地址:

 https://files-cdn.cnblogs.com/files/xiaochengzi2/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1.zip