java联系人管理系统简单设计

本文实例为大家分享了java联系人管理系统毕业设计,供大家参考,具体内容如下

要求: 

请使用XML保存数据,完成一个联系人管理系统。
      用户必须经过认证登录后方可以使用系统。
      注册、增加、删除、查看联系人功能。 
      分模块进行设计。

两层框架-用户交互层,Dao层。
            其他支持层-数据封装层。
            工具类-加密,工厂Bean。

开发步骤:

第一步:设计数据结构-XML。
第一步:设计数据结构-XML。
第三步:准备资源并编码实现。
第四步:运行测试。

<?xml version="1.0" encoding="UTF-8" standalone="no"?><contacts>
 <user name="Jack" pwd="1234">
 <contact id="707dede609dd4a2990f7cfa4cd5233f9">
  <name>xiaoming</name>
  <sex>male</sex>
  <tel>123456</tel></contact>
 <contact id="80983802eaa6402d8bac8bb39e71c48f">
  <name>12</name>
  <sex>12</sex>
  <tel>12</tel>
 </contact></user>
 <user name="Rose" pwd="4321">
 <contact id="eedb795b97194c3aaa9bacda7e2948e9">
  <name>xiaoming</name>
  <sex>female</sex>
  <tel>123</tel>
 </contact></user>
</contacts>

util

package cn.hncu.contact.util;

import java.util.UUID;

public class IDGenerate {
 private IDGenerate(){

 }
 public static String getID(){
// return UUID.randomUUID().toString();
 return UUID.randomUUID().toString().replace("-", "");
 }
}
package cn.hncu.contact.util;

import javax.xml.parsers.DocumentBuilder;
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 myDocumentFactory {
 private static final String FILE_NAME="./xml/users.xml";
 private static Document dom=null;
 static{
 DocumentBuilder db;
 try {
  db=DocumentBuilderFactory.newInstance().newDocumentBuilder();
  dom=db.parse(FILE_NAME);
 } catch (Exception e) {
  throw new RuntimeException("xml文档解析失败...",e);
 }
 }
 public static Document getDocument(){
 return dom;
 }
 public static void save(){
 try {
  Transformer tf=TransformerFactory.newInstance().newTransformer();
  tf.transform(new DOMSource(dom), new StreamResult(FILE_NAME));
 } catch (Exception e) {
  throw new RuntimeException("xml文档存储失败...", e);
 }
// ConfigurationError:配置异常
 }
}

dao

package cn.hncu.contact.dao;

import java.util.List;
import java.util.Map;

import org.w3c.dom.Element;

public interface contactDAO {
 public abstract boolean login(String name,String pwd);
 public abstract List<Map<String, String>> queryAll();
 public abstract Element add(String name,String sex,String tel);
 public abstract void reg(String name,String pwd);
 public Element delete(String id);//默认abstract
 public abstract Element change(String id, String name, String sex,
  String tel);
}
package cn.hncu.contact.dao;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import cn.hncu.contact.util.IDGenerate;
import cn.hncu.contact.util.myDocumentFactory;

public class contactImpl implements contactDAO{

 private Element currentUser;
 Document dom=null;
 public contactImpl(){

 }
// private static String name=null;
// private static String pwd=null;
 @Override
// public boolean login(String name2, String pwd2) {
 public boolean login(String name, String pwd) {
// name=name2;
// pwd=pwd2;
 dom=myDocumentFactory.getDocument();
 Element root=(Element) dom.getFirstChild();
 NodeList nodelist=root.getElementsByTagName("user");
 for(int i=0;i<nodelist.getLength();i++){
  Element e=(Element) nodelist.item(i);
  if(e.getAttribute("name").equalsIgnoreCase(name)&&e.getAttribute("pwd").equalsIgnoreCase(pwd)){
  currentUser=e;
  return true;
  }
 }
 return false;
 }
 @Override
 public List<Map<String, String>> queryAll() {
 List<Map<String, String>> list=new ArrayList<Map<String,String>>();
 if(currentUser==null){
  return list ;
 }
 NodeList nodeList=currentUser.getElementsByTagName("contact");
 for(int i=0;i<nodeList.getLength();i++){
  Map<String, String> map= new HashMap<String, String>();
  Element e=(Element) nodeList.item(i);
  String id=e.getAttribute("id");
  map.put("id", id);
  String name=e.getElementsByTagName("name").item(0).getTextContent();
  map.put("name", name);
  String sex=e.getElementsByTagName("sex").item(0).getTextContent();
  map.put("sex", sex);
  String tel=e.getElementsByTagName("tel").item(0).getTextContent();
  map.put("tel", tel);
  list.add(map);
 }
 return list;
 }

 @Override
 public Element add(String name,String sex,String tel) {
 Document dom=myDocumentFactory.getDocument();
 Element eNewContact=dom.createElement("contact");
 eNewContact.setAttribute("id", IDGenerate.getID());
 Element nameNew=dom.createElement("name");
 nameNew.setTextContent(name);
 eNewContact.appendChild(nameNew);
 Element sexNew=dom.createElement("sex");
 sexNew.setTextContent(sex);
 eNewContact.appendChild(sexNew);
 Element telNew=dom.createElement("tel");
 telNew.setTextContent(tel);
 eNewContact.appendChild(telNew);
 currentUser.appendChild(eNewContact);
 myDocumentFactory.save();
// login(name, pwd);
 return eNewContact;
 }
 public Element delete(String id) {
 NodeList nodeList=currentUser.getElementsByTagName("contact");
 for(int i=0;i<nodeList.getLength();i++){
  Element e=(Element) nodeList.item(i);
  if(e.getAttribute("id").equals(id)){
  currentUser.removeChild(e);//把节点从树中移除
  myDocumentFactory.save();
//  login(name, pwd);
  return e;
  }
 }
 return null;
 }
 @Override
 public void reg(String name, String pwd) {
 Document dom=myDocumentFactory.getDocument();
 Element userNew=dom.createElement("user");
 userNew.setAttribute("name", name);
 userNew.setAttribute("pwd", pwd);
 dom.getFirstChild().appendChild(userNew);
 myDocumentFactory.save();
 }
 @Override
 public Element change(String id, String name, String sex, String tel) {
 NodeList nodeList=currentUser.getElementsByTagName("contact");
 for(int i=0;i<nodeList.getLength();i++){
  Element e=(Element) nodeList.item(i);
  if(e.getAttribute("id").equals(id)){
  e.getElementsByTagName("name").item(0).setTextContent(name);
  e.getElementsByTagName("sex").item(0).setTextContent(sex);
  e.getElementsByTagName("tel").item(0).setTextContent(tel);
  myDocumentFactory.save();
//  login(name, pwd);
  return e;
  }
 }
 return null;
 }

}
package cn.hncu.contact.dao;

public class contactDAOFactory {
 private contactDAOFactory(){

 }
 public static contactDAO getContactDAO(){
 return new contactImpl();
 }
}

cmd

package cn.hncu.contact.cmd;

import java.util.List;
import java.util.Map;
import java.util.Scanner;

import org.w3c.dom.Element;

import cn.hncu.contact.dao.contactDAO;
import cn.hncu.contact.dao.contactDAOFactory;

public class contanctAction {
 private contactDAO dao=contactDAOFactory.getContactDAO();
 private Scanner sc=null;
 private String delIds[];
 public contanctAction(){
 sc=new Scanner(System.in);
 while (true) {
  System.out.println("1:登录");
  System.out.println("2:注册");
  System.out.println("0:退出");
  String op=sc.nextLine();
  if ("1".equals(op)) {
  Login();
  } else if ("2".equals(op)) {
  Reg();
  } else {
//  System.exit(0);
  break;
  }
 }
 }
 private void Reg() {
 System.out.println("请输入用户名:");
 String name=sc.nextLine();
 System.out.println("请输入用户密码:");
 String pwd=sc.nextLine();
 System.out.println("请确认用户密码:");
 String pwd2=sc.nextLine();
 if(pwd.equals(pwd2)){
  dao.reg(name,pwd);
 }else{
  System.out.println("两次密码输入不一致,请重新注册");
 }

 }
 private void Login() {
 System.out.println("请输入用户名:");
 String name=sc.nextLine();
 System.out.println("请输入用户密码:");
 String pwd=sc.nextLine();
 boolean boo=dao.login(name, pwd);
 if(boo){
  System.out.println("登录成功...");
  operation();
 }else{
  System.out.println("denglushibai");
 }
 }
 private void operation() {
 List<Map<String, String>> list = dao.queryAll();
 delIds=new String[list.size()];
 int i=0;
 for (Map<String, String> map : list) {
  String id=map.get("id");
  delIds[i++]=id;
 }
// while (true) {
  //因为共用同一棵dom树,所以每次增删改查之后,还是原来那棵dom树.
  //而while内的操作都是对之前的操作,所以要退出到上一阶段重新登陆,获取更新之后的dom树
  System.out.println("1:显示联系人");
  System.out.println("2:添加联系人");
  System.out.println("3:删除联系人");
  System.out.println("4:修改联系人");
  System.out.println("0:退出");
  String sel = sc.nextLine();
  if ("1".equals(sel)) {
  System.out.println("序号\t姓名\t性别\t电话");
  System.out.println("------------------------------");
  int j = 1;
  for (Map<String, String> map : list) {
   String name = map.get("name");
   String sex = map.get("sex");
   String tel = map.get("tel");
   System.out.println((j++) + "\t" + name + "\t" + sex + "\t"
    + tel);
  }
  } else if ("2".equals(sel)) {
  addContact();
  } else if ("3".equals(sel)) {
  delContact();
  } else if ("4".equals(sel)) {
  changeContact();
  } else if ("0".equals(sel)) {
  return;
//  break;
  }
// }
  operation();
 }
 private void changeContact() {
 System.out.println("请输入要修改的联系人的序号:");
 int num=sc.nextInt();
 sc.nextLine();//吸掉换行符1
 System.out.println("请输入要修改的联系人的姓名:");
 String name=sc.nextLine();
 System.out.println("请输入要修改的联系人的姓别:");
 String sex=sc.nextLine();
 System.out.println("请输入要修改的联系人的电话:");
 String tel=sc.nextLine();

 Element e=dao.change(delIds[num-1],name,sex,tel);
 if(e!=null){
  System.out.println(num+"号联系人更新之后:姓名:"+e.getElementsByTagName("name").item(0).getTextContent()
   +"性别:"+e.getElementsByTagName("sex").item(0).getTextContent()
   +"电话号码:"+e.getElementsByTagName("tel").item(0).getTextContent());
 }else{
  System.out.println("修改失败...");
 }

 }
 private void delContact() {
 System.out.println("请输入删除的联系人序号:");
 int num=sc.nextInt();
 sc.nextLine();//吸掉换行符
 Element e=dao.delete(delIds[num-1]);
 if(e==null){
  System.out.println("删除失败,无此联系人");
 }else{
  System.out.println("删除联系人:"+e.getElementsByTagName("name").item(0).getTextContent()+"成功...");
 }

 }
 private void addContact() {
 System.out.println("请输入联系人信息:");
 System.out.println("姓名:");
 String name=sc.nextLine();
 System.out.println("姓别:");
 String sex=sc.nextLine();
 System.out.println("电话:");
 String tel=sc.nextLine();
 Element e=dao.add( name,sex, tel);
 System.out.println("添加联系人"+e.getElementsByTagName("name").item(0).getTextContent()+"成功...");

 }
 public static void main(String[] args) {
 new contanctAction();

 }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • JAVA实现简单系统登陆注册模块

    前期准备 首先要先明确有个大体的思路,要实现什么样的功能,了解完成整个模块要运用到哪些方面的知识,以及从做的过程中去发现自己的不足.技术方面的进步大都都需要从实践中出来的. 功能:用户注册功能+系统登录功能+生成验证码 知识:窗体设计.数据库设计.JavaBean封装属性.JDBC实现对数据库的连接.验证码(包括彩色验证码)生成技术,还有就些比如像使用正则表达式校验用户注册信息.随机获得字符串.对文本可用字符数的控制等 设计的模块预览图: 彩色验证码预览图: 所用数据库:MySQL 数据库设计

  • java学生信息管理系统设计

    本例的学生信息添加进入数据库的事务(可以提交事务,事务回滚,用本地线程完善) 主页面index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <htm

  • Java 模拟银行自助终端系统

    一. 本系统模拟银行用户使用ATM机开户.查询.存款.取款功能,要求使用java语言编程实现. 说明: 1. 对于数据输入异常,可使用java异常处理机制进行处理. 2. 评分将以功能实现与代码规范性相结合的方式进行考核. 3. 如果对项目需求有疑问,可以随时以QQ留言方式联系我进行咨询. 4. 国庆放假期间,每天都有老师在公司值班,10月4日是我在公司值班,10月7日正常上班,欢迎大家到公司来做项目. 二. 项目功能要求: 项目开始运行显示主菜单为: 银行自助终端系统 ************

  • Java+Mysql学生管理系统源码

    最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多. 开发语言:java: 开发环境:Mysql, java: 开发工具:eclipse 开发此案例,首先得在电脑上有java开发环境和Mysql, java开发环境与Mysql的搭建,就不再叙述了,如果需要,请联系我最下面的联系方式:dingyelf@aliyun.com 此次系统比较简易:数据库中只有一个表:stu;功能:能够对学生增加.删除.修改. 开发步骤:  

  • 使用Java编写一个简单的Web的监控系统

    公司的服务器需要实时监控,而且当用户空间已经满了,操作失败,或者出现程序Exception的时候就需要实时提醒,便于网管和程序员调式,这样就把这个实时监控系统分为了两部分,   第一部分:实时系统监控(cpu利用率,cpu温度,总内存大小,已使用内存大小) 第二部分:实时告警 由于无刷新实时性,所以只能使用Ajax,这里没有用到任何ajax框架,因为调用比较简单 大家知道,由于java的先天不足,对底层系统的调用和操作一般用jni来完成,特别是cpu温度,你在window下是打死用命令行是得不到

  • 简单实现Java版学生管理系统

    本文实例为大家分享了Java实现学生管理系统的具体代码,供大家参考,具体内容如下 package BookDemo_1; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Test { public static void main(String[] args) { StudentSys stuSys=new StudentSys("学生管理系统"); stuSys.initWi

  • java编写简单的ATM存取系统

    新手练手必备~ 密码账户为: 先创建账户类: 复制代码 代码如下: package cn.Atm; /** * @author 偶my耶 */ import java.io.*; import com.project.project; public class Account {   private String number=null;   private String name=null;   private String password=null;   private double mo

  • 图书管理系统java版

    本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出版日期.书号.价格字段.设计一个GUI界面进行书目管理.在该界面上有四个选项卡,分别是查询.插入.删除.修改.点击查询选项卡,出现的界面上有书名.作者.出版社.书号四个文本框,一个按钮和一个只读文本区.文本框内容可以为空,输入相应的查询信息后(例如根据书名查询可以仅输入书名),点击界面上的"查询"按钮,可以在界面

  • 一个简陋的java图书管理系统

    本文代码为原创一个简陋的管理系统,只做功能的测试.并没有去完善所有应有的功能,只做了输入输出查找,仅供参考! 菜单部分: import java.util.Scanner; public class Menu { int Min = 1; int Max = 3; public void getMenu(){ System.out.println("1.显示/2.输入/3.查找"); } public void getFindMenu(){ System.out.println(&qu

  • Java实现排球比赛计分系统

    初步计划: 或许由于个人原因,排球计分系统在假期就完成了,一直未写博客,就这样一直在推就是不想写,在加上过完年就工作了,可能刚实习工作比较紧所以一直等到现在. 写这个系统之前我简单构思了一下,因为离校前我去洛阳参加了一个多月的Java培训,所以写项目用的ide是Java环境.刚开始考虑用jsp做界面,架构用mvc,但是后来一想工作量太大而且效果也不是很好.最终写了纯Java代码,在虚拟机上展示. 需求分析: 排球竞赛为五局三胜制,每局比赛中得够25分并且领先对方2分以上的一方将获得一局胜利,先获

随机推荐