`
Junjiejkl
  • 浏览: 60236 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

简单的分层模式

阅读更多

数据信息层:

 

<?xml version="1.0" encoding="UTF-8"?>

<students>
  <student id="1">
    <name>soso</name>
    <password>123</password>
    <age>10</age>
  </student>
</students>

 

 

javabean:

 

package cn.itcast.xml.parser.example2;

public class Student {

	private int id;
	private String name;
	private String password;
	private int age;

	public Student() {
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

}

 

 

DAO:

 

package cn.itcast.xml.parser.example2;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

//数据访问层(对XML文件的CURD操作)
public class StudentDao {
	private Document getDocument() throws Exception{
		SAXReader reader = new SAXReader();
		Document document = reader.read(new File("src/cn/itcast/xml/parser/example2/students.xml"));
		return document;
	}
	private void writerToFile(Document document)throws Exception{
		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setEncoding("UTF-8");
		Writer writer = new OutputStreamWriter(new FileOutputStream("src/cn/itcast/xml/parser/example2/students.xml"),"UTF-8");
		XMLWriter xmlWriter = new XMLWriter(writer,format);
		xmlWriter.write(document);
		xmlWriter.close();
	}
	public void create(Student student) throws Exception{
		/*
		Document document = this.getDocument();
		Element rootElement = document.getRootElement();//<students>根元素和document已绑定在一起
		Element studentElement  = rootElement.addElement("student");//<student>
		studentElement.addElement("name").setText(student.getName());//<name>jack</name>
		studentElement.addElement("password").setText(student.getPassword());//<password>jack</password>
		studentElement.addElement("age").setText(student.getAge()+"");//<age>jack</age>
		studentElement.addAttribute("id",student.getId()+"");
		this.writerToFile(document);
		*/

		//必须保存在第一次填加学员时执行,第N次不执行
		Document document = DocumentHelper.createDocument();
		Element rootElement = DocumentHelper.createElement("students");
		//思路:第N次判段是否已有根元素,如果有,不需要再创建根元素,直接将子元素加到<students>里面
		
		Element studentElement  = rootElement.addElement("student");//<student>
		studentElement.addElement("name").setText(student.getName());//<name>jack</name>
		studentElement.addElement("password").setText(student.getPassword());//<password>jack</password>
		studentElement.addElement("age").setText(student.getAge()+"");//<age>jack</age>
		studentElement.addAttribute("id",student.getId()+"");
		document.add(rootElement);
		this.writerToFile(document);
		
	}
	public void delete(String id) throws Exception{
		Document document = this.getDocument();
		String xpath = "//student[@id='"+id+"']";
		Element element = (Element) document.selectSingleNode(xpath);
		if(element!=null){
			element.getParent().remove(element);
			this.writerToFile(document);
		}else{
			throw new RuntimeException("查无此学员");
		}
	}
}

 

 

UI:

 

package cn.itcast.xml.parser.example2;

import java.util.Scanner;

public class StudentUI {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		/*
		System.out.print("需要删除学员的编号:");
		String id = scanner.nextLine();
		StudentDao studentDao = new StudentDao();
		try {
			studentDao.delete(id);
			System.out.println("删除成功");
		} catch (Exception e) {
			e.printStackTrace();
		}
		*/
		
		System.out.print("姓名:");
		String name = scanner.nextLine();
		System.out.print("密码:");
		String password = scanner.nextLine();
		System.out.print("年龄:");
		String age = scanner.nextLine();
		Student student = new Student();
		student.setId(Util.getId());
		student.setName(name);
		student.setPassword(password);
		student.setAge(Integer.parseInt(age));
		StudentDao studentDao = new StudentDao();
		try {
			studentDao.create(student);
			System.out.println("成功");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


 

分享到:
评论

相关推荐

    基于Java的设计模式大作业绘图系统【六种设计模式+文档】.zip

    本系统基于六种设计模式,运用到的设计模式有备忘录模式,简单工厂模式,迭代器模式,状态模式,模版方法模式,单例模式。 具体实现过程、UML类图以及实现效果详见如下项目说明地址: ... 该系统为绘图系统,该系统通过...

    C#实现分层架构源程序

    设计模式的本质特征是模块独立性和接口简单,因为MVC系统架构难于理解,故采用分层模型对系统进行设计,系统的特点是专门设计了一层数据库的屏蔽层,用来屏蔽数据库的差异性。

    创建者模式(设计模式,分层清晰,逻辑明显)

    本例是一个分层次的实例,里面简单清晰的逻辑说明了设计模式之---创建者模式

    利用cookie实现三天免登陆示例(mvc分层模式).rar

    利用cookie技术实现简单的三天免登陆功能

    双减课题结题总结初中数学分层设计作业研究.doc

    4. 通过研究,形成分层评价作业实用操作模式、发挥策略激励语言的教育功能,构建分层辅导作业操作模式和课堂教学模式,规范作业教学,提高教学质量。 三、教学案例 案例 1:整式加减是在学习了“有理数运算”基础...

    unity自制模式(MVC与命令模式相结合)

    本框架实行MVC结构且附带命令模式进行搭建,简单称述: (1)首先Canvas中UI面板作为View的显示; (2)UIEventArgs作为UI面板的Model层; (3)Handler作为UI面板的控制单元; (4)Command作为UI面板的命令层,...

    自动质量检测中的分层机器学习方法.pdf

    关键词:类不平衡、模式识别、机器学习、分层学习、代偏重的最小化最大概率机、自适应提升算法。 分层机器学习方法的优点: 1. 可以解决类不平衡问题,提高检测分类速度和准确率。 2. 可以应用于其他领域的类不...

    geterohier:QML异质分层模式示例

    Geterohier QML组装要求中的示例模式异构层次结构:Qt&gt; 5.2.1为简单起见固定了模型,在构造函数中创建了子代

    MVVM模式简单demo

    这是一个是MVVM模式实现的在tableview上分层选择省市区的demo

    设计模式简单代码.txt

    设计模式通常应用在设计阶段,分析阶段已经对系统分层,然后也对每个层都提取了一些类。这个时候,如何组织和使用这些类就是我们的设计模式要研究的问题了。本文档是一些设计模式的简单实现代码。

    express 项目分层实践详解

    这个就简单说一下,所谓四层架构就是 Model实体层,Dao层(数据访问层也就是从数据库中查数据),Service层(业务逻辑层,也就是处理好数据),Controller层(视图控制层,在前后端分离的情况下就是写接口响应前端...

    NET设计规范-.NET约定、惯用法与模式.part2

    1.1.1 精心设计的框架是简单的 2 1.1.2 精心设计的框架设计代价高 3 1.1.3 精心设计的框架充满利弊权衡 3 1.1.4 精心设计的框架应该借鉴过去 4 1.1.5 精心设计的框架要考虑未来发展 4 1.1.6 精心设计的...

    领域驱动设计与模式实战

    4.1.3 根据DDD进行分层 4.2 轮廓 4.2.1 领域模型示例的问题/特性 4.2.2 逐个处理特性 4.2.3 到目前为止的领域模型 4.3 初次尝试将UI与领域模型挂接 4.3.1 基本目标 4.3.2 简单UI的当前焦点 4.3.3 为客户列出订单 ...

    软件架构设计之常用架构模式.doc

    1. 分层架构:分层架构是使用最多的架构模式,通过分层使各个层的职责更加明确,通过定义的接口使各层之间通讯。分层分为严格意义上的分层和一般意义的分层。严格意义的分层是 n+1 层使用 n 层的服务。而一般意义的...

    QT实现Mvp设计模式Demo

    最近做qt 项目,发现网上基于MVP设计模式的QT例程很少,这里写一个demo示例可作为参考,使用model + View + Interface的方式,每次新增接口只需要在Interface中增加对应接口的虚函数即可。 MVP是由MVC发展而来,总体...

    软件体系结构2软件体系结构风格与模式918409726.pptx

    软件体系结构的构建模式有管道-过滤器风格、面向对象风格、事件驱动风格、分层风格、数据共享风格、解释器风格、反馈控制环风格、异构风格的集成等多种风格。每种风格都有其特点和优点,可以满足不同的系统设计需求...

    MVC模式写的投票系统 值得学习 封装了JDBC的方法

    MVC模式写的投票系统 值得学习 封装了JDBC的方法 后台有明确的分层 前台很简单,数据库已经上传,在DBBean.java中修改数据库连接属性就可以使用

    C#游戏贪食蛇源代码 (结合2设计模式)(Sairns,董侨)

    4.0 引入简单工厂,结合策略模式对游戏优化并加入动态加速功能,将原GUI+绘蛇变更为,自制Control控件, 关卡不变(解决了双缓冲无法解决屏幕闪烁问题) 5.0 美化游戏,应用分层理念封装各实体类 制作人: 董...

    javaWeb_struts2框架实现简单用户注册登录

    1.本demo严格按照MVC的分层模式采用myeclipse编写,可直接运行,服务器为tomcat,数据库为mysql。 2.数据库操作使用c3p0连接池和dbtuils组件,对表的CURD,二者搭配感觉很easy,没有使用hibernate。 3.控制器采用...

    NET设计规范-.NET约定、惯用法与模式.part1

    1.1.1 精心设计的框架是简单的 2 1.1.2 精心设计的框架设计代价高 3 1.1.3 精心设计的框架充满利弊权衡 3 1.1.4 精心设计的框架应该借鉴过去 4 1.1.5 精心设计的框架要考虑未来发展 4 1.1.6 精心设计的...

Global site tag (gtag.js) - Google Analytics