考试系统(用xml文件模拟数据库)

1.界面介绍

2.系统结构介绍

我把各个包介绍一下

1.exam.xml文件就是用来模拟数据库的,代码在后面贴出来

2.dao层时操作数据包

3.utils是工具类包

4.bean是数据封装类包

5.exception是自定义异常类包

6.junit测试包

7.ui用户界面包

3.详细代码

1.exam.xml

 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?><exam>
 2     <student examid="456" idcard="123">
 3         <name>a</name>
 4         <location>b</location>
 5         <grade>22</grade>
 6     </student>
 7
 8     <student examid="000" idcard="789">
 9         <name>c</name>
10         <location>d</location>
11         <grade>20</grade>
12     </student>
13
14
15 </exam>

2.XmlUtils.java

 1 package utils;
 2
 3 import java.io.FileOutputStream;
 4
 5 import javax.xml.parsers.DocumentBuilder;
 6 import javax.xml.parsers.DocumentBuilderFactory;
 7 import javax.xml.transform.Transformer;
 8 import javax.xml.transform.TransformerFactory;
 9 import javax.xml.transform.dom.DOMSource;
10 import javax.xml.transform.stream.StreamResult;
11
12 import org.w3c.dom.Document;
13
14 //工具类的所有方法都是静态的(约定俗成)
15 public class XmlUtils {
16
17     private static String filename = "src/exam.xml";
18
19     public static Document getDocument() throws Exception{
20
21         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
22         DocumentBuilder builder = factory.newDocumentBuilder();
23         return builder.parse(filename);
24
25     }
26
27     public static void write2Xml(Document document) throws Exception{
28
29         TransformerFactory factory = TransformerFactory.newInstance();
30         Transformer tf = factory.newTransformer();
31         tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream(filename)));
32
33     }
34
35 }

getDocument()方法用来获取标签对象

write2Xml(Document document)方法用来更新xml文件

3.StudentDao.java

 1 package dao;
 2
 3 import org.w3c.dom.Document;
 4 import org.w3c.dom.Element;
 5 import org.w3c.dom.NodeList;
 6
 7 import bean.Student;
 8 import exception.StudentNotExistException;
 9 import utils.XmlUtils;
10
11 public class StudentDao {
12
13     public void add(Student s){
14
15         try {
16             Document document = XmlUtils.getDocument();
17
18             //创建出封装学生的标签
19             Element student_tag = document.createElement("student");
20             student_tag.setAttribute("idcard", s.getIdcard());
21             student_tag.setAttribute("examid", s.getExamid());
22
23             //创建用于封装学生姓名,所在地和成绩的标签
24             Element name = document.createElement("name");
25             Element location = document.createElement("location");
26             Element grade = document.createElement("grade");
27             name.setTextContent(s.getName());
28             location.setTextContent(s.getIdcard());
29             grade.setTextContent(s.getGrade()+"");
30
31             //设置标签之间的关系
32             student_tag.appendChild(name);
33             student_tag.appendChild(location);
34             student_tag.appendChild(grade);
35
36             //把封装信息的学生标签,要挂在文档上面
37             document.getElementsByTagName("exam").item(0).appendChild(student_tag);
38
39             //更新内存
40             XmlUtils.write2Xml(document);
41
42         } catch (Exception e) {
43             //把异常进行转型,把编译时异常转化成运行时异常
44             throw new RuntimeException(e);
45         }
46
47
48     }
49
50     public Student find(String examid){
51
52         try {
53             Document document = XmlUtils.getDocument();
54             NodeList list = document.getElementsByTagName("student");
55             for(int i=0; i<list.getLength(); i++){
56                 Element student_tag = (Element) list.item(i);
57                 if(student_tag.getAttribute("examid").equals(examid)){
58                     //找到与examid相对应的学生,new出一个student对象封装这个学生的信息返回
59                     Student s = new Student();
60                     s.setExamid(examid);
61                     s.setIdcard(student_tag.getAttribute("idcard"));
62                     s.setName(student_tag.getElementsByTagName("name").item(0).getTextContent());
63                     s.setLocation(student_tag.getElementsByTagName("location").item(0).getTextContent());
64                     s.setGrade(Double.parseDouble(student_tag.getElementsByTagName("grade").item(0).getTextContent()));
65                     return s;
66                 }
67             }
68             return null;
69         } catch (Exception e) {
70             // TODO Auto-generated catch block
71             throw new RuntimeException(e);
72         }
73     }
74
75     public void delete(String name) throws StudentNotExistException{
76
77         try {
78             Document document = XmlUtils.getDocument();
79             NodeList list = document.getElementsByTagName("name");
80             for(int i=0; i<list.getLength(); i++){
81                 if(list.item(i).getTextContent().equals(name)){
82                     list.item(i).getParentNode().getParentNode().removeChild(list.item(i).getParentNode());
83                     XmlUtils.write2Xml(document);
84                     return;
85                 }
86             }
87             throw new StudentNotExistException(name + "不存在!");
88         }catch(StudentNotExistException e){
89             throw e;
90         }catch (Exception e) {
91             // TODO Auto-generated catch block
92             throw new RuntimeException();
93         }
94
95     }
96
97 }

4.student.java

 1 package bean;
 2
 3 public class Student {
 4
 5     @Override
 6     public String toString() {
 7         return "Student [name=" + name + ", location=" + location + ", grade=" + grade + ", idcard=" + idcard
 8                 + ", examid=" + examid + "]";
 9     }
10     private String name;
11     private String location;
12     private double grade;
13     private String idcard;
14     private String examid;
15
16     public String getName() {
17         return name;
18     }
19     public void setName(String name) {
20         this.name = name;
21     }
22     public String getLocation() {
23         return location;
24     }
25     public void setLocation(String location) {
26         this.location = location;
27     }
28     public double getGrade() {
29         return grade;
30     }
31     public void setGrade(double grade) {
32         this.grade = grade;
33     }
34     public String getIdcard() {
35         return idcard;
36     }
37     public void setIdcard(String idcard) {
38         this.idcard = idcard;
39     }
40     public String getExamid() {
41         return examid;
42     }
43     public void setExamid(String examid) {
44         this.examid = examid;
45     }
46
47 }

5.StudentNotExistException.java

 1 package exception;
 2
 3 public class StudentNotExistException extends Exception {
 4
 5     public StudentNotExistException() {
 6         // TODO Auto-generated constructor stub
 7     }
 8
 9     public StudentNotExistException(String message) {
10         super(message);
11         // TODO Auto-generated constructor stub
12     }
13
14     public StudentNotExistException(Throwable cause) {
15         super(cause);
16         // TODO Auto-generated constructor stub
17     }
18
19     public StudentNotExistException(String message, Throwable cause) {
20         super(message, cause);
21         // TODO Auto-generated constructor stub
22     }
23
24     public StudentNotExistException(String message, Throwable cause, boolean enableSuppression,
25             boolean writableStackTrace) {
26         super(message, cause, enableSuppression, writableStackTrace);
27         // TODO Auto-generated constructor stub
28     }
29
30 }

6.Main.java

 1 package ui;
 2
 3 import java.io.BufferedReader;
 4 import java.io.InputStreamReader;
 5
 6 import bean.Student;
 7 import dao.StudentDao;
 8 import exception.StudentNotExistException;
 9
10 public class Main {
11
12     public static void main(String[] args) {
13         // TODO Auto-generated method stub
14         try{
15             System.out.println("添加学生:(a)   删除学生(b)   查找学生(c)   退出(e)");
16             System.out.print("请输入操作类型:");
17             BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
18             String type = br.readLine();
19             //switch不能用String
20             if("a".equals(type)){
21
22                 System.out.println("请输入学生姓名:");
23                 String name = br.readLine();
24
25                 System.out.println("请输入学生准考证号:");
26                 String examid = br.readLine();
27
28                 System.out.println("请输入学生身份证号:");
29                 String idcard = br.readLine();
30
31                 System.out.println("请输入学生所在地:");
32                 String location = br.readLine();
33
34                 System.out.println("请输入学生成绩:");
35                 String grade = br.readLine();
36
37                 Student s = new Student();
38                 s.setExamid(examid);
39                 s.setGrade(Double.parseDouble(grade));
40                 s.setIdcard(idcard);
41                 s.setName(name);
42                 s.setLocation(location);
43
44                 StudentDao dao = new StudentDao();
45                 dao.add(s);
46                 System.out.println("添加成功");
47
48             }else if("b".equals(type)){
49
50                 System.out.print("请输入要删除学生的姓名:");
51                 String name = br.readLine();
52                 try{
53                     StudentDao dao = new StudentDao();
54                     dao.delete(name);
55                     System.out.println("删除成功!");
56                 }catch(StudentNotExistException e){
57                     System.out.println("此学生不存在!");
58                 }
59
60             }else if("c".equals(type)){
61
62                 System.out.println("请输入要查找用户的准考证号");
63                 String examid = br.readLine();
64                 StudentDao dao = new StudentDao();
65                 Student s = dao.find(examid);
66                 System.out.println(s);
67
68             }else if("e".equals(type)){
69
70                 System.out.println("退出成功!");
71                 return;
72
73             }else{
74                 System.out.println("不支持你的操作!");
75             }
76         }catch(Exception e){
77             e.printStackTrace();
78             System.out.println("对不起,出错误了");
79         }
80     }
81
82 }

原文地址:https://www.cnblogs.com/Vamps0911/p/10804546.html

时间: 2024-10-10 17:54:28

考试系统(用xml文件模拟数据库)的相关文章

基于Java的XML文件模拟数据库进行增删改查操作

我们知道XML文件既可以用来进行数据的传输,也可以配合DTD约束文件用来作为配置文件,当然其本质就是一个加了标签以及众多空格保持格式的字符串,那么就可以用Java进行操作. 本例是使用MyEclipse带入DOM4j解析时要用的jar包的基础上做的:当然DOM4j相对于DOM SAX 等解析方式的方便程度是不言而喻的. 下面是本次用例XML文件 <?xml version="1.0" encoding="UTF-8"?> <persons> 

【DRP】采用dom4j完成XML文件导入数据库

xml文件在现在的web开发中扮演着重要的角色,从数据库连接配置到其他各种参数的设置,xml文件在反射技术的应用中举足轻重,也正因为xml文件中保存着如此重要的参数,所以对xml文件的读写操作就显得更加重要.下面我们重点讲解一下dom4j完成XML文件导入数据库. 0.带读取的xml文件如下: 1.利用PL/SQL导入SQL脚本,建立Oracle数据库表(表T_XML)结构,用于接收xml导入的数据 2.按照下图,建立目录并导入相应文件 通过引入的相关jar包,实现dom4j技术解析xml文件(

如何将XML文件写入数据库

将xml文件转成string public string XMLDocumentToString(XmlDocument doc) { MemoryStream stream = new MemoryStream(); XmlTextWriter writer = new XmlTextWriter(stream, null); writer.Formatting = Formatting.Indented; doc.Save(writer); //转换 StreamReader sr = ne

Android通过xml文件配置数据库

之前一段时间自己封装了两个数据库,一个是ORM数据库,另一个是事件流数据库,项目相应的地址如下: ORM数据库:https://github.com/wenjiang/SimpleAndroidORM 事件流数据库:https://github.com/wenjiang/EventStreamDB 有兴趣的人可以上去看看. 如果要讲这两个项目,一篇文章的篇幅是放不下的,所以就只是每篇都只讲一点点. 两个自己写的数据库都有一个必须用到的地方:在xml文件中配置数据库. 利用文件配置数据库在很多语言

解析ASP,NET MVC 中 web.config XML文件 取出数据库类型

/// <summary> /// 解析web.config 查询dbType类型 /// </summary> private static void SetDBType() { #region 解析web.config 查询dbType类型 string strPath = HttpContext.Current.Server.MapPath("/") + "Web.config"; XmlDocument doc = new XmlDo

通过MyEclipse生成Hibernate类文件和hbm.xml文件

1.    前言 很多人都在使用myEclipse,很多公司也都使用hibernate框架,老版本的hibernate中,由于没有annotation,我们需要写两个文件来维护表与对象的关系,写一个类,就要写一个hbm.xml文件,数据库表比较少就无所谓,但是多了就很麻烦,要一个一个的手写非常浪费时间,还有可能写错.新版的hibernate加入了annotation的形式来映射对象与数据库表之间的关系,虽然不需要写hbm.xml文件了,但是数据库表非常多的情况下,还是需要写很多的类.我们为何不找

linux下使用libxml2实现对xml文件的读取及查询

由于项目需要,这两天在用C++做XML文件解析的工作.在linux下有个很方便的操作xml文件的库——libxml2,它提供了一套创建和查询xml文件的C语言的接口.这篇博客主要介绍如何使用libxml2读取并解析xml文件. 下载并安装libxml2 下载地址:ftp://xmlsoft.org/libxml2/ 下载最新的版本,我下载的是libxml2-2.9.1.tar.gz.下载后将文件解压到合适的位置,进入解压后的目录. 编译命令非常简单(注意:如果configure文件没有可执行权限

PHP读写XML文件(一)

PHP读写XML文件的方法有四种,从本文开始将连续使用四篇博文来分别介绍这四种方法.本文介绍的是第一种方法: 使用字符串操作的方式来对XML文件进行读写操作. 一.PHP字符串方式写XML文件: 首先介绍PHP使用字符串方式写XML文件.本例将读取数据库中的数据,输出为XML文件. 数据库数据如下: 读取数据并写入XML文件代码: <?php /** * function:使用字符串方式写XML文件 * author:JetWu * date:2016.12.03 **/ $mysqli = m

6月7 考试系统

类似于驾校考试的考试系统 使用到的是数据库表名为: yhks(用户考试)表,yhkstm(用户考试题目)表,kemu(科目)表,shititimu(试题题目)表,xuanxiang(选项)表,timu(题目)表,shiti(试题)表 实现的功能: 1.进入考试界面 2.点击确定会进一步的确认以防按错 3.考试界面实现倒计时一次一道题点击确定自动跳转下一题 4.点击交卷并显示答案 代码部分(php代码在test0607) 1.选择考试 1.1选择考试后台代码----xuanzeks.php <?p