简易在线留言板(上)
本文章属于原创,如若转载请标明出处:
http://blog.csdn.net/FlorenceZKY/article/details/74295704
本系统开发的是一个极简易的三层架构的在线留言板。系统的开发软件是Visual Studio2013,开发环境是Windows7,浏览器是Chrome(谷歌浏览器)。
一、数据库
1、数据库目录
该数据库建立在由学校提供的服务器上,链接代码在接下来的代码中说明。
2、数据库表设计
Users表(用户表,标注:user不能作为表名和属性名,因为user是关键字,这里容易出错。)
Mess表(留言表)
二、项目设计
1、项目目录
2、项目简要说明
(1)实体层Entity:User.cs、EntBlog.cs
(2)数据访问层Dal:SQLHelper.cs、DalUser.cs、DalBlog.cs
(3)业务逻辑层Bll:bllUsers.cs、bllBlog.cs
(4)客户端:WebApp:
①CSS文件:
pic照片文件
②母版页:Main.Master(当时是作业要求,但是我只是设置了一个空的母版页,所以这个文件存不存在都无所谓)
③主界面:index.aspx
④登录、注册、修改密码界面:Login.aspx、Register.aspx、UpdatePassword.aspx
⑤管理员界面:AdminPage.aspx、AdminUserPage.aspx
⑥普通用户界面:EditBlog.aspx、MyBlog.aspx
3、代码内容
(1)Entity层:
Users.cs(实体用户)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Entity
{
public class EntUsers
{
public string Username
{
get;
set;
}
public String Password
{
get;
set;
}
}
}
Mess.cs(实体留言)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Entity
{
public class EntBlog
{
public string Username
{
get;
set;
}
public string Message
{
get;
set;
}
public DateTime Time
{
get;
set;
}
}
}
Dal层:
SqlHelper.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace Dal
{
public static class SqlHelper
{
private static string strCn = ConfigurationManager.ConnectionStrings["AppConn"].ConnectionString;
public static SqlDataReader ExecuteReader(string strSql, params SqlParameter[] pms)
{
try
{
SqlConnection cn = new SqlConnection(strCn);
cn.Open();
SqlDataReader dtr = null;
using (SqlCommand cmd = new SqlCommand(strSql, cn))
{
if (pms != null) cmd.Parameters.AddRange(pms);
dtr = cmd.ExecuteReader(CommandBehavior.CloseConnection);//查找完成后关闭连接
}
return dtr;
}
catch (Exception ex)
{
throw ex;
}
}
public static object ExecuteScalar(string strSql, params SqlParameter[] pms)
{
try
{
object obj = null;
using (SqlConnection cn = new SqlConnection(strCn))
{
cn.Open();
using (SqlCommand cmd = new SqlCommand(strSql, cn))
{
if (pms != null) cmd.Parameters.AddRange(pms);
obj = cmd.ExecuteScalar();
}
}
return obj;
}
catch (Exception ex)
{
throw ex;
}
}
public static int ExecuteNonQuery(string strSql, params SqlParameter[] pms)
{
try
{
int intResult = 0;
using (SqlConnection cn = new SqlConnection(strCn))
{
cn.Open();
using (SqlCommand cmd = new SqlCommand(strSql, cn))
{
if (pms != null) cmd.Parameters.AddRange(pms);
intResult = cmd.ExecuteNonQuery();
}
}
return intResult;
}
catch (Exception ex)
{
throw ex;
}
}
public static DataSet ExecuteQuery(string strSql)
{
using (SqlConnection cn = new SqlConnection(strCn))
{
DataSet ds = new DataSet();
try
{
cn.Open();
using (SqlCommand cmd = new SqlCommand(strSql, cn))
{
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds, "ds");
}
}
catch (Exception ex)
{
throw ex;
}
return ds;
}
}
}
}
DalUser.cs(用户数据访问层)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entity;
using System.Data;
using System.Data.SqlClient;
namespace Dal
{
public class DalUsers
{
public bool Create(EntUsers Users, out string strMsg)//创建用户
{
bool blnRet = false;
try {
StringBuilder sb = new StringBuilder(1024);
sb.Append("INSERT INTO Users");
sb.Append("(Username,Password)");
sb.Append("Values (@Username,@Password)");
SqlParameter[] pms = new SqlParameter[2];
pms[0] = new SqlParameter("@Username", Users.Username);
pms[1] = new SqlParameter("@Password", Users.Password);
blnRet = SqlHelper.ExecuteNonQuery(sb.ToString(), pms) > 0;
strMsg = blnRet ? "成功创建:“" + Users.Username + " ”用户!" : "用户添加失败!请检查书写! ";
}
catch (Exception ex)
{
strMsg = "数据操作错误:" + ex.Message;
}
return blnRet;
}
public bool Exists(string Username, out string strMsg)//检查是否存在用户
{
bool blnRet = false;
try
{
StringBuilder sb = new StringBuilder(1024);
sb.Append("SELECT COUNT(*) AS cnt ");
sb.Append("FROM Users ");
sb.Append("WHERE (Username= @Username) ");
SqlParameter[] pms = new SqlParameter[1];
pms[0] = new SqlParameter("@Username", Username);
blnRet = (int)SqlHelper.ExecuteScalar(sb.ToString(), pms) > 0;
strMsg = "";
}
catch (Exception ex)
{
strMsg = "操作错误:" + ex.Message;
}
return blnRet;
}
public bool Login(EntUsers Users, out string strMsg)//用户登录
{
bool blnRet = false;
try
{
StringBuilder sb = new StringBuilder(1024);
sb.Append("SELECT * ");
sb.Append("FROM Users ");
sb.Append("WHERE (Username = @Username) AND (Password = @Password) ");
SqlParameter[] pms = new SqlParameter[2];
pms[0] = new SqlParameter("@Username", Users.Username);
pms[1] = new SqlParameter("@Password", Users.Password);
object obj = SqlHelper.ExecuteScalar(sb.ToString(), pms);
if (obj != null)
blnRet = true;
strMsg = "";
}
catch (Exception ex)
{
strMsg = "数据操作错误:" + ex.Message;
}
return blnRet;
}
public bool Update(EntUsers Users, out string strMsg)//更新用户信息(修改密码)
{
bool blnRet = false;
try {
StringBuilder sb = new StringBuilder(1024);
sb.Append("UPDATE Users ");
sb.Append("SET Password = @Password ");
sb.Append("WHERE (Username = @Username) ");
SqlParameter[] pms = new SqlParameter[2];
pms[0] = new SqlParameter("@Password", Users.Password);
pms[1] = new SqlParameter("@Username", Users.Username);
blnRet = SqlHelper.ExecuteNonQuery(sb.ToString(), pms) > 0;
strMsg = blnRet ? "密码修改成功成功!" : "密码修改失败,请检查是否有错!";
}
catch (Exception ex)
{
strMsg = "数据操作错误:" + ex.Message;
}
return blnRet;
}
}
}
DalBlog.cs(留言数据访问层)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entity;
using System.Data;
using System.Data.SqlClient;
namespace Dal
{
public class DalBlog
{
public bool Create(EntBlog Blog, out string strMsg)//创建留言
{
bool blnRet = false;
try
{
StringBuilder sb = new StringBuilder(1024);
sb.Append("INSERT INTO Mess");
sb.Append("(Username,Mess,Time)");
sb.Append("Values (@Username,@Mess,@Time)");
SqlParameter[] pms = new SqlParameter[3];
pms[0] = new SqlParameter("@Username", Blog.Username);
pms[1] = new SqlParameter("@Mess", Blog.Message);
pms[2] = new SqlParameter("@Time", Blog.Time);
blnRet = SqlHelper.ExecuteNonQuery(sb.ToString(), pms) > 0;
strMsg = blnRet ? "成功发布您的留言!" : "发布失败,请过一会再发布! ";
}
catch (Exception ex)
{
strMsg = "数据操作错误:" + ex.Message;
}
return blnRet;
}
}
}
Bll层:
bllUser.cs(用户逻辑业务层)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entity;
using Dal;
using System.Data;
using System.Data.SqlClient;
namespace Bll
{
public class bllUsers
{
private DalUsers dal = new DalUsers();
public bool Create(EntUsers users,out string strMsg)//创建用户
{
bool blnRet = false;
//检查Username有没重名
if (dal.Exists(users.Username, out strMsg))
strMsg = (strMsg.Length > 0) ? strMsg : "创建失败!已有用户名称: " + users.Username;
else
blnRet = dal.Create(users, out strMsg);
return blnRet;
}
public bool Login(EntUsers users,out string strMsg)//用户登录
{
bool blnRet = dal.Login(users, out strMsg);
strMsg = (blnRet) ? "OK" : ((strMsg.Length > 0) ? strMsg : "登录出错!请检查用户名和密码输入是否正确!");
return blnRet;
}
public bool Update(EntUsers users,out string strMsg)//更新密码
{
return dal.Update(users,out strMsg);
}
}
}
bllBlog.cs(留言业务逻辑层)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entity;
using Dal;
using System.Data;
using System.Data.SqlClient;
namespace Bll
{
public class bllBlog
{
private DalBlog dal=new DalBlog();
public bool Create(EntBlog entBlog, out string strMsg)
{
bool blnRet=false;
blnRet = dal.Create(entBlog, out strMsg);
return blnRet;
}
}
}
此处内容太多,为了容易查看,请看我博客的 简易在线留言板(中)。。。