///////////////////////////////////////////////////////// //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