/* * * 从 xml 数据中 读取一个已经存在的工作组(N个工作流的组合) * * */ private void LoadXml() { personList = new List <hyPerson>();// 创建工作流列表 xmlDoc = new XmlDocument(); xmlDoc.Load("hyPerson.xml"); //加载xml文件 xroot = xmlDoc.SelectSingleNode("persongroup"); XmlNodeList xnl1 = xroot.ChildNodes; foreach (XmlNode xn1 in xnl1) {// Person // 每一个工作流,都包含关联一个工艺 // 每个工艺中,都包含了13个station(炉子,水槽)的参数.station para hyPerson Person = new hyPerson(); XmlElement xe1 = (XmlElement)xn1; Person.id = Convert.ToInt32(xe1.ChildNodes.Item(0).InnerText); // id Person.name = xe1.ChildNodes.Item(1).InnerText; // 姓名 Person.job_number = xe1.ChildNodes.Item(2).InnerText; // 工号 Person.position = xe1.ChildNodes.Item(3).InnerText; // 岗位 Person.password = Encript.Decode(xe1.ChildNodes.Item(4).InnerText); // 密码//加密 person_id_max_assigned = Math.Max(Person.id, person_id_max_assigned); personList.Add(Person); } }
///<summary> /// 修改节点 ///</summary> private void UpdateXmlNode(hyPerson Person) { //xmlDoc = new XmlDocument(); //xmlDoc.Load("hyPerson.xml"); // 加载xml文件 // 获取Persongroup节点的所有子节点 XmlNodeList xnl2 = xmlDoc.SelectSingleNode("persongroup").ChildNodes; // 遍历所有子节点 foreach (XmlNode xn2 in xnl2) { XmlElement xe2 = (XmlElement)xn2; // 将子节点类型转换为XmlElement类型 if (Convert.ToInt32(xe2.ChildNodes.Item(0).InnerText) == Person.id) { xe2.ChildNodes.Item(1).InnerText = Person.name; // xe2.ChildNodes.Item(2).InnerText = Person.job_number; // xe2.ChildNodes.Item(3).InnerText = Person.position; // xe2.ChildNodes.Item(4).InnerText = Encript.Encode(Person.password); // 加密 break; } } xmlDoc.Save("hyPerson.xml");//保存。 }
/* * * 在 xml 数据中 追加(插入)数据。 * * */ private void InsertXmlNode(hyPerson Person) { /** * 插入一个person * <person> * */ XmlElement xe1 = xmlDoc.CreateElement("person"); //创建一个﹤person﹥节点 person_id_max_assigned++; // ID Person.id = person_id_max_assigned; // ID XmlElement xe2_1 = xmlDoc.CreateElement("id"); // id xe2_1.InnerText = Person.id.ToString(); xe1.AppendChild(xe2_1); XmlElement xe2_2 = xmlDoc.CreateElement("name");// id xe2_2.InnerText = Person.name.ToString(); xe1.AppendChild(xe2_2); XmlElement xe2_3 = xmlDoc.CreateElement("job_number");// id xe2_3.InnerText = Person.job_number.ToString(); xe1.AppendChild(xe2_3); XmlElement xe2_4 = xmlDoc.CreateElement("position");// id xe2_4.InnerText = Person.position.ToString(); xe1.AppendChild(xe2_4); XmlElement xe2_5 = xmlDoc.CreateElement("password"); // id xe2_5.InnerText = Encript.Encode(Person.password.ToString()); // 加密 xe1.AppendChild(xe2_5); xroot.AppendChild(xe1); //添加到﹤Persongroup﹥节点中 xmlDoc.Save("hyPerson.xml"); //保存其更改 }
public void LoadPersonInfo() { foreach (hyPerson person in personGroup.personList) { if (currPersonId == person.id) { currPerson = person; // labelPersonName.Text = currPerson.name; // 姓名 labelPersonJobNumber.Text = currPerson.job_number; // 工号 labelPersonPosition.Text = currPerson.position; // 岗位 // 操作权限 switch (currPerson.position) { case "操作员": MainForm.Permition = MainForm.PERMITION.Operator; break; case "技术员": MainForm.Permition = MainForm.PERMITION.Technician; break; case "管理员": MainForm.Permition = MainForm.PERMITION.Manager; break; } // 头像 int id = currPerson.id; string fname = "Person\\" + id.ToString() + ".jpg"; if (File.Exists(fname)) { Stream s = File.Open(fname, FileMode.Open); pictureBoxPotrait.Image = Image.FromStream(s); s.Close(); } else { pictureBoxPotrait.Image = HY_PIP.Properties.Resources.portrait; } } } }
/** * 修改数据文件 * */ public void UpdatePerson(int index, hyPerson Person) { UpdateXmlNode(Person); // XML文件 personList[index] = Person; }
/** * 新增一个人员 * */ public void NewPerson(hyPerson Person) { personList.Add(Person); // 添加工艺 InsertXmlNode(Person); // 追加数据文件 }
/********************************************************* * * 新增人员信息 * * 保存特征 * * */ private void buttonNew_Click(object sender, EventArgs e) { // 一般性检查 if (textBoxName.Text == "") { MessageBox.Show(this, "人名不能为空!"); return; } if (textBoxJobNumber.Text == "") { MessageBox.Show(this, "工号不能为空!"); return; } if (textBoxPwd.Text == "") { MessageBox.Show(this, "密码不能为空!"); return; } // 检测某图像是否有指纹 if (detectedFinger != true) { MessageBox.Show(this, "请输入有效指纹!"); return; } // 操作确认 DialogResult dr = MessageBox.Show("确定新增人员信息吗?", "提示", MessageBoxButtons.OKCancel); if (dr == DialogResult.Cancel) { return; } // ---------------------------------------------------- // 从 textBox 中获取信息 hyPerson person = new hyPerson(); // 记录信息(xml) person.name = textBoxName.Text; // 姓名 person.job_number = textBoxJobNumber.Text; // 工号 person.position = comboBoxPosition.SelectedItem.ToString(); // 岗位 person.password = textBoxPwd.Text; // 密码 personGroup.NewPerson(person); // person.id 会自动分配 // ---------------------------------------------------- // 根据得到的ID号,保存相关文件,指纹图像文件,指纹特征文件,人物头像文件 // 创建目录 string person_path = "Person\\"; string fname_light = person.id.ToString(); if (!Directory.Exists(person_path)) {// 检查LOG目录是否存在 Directory.CreateDirectory(person_path); } // ---------------------------------------------------- // 保存人物头像 if (jpg_fname != "") { File.Copy(jpg_fname, person_path + fname_light + ".jpg"); } // ---------------------------------------------------- // 保存指纹图像 保存指纹特征 try { // 对输入的指纹图像数据提取特征值 D5Scanner.Process(gpImageCap, gpFeature, gnScale); FileStream stream = null; BinaryWriter writer = null; // 保存指纹图像 D5Scanner.SaveBMPFile(person_path + fname_light + ".bmp", gpImageCap); // 保存指纹特征 stream = new FileStream(person_path + fname_light + ".fea", FileMode.OpenOrCreate); if (stream == null) { return; } writer = new BinaryWriter(stream, Encoding.Default); if (writer == null) { return; } writer.Write(gpFeature, 0, 256); writer.Close(); stream.Close(); } catch (Exception e1) { } // 更新 dataGridView // 只需要更新数据源 DataSource 就可以了。也就是 dt. string[] strArr = new string[4]; // strArr[0] = person.id.ToString(); // strArr[1] = person.name; // strArr[2] = person.job_number; // strArr[3] = person.position; // dt.Rows.Add(strArr); // 跳转选择新增的那一行 // dataGridView 排序后会引起索引变化,那么如何找到该索引呢,使用下面的方法。 for (int i = 0; i < dataGridView1.Rows.Count; i++) { if (dataGridView1.Rows[i].Cells[0].Value.ToString() == strArr[0]) { dataGridView1.CurrentCell = dataGridView1.Rows[i].Cells[0]; // 设置当前行(焦点) break; } } }