![學生晚歸與考勤管理信息系統(tǒng)開發(fā)文檔_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/9/dd2c40d9-7387-44f7-a45e-37c5d8721249/dd2c40d9-7387-44f7-a45e-37c5d87212491.gif)
![學生晚歸與考勤管理信息系統(tǒng)開發(fā)文檔_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/9/dd2c40d9-7387-44f7-a45e-37c5d8721249/dd2c40d9-7387-44f7-a45e-37c5d87212492.gif)
![學生晚歸與考勤管理信息系統(tǒng)開發(fā)文檔_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/9/dd2c40d9-7387-44f7-a45e-37c5d8721249/dd2c40d9-7387-44f7-a45e-37c5d87212493.gif)
![學生晚歸與考勤管理信息系統(tǒng)開發(fā)文檔_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/9/dd2c40d9-7387-44f7-a45e-37c5d8721249/dd2c40d9-7387-44f7-a45e-37c5d87212494.gif)
![學生晚歸與考勤管理信息系統(tǒng)開發(fā)文檔_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/9/dd2c40d9-7387-44f7-a45e-37c5d8721249/dd2c40d9-7387-44f7-a45e-37c5d87212495.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、學生晚歸與考勤管理信息系統(tǒng)開發(fā)系統(tǒng)分析及設計3.1 系統(tǒng)預期用戶本系統(tǒng)的預期用戶是任何想了解學生在校的考勤情況的用戶。3.2 功能說明學生晚歸與考勤管理系統(tǒng)是目前廣西機電職業(yè)技術校園網(wǎng)在線系統(tǒng)之一。本軟件將各個學院各個部門聯(lián)系到一起,便于學生晚歸、考勤的管理,同時,還可以讓學生通過查詢自己的晚歸與考勤記錄,了解到自己的紀律情況。在線圖書銷售系統(tǒng)要實現(xiàn)的功能模塊主要有:該系統(tǒng)分為晚歸情況管理、考勤情況管理與后臺管理三大功能模塊。系統(tǒng)功能模塊的劃分圖1系統(tǒng)功能架構圖(2)基本處理流程F圖是系統(tǒng)基本處理流程圖。圖2系統(tǒng)基本處理流程3.3 數(shù)據(jù)庫設計本系統(tǒng)采用SQLServer2005作為后臺數(shù)據(jù)庫。
2、根據(jù)以上功能,新建一名為Attendance的數(shù)據(jù)庫,其中共包括9個數(shù)據(jù)表,分別是部門表(department):班級信息表(class):衰dbo_class列名數(shù)據(jù)類型允許空class_idint邛jidintclass_namevarctiarfSG)H學生信息表(stuInfo):廣衰dbo.stu.Lnfd列名數(shù)據(jù)類出允許空idintElstu_narnechar(3rD:睥;stu_cctiari11),fldeptidint即jidInt0。后$5_kJintOrftomeft自r(舟困n區(qū)/門信息表(region):空許 口允,券dbo-regioxij畔卜?!rtgiDn_r
3、iinirgion_nanrevarctiarfSH)晚歸情況表(late):考勤情況表(attendance )蓑-dbo.列名n龍許空IIHIIlliBillIlliIVIIlllUIIllll:llllllllllll卜津3ttsnd_idiniIi,mrawn>nnrc(rBiiiB-aiaarnu!?!tiiibii*stu_dchardl)typfi_idintHttend_bmedatetimesttend_iitrotextcountsint考勤類型表(attendtype):衰dbo_a+'t*nd'+ype陽:lyps_idinttype_namect
4、iar(4)用戶信息表(admin):爰dbo_允許空 Bnnn到考數(shù)據(jù)類型.曾!a4rnh_idinilil_«nr«rims-n,-lff,l.“«nr-th,,曾tajin_narnvardartogmjwdvarehsr(20)atmin_powerint各個數(shù)據(jù)表的關系(主要是主鍵與外鍵的約束關系)如下圖所示:數(shù)據(jù)庫創(chuàng)建腳本參考文件:“學生晚歸與考勤管理信息系統(tǒng)數(shù)據(jù)庫建庫腳步.sql”3.4數(shù)據(jù)庫連接1、建議將數(shù)據(jù)庫拷入網(wǎng)站內的App_Data目錄內,然后將數(shù)據(jù)庫連接字符串寫入至“Web.config,參考代碼如下:<appSettings>
5、<addkey="'ConnectionStr"value="Server=.;AttachDbFilename=|DataDirectory|Attendance.mdf;IntegratedSecurity=True"/></appSettings>測試數(shù)據(jù)庫連接是否正常usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Security;usingS
6、ystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.Data.SqlClient;publicpartialclassDBConnTest:System.Web.UI.PageprotectedvoidPage_Load(objectsender,EventArgse)stringconstr=ConfigurationManager.AppSettings"ConnectionSt
7、r"SqlConnectionconn=newSqlConnection(constr);conn.Open();/打開數(shù)據(jù)庫連接Response.Write("數(shù)據(jù)庫連接成功!");conn.Close();/關閉數(shù)據(jù)庫連接Response.Write("數(shù)據(jù)庫關1成功!");經驗證,Attendance.mdf數(shù)據(jù)庫連接正常2、將常用數(shù)據(jù)庫操作代碼寫入公共類DB中,其中包含以下各自定義方法,參考代碼如下:usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.We
8、b;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.Data.SqlClient;/<summary>/DB類為一個專門進行數(shù)據(jù)庫操作的類/包括連接數(shù)據(jù)庫,更新數(shù)據(jù)庫,查詢數(shù)據(jù)庫這些操作/summarypublicclassDB(/<summary>/DB()為D談的構造方法/</summary&g
9、t;publicDB()(/summary/定義返回數(shù)據(jù)庫連接對象SqlConnection方法/summary/returns/SqlConnection對象/returnspublicSqlConnectiongetCon()StringstrCon=ConfigurationManager.AppSettings"ConnectionStr"/從配置文件web.cofig里面讀取數(shù)據(jù)庫的連接字符串returnnewSqlConnection(strCon);/返回數(shù)據(jù)庫連接對象/summary/定義更新數(shù)據(jù)庫的方法/summary/<paramname=&quo
10、t;cmdStr"/參數(shù)cmdStr為要執(zhí)行更新數(shù)據(jù)庫的SQL吾句,包含增加,修改,刪除這三種SQL吾句/param/<returns>/數(shù)據(jù)庫更新成功則返回1,更新失敗則返回0/</returns>publicintsqlEx(stringcmdStr)SqlConnectioncon=getCon();con.Open();/打開數(shù)據(jù)庫連接SqlCommandcmd=newSqlCommanc(cmdStr,con);/創(chuàng)建執(zhí)行SQ1LI句的命令對象SqlCommandtrycmd.ExecuteNonQuery();return1;/成功返回1catch
11、return0;/失敗返回0finallycon.Dispose();/釋放資源/summary/定義查詢數(shù)據(jù)庫信息的方法/summary/<paramname="cmdStr">/參數(shù)cmdStr為執(zhí)行查詢時的書寫的SQ暗句/</param>/<returns></returns>publicDataTablereDt(stringcmdStr)SqlConnectioncon=getCon();/連接數(shù)據(jù)庫con.Open();SqlDataAdapterda=newSqlDataAdapter(cmdStr,con);/
12、創(chuàng)建數(shù)據(jù)適配器對象DataSetds=newDataSet();/創(chuàng)建數(shù)據(jù)集對象da.Fill(ds);/將保存在數(shù)據(jù)適配器對象中的數(shù)據(jù)填充到數(shù)據(jù)集對象中return(ds.Tables0);/返回數(shù)據(jù)集對象中有記錄的那個表/summary/定義閱讀數(shù)據(jù)的方法/summary/paramname="str">/參數(shù)str為執(zhí)行查詢操作時的SQLI句/param/returns/返回一個數(shù)據(jù)閱讀對象/returnspublicSqlDataReaderreDr(stringstr)SqlConnectioncon=getCon();con.Open();SqlComma
13、ndcmd=newSqlCommanc(str,con);SqlDataReaderdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);/通過調用Command象的ExecuteReader()方法創(chuàng)建DataReader對象,CommandBehavior.CloseConnection表示?returndr;功能模塊的實現(xiàn)用戶注冊功能的實現(xiàn):實現(xiàn)邏輯:用戶注冊信息寫入到admin表,此注冊功能是專門針對本校的學生開發(fā)注冊的,如果不是本校的學生,是沒有注冊的權限的,所有注冊時要根據(jù)學生輸入的真實姓名和學號進行注冊,如果找不到對應的學生的
14、名字,就不允許用戶進行注冊,如果用戶已經注冊過一次了,就直接告訴用戶已經注冊過了,無需再次注冊了,并自動為用戶跳轉到登錄頁面,如果用戶是第一次注冊,就把用戶的注冊信息寫入到admin表中,注冊成功后也跳轉到登錄頁面讓用戶進行登錄用戶注冊頁面Register.aspx如下圖所示:廣力祝電職業(yè)技術學忱GUANGM7ECJ-WQL'OaC>«.COLLEGEDFWZtilXERT2ELEZTH-ldTf.學生晚歸與考勤管理系統(tǒng)-"都酬=學宅姓名|學位姓名將作為系統(tǒng)登錄時的用戶名,髭多為4個衩字.I苧生學號nihw號是用于疊量柒一時惟為盍碼用駒必須填馬正一6ZL9學生
15、進入此頁面進行注冊,正確填寫了學生姓名和學生學號以及驗證碼了以后,點擊提交按鈕完成帳戶注冊,而在后臺,要進行數(shù)據(jù)的合法性判斷,首先進行的是驗證碼的正確性判斷,把用戶輸入的驗證碼和保存的Session對象中的驗證碼取出來作比較,如果驗證碼輸入正確才繼續(xù)執(zhí)行檢查該注冊用戶是否是本校的學生,以及該用戶是否已經被注冊了,后臺的處理代碼如下所示:Register.aspx.csusingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Secu
16、rity;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.Data.SqlClient;publicpartialclassstudent_Register:System.Web.UI.PageDBdb=newDB();protectedvoidPage_Load(objectsender,EventArgse)this.ImageButton1.ImageUrl="
17、image.aspx"/image.aspx是個顯示驗證碼的WelM面protectedvoidbtn_submit_Click(objectsender,EventArgse)stringcode=txtCheckCode.Text.Trim();if(code!=(string)Session"image")Response.Write("<Script>alert('驗證碼輸入錯誤,請檢查后重新輸入!')</Script>");javascript/Response.Redirect("R
18、egister.aspx");如果使用這種跳轉方式,那么上面的是無法運行的,因為還沒有來得及運行就頁面就已經跳轉了Response.Write("<script>window.location.href='Register.aspx'</script>");else stringstu_Name = txtUserName.Text.Trim();stringstu_Id = txtstuID.Text.Trim();stringsql2 = "select stu_name from stuInfo where
19、stu_name='"+stu_Name4:"" ; / 使用這條SQ晤句檢查要注冊的人是否是本校的學生,如果是,才允許其注冊,如果不是,就不允許其注冊SqlDataReader dr = db.reDr(sql2);if (dr.Read()dr.Close();/ 關閉 SqlDataReaderstring sq = "select * from admin where login_name='"+ stu_Name + ,"" ; / 如果已經證實是本校的學生,就再判斷該學生是否已經注冊過了dr=db
20、.reDr(sq);/ 再次使用 SqlDataReaderif (dr.Read()Response.Write("<Script>alert('你已經注冊過了,不需要再次注冊了!直接為您跳轉到登錄頁面進行登錄)</Script>");Response.Write("<script>window.location.href='logion.aspx'</script>");elseint power = 3;/如果已經證實要注冊的人是本校的學生,就直接給該學生賦予使用權限strin
21、gsql="insertintoadmin(login_name,login_pwd,admin_power)values。"+ stuName +HI III+ stuId +"',"+power+")"/Response.Write(sql);/Response.End();tryintflag=db.sqlEx(sql);if(flag>0)Response.Write("<Script>alert('注冊成功了!馬上為您跳轉到登錄頁面進行登錄')</Script>
22、");Response.Write( "<script>window.location.href='login.aspx'</script>");else Response.Write("<Script>alert('注冊失??!)</Script>");catch (System. Exception ee) Response.Write( "<script>alert('"+ee.Message.ToString()+ "
23、');</script>");else Response.Write("<Script>alert('你不是本校的學生,沒有注冊的權限!')</Script>");txtUserName.Text =,;;,;;txtstuID.Text =,;;txtUserName.Text =,;;txtstuID.Text=protectedvoidbtn_reset_Click(objectsender,EventArgse)用戶登錄功能的實現(xiàn)實現(xiàn)邏輯:用戶進入登錄頁面后,輸入相關的用戶名和密碼進行登錄,如果用
24、戶名和密碼都正確了,表示該用戶是合法用戶,就允許其進入系統(tǒng)的主頁進行相關的系統(tǒng)操作,如果用戶名和密碼的驗證不通過,就不允許其進入系統(tǒng),用戶輸入用戶名和密碼后,在后臺的處理過程中首先會從數(shù)據(jù)庫Attendance.mdf的admin表取出相應的用戶名和用戶輸入的用戶名進行匹配,如果用戶名匹配成功了,就把數(shù)據(jù)表中存儲的密碼和用戶輸入的密碼進行比對,如果密碼也驗證通過了,才允許用戶進入系統(tǒng)首頁,用戶名和密碼中任意一項匹配如果不通過,都不允許其登錄。登錄該系統(tǒng)時,有三種不同身份的使用者,分別為管理員,記錄員和學生,不同的身份就對應著不同的使用權限。使用權限的限制根據(jù)不同身份的登錄者生成不同的動態(tài)導航,
25、以此到達限定使用者的權限的目的。登錄頁面的設計如下:如果登錄的身份是管理員,則顯示如下的導航:G廣信機電職業(yè)技木學院Gun*&*JT£CbTSOiJ>.jiC-X«_L=GEQFma:-I、ERtASDELE:TRJCrr學生晚歸與考勒管理系統(tǒng)晚正音間ftflQJ噩里法山匕勒丁兌I於班級兆里護I區(qū)1維護I用戶管油I用省庠戶工匚匹;1|門I將后歡迎使用晚歸考勒管理信息系統(tǒng)如果登錄的身份是記錄員,則顯示如下的導航:G廣海機電取業(yè)技術號第GUMbJtJiUHULLLJbJbrJViCHHzHA>DRtlIf.善生晚歸與考勤管理系統(tǒng)-«w*i-&quo
26、t;9*-MTB*f.dfeMb»晚E-澗I晚歸匚豈I閆誓記|苦荀古囿1匯縣I泊桂拾甲士歡迎庫8E白”朋錄歡迎使用晚歸考勤管理信息系統(tǒng)如果登錄的身份是學生,則顯示如下的導航:廣命機電職業(yè)技末學悅6UrtC4fiFUukNGX)lECl-rJCiL&GlCALCOLLCQEOFMACtl*JEffVAWCLECTRierrV學生晚歸與考勤管理系統(tǒng)*-Ur,.卡fc.r.-舊古間如樂I5|黑勒古阿耳驕而而鞘用戶歡迎迷做蒼軀矍錄歡迎使用晚歸考勤管理信息系統(tǒng)對于管理員而言,其擁有的使用權限是最多的,但沒有晚歸登記和考勤登記的權限,登記權限只有記錄員才有,而對于學生而言,只有查看相關記
27、錄的權限,別的權限都沒有,因此通過這種根據(jù)不同登錄者的身份生成不同的導航就可以限定了登錄者的使用權限了。這里難就難在了如果根據(jù)登錄者的身份動態(tài)生成不同的導航信息。相關代碼如下:用戶登錄的后臺代碼:login.aspx.csusingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.
28、WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.Data.SqlClient;publicpartialclasslogin:System.Web.UI.PageDBdb=newDB();protectedvoidPage_Load(objectsender,EventArgse)ImageButton1.ImageUrl="image.aspx"讓頁面加載時就顯示驗證碼圖片protectedvoidbtnRegister_Click(objectsender,EventArgse)Respo
29、nse.Redirect("Register.aspx");/點擊注冊按鈕后,直接跳轉到注冊頁面,這里需要注意一個小問題,由于文本框已經使用了驗證控件,因此要想讓按鈕的觸發(fā)事件不觸發(fā)驗證控件時,把按鈕的CausesValidation屬性設置為false即可protectedvoidbtnLogin_Click(objectsender,EventArgse)stringcode=txtCheckCode.Text.Trim();獲取輸入的驗證碼stringusername=txtUserName.Text.Trim();/獲取輸入的用戶名stringpassword=tx
30、tPassword.Text.Trim();獲取輸入的密碼if(code!=(string)Session"image")先進行驗證碼的判斷,驗證碼輸入正確后在執(zhí)行其他的操作Response.Write("<script>alert('驗證碼輸入有誤!')</script>");Response.Write("<script>window.location.href='login.aspx'</script>");elsestringsql="s
31、electlogin_name,login_pwd,admin_powerfromadminwherelogin_name="'+username+""';SqlDataReaderdr=db.reDr(sql);if(dr.Read()if(string)dr"login_pwd"=password)Response.Write("<script>alert('用戶名和密碼正確!登錄成功!')</script>"););Response.Write("<
32、;script>window.location.href='Index.aspx'</script>"SessionSession"Power"=dr"admin_power"/使用Session存儲用戶的使用權限"username"=username;/存儲用戶名elseResponse.Write("<script>alert('密碼錯誤!')</script>" );Response.Write( "<scri
33、pt>window.location.href='login.aspx'</script>");else Response.Write(錄操作,即將為你跳轉到注冊頁面!"<script>alert('該用戶不存在,請先去注冊一個帳戶后再進行登')</script>" );Response.Write("<script>window.location.href='Register.aspx'</script>");在用戶進行登錄的時候
34、,使用Session對象存儲用戶名,并且根據(jù)用戶名從數(shù)據(jù)庫中取出該用戶的使用權限,也使用Session對象保存用戶的使用權限,登錄成功后,在系統(tǒng)的主頁的后臺處理代碼中取出保存在Session對象中的用戶名的相關的用戶權限,然后根據(jù)用戶權限來動態(tài)生成導航,相關的代碼如下:系統(tǒng)主頁的后臺處理代碼:index.aspx.csusingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;u
35、singSystem.Web.UI.WebControls;usingSystem.Web.Ul.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;publicpartialclassIndex:System.Web.UI.PageprotectedvoidPage_Load(objectsender,EventArgse)if(Session"username"!=null)這里使用Session對象對用戶是否已經進行登錄進行判斷,如果Session中的內容不為空,則表示用戶已經登錄stringuserStr=(st
36、ring)Session"username"取出保存在Session對象中的用戶名intpower=int.Parse(Session"Power".ToString();/取出保存在Session對象中的用戶使用權限標識stringnav=""if(power=1)根據(jù)登錄者的身份動態(tài)變化導航的顯示,以此限定不同身份的登錄者的使用權限nav="<td><ahref='latecheck.aspx'target='show_Content'>nav+="<
37、;td><ahref='latecount.aspx'target='show_Content'></a>|</td>"nav+="<td><ahref='attendcheck.aspx'target='show_Content'></a>|</td>"nav+="<td><ahref='attendcount.aspx'target='show_Conten
38、t'></a>|</td>"nav+="<td><ahref='updatedept.aspx'target='show_Content'></a>|</td>"nav+="<td><ahref='updateregion.aspx'target='show_Content'></a>|</td>"nav+="<td><a
39、href='updateadmin.aspx'target='show_Content'></a>|</td>"nav+="<td><ahref='exit.aspx'>注銷用戶</a></td>"elseif(power=2)nav="<td><ahref='latecheck.aspx'target='show_Content'>nav+="<td>
40、<ahref='latecount.aspx'target='show_Content'></a>|</td>"nav+="<td><ahref='latewrite.aspx'target='show_Content'></a>|</td>"nav+="<td><ahref='attendcheck.aspx'target='show_Content'>
41、;</a>|</td>"nav+="<td><ahref='attendcount.aspx'target='show_Content'>晚歸查詢</a>|</td>"晚歸匯總考勤查詢考勤匯總系/班級/專業(yè)維護區(qū)/門維護用戶管理晚歸查詢</a>|</td>"晚歸匯總晚歸登記考勤查詢考勤匯總</a>|</td>"nav+="<td><ahref='attendw
42、rite.aspx'target='show_Content'>考勤登記</a>|</td>"nav+="<td><ahref='exit.aspx'>注銷用戶</a></td>")elseif(power=3)nav="<td><ahref='latecheck.aspx'target='show_Content'>晚歸查詢</a>|</td>"n
43、av+="<td><ahref='latecount.aspx'target='show_Content'>晚歸匯總</a>|</td>"nav+="<td><ahref='attendcheck.aspx'target='show_Content'>考勤查詢</a>|</td>"nav+="<td><ahref='attendcount.aspx'ta
44、rget='show_Content'>考勤匯總</a>|</td>"nav+=)"<td><ahref='exit.aspx'>注銷用戶</a></td>"IblNav.Text =IblNav.Text +="<table><tr>"+nav+”</tr></table>""歡迎<fontcolor='red'>"+userSt
45、r+"</font>登錄")else/如果用戶沒有進行登錄,則直接跳轉到登錄頁面Response.Write("<script>alert('你還沒有進行系統(tǒng)的登錄,請先登錄后再使用本系統(tǒng)!')</script>");Response.Write("<script>window.location.href='login.aspx'</script>");)/Response.Write("<iframename='sho
46、w_Content'frameborder='1'width='800px'height='600px'scroll='no'></iframe>");向網(wǎng)頁中輸出一個框架lblContent.Text="<iframename='show_Content'frameborder='1'width='800px'height='600px'scroll='no'src='Welcome.asp
47、x'></iframe>"/讓框架在指定的Lable中顯示)到此,用戶注冊和登錄的功能模塊就全部實現(xiàn)了接下來將進入系統(tǒng)開發(fā)中的最核心的功能模塊部分的開發(fā):晚歸情況管理和考勤情況管理,這兩個部分是系統(tǒng)功能中最核心的兩個部分,也是最難實現(xiàn)的兩個部分,這兩個部分難就難在了查詢的部分,如何根據(jù)用戶的選擇查詢操作動態(tài)拼湊出SQL語句對數(shù)據(jù)庫進行操作,從而查詢出用戶想要的記錄。晚歸情況管理功能模塊的實現(xiàn)晚歸情況管理功能模塊主要有三部分,分別為晚歸登記,晚歸查詢,晚歸匯總。如下圖所示:晚歸情況管理晚歸匯總晚歸查詢晚歸登記實現(xiàn)晚歸登記功能latewrite.aspx頁面設計
48、如下:在數(shù)據(jù)庫的設計中,存儲晚歸情況的表為late表,late表的設計如下圖所示:亮歸情況記學從表中可以看到,late表存儲的信息為學生的學號(stu_id)、區(qū)/門編號(region_id)以及晚歸時間(late_time)和晚歸事由(late_intro)。記錄員在進行晚歸情加記錄時,首先要選擇的秦部,專業(yè),班級,區(qū)7門,姓名這些相關的學生的信息,然后寫上晚歸時間和晚歸事由后,點擊【記錄】按鈕,完成晚歸情況的登記。這里需要注意的地方是,記錄員選擇的系部名稱,專業(yè)名稱,班級名稱以及學生名稱這些信息是早就已經隨著數(shù)據(jù)庫的創(chuàng)建插入到相關的表中存放了,因此沒有必要再次把這些重復的信息寫入到數(shù)據(jù)庫中
49、,而且從存儲晚歸情況記錄的late表中也可以看出,late表并沒有定義有可以存儲系部,專業(yè),班級、區(qū)/門和姓名的字段,但可以看到,late表中存放有學生的學號(stu_id),區(qū)門的編號(region_id),當初進行數(shù)據(jù)庫設計時,就已經定義了late表中的stu_id(外鍵)字段和stuInfo表的stu_id(主鍵)字段之間的約束關系,因此可以通過late表的stu_id找到stuInfo表中對應著的stu_id所表示的學生,而stuInfo表的設計如十曲所示:一從學生信息表(stuInfo)的定義中可以看出,學生信息表中存放有系部的編號(dept_id)、專業(yè)編號(spc_id)以及(c
50、lass_id),這三個字段都作為外鍵與相應的department表的dept_id(主鍵)、spcieal表的spc_id(主鍵)以及class表的class_id(主鍵)建立起主鍵外鍵的約束關系,因此通過stuInfo表就可以找到與該血3學生相關的系部,專業(yè)以及所在的班級,這樣有關該晚歸學生的全部信息就可以通過多表聯(lián)合查詢從stuInfo表(得到學生姓名),class表(得到班級),spceial表(得到專業(yè))和department表(得到系部)得到。這就是建立起主鍵外鍵約束的好處,可以把表和表通過某種關系關聯(lián)起來,使之成為有一定依賴關系的表,從而保持了數(shù)據(jù)的完整性。晚歸情況記錄表(lat
51、e)中的region_id記錄了學生晚歸的區(qū)/門編號,通過該編號就可以找到存放在region表中對應的區(qū)/門信息。做這個功能模塊時,容易產生一個誤區(qū),會很自然地認為記錄員選擇的系部,專業(yè),班級,姓名,區(qū)/門以及填寫的晚歸時間和晚歸事由這些有關晚歸的信息全部都要寫入到數(shù)據(jù)庫里面,如果這樣想,那么這個功能模塊就沒有辦法做了,而且會越做越復雜,會產生很多重復的數(shù)據(jù),可能有的人會想到再創(chuàng)建一個表,專門用來存放這些信息,其實是完全沒有必要這樣做的。使用一個late表存放晚歸情況記錄即已經可以了。其它的系部,班級,專業(yè)等相關信息在別的表已經存放有了,因此沒有必要再次把這些信息寫入到數(shù)據(jù)庫中存放,造成數(shù)據(jù)的
52、冗余以及存儲空間的浪費。latewrite.aspx.cs相關的代碼如下:usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.Data.SqlC
53、lient;publicpartialclasslatewrite:System.Web.UI.PageDBdb=newDB();protectedvoidPage_Load(objectsender,EventArgse)if(!IsPostBack)stringsql="selectdept_id,dept_namefromdepartment"SqlDataReaderdr=db.reDr(sql);/獲取數(shù)據(jù)源,數(shù)據(jù)源來源于department表dp_dept.DataSource=dr;dp_dept.DataValueField=dp_dept.DataText
54、Field=dp_dept.DataBind();dp_dept.Items.Insert(0,/綁定數(shù)據(jù)源到dp_selectDept中"dept_id"給DropDownList1的下拉列表的項賦值"dept_name"/顯示給用戶看的文本/顯示數(shù)據(jù)newListItem("=請選擇系部=","");在第0個位置插入一個下拉項,顯示的DataTextField為"=請選擇系部=",下拉項的DataValueField為空dp_spc.Items.Insert(0,dp_class.Items
55、.Insert(0,dp_name.Items.Insert(0,newListItem("=請選擇專業(yè)=","");newListItem("=請選擇班級=","");newListItem("=請選擇姓名=");sql="selectregion_id,region_namefromregiondr=db.reDr(sql);dp_region.DataSource=dr;dp_region.DataValueField=dp_region.DataTextField=dp_reg
56、ion.DataBind();dp_region.Items.Insert(0,"region_id""region_name"newListItem("=請選擇區(qū)/門=","");protectedvoiddp_dept_SelectedIndexChanged(objectsender,EventArgse)stringdept_id=dp_dept.SelectedValue;明顯,意思為選中的值/獲取中選定的項的value,SelectedValue的意思很/注意:這里的判斷不要寫成if(dept_id!=
57、null)這樣寫會出錯的if(dept_id!="")/這里要進行判斷,如果選中的是第一項,即顯示文本為"=請選擇系部="這一項時,dept_id是沒有值的,即為空stringsql="selectspc_id,spc_namefromspecialwheredept_id="+dept_id;/查詢出與dept_id相等的記錄,這里的dept_id為整型,所以不用加單引號引起來SqlDataReaderdr=db.reDr(sql);/獲取數(shù)據(jù)源,數(shù)據(jù)源來源于special表dp_spc.DataSource=dr;dp_spc.D
58、ataTextField=dp_spc.DataValueField=dp_spc.DataBind();dp_spc.Items.Insert(0,/綁定數(shù)據(jù)源"spc_name"/顯示專業(yè)名稱給用戶看"spc_id"/把專業(yè)的id值賦值給下拉列表的項/顯示數(shù)據(jù)newListItem("=請選擇專業(yè)=","");else是為空的,所以要/如果dp_dept選中的是第一項"=請選擇系部=",此時的DataValueField中的項清空掉相應的把dp_spc,dp_class,dp_namedp_
59、spc.Items.Clear();dp_spc.Items.Insert(0,dp_class.items.Clear();dp_class.items.insert(0,/清空DropDownList2下拉列表的項 new Listitem ("=請選擇專業(yè) =",/清空DropDownList3下拉列表的項"");new Listitem ("=請選擇班級 =","");dp_name.Items.Clear();/清空下拉列表的項dp_name.Items.Insert(0,new Listitem (&q
60、uot;=請選擇姓名=","");protected void dp_spc_SelectedIndexChanged( object sender, EventArgs e)string spc_id = dp_spc.SelectedValue; if (spc_id !="")string sql = "select class_id,class_name from class where spc_id="SqlDataReader dr = db.reDr(sql);/獲取數(shù)據(jù)源,數(shù)據(jù)源來源于 class+ spc_
61、id;表dp_class.DataSource = dr;/綁定數(shù)據(jù)源到dp_class.DataTextField ="classname'dp_class.DataValueField = dp_class.DataBind();"classid"dp_class.Items.insert(0,new Listitem("=請選擇班級=","");elsedp_class.items.Clear();dp_class.items.insert(0,new Listitem("=請選擇班級=");protected void dp_class_SelectedindexChanged(object sender, EventArgs e)string class_id = dp_class.SelectedValue;if (class_id
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 代辦貸款合同范本
- 深圳市廠房出租合同范本
- 購買公司股份合同范本
- 殯葬服務協(xié)議書范本
- 水平定向鉆施工安全協(xié)議書范本
- 人教版數(shù)學七年級上冊1.5.3《近似數(shù)》聽評課記錄1
- 冀教版數(shù)學九年級上冊《反比例函數(shù)的圖象》聽評課記錄2
- 湘教版數(shù)學九年級下冊第1章《二次函數(shù)》聽評課記錄
- 河北省2024七年級道德與法治上冊第三單元珍愛我們的生命第八課生命可貴第2課時敬畏生命背記新人教版
- 百色市初中數(shù)學試卷
- 2023年上海青浦區(qū)區(qū)管企業(yè)統(tǒng)一招考聘用筆試題庫含答案解析
- 2023年高一物理期末考試卷(人教版)
- 2023版押品考試題庫必考點含答案
- 植物之歌觀后感
- 空氣能熱泵安裝示意圖
- 建筑工程施工質量驗收規(guī)范檢驗批填寫全套表格示范填寫與說明
- 2020年中秋國慶假日文化旅游市場安全生產檢查表
- 辦公家具項目實施方案、供貨方案
- 七年級英語下冊閱讀理解10篇
- 節(jié)后開工收心會
- 設計質量、進度保證措施
評論
0/150
提交評論