西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)C#.NET → vs2010實(shí)際項(xiàng)目ASP.NET小試練

vs2010實(shí)際項(xiàng)目ASP.NET小試練

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:本站整理時(shí)間:2010/9/12 22:10:22字體大。A-A+

作者:佚名點(diǎn)擊:2209次評(píng)論:0次標(biāo)簽: vs2010 .NET

  • 類型:休閑益智大。113M語言:中文 評(píng)分:10.0
  • 標(biāo)簽:
立即下載

今天講解的是之前幫別人做的一個(gè)小程序,負(fù)責(zé)實(shí)現(xiàn)其中最重要的模塊,提取數(shù)據(jù),并畫圖。很多初學(xué)的朋友都希望以一個(gè)實(shí)際的項(xiàng)目來學(xué)習(xí),我也是初學(xué)者,所以其中可能有許多不正規(guī)的地方,請(qǐng)高手指正。下面就以一個(gè)具體的項(xiàng)目來實(shí)現(xiàn)。

項(xiàng)目名稱:基于WEB的統(tǒng)計(jì)過程控制系統(tǒng)

項(xiàng)目目的:使用ASP.NET統(tǒng)計(jì)數(shù)據(jù)并用圖標(biāo)的形式表現(xiàn)出來

項(xiàng)目實(shí)現(xiàn):vs2010+MSSQL2008+MSChart

項(xiàng)目數(shù)據(jù):Excel數(shù)據(jù),需要能夠?qū)隕xcel數(shù)據(jù),并將Excel中的數(shù)據(jù)做處理并將處理結(jié)果以圖標(biāo)形式表現(xiàn)出來。Excel附下載地址。

其中mssql2008不需要獨(dú)立安裝,在裝vs2010的時(shí)候默認(rèn)就裝了一個(gè)Express版本的SQLServer,我們只需要裝上ManagementStudio即可,可以去官方下載。

技術(shù)準(zhǔn)備:

因?yàn)樵趯?shí)際項(xiàng)目中,公司為了方便代碼管理和代碼重用,經(jīng)常使用三層架構(gòu)開發(fā)程序。這里我們也采用三層架構(gòu),這里會(huì)用到SqlHelper這個(gè)類來方便我們的數(shù)據(jù)操作。這里稍微介紹下ASP.NET的三層架構(gòu),數(shù)據(jù)持久層---業(yè)務(wù)邏輯層----UI表現(xiàn)層,這是一般的三層架構(gòu),在這里大家要注意三層架構(gòu)不是MVC模式,這兩者還是有一點(diǎn)區(qū)別的,大家要注意下。

ASP.NET中的數(shù)據(jù)持久層和業(yè)務(wù)邏輯層一般為,而表現(xiàn)層一般就是website了,通常還有一個(gè)對(duì)象層。一般命名為BLL,DAL,Web。關(guān)于詳細(xì)的解釋大家可以去網(wǎng)上找資料,這里不是本系列的重點(diǎn)。附件有一個(gè)三層架構(gòu)的Demo,有興趣的話可以下載研究研究,呵呵。

         在創(chuàng)建三層架構(gòu)的時(shí)候,很多人都不知道怎么用解決方案將website和類庫項(xiàng)目關(guān)聯(lián)起來,下面來分享下我的方法,

1. 首先創(chuàng)建一個(gè)空白的解決方案項(xiàng)目,在名稱中輸入Bolt,路徑為E:\WorkSpace\projects,則會(huì)在當(dāng)前路徑下生成一個(gè)Blot文件夾,里面有一個(gè)Bolt.sln文件

2. 然后添加website,或者是類庫項(xiàng)目,這里我們先創(chuàng)建website,右擊解決方案或者選擇File》New,新建一個(gè)website,在weblocation中輸入E:\WorkSpace\projects\Bolt\WebSite

WebSite即網(wǎng)站的名字,添加完成后,會(huì)發(fā)現(xiàn)Blot又多了個(gè)文件夾,即網(wǎng)站所在路徑

3. 然后在添加新項(xiàng)目,選擇類庫項(xiàng)目,Name命名為BLL,路徑為:E:\WorkSpace\projects\Bolt,

點(diǎn)擊確定后,Blot文件下又多了文件夾,即類庫所在路徑,類似的可以添加其他項(xiàng)目。

4. 這樣我們就可以直接雙擊Bolt.sln打開多個(gè)項(xiàng)目或者是網(wǎng)站了

按照上述方法添加DAL,Model。把項(xiàng)目的整體架構(gòu)先搭建起來,就像蓋房子,先把地基打好。

其實(shí)在打地基之前,我們更應(yīng)該先了解客戶需要什么樣的房子。

簡單的需求分析:

1.    用戶模塊(登錄、用戶管理),比較容易實(shí)現(xiàn),如果需要ajax登錄可以參考我前面的博文(Ajax登錄頁面

2.    導(dǎo)入數(shù)據(jù)模塊(數(shù)據(jù)導(dǎo)入從Excel導(dǎo)入數(shù)據(jù)到boltdata表)

3.    數(shù)據(jù)模塊(可以對(duì)boltdata表增、刪、改、查, 給一個(gè)全部刪除的按鈕)

4.    圖標(biāo)模塊(統(tǒng)計(jì),用日期柱狀圖和曲線圖來統(tǒng)計(jì)每天的數(shù)量)

 

  

 

我們一步步來實(shí)現(xiàn)這幾個(gè)需求。

一、登錄模塊

      這是幾乎所有信息類型的網(wǎng)站必備的模塊,之前也寫過用ajax登錄。這邊沒有這個(gè)需求,就用簡單的方法實(shí)現(xiàn)。

首先建立數(shù)據(jù)表,表結(jié)構(gòu)如下:

CREATE TABLE [dbo].[Login](

    [id] [int] IDENTITY(1,1) NOT NULL,

    [username] [varchar](20) NULL,

    [userpassword] [varchar](20) NULL

)

id為標(biāo)志,username為用戶名,userpassword為用戶密碼。

然后打造Model層:

新建IDBHelper.cs接口,代碼如下:
using System;
using System.Data.Common;
using System.Data;

namespace SqlServerDAL
{
    interface IDBHelper
    {
        /// <summary>
        /// 執(zhí)行 Transact-SQL 語句并返回受影響的行數(shù)。
        /// </summary>
        int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);

        /// <summary>
        /// 在事務(wù)中執(zhí)行 Transact-SQL 語句并返回受影響的行數(shù)。
        /// </summary>
        int ExecuteNonQuery(DbTransaction trans, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);

        /// <summary>
        /// 在事務(wù)中執(zhí)行查詢,返回DataSet
        /// </summary>
        DataSet ExecuteQuery(DbTransaction trans, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);

        /// <summary>
        /// 執(zhí)行查詢,返回DataSet
        /// </summary>
        DataSet ExecuteQuery(string connectionString, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);

        /// <summary>
        /// 在事務(wù)中執(zhí)行查詢,返回DataReader
        /// </summary>
        DbDataReader ExecuteReader(DbTransaction trans, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);

        /// <summary>
        /// 執(zhí)行查詢,返回DataReader
        /// </summary>
        DbDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);

        /// <summary>
        /// 在事務(wù)中執(zhí)行查詢,并返回查詢所返回的結(jié)果集中第一行的第一列。忽略其他列或行。
        /// </summary>
        object ExecuteScalar(DbTransaction trans, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);

        /// <summary>
        /// 執(zhí)行查詢,并返回查詢所返回的結(jié)果集中第一行的第一列。忽略其他列或行。
        /// </summary>
        object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params DbParameter[] cmdParms);

        /// <summary>
        /// 分頁獲取數(shù)據(jù)
        /// </summary>
        /// <param name="connectionString">連接字符串</param>
        /// <param name="tblName">表名</param>
        /// <param name="fldName">字段名</param>
        /// <param name="pageSize">頁大小</param>
        /// <param name="pageIndex">第幾頁</param>
        /// <param name="fldSort">排序字段</param>
        /// <param name="fldDir">升序{False}/降序(True)</param>
        /// <param name="condition">條件(不需要where)</param>
        DbDataReader GetPageList(string connectionString, string tblName, int pageSize, int pageIndex, string fldSort, bool fldDir, string condition);

        /// <summary>
        /// 得到數(shù)據(jù)條數(shù)
        /// </summary>
        /// <param name="tblName">表名</param>
        /// <param name="condition">條件(不需要where)</param>
        /// <returns>數(shù)據(jù)條數(shù)</returns>
        int GetCount(string connectionString, string tblName, string condition);
    }
}

然后實(shí)現(xiàn)這個(gè)接口:類DBHelper,代碼見附件

 

 

其中類的構(gòu)造函數(shù)中指定使用的數(shù)據(jù)庫服務(wù)器名及用戶名和密碼。

 

當(dāng)然,也要提供 SqlHelper.cs類,附下載地址


 

接下來就是實(shí)現(xiàn)BLL,業(yè)務(wù)邏輯層的Login,代碼如下:
 

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Web;

namespace BLL
{
    /// <summary>
    /// 業(yè)務(wù)邏輯類 Login
    /// </summary>
    public class Login
    {
        private readonly SqlServerDAL.Login dal = new SqlServerDAL.Login();
        public Login()
        { }

        /// <summary>
        /// 增加一條數(shù)據(jù)
        /// </summary>
        public void Add(Model.Login model)
        {
            dal.Add(model);
        }

        /// <summary>
        /// 更新一條數(shù)據(jù)
        /// </summary>
        public void Update(Model.Login model)
        {
            dal.Update(model);
        }

        /// <summary>
        /// 刪除一條數(shù)據(jù)
        /// </summary>
        public void Delete(int id)
        {
            dal.Delete(id);
        }

        /// <summary>
        /// 是否存在該記錄
        /// </summary>
        public bool Exists(string username)
        {
            return dal.Exists(username);
        }

        /// <summary>
        /// 得到一個(gè)對(duì)象實(shí)體
        /// </summary>
        public Model.Login GetModel(string username)
        {
            return dal.GetModel(username);
        }

        /// <summary>
        /// 獲得泛型數(shù)據(jù)列表
        /// </summary>
        public List<Model.Login> GetList(out long count)
        {
            return dal.GetList(out count);
        }


    }
}下面就該實(shí)現(xiàn)website里面的登錄模塊了。

這里使用Cookie來存儲(chǔ)用戶信息,

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// UserCookies 的摘要說明
/// </summary>
public class UserCookies
{
    public const string cksUserName = "COOKIES_1_1";

    public UserCookies()
    {
        //
        // TODO: 在此處添加構(gòu)造函數(shù)邏輯
        //
    }
    public void SetCookies(string name, string Value)
    {
        System.Web.HttpContext.Current.Response.Cookies.Add(new System.Web.HttpCookie(name, Value));
    }

    public void SetCookies(Model.Login user)
    {
        SetCookies(cksUserName, user.username);
    }

    public string GetCookies(string name)
    {
        if (System.Web.HttpContext.Current.Request.Cookies[name] == null)
            return "";
        if (System.Web.HttpContext.Current.Request.Cookies[name].Value == null || System.Web.HttpContext.Current.Request.Cookies[name].Value == "")
            return "";
        return System.Web.HttpContext.Current.Request.Cookies[name].Value;
    }

    public void ClearUserCookies()
    {
        SetCookies(cksUserName, "");
    }
}
 

附件下載:http://down.cr173.com/soft1/leiku.zip

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)