文档章节

用xml文件,来操作一个联系人管理系统

H
 HoneyHoney
发布于 2015/06/13 13:18
字数 485
阅读 4
收藏 0

用户: user

         id,name,pwd

联系人:contact

       id,name,tel

第一步:设计xml和格式

第二步:设置项目的结构

第三步:开发两个javaBean用于数据的封装

第四步:为了不用每次都去读取xml文件,所有,应该将dom对象单一的实例

package cn.utils;
 
import java.io.File;
 
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
public class DomFactory {
 private static Document dom;
 private static File file;
 static {
  try {
   file =new File( ClassLoader.getSystemResource("contact.xml").getPath());
   dom = DocumentBuilderFactory
     .newInstance()
     .newDocumentBuilder()
     .parse(file);
  } 
catch (Exception e) {
   throw new RuntimeException(e);//转换异常
  }
 }
 //用工厂模式返回这个domn
 public static Document getDocument(){
  return dom;
 }
 //保存的功能
 public static void transform(){
  try {
   Transformer ts = TransformerFactory.newInstance().newTransformer();
   ts.transform(new DOMSource(dom), new StreamResult(file));
  } catch (Exception e) 
{
   e.printStackTrace();
  }
 }
 
}

第五步:开发dao

import cn.domain.User;
import cn.utils.DomFactory;
 
public class ContactDao {
 public boolean login(User user){
  boolean boo =false;
  //遍历dom
  Document dom = DomFactory.getDocument();
  NodeList nl = dom.getElementsByTagName("user");
  for(int i=0,len=nl.getLength();i<len;i++){
   Element e = (Element) nl.item(i);
   String name =e.getElementsByTagName("name").item(0).getTextContent();
   String pwd = e.getElementsByTagName("pwd").item(0).getTextContent();
   if(name.equals(user.getName())&& pwd.equals(user.getPwd())){
    boo = true;
    break;
   }
  }
  return boo;
 }
}

第六步:开发action

package cn.contact;
 
import java.util.List;
import java.util.Scanner;
 
import cn.contact.dao.ContactDao;
import cn.domain.Contact;
import 
cn.domain.User;
 
public class ContactAction {
 public static void main(String[] args) {
  new ContactAction();
 }
 Scanner sc = new Scanner(System.in);
 private ContactDao dao;
 ContactAction(){
  dao = new ContactDao();
  while(true){
   System.err.println("1:login\n2:reg\n3:exit");
   String op = sc.nextLine();
   if(op.equals("1")){
    login();
   }else if(op.equals("2")){
    reg();
   }else if(op.equals("3")){
    break;
   }
  }
 }
 private void login(){
  System.err.println("plz enter name:");
  String name = sc.nextLine();
  String pwd = sc.nextLine();
  User u = new User();
  u.setName(name);
  u.setPwd(pwd);
  
  boolean boo =dao.login(u);
  if(boo){
   System.err.println("login success..");
   //查询所有联系人
   operation();
  }else{
   System.err.println("name or password is eerror");
  }
 }
 private void reg(){
  String name = sc.nextLine();
  String pwd = sc.nextLine();
  User u = new User();
  u.setName(name);
  u.setPwd(pwd);
  dao.reg(u);
 }
 
 public void operation(){
  while(true){
   System.err.println("1:show all\n2:del\n3:update\n4:exit\n5:add");
   String op = sc.nextLine();
   if(op.equals("1")){
    showAll();
   }else 
if(op.equals("5")){
    add();
   }else 
if(op.equals("4")){
    break;
   }
  }
 }
 private void add() 
{
  String name = sc.nextLine();
  String tel = 
sc.nextLine();
  Contact c = new 
Contact();
  c.setName(name);
  c.setTel(tel);
  dao.add(c);
 }
 public 
void showAll(){
  List<Contact> list = dao.showALl();
  System.err.println("ID\t\t\t\tName\t\ttel");
  for(Contact c :list){
   System.err.println(c.getId()+"\t\t\t\t"+c.getName()+"\t\t\t"+c.getTel());
  }
 }
}


© 著作权归作者所有

共有 人打赏支持
H
粉丝 0
博文 21
码字总数 6313
作品 0
济南
优客服-多渠道客服系统/UCKeFu-ASK

#UCKeFu-ASK #优客服-问答社区 优客社区是一个基于 Spring Boot 的轻量级社区系统,设计之初是为优客服项目提供在线交流的一个社区平台。 (QQ群:555834343,目前项目正在开发过程中,尚未发...

优客服-多渠道客服系统
2017/02/10
0
0
iphone系统架构以及各层提供的主要服务

iPhone OS的技术实现包括四层:核心OS(Core OS)层、核心服务(Core Service)层、媒体(Media)层和Cocoa Touch层。系统低层为所有应用提供基础服务,其他较高层包含较多的复杂服务和技术。...

Orange1
2012/10/11
0
0
7.gloox 之 RosterManager

gloox 之 RosterManager 此类实现了jabber:iq:roster名空间中的Jabber/XMPP花名册操作 它继承了 IqHandler, PresenceHandler,SubscriptionHandler 和 PrivateXMLHandler 详细说明: 此类实现...

冯京宝
2010/12/11
0
0
Android 的 Intents 和 Intent Filters(实例部分)

引言 上篇我们介绍了Intents和Intent Filters的理论部分,主要是介绍了:activities、services、broadcastreceivers三种组件的Intent机制两种Intent(显式和隐式)及它们如何去匹配目的组件、...

鉴客
2011/09/28
886
0
优客服-多渠道客服系统/UCKeFu

#优客服 优客服官方技术支持QQ群(555834343,目前项目已发布v3.0.0版本,加入QQ群可以了解最新进度和技术问题咨询。): 优客服,是一个多渠道融合的客户支持服务平台,包含WebIM,微信,电...

优客服-多渠道客服系统
2017/03/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
今天
1
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
0
0
spring EL 和资源调用

资源调用 import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.PropertySource;import org.springframework.core.io.Resource;......

Canaan_
今天
1
0
memcached命令行、memcached数据导出和导入

一、memcached命令行 yum装telnet yum install telent 进入memcached telnet 127.0.0.1 11211 命令最后的2表示,两位字节,30表示过期时间(秒) 查看key1 get key1 删除:ctrl+删除键 二、m...

Zhouliang6
今天
1
0
Linux定时备份MySQL数据库

做项目有时候要备份数据库,手动备份太麻烦,所以找了一下定时备份数据库的方法 Linux里有一个 crontab 命令被用来提交和管理用户的需要周期性执行的任务,就像Windows里的定时任务一样,用这...

月夜中徘徊
今天
1
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部