xml版本学生管理系统

一: 需求描述

学生成绩管理系统,使用xml存储学生信息,可以对学生信息进行增、删、删除操作。

主要目的:练习操作xml元素的增删改查

二:代码结构

1:xml存储数据如下

exam.xml

 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 2 <students>
 3     <student>
 4         <name sid="111">李四</name>
 5         <age>23</age>
 6         <gender>男</gender>
 7     </student>
 8     <student>
 9         <name sid="222">张三</name>
10         <age>21</age>
11         <gender>女</gender>
12     </student>
13 </students>

2:Student类封装学生信息

 1 /**
 2  *
 3  */
 4 package com.hlcui.entity;
 5
 6 /**
 7  * @author Administrator
 8  *
 9  */
10 public class Student {
11     private int id;
12     private String name;
13     private int age;
14     private String gender;
15
16     public int getId() {
17         return id;
18     }
19
20     public void setId(int id) {
21         this.id = id;
22     }
23
24     public String getName() {
25         return name;
26     }
27
28     public void setName(String name) {
29         this.name = name;
30     }
31
32     public int getAge() {
33         return age;
34     }
35
36     public void setAge(int age) {
37         this.age = age;
38     }
39
40     public String getGender() {
41         return gender;
42     }
43
44     public void setGender(String gender) {
45         this.gender = gender;
46     }
47
48 }

3:数据访问层,封装操作xml数据的方法

 1 /**
 2  *
 3  */
 4 package com.hlcui.dao;
 5
 6 import org.w3c.dom.Document;
 7 import org.w3c.dom.Element;
 8 import org.w3c.dom.NodeList;
 9
10 import com.hlcui.entity.Student;
11 import com.hlcui.exception.NameNotFoundException;
12 import com.hlcui.utils.StudentUtils;
13
14 /**
15  * @author Administrator
16  *
17  */
18 public class StudentDAO {
19     // 添加学生信息
20     public void add(Student stu) {
21         try {
22             Document doc = StudentUtils.getDocument();
23             Element student = doc.createElement("student");
24             student.setAttribute("id", stu.getId() + ""); // 给学生元素添加属性
25
26             // 分别创建姓名、年龄、性别节点
27             Element name = doc.createElement("name");
28             name.setTextContent(stu.getName());
29             Element age = doc.createElement("age");
30             age.setTextContent(stu.getAge() + "");
31             Element gender = doc.createElement("gender");
32             gender.setTextContent(stu.getGender());
33
34             // 将姓名、年龄、性别节点添加到学生节点上
35             student.appendChild(name);
36             student.appendChild(age);
37             student.appendChild(gender);
38
39             // 在将student节点添加到students节点上
40             doc.getElementsByTagName("students").item(0).appendChild(student);
41             StudentUtils.write2XML(doc);
42             System.out.println("添加成功!");
43         } catch (Exception e) {
44             e.printStackTrace();
45         }
46     }
47
48     // 根据学生姓名查询学生信息
49     public Student find(String name) throws NameNotFoundException {
50         try {
51             Document doc = StudentUtils.getDocument();
52             NodeList list = doc.getElementsByTagName("student");
53             for (int i = 0; i < list.getLength(); i++) {
54                 Element ele = (Element) list.item(i);
55                 if (name.equals((ele.getElementsByTagName("name")).item(0)
56                         .getTextContent())) {
57                     Student stu = new Student();
58                     stu.setId(Integer.parseInt(ele.getAttribute("id")));
59                     stu.setName(name);
60                     stu.setAge(Integer.parseInt((ele
61                             .getElementsByTagName("age")).item(0)
62                             .getTextContent()));
63                     stu.setGender(ele.getElementsByTagName("gender").item(0)
64                             .getTextContent());
65                     return stu;
66                 }
67             }
68             throw new NameNotFoundException(name + "不存在!!!");
69         } catch (NameNotFoundException e) {
70             throw e;
71         } catch (Exception e) {
72             e.printStackTrace();
73         }
74         return null;
75     }
76
77     // 根据id删除学生信息
78     public boolean delete(int id) {
79         try {
80             Document doc = StudentUtils.getDocument();
81             NodeList list = doc.getElementsByTagName("student");
82             for (int i = 0; i < list.getLength(); i++) {
83                 Element ele = (Element) list.item(i);
84                 if (String.valueOf(id).equals(ele.getAttribute("id"))) {
85                     ele.getParentNode().removeChild(ele);
86                     StudentUtils.write2XML(doc);
87                     return true;
88                 }
89             }
90         } catch (Exception e) {
91             e.printStackTrace();
92         }
93         return false;
94     }
95 }

4:自定义异常类,封装异常

 1 /**
 2  *
 3  */
 4 package com.hlcui.exception;
 5
 6 /**
 7  * @author Administrator
 8  *
 9  */
10 public class NameNotFoundException extends Exception {
11
12     /**
13      *
14      */
15     private static final long serialVersionUID = 1L;
16
17     /**
18      *
19      */
20     public NameNotFoundException() {
21     }
22
23     /**
24      * @param message
25      */
26     public NameNotFoundException(String message) {
27         super(message);
28     }
29
30     /**
31      * @param cause
32      */
33     public NameNotFoundException(Throwable cause) {
34         super(cause);
35     }
36
37     /**
38      * @param message
39      * @param cause
40      */
41     public NameNotFoundException(String message, Throwable cause) {
42         super(message, cause);
43     }
44
45 }

5:junit框架测试DAO方法

 1 /**
 2  *
 3  */
 4 package com.hlcui.test;
 5
 6 import org.junit.Test;
 7
 8 import com.hlcui.dao.StudentDAO;
 9 import com.hlcui.entity.Student;
10 import com.hlcui.exception.NameNotFoundException;
11
12 /**
13  * @author Administrator
14  *
15  */
16 public class TestStudentDAO {
17     private StudentDAO dao = new StudentDAO();
18
19     @Test
20     public void testAdd() {
21         Student stu = new Student();
22         stu.setId(333);
23         stu.setName("王二");
24         stu.setAge(27);
25         stu.setGender("男");
26         dao.add(stu);
27     }
28
29     @Test
30     public void testFind() throws NameNotFoundException {
31         String name = "王二";
32         Student stu = dao.find(name);
33         System.out.println("学号:" + stu.getId() + "\n姓名:" + stu.getName()
34                 + "\n年龄:" + stu.getAge() + "\n性别:" + stu.getGender());
35
36     }
37
38     @Test
39     public void testDelete() {
40         int id = 333;
41         boolean flag = dao.delete(id);
42         System.out.println(flag ? "删除成功!!" : "删除失败!!");
43     }
44 }

6:封装操作dom文件功能方法

 1 /**
 2  *
 3  */
 4 package com.hlcui.utils;
 5
 6 import java.io.FileOutputStream;
 7 import java.io.IOException;
 8
 9 import javax.xml.parsers.DocumentBuilder;
10 import javax.xml.parsers.DocumentBuilderFactory;
11 import javax.xml.parsers.ParserConfigurationException;
12 import javax.xml.transform.Transformer;
13 import javax.xml.transform.TransformerConfigurationException;
14 import javax.xml.transform.TransformerFactory;
15 import javax.xml.transform.dom.DOMSource;
16 import javax.xml.transform.stream.StreamResult;
17
18 import org.w3c.dom.Document;
19
20 /**
21  * @author Administrator
22  *
23  */
24 public class StudentUtils {
25
26     /* 获取Document对象* */
27     public static Document getDocument() throws Exception {
28         DocumentBuilderFactory sfb = DocumentBuilderFactory.newInstance();
29         DocumentBuilder db = sfb.newDocumentBuilder();
30         Document doc = db.parse("xml/exam.xml");
31         return doc;
32     }
33
34     /* 将内存中的内容写到硬盘* */
35     public static void write2XML(Document doc) throws Exception {
36         TransformerFactory factory = TransformerFactory.newInstance();
37         Transformer tf = factory.newTransformer();
38         tf.transform(new DOMSource(doc), new StreamResult(new FileOutputStream(
39                 "xml/exam.xml")));
40     }
41 }

7:用户交互界面

 1 /**
 2  *
 3  */
 4 package com.hlcui.ui;
 5
 6 import java.io.BufferedReader;
 7 import java.io.IOException;
 8 import java.io.InputStreamReader;
 9
10 import com.hlcui.dao.StudentDAO;
11 import com.hlcui.entity.Student;
12 import com.hlcui.exception.NameNotFoundException;
13
14 /**
15  * @author Administrator 用户交互界面
16  */
17 public class Main {
18
19     public static StudentDAO dao = new StudentDAO();
20
21     /**
22      *
23      * @param args
24      */
25     public static void main(String[] args) {
26
27         System.out.println("请选择操作模式:a:添加用户    b:查找用户    c:删除用户   exit:退出系统");
28         BufferedReader br = null;
29         try {
30             while (true) {
31                 br = new BufferedReader(new InputStreamReader(System.in));
32                 String type = br.readLine();
33                 if ("a".equals(type)) {
34
35                     // 录入数据
36                     System.out.println("请输入学号:");
37                     int id = Integer.parseInt(br.readLine());
38                     System.out.println("请输入姓名:");
39                     String name = br.readLine();
40                     System.out.println("请输入年龄:");
41                     int age = Integer.parseInt(br.readLine());
42                     System.out.println("请输入性别:");
43                     String gender = br.readLine();
44                     // 封装数据
45                     Student stu = new Student();
46                     stu.setId(id);
47                     stu.setName(name);
48                     stu.setAge(age);
49                     stu.setGender(gender);
50
51                     // 插入数据
52                     dao.add(stu);
53                 } else if ("b".equals(type)) {
54                     System.out.println("请输入姓名:");
55                     String name = br.readLine();
56                     try {
57                         Student stu = dao.find(name);
58                         System.out.println("***********学生信息如下***********");
59                         System.out.println("学号:" + stu.getId() + "\n姓名:"
60                                 + stu.getName() + "\n年龄:" + stu.getAge()
61                                 + "\n性别:" + stu.getGender());
62                     } catch (NameNotFoundException e) {
63                         System.out.println(e.getMessage());
64                     }
65                 } else if ("c".equals(type)) {
66                     System.out.println("请输入学号:");
67                     int id = Integer.parseInt(br.readLine());
68                     boolean flag = dao.delete(id);
69                     if (flag) {
70                         System.out.println("删除成功!");
71                     } else {
72                         System.out.println("删除失败!");
73                     }
74                 } else if ("exit".equals(type.toLowerCase())) {
75                     System.out.println("系统正在退出...");
76                     try {
77                         Thread.sleep(3000);
78                     } catch (InterruptedException e) {
79                         e.printStackTrace();
80                     }
81                     break;
82                 } else {
83                     System.out.println("您的操作暂不支持,请重新输入:");
84                 }
85             }
86
87         } catch (IOException e) {
88             e.printStackTrace();
89         } finally {
90             if (null != br) {
91                 try {
92                     br.close();
93                 } catch (IOException e) {
94                     e.printStackTrace();
95                 }
96             }
97         }
98     }
99 }

代码均已经验证正确!

时间: 2024-10-30 15:11:52

xml版本学生管理系统的相关文章

Java版本 学生管理系统

package BookDemo_1; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Test { public static void main(String[] args) { StudentSys stuSys=new StudentSys("学生管理系统"); stuSys.initWin(); } } class StudentSys extends JFrame{

JAVA入门到精通-第70讲-学生管理系统2-增删改

-完成一个mini版本学生管理系统 jude软件:很好使的,安装一下就可以用了: -学生管理系统的添加 .修改.删除.上下页分页 ---------------------------------------------- 上面是一个流布局,JPanel 下面是一个流布局,JPanel 中间是Border布局,边界布局,CENTER JTextField jtf; 先加JLable--->Jtf文本域->JButton按钮 ------------------------- mis 系统:信息

05_学生管理系统,xml读写,布局的综合应用

?? 最终要做的项目目标: 2.编写Android清单文件AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.itheima27.sutdentmanager" android:ve

C语言版本学生信息管理系统

仍然有一些小bug,后续会发布OC完善版的图书馆管理系统,欢迎批评指正. 1 #include <stdio.h> 2 void menu_choose(); 3 typedef struct 4 { 5 int Id; 6 int age; 7 char name[50]; 8 char sex[10]; 9 10 }Student; 11 Student stuArr[100]; 12 int stuCount=0; 13 14 void readStu(Student * stu) 15

java版本的学生管理系统

1 import java.awt.BorderLayout; 2 import java.awt.Color; 3 import java.awt.Frame; 4 import java.awt.event.ActionEvent; 5 import java.awt.event.ActionListener; 6 import java.io.UnsupportedEncodingException; 7 import java.sql.Connection; 8 import java.

简单的学生管理系统

简单的学生管理系统 一,主要功能: 1,添加学生信息: 2,添加的学生信息显示在线型布局中: 3,把学生信息保存在xml文件中: 4,把保存在mxl中的学生信息取出来解析显示在界面: 二,主要知识点: 1,layout_weight的使用: 2,pull解析xml文件,xml序列化: 3,保存数据到sd卡: 4,动态添加控件刷新界面: 三,界面原型如下图: 四,代码展示: 1,界面xml文件,activity_main.xml <LinearLayout xmlns:android="ht

Servlet实例开发---学生管理系统

Servlet总结 本程序采用Servlet开发技术,MVC分层,所有程序在设计时都要接口为操作的标准,主要逻辑操作只有增删改查. 具体实现操作请看源代码. 本程序采用的是MYSQL数据库,需加入相应的jar包 目录结构 首先贴上底层数据层: 连接数据库 package com.student.dbc ; import java.sql.* ; public class DatabaseConnection { private static final String DBDRIVER = "or

【IOS开发笔记02】学生管理系统

端到端的机会 虽然现在身处大公司,但是因为是内部创业团队,产品.native.前端.服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端任务好像可以抛一大坨出去了,这个时候立刻想到了切入IOS开发!!! 事实上,前端开发做到一定时间,要进步很难了,最近几个月扑到业务上便感觉突破不了目前的瓶颈,自身的前端瓶颈主要在两方面:技术深度.技术广度 其实不论深度或者广度来说都不是简单前端能说清楚的事情,不能说了解了angularJS.react等框架技术深度

学生管理系统利用网页较为成熟的优化。。。

基础的web页面 1 <?xml version="1.0" encoding="ISO-8859-1"?> 2 3 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://xmlns