Java实现XML文件学生通讯录
java实现学生通讯录,使用XML文件作为数据存储,实现学生编号,姓名,年龄,住址,专业,生日等信息的添加,删除,修改,查找,备份,恢复,专业分类查找等功能。
项目需要导入dom4j.jar包。
/* 添加学生记录 */ importjava.awt.BorderLayout; importjava.awt.EventQueue; importjavax.swing.ButtonGroup; importjavax.swing.JFrame; importjavax.swing.JPanel; importjavax.swing.border.EmptyBorder; importjavax.swing.JLabel; importjavax.swing.JOptionPane; importjava.awt.Font; importjava.awt.event.ActionEvent; importjava.awt.event.ActionListener; importjavax.swing.JTextField; importjavax.swing.JRadioButton; importjavax.swing.JButton; importjavax.swing.JComboBox; publicclassAddPersonextendsJFrame{ privateJPanelcontentPane; privateJTextFieldjt1; privateJTextFieldjt2; privateJTextFieldjt3; privateJTextFieldjt4; privateJTextFieldjt5; privateJTextFieldjt6; privateJTextFieldjt7; publicAddPerson(){ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100,100,450,489); contentPane=newJPanel(); contentPane.setBorder(newEmptyBorder(5,5,5,5)); contentPane.setLayout(null); setContentPane(contentPane); JLabeljl1=newJLabel("学生通讯录"); jl1.setFont(newFont("宋体",Font.PLAIN,16)); jl1.setBounds(10,0,95,29); contentPane.add(jl1); JLabeljl2=newJLabel("学生编号"); jl2.setFont(newFont("宋体",Font.PLAIN,16)); jl2.setBounds(51,39,65,29); contentPane.add(jl2); JLabeljl3=newJLabel("学生姓名"); jl3.setFont(newFont("宋体",Font.PLAIN,16)); jl3.setBounds(51,78,65,29); contentPane.add(jl3); JLabeljl4=newJLabel("学生性别"); jl4.setFont(newFont("宋体",Font.PLAIN,16)); jl4.setBounds(51,117,65,29); contentPane.add(jl4); JLabeljl5=newJLabel("学生年龄"); jl5.setFont(newFont("宋体",Font.PLAIN,16)); jl5.setBounds(51,163,65,29); contentPane.add(jl5); JLabeljl6=newJLabel("出生日期"); jl6.setFont(newFont("宋体",Font.PLAIN,16)); jl6.setBounds(51,202,65,29); contentPane.add(jl6); JLabeljl7=newJLabel("手机号码"); jl7.setFont(newFont("宋体",Font.PLAIN,16)); jl7.setBounds(51,250,65,29); contentPane.add(jl7); JLabeljl8=newJLabel("电子邮箱"); jl8.setFont(newFont("宋体",Font.PLAIN,16)); jl8.setBounds(51,296,65,29); contentPane.add(jl8); JLabeljl9=newJLabel("家庭住址"); jl9.setFont(newFont("宋体",Font.PLAIN,16)); jl9.setBounds(51,345,65,29); contentPane.add(jl9); JLabeljl10=newJLabel("专业名称"); jl10.setFont(newFont("宋体",Font.PLAIN,16)); jl10.setBounds(51,389,65,29); contentPane.add(jl10); jt1=newJTextField(); jt1.setBounds(129,38,150,34); contentPane.add(jt1); jt1.setColumns(10); jt2=newJTextField(); jt2.setColumns(10); jt2.setBounds(129,83,150,34); contentPane.add(jt2); jt3=newJTextField(); jt3.setColumns(10); jt3.setBounds(129,163,150,34); contentPane.add(jt3); jt4=newJTextField(); jt4.setColumns(10); jt4.setBounds(129,201,150,34); contentPane.add(jt4); jt5=newJTextField(); jt5.setColumns(10); jt5.setBounds(129,250,150,34); contentPane.add(jt5); jt6=newJTextField(); jt6.setColumns(10); jt6.setBounds(129,301,150,34); contentPane.add(jt6); jt7=newJTextField(); jt7.setColumns(10); jt7.setBounds(129,350,150,34); contentPane.add(jt7); JRadioButtonradioButton=newJRadioButton("男",true); radioButton.setBounds(139,121,65,23); contentPane.add(radioButton); JRadioButtonradioButton_1=newJRadioButton("女"); radioButton_1.setBounds(221,121,121,23); contentPane.add(radioButton_1); ButtonGroupbb=newButtonGroup(); bb.add(radioButton);bb.add(radioButton_1); JButtonjb1=newJButton("添加"); jb1.setFont(newFont("宋体",Font.PLAIN,16)); jb1.setBounds(314,78,110,61); contentPane.add(jb1); JButtonjb2=newJButton("关闭"); jb2.setFont(newFont("宋体",Font.PLAIN,16)); jb2.setBounds(314,167,110,61); contentPane.add(jb2); JButtonjb3=newJButton("清除"); jb3.setFont(newFont("宋体",Font.PLAIN,16)); jb3.setBounds(314,265,110,61); contentPane.add(jb3); Stringstr1[]={"计算机科学与技术","信息安全","电子信息科学与技术","网络工程"}; JComboBoxcomboBox=newJComboBox(str1);; comboBox.setBounds(126,400,155,29); contentPane.add(comboBox); jb1.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEventarg0){ PersonOperatorDomeppp=newPersonOperatorDome(); if(ppp.SerachPersonbool(jt1.getText())){ JOptionPane.showMessageDialog(null,"此ID已存在,请勿重复添加"); } else{ Personpp=newPerson(); PersonOperatorDomeperson=newPersonOperatorDome(); Stringsex; if(radioButton.isSelected()){ sex=radioButton.getText(); } else{ sex=radioButton_1.getText(); } pp.setId(jt1.getText()); pp.setName(jt2.getText()); pp.setSex(sex); pp.setBirthday(jt4.getText()); pp.setAge(jt3.getText()); pp.setPhone(jt5.getText()); pp.setEmail(jt6.getText()); pp.setAddress(jt7.getText()); pp.setMajor(String.valueOf(comboBox.getSelectedItem())); person.addPerson(pp); JOptionPane.showMessageDialog(null,"添加成功"); } }}); jb3.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEventarg0){ //TODOAuto-generatedmethodstub jt1.setText(""); jt2.setText(""); jt3.setText(""); jt4.setText(""); jt5.setText(""); jt6.setText(""); jt7.setText(""); } }); jb2.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEventarg0){ //TODOAuto-generatedmethodstub dispose(); } }); } }
/* 人员信息类 */ publicclassPerson{ privateStringid; privateStringname; privateStringsex; privateStringage; privateStringbirthday; privateStringphone; privateStringemail; privateStringaddress; privateStringmajor; publicStringgetId(){ returnid; } publicvoidsetId(Stringid){ this.id=id; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicStringgetSex(){ returnsex; } publicvoidsetSex(Stringsex){ this.sex=sex; } publicStringgetAge(){ returnage; } publicvoidsetAge(Stringage){ this.age=age; } publicStringgetBirthday(){ returnbirthday; } publicvoidsetBirthday(Stringbirthday){ this.birthday=birthday; } publicStringgetPhone(){ returnphone; } publicvoidsetPhone(Stringphone){ this.phone=phone; } publicStringgetEmail(){ returnemail; } publicvoidsetEmail(Stringemail){ this.email=email; } publicStringgetAddress(){ returnaddress; } publicvoidsetAddress(Stringaddress){ this.address=address; } publicStringgetMajor(){ returnmajor; } publicvoidsetMajor(Stringmajor){ this.major=major; } }
/* 人员操作接口 */ importorg.dom4j.Document; publicinterfacePersonOperator{ publicvoidaddPerson(Personperson); publicvoidupdatePerson(Personperson); publicvoiddeletePerson(Stringid); publicPersonSerachPerson(Stringid); publicbooleanSerachPersonbool(Stringid); publicvoidbeifen(); publicvoidhuifu(); }
importjava.io.File; importjava.io.FileOutputStream; importjava.util.Iterator; importjava.util.List; importorg.dom4j.Document; importorg.dom4j.DocumentHelper; importorg.dom4j.Element; importorg.dom4j.io.OutputFormat; importorg.dom4j.io.SAXReader; importorg.dom4j.io.XMLWriter; publicclassPersonOperatorDome{ publicvoidaddPerson(Personperson){ try{ Filefile=newFile("E:/person.xml"); Documentdoc=null; ElementrootElem=null; if(!file.exists()){ doc=DocumentHelper.createDocument(); rootElem=doc.addElement("personlist"); }else{ doc=newSAXReader().read(file); rootElem=doc.getRootElement(); } ElementpersonElem=rootElem.addElement("person"); personElem.addAttribute("id",person.getId()); personElem.addElement("name").setText(person.getName()); personElem.addElement("sex").setText(person.getSex()); personElem.addElement("age").setText(person.getAge()); personElem.addElement("birthday").setText(person.getBirthday()); personElem.addElement("phone").setText(person.getPhone()); personElem.addElement("email").setText(person.getEmail()); personElem.addElement("address").setText(person.getAddress()); personElem.addElement("major").setText(person.getMajor()); XML.Writexml(doc); }catch(Exceptione){ e.printStackTrace(); } } publicvoidUpdataPerson(Personperson){ Documentdoc=XML.getDocument(); Elementroot=doc.getRootElement(); Listpersons=root.elements(); for(inti=0;i /* 查找 */ importjava.awt.BorderLayout; importjava.awt.EventQueue; importjavax.swing.ButtonGroup; importjavax.swing.JFrame; importjavax.swing.JPanel; importjavax.swing.border.EmptyBorder; importjavax.swing.JLabel; importjavax.swing.JOptionPane; importjava.awt.Font; importjava.awt.event.ActionEvent; importjava.awt.event.ActionListener; importjavax.swing.JTextField; importjavax.swing.JRadioButton; importjavax.swing.JButton; importjavax.swing.JComboBox; publicclassSerachPersonextendsJFrame{ privateJPanelcontentPane; privateJTextFieldjt1; privateJTextFieldjt2; privateJTextFieldjt3; privateJTextFieldjt4; privateJTextFieldjt5; privateJTextFieldjt6; privateJTextFieldjt7; publicSerachPerson(){ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100,100,450,489); contentPane=newJPanel(); contentPane.setBorder(newEmptyBorder(5,5,5,5)); contentPane.setLayout(null); setContentPane(contentPane); JLabeljl1=newJLabel("学生通讯录"); jl1.setFont(newFont("宋体",Font.PLAIN,16)); jl1.setBounds(10,0,95,29); contentPane.add(jl1); JLabeljl2=newJLabel("学生编号"); jl2.setFont(newFont("宋体",Font.PLAIN,16)); jl2.setBounds(51,39,65,29); contentPane.add(jl2); JLabeljl3=newJLabel("学生姓名"); jl3.setFont(newFont("宋体",Font.PLAIN,16)); jl3.setBounds(51,78,65,29); contentPane.add(jl3); JLabeljl4=newJLabel("学生性别"); jl4.setFont(newFont("宋体",Font.PLAIN,16)); jl4.setBounds(51,117,65,29); contentPane.add(jl4); JLabeljl5=newJLabel("学生年龄"); jl5.setFont(newFont("宋体",Font.PLAIN,16)); jl5.setBounds(51,163,65,29); contentPane.add(jl5); JLabeljl6=newJLabel("出生日期"); jl6.setFont(newFont("宋体",Font.PLAIN,16)); jl6.setBounds(51,202,65,29); contentPane.add(jl6); JLabeljl7=newJLabel("手机号码"); jl7.setFont(newFont("宋体",Font.PLAIN,16)); jl7.setBounds(51,250,65,29); contentPane.add(jl7); JLabeljl8=newJLabel("电子邮箱"); jl8.setFont(newFont("宋体",Font.PLAIN,16)); jl8.setBounds(51,296,65,29); contentPane.add(jl8); JLabeljl9=newJLabel("家庭住址"); jl9.setFont(newFont("宋体",Font.PLAIN,16)); jl9.setBounds(51,345,65,29); contentPane.add(jl9); JLabeljl10=newJLabel("专业名称"); jl10.setFont(newFont("宋体",Font.PLAIN,16)); jl10.setBounds(51,389,65,29); contentPane.add(jl10); jt1=newJTextField(); jt1.setBounds(129,38,150,34); contentPane.add(jt1); jt1.setColumns(10); jt2=newJTextField(); jt2.setColumns(10); jt2.setBounds(129,83,150,34); contentPane.add(jt2); jt3=newJTextField(); jt3.setColumns(10); jt3.setBounds(129,163,150,34); contentPane.add(jt3); jt4=newJTextField(); jt4.setColumns(10); jt4.setBounds(129,201,150,34); contentPane.add(jt4); jt5=newJTextField(); jt5.setColumns(10); jt5.setBounds(129,250,150,34); contentPane.add(jt5); jt6=newJTextField(); jt6.setColumns(10); jt6.setBounds(129,301,150,34); contentPane.add(jt6); jt7=newJTextField(); jt7.setColumns(10); jt7.setBounds(129,350,150,34); contentPane.add(jt7); JRadioButtonradioButton=newJRadioButton("男",true); radioButton.setBounds(139,121,65,23); contentPane.add(radioButton); JRadioButtonradioButton_1=newJRadioButton("女"); radioButton_1.setBounds(221,121,79,23); contentPane.add(radioButton_1); ButtonGroupbb=newButtonGroup(); bb.add(radioButton);bb.add(radioButton_1); JButtonjb1=newJButton("查找"); jb1.setFont(newFont("宋体",Font.PLAIN,16)); jb1.setBounds(314,78,110,61); contentPane.add(jb1); JButtonjb2=newJButton("关闭"); jb2.setFont(newFont("宋体",Font.PLAIN,16)); jb2.setBounds(314,280,110,61); contentPane.add(jb2); JButtonjb3=newJButton("清除"); jb3.setFont(newFont("宋体",Font.PLAIN,16)); jb3.setBounds(314,357,110,61); contentPane.add(jb3); JButtonjb4=newJButton("修改"); jb4.setFont(newFont("宋体",Font.PLAIN,16)); jb4.setBounds(314,174,110,61); contentPane.add(jb4); Stringstr1[]={"计算机科学与技术","信息安全","电子信息科学与技术","网络工程"}; JComboBoxcomboBox=newJComboBox(str1); comboBox.setBounds(126,394,153,29); contentPane.add(comboBox); jb1.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEventarg0){ PersonOperatorDomeperson=newPersonOperatorDome(); Stringid=jt1.getText(); Personpp=person.SerachPerson(id); jt2.setText(pp.getName()); if(radioButton.getText().equals(pp.getSex())){ radioButton.setSelected(true); }else{ radioButton_1.setSelected(true); } jt3.setText(pp.getAge()); jt4.setText(pp.getBirthday()); jt5.setText(pp.getPhone()); jt6.setText(pp.getEmail()); jt7.setText(pp.getAddress()); if(pp.getMajor().equals("计算机科学与技术"))comboBox.setSelectedIndex(0); if(pp.getMajor().equals("信息安全"))comboBox.setSelectedIndex(1); if(pp.getMajor().equals("电子信息科学与技术"))comboBox.setSelectedIndex(2); if(pp.getMajor().equals("网络工程"))comboBox.setSelectedIndex(3); } }); jb3.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEvente){ //TODOAuto-generatedmethodstub jt1.setText(""); jt2.setText(""); jt3.setText(""); jt4.setText(""); jt5.setText(""); jt6.setText(""); jt7.setText(""); } }); jb2.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEventarg0){ //TODOAuto-generatedmethodstub dispose(); } }); jb4.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEventarg0){ Personpp=newPerson(); PersonOperatorDomeperson=newPersonOperatorDome(); Stringsex; if(radioButton.isSelected()){ sex=radioButton.getText(); } else{ sex=radioButton_1.getText(); } pp.setId(jt1.getText()); pp.setName(jt2.getText()); pp.setSex(sex); pp.setBirthday(jt4.getText()); pp.setAge(jt3.getText()); pp.setPhone(jt5.getText()); pp.setEmail(jt6.getText()); pp.setAddress(jt7.getText()); pp.setMajor(String.valueOf(comboBox.getSelectedItem())); person.UpdataPerson(pp); JOptionPane.showMessageDialog(null,"修改成功"); }}); } }importjava.io.File; importjava.io.FileOutputStream; importorg.dom4j.Document; importorg.dom4j.io.OutputFormat; importorg.dom4j.io.SAXReader; importorg.dom4j.io.XMLWriter; publicclassXML{ publicstaticDocumentgetDocument(){ try{ Documentdoc=newSAXReader().read(newFile("e:/person.xml")); returndoc; }catch(Exceptione){ e.printStackTrace(); thrownewRuntimeException(e); } } publicstaticDocumentgetDocument1(){ try{ Documentdoc=newSAXReader().read(newFile("e:/persondome.xml")); returndoc; }catch(Exceptione){ e.printStackTrace(); thrownewRuntimeException(e); } } /* *写出XML文件 */ publicstaticvoidWritexml(Documentdoc){ try{ //3.把Document写到XML文件 FileOutputStreamout=newFileOutputStream("e:/person.xml"); //书写格式(优美的格式) OutputFormatformat=OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); XMLWriterwriter=newXMLWriter(out,format); writer.write(doc); writer.close(); }catch(Exceptione){ e.printStackTrace(); thrownewRuntimeException(); } } }importjava.awt.BorderLayout; importjava.awt.EventQueue; importjavax.swing.JFrame; importjavax.swing.JPanel; importjavax.swing.border.EmptyBorder; importjavax.swing.ButtonGroup; importjavax.swing.JButton; importjava.awt.Font; importjava.awt.event.ActionEvent; importjava.awt.event.ActionListener; importjava.util.List; importjavax.swing.JTextArea; importjavax.swing.JScrollBar; importjavax.swing.JScrollPane; importjavax.swing.JList; importjavax.swing.JOptionPane; importjavax.swing.JRadioButton; importjavax.swing.JTable; importjavax.swing.table.DefaultTableModel; importorg.dom4j.Document; importorg.dom4j.Element; publicclassMainContralextendsJFrame{ privateJPanelcontentPane; privateJTabletable; publicMainContral(){ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100,100,1200,392); contentPane=newJPanel(); contentPane.setLayout(null); setContentPane(contentPane); JButtonjb1=newJButton("添加"); jb1.setFont(newFont("宋体",Font.PLAIN,16)); jb1.setBounds(23,10,101,48); contentPane.add(jb1); JButtonjb3=newJButton("删除"); jb3.setFont(newFont("宋体",Font.PLAIN,16)); jb3.setBounds(134,10,101,48); contentPane.add(jb3); JButtonjb4=newJButton("\u67E5\u627E\u4E0E\u4FEE\u6539"); jb4.setFont(newFont("宋体",Font.PLAIN,16)); jb4.setBounds(245,10,139,48); contentPane.add(jb4); JButtonjb5=newJButton("显示全部"); jb5.setFont(newFont("宋体",Font.PLAIN,16)); jb5.setBounds(394,10,126,48); contentPane.add(jb5); JRadioButtonradioButton=newJRadioButton("计算机科学与技术"); radioButton.setFont(newFont("宋体",Font.PLAIN,16)); radioButton.setBounds(23,89,161,23); contentPane.add(radioButton); JRadioButtonradioButton_1=newJRadioButton("信息安全"); radioButton_1.setFont(newFont("宋体",Font.PLAIN,16)); radioButton_1.setBounds(186,89,101,23); contentPane.add(radioButton_1); JRadioButtonradioButton_2=newJRadioButton("电子信息科学与技术"); radioButton_2.setFont(newFont("宋体",Font.PLAIN,16)); radioButton_2.setBounds(289,89,174,23); contentPane.add(radioButton_2); JRadioButtonradioButton_3=newJRadioButton("网络工程"); radioButton_3.setFont(newFont("宋体",Font.PLAIN,16)); radioButton_3.setBounds(465,89,101,23); contentPane.add(radioButton_3); JRadioButtonradioButton_4=newJRadioButton("全部"); radioButton_4.setFont(newFont("宋体",Font.PLAIN,16)); radioButton_4.setBounds(568,89,121,23); contentPane.add(radioButton_4); ButtonGroupbb=newButtonGroup(); bb.add(radioButton); bb.add(radioButton_3); bb.add(radioButton_2); bb.add(radioButton_1); bb.add(radioButton_4); table=newJTable(); table.setFont(newFont("宋体",Font.PLAIN,16)); table.setModel(newDefaultTableModel( newObject[][]{ }, newString[]{ "\u7F16\u53F7","\u59D3\u540D","\u6027\u522B","\u5E74\u9F84","\u751F\u65E5","\u7535\u8BDD","\u90AE\u7BB1","\u5730\u5740","\u4E13\u4E1A" } )); DefaultTableModelmodel=(DefaultTableModel)table.getModel(); Object[]rowData={"编号","姓名","性别","年龄","生日","电话","邮箱","地址","专业"}; model.addRow(rowData); //JScrollPanescroll=newJScrollPane(table); table.setBounds(23,131,1100,212); contentPane.add(table); JButtonjb6=newJButton("备份"); jb6.setFont(newFont("宋体",Font.PLAIN,16)); jb6.setBounds(530,10,101,48); contentPane.add(jb6); JButtonjb7=newJButton("恢复"); jb7.setFont(newFont("宋体",Font.PLAIN,16)); jb7.setBounds(641,10,101,48); contentPane.add(jb7); jb6.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEventarg0){ //TODOAuto-generatedmethodstub PersonOperatorDomep=newPersonOperatorDome(); p.beifen(); JOptionPane.showMessageDialog(null,"备份成功"); } }); jb7.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEventarg0){ //TODOAuto-generatedmethodstub PersonOperatorDomep=newPersonOperatorDome(); p.huifu(); JOptionPane.showMessageDialog(null,"恢复成功"); } }); jb1.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEvente){ //TODOAuto-generatedmethodstub AddPersontest=newAddPerson(); test.setVisible(true); } }); jb3.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEvente){ //TODOAuto-generatedmethodstub intcount1=table.getSelectedRow(); Stringid=table.getValueAt(count1,0).toString(); PersonOperatorDomep=newPersonOperatorDome(); p.deletePerson(id); JOptionPane.showMessageDialog(null,"删除成功"); } }); jb4.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEvente){ //TODOAuto-generatedmethodstub SerachPersontest=newSerachPerson(); test.setVisible(true); } }); jb5.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEventarg0){ //TODOAuto-generatedmethodstub PersonOperatorDomeperson=newPersonOperatorDome(); Documentdoc=XML.getDocument(); Elementroot=doc.getRootElement(); Listpersons=root.elements(); DefaultTableModelmodel=(DefaultTableModel)table.getModel(); while(model.getRowCount()>1){ model.removeRow(model.getRowCount()-1); } for(inti=0;i1){ model.removeRow(model.getRowCount()-1); } for(inti=0;i 1){ model.removeRow(model.getRowCount()-1); } for(inti=0;i 1){ model.removeRow(model.getRowCount()-1); } for(inti=0;i 1){ model.removeRow(model.getRowCount()-1); } for(inti=0;i 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。