zoukankan      html  css  js  c++  java
  • C#中一道关于员工信息系统的题(主要考察LinQ和正则表达式验证)

    今天上午进行了公司的C# C level考核,最后一道编程题是关于员工信息系统的,题目的要求大概是这样的:1、要可以保存员工信息(XXXXX),并且要用正则表达式对输入信息进行验证;2、要可以对员工信息进行查询(根据员工号和部门两种方式)。

    我是通过窗体程序实现的,窗体设计如下,一共三个,分别是主窗体界面、添加员工信息窗体和查找员工信息窗体:

    程序如下:

    主窗体——

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Xml;
    using System.Xml.Linq;
    using System.IO;
    
    namespace WorkmatesInfoSystem
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                AddInfo addInfoForm = new AddInfo();
                addInfoForm.ShowDialog();
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                SearchInfo searchInfoForm = new SearchInfo();
                searchInfoForm.ShowDialog();
            }
        }
    }

    添加员工信息窗体:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Text.RegularExpressions;
    using System.Xml;
    using System.Xml.Linq;
    using System.IO;
    
    namespace WorkmatesInfoSystem
    {
        public partial class AddInfo : Form
        {
            public AddInfo()
            {
                InitializeComponent();
            }
    
            private void textBox1_Click(object sender, EventArgs e)
            {
                if(WorkerNumber.Text == "The worker's nubmer must be a number(not a string or etc).") 
                {
                    WorkerNumber.Text = "";
                }
            }
    
            private void textBox2_Click(object sender, EventArgs e)
            {
                if (WorkerName.Text == "Herry(For example)") 
                {
                    WorkerName.Text = "";
                }
            }
    
            private void textBox3_Click(object sender, EventArgs e)
            {
               
                if (WorkerEmail.Text == "The format should like "tylan@Avpoint.com"") 
                {
                    WorkerEmail.Text = "";
                }
            }
    
            private void textBox4_Click(object sender, EventArgs e)
            {
                if (WorkerDepartment.Text == "CC_CIQA(For example)") 
                {
                    WorkerDepartment.Text = "";
                }         
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                //Check the format of the worker's number.
                if (Regex.IsMatch(WorkerNumber.Text, "^[0-9]*$") == false)
                {
                    MessageBox.Show("Worker's number is in a wrong format, please type in again.");
                }
                //Check the Email's format of the worker.
                else if (Regex.IsMatch(WorkerEmail.Text,@"^w+@w+$") == false)
                {
                    MessageBox.Show("Worker's Email is in a wrong format, please type in again.");
                }
                //Check the end format of the Email Address.
                else if (Regex.IsMatch(EmailEndFormat.Text, "^(com|net)$") == false)
                {
                    MessageBox.Show("The end format of the Email is wrong, please type in again. You can type in 'com' or 'net'.");
                }
                //Add the worker's info into the xml.
                else
                {
                    saveToXml(SavePath.Text.ToString());
                    MessageBox.Show("Save the worker's info successfully.");
                }
            }
    
            //Save to XML method.
            private void saveToXml(string xmlPath)
            {
                string filePath = xmlPath + "WorkersInfo.xml";
                FileInfo file = new FileInfo(@filePath);
                if (file.Exists == false)
                {
                    File.Create(@filePath).Close();
                    StreamWriter sw = new StreamWriter(@filePath);
                    string content = "<?xml version="1.0" encoding="utf-8"?>" +
                                        "<System xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">" +
                                          "<SystemName>WorkersInfo</SystemName>" +
                                          "<Workers>" +
                                          "</Workers>" +
                                        "</System>";
                    sw.WriteLine(content);
                    sw.Close();
                }
                //Load XML file.
                XElement xe = XElement.Load(@filePath);
                //Create a node info.
                XElement Worker = new XElement("Worker",   
                    new XElement("WorkerNumber", WorkerNumber.Text),
                    new XElement("WorkerName", WorkerName.Text),
                    new XElement("WorkerEmail", WorkerEmail.Text + "." + EmailEndFormat.Text),
                    new XElement("WorkerDepartment", WorkerDepartment.Text)
                );
                //Add the node under the specific node.
                xe.Element("Workers").Add(Worker);
                //Save the XML file.
                xe.Save(filePath);
            }
    
            private void SavePath_Click(object sender, EventArgs e)
            {
                if(SavePath.Text==@"C:TylanWorkers(For example)")
                {
                    SavePath.Text = "";
                }
            }
        }
    }

    查找员工信息窗体:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Xml;
    using System.Xml.Linq;
    using System.IO;
    
    namespace WorkmatesInfoSystem
    {
        public partial class SearchInfo : Form
        {
            public SearchInfo()
            {
                InitializeComponent();
            }
    
            private void SearchDepartmentButton_Click(object sender, EventArgs e)
            {
                XDocument workersInfo = XDocument.Load(@SearchPath.Text.ToString());
                var results = from worker in workersInfo.Element("System").Element("Workers").Elements() where worker.Element("WorkerDepartment").Value == SearchWorkerDepartment.Text.ToString() select worker;
                foreach (var result in results)
                {
                    MessageBox.Show(result.Element("WorkerNumber").Value + "
    " + result.Element("WorkerName").Value + "
    " + result.Element("WorkerEmail").Value + "
    " + result.Element("WorkerDepartment").Value);
                }
            }
    
            private void SearchNumberButton_Click(object sender, EventArgs e)
            {
                XDocument workersInfo = XDocument.Load(@SearchPath.Text.ToString());
                var results = from worker in workersInfo.Element("System").Element("Workers").Elements() where int.Parse(worker.Element("WorkerNumber").Value) == int.Parse(SearchWokerNumber.Text.ToString()) select worker;
                foreach (var result in results)
                {
                    MessageBox.Show(result.Element("WorkerNumber").Value + "
    " + result.Element("WorkerName").Value + "
    " + result.Element("WorkerEmail").Value + "
    " + result.Element("WorkerDepartment").Value);
                }
            }
        }
    }

    由于考试时间仓促,只是在功能上满足了这道题的要求,匆匆收尾,还请大家只关注以下三点在实际应用中的实践:

    1、使用LinQ查询员工信息;

    2、添加员工信息到XML的过程;

    3、通过正则表达式验证用户输入信息。

  • 相关阅读:
    STL读书笔记
    时间复杂度
    GDB十分钟教程
    lua函数随记
    svn提交时强制添加注释
    按位与、或、异或等运算方法
    mongodb常用语句
    STL容器的基本特性和特征
    C++:模板
    Vector 特性
  • 原文地址:https://www.cnblogs.com/LanTianYou/p/4442136.html
Copyright © 2011-2022 走看看