黑马程序员_基于XML的学生成绩管理平台

------- android培训 java培训 、期待与您交流! ---------- 
一、需求如下:
 
 
 二、系统框架如下:
 三、代码实现如下:
1、student.xml 用于存储数据

xml version="1.0" encoding="UTF-8" standalone="no"?> examid="413000" idcard="198900"> 张三 河南 97


2、Student.java 数据模型(entity)

package com.fly.xml.domain; public class Student { private String idcard; private String examid; private String name; private String location; private int grade; public String getIdcard() { return idcard; } public void setIdcard(String idcard) { this.idcard = idcard; } public String getExamid() { return examid; } public void setExamid(String examid) { this.examid = examid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } public int getGrade() { return grade; } public void setGrade(int grade) { this.grade = grade; } }


3、DocumentUtil.java 操作xml的工具类

package com.fly.xml.util; import java.io.FileInputStream; import java.io.FileOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; public class DocumentUtil { private static String FILE_NAME = "src/com/fly/xml/domain/student.xml"; //读取xml文档 public static Document read() throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new FileInputStream(FILE_NAME)); return doc; } //保存Document到xml文档 public static void save(Document doc) throws Exception { TransformerFactory factory = TransformerFactory.newInstance(); Transformer trans = factory.newTransformer(); trans.transform(new DOMSource(doc), new StreamResult(new FileOutputStream(FILE_NAME))); } }


4、StudentDao.java 学生dao,实现添加、查找、删除功能。对xml文件的操作通过DocumentUtil.java来实现

package com.fly.xml.dao; import org.junit.Test; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import com.fly.exception.StudentNotExistException; import com.fly.xml.domain.Student; import com.fly.xml.util.DocumentUtil; public class StudentDao { //添加 public void add(Student stu) { try { Document doc = DocumentUtil.read(); //得到根节点 Element root = (Element) doc.getElementsByTagName("exam").item(0); //创建student节点 Element student = doc.createElement("student"); //给student节点添加属性 student.setAttribute("idcard", stu.getIdcard()); student.setAttribute("examid", stu.getExamid()); //创建name节点 Element name = doc.createElement("name"); //给name节点添加文本节点 name.setTextContent(stu.getName()); Element loc = doc.createElement("location"); loc.setTextContent(stu.getLocation()); Element grade = doc.createElement("grade"); grade.setTextContent(stu.getGrade() + ""); //给student添加子节点 student.appendChild(name); student.appendChild(loc); student.appendChild(grade); //将student添加到根节点下 root.appendChild(student); //保存到xml DocumentUtil.save(doc); } catch (Exception e) { throw new RuntimeException(e); } } //删除 public void delStu(String name) throws StudentNotExistException { try { Document doc = DocumentUtil.read(); NodeList students = doc.getElementsByTagName("student"); for(int i=0; i<students.getLength(); i++) { Element stu = (Element) students.item(i); Element name1 = (Element) stu.getElementsByTagName("name").item(0); if(name1.getTextContent().equals(name)) { stu.getParentNode().removeChild(stu); DocumentUtil.save(doc); return; } } } catch (Exception e) { throw new RuntimeException(e); } throw new StudentNotExistException(name + "不存在"); } //查找 public Student find(String examid) { try { Document doc = DocumentUtil.read(); NodeList list = doc.getElementsByTagName("student"); for(int i=0; i<list.getLength(); i++) { Element stu = (Element)list.item(i); if(stu.getAttribute("examid").equals(examid)) { //找到与examid相匹配的学生,new出一个student对象封装这个学生的信息 Student s = new Student(); s.setExamid(examid); s.setIdcard(stu.getAttribute("idcard")); s.setName(stu.getElementsByTagName("name").item(0).getTextContent()); s.setLocation(stu.getElementsByTagName("location").item(0).getTextContent()); s.setGrade(Integer.parseInt(stu.getElementsByTagName("grade").item(0).getTextContent())); return s; } } return null; } catch(Exception e) { throw new RuntimeException(e); } } //测试 @Test public void addStuTest() { try { this.delStu("aaa"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }


5、Main.java 用于操作类,对用户提供功能

package com.fly.ui; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import com.fly.exception.StudentNotExistException; import com.fly.xml.dao.StudentDao; import com.fly.xml.domain.Student; public class Main { public static void main(String[] args) { System.out.println("a、添加用户 b、删除用户 c、查询成绩"); System.out.print("请输入操作类型:"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); try { String sel = br.readLine(); if("a".equals(sel)) { System.out.print("请输入学生姓名:"); String name = br.readLine(); System.out.print("请输入学生准考证号:"); String examid = br.readLine(); System.out.print("请输入学生身份证号:"); String idcard = br.readLine(); System.out.print("请输入学生所在地:"); String location = br.readLine(); System.out.print("请输入学生成绩:"); String grade = br.readLine(); System.out.println(grade); Student s = new Student(); s.setExamid(examid); s.setIdcard(idcard); s.setName(name); s.setLocation(location); s.setGrade(Integer.parseInt(grade)); new StudentDao().add(s); System.out.println("添加数据成功"); } else if("b".equals(sel)) { System.out.print("请输入学生姓名:"); String name = br.readLine(); try { new StudentDao().delStu(name); System.out.println("删除成功"); } catch (StudentNotExistException e) { System.out.println("该学生不存在"); } } else if("c".equals(sel)) { System.out.println("请输入学生准考证号:"); String examid = br.readLine(); Student s = new StudentDao().find(examid); System.out.println("学生成绩是:" + s.getGrade()); } } catch (IOException e) { e.printStackTrace(); } } }


----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------

详情请查看:http://edu.csdn.net/heima

你可能感兴趣的:(黑马程序员)