基本信息
源码名称:java课程设计:通讯录源码,实现了增、删、改、查(基于xml)
源码大小:0.02M
文件格式:.rar
开发语言:Java
更新时间:2019-06-12
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍
基于XML的课程设计,可以运行,通讯录,添加修改信息等





package xml;

import java.awt.event.*;

import javax.swing.*;
import javax.swing.border.EmptyBorder;

import java.awt.*;

import javax.xml.parsers.*;

import java.io.*;

import org.w3c.dom.*;

import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;

@SuppressWarnings("serial")
public class AddressList extends JFrame implements ActionListener{
	private AddressList mainFrame=this;
	JButton addRecord = new JButton("添加");
	JButton lookup    = new JButton("查找");
	JButton delete    = new JButton("�h除");
	JButton change    = new JButton("修改");
	JButton showAllResult = new JButton("所有");

	
	JTextField qq = new JTextField(8);
	JTextField name = new JTextField(8);
	Object[] sex = {"男", "女"};
	JComboBox<Object> gender = new JComboBox<Object>(sex);
	JTextField age = new JTextField(8);
	JTextField address = new JTextField(15);
	JTextField phone = new JTextField(10);
	
	JLabel[] empty = new JLabel[10];
	
	int ColLenght = 125;
	int width = 700;
	int height = 530;
	
	Object[] columnNames = {"姓名", "性别","QQ", "年龄", "地址", "联系电话"};
	Object[][] studentInfo = new Object[ColLenght][6];
	JTable table = new JTable(studentInfo, columnNames);
	
	JFrame find=new Find();
	JFrame verify=new Change();
	
	Document doc;

	public AddressList(){
		setTitle("通讯录");
		setSize(width, height);
		setVisible(true);
		setResizable(false);
		setLocationRelativeTo(null);//将框架至于屏幕中间
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
        ///////////////////////////////
        //修改背景图片,图片大小最好为 width*height像素
    	JLabel label = new JLabel(new ImageIcon("Img/22.jpg"));// 把背景图片显示在一个标签里面
    	label.setBounds(0, 0, width, height);
    	((JPanel) this.getContentPane()).setOpaque(false);

    	this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
        /////////////////////////////////////////////
		setLayout(new BorderLayout());
		JPanel p2=new JPanel(); p2.setOpaque(false);
		p2.setLayout(new GridLayout(0, 1, 0, 20));
		
		for(int i = 0; i < 2; i  ){
			empty[i] = new JLabel();
			p2.add(empty[i]);
		}
		//修改按钮颜色
		lookup.setBackground(Color.green);
		delete.setBackground(Color.green);
		addRecord.setBackground(Color.green);
		change.setBackground(Color.green);
		showAllResult.setBackground(Color.green);
		
		p2.add(lookup);
		p2.add(delete);
		p2.add(addRecord);
		p2.add(change);
		p2.add(showAllResult);
		for(int i = 0; i < 4; i  ){
			empty[i] = new JLabel();
			p2.add(empty[i]);
		}
		this.add(p2, BorderLayout.EAST);
		
		JPanel p3=new JPanel(); p3.setOpaque(false);
		p3.add("Center", new JScrollPane(table));

		this.add(p3, BorderLayout.CENTER);
			
		validate();
		
		addRecord.addActionListener(this);
		lookup.addActionListener(this);
		delete.addActionListener(this);
		change.addActionListener(this);
		showAllResult.addActionListener(this);
		
		//为表格添加单击事件 匿名类实现
		table.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				name.setText((String)studentInfo[table.getSelectedRow()][0]);
				System.out.println(name.getText());
				if(((String)studentInfo[table.getSelectedRow()][1]).equals("男"))//判断是男还是女
					gender.setSelectedIndex(0);
				else
					gender.setSelectedIndex(1);
				qq.setText((String)studentInfo[table.getSelectedRow()][2]);
				age.setText((String)studentInfo[table.getSelectedRow()][3]);
				address.setText((String)studentInfo[table.getSelectedRow()][4]);
				phone.setText((String)studentInfo[table.getSelectedRow()][5]);
			}
		});
		init();//初始化表格
	}
	
	public static void main(String[] args){
		new AddressList();
	}
	
	File xmlFile = null;
	public Document getDocument()throws Exception{
		xmlFile = new File("src/data.xml");
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = factory.newDocumentBuilder();
		Document doc = builder.parse(xmlFile);
		return doc;
	}
	
	public void init(){//初始化表格
		for(int i = 0; i < table.getRowCount(); i  ){
			studentInfo[i][0] = "";
			studentInfo[i][1] = "";
			studentInfo[i][2] = "";
			studentInfo[i][3] = "";
			studentInfo[i][4] = "";
			studentInfo[i][5] = "";
		}
		try{
			doc = getDocument();
			Element root = doc.getDocumentElement();
			NodeList names = root.getElementsByTagName("name");
			NodeList sexes = root.getElementsByTagName("sex");
			NodeList qqs = root.getElementsByTagName("qq");
			NodeList ages = root.getElementsByTagName("age");
			NodeList addresses = root.getElementsByTagName("address");
			NodeList phones = root.getElementsByTagName("phone");
		
			for(int i = 0; i < names.getLength() && i < ColLenght; i  ){
				studentInfo[i][0] = names.item(i).getTextContent();
				studentInfo[i][1] = sexes.item(i).getTextContent();
				studentInfo[i][2] = qqs.item(i).getTextContent();
				studentInfo[i][3] = ages.item(i).getTextContent();
				studentInfo[i][4] = addresses.item(i).getTextContent();
				studentInfo[i][5] = phones.item(i).getTextContent();
			}
			repaint();
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public void actionPerformed(ActionEvent e){
		if(addRecord == e.getSource()){
			new AddAndChange();
		}
		
		if(delete == e.getSource()){
			try
			{
				System.out.println(table.getSelectedRow());
				Element root = doc.getDocumentElement();
				root.removeChild(root.getElementsByTagName("sex").item(table.getSelectedRow()).getParentNode());
				TransformerFactory transformerFactory = TransformerFactory.newInstance();
			    Transformer transformer = transformerFactory.newTransformer();
			    DOMSource newDomSource = new DOMSource(root);
			    transformer.transform(newDomSource,new StreamResult(new FileOutputStream(xmlFile)));
			    init();
			}
			catch(Exception e9){
				e9.printStackTrace();
			}
		}
		
		if(lookup == e.getSource()){
			find.setVisible(true);
		}
		
		if(showAllResult == e.getSource()){
			init();
		}
		
		if(change == e.getSource()){
			verify.setVisible(true);
		}
	}
	
	public Node makeupPeopleNode(Document doc,String n,String s,String q,String a,String ad,String p){
		Element people2 = doc.createElement("people");
		try{
			Element name2 = doc.createElement("name");
			Element sex2 = doc.createElement("sex");
			Element qq2 = doc.createElement("qq");
			Element age2 = doc.createElement("age");
			Element address2 = doc.createElement("address");
			Element phone2 = doc.createElement("phone");
	
			name2.setTextContent(n);
			sex2.setTextContent(s);
			qq2.setTextContent(q);
			age2.setTextContent(a);
			address2.setTextContent(ad);
			phone2.setTextContent(p);

			people2.appendChild(name2);
			people2.appendChild(sex2);
			people2.appendChild(qq2);
			people2.appendChild(age2);
			people2.appendChild(address2);
			people2.appendChild(phone2);
		}
		catch(Exception e){
			e.printStackTrace();
		}
		return people2;
	}
	
	private class Find extends JFrame{
		JTextField name = new JTextField(8);
		JButton chzhao = new JButton("查找");

		public Find() {
			setTitle("查找");
			setSize(200, 120);
			
			setResizable(false);
			setLocationRelativeTo(null);//将框架至于屏幕中间
			setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
			
	        ///////////////////////////////  
	    	JLabel label = new JLabel(new ImageIcon("Img/find.jpg"));// 把背景图片显示在一个标签里面
	    	label.setBounds(0, 0, 200, 120);
	    	((JPanel) this.getContentPane()).setOpaque(false);
	    	this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
	        /////////////////////////////////////////////
			
			setLayout(new BorderLayout());
			
			JPanel panel1=new JPanel();
			JPanel panel2=new JPanel();
			
			panel1.setOpaque(false);
			panel2.setOpaque(false);
			
			name.setBorder(BorderFactory.createTitledBorder("姓名"));
			panel1.add(name);
			panel2.add(chzhao);
			add(panel1,BorderLayout.NORTH);
			add(panel2,BorderLayout.SOUTH);
			chzhao.setBackground(Color.green);
			chzhao.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					if(chzhao == e.getSource()){
						String lookupName = name.getText();
						try{
					        for(int i = 0; i < table.getRowCount(); i  ){
								studentInfo[i][0] = "";
								studentInfo[i][1] = "";
								studentInfo[i][2] = "";
								studentInfo[i][3] = "";
								studentInfo[i][4] = "";
								studentInfo[i][5] = "";
							}

							doc = getDocument();
							Element root = doc.getDocumentElement();
							NodeList names = root.getElementsByTagName("name");
							NodeList sexes = root.getElementsByTagName("sex");
							NodeList qqs = root.getElementsByTagName("qq");
							NodeList ages = root.getElementsByTagName("age");
							NodeList addresses = root.getElementsByTagName("address");
							NodeList phones = root.getElementsByTagName("phone");
							
							int index=0;
							for(int i = 0; i < names.getLength(); i  ){
								if(names.item(i).getTextContent().indexOf(lookupName) != -1){
									studentInfo[index][0] = names.item(i).getTextContent();
									studentInfo[index][1] = sexes.item(i).getTextContent();
									studentInfo[index][2] = qqs.item(i).getTextContent();
									studentInfo[index][3] = ages.item(i).getTextContent();
									studentInfo[index][4] = addresses.item(i).getTextContent();
									studentInfo[index][5] = phones.item(i).getTextContent();
									index  ;
								}
							}
							mainFrame.repaint();
						}
						catch(Exception e8){
							e8.printStackTrace();
						}
					}
				}
			});
		}
	}
	
	private class Change extends JFrame{
		JButton changeRecord = new JButton("保存");

		public Change() {
			setTitle("修改");
			setSize(560, 150);
			setResizable(false);
			setLocationRelativeTo(null);//将框架至于屏幕中间
			setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
			
	        ///////////////////////////////  
	    	JLabel label = new JLabel(new ImageIcon("Img/change.jpg"));// 把背景图片显示在一个标签里面
	    	label.setBounds(0, 0, 560, 150);
	    	((JPanel) this.getContentPane()).setOpaque(false);
	    	this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
	        /////////////////////////////////////////////
	    	changeRecord.setBackground(Color.green);
			qq.setBorder(BorderFactory.createTitledBorder("QQ"));
			name.setBorder(BorderFactory.createTitledBorder("姓名"));
			gender.setBorder(BorderFactory.createTitledBorder("性别"));
			age.setBorder(BorderFactory.createTitledBorder("年龄"));
			address.setBorder(BorderFactory.createTitledBorder("地址"));
			phone.setBorder(BorderFactory.createTitledBorder("电话号码"));
			
			setLayout(new BorderLayout());
			JPanel p = new JPanel(); p.setOpaque(false);
			p.setLayout(new GridLayout(1,0,0,20));
			p.add(name);
			p.add(gender);
			p.add(age);
			p.add(address);
			p.add(phone);
			p.add(qq);
			add(p,BorderLayout.NORTH);
			
			JPanel p1 = new JPanel(); p1.setOpaque(false);
			p1.add(changeRecord);
			add(p1,BorderLayout.SOUTH);
			
			changeRecord.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					String n="",s="",q="",a="",ad="",p="";
					try{n=name.getText();}catch(Exception e2){n="";}
					try{s=(String)(gender.getSelectedItem());}catch(Exception e3){s="";}
					try{q=qq.getText();}catch(Exception e4){q="";}
					try{a=age.getText();}catch(Exception e5){a="";}
					try{ad=address.getText();}catch(Exception e6){ad="";}
					try{p=phone.getText();}catch(Exception e7){p="";}
					try{
						Element root = doc.getDocumentElement();
						//System.out.println(root.getElementsByTagName("sex").item(table.getSelectedRow()).getParentNode().getTextContent());
						root.replaceChild(makeupPeopleNode(doc,n,s,q,a,ad,p),root.getElementsByTagName("sex").item(table.getSelectedRow()).getParentNode());
						TransformerFactory transformerFactory = TransformerFactory.newInstance();
				        Transformer transformer = transformerFactory.newTransformer();
				        DOMSource newDomSource = new DOMSource(root);
				        transformer.transform(newDomSource,new StreamResult(new FileOutputStream(xmlFile)));
				        init();
					}
					catch(Exception e8)
					{
						System.out.println("异常信息5:"   e8);
					}
				}
			});
			
			try {
				doc = getDocument();
			} catch (Exception e) {
				e.printStackTrace();
			}
			
			
		}
	}
}