C#中一道关于员工信息系统的题(主要考察LinQ和正则表达式验证)

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

今天上午进行了公司的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:\Tylan\Workers(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 + "\n" + result.Element("WorkerName").Value + "\n" + result.Element("WorkerEmail").Value + "\n" + 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 + "\n" + result.Element("WorkerName").Value + "\n" + result.Element("WorkerEmail").Value + "\n" + result.Element("WorkerDepartment").Value);
            }
        }
    }
}

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

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

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

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

相关文章
|
2月前
|
JavaScript 前端开发 Java
如何使用这个正则表达式来验证一个字符串是否符合特定的格式要求?
如何使用这个正则表达式来验证一个字符串是否符合特定的格式要求?
|
3天前
|
C#
C#正则表达式快速入门
C#正则表达式快速入门
|
3天前
|
存储 监控 算法
企业内网监控系统中基于哈希表的 C# 算法解析
在企业内网监控系统中,哈希表作为一种高效的数据结构,能够快速处理大量网络连接和用户操作记录,确保网络安全与效率。通过C#代码示例展示了如何使用哈希表存储和管理用户的登录时间、访问IP及操作行为等信息,实现快速的查找、插入和删除操作。哈希表的应用显著提升了系统的实时性和准确性,尽管存在哈希冲突等问题,但通过合理设计哈希函数和冲突解决策略,可以确保系统稳定运行,为企业提供有力的安全保障。
|
2月前
|
存储 开发框架 .NET
C#语言如何搭建分布式文件存储系统
C#语言如何搭建分布式文件存储系统
89 2
|
3月前
|
开发框架 自然语言处理 .NET
C#一分钟浅谈:LINQ 查询表达式的使用技巧
【9月更文挑战第6天】LINQ(Language Integrated Query)是C#开发中的强大工具,使查询数据集合变得简单且接近自然语言。本文从基础入手,通过具体示例讲解LINQ查询表达式的使用技巧,包括过滤、排序和分组等操作。同时,文章还探讨了常见问题及解决方法,如性能优化、过早枚举和类型转换等,帮助开发者写出更高效、易维护的代码。
107 15
|
2月前
|
存储 分布式计算 监控
C# 创建一个分布式文件存储系统需要怎么设计??
C# 创建一个分布式文件存储系统需要怎么设计??
45 0
|
3月前
|
JavaScript 前端开发 Java
使用这个正则表达式来验证一个字符串是否符合特定的格式要求
使用这个正则表达式来验证一个字符串是否符合特定的格式要求
154 5
|
3月前
|
前端开发 C#
C# 一分钟浅谈:字符串操作与正则表达式
本文详细介绍C#中的字符串操作与正则表达式应用,涵盖字符串拼接、分割、查找及替换等基础操作,并通过实例讲解正则表达式的模式匹配、文本替换与分组捕获技巧。同时,文章还探讨了性能优化、复杂度管理和安全性等问题及解决策略,助你提升编程效率,应对实际开发挑战。
85 0
|
5月前
|
存储 Oracle 关系型数据库
PACS源码,C#语言数字医学影像系统成品源码
**数字医学影像系统(RIS/PACS)**采用C#开发,基于C/S架构,配Oracle数据库,具备自主版权,适用于项目实施。系统包含分诊、超声、放射、内镜、病理等工作站,支持基本信息维护、报表查询和系统维护。功能亮点有:WorkList管理、影像采集传输、存储检索、图像处理、多序列浏览、流程控制、报告录入与审核、支持多种影像设备及高级影像处理。RIS与PACS数据库同步,并集成HIS、电子病历等系统接口。全面遵循DICOM3.0标准。
103 1
PACS源码,C#语言数字医学影像系统成品源码
|
5月前
|
BI 数据处理
一体化的医学实验室信息系统源码,C#LIS系统源码
面向医学实验室的一体化平台提供标本流程管理、报告发布及科室管理支持。它与HIS无缝对接,简化患者信息录入,实现检验结果实时同步。系统自动处理数据、分类样本、计算参考范围,并对异常结果预警。条码管理简化样本追踪,质控管理提升检测准确性。平台还支持数据审核发布、历史结果查询对比、灵活报表打印及统计分析等功能,辅助科室管理和试剂库存控制,加强科室间沟通协作。
一体化的医学实验室信息系统源码,C#LIS系统源码