基于XML数据库的学生信息管理系统的设计与实现
来源:互联网 发布:麒麟linux操作系统下载 编辑:程序博客网 时间:2024/06/05 02:08
本项目是在学习之余写的,主要用来练习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
<?xml version="1.0" encoding="UTF-8"?><students> <student id="133122"> <name>well</name> <age>22</age> </student> </students>
设计Student类完成对数据库中数据的封装
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())
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;}elseSystem.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.elementText("age"));}elseSystem.out.println("ID is not existed!");}/** * update a specified student * @param s * @return * @throws Exception */public boolean update(Student s) throws Exception{boolean flag = false;Document doc = getDocument();String xpath = "//student[@id='"+s.getId()+"']";Element element = (Element) doc.selectSingleNode(xpath);if(element!=null){element.element("name").setText(s.getName());element.element("age").setText(s.getAge());write2xml(doc);flag = true;}elseSystem.out.println("ID is not existed!");return flag;}/* * the public function * getDocument() & write2xml */private void write2xml(Document doc) throws FileNotFoundException,UnsupportedEncodingException, IOException {OutputStream os = new FileOutputStream(new File("src/cn/myseu/test/stuMana/db/students.xml"));OutputFormat format = OutputFormat.createPrettyPrint();XMLWriter xw = new XMLWriter(os,format);xw.write(doc);xw.close();}private Document getDocument() throws DocumentException {SAXReader sr = new SAXReader();Document doc = sr.read(new File("src/cn/myseu/test/stuMana/db/students.xml"));return doc;}}
设计StudentUI类,完成系统功能:
package cn.myseu.test.stuMana.ui;import java.util.Scanner;import cn.myseu.test.stuMana.dao.StudentDao;import cn.myseu.test.stuMana.entity.Student;public class StudentUI {public void create() throws Exception{Scanner scanner = new Scanner(System.in);System.out.println("Input stu_id:");String id = scanner.nextLine();System.out.println("Input stu_name:");String name = scanner.nextLine();System.out.println("Input stu_age:");String age = scanner.nextLine();Student s = new Student();s.setId(id);s.setName(name);s.setAge(age);StudentDao stuDao = new StudentDao();boolean flag = stuDao.create(s);if(flag)System.out.println("Your create operation is successful!");elseSystem.out.println("Your create operation is failed!");}public void delete() throws Exception{Scanner scanner = new Scanner(System.in);System.out.println("Input the stu_id of the student who you want to delete:");String id = scanner.nextLine();StudentDao stuDao = new StudentDao();boolean flag = stuDao.delete(id);if(flag)System.out.println("Your delete operation is successful!");elseSystem.out.println("Your delete operation is failed!");}public void check() throws Exception{Scanner scanner = new Scanner(System.in);System.out.println("Input the stu_id of the student who you want to get:");String id = scanner.nextLine();StudentDao stuDao = new StudentDao();stuDao.check(id);}public void update() throws Exception{Scanner scanner = new Scanner(System.in);System.out.println("Input the stu_id of the student who you want to update:");String id = scanner.nextLine();System.out.println("The new name:");String name = scanner.nextLine();System.out.println("The new age:");String age = scanner.nextLine();Student s = new Student();s.setId(id);s.setAge(age);s.setName(name);StudentDao stuDao = new StudentDao();boolean flag = stuDao.update(s);if(flag)System.out.println("Your delete operation is successful!");elseSystem.out.println("Your delete operation is failed!");}}
设计SMS类,提供系统菜单和用户输入输出:
package cn.myseu.test.stuMana;import java.util.Scanner;import cn.myseu.test.stuMana.ui.StudentUI;public class SMS {public static void main(String[] args) throws Exception {System.out.println("========================================");System.out.println("====== Student Management System =======");System.out.println("====== Version 1.0 Author:Well =======");System.out.println("========================================");System.out.println("1.create a new student");System.out.println("2.delete a student from the system");System.out.println("3.search information of a student");System.out.println("4.update information of a student");System.out.println("========================================");System.out.println("Please input your operation number:");Scanner scanner = new Scanner(System.in);StudentUI sui = new StudentUI();int num = Integer.parseInt(scanner.nextLine());switch(num){case 1:sui.create();break;case 2:sui.delete();break;case 3:sui.check();break;case 4:sui.update();break;default:System.out.println("You should input form [1-4]");;break;}}}
最后,简单而丑陋的系统运行界面如下:
最后,这个简单丑陋的系统仅仅是练习和复习相关的知识所用。但我认为也是一个非常简单的分层设计思想的很好的体现。系统简单容易上手。大概用了3个小时左右设计完成。
- 基于XML数据库的学生信息管理系统的设计与实现
- 基于 appfuse 的学生信息管理系统
- 基于linux下的学生信息管理系统
- 基于文件的学生信息管理系统
- 基于C++的学生信息管理系统
- 基于QT的学生信息管理系统开发
- 基于JavaSwing+MySql的学生信息管理系统
- 基于struts2开发的学生信息管理系统
- 学生信息管理系统---数据库的建立
- 学生信息管理系统+mysql数据库的链接
- 基于链表的学生信息管理系统和基于MySQL的学生信息管理系统 -C语言
- 基于ASP.NET的国土资源科技与外事信息管理系统的设计与实现
- 学生选课系统数据库的设计与实现
- c语言实现的学生信息管理系统
- 利用jsshell 实现的学生信息管理系统
- 学生信息管理系统控制台的实现
- java实现简单的学生信息管理系统
- java swing实现的学生信息管理系统
- tomcat多域名配置
- 面试之BI-SQL--table转换[2]
- 关于jquery命名的冲突问题
- NSNotification(消息机制)
- 算法竞赛入门经典第二章练习
- 基于XML数据库的学生信息管理系统的设计与实现
- 用Spring Data JPA 基于内存存储pojo的简单案例
- IOS仿网易新闻客户端左右侧栏
- 【Cocos2d游戏开发之一】搭建cocos2d游戏引擎环境
- mysql常用语句
- 仿微信启动界面
- 6句话,绝对不能对上司说!
- iOS 网络判断
- 1、java虚拟机方法区内存模型