本项目是在学习之余写的,主要用来练习MVC+DAO的分层设计思想,项目基于一个简单的XML学生数据库,使用XML作为数据库的原因是其十分的小巧与方便,使用dom4j即可进行方便的解析。因为这段时间课程一直比较密集,在Java相关内容的学习上比较滞后。希望用这个小项目来练一练久矣不写代码的手,也作为研一一个月来的学习小结吧。不废话了,具体内容如下:
项目说明:
本项目提供简单的用户界面(命令行),实现对XML数据库中学生数据的增删改查操作。项目要求使用分层设计思想,为什么要分层?分层可以将不同的代码块分离出来,避免不同功能的代码耦合,为程序扩展和维护提供方便。使用分层,也可以简单化一个系统的设计过程。
DB: students.xml
- Entity: Student 类 (packet: cn.myseu.test.stuMana.entity)
- Dao: StudentDao 类,完成具体的增删改查操作 (packet: cn.myseu.test.stuMana.dao)
- UI: StudentUI 类,实现用户输入操作 (packet: cn.myseu.test.stuMana.ui)
- SMS 类,提供主函数和用户界面 ( packet: cn.myseu.test.stuMana )
数据库如下:student.xml
[html]
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="133122">
<name>well</name>
<age>22</age>
</student>
</students>
设计Student类完成对数据库中数据的封装
[java]
package cn.myseu.test.stuMana.entity;
public class Student {
private String id;
private String name;
private String age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
设计StudentDao类完成对XML数据库的增删改查操作(这里将公操作进行了抽取,分布为getDocument()和write2xml())
[java]
package cn.myseu.test.stuMana.dao;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import cn.myseu.test.stuMana.entity.Student;
public class StudentDao {
/**
* Add a new student to the database
* @param s
* @return
* @throws Exception
*/
public boolean create(Student s) throws Exception{
boolean flag = false;
if(s!=null){
Document doc = getDocument();
Element root = doc.getRootElement();
Element newElement = root.addElement("student");
newElement.addAttribute("id", s.getId());
newElement.addElement("name").setText(s.getName());
newElement.addElement("age").setText(s.getAge());
write2xml(doc);
flag = true;
}
return flag;
}
/**
* delete a student from the xml-database
* @param id the student_id you want to delete
* @return
* @throws Exception
*/
public boolean delete(String id) throws Exception{
boolean flag = false;
Document doc = getDocument();
String xpath = "//student[@id='"+id+"']";
Element element = (Element) doc.selectSingleNode(xpath);
if(element!=null){
element.getParent().remove(element);
write2xml(doc);
flag = true;
}else
System.out.println("ID is not existed!");
return flag;
}
/**
* search the information of a specified student
* @param id
* @throws Exception
*/
public void check(String id) throws Exception{
Document doc = getDocument();
String xpath = "//student[@id='"+id+"']";
Element element = (Element) doc.selectSingleNode(xpath);
if(element!=null){
System.out.println("stu_id:"+element.attributeValue("id"));
System.out.println("stu_name:"+element.elementText("name"));
System.out.println("stu_age:"+element.ele
补充:软件开发 , Java ,