文档章节

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

H
 HoneyHoney
发布于 2015/06/13 13:18
字数 485
阅读 4
收藏 0
点赞 0
评论 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
济南
第八讲:Intent入门指南

一、什么是Intent: 在一个Android应用中,Intent是对执行某个操作的一个抽象描述,Intent 负责提供组件之间相互调用的相关信息传递,实现调用者和被调用者之间的解耦。 二、Intent的属性: ...

程序袁_绪龙 ⋅ 2014/08/25 ⋅ 0

优客服-多渠道客服系统/UCKeFu-ASK

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

优客服-多渠道客服系统 ⋅ 2017/02/10 ⋅ 0

android应用开发入门

1.Android是什么? Android 是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序 ——移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专...

晨曦之光 ⋅ 2012/03/13 ⋅ 0

基础总结篇之六:ContentProvider之读写联系人

今天我们来讲解一下如何利用ContentProvider机制读写联系人信息。 在Android中,ContentProvider是一种数据包装器,适合在不同进程间实现信息的共享。例如,在Android中SQLite数据库是一个典...

andy521zhu ⋅ 2015/04/03 ⋅ 0

Android特色开发之账户管理

本文节选于机械工业出版社推出的《Android应用开发揭秘》一书,作者为杨丰盛。本书内容全面,详细讲解了Android框架、Android组件、用户界面开发、游戏开发、数据存储、多媒体开发和网络开发...

yarin ⋅ 2011/01/15 ⋅ 0

iphone系统架构以及各层提供的主要服务

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

Orange1 ⋅ 2012/10/11 ⋅ 0

7.gloox 之 RosterManager

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

冯京宝 ⋅ 2010/12/11 ⋅ 0

Android 的 Content Provider

Content Provider提供了一种多应用间数据共享的方式,比如:联系人信息可以被多个应用程序访问。是个实现了一组用于提供其他应用程序存取数据的标准方法的类。 应用程序可以在Content Provi...

SimpleClean ⋅ 2013/03/22 ⋅ 0

Android 的 Intents 和 Intent Filters(实例部分)

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

鉴客 ⋅ 2011/09/28 ⋅ 0

exchange 批量添加联系人

本文分步说明如何使用如何使用逗号分隔值数据交换工具csvde将域用户信息从域控中导出,如何使用Exchange 命令行管理程序在exchange中创建联系人和添加修改联系人属性。一些方案中可能使用此法...

kindlica ⋅ 2012/12/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

到底会改名吗?微软GVFS 改名之争

微软去年透露了 Git Virtual File System(GVFS)项目,GVFS 是 Git 版本控制系统的一个开源插件,允许 Git 处理 TB 规模的代码库,比如 270 GB 的 Windows 代码库。该项目公布之初就引发了争...

linux-tao ⋅ 21分钟前 ⋅ 0

笔试题之Java基础部分【简】【二】

1.静态变量和实例变量的区别 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变...

anlve ⋅ 38分钟前 ⋅ 0

Lombok简单介绍及使用

官网 通过简单注解来精简代码达到消除冗长代码的目的 优点 提高编程效率 使代码更简洁 消除冗长代码 避免修改字段名字时忘记修改方法名 4.idea中安装lombnok pom.xml引入 <dependency> <grou...

to_ln ⋅ 56分钟前 ⋅ 0

【转】JS浮点数运算Bug的解决办法

37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一位小数的数字相乘,怎...

NickSoki ⋅ 今天 ⋅ 0

table eg

user_id user_name full_name 1 zhangsan 张三 2 lisi 李四 `` ™ [========] 2018-06-18 09:42:06 星期一½ gdsgagagagdsgasgagadsgdasgagsa...

qwfys ⋅ 今天 ⋅ 0

一个有趣的Java问题

先来看看源码: public class TestDemo { public static void main(String[] args) { Integer a = 10; Integer b = 20; swap(a, b); System.out......

linxyz ⋅ 今天 ⋅ 0

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 今天 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 9

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部