基于XML-DOM技术的MIS系统(学生管理系统-精简版)

dom|xml

(亿众国际-004)[原创]基于XML-DOM技术的MIS系统(学生管理系统-精简版)

/////////////////////////////////////////////////////////
//Author: stardicky                                    //
//E-mail: [email protected]                        //
//QQNumber: 9531511                                    //
//CompanyName: Ezone International                     //
//Class: HBS-0308                                      //
//title: 基于XML-DOM技术的MIS系统(学生管理系统-精简版) //
/////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////
//注:可能有人会问我为什么不用数据库技术来实现当前代码,有以下几个原因
//1.有少量的数据需要存储
//2.速度非常快(主要原因),尤其是在网络上非常适用
//3.能进行串行化
//4.便于企业级应用
////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////
//源文件数量:2                                       //
///////////////////////////////////////////////////////

////////////////////////////////文件1 EzoneInfo.xml/////////////////////////////////
<?xml version="1.0" encoding="utf-8"?>
<!-- 文档声明 -->
<!-- 文档根元素 -->
<亿众国际>
  <!-- '千人软件工程' 是 '亿众国际' 的子元素 -->
  <千人软件工程>
    <班级 学号流水号="6">
      <!-- '学号' 是 '学员' 的属性 -->
      <学员 学号="1">
        <姓名>章程</姓名>
        <性别>男</性别>
        <出生日期>1984-10-01</出生日期>
        <班级>HBS-0308</班级>
      </学员>
      <学员 学号="2">
        <姓名>彭超</姓名>
        <性别>男</性别>
        <出生日期>1981年3月8日</出生日期>
        <班级>HBS-0308</班级>
      </学员>
      <学员 学号="5">
        <姓名>dicky</姓名>
        <性别>男</性别>
        <出生日期>1984-10-01</出生日期>
        <班级>HBS-0308</班级>
      </学员>
      <学员 学号="6">
        <姓名>new</姓名>
        <性别>男</性别>
        <出生日期>1984-11-11</出生日期>
        <班级>HBS-0308</班级>
      </学员>
    </班级>
  </千人软件工程>
</亿众国际>

//////////////////////////////////文件2 EzoneMgrSys.cs ////////////////////////////////
using System;
using System.Xml;

namespace EzoneMgrSys
{
     class MgrSysClass
     {
           //文档对象模型(DOM),这是核心对象!
           public static XmlDocument MyDoc;

           [STAThread]
           public static void Main(string[] args)
           {
                 //初始化对象模型
                 MyDoc=new XmlDocument();
                 Console.WriteLine("正在加载 EzoneInfo.xml 文件......");
                 //加载XML文件到文档对象模型(DOM)中
                 MyDoc.Load("..\\..\\EzoneInfo.xml"); //注意文件位置
                 Console.WriteLine("DOM(Data Object Modal)数据对象模型在内存中创建完毕!");
                 //保存用户输入的命令字符串
                 string Command=string.Empty;
                 //打印菜单
                 PrintMenu();
                 while(true)
                 {
                       Command=Console.ReadLine();
                       int i=0;
                       try
                       {
                             //如果用户没有输入数字,则这里的转换*作会抛出一个异常!
                             i=int.Parse(Command);
                       }
                       catch
                       {
                             PrintMenu();
                             continue;
                       }
                       switch(i)
                       {
                             case 1:
                                   //查看所有学员信息
                                   MgrSysClass.DisplayAll();
                                   break;
                             case 2:
                                   //插入新学员信息
                                   MgrSysClass.InsertModule();
                                   break;
                             case 3:
                                   //更新学员信息
                                   MgrSysClass.UpdateModule();
                                   break;
                             case 4:
                                   //删除学员信息
                                   MgrSysClass.DeleteModule();
                                   break;
                             case 5:
                                   //退出系统
                                   goto CloseLabel;
                             default:
                                   Console.WriteLine("输入错误命令!");
                                   break;
                       }
                       PrintMenu();
                 }
                 CloseLabel:
                       Console.WriteLine("正在读取内存中DOM对象,准备向 EzoneInfo.xml 文件更新数据......");
                       //保存XML文件
                       MgrSysClass.MyDoc.Save("..\\..\\EzoneInfo.xml");
                       Console.WriteLine("文件保存完毕!");
                       Console.WriteLine("程序正常退出!");
                       //系统信息
                       MgrSysClass.SystemAbout();
                       Console.Write("按任意键退出.....");
           }

           /// <summary>
           /// 打印菜单模块
           /// </summary>
           public static void PrintMenu()
           {
                 Console.WriteLine(" __________________________________________________________ ");
                 Console.WriteLine("|______________ 亿众国际 学生管理系统(精简版) _____________|");
                 Console.WriteLine("|                                                          |");
                 Console.WriteLine("|                      1.查看信息                          |");
                 Console.WriteLine("|                      2.插入信息                          |");  
                 Console.WriteLine("|                      3.修改信息                          |");
                 Console.WriteLine("|                      4.删除信息                          |");
                 Console.WriteLine("|                      5.退出系统                          |");
                 Console.WriteLine("|----------------------------------------------------------|");
                 Console.WriteLine("|  注:只有正常退出,才能保证将内存中数据保存到 XML 文件! |");
                 Console.WriteLine(" ---------------------------------------------------------- ");
                 Console.Write("命令:");
           }

           /// <summary>
           /// 插入新学员信息模块
           /// </summary>
           public static void InsertModule()
           {
                 //保存用户的输入
                 MyLabel1:Console.Write("请输入你的姓名:");
                 string name=Console.ReadLine();
                 if(name.Trim()==string.Empty)
                       goto MyLabel1;
                 MyLabel2:Console.Write("请输入你的性别:");
                 string sex=Console.ReadLine();
                 if(sex.Trim()==string.Empty)
                       goto MyLabel2;
                 MyLabel3:Console.Write("请输入你的出生日期:");
                 string birthday=Console.ReadLine();
                 if(birthday.Trim()==string.Empty)
                       goto MyLabel3;
                 MyLabel4:Console.Write("请输入你的班级:");
                 string classid=Console.ReadLine();
                 if(classid.Trim()==string.Empty)
                       goto MyLabel4;
                 //创建当前DOM对象的代码片段
                 XmlDocumentFragment MyDocFrag=MyDoc.CreateDocumentFragment();
                 //获得具有[学号流水号]属性的[班级]节点
                 XmlNode MyNode=MyDoc.SelectSingleNode("//班级[@学号流水号]");
                 //获取当前[学号流水号]的值
                 int StuId=int.Parse(MyNode.Attributes["学号流水号"].Value);
                 //修改[学号流水号]
                 StuId++;
                 MyNode.Attributes["学号流水号"].Value=StuId.ToString();

                 //创建一个<学员>节点
                 XmlElement MyElementRoot=MyDoc.CreateElement("学员");
                 //创建一个<学号>属性,并把他绑定到<学员>节点
                 XmlAttribute MyAttribute=MyDoc.CreateAttribute("学号");
                 MyAttribute.Value=StuId.ToString();
                 MyElementRoot.SetAttributeNode(MyAttribute);
                 //创建一个<姓名>节点
                 XmlElement MyElementName=MyDoc.CreateElement("姓名");
                 MyElementName.InnerText=name;
                 //创建一个<性别>节点
                 XmlElement MyElementSex=MyDoc.CreateElement("性别");
                 MyElementSex.InnerText=sex;
                 //创建一个<出生日期>节点
                 XmlElement MyElementBirthday=MyDoc.CreateElement("出生日期");
                 MyElementBirthday.InnerText=birthday;
                 //创建一个<班级>节点
                 XmlElement MyElementClassId=MyDoc.CreateElement("班级");
                 MyElementClassId.InnerText=classid;
                 //把以上的节点添加到<学员>的子节点中
                 MyElementRoot.AppendChild(MyElementName);
                 MyElementRoot.AppendChild(MyElementSex);
                 MyElementRoot.AppendChild(MyElementBirthday);
                 MyElementRoot.AppendChild(MyElementClassId);

                 //添加<学员>节点到 MyDocFrag 对象中
                 MyDocFrag.AppendChild(MyElementRoot);

                 //获得具有[学号流水号]属性的[班级]节点
                 XmlNode TempNode=MyDoc.SelectSingleNode("//班级[@学号流水号]");
                 //把代码片段添加到DOM对象中
                 TempNode.AppendChild(MyDocFrag);

                 Console.WriteLine("成功添加学员记录!");
                 Console.Write("按任意键继续...");
                 Console.ReadLine();
           }

           /// <summary>
           /// 更新学员信息模块
           /// </summary>
           public static void UpdateModule()
           {
                 Console.Write("请输入你将要修改学员的学生学号:");
                 int StuId;
                 try
                 {
                       StuId=int.Parse(Console.ReadLine());
                 }
                 catch
                 {
                       Console.WriteLine("你输入了非法字符!");
                       return;
                 }
                 //搜索你要修改学员的学生学号
                 XmlNode MyNode=MyDoc.SelectSingleNode("//学员[@学号='"+StuId.ToString()+"']");
                 //如果没有搜索到,对象值就为 null
                 if(MyNode==null)
                       Console.WriteLine("对不起,没有找到你想要修改的学员记录!");
                 else
                 {
                       //保存用户的输入
                       MyLabel1:Console.Write("请输入姓名:");
                       string name=Console.ReadLine();
                       if(name.Trim()==string.Empty)
                             goto MyLabel1;
                       MyLabel2:Console.Write("请输入性别:");
                       string sex=Console.ReadLine();
                       if(sex.Trim()==string.Empty)
                             goto MyLabel2;
                       MyLabel3:Console.Write("请输入出生日期:");
                       string birthday=Console.ReadLine();
                       if(birthday.Trim()==string.Empty)
                             goto MyLabel3;
                       MyLabel4:Console.Write("请输入班级:");
                       string classid=Console.ReadLine();
                       if(classid.Trim()==string.Empty)
                             goto MyLabel4;
                       //克隆原来节点
                       XmlNode MyNewNode=MyNode.CloneNode(true);
                       //进行赋值*作
                       MyNewNode.ChildNodes[0].InnerText=name;
                       MyNewNode.ChildNodes[1].InnerText=sex;
                       MyNewNode.ChildNodes[2].InnerText=birthday;
                       MyNewNode.ChildNodes[3].InnerText=classid;
                       
                       //进行替换节点的*作
                       MyNode.ParentNode.ReplaceChild(MyNewNode,MyNode);
                       Console.WriteLine("成功修改学员记录!");
                 }
                 Console.Write("按任意键继续...");
                 Console.ReadLine();
           }

           /// <summary>
           /// 删除学员信息模块
           /// </summary>
           public static void DeleteModule()
           {
                 Console.Write("请输入你将要删除学员的学生学号:");
                 int StuId;
                 try
                 {
                       StuId=int.Parse(Console.ReadLine());
                 }
                 catch
                 {
                       Console.WriteLine("你输入了非法字符!");
                       return;
                 }
                 //搜索你要删除学员的学生学号
                 XmlNode MyNode=MyDoc.SelectSingleNode("//学员[@学号='" + StuId.ToString() + "']");
                 //如果没有搜索到,对象值就为 null
                 if(MyNode==null)
                       Console.WriteLine("对不起,没有找到你想要删除的学员记录!");
                 else
                 {
                       //进行删除节点*作
                       MyNode.ParentNode.RemoveChild(MyNode);
                       Console.WriteLine("成功删除学员记录!");
                 }
                 Console.Write("按任意键继续...");
                 Console.ReadLine();
           }

           /// <summary>
           /// 查看所有学员信息模块
           /// </summary>
           public static void DisplayAll()
           {
                 //搜索所有的<学员>节点,并赋给一个节点列表对象
                 XmlNodeList MyNodeList=MyDoc.SelectNodes("//学员");
                 //如果<学员>节点的数量不为0,就遍历节点列表对象进行打印
                 if(MyNodeList.Count!=0)
                 {
                       Console.WriteLine(" ---------------------------------------------------------- ");
                       Console.WriteLine("|学号\t姓名\t性别\t出生日期\t班级               |");
                       Console.WriteLine(" ---------------------------------------------------------- ");
                       foreach(XmlNode MyNode in MyNodeList)
                       {
                             string strTemp=string.Empty;
                             strTemp+=MyNode.Attributes["学号"].Value+"\t"+      //获取学号
                                         MyNode.ChildNodes[0].InnerText +"\t"+      //获取姓名
                                         MyNode.ChildNodes[1].InnerText+"\t"+      //获取性别
                                         MyNode.ChildNodes[2].InnerText+"\t"+      //获取出生日期
                                         MyNode.ChildNodes[3].InnerText;                  //获取班级
                             Console.WriteLine(strTemp);
                       }
                       Console.WriteLine(" ---------------------------------------------------------- ");
                 }
                 else
                       Console.WriteLine("当前DOM中没有学员记录!");
                 Console.Write("按任意键继续...");
                 Console.ReadLine();
           }

           /// <summary>
           /// 系统模块
           /// </summary>
           public static void SystemAbout()
           {
                 Console.WriteLine(" __________________________________________________________ ");
                 Console.WriteLine("|______________ 亿众国际 学生管理系统(精简版) _____________|");
                 Console.WriteLine("|                                                          |");
                 Console.WriteLine("|     作者:章程       电邮:[email protected]         |");
                 Console.WriteLine("|     OICQ:9531511    版本:1.0                           |");
                 Console.WriteLine("|__________________________________________________________|");
           }
     }
}
//希望大家多提点意见

时间: 2016-05-08

基于XML-DOM技术的MIS系统(学生管理系统-精简版)的相关文章

基于Servlet的技术问答网站系统实现(附源码)

这一篇博客将详细介绍一个基于Servlet的问答网站的实现,有详细的代码. 可能篇幅较长,以代码为主,有兴趣的童鞋看完可以尝试动手搭建一个属于自己的问答社区. 工具:Eclipse,数据库用到了MySQL,这次项目中未使用jsp,全部以Servlet注解的方式连接HTML和Servlet,JDK最好使用1.8,tomcat使用8.0.(注解方式为JDK1.5后的特性,最低要求1.5+,本项目使用JDK1.8). 在这篇博客中可以学习到: 1,Servlet中关于注解的使用,本项目没有使用到传统的

使用ExtJs开发MIS系统(1):基于ExtJs的MIS构架设计

本系列主要包括以下内容: 基于ExtJs的MIS构架设计. Js的动态加载. 使用数据库保存客户端状态. 轮询和无状态设计. 使用Action抽象客户端操作. 客户端MVC. 最后,如果还有精力的话,再写一些ExtJs性能方面的心得. 本文中的例子.代码等来源于真实的的项目,所以恕不能提供完整的代码下载,但会尽量详细的阐述设计思路,并给出关键的代码片段. 欢迎大家交流和指教. 2,客户端的"致富"之路 在SilverLight.Flex等富客户端框架出现以前,系统中通常由服务器负责Ht

[Java]XML数据的请求和DOM技术解析

刚刚看到一条微博 今天距离2009级离校倒计时还有100天 借用"三国杀"里面张辽归天说的一句话--"真的没想到".这浑浑噩噩的四年没想到就快没了.没想到啊. 临近毕业季,虽说没课,但是繁琐的事情很多.工作,毕业设计,论文,实习报告--单单找工作就让焦头烂额.也就因为这诸多的原因,博客很久没有更新.这也算是给某公司面试官的回答吧. 言归正传,技术人终究讲技术.由于毕业设计的缘故,需要写Java解析XML文件.(说起毕业设计就想起坑爹的队友,三个人的小组就我一个人在奋

基于xml文件实现系统属性配置管理

文章标题:基于xml文件实现系统属性配置管理 . 文章地址: http://blog.csdn.net/5iasp/article/details/11774501 作者: javaboy2012 Email:[email protected] qq:    1046011462   项目截图;   主要有如下几个类和配置文件实现: 1. SystemProperties   package com.yanek.cfg; import java.util.Collection; import java.

基于三层架构技术的网上书店系统的搜索图书的功能

问题描述 请问各位基于三层架构技术的网上书店系统的搜索图书的功能应该如何实现 解决方案 解决方案二:这结贴率...不就是查询么--解决方案三:三层架构??楼上说的对,就是查询,和你几层没关系架构是指设计搜索是指技术你需要在View层布局好你的输入框和ButtonController层把View层得Search.text传进来,通过查找Model层数据,再返回给View层解决方案四:引用2楼ruanwei1987的回复: 三层架构??楼上说的对,就是查询,和你几层没关系架构是指设计搜索是指技术你需

基于EasyJWeb服务调度和自定义邮件引擎技术的CRM系统实战开发

问题描述 <基于EasyJWeb服务调度和自定义邮件引擎技术的CRM系统实战开发>在本课程当中,主要讲述了3个核心的知识点.第一个知识点是EasyJWeb框架,这也是国人自主研发的一款优秀的MVC框架.第二个知识点是服务调度.这个主意是针对于性能优化的方案,其核心是一种分布式的架构思想第三个知识点是自定义邮件引擎,针对于CRM系统来说,大批量的持续发送邮件是一个很重要的功能下载地址:http://download.csdn.net/detail/peaki/6756111 解决方案 解决方案二

XML相关技术资料_小偷/采集

xmlHTTP技术:  ----------------------------------------------------------  一.数据库远程管理技术  基于互联网的广域网现代应用中的一个重要环节是数据库远程监控.首先简单回顾一下互联网上的数据库远程管理技术的发展过程和方式:  早期通过编写CGI-BIN程序模块进行数据库远程管理.但CGI-BIN的运行速度慢,维护很不方便,现在已经基本被弃用.  这几年使用组件对象模型(Component Object Model, COM)的

XML相关技术资料_XML/RSS

xmlHTTP技术: ---------------------------------------------------------- 一.数据库远程管理技术 基于互联网的广域网现代应用中的一个重要环节是数据库远程监控.首先简单回顾一下互联网上的数据库远程管理技术的发展过程和方式: 早期通过编写CGI-BIN程序模块进行数据库远程管理.但CGI-BIN的运行速度慢,维护很不方便,现在已经基本被弃用. 这几年使用组件对象模型(Component Object Model, COM)的应用非常多

XML相关技术资料

xmlHTTP技术:  ----------------------------------------------------------  一.数据库远程管理技术 基于互联网的广域网现代应用中的一个重要环节是数据库远程监控.首先简单回顾一下互联网上的数据库远程管理技术的发展过程和方式: 早期通过编写CGI-BIN程序模块进行数据库远程管理.但CGI-BIN的运行速度慢,维护很不方便,现在已经基本被弃用. 这几年使用组件对象模型(Component Object Model, COM)的应用非