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

类别:.NET开发 点击:0 评论:0 推荐:
(亿众国际-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("|__________________________________________________________|");
           }
     }
}
//希望大家多提点意见

本文地址:http://com.8s8s.com/it/it44987.htm