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:\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、通过正则表达式验证用户输入信息。
C#中一道关于员工信息系统的题(主要考察LinQ和正则表达式验证)的更多相关文章
- C#中一道关于多线程的编程题
题目的意思是这样的:让两个线程A和B将自己的ID轮番写入一个文件中,每个线程重复十次写入后执行一个回调函数,说“I'm OK”,就这样.我是一名QA,不是开发,出于兴趣报考了公司的C#课程考试,多线程 ...
- 一道很经典的 BFS 题
一道很经典的 BFS 题 想认真的写篇题解. 题目来自:https://www.luogu.org/problemnew/show/P1126 题目描述 机器人移动学会(RMI)现在正尝试用机器人搬运 ...
- python--简易员工信息系统编写
补充内容:eval 将字符串变成变量名locals 看输入的是否是字典中的一个keyfunc.__name____怎么看变量名的数据类型斐波那契数列 li=[1,1] while li[-1]&l ...
- ACM_一道耗时间的水题
一道耗时间的水题 Time Limit: 2000/1000ms (Java/Others) Problem Description: Do you know how to read the phon ...
- 一道有趣的for循环题
一道有趣的for循环题 今天在复习js基础知识时发现了一个for循环的题,第一眼看到直接懵逼了,没想到for循环竟然还可以这样玩?涨姿势了. 题目是这样的 for(i=0, j=0; i<10, ...
- SQL-50 将employees表中的所有员工的last_name和first_name通过(')连接起来
题目描述 将employees表中的所有员工的last_name和first_name通过(')连接起来.CREATE TABLE `employees` (`emp_no` int(11) NOT ...
- 【图灵杯 F】一道简单的递推题(矩阵快速幂,乘法模板)
Description 存在如下递推式: F(n+1)=A1*F(n)+A2*F(n-1)+-+An*F(1) F(n+2)=A1*F(n+1)+A2*F(n)+-+An*F(2) - 求第K项的值对 ...
- 检查字符串长度 检查字符串是否为空 用正则表达式验证出版物的ISBN号 用正则表达式验证邮证编码 验证字符串中是否含有汉字
<?php /** * 常用的正则表达式来验证信息.如:网址 邮箱 手机号等 */ class check { /** * 正则表达式验证email格式 * * @param string $s ...
- Python抓取页面中超链接(URL)的三中方法比较(HTMLParser、pyquery、正则表达式) <转>
Python抓取页面中超链接(URL)的3中方法比较(HTMLParser.pyquery.正则表达式) HTMLParser版: #!/usr/bin/python # -*- coding: UT ...
随机推荐
- 使用loadrunner对https协议(单双向SSL)的web端性能测试 (转)
1.项目背景 1.1 单双向SSL的含义及部署 单向SSL即我们说到的https协议. 特点是,浏览器需要请求验证服务器证书: 基本含义是:一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务 ...
- 【WebKit内核 CEF3 】 第一篇:下载分支代码并本地编译
关于CEF Chromium Embedded Framework 简单说就是 WebKit内核的 对外绑定. 当前主流浏览器内核 一.Trident内核代表产品Internet Explorer ...
- 在MyEclipse中改动jsp页面的默认打开方式
在JavaWeb项目中.当然有非常多jsp页面,可是我发现,双击打开jsp页面总是卡机.相对于打开其它java文件而言非常慢,感觉非常不舒服.MyEclipse中默认打开jsp页面是以可视化的形式展现 ...
- 示例:Socket应用之简易聊天室
在实际应用中,Server总是在指定的端口上监听是否有Client请求,一旦监听到Client请求,Server就会启动一个线程来响应该请求,而Server本身在启动完线程之后马上又进入监听状态. 示 ...
- PHP-学习大规模高并发Web系统架构及开发推荐书籍
以下书籍内容涵盖大型网站开发中几个关键点:高可用.高性能.分布式.易扩展.如果想对大规模高并发Web系统架构及开发有很系统的学习,可以阅读以下书籍,欢迎补充! 一.<Linux企业集群—用商用硬 ...
- 老毛桃pe装机工具一键还原系统
系统崩溃后,很多菜鸟朋友会六神无主,不知接下来怎么办.如果是老手,已经屡见不鲜了,因为只需一键还原系统就可以恢复到原来的工作状态.下面不妨跟小编一起继续看看怎么一键还原系统. ①制作一个老毛桃win ...
- Python 字典 copy()方法
描述 Python 字典 copy() 方法返回一个字典的浅拷贝(父不变,子变). 语法 copy() 方法语法: D.copy() 参数 无. 返回值 返回一个字典的浅拷贝(父不变,子变). 实例 ...
- Python hex() 函数
描述 hex() 函数用于将10进制整数转换成16进制整数. 语法 hex 语法: hex(x) 参数说明: x -- 10进制整数 返回值 返回16进制整数. 实例 以下实例展示了 hex 的使用方 ...
- Spring boot处理OPTIONS请求
一.现象从fetch说起,用fetch构造一个POST请求. fetch('http://127.0.0.1:8000/api/login', { method: "POST", ...
- NRF24L01使用外部中断读取数据的问题
NRF24L01读取数据不能使用中断的方式,原因如下: 首先NRF24L01中断触发时,IRQ引脚会一直保持低电平直到状态寄存器中的中断标志被重新清零. stm32的外部中断触发方式只有上升沿或者下降 ...