本文实例为大家分享了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条)