1.以如下格式的exam.xml文件为例

<?xml version="1.0" encoding="UTF-8" standalone="no"?><exam>
<student examid="222" idcard="111">
<name>张三</name>
<location>沈阳</location>
<grade>89</grade>
</student>

<student examid="444" idcard="333">
<name>李四</name>
<location>大连</location>
<grade>97</grade>
</student>
</exam>

2.编程实现如下功能

添加用户:(a) 删除用户:(b) 查询成绩:(c)

请输入操作类型:

3.实现学生信息的添加

添加用户:(a) 删除用户:(b) 查询成绩:(c)

请输入操作类型:a

请输入学生姓名:张三

请输入学生准考证号:22202123

请输入学生身份证号:233434343344343

请输入学生所在地:沈阳

请输入学生成绩:89

-------添加数据成功--------

4.实现学生信息查询

添加用户:(a) 删除用户:(b) 查询成绩:(c)

请输入操作类型:c

请输入查询的学生准考证号:22202123

您查询的学生信息为:

姓名:张三,身份证号:233434343344343,准考证号:22202123,地区:沈阳,成绩:89

5.实现学生的删除功能

添加用户:(a) 删除用户:(b) 查询成绩:(c)

请输入操作类型:b

请输入删除的学生姓名:张三

-------已成功删除学生信息--------

6.代码

1)exam.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?><exam>
<student examid="222" idcard="111">
<name>张三</name>
<location>沈阳</location>
<grade>89</grade>
</student>

<student examid="444" idcard="333">
<name>李四</name>
<location>大连</location>
<grade>97</grade>
</student>
</exam>

2)cn.itcast.dao包,获取数据

package cn.itcast.dao;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import cn.itcast.domain.Student;
import cn.itcast.exception.StudentNotExistException;
import cn.itcast.utils.XmlUtils;

public class StudentDao {

public void add(Student s) {
try {
Document document = XmlUtils.getDocument();
// 创建出封装学生信息的标签
Element student_tag = document.createElement("student");
student_tag.setAttribute("idcard", s.getIdcard());
student_tag.setAttribute("examid", s.getExamid());

// 创建用于封装学生姓名、所在地和成绩的标签
Element name = document.createElement("name");
Element location = document.createElement("location");
Element grade = document.createElement("grade");
name.setTextContent(s.getName());
location.setTextContent(s.getLocation());
grade.setTextContent(s.getGrade() + "");

student_tag.appendChild(name);
student_tag.appendChild(location);
student_tag.appendChild(grade);
// 把封装了信息的学生标检挂到文档上
document.getElementsByTagName("exam").item(0)
.appendChild(student_tag);
// 更新内存
XmlUtils.write2Xml(document);
} catch (Exception e) {
throw new RuntimeException(e);// unchecked exception(运行时异常)
}
}

public Student find(String examid) {
try {
Document document = XmlUtils.getDocument();
NodeList list = document.getElementsByTagName("student");
for (int i = 0; i < list.getLength(); i++) {
Element student_tag = (Element) list.item(i);
if (student_tag.getAttribute("examid").equals(examid)) {
// 找到与examid相匹配的学生,new出一个student对象封装这个学生的信息返回
Student s = new Student();
s.setExamid(examid);
s.setIdcard(student_tag.getAttribute("idcard"));
s.setName(student_tag.getElementsByTagName("name").item(0)
.getTextContent());
s.setLocation(student_tag.getElementsByTagName("location")
.item(0).getTextContent());
s.setGrade(Double.parseDouble(student_tag
.getElementsByTagName("grade").item(0)
.getTextContent()));
return s;
}
}
return null;
} catch (Exception e) {
throw new RuntimeException(e);
}
}

public void delete(String name) throws StudentNotExistException {
try {
Document document = XmlUtils.getDocument();
NodeList list = document.getElementsByTagName("name");
for (int i = 0; i < list.getLength(); i++) {
Element student_name= (Element) list.item(i);
if (student_name.getTextContent().equals(name)) {
student_name.getParentNode().getParentNode().removeChild(student_name.getParentNode());
XmlUtils.write2Xml(document);
return;
}
}
throw new StudentNotExistException(name+"不存在!!");
}catch(StudentNotExistException se)
{
throw se;
}
catch (Exception e) {
throw new RuntimeException(e);
}
}
}

3)cn.itcast.domain包,封装数据

package cn.itcast.domain;

public class Student {
private String idcard;
private String examid;
private String name;
private String location;
private double 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 double getGrade() {
return grade;
}

public void setGrade(double grade) {
this.grade = grade;
}

}

4) cn.itcast.exception包,异常信息

package cn.itcast.exception;

public class StudentNotExistException extends Exception {

public StudentNotExistException() {
// TODO Auto-generated constructor stub
}

public StudentNotExistException(String message) {
super(message);
// TODO Auto-generated constructor stub
}

public StudentNotExistException(Throwable cause) {
super(cause);
// TODO Auto-generated constructor stub
}

public StudentNotExistException(String message, Throwable cause) {
super(message, cause);
// TODO Auto-generated constructor stub
}

}

5) cn.itcast.UI包,用户访问界面

package cn.itcast.UI;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import cn.itcast.dao.StudentDao;
import cn.itcast.domain.Student;
import cn.itcast.exception.StudentNotExistException;

public class Main {

public static void main(String[] args) {
try {
System.out.println("添加学生(a) 删除学生(b) 查找学生(c)");
System.out.print("请输入操作类型:");

BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
String type = br.readLine();

StudentDao dao = new StudentDao();
if ("a".equals(type)) {
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();

Student s = new Student();
s.setExamid(examid);
s.setGrade(Double.parseDouble(grade));
s.setIdcard(idcard);
s.setLocation(location);
s.setName(name);

dao.add(s);
System.out.println("添加成功!!!");
} else if ("b".equals(type)) {
System.out.print("请输入要删除的学生姓名:");
String name = br.readLine();
try {
dao.delete(name);
System.out.println("删除成功!!!");
}
catch(StudentNotExistException e){
System.out.println("您要删除的用户不存在!!!");
}
} else if ("c".equals(type)) {

} else {
System.out.println("不支持您的操作!");
}

} catch (Exception e) {
e.printStackTrace();
System.out.println("对不起,俺出错了!!");
}
}

}

6)cn.itcast.utils包,工具包,提供一些公用的方法

package cn.itcast.utils;

import java.io.FileOutputStream;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.xml.sax.SAXException;
//工具类,方法通常设置为静态的
public class XmlUtils {

private static String filename="src/exam.xml";

public static Document getDocument() throws Exception{
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
return builder.parse(filename);
}
public static void write2Xml(Document document) throws Exception{
TransformerFactory factory=TransformerFactory.newInstance();
Transformer tf=factory.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream(filename) ));
}
}

7)junit.test包,测试所写的代码

package junit.test;

import org.junit.Test;

import cn.itcast.dao.StudentDao;
import cn.itcast.domain.Student;
import cn.itcast.exception.StudentNotExistException;

public class StudentDaoTest {

public StudentDaoTest() {
// TODO Auto-generated constructor stub
}

@Test
public void testAdd() {
StudentDao dao = new StudentDao();
Student s=new Student();
s.setExamid("121");
s.setGrade(89);
s.setIdcard("121");
s.setLocation("北京");
s.setName("aa");
dao.add(s);
}

@Test
public void testfind() {
StudentDao dao = new StudentDao();
Student s=dao.find("121");
System.out.println("getExamid:"+s.getExamid());
System.out.println("getName :"+s.getName());
System.out.println("getLocation:"+s.getLocation());
System.out.println("getGrade:"+s.getGrade());
System.out.println("getIdcard:"+s.getIdcard());
}

@Test
public void testdelete() throws StudentNotExistException {
StudentDao dao = new StudentDao();
dao.delete("aa");

}

}

XML案例(简单的考生成绩管理系统)的更多相关文章

  1. xml案例(考生成绩管理系统)

    package itacst.dao; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node ...

  2. Java实现简单的学生成绩管理系统

    ScoreInformation.java import java.util.Scanner; class ScoreInformation {    private String stunumber ...

  3. java简单学生成绩管理系统

    题目要求: 一. 数据结构要求:(5 分) 1.定义 ScoreInformation 类,其中包括七个私有变量(stunumber, name, mathematicsscore, englishi ...

  4. 使用Java模拟一个简单的Dos学生成绩管理系统:

    使用Java模拟学生成绩管理系统... ------------------- 学生成绩管理系统:需要实现的功能:1.录入学生的姓名和成绩2.显示列表.列表中包括学生姓名与成绩3.显示最高分.最低分的 ...

  5. 第一次写C语言小程序,可以初步理解学生成绩管理系统的概念

    1 成绩管理系统概述 1.1  管理信息系统的概念  管理信息系统(Management Information Systems,简称MIS),是一个不断发展的新型学科,MIS的定义随着科技的进步也在 ...

  6. Java开学测试-学生成绩管理系统

    题目: 1.定义 ScoreInformation 类,其中包括七个私有变量(stunumber, name, mathematicsscore, englishiscore,networkscore ...

  7. java学生成绩管理系统

                                                       信1805-1 20183590 田庆辉             石家庄铁道大学 2019 年秋季 ...

  8. 学生成绩管理系统(SSM+MySQL+JSP)

    开发工具:Eclipse前端技术:基础:html+css+JavaScript框架:JQuery+H-ui后端技术:Spring+SpringMVC+mybatis模板引擎:JSP数据库:mysql ...

  9. Java项目:学生成绩管理系统(二)

    学生成绩管理系统(二):项目介绍 一.设计要求: 1.1 简单的图形界面登录功能. 1.2 对数据库的的信息的查询功能. 1.3 对数据库的的信息的修改功能. 1.4 对数据库的的信息的删除功能. 1 ...

随机推荐

  1. Origin C调用NAG库

    NAG(Numerical Algorithms Group, www.nag.com)库是一个无与伦比的算法库,它提供的算法可靠.轻便.严谨,覆盖了数学与统计方方面面.最大的缺点就是:它是一个收费的 ...

  2. 删数据ORA-02292主键约束问题

    通常在删除某个表A的时候,会出现这个错误.原因是另一个表B的某个字段引用了A表的某个字段作为约束(这个的另一个说法是外键). 假如引用的字段叫field,当B.field = A.field , 而你 ...

  3. 使用final关键字修饰一个引用类型变量时,是引用不能变,还是引用的对象不能变?

    使用final关键字修饰一个引用类型变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的. 测试代码如下: package reviewTest; /** * @ClassName: ...

  4. Django URL(路由系统)

    Django URL Django 1.11版本 URLconf官方文档 URL配置(URLconf)就像 Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的 ...

  5. axios的基本概念和安装以及配置方法

    ajax:异步请求,是一种无需再重新加载整个网页的情况下,能够更新部分网页的技术 axios:用于浏览器和node.js的基于promise的HTTP客户端 1.从浏览器制作XMLHttpReques ...

  6. 7.1.2 Python 内置异常类层次结构

    这一节就是拿来主义了,连接:https://blog.csdn.net/Karen_Yu_/article/details/78629918 异常名称 描述 BaseException 所有异常的基类 ...

  7. “从客户端(content="XXXX")中检测到有潜在危险的 Request.Form值” 解决方案

    解决方案一: 在.aspx文件头中加: <%@Page validateRequest="false" %> 解决方案二: 修改web.config文件: <co ...

  8. Codeforces 432D Prefixes and Suffixes (KMP、后缀数组)

    题目链接: https://codeforces.com/contest/432/problem/D 题解: 做法一: KMP 显然next树上\(n\)的所有祖先都是答案,出现次数为next树子树大 ...

  9. hadoop在线退役datanode

    退役dn2echo "dn2" >>excludes echo "dn2" >>yarn-excludes sh refresh-nam ...

  10. JavaScript初步学习----基本使用,简单事件,修改样式,数据类型

    JavaScript基本使用 JavaScript原名叫livescript,是一门动态类型,弱类型基于原型的脚本语言   用于页面特效,前后交替,后台开发(node)   JavaScript写在s ...