Los ejemplos en este artículo comparten con usted el diseño de graduación del sistema de gestión de contactos Java para su referencia. El contenido específico es el siguiente
Requerir:
Utilice XML para guardar datos y completar un sistema de gestión de contacto.
Los usuarios deben ser autenticados e iniciados antes de poder usar el sistema.
Regístrese, agregue, elimine, vea las funciones de contacto.
Diseñado en módulos .
Capa de interacción marco-usuario de dos capas, capa DAO.
Otras capas de soporte: capa de encapsulación de datos.
Herramientas: cifrado, frijol de fábrica.
Pasos de desarrollo:
Paso 1: Diseñe la estructura de datos - XML.
Paso 1: Diseñe la estructura de datos - XML.
Paso 3: Prepare los recursos y codifíquelos para implementarlos.
Paso 4: Ejecute la prueba.
<? xml versión = "1.0" encoding = "UTF-8" standalone = "no"?> <tacttats> <user name = "jack" pwd = "1234"> <Contact id = "707dede609dd4a2990f7cfa4cd5233f9"> <name> xiaoming </same> <sex> MOHAL> </sexo <sexo <sexo <sexo <sexo <sexo> </sexo <sexo <sexo> </sexo <sexo <sexo> <Lel> 123456 </tel> </actáctesis> <contacto id = "80983802eaAA6402D8BAC8BB39E71C48F"> <Name> 12 </name> <EEX> 12 </EEXO> <LEL> 12 </Tel> </Contact> </user> <Nombre de usuario = "Rose" PWD = "4321"> <Contact Contact = Contact Contact id = "EEDB795B97194C3AAA9BACDA7E2948E9"> <name> xiaoming </name> <sexo> femenino </sexo> <lel> 123 </tel> </ext> </ser User> </contactos>
Utilizar
paquete 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 (). reemplazar ("-", ""); }} paquete 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.transformer; javax.xml.transform.stream.streamresult; import org.w3c.dom.document; public class myDocumentFactory {private static final string file_name = "./ xml/users.xml"; Documento estático privado DOM = NULL; static {documentBuilder db; intente {db = documentBuilderFactory.newinStance (). NewDocumentBuilder (); dom = db.parse (file_name); } Catch (Exception e) {Throw New RuntimeException ("Falló el análisis de documentos XML ...", e); }} documento estático público 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 ("Fallado de almacenamiento de documentos XML ...", e); } // ConfigurationError: excepción de configuración}}Dao
paquete cn.hncu.contact.dao; import java.util.list; import java.util.map; import org.w3c.dom.element; interfaz pública contactdao {public abstract boolean login (nombre de cadena, cadena pwd); Lista de resúmenes públicos <map <string, string >> QueryAll (); Public Abstract Element add (nombre de cadena, sexo de cadena, cadena tel); Public Abstract void reg (nombre de cadena, cadena pwd); Public Element Delete (ID de cadena); // cambio de elemento público abstracto predeterminado (ID de cadena, nombre de cadena, sexo de cadena, cadena tel);} paquete 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 og.w3c.dom.element; import og3c.nodalist; importación; importación; cn.hncu.contact.util.idgenerate; import cn.hncu.contact.util.myDocumentFactory; public class ContactImpl implementa ContactDao {Private Element CurrentUser; Documento dom = nulo; Public ContactImpl () {} // name de cadena estática privada = null; // cadena estática privada pwd = null; @Override // public boolean login (string name2, string pwd2) {public boolean login (name de cadena, cadena pwd) {// name = name2; // pwd = pwd2; dom = myDocumentFactory.getDocument (); Elemento root = (elemento) dom.getFirstChild (); Nodelist nodelist = root.getElementsBytagName ("usuario"); 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; devolver verdadero; }} return false; } @Override Public List <Map <String, String >> QueryAll () {list <map <string, string >> list = new ArrayList <map <string, string >> (); if (currentUser == null) {Lista de retorno; } Nodelist nodelist = currentUser.getElementsBytagName ("contacto"); for (int i = 0; i <nodelist.getLength (); i ++) {map <string, string> map = new HashMap <String, String> (); Elemento e = (elemento) nodelist.item (i); String id = e.getAttribute ("id"); map.put ("id", id); Name de cadena = e.getElementsBytagName ("Nombre"). Elem (0) .GetTextContent (); map.put ("nombre", nombre); String Sex = E.getElementsBytagName ("Sex"). Artem (0) .GetTextContent (); map.put ("sexo", sexo); String Tel = E.getElementsBytagName ("Tel"). Item (0) .GetTextContent (); map.put ("Tel", Tel); list.add (mapa); } Lista de retorno; } @Override public Elemento enewContact = dom.createElement ("contacto"); enewContact.setAttribute ("id", idgenerate.getId ()); Elemento namenew = dom.createElement ("nombre"); namenew.setTextContent (nombre); enewcontact.appendchild (Namenew); Elemento sexnew = dom.createElement ("sexo"); sexnew.settextcontent (sexo); enewcontact.appendchild (Sexnew); Elemento telnew = dom.createElement ("Tel"); Telnew.SetTextContent (Tel); enewContact.appendChild (Telnew); CurrentUser.appendChild (enewContact); myDocumentFactory.save (); // Login (nombre, pwd); devolver enewcontact; } Public Element Delete (ID de cadena) {nodelist nodelist = currentUser.getElementsByTagName ("contacto"); for (int i = 0; i <nodelist.getLength (); i ++) {element e = (element) nodelist.item (i); if (e.getAttribute ("id"). Equals (id)) {currentUser.removechild (e); // Eliminar el nodo del árbol myDocumentFactory.save (); // login (nombre, pwd); regresar e; }} return null; } @Override public void reg (name de cadena, string pwd) {document dom = myDocumentFactory.getDocument (); Elemento usernew = dom.createElement ("usuario"); usernew.setAttribute ("nombre", nombre); usernew.setAttribute ("pwd", pwd); dom.getFirstChild (). AppendChild (UserNew); myDocumentFactory.save (); } @Override Public Element Change (ID de cadena, nombre de cadena, sexo de cadena, cadena tel) {nodelist nodelist = currentUser.getElementsByTagName ("contacto"); for (int i = 0; i <nodelist.getLength (); i ++) {element e = (element) nodelist.item (i); if (e.getAttribute ("id"). Equals (id)) {E.getElementsBytagName ("Nombre"). Item (0) .SetTextContent (nombre); E.getElementsByTagName ("Sex"). Artículo (0) .SetTextContent (Sex); E.getElementsBytagName ("Tel"). Artem (0) .SetTextContent (Tel); myDocumentFactory.save (); // Login (nombre, pwd); regresar e; }} return null; }} paquete cn.hncu.contact.dao; public class ContactDaOfactory {private contactDaOfactory () {} public static ContactDao getContactDao () {return new ContactImpl (); }}CMD
paquete 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.da.contactDao; import; cn.hncu.contact.dao.contactdaofactory; public class ContactAction {private ContactDao Dao = ContactDaOfactory.getContactDao (); escáner privado sc = null; Delids de cadena privada []; public contactAction () {sc = new Scanner (System.in); while (true) {system.out.println ("1: login"); System.out.println ("2: registrar"); System.out.println ("0: salida"); Cadena op = sc.nextline (); if ("1" .equals (op)) {login (); } else if ("2" .equals (op)) {reg (); } else {// system.exit (0); romper; }}} private void reg () {system.out.println ("por favor ingrese el nombre de usuario:"); Name de cadena = sc.nextline (); System.out.println ("Ingrese la contraseña del usuario:"); Cadena pwd = sc.nextline (); System.out.println ("Confirme la contraseña del usuario:"); Cadena pwd2 = sc.nextline (); if (pwd.equals (pwd2)) {dao.reg (nombre, pwd); } else {System.out.println ("Las entradas de contraseña son inconsistentes, regístrese nuevamente"); }} private void login () {system.out.println ("por favor ingrese el nombre de usuario:"); Name de cadena = sc.nextline (); System.out.println ("Ingrese la contraseña del usuario:"); Cadena pwd = sc.nextline (); boolean boo = dao.login (nombre, pwd); if (boo) {system.out.println ("Iniciar sesión con éxito ..."); operación(); } 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"); delides [i ++] = id; } // while (true) {// Debido a que se comparte el mismo árbol DOM, después de cada adición, eliminación, modificación y verificación, sigue siendo el árbol DOM original. // Las operaciones en while son las operaciones anteriores, por lo que debe salir a la etapa anterior e iniciar sesión nuevamente para obtener el sistema DOM Tree actualizado.out.println ("1: Mostrar contacto"); System.out.println ("2: agregar contacto"); System.out.println ("3: Eliminar contacto"); System.out.println ("4: modificar contacto"); System.out.println ("0: salida"); Cadena sel = sc.nextline (); if ("1" .equals (sel)) {system.out.println ("número de serie/tname/tgender/ttel"); System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ map.get ("Tel"); ChangeContact (); System.out.println ("Ingrese el nombre del contacto para ser modificado:"); System.out.println ("Ingrese el apellido del contacto para ser modificado:"); String Sex = sc.nextline (); System.out.println ("Ingrese el número de teléfono del contacto a modificar:"); Cadena Tel = sc.nextline (); Elemento e = dao.change (delids [num-1], nombre, sexo, tel); if (e! = null) {system.out.println (num+"signo después de actualizar el contacto: nombre:"+e.getElementsBytagName ("nombre"). item (0) .gettextContent ()+"género:"+e.getElementsByTagName ("sexo"). item (0) .getTextContent ()+"Tel Número: "+E.getElementsBytagName (" Tel "). Item (0) .GetTextContent ()); } else {System.out.println ("Modificación fallida ..."); }} private void delContact () {System.out.println ("Ingrese el número de contacto eliminado:"); int num = sc.nextInt (); sc.nextline (); // chupa el elemento de carácter nuevo e = dao.delete (delides [num-1]); if (e == null) {System.out.println ("Eliminar fallido, sin contacto"); } else {System.out.println ("Eliminar el contacto:"+E.getElementsBytagName ("Nombre"). Item (0) .GetTextContent ()+"éxito ..."); }} private void addContact () {System.out.println ("Ingrese la información de contacto:"); System.out.println ("Nombre:"); Name de cadena = sc.nextline (); System.out.println ("Nombre:"); String Sex = sc.nextline (); System.out.println ("Tel:"); Cadena Tel = sc.nextline (); Elemento e = dao.add (nombre, sexo, tel); System.out.println ("Agregar contacto"+E.getElementsBytagName ("Nombre"). Elem (0) .GetteTtContent ()+"Success ..."); } public static void main (string [] args) {new ContactAction (); }}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.