首页 > 其他分享 >11.21

11.21

时间:2024-12-18 17:54:19浏览次数:3  
标签:account password String 11.21 user telNo public

软件设计                  石家庄铁道大学信息学院

 

实验 20:备忘录模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 

1、理解备忘录模式的动机,掌握该模式的结构;

2、能够利用备忘录模式解决实际问题。

 

[实验任务一]:多次撤销

改进课堂上的“用户信息操作撤销”实例,使得系统可以实现多次撤销(可以使用HashMap、ArrayList等集合数据结构实现)。

实验要求:

1. 类图;

 

 

2. 源代码;

①、Memento.java

package org.example.shiyanershi;

public class Memento {
    private String account;
    private String password;
    private String telNo;

    public Memento(String account, String password, String telNo) {
        this.account = account;
        this.password = password;
        this.telNo = telNo;
    }

    public String getPassword() {
        return password;
    }


    public String getTelNo() {
        return telNo;
    }

    public String getAccount() {
        return account;
    }
}

 

②、Caretaker.java

package org.example.shiyanershi;

public class Caretaker {
    private Memento[] array = null;
    private int index;
    private Memento memento;


    public Caretaker() {
        array = new Memento[10];
        index = 0;
    }

    public void addMemento(Memento memento) {
        array[index++] = memento;
    }

    public Memento preMemento() {
        Memento pop = null;
        try {
            pop = array[--index];
        } catch (Exception e) {
            e.printStackTrace();
        }
        return pop;
    }
}

 

③、Originator.java

package org.example.shiyanershi;

public class Originator  {
    private String account;
    private String password;
    private String telNo;
    public Originator() {
    }
    public void setAccount(String account) {
        this.account = account;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public void setTelNo(String telNo) {
        this.telNo = telNo;
    }
    public Memento saveMemento() {
        return new Memento(account, password, telNo);
    }
    public void restoreMemento(Memento memento) {
        this.account = memento.getAccount();
        this.password = memento.getPassword();
        this.telNo = memento.getTelNo();
    }
    public void show() {
        System.out.println("账号:" + this.account + " 密码:" + this.password + " 手机号:" + this.telNo);
    }
}

 

④、Main.java

package org.example.shiyanershi;

public class Main {
    public static void main(String[] args) {
        Originator user = new Originator();
        Caretaker c = new Caretaker();
        user.setAccount("zhangsan");
        user.setPassword("123456");
        user.setTelNo("130000");
        System.out.println("状态一:");
        user.show();
        c.addMemento(user.saveMemento());
        System.out.println("-----------------");

        user.setPassword("111111");
        user.setTelNo("130111");
        System.out.println("状态二:");
        user.show();
        c.addMemento(user.saveMemento());
        System.out.println("-----------------");

        user.setPassword("222222");
        user.setTelNo("130222");
        System.out.println("状态三:");
        user.show();
        System.out.println("-----------------");

        user.restoreMemento(c.preMemento());
        System.out.println("回到状态二:");
        user.show();
        System.out.println("-----------------");

        user.restoreMemento(c.preMemento());
        System.out.println("回到状态一:");
        user.show();
        System.out.println("-----------------");
    }
}

 

3. 运行结果

 

 

 

标签:account,password,String,11.21,user,telNo,public
From: https://www.cnblogs.com/zzqq1314/p/18615579

相关文章

  • 11.21
    3. 90/10规则性能优化的基本规则是 90/10 规则:一个程序花费 90% 的时间执行其中 10% 的代码。这只是一条启发性的规则,并非自然法则,但对于我们的思考和计划却具有指导性。这条规则有时也被称为 80/20 规则,但思想是一样的。直观地说,90/10 规则表示某些代码块是会被频繁地......
  • 11.21实验 20:备忘录模式
    [实验任务一]:多次撤销改进课堂上的“用户信息操作撤销”实例,使得系统可以实现多次撤销(可以使用HashMap、ArrayList等集合数据结构实现)。实验要求:1. 画出对应的类图;  2. 提交源代码;importjava.util.ArrayList;importjava.util.List; publicclassCaretaker{ ......
  • 11.21日报
    今天完成机器学习B实验,以下为今日实验内容:上机实验三:C4.5(带有预剪枝和后剪枝)算法实现与测试1、实验目的深入理解决策树、预剪枝和后剪枝的算法原理,能够使用Python语言实现带有预剪枝和后剪枝的决策树算法C4.5算法的训练与测试,并且使用五折交叉验证算法进行模型训练与评估......
  • 11.21Scala
    importjava.io.PrintWriterimportscala.io.Sourceobjectddd1{defmain(args:Array[String]):Unit={//读入文件内容valcontent=Source.fromFile("dd.txt").mkStringprintln(content)//2.把字符串拆分为一个一个的单词,保存到数组//正则......
  • 2024.11.21(周四)
    改进课堂上的“用户信息操作撤销”实例,使得系统可以实现多次撤销(可以使用HashMap、ArrayList等集合数据结构实现)。实验要求:1.    画出对应的类图;2.    提交源代码;3.注意编程规范。  1、类图 2、源代码#include<iostream>#include<list>usingnamespac......
  • 2024.11.21随笔&联考总结(补)
    前言都过了几天了,但是还是大概写一下吧,希望不要耽误太多时间。考试第一题签到题直接做。第二题一眼是矩阵乘法优化dp,然后大概看了几眼先不管去看第三题。然后第三题是数学题,感觉很可做。然后看到部分分感觉像是提示,于是就顺着想,大概思路都想好了,就是有一个情况求方案数的时候......
  • 11.21浏览一行信息
    <%@pagecontentType="text/html;charset=UTF-8"language="java"%><%@pageimport="java.sql.*"%><%@pageimport="javax.naming.*"%><%@pageimport="javax.*"%><html><body&g......
  • 11.21
    今天实现Mapper类LogOnMapperpackagecom.example.mapper;importcom.example.pojo.Department;importcom.example.pojo.Staff;importorg.apache.ibatis.annotations.*;importjava.time.LocalDate;importjava.util.List;@MapperpublicinterfaceLogONMapper{......
  • 11.21
    1.用结构体存放如下表中的数据,然后输出每个人的姓名和实发工资(实发工资=基本工资+浮动工资-支出)姓名基本工资浮动工资支出Tom1240.00800.0075.00Lucy1360.00900.0050.00Jack1560.001000.0080.00程序代码:#inclu......
  • 11.21
    今日学习内容<%@pageimport="java.sql.*"%><%@pageimport="java.sql.DriverManager"%><%--CreatedbyIntelliJIDEA.TochangethistemplateuseFile|Settings|FileTemplates.--%><%@pagecontentType="text/htm......