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、通过正则表达式验证用户输入信息。

相关文章
|
24天前
|
网络协议 JavaScript 前端开发
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名2
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名
311 0
|
1月前
|
开发框架 .NET C#
C#学习相关系列之Linq用法---where和select用法(二)
C#学习相关系列之Linq用法---where和select用法(二)
|
11天前
|
开发框架 前端开发 JavaScript
采用C#.Net +JavaScript 开发的云LIS系统源码 二级医院应用案例有演示
技术架构:Asp.NET CORE 3.1 MVC + SQLserver + Redis等 开发语言:C# 6.0、JavaScript 前端框架:JQuery、EasyUI、Bootstrap 后端框架:MVC、SQLSugar等 数 据 库:SQLserver 2012
|
28天前
|
安全 JavaScript 前端开发
C#医院手麻系统源码,手术麻醉管理系统源码
手术麻醉管理系统贯穿患者入院至出院全程,整合术前术后流程,如手术排班、麻醉计划、术中监护及术后恢复。采用C#.net6.0、Vue、Ant-Design等技术,与sqlserver2019数据库结合。系统提供麻醉记录、手术安全核查、费用管理等功能,确保信息数字化和流程规范化。通过自动化记录和数据分析,增强手术安全,优化资源分配,并支持医疗质控与研究。
C#医院手麻系统源码,手术麻醉管理系统源码
|
29天前
|
存储 监控 安全
C#手术麻醉系统源码 大型医院手麻系统4大需求是什么?
C#编写的大型医院手术麻醉系统旨在满足四大核心需求:智慧医院建设,要求实时患者信息共享与监控;医院等级评级,强调安全评估与术后管理;电子病历评级,规定手术预约、麻醉信息的标准化;科室需求,包括系统互联、流程信息化、数据追溯、操作简便、文书完整、快速响应、生命体征动态采集及质量控制。系统提升手麻工作的效率与安全性,确保手术顺利进行。
|
1月前
|
开发框架 .NET C#
C#学习相关系列之Linq用法---group和join相关用法(三)
C#学习相关系列之Linq用法---group和join相关用法(三)
|
1月前
|
开发框架 .NET C#
C#学习相关系列之Linq常用方法---排序(一)
C#学习相关系列之Linq常用方法---排序(一)
|
1月前
|
数据挖掘 C# 开发工具
采用C#语言开发的全套医院体检系统PEIS源码功能介绍
体检系统,是专为体检中心/医院体检科等体检机构,专门开发的全流程管理系统,通过软件实现检测仪器数据自动提取,内置多级医生工作台,细化工作将体检检查结果汇总,生成体检报告登记到计算机系统中。通过软件系统进行数据分析统计与评判以及建立体检相关的体检档案。从而实现体检流程的信息化,提高工作效率,减少手动结果录入的一些常犯错误。 在实际应用中,医院体检系统能够解决传统体检中手工操作带来的问题,如工作量大、效率低下、易漏检、重检或错检等。通过与医院信息系统(如HIS、LIS、PACS等)的连接,系统能够满足体检中心的日常工作流程,提供更好的管理、统计和查询分析功能。同时,基于网络基础的系统可以在网上传输
27 1
|
1月前
|
开发框架 安全 .NET
C# .NET面试系列三:集合、异常、泛型、LINQ、委托、EF!
<h2>集合、异常、泛型、LINQ、委托、EF! #### 1. IList 接口与 List 的区别是什么? IList 接口和 List 类是C#中集合的两个相关但不同的概念。下面是它们的主要区别: <b>IList 接口</b> IList 接口是C#中定义的一个泛型接口,位于 System.Collections 命名空间。它派生自 ICollection 接口,定义了一个可以通过索引访问的有序集合。 ```c# IList 接口包含一系列索引化的属性和方法,允许按索引访问、插入、移除元素等。 由于是接口,它只定义了成员的契约,而不提供具体的实现。类似于 IEnumera
158 2
|
2月前
|
开发框架 前端开发 NoSQL
C#医院区域云LIS系统源码
LIS操作流程标本流转----标本核收----标本上机检验----费用汇总----报告审核----报告发布----报告打印等基础流程
38 3