使用 ASP.NET 爲自己做一個相親網站


一、效果預覽

相親網站


二、源碼下載

源碼已經上傳到我的GitHub

點擊到達頁面


三、需要用到的知識

在這裏插入圖片描述


四、系統功能結構

在這裏插入圖片描述


五、數據庫的設計

use db_JiaoYou
go
create table tb_User(
	ID int primary key,
	UserName varchar(100),
	PassWord varchar(30),
	NickName varchar(30),
	Sex varchar(4),
	BirthDay varchar(20),
	Address varchar(150),
	Stature varchar(10),
	Avoirdupois varchar(10),
	Education varchar(10),
	Earning varchar(10),
	Nation varchar(10),
	BloodType varchar(6),
	Looks varchar(20),
	Metier varchar(20),
	Housing varchar(20),
	BuyCar varchar(20),
	Marriage varchar(20),
	HaveBaby varchar(6),
	HavingBaby varchar(20),
	Smoke varchar(6),
	Dirnk varchar(6),
	UseLanguage varchar(50),
	SexLike varchar(500),
	FriendCome varchar(150),
	FriendAgeStar int,
	FriendAgeEnd int,
	FriendStatureStar int,
	FriendMarriage varchar(10),
	PhotoPath varchar(500)
)
create table tb_Msg(
	ID int primary key,
	Sender varchar(30),
	Accepter varchar(30),
	Msg text,
	MsgDate datetime,
	CheckRead bit,
)
create table tb_Friend(
	ID int primary key,
	UserName varchar(30),
	FriendName varchar(30),
)

六、部分代碼展示

1、DataBase.cs類 操作數據庫

/// <summary>
/// DataBase 數據層類
/// </summary>
public class DataBase:IDisposable
{
	public DataBase()
	{
		//
		// TODO: 在此處添加構造函數邏輯
		//
	}

    private SqlConnection con;  //創建連接對象
    #region   打開數據庫連接
    /// <summary>
    /// 打開數據庫連接.
    /// </summary>
    private void Open()
    {
        // 打開數據庫連接
        if (con == null)
        {
            con = new SqlConnection("Data Source=(local);DataBase=db_JiaoYou;Trusted_Connection=SSPI;");
        }
        if (con.State == System.Data.ConnectionState.Closed)
            con.Open();
    }
    #endregion

    #region  關閉連接
    /// <summary>
    /// 關閉數據庫連接
    /// </summary>
    public void Close()
    {
        if (con != null)
            con.Close();
    }
    #endregion

    #region 釋放數據庫連接資源
    /// <summary>
    /// 釋放資源
    /// </summary>
    public void Dispose()
    {
        // 確認連接是否已經關閉
        if (con != null)
        {
            con.Dispose();
            con = null;
        }
    }
    #endregion

    #region   傳入參數並且轉換爲SqlParameter類型
    /// <summary>
    /// 轉換參數
    /// </summary>
    /// <param name="ParamName">存儲過程名稱或命令文本</param>
    /// <param name="DbType">參數類型</param>
    /// <param name="Size">參數大小</param>
    /// <param name="Value">參數值</param>
    /// <returns>新的Parameter對象</returns>
    public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)
    {
        return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
    }

    /// <summary>
    /// 初始化參數值
    /// </summary>
    /// <param name="ParamName">存儲過程名稱或命令文本</param>
    /// <param name="DbType">參數類型</param>
    /// <param name="Size">參數大小</param>
    /// <param name="Direction">參數方向</param>
    /// <param name="Value">參數值</param>
    /// <returns>新的 parameter 對象</returns>
    public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
    {
        SqlParameter param;

        if (Size > 0)
            param = new SqlParameter(ParamName, DbType, Size);
        else
            param = new SqlParameter(ParamName, DbType);

        param.Direction = Direction;
        if (!(Direction == ParameterDirection.Output && Value == null))
            param.Value = Value;
        return param;
    }
    #endregion

    #region   執行參數命令文本(無數據庫中數據返回)
    /// <summary>
    /// 執行命令
    /// </summary>
    /// <param name="procName">命令文本</param>
    /// <param name="prams">參數對象</param>
    /// <returns></returns>
    public int RunProc(string procName, SqlParameter[] prams)
    {
        SqlCommand cmd = CreateCommand(procName, prams);
        cmd.ExecuteNonQuery();
        this.Close();
        //得到執行成功返回值
        return (int)cmd.Parameters["ReturnValue"].Value;
    }
    /// <summary>
    /// 直接執行SQL語句
    /// </summary>
    /// <param name="procName">命令文本</param>
    /// <returns></returns>
    public int RunProc(string procName)
    {
        this.Open();
        SqlCommand cmd = new SqlCommand(procName, con);
        cmd.ExecuteNonQuery();
        this.Close();
        return 1;
    }

    #endregion

    #region   執行參數命令文本(有返回值)
    /// <summary>
    /// 執行查詢命令文本,並且返回DataSet數據集
    /// </summary>
    /// <param name="procName">命令文本</param>
    /// <param name="prams">參數對象</param>
    /// <param name="tbName">數據表名稱</param>
    /// <returns></returns>
    public DataSet RunProcReturn(string procName, SqlParameter[] prams, string tbName)
    {
        SqlDataAdapter dap = CreateDataAdaper(procName, prams);
        DataSet ds = new DataSet();
        dap.Fill(ds, tbName);
        this.Close();
        //得到執行成功返回值
        return ds;
    }

    /// <summary>
    /// 執行命令文本,並且返回DataSet數據集
    /// </summary>
    /// <param name="procName">命令文本</param>
    /// <param name="tbName">數據表名稱</param>
    /// <returns>DataSet</returns>
    public DataSet RunProcReturn(string procName, string tbName)
    {
        SqlDataAdapter dap = CreateDataAdaper(procName, null);
        DataSet ds = new DataSet();
        dap.Fill(ds, tbName);
        this.Close();
        //得到執行成功返回值
        return ds;
    }

    #endregion

    #region 將命令文本添加到SqlDataAdapter
    /// <summary>
    /// 創建一個SqlDataAdapter對象以此來執行命令文本
    /// </summary>
    /// <param name="procName">命令文本</param>
    /// <param name="prams">參數對象</param>
    /// <returns></returns>
    private SqlDataAdapter CreateDataAdaper(string procName, SqlParameter[] prams)
    {
        this.Open();
        SqlDataAdapter dap = new SqlDataAdapter(procName, con);
        dap.SelectCommand.CommandType = CommandType.Text;  //執行類型:命令文本
        if (prams != null)
        {
            foreach (SqlParameter parameter in prams)
                dap.SelectCommand.Parameters.Add(parameter);
        }
        //加入返回參數
        dap.SelectCommand.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4,
            ParameterDirection.ReturnValue, false, 0, 0,
            string.Empty, DataRowVersion.Default, null));

        return dap;
    }
    #endregion

    #region   將命令文本添加到SqlCommand
    /// <summary>
    /// 創建一個SqlCommand對象以此來執行命令文本
    /// </summary>
    /// <param name="procName">命令文本</param>
    /// <param name="prams"命令文本所需參數</param>
    /// <returns>返回SqlCommand對象</returns>
    private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
    {
        // 確認打開連接
        this.Open();
        SqlCommand cmd = new SqlCommand(procName, con);
        cmd.CommandType = CommandType.Text;     //執行類型:命令文本

        // 依次把參數傳入命令文本
        if (prams != null)
        {
            foreach (SqlParameter parameter in prams)
                cmd.Parameters.Add(parameter);
        }
        // 加入返回參數
        cmd.Parameters.Add(
            new SqlParameter("ReturnValue", SqlDbType.Int, 4,
            ParameterDirection.ReturnValue, false, 0, 0,
            string.Empty, DataRowVersion.Default, null));

        return cmd;
    }
    #endregion

}

2、f.cs類json解析

/// <summary>
/// f 的摘要說明
/// </summary>
public static class f
{
    public static string ToJson(this DataTable dt)
    {
        JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();

        javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大數值
        ArrayList arrayList = new ArrayList();
        foreach (DataRow dataRow in dt.Rows)
        {
            Dictionary<string, object> dictionary = new Dictionary<string, object>();  //實例化一個參數集合
            foreach (DataColumn dataColumn in dt.Columns)
            {
                dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToString());
            }
            arrayList.Add(dictionary); //ArrayList集合中添加鍵值
        }

        return "{root:" + javaScriptSerializer.Serialize(arrayList) + "}";  //返回一個json字符串
    }
}

3、MarriageMsg.cs類發送信息

//引入
using System.Data.SqlClient;

/// <summary>
/// MarriageMsg 的摘要說明
/// </summary>
public class MarriageMsg
{
    DataBase data = new DataBase();
    public MarriageMsg()
    {
        //
        // TODO: 在此處添加構造函數邏輯
        //
    }
    #region 發送信息實體類
    private string sender = "";
    private string accepter = "";
    private string msg = "";
    private bool checkRead = false;

    /// <summary>
    /// 發送方
    /// </summary>
    public string Sender
    {
        get { return sender; }
        set { sender = value; }
    }
    /// <summary>
    /// 接收方
    /// </summary>
    public string Accepter
    {
        get { return accepter; }
        set { accepter = value; }
    }
    /// <summary>
    /// 發送信息
    /// </summary>
    public string Msg
    {
        get { return msg; }
        set { msg = value; }
    }
    /// <summary>
    /// 閱讀狀態
    /// </summary>
    public bool CheckRead
    {
        get { return checkRead; }
        set { checkRead = value; }
    }
    #endregion

    /// <summary>
    /// 添加短消息到數據庫
    /// </summary>
    /// <param name="msg"></param>
    /// <returns></returns>
    public int MsgAdd(MarriageMsg msg)
    {
        SqlParameter[] parms ={ 
            data.MakeInParam("@Sender",SqlDbType.VarChar,100,msg.Sender),
            data.MakeInParam("@Accepter",SqlDbType.VarChar,100,msg.Accepter),
            data.MakeInParam("@Msg",SqlDbType.Text,0,msg.Msg),
        };
        return data.RunProc("Insert into tb_Msg(Sender, Accepter,Msg) values (@Sender, @Accepter,@Msg)", parms);
    }

    /// <summary>
    /// 獲取接收者短信息
    /// </summary>
    /// <param name="msg"></param>
    /// <returns></returns>
    public DataSet MsgSelectAccepterMsg(MarriageMsg msg)
    {
        SqlParameter[] parms ={ 
            data.MakeInParam("@Accepter",SqlDbType.VarChar,100,msg.Accepter),
        };
        return data.RunProcReturn("SELECT * FROM v_msg where Accepter=@Accepter order by id desc", parms, "v_msg");
    }
    /// <summary>
    /// 獲取接收者短信息
    /// </summary>
    /// <param name="msg">信息實例對象</param>
    /// <param name="CheckRead">True已閱讀  False未閱讀</param>
    /// <returns></returns>
    public DataSet MsgSelectAccepterMsg(MarriageMsg msg, bool CheckRead)
    {
        SqlParameter[] parms ={ 
            data.MakeInParam("@Accepter",SqlDbType.VarChar,100,msg.Accepter),
            data.MakeInParam("@CheckRead",SqlDbType.Bit,1,CheckRead),
        };
        return data.RunProcReturn("SELECT * FROM v_msg where Accepter=@Accepter and CheckRead=@CheckRead  order by id desc", parms, "v_msg");
    }
    /// <summary>
    /// 根據ID查詢短信息
    /// </summary>
    /// <param name="ID"></param>
    /// <returns></returns>
    public DataSet MsgSelectID(string ID)
    {
        return data.RunProcReturn("Select * from tb_Msg where id =" + ID, "tb_msgid");
    }
    /// <summary>
    /// 獲取刪除短信息
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    public int MsgDelete(string id)
    {
        return data.RunProc("delete from tb_Msg where id=" + id);
    }

    /// <summary>
    /// 修改閱讀狀態
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    public int MsgUpdate(string id)
    {
        return data.RunProc("Update tb_Msg set CheckRead=1 where id=" + id);
    }

}


篇幅有限,僅展示這些代碼
所有使用的素材來自 明日科技, 感謝明日科技書籍《ASP.NET實戰入門》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章