java怎么实现好友管理_java联系人管理系统简单设计

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

要求:

请使用XML保存数据,完成一个联系人管理系统。

用户必须经过认证登录后方可以使用系统。

注册、增加、删除、查看联系人功能。

分模块进行设计。

两层框架-用户交互层,Dao层。

其他支持层-数据封装层。

工具类-加密,工厂Bean。

开发步骤:

第一步:设计数据结构-XML。

第一步:设计数据结构-XML。

第三步:准备资源并编码实现。

第四步:运行测试。

3c7ec7b2a282bc2bb0065c15ab677951.png

xiaoming

male

123456

12

12

12

xiaoming

female

123

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> 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

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> queryAll() {

List> list=new ArrayList>();

if(currentUser==null){

return list ;

}

NodeList nodeList=currentUser.getElementsByTagName("contact");

for(int i=0;i

Map map= new HashMap();

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

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

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> list = dao.queryAll();

delIds=new String[list.size()];

int i=0;

for (Map 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 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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
继“Java开发微信朋友圈PC版系统-架构1.0”之后,debug这段时间日撸夜撸,终于赶在春节放假前给诸位带来了这一系统的架构2.0版本,特此分享给诸位进行学习,以掌握、巩固更多的技术栈以及项目和产品开发经验,同时也为即将到来的金三银四跳槽季做准备! 言归正传,下面仍然以问答的方式介绍下本门课程的相关内容! (1)问题一:这是一门什么样的课程? 很明显,本门课程是建立在架构1.0,即 第1门课程 的基础上发布的,包含了架构1.0的内容,即它仍然是一门项目、产品实战课,基于Spring Boot2.X + 分布式中间件开发的一款类似“新浪微博”、“QQ空间”、“微信朋友圈”PC版的互联网社交软件,包含完整的门户网前端 以及 后台系统管理端,可以说是一套相当完整的系统! (2)问题二:架构2.0融入了哪些新技术以及各自有什么作用? 本课程对应着系统架构2.0,即第2阶段,主要目标:基于架构1.0,优化系统的整体性能,实现一个真正的互联网社交产品;其中,可以学习到的技术干货非常多,包括:系统架构设计、Spring Boot2.X、缓存Redis、多线程并发编程、消息中间件RabbitMQ、全文搜索引擎Elastic Search、前后端消息实时通知WebSocket、分布式任务调度中间件Elastic Job、Http Restful编程、Http通信OKHttp3、分布式全局唯一ID、雪花算法SnowFlake、注册中心ZooKeeper、Shiro+Redis 集群Session共享、敏感词自动过滤、Java8 等等; A.  基于Elastic Search实现首页列表数据的初始化加载、首页全文检索;B.  基于缓存Redis缓存首页朋友圈“是否已点赞、收藏、关注、评论、转发”等统计数据;整合Shiro实现集群部署模式下Session共享;C.  多线程并发编程并发处理系统产生的废弃图片、文件数据;D.  基于Elastic Job切片作业调度分布式多线程清理系统产生的废弃图片;E.  基于RabbitMQ解耦同步调用的服务模块,实现服务模块之间异步通信;F.  基于WebSocket实现系统后端 与 首页前端 当前登录用户实时消息通知;G.  基于OKHttp3、Restful风格的Rest API实现ES文档、分词数据存储与检索;H.  分布式全局唯一ID 雪花算法SnowFlake实现朋友圈图片的唯一命名;I.  ZooKeeper充当Elastic Job创建的系统作业的注册中心;J.  为塑造一个健康的网络环境,对用户发的朋友圈、评论、回复内容进行敏感词过滤;K.  大量优雅的Java8  Lambda编程、Stream编程;  (3)问题三:系统运行起来有效果图看吗?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值