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();

}

}

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

以上是 java联系人管理系统简单设计 的全部内容, 来源链接: utcz.com/p/210517.html

回到顶部