Web程序設(shè)計(jì)(第4版)-第8章課件(PPT 54頁(yè))_第1頁(yè)
Web程序設(shè)計(jì)(第4版)-第8章課件(PPT 54頁(yè))_第2頁(yè)
Web程序設(shè)計(jì)(第4版)-第8章課件(PPT 54頁(yè))_第3頁(yè)
Web程序設(shè)計(jì)(第4版)-第8章課件(PPT 54頁(yè))_第4頁(yè)
Web程序設(shè)計(jì)(第4版)-第8章課件(PPT 54頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Web程序設(shè)計(jì)(第4版)“十二五”普通高等教育本科國(guó)家級(jí)規(guī)劃教材第1頁(yè),共54頁(yè)。目 錄第 1 章 Web編程基礎(chǔ)知識(shí) 第 2 章 Web應(yīng)用程序開(kāi)發(fā)與運(yùn)行環(huán)境 第 3 章 HTML與XML 第 4 章 層疊樣式表CSS 第 5 章 Web客戶端程序設(shè)計(jì)第 6 章 Web服務(wù)器端程序設(shè)計(jì) 第 7 章 Web數(shù)據(jù)庫(kù)程序設(shè)計(jì) 第 8 章 ASP.NET綜合應(yīng)用實(shí)例 第2頁(yè),共54頁(yè)。第 8 章 ASP.NET綜合應(yīng)用實(shí)例8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 8.2 公文管理系統(tǒng) 第3頁(yè),共54頁(yè)。8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 本系統(tǒng)運(yùn)用了ADO.NET數(shù)據(jù)訪問(wèn)對(duì)象,實(shí)現(xiàn)了基于Web的論壇帖子的

2、增加、刪除、修改、查詢等簡(jiǎn)單的管理功能,其中包括管理員登錄、發(fā)布、查詢和維護(hù)帖子等功能。 采用Access數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)管理第4頁(yè),共54頁(yè)。 管理員以admin/admin用戶身份/密碼登錄后,進(jìn)入論壇主帖查詢頁(yè)面,分頁(yè)顯示所有主帖的標(biāo)題; 在查詢頁(yè)面中可以對(duì)某個(gè)帖子進(jìn)行修改、刪除操作,也可以查看帖子的詳細(xì)信息; 另外,還可以發(fā)布新帖子。 8.1.1 功能設(shè)計(jì)8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 第5頁(yè),共54頁(yè)。 采用Access管理論壇數(shù)據(jù); 所使用的數(shù)據(jù)庫(kù)名為MyBBS_Data.mdb,共有兩張表 :用戶表User,存儲(chǔ)用戶的信息,其中包括管理員用戶;主帖表Topic,主帖表存儲(chǔ)用戶發(fā)

3、布的主帖信息。8.1.2 數(shù)據(jù)庫(kù)設(shè)計(jì)8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 第6頁(yè),共54頁(yè)。8.1.2 數(shù)據(jù)庫(kù)設(shè)計(jì)8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 字 段 名數(shù)據(jù)類型可否為空說(shuō) 明UserID數(shù)值否用戶唯一標(biāo)識(shí),主鍵,自動(dòng)增量UserLoginName文本否登錄名UserName文本否用戶名Password文本否密碼Address文本是住址Homepage文本是個(gè)人主頁(yè)Email文本是郵箱地址 User數(shù)據(jù)表結(jié)構(gòu) 第7頁(yè),共54頁(yè)。8.1.2 數(shù)據(jù)庫(kù)設(shè)計(jì)8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 Topic數(shù)據(jù)表結(jié)構(gòu) 字 段 名數(shù)據(jù)類型可否為空說(shuō) 明TopicID數(shù)值否主帖唯一標(biāo)識(shí),主鍵,自動(dòng)增量Us

4、erLoginName文本否發(fā)帖者登錄名TopicTitle文本否主帖標(biāo)題TopicContent備注否帖子內(nèi)容CreateTime日期時(shí)間是發(fā)帖時(shí)間IP文本是發(fā)布機(jī)器IP第8頁(yè),共54頁(yè)。(1)登錄頁(yè)面設(shè)計(jì):為整齊美觀,在窗體中放入一個(gè)3行1列的HTML表格,在表格中合適的位置輸入“登錄名”和“密碼”文字,放置一個(gè)輸入用戶名的文本框、一個(gè)密碼輸入框、一個(gè)登錄按鈕。界面如圖所示。 8.1.3 界面設(shè)計(jì)8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 第9頁(yè),共54頁(yè)。(2)主帖查詢頁(yè)面設(shè)計(jì):利用GridView控件分頁(yè)顯示主帖列表,并在GridView控件中添加修改、刪除按鈕和顯示詳細(xì)信息的超鏈接,另外在頁(yè)

5、面下方添加一個(gè)發(fā)表新帖的超鏈接。界面如圖所示。 8.1.3 界面設(shè)計(jì)8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 第10頁(yè),共54頁(yè)。(3)帖子詳細(xì)信息頁(yè)面設(shè)計(jì):利用Label控件分別顯示帖子標(biāo)題、發(fā)帖人、發(fā)帖時(shí)間、帖子內(nèi)容等信息。界面如圖所示。8.1.3 界面設(shè)計(jì)8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 第11頁(yè),共54頁(yè)。(4)發(fā)布帖子頁(yè)面設(shè)計(jì):利用文本框控件分別輸入帖子標(biāo)題、帖子內(nèi)容等信息。界面如圖所示。 8.1.3 界面設(shè)計(jì)8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 第12頁(yè),共54頁(yè)。(5)修改帖子頁(yè)面設(shè)計(jì):與發(fā)布帖子界面類似。界面如圖所示。8.1.3 界面設(shè)計(jì)8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 第13頁(yè),

6、共54頁(yè)。(1)GridView定制:在GridView控件中,表格字段列均采用數(shù)據(jù)綁定列BoundField模板來(lái)定制,刪除、修改采用數(shù)據(jù)綁定列ButtonField模板,詳細(xì)信息使用數(shù)據(jù)綁定列HyperLinkField模板定制。(2)分頁(yè):將GridView的AllowPaging屬性設(shè)置為True為其啟用分頁(yè)功能,由于GridView的數(shù)據(jù)源在設(shè)計(jì)期間未綁定任何數(shù)據(jù)源控件,因此分頁(yè)功能的代碼需要手工編寫。在GridView控件的PageIndexChanging事件處理程序中,通過(guò)設(shè)置其PageIndex屬性值為新的頁(yè)索引號(hào)來(lái)實(shí)現(xiàn),新頁(yè)索引號(hào)通過(guò)事件參數(shù)GridViewPageEven

7、tArgs 的NewPageIndex屬性值獲得。(3)數(shù)據(jù)庫(kù)訪問(wèn)編程:刪除、修改采用按鈕數(shù)據(jù)綁定列定制,當(dāng)用戶單擊刪除、修改按鈕時(shí)將觸發(fā)RowCommand事件,因此在該事件處理代碼中實(shí)現(xiàn)刪除、修改操作。編程時(shí)利用OleDbCommand對(duì)象執(zhí)行Insert和Update命令來(lái)實(shí)現(xiàn)相關(guān)功能。查詢顯示主帖列表是利用OleDbDataAdapter、dataset來(lái)實(shí)現(xiàn)的。 8.1.4 關(guān)鍵技術(shù)8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 第14頁(yè),共54頁(yè)。(1)在Visual Studio 網(wǎng)站App_Data文件夾中創(chuàng)建Access數(shù)據(jù)庫(kù)MyBBS_Data.mdb,建立用戶表User和主帖表Top

8、ic。配置數(shù)據(jù)庫(kù)連接字符串,保存在web.config配置文件中。(2)在Visual Studio 網(wǎng)站中新建manage文件夾,在其中新建登錄網(wǎng)頁(yè)Login.aspx、主帖查詢頁(yè)面TopicList.aspx、帖子詳細(xì)信息頁(yè)面TopicDetail.aspx、發(fā)布帖子頁(yè)面TopicAdd.aspx、修改帖子頁(yè)面TopicUpdate.aspx。(3)分別編寫網(wǎng)頁(yè)的功能代碼。 8.1.5 實(shí)現(xiàn)過(guò)程 8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 第15頁(yè),共54頁(yè)。(1)登錄頁(yè)Login.aspx.cs部分代碼如下:8.1.6 主要程序代碼 8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 protected voi

9、d ButtonLogin_Click(object sender, EventArgs e) /獲取用戶在頁(yè)面上的輸入 string userLoginName = TextBoxLoginName.Text.Trim();/用戶登錄名 string userPassword = TextBoxPassword.Text.Trim();/密碼 OleDbDataReader dr; / 新建DataReader對(duì)象 / 新建數(shù)據(jù)庫(kù)連接conn,連接到Access數(shù)據(jù)庫(kù) System.Data.OleDb.OleDBConnection conn = new OleDbConnection()

10、; conn.ConnectionString = ConfigurationManager.ConnectionStringsMyBBSConnectionString.ConnectionString; OleDbCommand cmd = new OleDbCommand(); / 新建Command對(duì)象 cmd.Connection = conn; cmd.CommandText = SELECT * FROM User WHERE UserLoginName =UserLoginName ; cmd.CommandType = CommandType.Text; / 添加查詢參數(shù)對(duì)象

11、,并給參數(shù)賦值 cmd.Parameters.AddWithValue(UserLoginName, userLoginName); 第16頁(yè),共54頁(yè)。(1)登錄頁(yè)Login.aspx.cs部分代碼如下:8.1.6 主要程序代碼 8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 try / 打開(kāi)conn連接,檢索User表的Password字段 conn.Open(); / 打開(kāi)數(shù)據(jù)庫(kù)連接 dr = cmd.ExecuteReader();/ 將檢索的記錄行填充到DataReader對(duì)象中 if (dr.Read() /如果用戶存在 / 如果密碼正確,轉(zhuǎn)入留言列表頁(yè)面 if (dr.GetString(3

12、) = userPassword) / 使用Session來(lái)保存用戶登錄名信息 Session.Add(login_name, userLoginName); Response.Redirect(TopicList.aspx); else/如果密碼錯(cuò)誤,給出提示 Response.Write(alert(密碼錯(cuò)誤,請(qǐng)重新輸入密碼!); 第17頁(yè),共54頁(yè)。(1)登錄頁(yè)Login.aspx.cs部分代碼如下:8.1.6 主要程序代碼 8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 else /如果用戶不存在 Response.Write(alert(對(duì)不起,用戶不存在! ); dr.Close(); /關(guān)閉

13、DataReader對(duì)象 catch (OleDbException oledbException) Response.Write(oledbException.Message); / 顯示連接異常信息 finally / 如果連接打開(kāi)則關(guān)閉連接 if (conn.State = ConnectionState.Open) conn.Close(); 第18頁(yè),共54頁(yè)。(2)主帖查詢頁(yè)面TopicList.aspx.cs部分代碼如下:8.1.6 主要程序代碼 8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 protected void Page_Load(object sender, EventArgs

14、 e) if (!CheckUser()/ 如果用戶未登錄,強(qiáng)制轉(zhuǎn)到登錄頁(yè) Response.Redirect(Login.aspx); if (!this.IsPostBack)/ 如果首次加載,調(diào)用InitData() InitData();private bool CheckUser() / 驗(yàn)證用戶是否登錄 / 如果沒(méi)有登錄,提示用戶登錄 if (Sessionlogin_name = null) Response.Write(alert(請(qǐng)登錄!);); return false; return true;第19頁(yè),共54頁(yè)。(2)主帖查詢頁(yè)面TopicList.aspx.cs部分代

15、碼如下:8.1.6 主要程序代碼 8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 private void InitData() / 按時(shí)間降序,讀取帖子數(shù)據(jù) / 新建數(shù)據(jù)庫(kù)連接conn,連接到Access數(shù)據(jù)庫(kù) System.Data.OleDb.OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = ConfigurationManager.ConnectionStringsMyBBSConnectionString.ConnectionString; DataSet ds = new DataSet(); / 新建D

16、ataSet對(duì)象 / 新建DataAdapter對(duì)象,打開(kāi)conn連接,檢索Topic表的所有字段 OleDbDataAdapter da = new OleDbDataAdapter(SELECT * FROM Topic ORDER BY CreateTime DESC, conn); conn.Open(); / 打開(kāi)數(shù)據(jù)庫(kù)連接 da.Fill(ds); / 將檢索的記錄行填充到DataSet對(duì)象ds中 conn.Close(); / 關(guān)閉數(shù)據(jù)庫(kù)連接 GV.DataSource = ds; GV.DataBind(); LabelPages.Text = 查詢結(jié)果(第 + (GV.Pag

17、eIndex + 1).ToString() + 頁(yè) 共 +GV.PageCount.ToString() + 頁(yè));第20頁(yè),共54頁(yè)。(2)主帖查詢頁(yè)面TopicList.aspx.cs部分代碼如下:8.1.6 主要程序代碼 8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 private void deleteData(int topic_Id) / 刪除帖子 / 新建數(shù)據(jù)庫(kù)連接conn,連接到Access數(shù)據(jù)庫(kù) System.Data. OleDb. OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = Confi

18、gurationManager.ConnectionStringsMyBBSConnectionString.ConnectionString; OleDbCommand cmd = new OleDbCommand(); / 新建Command對(duì)象 cmd.Connection = conn; cmd.CommandText = DELETE FROM Topic WHERE TopicID=TopicID; cmd.CommandType = CommandType.Text; / 添加查詢參數(shù)對(duì)象,并給參數(shù)賦值 cmd.Parameters.AddWithValue(TopicID ,

19、topic_Id); try conn.Open(); / 打開(kāi)數(shù)據(jù)庫(kù)連接 cmd.ExecuteNonQuery(); /將添加記錄 Response.Redirect(TopicList.aspx); catch (OleDbException oledbException) Response.Write(oledbException.Message); / 顯示連接異常信息 finally / 如果連接打開(kāi)則關(guān)閉連接 if (conn.State = ConnectionState.Open) conn.Close(); 第21頁(yè),共54頁(yè)。(2)主帖查詢頁(yè)面TopicList.aspx

20、.cs部分代碼如下:8.1.6 主要程序代碼 8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 protected void GV_RowCommand(object sender, GridViewCommandEventArgs e) int index = Convert.ToInt32(e.CommandArgument); /待處理的行下標(biāo) int topicId = -1; / 根據(jù)用戶單擊的按鈕,執(zhí)行不同程序 switch (e.CommandName) /修改 case Update: topicId = Convert.ToInt32(GV.Rowsindex.Cells0.Text);

21、Response.Redirect(TopicUpdate.aspx?topic_id= + topicId); break; /刪除 case Delete: topicId = Convert.ToInt32(GV.Rowsindex.Cells0.Text); deleteData(topicId); InitData(); break; default: break; protected void GV_PageIndexChanging(object sender, GridViewPageEventArgs e) / 分頁(yè) GV.PageIndex = e.NewPageIndex

22、; InitData(); / 刷新列表,顯示新頁(yè)第22頁(yè),共54頁(yè)。(3)帖子詳細(xì)信息頁(yè)面TopicDetail.aspx.cs部分代碼如下: 8.1.6 主要程序代碼 8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 protected void Page_Load(object sender, EventArgs e) / 如果首次加載,調(diào)用InitData() if (!this.IsPostBack) InitData();protected void ButtonReply_Click(object sender, EventArgs e)protected void ButtonBack_Cl

23、ick(object sender, EventArgs e)Response.Redirect(TopicList.aspx);private void InitData()/ 獲取鏈接傳遞的參數(shù)值 int topicID = Convert.ToInt32(Request.QueryStringtopic_id); / 新建數(shù)據(jù)庫(kù)連接conn,連接到Access數(shù)據(jù)庫(kù) System.Data. OleDb. OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = ConfigurationManager.C

24、onnectionStringsMyBBSConnectionString.ConnectionString; OleDbDataReader dr; / 新建DataReader對(duì)象 第23頁(yè),共54頁(yè)。(3)帖子詳細(xì)信息頁(yè)面TopicDetail.aspx.cs部分代碼如下: 8.1.6 主要程序代碼 8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 OleDbCommand cmd = new OleDbCommand(); cmd.Connection = conn; cmd.CommandText = SELECT * FROM Topic WHERE TopicID=TopicID; cmd.C

25、ommandType = CommandType.Text; / 添加查詢參數(shù)對(duì)象,并給參數(shù)賦值 cmd.Parameters.AddWithValue(TopicID , topicID); try conn.Open(); / 打開(kāi)數(shù)據(jù)庫(kù)連接 dr = cmd.ExecuteReader(); / 將檢索的記錄行填充到DataReader對(duì)象中 if (dr.Read()/ 如果有記錄,顯示該記錄 LabelTitle.Text = System.Web.HttpUtility.HtmlEncode(dr.GetString(2); LabelContent.Text = System.W

26、eb.HttpUtility.HtmlEncode(dr.GetString(3); LabelCreateTime.Text = dr.GetDateTime(4).ToString(); LabelIP.Text = dr.GetString(5); LabelUserLoginName.Text = dr.GetString(1); dr.Close(); 第24頁(yè),共54頁(yè)。(3)帖子詳細(xì)信息頁(yè)面TopicDetail.aspx.cs部分代碼如下: 8.1.6 主要程序代碼 8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 catch (OleDbException oledbException)

27、Response.Write(oledbException.Message); / 顯示連接異常信息 finally / 如果連接打開(kāi)則關(guān)閉連接 if (conn.State = ConnectionState.Open) conn.Close(); 第25頁(yè),共54頁(yè)。(4)發(fā)布帖子頁(yè)面TopicAdd.aspx.cs部分代碼如下: 8.1.6 主要程序代碼 8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 protected void ButtonOK_Click(object sender, EventArgs e)/ 新建數(shù)據(jù)庫(kù)連接conn,連接到Access數(shù)據(jù)庫(kù) System.Data.OleD

28、b.OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = ConfigurationManager.ConnectionStringsMyBBSConnectionString.ConnectionString; OleDbCommand cmd = new OleDbCommand(); / 新建Command對(duì)象 cmd.Connection = conn; cmd.CommandText = INSERT INTO Topic(UserLoginName, TopicTitle, TopicConten

29、t,CreateTime,IP) VALUES(UserLoginName,TopicTitle,TopicContent,CreateTime,IP); cmd.CommandType = CommandType.Text; / 添加查詢參數(shù)對(duì)象,并給參數(shù)賦值 cmd.Parameters.AddWithValue(UserLoginName , Sessionlogin_name.ToString(); cmd.Parameters.AddWithValue(TopicTitle , TextBoxTitle.Text); cmd.Parameters.AddWithValue(Topic

30、Content , TextBoxContent.Text); cmd.Parameters.AddWithValue(CreateTime , DateTime.Now.ToString(); cmd.Parameters.AddWithValue(IP , Request.ServerVariablesREMOTE_HOST); 第26頁(yè),共54頁(yè)。(4)發(fā)布帖子頁(yè)面TopicAdd.aspx.cs部分代碼如下: 8.1.6 主要程序代碼 8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 try conn.Open(); / 打開(kāi)數(shù)據(jù)庫(kù)連接 cmd.ExecuteNonQuery(); /將添加記錄 R

31、esponse.Redirect(TopicList.aspx); catch (OleDbException oledbException) Response.Write(oledbException.Message); / 顯示連接異常信息 finally / 如果連接打開(kāi)則關(guān)閉連接 if (conn.State = ConnectionState.Open) conn.Close(); protected void ButtonBack_Click(object sender, EventArgs e)Response.Redirect(TopicList.aspx); 第27頁(yè),共54

32、頁(yè)。(5)修改帖子頁(yè)面TopicUpdate.aspx.cs部分代碼如下: 8.1.6 主要程序代碼 8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 protected void Page_Load(object sender, EventArgs e) / 如果首次加載,調(diào)用InitData() if (!IsPostBack) InitData();protected void ButtonUpdate_Click(object sender, EventArgs e)/ 新建數(shù)據(jù)庫(kù)連接conn,連接到Access數(shù)據(jù)庫(kù) System.Data.OleDb. OleDbConnection conn

33、= new OleDbConnection(); conn.ConnectionString = ConfigurationManager.ConnectionStringsMyBBSConnectionString.ConnectionString; OleDbCommand cmd = new OleDbCommand(); / 新建Command對(duì)象 cmd.Connection = conn; cmd.CommandText = UPDATE Topic SET TopicTitle= TopicTitle, TopicContent= TopicContent WHERE Topic

34、ID=TopicID; cmd.CommandType = CommandType.Text; / 添加查詢參數(shù)對(duì)象,并給參數(shù)賦值 cmd.Parameters.AddWithValue(TopicTitle , TextBoxTitle.Text); cmd.Parameters.AddWithValue(TopicContent , TextBoxContent.Text); cmd.Parameters.AddWithValue(TopicID , Convert.ToInt32(Request.QueryStringtopic_id); 第28頁(yè),共54頁(yè)。(5)修改帖子頁(yè)面Topic

35、Update.aspx.cs部分代碼如下: 8.1.6 主要程序代碼 8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 try conn.Open();/ 打開(kāi)數(shù)據(jù)庫(kù)連接 cmd.ExecuteNonQuery(); /將添加記錄 Response.Redirect(TopicList.aspx); catch (OleDbException oledbException) Response.Write(oledbException.Message); / 顯示連接異常信息 finally / 如果連接打開(kāi)則關(guān)閉連接 if (conn.State = ConnectionState.Open) conn.C

36、lose(); 第29頁(yè),共54頁(yè)。(5)修改帖子頁(yè)面TopicUpdate.aspx.cs部分代碼如下: 8.1.6 主要程序代碼 8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 protected void ButtonBack_Click(object sender, EventArgs e)Page.Response.Redirect(TopicList.aspx);private void InitData()/ 獲取鏈接傳遞的參數(shù)值 int topicID = Convert.ToInt32(Request.QueryStringtopic_id); / 新建數(shù)據(jù)庫(kù)連接conn,連接到Acce

37、ss數(shù)據(jù)庫(kù) System.Data.OleDb. OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = ConfigurationManager.ConnectionStringsMyBBSConnectionString.ConnectionString; OleDbDataReader dr; / 新建DataReader對(duì)象 OleDbCommand cmd = new OleDbCommand(); cmd.Connection = conn; cmd.CommandText = SELECT * F

38、ROM Topic WHERE TopicID=TopicID; cmd.CommandType = CommandType.Text; / 添加查詢參數(shù)對(duì)象,并給參數(shù)賦值 cmd.Parameters.AddWithValue(TopicID , topicID); 第30頁(yè),共54頁(yè)。(5)修改帖子頁(yè)面TopicUpdate.aspx.cs部分代碼如下: 8.1.6 主要程序代碼 8.1 基于數(shù)據(jù)庫(kù)的BBS論壇管理 try conn.Open(); / 打開(kāi)數(shù)據(jù)庫(kù)連接 dr = cmd.ExecuteReader(); / 將檢索的記錄行填充到DataReader對(duì)象中 if (dr.Re

39、ad()/ 如果有記錄,顯示記錄 TextBoxTitle.Text = dr.GetString(2); TextBoxContent.Text = dr.GetString(3); LabelCreateTime.Text = dr.GetDateTime(4).ToString(); LabelIP.Text = dr.GetString(5); LabelUserLoginName.Text = Sessionlogin_name.ToString(); dr.Close(); catch (OleDbException oledbException) Response.Write(o

40、ledbException.Message); / 顯示連接異常信息 finally / 如果連接打開(kāi)則關(guān)閉連接 if (conn.State = ConnectionState.Open) conn.Close(); 第31頁(yè),共54頁(yè)。8.2 公文管理系統(tǒng) 應(yīng)用ASP.NET技術(shù)開(kāi)發(fā)的公文管理系統(tǒng),綜合運(yùn)用了數(shù)據(jù)庫(kù)解決方案、封裝、用戶控件、文件上傳及高級(jí)控件等,實(shí)現(xiàn)基于Web的公文發(fā)布、接收、瀏覽、查詢和維護(hù)等功能。 系統(tǒng)由多個(gè)網(wǎng)站模塊組成。每個(gè)模塊由一組頁(yè)面及相關(guān)程序組成,完成相對(duì)獨(dú)立的任務(wù)。模塊涉及與用戶的交互過(guò)程,包含的文件數(shù)目和類型較多,并需要訪問(wèn)數(shù)據(jù)庫(kù)。第32頁(yè),共54頁(yè)。8.2

41、.1 系統(tǒng)功能 系統(tǒng)的功能模塊: 用戶登錄 發(fā)文瀏覽 收文瀏覽 發(fā)文處理 收文處理 文件查詢8.2 公文管理系統(tǒng) 第33頁(yè),共54頁(yè)。8.2.1 系統(tǒng)功能 (1)用戶登錄。為了保證系統(tǒng)使用的安全性,進(jìn)入系統(tǒng)首先要登錄。用戶成功登錄系統(tǒng)后,系統(tǒng)使用Session變量記錄已登錄的用戶信息,在執(zhí)行各功能之前都先進(jìn)行登錄檢查,只有已正常登錄的用戶才可使用系統(tǒng)功能。 (2)發(fā)文瀏覽。以分頁(yè)方式列出所有發(fā)文的編號(hào)和時(shí)間,用戶單擊編號(hào)查看詳細(xì)內(nèi)容,并可發(fā)表閱文回執(zhí)。(3)收文瀏覽。其功能與發(fā)文瀏覽十分相似,也以分頁(yè)方式列出所有收文的編碼和時(shí)間,用戶單擊編號(hào)查看詳細(xì)內(nèi)容,并可發(fā)表閱文回執(zhí)。 8.2 公文管理系

42、統(tǒng) 第34頁(yè),共54頁(yè)。8.2.1 系統(tǒng)功能 (4)發(fā)文處理。用于簽發(fā)公文。用戶填寫文件標(biāo)題、編號(hào)、有效期及辦理建議,選擇文件名后提交,即可發(fā)布文件。(5)收文處理。用于簽收公文。用戶選擇文件標(biāo)題后,即可顯示該文件的編號(hào)、發(fā)文日期、有效期及發(fā)文單位,并可查閱文件內(nèi)容。用戶可填寫辦理建議后執(zhí)行簽收功能。(6)文件查詢。可根據(jù)文件類型(發(fā)文、收文)、標(biāo)題關(guān)鍵字、發(fā)(收)文日期等進(jìn)行文件查詢。符合條件的文件信息以列表形式呈現(xiàn),單擊編號(hào)進(jìn)入發(fā)文詳情頁(yè)面查看詳細(xì)內(nèi)容。 8.2 公文管理系統(tǒng) 第35頁(yè),共54頁(yè)。8.2.2 數(shù)據(jù)庫(kù)設(shè)計(jì) 本系統(tǒng)選用Access數(shù)據(jù)庫(kù),所使用的數(shù)據(jù)庫(kù)名為oadata.mdb,

43、包括4個(gè)數(shù)據(jù)表,分別是:1)userpass:用戶信息表;2)wdlx:文件類型表;3)wddata:文件信息表;4)part:部門信息表;8.2 公文管理系統(tǒng) (1)數(shù)據(jù)庫(kù)結(jié)構(gòu)第36頁(yè),共54頁(yè)。8.2.2 數(shù)據(jù)庫(kù)設(shè)計(jì) userpass表結(jié)構(gòu):字 段 名數(shù)據(jù)類型可否為空說(shuō) 明Userid文本否用戶編號(hào),主鍵Partid文本否該用戶所屬部門編號(hào)Userkey文本否用戶權(quán)限Username文本可用戶姓名Password文本否用戶密碼8.2 公文管理系統(tǒng) 第37頁(yè),共54頁(yè)。8.2.2 數(shù)據(jù)庫(kù)設(shè)計(jì) wdlx表結(jié)構(gòu):字 段 名數(shù)據(jù)類型可否為空說(shuō) 明Id數(shù)值否自動(dòng)編號(hào)(記錄號(hào))lx文本否文檔類型zh文

44、本否文檔字號(hào)8.2 公文管理系統(tǒng) 第38頁(yè),共54頁(yè)。8.2.2 數(shù)據(jù)庫(kù)設(shè)計(jì) wddata表結(jié)構(gòu):字 段 名數(shù)據(jù)類型可否為空說(shuō) 明Id數(shù)值否自動(dòng)編號(hào)(作為文件編號(hào))zh文本否文檔字號(hào)lx文本否文檔類型Username文本否用戶姓名Partid文本否用戶所屬部門編號(hào)SendDate日期/時(shí)間否簽發(fā)時(shí)間ExpireDate日期/時(shí)間否過(guò)期時(shí)間Title文本否文件標(biāo)題Docfile文本否文件名Other備注可文件說(shuō)明8.2 公文管理系統(tǒng) 第39頁(yè),共54頁(yè)。8.2.2 數(shù)據(jù)庫(kù)設(shè)計(jì) part表結(jié)構(gòu):字 段 名數(shù)據(jù)類型可否為空說(shuō) 明Id數(shù)值否自動(dòng)編號(hào)(記錄號(hào))Partid文本否部門編號(hào)Partname文

45、本否部門名稱8.2 公文管理系統(tǒng) 第40頁(yè),共54頁(yè)。8.2.2 數(shù)據(jù)庫(kù)設(shè)計(jì) 8.2 公文管理系統(tǒng) (2)配置數(shù)據(jù)庫(kù)連接建立數(shù)據(jù)庫(kù)文件oadata.mdb后,將其保存在所創(chuàng)建的網(wǎng)站項(xiàng)目的“App_Data”文件夾下,在項(xiàng)目中配置web.config中的數(shù)據(jù)庫(kù)連接參數(shù)如下: 第41頁(yè),共54頁(yè)。8.2.2 數(shù)據(jù)庫(kù)設(shè)計(jì) 8.2 公文管理系統(tǒng) (3)數(shù)據(jù)庫(kù)訪問(wèn)類由于多個(gè)功能模塊都要執(zhí)行數(shù)據(jù)庫(kù)操作,因此將數(shù)據(jù)庫(kù)操作功能設(shè)計(jì)為DBHelper類,將其保存在網(wǎng)站項(xiàng)目的“App_Code”文件夾下,DBHelper類內(nèi)容如下:public class DBHelper protected OleDbConn

46、ection Connection; /存放連接對(duì)象 protected string ConnectionString; /存放連接串 public DBHelper() /構(gòu)造函數(shù) ConnectionString = WebConfigurationManager.ConnectionStringsdocumentsConnectionString.ConnectionString; 第42頁(yè),共54頁(yè)。8.2.2 數(shù)據(jù)庫(kù)設(shè)計(jì) 8.2 公文管理系統(tǒng) (3)數(shù)據(jù)庫(kù)訪問(wèn)類public void Open() /公有方法,建立數(shù)據(jù)庫(kù)連接 /判斷數(shù)據(jù)庫(kù)連接是否存在 if (Connection

47、= null) /不存在,新建并打開(kāi) Connection = new OleDbConnection(); Connection.ConnectionString = ConnectionString; Connection.Open(); else /存在,判斷是否處于關(guān)閉狀態(tài) if (Connection.State.Equals(ConnectionState.Closed) Connection.Open(); /連接處于關(guān)閉狀態(tài),重新打開(kāi) public void Close() /公有方法,關(guān)閉數(shù)據(jù)庫(kù)連接 if (Connection.State.Equals(Connection

48、State.Open) Connection.Close(); /連接處于打開(kāi)狀態(tài),關(guān)閉連接 第43頁(yè),共54頁(yè)。8.2.2 數(shù)據(jù)庫(kù)設(shè)計(jì) 8.2 公文管理系統(tǒng) (3)數(shù)據(jù)庫(kù)訪問(wèn)類public int ExecuteSql(string SqlStr) /公有方法,根據(jù)Sql語(yǔ)句,執(zhí)行并返回影響結(jié)果的行數(shù) int Count = -1; Open(); OleDbCommand cmd = new OleDbCommand(SqlStr, Connection); Count = cmd.ExecuteNonQuery(); Close(); return Count; 第44頁(yè),共54頁(yè)。8.

49、2.3 各子系統(tǒng)設(shè)計(jì)與程序代碼 (1)創(chuàng)建母版頁(yè)母版頁(yè)提供了類似模板的機(jī)制。本系統(tǒng)將logo、功能導(dǎo)航欄和頁(yè)腳等各頁(yè)面的公共內(nèi)容設(shè)計(jì)為母版頁(yè),在母版頁(yè)中定義內(nèi)容區(qū)域,各功能模塊只需將內(nèi)容頁(yè)放置到內(nèi)容區(qū)域即可。母版頁(yè)面如圖所示。 8.2 公文管理系統(tǒng) 第45頁(yè),共54頁(yè)。8.2.3 各子系統(tǒng)設(shè)計(jì)與程序代碼 (1)創(chuàng)建母版頁(yè)8.2 公文管理系統(tǒng) 母版頁(yè)采用DIV+CSS方式設(shè)計(jì),將頁(yè)面設(shè)計(jì)為如下幾個(gè)塊, maindiv:全局頁(yè), HeadDiv:頁(yè)首, MenuDiv:功能導(dǎo)航欄, ContentDiv:內(nèi)容區(qū)域, EndDiv:頁(yè)腳; 各塊的樣式分別進(jìn)行定義。第46頁(yè),共54頁(yè)。8.2.3 各子

50、系統(tǒng)設(shè)計(jì)與程序代碼 (2)登錄頁(yè)面8.2 公文管理系統(tǒng) 該頁(yè)面提供用戶登錄界面,如圖所示。當(dāng)用戶成功登錄后,用Session變量記錄其用戶信息,包括用戶名、所在單位等。第47頁(yè),共54頁(yè)。8.2.3 各子系統(tǒng)設(shè)計(jì)與程序代碼 (2)登錄頁(yè)面8.2 公文管理系統(tǒng) 登錄頁(yè)面采用table控件組織信息,按鈕處理程序如下: protected void BtnOK_Click(object sender, EventArgs e) string strId = txtid.Text; string strPass = txtpassword.Text; DBHelper dh = new DBHelpe

51、r(); /創(chuàng)建數(shù)據(jù)操作類實(shí)例 string strSql = SELECT * FROM userpass WHERE Userid= + strId + AND Passwd= + strPass + ; DataSet DS = dh.GetDataSetSql(strSql,userpass); if (DS.Tables0.Rows.Count=0) Label3 .Text =賬號(hào)或密碼有錯(cuò),請(qǐng)重新輸入; else /登錄成功,用Session變量保存用戶信息 SessionUserid=txtid .Text ; SessionUsername = DS.Tables0.Rows

52、0Username.ToString(); SessionUserpart = DS.Tables0.Rows0Partid.ToString(); Response.Redirect(LoginSucc.aspx); /轉(zhuǎn)向登錄成功頁(yè) protected void BtnDel_Click(object sender, EventArgs e) txtid.Text = ; txtpassword.Text = ; 第48頁(yè),共54頁(yè)。8.2.3 各子系統(tǒng)設(shè)計(jì)與程序代碼 (3)發(fā)文瀏覽和發(fā)文詳情8.2 公文管理系統(tǒng) 發(fā)文瀏覽界面如圖a所示。首先列出發(fā)文的編號(hào)、文件標(biāo)題和發(fā)文日期,其中編號(hào)為超

53、鏈接按鈕,當(dāng)用戶單擊某個(gè)發(fā)文編號(hào)后,將進(jìn)入發(fā)文詳情頁(yè)面,顯示該發(fā)文的詳情,如圖b所示。圖a圖b發(fā)文瀏覽界面中采用GridView控件,顯示文檔摘要信息(ID、文號(hào)、標(biāo)題和日期)。發(fā)文詳情界面中DataList控件,顯示文檔詳細(xì)內(nèi)容。第49頁(yè),共54頁(yè)。8.2.3 各子系統(tǒng)設(shè)計(jì)與程序代碼 (3)發(fā)文瀏覽和發(fā)文詳情8.2 公文管理系統(tǒng) 進(jìn)入發(fā)文瀏覽頁(yè)面時(shí)通過(guò)Page_Load()事件處理程序判斷是否是登錄用戶;程序如下: protected void Page_Load(object sender, EventArgs e) if (SessionUserid = null ) Response.

54、Write(alert(登錄錯(cuò)誤);window.location.href=./login.aspx); 單擊發(fā)文列表中的Id,進(jìn)入發(fā)文詳情頁(yè)面,該頁(yè)面的Page_Load()事件處理程序通過(guò)傳入的Id號(hào)檢索wddata表,顯示發(fā)文詳情。程序如下:protected void Page_Load(object sender, EventArgs e) DBHelper dh = new DBHelper(); string strSql = select * from wddata where Id= + Request.Paramsid.ToString(); DataSet DS = dh.GetDataSetSql(strSql, wddata); DataList1.DataSource = DS.Tables

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論