在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例文件解析和处理 → java课程设计:通讯录源码,实现了增、删、改、查(基于xml)

java课程设计:通讯录源码,实现了增、删、改、查(基于xml)

文件解析和处理

下载此实例
  • 开发语言:Java
  • 实例大小:0.02M
  • 下载次数:90
  • 浏览次数:618
  • 发布时间:2019-06-12
  • 实例类别:文件解析和处理
  • 发 布 人:crazycode
  • 文件格式:.rar
  • 所需积分:2
 相关标签: Xml 代码 设计

实例介绍

【实例简介】基于XML的课程设计,可以运行,通讯录,添加修改信息等

【实例截图】

from clipboard


from clipboard


from clipboard


from clipboard

【核心代码】


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();
			}
			
			
		}
	}
}


标签: Xml 代码 设计

实例下载地址

java课程设计:通讯录源码,实现了增、删、改、查(基于xml)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警