package com.game; import java.io.IOException; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.*; import org.xml.sax.SAXException; public class Users { Document document; //DOM解析XML文件后得到的Document NodeList userlist; //所有user的列表 //初始化并解析成DOM树 Users(){ DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); try { DocumentBuilder db=dbf.newDocumentBuilder(); document=db.parse("data/users.xml"); userlist=document.getElementsByTagName("user"); }catch(ParserConfigurationException | SAXException | IOException e) { e.printStackTrace(); } } //更改密码 public void modifyPass(int id,String pass) { pass=MD5.md5(MD5.salt+pass); for(int i=0;i<userlist.getLength();i++) { Node user=userlist.item(i); if(Integer.parseInt(user.getChildNodes().item(0).getTextContent())==id) { user.getChildNodes().item(2).setTextContent(pass); break; } } TransformerFactory transformerFactory=TransformerFactory.newInstance(); try { Transformer transformer=transformerFactory.newTransformer(); transformer.transform(new DOMSource(document), new StreamResult("data/users.xml")); } catch (TransformerException e) { e.printStackTrace(); } } //判断账户是否存在 public boolean isExist(String account) { for(int i=0;i<userlist.getLength();i++) { Node user=userlist.item(i); if(account.equals(user.getChildNodes().item(1).getTextContent())) return true; } return false; } //验证安全问题是否正确 public boolean authenticationInformation(String account,String question,String answer) { answer=MD5.md5(MD5.salt+answer); for(int i=0;i<userlist.getLength();i++) { Node user=userlist.item(i); if(account.equals(user.getChildNodes().item(1).getTextContent()) && question.equals(user.getChildNodes().item(3).getTextContent()) && answer.equals(user.getChildNodes().item(4).getTextContent())) return true; } return false; } //验证账号密码 public int authentication(String account,String pass) { pass=MD5.md5(MD5.salt+pass); for(int i=0;i<userlist.getLength();i++) { Node user=userlist.item(i); if(account.equals(user.getChildNodes().item(1).getTextContent()) && pass.equals(user.getChildNodes().item(2).getTextContent())) return Integer.valueOf(user.getChildNodes().item(0).getTextContent()); } return 0; } //通过账号取id public int getId(String account) { for(int i=0;i<userlist.getLength();i++) { Node user=userlist.item(i); if(account.equals(user.getChildNodes().item(1).getTextContent())) return Integer.parseInt(user.getChildNodes().item(0).getTextContent()); } return 0; } //通过id取最高分 public int getMaxScore(int id) { for(int i=0;i<userlist.getLength();i++) { Node user=userlist.item(i); if(Integer.parseInt(user.getChildNodes().item(0).getTextContent())==id) return Integer.parseInt(user.getChildNodes().item(5).getTextContent()); } return 0; } //通过id取游戏局数 public int getTime(int id) { for(int i=0;i<userlist.getLength();i++) { Node user=userlist.item(i); if(Integer.parseInt(user.getChildNodes().item(0).getTextContent())==id) return Integer.parseInt(user.getChildNodes().item(6).getTextContent()); } return 0; } //通过id取账号 public String getAccount(int id) { for(int i=0;i<userlist.getLength();i++) { Node user=userlist.item(i); if(Integer.parseInt(user.getChildNodes().item(0).getTextContent())==id) return user.getChildNodes().item(1).getTextContent(); } return ""; } //取用户数量 public int getUserCount() { return userlist.getLength(); } //更改最高分和局数 public void modifyMaxScoreAndTime(int id,int maxscore,int time) { for(int i=0;i<userlist.getLength();i++) { Node user=userlist.item(i); if(Integer.parseInt(user.getChildNodes().item(0).getTextContent())==id) { user.getChildNodes().item(5).setTextContent(String.valueOf(maxscore)); user.getChildNodes().item(6).setTextContent(String.valueOf(time)); break; } } TransformerFactory transformerFactory=TransformerFactory.newInstance(); try { Transformer transformer=transformerFactory.newTransformer(); transformer.transform(new DOMSource(document), new StreamResult("data/users.xml")); } catch (TransformerException e) { e.printStackTrace(); } } //添加用户 public void addUser(int id,String account,String pass,String question,String answer,int maxscore,int time) { answer=MD5.md5(MD5.salt+answer); pass=MD5.md5(MD5.salt+pass); Element element=document.createElement("user"); Element child_element=document.createElement("id"); child_element.appendChild(document.createTextNode(String.valueOf(id))); element.appendChild(child_element); child_element=document.createElement("account"); child_element.appendChild(document.createTextNode(account)); element.appendChild(child_element); child_element=document.createElement("pass"); child_element.appendChild(document.createTextNode(pass)); element.appendChild(child_element); child_element=document.createElement("question"); child_element.appendChild(document.createTextNode(question)); element.appendChild(child_element); child_element=document.createElement("answer"); child_element.appendChild(document.createTextNode(answer)); element.appendChild(child_element); child_element=document.createElement("maxscore"); child_element.appendChild(document.createTextNode(String.valueOf(maxscore))); element.appendChild(child_element); child_element=document.createElement("time"); child_element.appendChild(document.createTextNode(String.valueOf(time))); element.appendChild(child_element); document.getElementsByTagName("users").item(0).appendChild(element); TransformerFactory transformerFactory=TransformerFactory.newInstance(); try { Transformer transformer=transformerFactory.newTransformer(); transformer.transform(new DOMSource(document), new StreamResult("data/users.xml")); } catch (TransformerException e) { e.printStackTrace(); } } } class MD5 { public static String salt="asdfji1SDxx)(^5@!*&^>?|00xxSAD1x"; public static String md5(String plainText) { byte[] secretBytes = null; try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(plainText.getBytes()); secretBytes = md.digest(); } catch (NoSuchAlgorithmException e) { throw new RuntimeException("没有md5这个算法!"); } String md5code = new BigInteger(1, secretBytes).toString(16); for (int i = 0; i < 32 - md5code.length(); i++) { md5code = "0" + md5code; } return md5code; } }
最近下载更多
lsglsg9 LV23
5月23日
huangzy LV12
2023年6月7日
微信网友_6268131861106688 LV5
2022年12月21日
Demo1111 LV30
2021年12月10日
tangjj7260 LV18
2021年11月17日
qsyqa0 LV6
2021年9月4日
顽皮的imp LV5
2021年6月23日
你们的代码都是我的了 LV16
2021年5月16日
live1018 LV12
2020年12月23日
JacksonLee LV1
2020年12月17日