Os exemplos deste artigo compartilham com você o design de graduação do sistema de gerenciamento de contatos Java para sua referência. O conteúdo específico é o seguinte
Requer:
Use XML para salvar dados e preencher um sistema de gerenciamento de contatos.
Os usuários devem ser autenticados e conectados antes que possam usar o sistema.
Registre, adicione, exclua, visualize as funções de contato.
Projetado em módulos .
Camada de interação do usuário-quadro-quadro de duas camadas, camada DAO.
Outras camadas de suporte - camada de encapsulamento de dados.
Ferramentas - criptografia, feijão de fábrica.
Etapas de desenvolvimento:
Etapa 1: projete a estrutura de dados - xml.
Etapa 1: projete a estrutura de dados - xml.
Etapa 3: prepare os recursos e codificá -los para implementá -los.
Etapa 4: execute o teste.
<? xml versão = "1.0" coding = "utf-8" standalone = "não"?> <Counts> <nome do usuário = "jack" pwd = "1234"> <contato ID = "707DEDE609DD4A2990F7CFA4CD5233F9"> <nome> xiaoming <iAchaoming </names> xiaoming <name> xiaoming <xiaoming <iAnge> xiaoming </name) <Tel> 123456 </tel> </satch> <contato id = "80983802eaa6402d8bac8bb39e71c48f"> <name> 12 </name> <Tex> 12 </sex> id = "eedb795b97194c3aaa9bacda7e2948e9"> <name> xiaoming </name> <ogem> feminino </sex> <el> 123 </el> </soucet> </suser> </soustics>
Util
pacote cn.hncu.contact.util; importar java.util.uuid; public class Idgereate {private idGeRerate () {} public static string getId () {// retorna uuid.randomuuid (). tostring (); return uuid.randomuuid (). ToString (). substituir ("-", ""); }} pacote cn.hncu.contact.util; importar javax.xml.parsers.documentBuilder; importar javax.xml.parsers.documentBuilderFactory; import javax.xml.Transform.Transformer; import javax.xmml.Transform.TransformerFerFerform.Transformer; Importsrox.MML.Transform.Transform.Transformer; Importsrox.xavax.Transform.TransforMerFerform.Transformer; ImportsMORTRAX.TRANSLOMOURFORMORTRAIRFORME; javax.xml.transform.stream.streamResult; importar org.w3c.dom.document; public class myDocumentFactory {private static final string file_name = "./ xml/usuários.xml"; Documento estático privado DOM = nulo; estático {documentbuilder db; tente {db = documentBuilderFactory.NewInstance (). newDocumentBuilder (); dom = db.parse (file_name); } catch (Exceção e) {lança nova RunTimeException ("A análise do documento XML falhou ...", e); }} documento estático público getDocument () {return dom; } public static void save () {try {transformador tf = transformerFactory.NewInstance (). newtransformer (); tf.transform (new Domsource (DOM), new StreamResult (file_name)); } catch (Exceção e) {lança nova RunTimeException ("Armazenamento de documentos XML falhou ...", e); } // ConfigurationError: Exceção de configuração}}Dao
pacote cn.hncu.contact.dao; importar java.util.list; importar java.util.map; importar org.w3c.dom.element; interface pública contactdao {public abstrate boolean login (nome da string, string pwd); Lista de resumo pública <mapa <string, string >> queryall (); Public Resumo Element Add (Nome da String, String Sex, String Tel); Public Resumo Void Reg (Nome da String, String PWD); Public Element Delete (string ID); // ABRATO PRATUMO Public Abstract Element Change (ID da string, Nome da String, String Sex, String Tel);} pacote cn.hncu.contact.dao; importar java.util.ArrayList; importar java.util.hashmap; importar java.util.list; importar java.util.map; importação org.w3c.dom.document; import.w3c.omement.eMement; importist org.w3c.dom.document; import.w3c.omement; importação; cn.hncu.contact.util.idgenerate; import cn.hncu.contact.util.myDocumentFactory; public class ContactImpl implementa contactDao {private elemento currentUser; Documento dom = null; public contactImpl () {} // Nome da string estática privada = null; // String estática privada PWD = null; @Substituir // public boolean login (string name2, string pwd2) {public boolean login (nome da string, string pwd) {// name = name2; // pwd = pwd2; dom = myDocumentFactory.getDocument (); Elemento root = (elemento) dom.getfirstchild (); Nodelist nodelist = root.getElementsByTagName ("usuário"); for (int i = 0; i <nodelist.getLength (); i ++) {elemento e = (elemento) nodelist.item (i); if (e.getAttribute ("name"). Equalsignorecase (nome) && e.getAttribute ("pwd"). Equalsignorecase (pwd)) {currentUser = e; retornar true; }} retornar 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 ("contact"); 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); Nome da string = E.GetElementsByTagName ("Nome"). Item (0) .GetTextContent (); map.put ("nome", nome); String sex = e.getElementsByTagName ("Sex"). Item (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 Element Add (Nome da String, String Sex, String Tel) {Document Dom = MyDocumentFactory.getDocument (); Elemento eNewContact = dom.createElement ("contato"); eNewContact.SetAttribute ("ID", IDGEDER.GETID ()); Elemento namenew = dom.createElement ("nome"); namenew.settextContent (nome); 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 (nome, PWD); Retornar ENEWCONTACT; } public Element Delete (string ID) {nodelist nodelist = currentUser.getElementsByTagName ("Contact"); for (int i = 0; i <nodelist.getLength (); i ++) {elemento e = (elemento) nodelist.item (i); if (e.getAttribute ("id"). igual a (id)) {currentUser.RemoveChild (e); // remova o nó da árvore mydocumentFactory.save (); // login (nome, pwd); retornar e; }} retornar nulo; } @Override public void reg (nome da string, string pwd) {document dom = myDocumentFactory.getDocument (); Elemento userNew = dom.createElement ("usuário"); UserNew.SetAttribute ("Nome", Nome); UserNew.SetAttribute ("PWD", PWD); dom.getfirstchild (). AppendChild (UserNew); myDocumentFactory.Save (); } @Override Public Element Altery (string ID, nome da string, sexo da string, string tel) {nodelist nodelist = currentUser.getElementsByTagName ("contact"); for (int i = 0; i <nodelist.getLength (); i ++) {elemento e = (elemento) nodelist.item (i); if (e.getAttribute ("id"). igual (id)) {e.getElementsByTagName ("nome"). item (0) .SetteXTContent (nome); E.GetElementsByTagName ("Sex"). Item (0) .SettextContent (sexo); E.GetElementsByTagName ("Tel"). Item (0) .SettextContent (Tel); myDocumentFactory.Save (); // Login (nome, PWD); retornar e; }} retornar nulo; }} pacote cn.hncu.contact.dao; classe pública contactDaofactory {private contactDaofactory () {} public static contatdao getContactDao () {return new contactImpl (); }}cmd
pacote cn.hncu.contact.cmd; importar java.util.list; importar java.util.map; importar java.util.scanner; importar org.w3c.dom.Element; import cn.hncu.contact.da.conttao; cn.hncu.contact.dao.contactDaofactory; public class ContactAction {private contactDao dao = contactDaofactory.getContactDao (); Scanner privado sc = nulo; String private delids []; public contactAction () {sc = new Scanner (System.in); while (true) {System.out.println ("1: login"); System.out.println ("2: registro"); System.out.println ("0: Exit"); String op = sc.NextLine (); if ("1" .equals (op)) {login (); } else if ("2" .equals (op)) {reg (); } else {// System.exit (0); quebrar; }}} private void reg () {System.out.println ("Por favor, digite o nome de usuário:"); Nome da sequência = SC.NextLine (); System.out.println ("Digite a senha do usuário:"); String pwd = sc.nextLine (); System.out.println ("Confirme a senha do usuário:"); String pwd2 = sc.nextLine (); if (pwd.equals (pwd2)) {Dao.reg (nome, PWD); } else {System.out.println ("As entradas de senha são inconsistentes, registre -se novamente"); }} private void login () {System.out.println ("Por favor, digite o nome do usuário:"); Nome da sequência = SC.NextLine (); System.out.println ("Digite a senha do usuário:"); String pwd = sc.nextLine (); boone boo = dao.login (nome, PWD); if (boo) {system.out.println ("login com sucesso ..."); operação(); } else {System.out.println ("DengLushibai"); }} private void operação () {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) {// porque a mesma árvore Dom é compartilhada, após cada adição, exclusão, modificação e verificação, ela ainda é a árvore Dom original. // as operações em que estão as operações anteriores, então você deve sair para o estágio anterior e fazer login novamente para obter o sistema de árvore Dom atualizado.out.println ("1: mostrar contato"); System.out.println ("2: Adicionar contato"); System.out.println ("3: excluir contato"); System.out.println ("4: modificar contato"); System.out.println ("0: Exit"); String SEL = SC.NextLine (); if ("1" .equals (SEL)) {System.out.println ("Número de série/TNAME/TGENDER/TTEL"); System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ map.get ("tel"); ChangeContact (); System.out.println ("Por favor, digite o nome do contato a ser modificado:"); System.out.println ("Por favor, insira o sobrenome do contato a ser modificado:"); String sex = sc.nextLine (); System.out.println ("Por favor, insira o número de telefone do contato a ser modificado:"); String tel = sc.NextLine (); Elemento e = dao.change (delids [num-1], nome, sexo, tel); if (e! = null) {System.out.println (num+"assinatura após o contato ser atualizado: nome:"+e.getElementsByTagName ("nome"). Item (0) .getTextContent ()+"gênero:"+e.getElementsByTagName ("sexo"). Item (0). Número: "+E.GetElementsByTagName (" Tel "). Item (0) .GetTextContent ()); } else {System.out.println ("Falha na modificação ..."); }} private void delcontact () {System.out.println ("Por favor, digite o número de contato excluído:"); int num = sc.nextInt (); sc.NextLine (); // sugam o elemento do caractere nova e = dao.delete (delids [num-1]); if (e == null) {System.out.println ("Delete falhou, sem contato"); } else {System.out.println ("Exclua contato:"+e.getElementsByTagName ("nome"). Item (0) .getTextContent ()+"Sucesso ..."); }} private void addContact () {System.out.println ("Por favor, insira informações de contato:"); System.out.println ("Nome:"); Nome da sequência = SC.NextLine (); System.out.println ("Nome:"); String sex = sc.nextLine (); System.out.println ("Tel:"); String tel = sc.NextLine (); Elemento e = dao.add (nome, sexo, tel); System.out.println ("Adicionar contato"+e.getElementsByTagName ("nome"). Item (0) .getTextContent ()+"Sucesso ..."); } public static void main (string [] args) {new ContactAction (); }}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.