學(xué)生晚歸與考勤管理信息系統(tǒng)的開發(fā)_第1頁
學(xué)生晚歸與考勤管理信息系統(tǒng)的開發(fā)_第2頁
學(xué)生晚歸與考勤管理信息系統(tǒng)的開發(fā)_第3頁
學(xué)生晚歸與考勤管理信息系統(tǒng)的開發(fā)_第4頁
學(xué)生晚歸與考勤管理信息系統(tǒng)的開發(fā)_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、學(xué)生晚歸與考勤管理信息系統(tǒng)開發(fā)系統(tǒng)分析與設(shè)計3.1 系統(tǒng)預(yù)期用戶本系統(tǒng)的預(yù)期用戶是任何想了解學(xué)生在校的考勤情況的用戶。3.2 功能說明學(xué)生晚歸與考勤管理系統(tǒng)是目前機電職業(yè)技術(shù)校園網(wǎng)在線系統(tǒng)之一。本軟件將各個學(xué)院各個部門聯(lián)系到一起,便于學(xué)生晚歸、考勤的管理,同時,還可以讓學(xué)生通過查詢自己的晚歸與考勤記錄,了解到自己的紀(jì)律情況。在線圖書銷售系統(tǒng)要實現(xiàn)的功能模塊主要有:該系統(tǒng)分為晚歸情況管理、考勤情況管理與后臺管理三大功能模塊。 系統(tǒng)功能模塊的劃分圖1 系統(tǒng)功能架構(gòu)圖(2) 基本處理流程下圖是系統(tǒng)基本處理流程圖。圖2 系統(tǒng)基本處理流程3.3 數(shù)據(jù)庫設(shè)計本系統(tǒng)采用SQL Server2005作為后臺數(shù)

2、據(jù)庫。根據(jù)以上功能,新建一名為Attendance的數(shù)據(jù)庫,其中共包括9個數(shù)據(jù)表,分別是部門表(department):專業(yè)信息表(special):班級信息表(class):學(xué)生信息表(stuInfo):區(qū)/門信息表(region):晚歸情況表(late):考勤情況表(attendance):考勤類型表(attendtype):用戶信息表(admin):各個數(shù)據(jù)表的關(guān)系(主要是主鍵與外鍵的約束關(guān)系)如下圖所示:數(shù)據(jù)庫創(chuàng)建腳本參考文件:“學(xué)生晚歸與考勤管理信息系統(tǒng)數(shù)據(jù)庫建庫腳步.sql”3.4 數(shù)據(jù)庫連接1、建議將數(shù)據(jù)庫拷入的App_Data目錄,然后將數(shù)據(jù)庫連接字符串寫入到Web.confi

3、g,參考代碼如下:<appSettings><addkey="ConnectionStr"value="Server=.;AttachDbFilename=|DataDirectory|Attendance.mdf;Integrated Security=True" /></appSettings>測試數(shù)據(jù)庫連接是否正常using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;u

4、sing System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;publicpartialclassDBConnTest : System.Web.UI.Pageprotectedvoid Page_Load(object sender, EventArgs e) string constr = Conf

5、igurationManager.AppSettings"ConnectionStr"SqlConnection conn = newSqlConnection(constr); conn.Open();/打開數(shù)據(jù)庫連接 Response.Write("數(shù)據(jù)庫連接成功!"); conn.Close();/關(guān)閉數(shù)據(jù)庫連接 Response.Write("數(shù)據(jù)庫關(guān)閉成功!"); 經(jīng)驗證,Attendance.mdf數(shù)據(jù)庫連接正常2、將常用數(shù)據(jù)庫操作代碼寫入公共類DB中,其中包含以下各自定義方法,參考代碼如下:using System;us

6、ing 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;using System.Data.SqlClient;/<summary>/ DB類為一個專門進行數(shù)據(jù)庫操作的類/ 包括連接數(shù)據(jù)庫,更新數(shù)據(jù)庫,查詢數(shù)據(jù)庫這些操作

7、/</summary>publicclassDB/<summary>/ DB()為DB類的構(gòu)造方法/</summary>public DB()/<summary>/ 定義返回數(shù)據(jù)庫連接對象SqlConnection方法/</summary>/<returns>/ SqlConnection對象/</returns>publicSqlConnection getCon() String strCon = ConfigurationManager.AppSettings"ConnectionStr&quo

8、t;/從配置文件web.cofig里面讀取數(shù)據(jù)庫的連接字符串returnnewSqlConnection(strCon);/返回數(shù)據(jù)庫連接對象 /<summary>/ 定義更新數(shù)據(jù)庫的方法/</summary>/<param name="cmdStr">/ 參數(shù)cmdStr為要執(zhí)行更新數(shù)據(jù)庫的SQL語句,包含增加,修改,刪除這三種SQL語句/</param>/<returns>/ 數(shù)據(jù)庫更新成功則返回1,更新失敗則返回0/</returns>publicint sqlEx(string cmdStr)

9、SqlConnection con = getCon(); con.Open();/打開數(shù)據(jù)庫連接SqlCommand cmd = newSqlCommand(cmdStr,con);/創(chuàng)建執(zhí)行SQL語句的命令對象SqlCommandtry cmd.ExecuteNonQuery();return 1;/成功返回1 catch return 0;/失敗返回0 finally con.Dispose();/釋放資源 /<summary>/ 定義查詢數(shù)據(jù)庫信息的方法/</summary>/<param name="cmdStr">/ 參數(shù)cm

10、dStr為執(zhí)行查詢時的書寫的SQL語句/</param>/<returns></returns>publicDataTable reDt(string cmdStr) SqlConnection con = getCon();/連接數(shù)據(jù)庫 con.Open();SqlDataAdapter da = newSqlDataAdapter(cmdStr,con);/創(chuàng)建數(shù)據(jù)適配器對象DataSet ds = newDataSet();/創(chuàng)建數(shù)據(jù)集對象 da.Fill(ds);/將保存在數(shù)據(jù)適配器對象中的數(shù)據(jù)填充到數(shù)據(jù)集對象中return (ds.Tables0)

11、;/返回數(shù)據(jù)集對象中有記錄的那個表 /<summary>/ 定義閱讀數(shù)據(jù)的方法/</summary>/<param name="str">/ 參數(shù)str為執(zhí)行查詢操作時的SQL語句/</param>/<returns>/ 返回一個數(shù)據(jù)閱讀對象/</returns>publicSqlDataReader reDr(string str) SqlConnection con = getCon(); con.Open();SqlCommand cmd = newSqlCommand(str,con);SqlD

12、ataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);/通過調(diào)用Command對象的ExecuteReader()方法創(chuàng)建DataReader對象,CommandBehavior.CloseConnection表示?return dr; 功能模塊的實現(xiàn)用戶注冊功能的實現(xiàn):實現(xiàn)邏輯:用戶注冊信息寫入到admin表,此注冊功能是專門針對本校的學(xué)生開發(fā)注冊的,如果不是本校的學(xué)生,是沒有注冊的權(quán)限的,所有注冊時要根據(jù)學(xué)生輸入的真實和學(xué)號進行注冊,如果找不到對應(yīng)的學(xué)生的名字,就不允許用戶進行注冊,如果用戶已經(jīng)注冊過一次了,就直

13、接告訴用戶已經(jīng)注冊過了,無需再次注冊了,并自動為用戶跳轉(zhuǎn)到登錄頁面,如果用戶是第一次注冊,就把用戶的注冊信息寫入到admin表中,注冊成功后也跳轉(zhuǎn)到登錄頁面讓用戶進行登錄。用戶注冊頁面Register.aspx如下圖所示:學(xué)生進入此頁面進行注冊,正確填寫了學(xué)生和學(xué)生學(xué)號以與驗證碼了以后,點擊提交按鈕完成注冊,而在后臺,要進行數(shù)據(jù)的合法性判斷,首先進行的是驗證碼的正確性判斷,把用戶輸入的驗證碼和保存的Session對象中的驗證碼取出來作比較,如果驗證碼輸入正確才繼續(xù)執(zhí)行檢查該注冊用戶是否是本校的學(xué)生,以與該用戶是否已經(jīng)被注冊了,后臺的處理代碼如下所示:Register.aspx.csusing

14、System;using System.Data;using System.Configuration;using System.Collections;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;using System.Data.SqlClient;publicpartialclassstudent_

15、Register : System.Web.UI.PageDB db = newDB();protectedvoid Page_Load(object sender, EventArgs e) this.ImageButton1.ImageUrl = "image.aspx"/image.aspx是一個顯示驗證碼的Web頁面 protectedvoid btn_submit_Click(object sender, EventArgs e) string code = txtCheckCode.Text.Trim();if (code != (string)Session&

16、quot;image") Response.Write("<Script>alert('驗證碼輸入錯誤,請檢查后重新輸入!')</Script>");/ Response.Redirect("Register.aspx");如果使用這種跳轉(zhuǎn)方式,那么上面的javascript是無法運行的,因為還沒有來得與運行就頁面就已經(jīng)跳轉(zhuǎn)了 Response.Write("<script>window.location.href='Register.aspx'</script

17、>"); else string stu_Name = txtUserName.Text.Trim();string stu_Id = txtstuID.Text.Trim();string sql2 = "select stu_name from stuInfo where stu_name='"+stu_Name+"'"/使用這條SQL語句檢查要注冊的人是否是本校的學(xué)生,如果是,才允許其注冊,如果不是,就不允許其注冊SqlDataReader dr = db.reDr(sql2);if (dr.Read() dr.Cl

18、ose();/關(guān)閉SqlDataReaderstring sq = "select * from admin where login_name='" + stu_Name + "'"/如果已經(jīng)證實是本校的學(xué)生,就再判斷該學(xué)生是否已經(jīng)注冊過了 dr=db.reDr(sq);/再次使用SqlDataReaderif (dr.Read() Response.Write("<Script>alert('你已經(jīng)注冊過了,不需要再次注冊了!直接為您跳轉(zhuǎn)到登錄頁面進行登錄')</Script>"

19、;); Response.Write("<script>window.location.href='logion.aspx'</script>"); else int power = 3;/如果已經(jīng)證實要注冊的人是本校的學(xué)生,就直接給該學(xué)生賦予使用權(quán)限string sql = "insert into admin(login_name,login_pwd,admin_power) values('" + stu_Name + "','" + stu_Id + "

20、',"+power+")"/Response.Write(sql);/Response.End();try int flag = db.sqlEx(sql);if (flag > 0) Response.Write("<Script>alert('注冊成功了!馬上為您跳轉(zhuǎn)到登錄頁面進行登錄')</Script>"); Response.Write("<script>window.location.href='login.aspx'</script&

21、gt;"); else Response.Write("<Script>alert('注冊失?。?#39;)</Script>"); catch (System.Exception ee) Response.Write("<script>alert('"+ee.Message.ToString()+"');</script>"); else Response.Write("<Script>alert('你不是本校的學(xué)生,沒有

22、注冊的權(quán)限!')</Script>"); txtUserName.Text = "" txtstuID.Text = "" protectedvoid btn_reset_Click(object sender, EventArgs e) txtstuID.Text = "" txtUserName.Text = "" 用戶登錄功能的實現(xiàn)實現(xiàn)邏輯:用戶進入登錄頁面后,輸入相關(guān)的用戶名和密碼進行登錄,如果用戶名和密碼都正確了,表示該用戶是合法用戶,就允許其進入系統(tǒng)的主頁進行相關(guān)的系統(tǒng)操作

23、,如果用戶名和密碼的驗證不通過,就不允許其進入系統(tǒng),用戶輸入用戶名和密碼后,在后臺的處理過程中首先會從數(shù)據(jù)庫Attendance.mdf的admin表取出相應(yīng)的用戶名和用戶輸入的用戶名進行匹配,如果用戶名匹配成功了,就把數(shù)據(jù)表中存儲的密碼和用戶輸入的密碼進行比對,如果密碼也驗證通過了,才允許用戶進入系統(tǒng)首頁,用戶名和密碼中任意一項匹配如果不通過,都不允許其登錄。登錄該系統(tǒng)時,有三種不同身份的使用者,分別為管理員,記錄員和學(xué)生,不同的身份就對應(yīng)著不同的使用權(quán)限。使用權(quán)限的限制根據(jù)不同身份的登錄者生成不同的動態(tài)導(dǎo)航,以此到達限定使用者的權(quán)限的目的。登錄頁面的設(shè)計如下:如果登錄的身份是管理員,則顯示

24、如下的導(dǎo)航:如果登錄的身份是記錄員,則顯示如下的導(dǎo)航:如果登錄的身份是學(xué)生,則顯示如下的導(dǎo)航:對于管理員而言,其擁有的使用權(quán)限是最多的,但沒有晚歸登記和考勤登記的權(quán)限,登記權(quán)限只有記錄員才有,而對于學(xué)生而言,只有查看相關(guān)記錄的權(quán)限,別的權(quán)限都沒有,因此通過這種根據(jù)不同登錄者的身份生成不同的導(dǎo)航就可以限定了登錄者的使用權(quán)限了。這里難就難在了如果根據(jù)登錄者的身份動態(tài)生成不同的導(dǎo)航信息。相關(guān)代碼如下:用戶登錄的后臺代碼:login.aspx.csusing System;using System.Data;using System.Configuration;using System.Collect

25、ions;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;using System.Data.SqlClient;publicpartialclasslogin : System.Web.UI.PageDB db = newDB();protectedvoid Page_Load(object sender,

26、 EventArgs e) ImageButton1.ImageUrl = "image.aspx"/讓頁面加載時就顯示驗證碼圖片 protectedvoid btnRegister_Click(object sender, EventArgs e) Response.Redirect("Register.aspx");/點擊注冊按鈕后,直接跳轉(zhuǎn)到注冊頁面,這里需要注意一個小問題,由于文本框已經(jīng)使用了驗證控件,因此要想讓按鈕的觸發(fā)事件不觸發(fā)驗證控件時,把按鈕的CausesValidation屬性設(shè)置為false即可 protectedvoid btnLo

27、gin_Click(object sender, EventArgs e) string code = txtCheckCode.Text.Trim();/獲取輸入的驗證碼string username = txtUserName.Text.Trim();/獲取輸入的用戶名string password = txtPassword.Text.Trim();/獲取輸入的密碼if (code != (string)Session"image")/先進行驗證碼的判斷,驗證碼輸入正確后在執(zhí)行其他的操作 Response.Write("<script>alert

28、('驗證碼輸入有誤!')</script>"); Response.Write("<script>window.location.href='login.aspx'</script>"); else string sql = "select login_name,login_pwd,admin_power from admin where login_name='"+username+"'"SqlDataReader dr = db.reDr

29、(sql);if (dr.Read() if (string)dr"login_pwd" = password) Response.Write("<script>alert('用戶名和密碼正確!登錄成功!')</script>"); Response.Write("<script>window.location.href='Index.aspx'</script>"); Session"Power" = dr"admin_po

30、wer"/使用Session存儲用戶的使用權(quán)限 Session"username" = username;/存儲用戶名 else Response.Write("<script>alert('密碼錯誤!')</script>"); Response.Write("<script>window.location.href='login.aspx'</script>"); else Response.Write("<script>

31、;alert('該用戶不存在,請先去注冊一個后再進行登錄操作,即將為你跳轉(zhuǎn)到注冊頁面!')</script>"); Response.Write("<script>window.location.href='Register.aspx'</script>"); 在用戶進行登錄的時候,使用Session對象存儲用戶名,并且根據(jù)用戶名從數(shù)據(jù)庫中取出該用戶的使用權(quán)限,也使用Session對象保存用戶的使用權(quán)限,登錄成功后,在系統(tǒng)的主頁的后臺處理代碼中取出保存在Session對象中的用戶名的相關(guān)的用戶權(quán)限

32、,然后根據(jù)用戶權(quán)限來動態(tài)生成導(dǎo)航,相關(guān)的代碼如下:系統(tǒng)主頁的后臺處理代碼:index.aspx.csusing System;using System.Data;using System.Configuration;using System.Collections;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.HtmlControl

33、s;publicpartialclassIndex : System.Web.UI.Pageprotectedvoid Page_Load(object sender, EventArgs e) if (Session"username" != null)/這里使用Session對象對用戶是否已經(jīng)進行登錄進行判斷,如果Session中的容不為空,則表示用戶已經(jīng)登錄 string userStr = (string)Session"username"/取出保存在Session對象中的用戶名int power = int.Parse(Session"

34、;Power".ToString();/取出保存在Session對象中的用戶使用權(quán)限標(biāo)識string nav = ""if (power = 1)/根據(jù)登錄者的身份動態(tài)變化導(dǎo)航的顯示,以此限定不同身份的登錄者的使用權(quán)限 nav = "<td><a href='latecheck.aspx'target='show_Content'>晚歸查詢</a>|</td>" nav += "<td><a href='latecount.asp

35、x' target='show_Content'>晚歸匯總</a>|</td>" nav += "<td><a href='attendcheck.aspx' target='show_Content'>考勤查詢</a>|</td>" nav += "<td><a href='attendcount.aspx' target='show_Content'>考勤匯總&l

36、t;/a>|</td>" nav += "<td><a href='updatedept.aspx' target='show_Content'>系/班級/專業(yè)維護</a>|</td>" nav += "<td><a href='updateregion.aspx' target='show_Content'>區(qū)/門維護</a>|</td>" nav += "

37、<td><a href='updateadmin.aspx' target='show_Content'>用戶管理</a>|</td>" nav += "<td><a href='exit.aspx'>注銷用戶</a></td>" elseif (power = 2) nav = "<td><a href='latecheck.aspx'target='show_Cont

38、ent'>晚歸查詢</a>|</td>" nav += "<td><a href='latecount.aspx' target='show_Content'>晚歸匯總</a>|</td>" nav += "<td><a href='latewrite.aspx' target='show_Content'>晚歸登記</a>|</td>" nav +

39、= "<td><a href='attendcheck.aspx' target='show_Content'>考勤查詢</a>|</td>" nav += "<td><a href='attendcount.aspx' target='show_Content'>考勤匯總</a>|</td>" nav += "<td><a href='attendwrite.

40、aspx' target='show_Content'>考勤登記</a>|</td>" nav += "<td><a href='exit.aspx'>注銷用戶</a></td>" elseif (power = 3) nav = "<td><a href='latecheck.aspx'target='show_Content'>晚歸查詢</a>|</td>

41、" nav += "<td><a href='latecount.aspx' target='show_Content'>晚歸匯總</a>|</td>" nav += "<td><a href='attendcheck.aspx' target='show_Content'>考勤查詢</a>|</td>" nav += "<td><a href='at

42、tendcount.aspx' target='show_Content'>考勤匯總</a>|</td>" nav += "<td><a href='exit.aspx'>注銷用戶</a></td>" lblNav.Text = "<table><tr>"+nav+"</tr></table>" lblNav.Text += "歡迎<font c

43、olor='red'>" + userStr + "</font>登錄" else /如果用戶沒有進行登錄,則直接跳轉(zhuǎn)到登錄頁面 Response.Write("<script>alert('你還沒有進行系統(tǒng)的登錄,請先登錄后再使用本系統(tǒng)!')</script>"); Response.Write("<script>window.location.href='login.aspx'</script>"); /Re

44、sponse.Write("<iframe name='show_Content' frameborder='1' width='800px' height='600px' scroll='no'></iframe>");向網(wǎng)頁中輸出一個框架 lblContent.Text = "<iframe name='show_Content' frameborder='1' width='800px' height=

45、'600px' scroll='no' src='Welcome.aspx'></iframe>"/讓框架在指定的Lable中顯示 到此,用戶注冊和登錄的功能模塊就全部實現(xiàn)了接下來將進入系統(tǒng)開發(fā)中的最核心的功能模塊部分的開發(fā):晚歸情況管理和考勤情況管理,這兩個部分是系統(tǒng)功能中最核心的兩個部分,也是最難實現(xiàn)的兩個部分,這兩個部分難就難在了查詢的部分,如何根據(jù)用戶的選擇查詢操作動態(tài)拼湊出SQL語句對數(shù)據(jù)庫進行操作,從而查詢出用戶想要的記錄。晚歸情況管理功能模塊的實現(xiàn)晚歸情況管理功能模塊主要有三部分,分別為晚歸登記,晚歸查詢

46、,晚歸匯總。如下圖所示:晚歸情況管理晚歸登記晚歸查詢晚歸匯總實現(xiàn)晚歸登記功能latewrite.aspx頁面設(shè)計如下:在數(shù)據(jù)庫的設(shè)計中,存儲晚歸情況的表為late表,late表的設(shè)計如下圖所示:從表中可以看到,late表存儲的信息為學(xué)生的學(xué)號(stu_id)、區(qū)/門編號(region_id)以與晚歸時間(late_time)和晚歸事由(late_intro)。記錄員在進行晚歸情況記錄時,首先要選擇的系部,專業(yè),班級,區(qū)/門,這些相關(guān)的學(xué)生的信息,然后寫上晚歸時間和晚歸事由后,點擊記錄按鈕,完成晚歸情況的登記。這里需要注意的地方是,記錄員選擇的系部名稱,專業(yè)名稱,班級名稱以與學(xué)生名稱這些信息是早

47、就已經(jīng)隨著數(shù)據(jù)庫的創(chuàng)建插入到相關(guān)的表中存放了,因此沒有必要再次把這些重復(fù)的信息寫入到數(shù)據(jù)庫中,而且從存儲晚歸情況記錄的late表中也可以看出,late表并沒有定義有可以存儲系部,專業(yè),班級、區(qū)/門和的字段,但可以看到,late表中存放有學(xué)生的學(xué)號(stu_id),區(qū)門的編號(region_id),當(dāng)初進行數(shù)據(jù)庫設(shè)計時,就已經(jīng)定義了late表中的stu_id(外鍵)字段和stuInfo表的stu_id(主鍵)字段之間的約束關(guān)系,因此可以通過late表的stu_id找到stuInfo表中對應(yīng)著的stu_id所表示的學(xué)生,而stuInfo表的設(shè)計如下圖所示:從學(xué)生信息表(stuInfo)的定義中可以

48、看出,學(xué)生信息表中存放有系部的編號(dept_id)、專業(yè)編號(spc_id)以與(class_id),這三個字段都作為外鍵與相應(yīng)的department表的dept_id(主鍵)、spcieal表的spc_id(主鍵)以與class表的class_id(主鍵)建立起主鍵外鍵的約束關(guān)系,因此通過stuInfo表就可以找到與該晚歸學(xué)生相關(guān)的系部,專業(yè)以與所在的班級,這樣有關(guān)該晚歸學(xué)生的全部信息就可以通過多表聯(lián)合查詢從stuInfo表(得到學(xué)生),class表(得到班級),spceial表(得到專業(yè))和department表(得到系部)得到。這就是建立起主鍵外鍵約束的好處,可以把表和表通過某種關(guān)系關(guān)

49、聯(lián)起來,使之成為有一定依賴關(guān)系的表,從而保持了數(shù)據(jù)的完整性。晚歸情況記錄表(late)中的region_id記錄了學(xué)生晚歸的區(qū)/門編號,通過該編號就可以找到存放在region表中對應(yīng)的區(qū)/門信息。做這個功能模塊時,容易產(chǎn)生一個誤區(qū),會很自然地認(rèn)為記錄員選擇的系部,專業(yè),班級,區(qū)/門以與填寫的晚歸時間和晚歸事由這些有關(guān)晚歸的信息全部都要寫入到數(shù)據(jù)庫里面,如果這樣想,那么這個功能模塊就沒有辦法做了,而且會越做越復(fù)雜,會產(chǎn)生很多重復(fù)的數(shù)據(jù),可能有的人會想到再創(chuàng)建一個表,專門用來存放這些信息,其實是完全沒有必要這樣做的。使用一個late表存放晚歸情況記錄即已經(jīng)可以了。其它的系部,班級,專業(yè)等相關(guān)信息在

50、別的表已經(jīng)存放有了,因此沒有必要再次把這些信息寫入到數(shù)據(jù)庫中存放,造成數(shù)據(jù)的冗余以與存儲空間的浪費。latewrite.aspx.cs相關(guān)的代碼如下:using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using

51、System.Web.UI.HtmlControls;using System.Data.SqlClient;publicpartialclasslatewrite : System.Web.UI.PageDB db = newDB();protectedvoid Page_Load(object sender, EventArgs e) if (!IsPostBack) string sql = "select dept_id,dept_name from department"SqlDataReader dr = db.reDr(sql);/獲取數(shù)據(jù)源,數(shù)據(jù)源來源于de

52、partment表 dp_dept.DataSource = dr;/綁定數(shù)據(jù)源到dp_selectDept中 dp_dept.DataValueField = "dept_id"/給DropDownList1的下拉列表的項賦值 dp_dept.DataTextField = "dept_name"/顯示給用戶看的文本 dp_dept.DataBind();/顯示數(shù)據(jù) dp_dept.Items.Insert(0, newListItem("=請選擇系部=", "");/在第0個位置插入一個下拉項,顯示的DataT

53、extField為"=請選擇系部=",下拉項的DataValueField為空 dp_spc.Items.Insert(0, newListItem("=請選擇專業(yè)=", ""); dp_class.Items.Insert(0, newListItem("=請選擇班級=", ""); dp_name.Items.Insert(0,newListItem("=請選擇="); sql = "select region_id,region_name from regio

54、n" dr = db.reDr(sql); dp_region.DataSource = dr; dp_region.DataValueField = "region_id" dp_region.DataTextField = "region_name" dp_region.DataBind(); dp_region.Items.Insert(0, newListItem("=請選擇區(qū)/門=", ""); protectedvoid dp_dept_SelectedIndexChanged(object

55、sender, EventArgs e) string dept_id = dp_dept.SelectedValue;/獲取中選定的項的value,SelectedValue的意思很明顯,意思為選中的值/注意:這里的判斷不要寫成if(dept_id!=null)這樣寫會出錯的if (dept_id != "")/這里要進行判斷,如果選中的是第一項,即顯示文本為“=請選擇系部=”這一項時,dept_id是沒有值的,即為空 string sql = "select spc_id,spc_name from special where dept_id=" +

56、 dept_id;/查詢出與dept_id相等的記錄,這里的dept_id為整型,所以不用加單引號引起來SqlDataReader dr = db.reDr(sql);/獲取數(shù)據(jù)源,數(shù)據(jù)源來源于special表 dp_spc.DataSource = dr;/綁定數(shù)據(jù)源 dp_spc.DataTextField = "spc_name"/顯示專業(yè)名稱給用戶看 dp_spc.DataValueField = "spc_id"/把專業(yè)的id值賦值給下拉列表的項 dp_spc.DataBind();/顯示數(shù)據(jù) dp_spc.Items.Insert(0, ne

57、wListItem("=請選擇專業(yè)=", ""); else /如果dp_dept選中的是第一項“=請選擇系部=”,此時的DataValueField是為空的,所以要相應(yīng)的把dp_spc,dp_class,dp_name中的項清空掉 dp_spc.Items.Clear();/清空 DropDownList2下拉列表的項 dp_spc.Items.Insert(0, newListItem("=請選擇專業(yè)=", ""); dp_class.Items.Clear();/清空 DropDownList3下拉列表的項 dp_class.Items.Insert(0, newListItem("=請選擇班級=", ""); dp_name.Items.Clear();/清空下拉列表的項 dp_name.Items.Insert(0, newListItem("=請選擇=", ""); protectedvoid dp_spc_SelectedIndexChanged(ob

溫馨提示

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

評論

0/150

提交評論