要求
使用EF+ASP.NET MVC技术实现人力资源信息管理系统用户管理模块
实现用户信息的显示,添加,删除,修改以及页面跳转和相关非空验证。
数据库设计
ID | 人员编号 | int | 主键,自增,增量为 1 | |
PersonName | 姓名 | nvarchar | 50 | 不能为空 |
Gender | 性别 | nvarchar | 10 | 不能为空 |
Birthday | 出生年月 | DateTime | 不能为空 | |
NativePlace | 籍贯 | nvarchar | 20 | 不能为空 |
Age | 年龄 | int | 不能为空 | |
Educational | 学历 | nvarchar | 50 | 不能为空 |
DROP TABLE [dbo].[PersonInfo]
GO
CREATE TABLE [dbo].[PersonInfo] (
[id] int NOT NULL IDENTITY(1,1) ,
[PersonName] nvarchar(50) NOT NULL ,
[Gender] nvarchar(10) NOT NULL ,
[Birthday] datetime NOT NULL ,
[NativePlace] nvarchar(20) NOT NULL ,
[Age] int NOT NULL ,
[Educational] nvarchar(50) NOT NULL
)
GO
DBCC CHECKIDENT(N'[dbo].[PersonInfo]', RESEED, 11)
GO
SET IDENTITY_INSERT [dbo].[PersonInfo] ON
GO
INSERT INTO [dbo].[PersonInfo] ([id], [PersonName], [Gender], [Birthday], [NativePlace], [Age], [Educational]) VALUES (N'1', N'张森森', N'女', N'2021-06-18 10:33:32.000', N'云南', N'23', N'本科');
GO
INSERT INTO [dbo].[PersonInfo] ([id], [PersonName], [Gender], [Birthday], [NativePlace], [Age], [Educational]) VALUES (N'2', N'赵依依', N'女', N'2021-06-01 10:34:03.000', N'贵州', N'25', N'专科');
GO
INSERT INTO [dbo].[PersonInfo] ([id], [PersonName], [Gender], [Birthday], [NativePlace], [Age], [Educational]) VALUES (N'3', N'吴丹', N'男', N'2021-06-02 10:34:29.000', N'四川', N'21', N'本科');
GO
INSERT INTO [dbo].[PersonInfo] ([id], [PersonName], [Gender], [Birthday], [NativePlace], [Age], [Educational]) VALUES (N'4', N'李洪明', N'男', N'2021-02-11 10:34:51.000', N'北京', N'41', N'博士');
GO
SET IDENTITY_INSERT [dbo].[PersonInfo] OFF
GO
ALTER TABLE [dbo].[PersonInfo] ADD PRIMARY KEY ([id])
GO
C#实现
首先创建web项目,创建model文件夹,添加实体数据模型。
创建DAL文件夹,添加数据访问层。
实现增删改查操作:
/// <summary>
/// 查询全部
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static List<PersonInfo> SelectAll(string name)
{
using (PersonDBEntities db = new PersonDBEntities())
{
return db.PersonInfo.Where(o => o.PersonName.Contains(name)).ToList();
}
}
/// <summary>
/// 添加
/// </summary>
/// <param name="p"></param>
/// <returns></returns>
public static bool Insert(PersonInfo p)
{
using (PersonDBEntities db = new PersonDBEntities())
{
db.PersonInfo.Add(p);
int rows = db.SaveChanges();
return rows > 0;
}
}
/// <summary>
/// 删除
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static bool Delete(int id)
{
using (PersonDBEntities db = new PersonDBEntities())
{
try
{
PersonInfo p = db.PersonInfo.Where(o => o.id == id).SingleOrDefault();
db.PersonInfo.Remove(p);
int rows = db.SaveChanges();
return rows > 0;
}
catch (Exception)
{
return false;
}
}
}
/// <summary>
/// 根据id查询
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static PersonInfo SelectByid(int id)
{
using (PersonDBEntities db = new PersonDBEntities())
{
try
{
return db.PersonInfo.Where(o => o.id == id).SingleOrDefault();
}
catch (Exception)
{
return null;
}
}
}
/// <summary>
/// 修改
/// </summary>
/// <param name="p"></param>
/// <returns></returns>
public static bool UpdPersonInfo(PersonInfo p)
{
using (PersonDBEntities db = new PersonDBEntities())
{
try
{
PersonInfo temp = db.PersonInfo.Where(o => o.id == p.id).SingleOrDefault();
temp.PersonName = p.PersonName;
temp.Gender = p.Gender;
temp.Birthday = p.Birthday;
temp.NativePlace = p.NativePlace;
temp.Age = p.Age;
temp.Educational = p.Educational;
int rows = db.SaveChanges();
return rows > 0;
}
catch (Exception)
{
return false;
}
}
}
创建BLL文件夹,添加业务逻辑层。
调用DAL层:
/// <summary>
/// 查询全部
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static List<PersonInfo> SelectAll(string name)
{
return PersonDAL.SelectAll(name);
}
/// <summary>
/// 添加
/// </summary>
/// <param name="p"></param>
/// <returns></returns>
public static bool Insert(PersonInfo p)
{
return PersonDAL.Insert(p);
}
/// <summary>
/// 删除
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static bool Delete(int id)
{
return PersonDAL.Delete(id);
}
/// <summary>
/// 根据id查询
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static PersonInfo SelectByid(int id)
{
return PersonDAL.SelectByid(id);
}
/// <summary>
/// 修改
/// </summary>
/// <param name="p"></param>
/// <returns></returns>
public static bool UpdPersonInfo(PersonInfo p)
{
return PersonDAL.UpdPersonInfo(p);
}
添加web窗体,实现显示所有用户信息:
<body>
<form id="form1" runat="server">
<div>
<h1 style="text-align:center;">用户管理</h1>
<p style="text-align:center;">
<a href="Add.aspx" class="btn btn-info">添加新用户</a>
</p>
<table class="table table-hover">
<tr>
<th>姓名</th>
<th>性别</th>
<th>出生年月</th>
<th>籍贯</th>
<th>年龄</th>
<th>学历</th>
<th>操作</th>
</tr>
<asp:Repeater runat="server" ID="repeater1" OnItemCommand="repeater1_ItemCommand">
<ItemTemplate>
<tr>
<td><%# Eval("PersonName") %></td>
<td><%# Eval("Gender") %></td>
<td><%# Eval("Birthday","{0:yyyy年MM月dd日 hh:mm:ss}") %></td>
<td><%# Eval("NativePlace") %></td>
<td><%# Eval("Age") %></td>
<td><%# Eval("Educational") %></td>
<td>
<asp:LinkButton runat="server" Text="删除" ForeColor="Red" ID="del" CommandArgument='<%# Eval("id") %>' CommandName="del" OnClientClick="return confirm('你确定删除?')"></asp:LinkButton>
<asp:LinkButton runat="server" Text="修改" ForeColor="Red" ID="upd" CommandArgument='<%# Eval("id") %>' CommandName="upd"></asp:LinkButton>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</div>
</form>
</body>
其中使用Repeater 控件遍历显示数据,并且使用LinkButton控件实现删除和修改页面的跳转,使用OnClientClick="return confirm(‘你确定删除?’)"方法实现点击删除时弹出确认框,询问用户是否确定删除。
后台初始加载方法,显示数据
if (!IsPostBack)
{
//显示信息
repeater1.DataSource = PersonBLL.SelectAll("");
repeater1.DataBind();
}
Repeater的OnItemCommand方法,判断是否是删除和修改,进行相应操作。
//判断id是否为空
if (e.CommandArgument == null)
{
Response.Write("<script>alert('id为空!');</script>");
return;
}
//判断用户信息是否为空
if (PersonBLL.SelectByid(Convert.ToInt32(e.CommandArgument)) == null)
{
Response.Write("<script>alert('信息为空!');</script>");
return;
}
//判断是否是删除
if (e.CommandName.Equals("del"))
{
//删除
if (PersonBLL.Delete(Convert.ToInt32(e.CommandArgument)))
{
Response.Write("<script>alert('成功');window.location.href='index.aspx';</script>");
}
else
{
Response.Write("<script>alert('失败');</script>");
}
}
else if (e.CommandName.Equals("upd"))
{
Response.Redirect("Update.aspx?id="+ e.CommandArgument);
}
添加add用户添加页面:
<body>
<form id="form1" runat="server">
<div style="width:500px;margin:0 auto;">
<h1>用户新增</h1>
<hr />
<p>
姓名:<asp:TextBox runat="server" ID="name"></asp:TextBox>
<asp:RequiredFieldValidator ControlToValidate="name" ForeColor="Red" Text="*用户名为必填项" ID="RequiredFieldValidator1" runat="server" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
</p>
<p>
性别:
<asp:RadioButton runat="server" ID="nan" Text="男" GroupName="xing" />
<asp:RadioButton runat="server" ID="nv" Text="女" GroupName="xing" Checked="true" />
</p>
<p>
出生日期:<asp:TextBox runat="server" ID="bir"></asp:TextBox>
<asp:RequiredFieldValidator ControlToValidate="bir" ForeColor="Red" Text="*出生日期为必填项" ID="RequiredFieldValidator2" runat="server" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
</p>
<p>
籍贯:<asp:TextBox runat="server" ID="nat"></asp:TextBox>
<asp:RequiredFieldValidator ControlToValidate="nat" ForeColor="Red" Text="*籍贯为必填项" ID="RequiredFieldValidator3" runat="server" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
</p>
<p>
年龄:<asp:TextBox runat="server" ID="age"></asp:TextBox>
<asp:RequiredFieldValidator ControlToValidate="age" ForeColor="Red" Text="*年龄为必填项" ID="RequiredFieldValidator4" runat="server" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
</p>
<p>
学历:
<asp:DropDownList runat="server" ID="drop1">
<asp:ListItem>专科</asp:ListItem>
<asp:ListItem>本科</asp:ListItem>
<asp:ListItem>研究生</asp:ListItem>
<asp:ListItem>博士</asp:ListItem>
</asp:DropDownList>
</p>
<p>
<asp:Button runat="server" ID="add" Text="添加用户" OnClick="add_Click" class="btn btn-primary" />
</p>
<p>
<a href="index.aspx" class="btn btn-primary">返回主页</a>
</p>
</div>
</form>
</body>
其中使用RequiredFieldValidator验证控件验证非空,DropDownList实现下拉框。
以及后台添加代码:
//实例用户类
PersonInfo p = new PersonInfo();
p.PersonName = name.Text;
string gen = "女";
if (nan.Checked)
{
gen = "男";
}
p.Gender = gen;
p.NativePlace = nat.Text;
p.Age = Convert.ToInt32(age.Text);
p.Birthday = Convert.ToDateTime(bir.Text);
p.Educational = drop1.Text;
//添加
if (PersonBLL.Insert(p))
{
Response.Write("<script>alert('成功');window.location.href='index.aspx';</script>");
}
else
{
Response.Write("<script>alert('失败');</script>");
}
添加update用户信息修改页面:
//页面代码与添加页面基本类似
不同的是页面初始化需要根据id加载数据
首先定义一个全局id
static int id = -1;
if (!IsPostBack)
{
if (Request.QueryString["id"] != null)
{
id = Convert.ToInt32(Request.QueryString["id"]);
PersonInfo p = PersonBLL.SelectByid(id);
name.Text = p.PersonName;
if (p.Gender.Equals("男"))
{
nan.Checked = true;
}
else
{
nv.Checked = true;
}
date.Text = p.Birthday.ToString();
nat.Text = p.NativePlace;
age.Text = p.Age.ToString();
DropDownList1.Text = p.Educational;
}
}
以及修改功能
PersonInfo p = new PersonInfo();
p.id = id;
p.PersonName = name.Text;
string gen = "女";
if (nan.Checked)
{
gen = "男";
}
p.Gender = gen;
p.Birthday = Convert.ToDateTime(date.Text);
p.NativePlace = nat.Text;
p.Age = Convert.ToInt32(age.Text);
p.Educational = DropDownList1.Text;
if (PersonBLL.UpdPersonInfo(p))
{
Response.Write("<script>alert('成功!');window.location.href='index.aspx';</script>");
}
else
{
Response.Write("<script>alert('失败!');</script>");
}
部分页面: