⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 accountxmldao.java

📁 一个ATM银行模拟系统
💻 JAVA
字号:
package dao.impl;
import java.util.*;
import java.io.*;

import model.*;
import dao.AccountDao;

import org.w3c.dom.*;
import org.xml.sax.SAXException;

import javax.xml.parsers.*;

public class AccountXmlDao implements AccountDao{
	String fileName;
	public AccountXmlDao(String fileName) {
		super();
		this.fileName = fileName;
	}

	public Map loadAccounts() {
		Map as=new HashMap();
		
		try {
			DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
			DocumentBuilder b=dbf.newDocumentBuilder();
			Document doc=b.parse(fileName);
			
			NodeList nl=doc.getElementsByTagName("Account");
			for(int i=0;i<nl.getLength();i++){
				Element e=(Element)nl.item(i);
				
				String type=e.getAttribute("type");
				Account c=null;
				if (type.equals("SavingAccount")) c=new SavingAccount();
				if (type.equals("CreditAccount")) c=new CreditAccount();
				if (type.equals("LoanSavingAccount")) c=new LoanSavingAccount();
				if (type.equals("LoanCreditAccount")) c=new LoanCreditAccount();
				
				NodeList nl2=e.getChildNodes();
				for(int j=0;j<nl2.getLength();j++){
					Node n=nl2.item(j);
					if (n.getNodeType()==Node.ELEMENT_NODE){
						Element e2=(Element)n;
						String name=e2.getTagName();
						String value=e2.getTextContent().trim();
						if (name.equals("ID")) c.setId(Long.parseLong(value));
						if (name.equals("Password")) c.setPassword(value);
						if (name.equals("PersonId")) c.setPersonId(value);
						if (name.equals("Name")) c.setName(value);
						if (name.equals("Email")) c.setEmail(value);
						if (name.equals("Balance")) c.setBalance(Double.parseDouble(value));
						if (name.equals("Ceiling")){
							CreditAccount ca=(CreditAccount)c;
							ca.setCeiling(Double.parseDouble(value));
						}
						if (name.equals("Loan")){
							Loanable l=(Loanable)c;
							l.setLoan(Double.parseDouble(value));
						}
					}
				}
				
				as.put(c.getId(),c);
				
			}
		}  catch (Exception e) {
			e.printStackTrace();
		}
		
		return as;
		
	}

	public void saveAccounts(Map accounts) {
		PrintWriter out=null;
		try {
			out = new PrintWriter(fileName);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		
		out.println("<?xml version=\"1.0\" ?>");
		out.println("<Accounts>");
		
		Collection as=accounts.values();
		for(Object o:as){
			Account c=(Account)o;
			out.print("\t<Account type=\"");
			out.println(o.getClass().getSimpleName()+"\" >");
			
			out.println("\t\t<ID>"+c.getId()+"</ID>");
			out.println("\t\t<Password>"+c.getPassword()+"</Password>");
			out.println("\t\t<Name>"+c.getName()+"</Name>");
			out.println("\t\t<PersonId>"+c.getPersonId()+"</PersonId>");
			out.println("\t\t<Email>"+c.getEmail()+"</Email>");
			out.println("\t\t<Balance>"+c.getBalance()+"</Balance>");
			
			if (c instanceof CreditAccount){
				CreditAccount ca=(CreditAccount)c;
				out.println("\t\t<Ceiling>"+ca.getCeiling()+"</Ceiling>");
			}
			if (c instanceof Loanable ){
				Loanable l=(Loanable)c;
				out.println("\t\t<Loan>"+l.getLoan()+"</Loan>");
			}
			
			out.println("\t</Account>");
		}
		
		out.println("</Accounts>");
		out.close();
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -