首页>代码>Java swing开发创意版贪吃蛇小游戏>/StarGame/src/com/game/Users.java
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日
最近浏览更多
三角阀  LV4 7月13日
long123_356  LV7 6月22日
lsglsg9  LV23 5月23日
zattttt  LV1 5月15日
ClydeSon  LV5 2023年12月27日
zhihong fan  LV2 2023年12月26日
jkjfdgbkl  LV2 2023年11月1日
wty1132 2023年6月27日
暂无贡献等级
baihaushu  LV1 2023年6月13日
不会敲代码 2023年6月11日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友