学生晚归与考勤管理信息系统开发文档_第1页
学生晚归与考勤管理信息系统开发文档_第2页
学生晚归与考勤管理信息系统开发文档_第3页
学生晚归与考勤管理信息系统开发文档_第4页
学生晚归与考勤管理信息系统开发文档_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学生晚归与考勤管理信息系统开发系统分析及设计3.1系统预期用户本系统的预预期用户户是任何何想了解解学生在在校的考考勤情况况的用户户。3.2功功能说明明学生晚归与与考勤管管理系统统是目前前广西机机电职业业技术校校园网在在线系统统之一。本软件将各个学院各个部门联系到一起,便于学生晚归、考勤的管理,同时,还可以让学生通过查询自己的晚归与考勤记录,了解到自己的纪律情况。在线图书销销售系统统要实现现的功能能模块主主要有::该系统分为为晚归情情况管理理、考勤勤情况管管理与后后台管理理三大功功能模块块。系统功能能模块的的划分图1系系统功能能架构图图(2)基基本处理理流程下图是系统统基本处处理流程程图。图2系统统基本处处理流程程3.3数数据库设设计本系统采用用SQLLSeerveer20005作作为后台台数据库库。根据据以上功功能,新新建一名名为Atttenndannce的的数据库库,其中中共包括括9个数数据表,分分别是部门表(ddepaartmmentt):专业信息表表(specciall):班级信息表表(claass)):学生信息表表(stuuInffo):区/门信息息表(rregiion)::晚归情况表表(laate)::考勤情况表表(atttenndannce)::考勤类型表表(atttenndtyype)::用户信息表表(addminn):各个数据表表的关系系(主要要是主键键与外键键的约束束关系)如如下图所所示:数据库创建建脚本参参考文件件:“学生晚晚归与考考勤管理理信息系系统数据据库建库库脚步..sqll”3.4数数据库连连接1、建议将将数据库库拷入网网站内的的Appp_Daata目目录内,然然后将数数据库连连接字符符串写入入到Weeb.cconffig,参考代码如下:<appSSetttinggs> <adddkeey="ConnnecctioonSttr"vallue=="Serrverr=.;;AtttachhDbFFileenamme=||DattaDiirecctorry|AAtteendaancee.mddf;IInteegraateddSeecurrityy=Trrue""/>></apppSetttinngs>>测试数据库库连接是是否正常常usinggSyysteem;usinggSyysteem.DDataa;usinggSyysteem.CConffiguurattionn;usinggSyysteem.CColllecttionns;usinggSyysteem.WWeb;;usinggSyysteem.WWeb..Seccuriity;;usinggSyysteem.WWeb..UI;;usinggSyysteem.WWeb..UI..WebbConntrools;;usinggSyysteem.WWeb..UI..WebbConntrools..WebbParrts;;usinggSyysteem.WWeb..UI..HtmmlCoontrrolss;usinggSyysteem.DDataa.SqqlClliennt;publiicpaartiialcclasssDBBConnnTeest:SSysttem..Webb.UII.Paage{proteecteedvooidPagge_LLoadd(obbjecctssendder,,EvventtArggsee){{strinngcconsstr=CConffiguurattionnMannageer.AAppSSetttinggs[""ConnnecctioonSttr"]];SqlCoonneectiionconnn==neewSqqlCoonneectiion((connstrr);connn.OOpenn();;//打开开数据库库连接Ressponnse..Wriite(("数据库库连接成成功!"");connn.CClosse());///关闭数数据库连连接Ressponnse..Wriite(("数据库库关闭成成功!"");}}}经验证,AAtteendaancee.mddf数据据库连接接正常2、将常用用数据库库操作代代码写入入公共类类DB中中,其中中包含以以下各自自定义方方法,参参考代码码如下::usinggSyysteem;usinggSyysteem.DDataa;usinggSyysteem.CConffiguurattionn;usinggSysstemm.Weeb;usinggSyysteem.WWeb..Seccuriity;;usinggSyysteem.WWeb..UI;;usinggSyysteem.WWeb..UI..WebbConntrools;;usinggSyysteem.WWeb..UI..WebbConntrools..WebbParrts;;usinggSyysteem.WWeb..UI..HtmmlCoontrrolss;usinggSyysteem.DDataa.SqqlClliennt;///<ssummmaryy>///DDB类为为一个专专门进行行数据库库操作的的类///包包括连接接数据库库,更新新数据库库,查询询数据库库这些操操作///<//summmarry>publiiccllasssDB{///<ssummmaryy>///DDB())为DBB类的构构造方法法///<//summmarry>publiicDDB()) { }///<ssummmaryy>///定定义返回回数据库库连接对对象SqqlCoonneectiion方方法///<//summmarry>///<rretuurnss>///SqllConnnecctioon对象象///<//retturnns>publiicSqqlCoonneectiiongettConn(){StrinngsstrCCon=CConffiguurattionnMannageer.AAppSSetttinggs[""ConnnecctioonSttr"]];///从配置置文件wweb..coffig里里面读取取数据库库的连接接字符串串returrnneewSqqlCoonneectiion((strrConn);///返回回数据库库连接对对象}}///<ssummmaryy>///定义更更新数据据库的方方法///<//summmarry>///<pparaamnnamee="ccmdSStr"">///参数ccmdSStr为为要执行行更新数数据库的的SQLL语句,包包含增加加,修改改,删除除这三种种SQLL语句///<//parram>>///<rretuurnss>///数据库库更新成成功则返返回1,更更新失败败则返回回0///<//retturnns>publiicinntssqlEEx(sstriingcmddStrr){{SqlCoonneectiionconn=gettConn();;coon.OOpenn();;//打打开数据据库连接接SqlCoommaandcmdd=newwSqllCommmannd(ccmdSStr,,conn);///创建建执行SSQL语语句的命命令对象象SqllCommmanndtry{cmmd.EExeccuteeNonnQueery(();returrn11;///成功返返回1}catchh{returrn00;///失败返返回0}}finallly{coon.DDispposee();;//释释放资源源}}}///<ssummmaryy>///定定义查询询数据库库信息的的方法///<//summmarry>///<pparaamnnamee="ccmdSStr"">///参数ccmdSStr为为执行查查询时的的书写的的SQLL语句///<//parram>>///<rretuurnss><//retturnns>publiicDaataTTabllerreDtt(sttrinngccmdSStr)){SqlCoonneectiionconn=gettConn();;//连连接数据据库conn.Oppen(();SqlDaataAAdappterrdaa=newwSqllDattaAddaptter((cmddStrr,coon);;//创创建数据据适配器器对象DataSSetds=nnewDDataaSett();;//创创建数据据集对象象da..Filll(dds);;//将将保存在在数据适适配器对对象中的的数据填填充到数数据集对对象中returrn((ds..Tabbless[0]]);///返回回数据集集对象中中有记录录的那个个表}}///<ssummmaryy>///定定义阅读读数据的的方法///<//summmarry>///<pparaamnnamee="sstr"">///参数sstr为为执行查查询操作作时的SSQL语语句///<//parram>>///<rretuurnss>///返回一一个数据据阅读对对象///<//retturnns>publiicSqqlDaataRReadderreDDr(sstriingstrr){{SqlCoonneectiionconn=gettConn();;conn.Oppen(();SqlCoommaandcmdd=newwSqllCommmannd(sstr,,conn);SqlDaataRReadderdr=ccmd..ExeecutteReeadeer(CCommmanddBehhaviior..ClooseCConnnecttionn);///通过过调用CCommmandd对象的的ExeecutteReeadeer())方法创创建DaataRReadder对对象,CCommmanddBehhaviior..ClooseCConnnecttionn表示??returrnddr;}}}功能模块的的实现用户注册功功能的实实现:实现逻辑::用户注册信信息写入入到addminn表,此此注册功功能是专专门针对对本校的的学生开开发注册册的,如如果不是是本校的的学生,是是没有注注册的权权限的,所所有注册册时要根根据学生生输入的的真实姓姓名和学学号进行行注册,如如果找不不到对应应的学生生的名字字,就不不允许用用户进行行注册,如如果用户户已经注注册过一一次了,就就直接告告诉用户户已经注注册过了了,无需需再次注注册了,并并自动为为用户跳跳转到登登录页面面,如果果用户是是第一次次注册,就就把用户户的注册册信息写写入到aadmiin表中中,注册册成功后后也跳转转到登录录页面让让用户进进行登录录。用户注册页页面Reegissterr.asspx如如下图所所示:学生进入此此页面进进行注册册,正确确填写了了学生姓姓名和学学生学号号以及验验证码了了以后,点点击提交交按钮完完成帐户户注册,而而在后台台,要进进行数据据的合法法性判断断,首先先进行的的是验证证码的正正确性判判断,把把用户输输入的验验证码和和保存的的Sesssioon对象象中的验验证码取取出来作作比较,如如果验证证码输入入正确才才继续执执行检查查该注册册用户是是否是本本校的学学生,以以及该用用户是否否已经被被注册了了,后台台的处理理代码如如下所示示:Regissterr.asspx..csusinggSyysteem;usinggSyysteem.DDataa;usinggSyysteem.CConffiguurattionn;usinggSyysteem.CColllecttionns;usinggSyysteem.WWeb;;usinggSyysteem.WWeb..Seccuriity;;usinggSyysteem.WWeb..UI;;usinggSyysteem.WWeb..UI..WebbConntrools;;usinggSyysteem.WWeb..UI..WebbConntrools..WebbParrts;;usinggSyysteem.WWeb..UI..HtmmlCoontrrolss;usinggSyysteem.DDataa.SqqlClliennt;publiicpaartiialcclassssttudeent__Reggistter:SSysttem..Webb.UII.Paage{DBdbb=newwDB());proteecteedvooidPagge_LLoadd(obbjecctssendder,,EvventtArggsee){{this..ImaageBButtton11.ImmageeUrll="immagee.asspx"";//iimagge.aaspxx是一个个显示验验证码的的Webb页面}}proteecteedvooidbtnn_suubmiit_CClicck(oobjeectsennderr,EEvenntArrgse){{strinngccodee=txttCheeckCCodee.Teext..Triim());if(ccodee!==(sstriing))Sesssioon[""imaage""]){Reespoonsee.Wrritee("<<Scrriptt>allertt('验验证码输输入错误误,请检检查后重重新输入入!'))</SScriipt>>");;//Reespoonsee.Reedirrectt("RRegiisteer.aaspxx");;如果使使用这种种跳转方方式,那那么上面面的jaavasscriipt是是无法运运行的,因因为还没没有来得得及运行行就页面面就已经经跳转了了Reespoonsee.Wrritee("<<scrriptt>wiindoow.llocaatioon.hhreff='RRegiisteer.aaspxx'<//scrriptt>"));}else{strinngsstu__Namme==txxtUsserNNamee.Teext..Triim());strinngsstu__Id=ttxtsstuIID.TTextt.Trrim(();strinngssql22="seelecctsstu__nammeffrommsttuInnfowheerestuu_naame=='"++stuu_Naame++"'"";//使用用这条SSQL语语句检查查要注册册的人是是否是本本校的学学生,如如果是,才才允许其其注册,如如果不是是,就不不允许其其注册SqlDaataRReadderdr=ddb.rreDrr(sqql2));if(ddr.RReadd())){ddr.CClosse());///关闭SqqlDaataRReadderstrinngssq=="sseleect*ffrommaddminnwhhereelooginn_naame=='"+sstu__Namme++"''";//如果果已经证证实是本本校的学学生,就就再判断断该学生生是否已已经注册册过了ddr=ddb.rreDrr(sqq);///再次次使用SSqlDDataaReaaderrif(ddr.RReadd())){{Ressponnse..Wriite(("<SScriipt>>aleert(('你已已经注册册过了,不不需要再再次注册册了!直直接为您您跳转到到登录页页面进行行登录'')<//Scrriptt>"));Ressponnse..Wriite(("<sscriipt>>winndoww.loocattionn.hrref=='loogioon.aaspxx'<//scrriptt>"));}}else{intppoweer==3;;//如果果已经证证实要注注册的人人是本校校的学生生,就直直接给该该学生赋赋予使用用权限strinngssql=""insserttinntoadmmin((loggin__namme,llogiin_ppwd,,admmin__powwer))vaaluees(''"++sttu_NNamee+"',,'"+sstu__Id+""',""+poowerr+"))";//Ressponnse..Wriite((sqll);//Ressponnse..Endd();;try{intfflagg=db..sqllEx((sqll);if(fflagg>0){RRespponsse.WWritte(""<Sccrippt>aalerrt(''注册成成功了!!马上为为您跳转转到登录录页面进进行登录录')<</Sccrippt>"");RRespponsse.WWritte(""<sccrippt>wwinddow..loccatiion..hreef=''loggin..asppx'<</sccrippt>"");}else{RRespponsse.WWritte(""<Sccrippt>aalerrt(''注册失失败!'')<//Scrriptt>"));}}catchh(SSysttem..Exccepttionneee){{Reespoonsee.Wrritee("<<scrriptt>allertt('""+eee.Meessaage..ToSStriing(()+""');;</sscriipt>>");;}}}}else{RRespponsse.WWritte(""<Sccrippt>aalerrt(''你不是是本校的的学生,没没有注册册的权限限!'))</SScriipt>>");;ttxtUUserrNamme.TTextt="";ttxtsstuIID.TTextt="";}}}}proteecteedvooidbtnn_reesett_Cllickk(obbjecctssendder,,EvventtArggsee){{txttstuuID..Texxt==""";txttUseerNaame..Texxt==""";}}}用户登录功功能的实实现 实现逻辑辑:用户户进入登登录页面面后,输输入相关关的用户户名和密密码进行行登录,如如果用户户名和密密码都正正确了,表表示该用用户是合合法用户户,就允允许其进进入系统统的主页页进行相相关的系系统操作作,如果果用户名名和密码码的验证证不通过过,就不不允许其其进入系系统,用用户输入入用户名名和密码码后,在在后台的的处理过过程中首首先会从从数据库库Atttenddancce.mmdf的的admmin表表取出相相应的用用户名和和用户输输入的用用户名进进行匹配配,如果果用户名名匹配成成功了,就就把数据据表中存存储的密密码和用用户输入入的密码码进行比比对,如如果密码码也验证证通过了了,才允允许用户户进入系系统首页页,用户户名和密密码中任任意一项项匹配如如果不通通过,都都不允许许其登录录。登录录该系统统时,有有三种不不同身份份的使用用者,分分别为管管理员,记记录员和和学生,不不同的身身份就对对应着不不同的使使用权限限。使用用权限的的限制根根据不同同身份的的登录者者生成不不同的动动态导航航,以此此到达限限定使用用者的权权限的目目的。 登录页面面的设计计如下::如果登录的的身份是是管理员员,则显显示如下下的导航航:如果登录的的身份是是记录员员,则显显示如下下的导航航:如果登录的的身份是是学生,则则显示如如下的导导航:对于管理员员而言,其其拥有的的使用权权限是最最多的,但但没有晚晚归登记记和考勤勤登记的的权限,登登记权限限只有记记录员才才有,而而对于学学生而言言,只有有查看相相关记录录的权限限,别的的权限都都没有,因因此通过过这种根根据不同同登录者者的身份份生成不不同的导导航就可可以限定定了登录录者的使使用权限限了。这这里难就就难在了了如果根根据登录录者的身身份动态态生成不不同的导导航信息息。相关关代码如如下:用户登录的的后台代代码:loginn.asspx..csusinggSyysteem;usinggSyysteem.DDataa;usinggSyysteem.CConffiguurattionn;usinggSyysteem.CColllecttionns;usinggSyysteem.WWeb;;usinggSyysteem.WWeb..Seccuriity;;usinggSyysteem.WWeb..UI;;usinggSyysteem.WWeb..UI..WebbConntrools;;usinggSyysteem.WWeb..UI..WebbConntrools..WebbParrts;;usinggSyysteem.WWeb..UI..HtmmlCoontrrolss;usinggSyysteem.DDataa.SqqlClliennt;publiicpaartiialcclassslooginn:Sysstemm.Weeb.UUI.PPagee{DBdbb=newwDB());proteecteedvooidPagge_LLoadd(obbjecctssendder,,EvventtArggsee){{ImaageBButtton11.ImmageeUrll="immagee.asspx"";//让页页面加载载时就显显示验证证码图片片}}proteecteedvooidbtnnReggistter__Cliick((objjecttseendeer,EveentAArgsse)){{Ressponnse..Reddireect(("Reegissterr.asspx"");///点击注注册按钮钮后,直直接跳转转到注册册页面,这这里需要要注意一一个小问问题,由由于文本本框已经经使用了了验证控控件,因因此要想想让按钮钮的触发发事件不不触发验验证控件件时,把把按钮的的CauusessVallidaatioon属性性设置为为fallse即即可}}proteecteedvooidbtnnLoggin__Cliick((objjecttseendeer,EveentAArgsse)){{strinngccodee=txttCheeckCCodee.Teext..Triim());///获取输输入的验验证码strinnguuserrnamme==txxtUsserNNamee.Teext..Triim());///获取输输入的用用户名strinngppasssworrd==txxtPaasswwordd.Teext..Triim());///获取输输入的密密码if(ccodee!==(sstriing))Sesssioon[""imaage""])///先进行行验证码码的判断断,验证证码输入入正确后后在执行行其他的的操作{Reespoonsee.Wrritee("<<scrriptt>allertt('验验证码输输入有误误!'))</sscriipt>>");;Reespoonsee.Wrritee("<<scrriptt>wiindoow.llocaatioon.hhreff='llogiin.aaspxx'<//scrriptt>"));}else{strinngssql=""sellecttlooginn_naame,,loggin__pwdd,addminn_poowerrfrromadmminwheereloggin__namme=''"+uuserrnamme+""'";;SqlDaataRReadderdr=ddb.rreDrr(sqql);;if(ddr.RReadd())){{if(((strringg)drr["llogiin_ppwd""]===ppasssworrd){Reespoonsee.Wrritee("<<scrriptt>allertt('用用户名和和密码正正确!登登录成功功!'))</sscriipt>>");;Reespoonsee.Wrritee("<<scrriptt>wiindoow.llocaatioon.hhreff='IIndeex.aaspxx'<//scrriptt>"));Seessiion[["Poowerr"]=ddr[""admmin__powwer""];///使用Seessiion存存储用户户的使用用权限Seessiion[["ussernnamee"]=uuserrnamme;///存储储用户名名}else{Reespoonsee.Wrritee("<<scrriptt>allertt('密密码错误误!'))</sscriipt>>");;Reespoonsee.Wrritee("<<scrriptt>wiindoow.llocaatioon.hhreff='llogiin.aaspxx'<//scrriptt>"));}}else{Ressponnse..Wriite(("<sscriipt>>aleert(('该用用户不存存在,请请先去注注册一个个帐户后后再进行行登录操操作,即即将为你你跳转到到注册页页面!'')<//scrriptt>"));Ressponnse..Wriite(("<sscriipt>>winndoww.loocattionn.hrref=='Reegissterr.asspx''</sscriipt>>");;}}}}}}在用户进行行登录的的时候,使使用Seessiion对对象存储储用户名名,并且且根据用用户名从从数据库库中取出出该用户户的使用用权限,也也使用SSesssionn对象保保存用户户的使用用权限,登登录成功功后,在在系统的的主页的的后台处处理代码码中取出出保存在在Sesssioon对象象中的用用户名的的相关的的用户权权限,然然后根据据用户权权限来动动态生成成导航,相相关的代代码如下下:系统主页的的后台处处理代码码:indexx.asspx..csusinggSyysteem;usinggSyysteem.DDataa;usinggSyysteem.CConffiguurattionn;usinggSysstemm.Coolleectiionss;usinggSyysteem.WWeb;;usinggSyysteem.WWeb..Seccuriity;;usinggSyysteem.WWeb..UI;;usinggSyysteem.WWeb..UI..WebbConntrools;;usinggSyysteem.WWeb..UI..WebbConntrools..WebbParrts;;usinggSyysteem.WWeb..UI..HtmmlCoontrrolss;publiicpaartiialcclasssInndexx:Sysstemm.Weeb.UUI.PPagee{proteecteedvooidPagge_LLoadd(obbjecctssendder,,EvventtArggsee){{if(SSesssionn["uuserrnamme"]]!==nuull))//这里里使用SSesssionn对象对对用户是是否已经经进行登登录进行行判断,如如果Seessiion中中的内容容不为空空,则表表示用户户已经登登录{strinnguuserrStrr=(sttrinng)SSesssionn["uuserrnamme"]];///取出保保存在SSesssionn对象中中的用户户名intppoweer==innt.PParsse(SSesssionn["PPoweer"]].TooStrringg()));///取出保保存在SSesssionn对象中中的用户户使用权权限标识识strinngnnav=""";if(ppoweer===11)///根据登登录者的的身份动动态变化化导航的的显示,以以此限定定不同身身份的登登录者的的使用权权限{nnav=""<tdd><aahrref=='laatecchecck.aaspxx'taargeet=''shoow_CConttentt'>晚晚归查询询</aa>|<</tdd>";;nnav+="<ttd><<ahhreff='llateecouunt..asppx'tarrgett='sshoww_Coonteent''>晚归归汇总<</a>>|<//td>>";nnav+="<ttd><<ahhreff='aatteendcchecck.aaspxx'ttargget=='shhow__Conntennt'>>考勤查查询<//a>||</ttd>"";nnav+="<ttd><<ahhreff='aatteendccounnt.aaspxx'tarrgett='sshoww_Coonteent''>考勤勤汇总<</a>>|<//td>>";nnav+="<ttd><<ahhreff='uupdaateddeptt.asspx''ttargget=='shhow__Conntennt'>>系/班级/专业维维护<//a>||</ttd>"";nnav+="<ttd><<ahhreff='uupdaaterregiion..asppx'tarrgett='sshoww_Coonteent''>区/门维护护</aa>|<</tdd>";;nnav+="<ttd><<ahhreff='uupdaateaadmiin.aaspxx'ttargget=='shhow__Conntennt'>>用户管管理<//a>||</ttd>"";nnav+="<ttd><<ahhreff='eexitt.asspx''>注销销用户<</a>></ttd>"";}elseiif((powwer==2){nnav=""<tdd><aahrref=='laatecchecck.aaspxx'taargeet=''shoow_CConttentt'>晚晚归查询询</aa>|<</tdd>";;nnav+="<ttd><<ahhreff='llateecouunt..asppx'tarrgett='sshoww_Coonteent''>晚归归汇总<</a>>|<//td>>";nnav+="<ttd><<ahhreff='llateewriite..asppx'tarrgett='sshoww_Coonteent''>晚归归登记<</a>>|<//td>>";nnav+="<ttd><<ahhreff='aatteendcchecck.aaspxx'ttargget=='shhow__Conntennt'>>考勤查查询<//a>||</ttd>"";nnav+="<ttd><<ahhreff='aatteendccounnt.aaspxx'tarrgett='sshoww_Coonteent''>考勤勤汇总<</a>>|<//td>>";nnav+="<ttd><<ahhreff='aatteendwwritte.aaspxx'ttargget=='shhow__Conntennt'>>考勤登登记<//a>||</ttd>"";nnav+="<ttd><<ahhreff='eexitt.asspx''>注销销用户<</a>></ttd>"";}elseiif((powwer==3){nnav=""<tdd><aahrref=='laatecchecck.aaspxx'taargeet=''shoow_CConttentt'>晚晚归查询询</aa>|<</tdd>";;nnav+="<ttd><<ahhreff='llateecouunt..asppx'tarrgett='sshoww_Coonteent''>晚归归汇总<</a>>|<//td>>";nnav+="<ttd><<ahhreff='aatteendcchecck.aaspxx'ttargget=='shhow__Conntennt'>>考勤查查询<//a>||</ttd>"";nnav+="<ttd><<ahhreff='aatteendccounnt.aaspxx'tarrgett='sshoww_Coonteent''>考勤勤汇总<</a>>|<//td>>";nnav+="<ttd><<ahhreff='eexitt.asspx''>注销销用户<</a>></ttd>"";}lbblNaav.TTextt="<ttablle><<tr>>"+nnav++"<//tr>></ttablle>"";llblNNav..Texxt++=""欢迎<ffonttcoolorr='rred''>"+uuserrStrr+"<//fonnt>登登录";}else{///如果用用户没有有进行登登录,则则直接跳跳转到登登录页面面Reespoonsee.Wrritee("<<scrriptt>allertt('你你还没有有进行系系统的登登录,请请先登录录后再使使用本系系统!'')<//scrriptt>"));Reespoonsee.Wrritee("<<scrriptt>wiindoow.llocaatioon.hhreff='llogiin.aaspxx'<//scrriptt>"));}//Ressponnse..Wriite(("<iifraamenamme=''shoow_CConttentt'fframmeboordeer=''1'widdth=='8000pxx'hheigght=='6000pxx'sscrooll=='noo'><</ifframme>"");向向网页中中输出一一个框架架lbllConntennt.TTextt="<iifraamenamme=''shoow_CConttentt'fframmeboordeer=''1'widdth=='8000pxx'hheigght=='6000pxx'sscrooll=='noo'ssrc=='Weelcoome..asppx'>></iifraame>>";//让框框架在指指定的LLablle中显显示}}}到此,用户户注册和和登录的的功能模模块就全全部实现现了接下来将进进入系统统开发中中的最核核心的功功能模块块部分的的开发::晚归情情况管理理和考勤勤情况管管理,这这两个部部分是系系统功能能中最核核心的两两个部分分,也是是最难实实现的两两个部分分,这两两个部分分难就难难在了查查询的部部分,如如何根据据用户的的选择查查询操作作动态拼拼凑出SSQL语语句对数数据库进进行操作作,从而而查询出出用户想想要的记记录。晚归情况管管理功能能模块的的实现晚归情况管管理功能能模块主主要有三三部分,分分别为晚晚归登记记,晚归归查询,晚晚归汇总总。如下下图所示示:晚归情况管理晚归情况管理晚归登记晚归查询晚归汇总实现晚归登登记功能能latewwritte.aaspxx页面设设计如下下:在数据库的的设计中中,存储储晚归情情况的表表为laate表表,laate表表的设计计如下图图所示::从表中可以以看到,llatee表存储储的信息息为学生生的学号号(sttu_iid)、区区/门编编号(rregiion__id))以及晚晚归时间间(laate__timme)和和晚归事事由(llatee_inntroo)。记记录员在在进行晚晚归情况况记录时时,首先先要选择择的系部部,专业业,班级级,区//门,姓姓名这些些相关的的学生的的信息,然然后写上上晚归时时间和晚晚归事由由后,点点击【记记录】按按钮,完完成晚归归情况的的登记。这这里需要要注意的的地方是是,记录录员选择择的系部部名称,专专业名称称,班级级名称以以及学生生名称这这些信息息是早就就已经随随着数据据库的创创建插入入到相关关的表中中存放了了,因此此没有必必要再次次把这些些重复的的信息写写入到数数据库中中,而且且从存储储晚归情情况记录录的laate表表中也可可以看出出,laate表表并没有有定义有有可以存存储系部部,专业业,班级级、区//门和姓姓名的字字段,但但可以看看到,llatee表中存存放有学学生的学学号(sstu__id)),区门门的编号号(reegioon_iid),当当初进行行数据库库设计时时,就已已经定义义了laate表表中的sstu__id((外键))字段和和stuuInffo表的的stuu_idd(主键键)字段段之间的的约束关关系,因因此可以以通过llatee表的sstu__id找找到sttuInnfo表表中对应应着的sstu__id所所表示的的学生,而而stuuInffo表的的设计如如下图所所示:从学生信息息表(sstuIInfoo)的定定义中可可以看出出,学生生信息表表中存放放有系部部的编号号(deept__id))、专业业编号((spcc_idd)以及及(cllasss_idd),这这三个字字段都作作为外键键与相应应的deeparrtmeent表表的deept__id((主键))、sppcieeal表表的sppc_iid(主主键)以以及cllasss表的cclasss_iid(主主键)建建立起主主键外键键的约束束关系,因因此通过过stuuInffo表就就可以找找到与该该晚归学学生相关关的系部部,专业业以及所所在的班班级,这这样有关关该晚归归学生的的全部信信息就可可以通过过多表联联合查询询从sttuInnfo表表(得到到学生姓姓名),,claass表表(得到到班级)),sppceiial表表(得到到专业))和deeparrtmeent表表(得到到系部))得到。这这就是建建立起主主键外键键约束的的好处,可可以把表表和表通通过某种种关系关关联起来来,使之之成为有有一定依依赖关系系的表,从从而保持持了数据据的完整整性。晚晚归情况况记录表表(laate))中的rregiion__id记记录了学学生晚归归的区//门编号号,通过过该编号号就可以以找到存存放在rregiion表表中对应应的区//门信息息。做这这个功能能模块时时,容易易产生一一个误区区,会很很自然地地认为记记录员选选择的系系部,专专业,班班级,姓姓名,区区/门以以及填写写的晚归归时间和和晚归事事由这些些有关晚晚归的信信息全部部都要写写入到数数据库里里面,如如果这样样想,那那么这个个功能模模块就没没有办法法做了,而而且会越越做越复复杂,会会产生很很多重复复的数据据,可能能有的人人会想到到再创建建一个表表,专门门用来存存放这些些信息,其其实是完完全没有有必要这这样做的的。使用用一个llatee表存放放晚归情情况记录录即已经经可以了了。其它它的系部部,班级级,专业业等相关关信息在在别的表表已经存存放有了了,因此此没有必必要再次次把这些些信息写写入到数数据库中中存放,造造成数据据的冗余余以及存存储空间间的浪费费。latewwritte.aaspxx.css相关的的代码如如下:usinggSyysteem;usinggSyysteem.DDataa;usinggSyysteem.CConffiguurattionn;usinggSyysteem.CColllecttionns;usinggSyysteem.WWeb;;usinggSyysteem.WWeb..Seccuriity;;usinggSyysteem.WWeb..UI;;usinggSyysteem.WWeb..UI..WebbConntrools;;usinggSyysteem.WWeb..UI..WebbConntrools..WebbParrts;;usinggSyysteem.WWeb..UI..HtmmlCoontrrolss;usinggSyysteem.DDataa.SqqlClliennt;publiicpaartiialcclassslaatewwritte::Syysteem.WWeb..UI..Pagge{DBdbb=newwDB());proteecteedvooidPagge_LLoadd(obbjecctssendder,,EvventtArggsee){{if(!!IsPPosttBacck){strinngssql=""sellecttdeept__id,,deppt_nnameefrromdepparttmennt";;SqlDaataRReadderdr=ddb.rreDrr(sqql);;//获取取数据源源,数据据源来源源于deeparrtmeent表表dpp_deept..DattaSoourcce==drr;///绑定数数据源到到dp__sellecttDeppt中dpp_deept..DattaVaalueeFieeld=""deppt_iid";;//给DroopDoownLListt1的下下拉列表表的项赋赋值dpp_deept..DattaTeextFFielld=="ddeptt_naame"";//显示示给用户户看的文文本dpp_deept..DattaBiind(();///显示示数据ddp_ddeptt.Ittemss.Innserrt(00,nnewLListtIteem("===请选择择系部===",,"""));;//在第第0个位置置插入一一个下拉拉项,显显示的DDataaTexxtFiieldd为"===请选择择系部===",下下拉项的的DattaVaalueeFieeld为为空dpp_sppc.IItemms.IInseert((0,newwLisstIttem(("===请选择择专业===",,"""));;dpp_cllasss.Ittemss.Innserrt(00,nnewLListtIteem("===请选择择班级===",,"""));;dpp_naame..Iteems..Inssertt(0,,newwLisstIttem(("===请选择择姓名===")));sqql=="sseleectreggionn_idd,reegioon_nnameefrromreggionn";drr=db..reDDr(ssql));dpp_reegioon.DDataaSouurcee=dr;;dpp_reegioon.DDataaVallueFFielld=="rregiion__id"";dpp_reegioon.DDataaTexxtFiieldd="reegioon_nnamee";dpp_reegioon.DDataaBinnd());dpp_reegioon.IItemms.IInseert((0,newwLisstIttem(("===请选择择区/门=="","""));;}}}proteecteedvooiddp__deppt_SSeleecteedInndexxChaangeed(oobjeectsennderr,EEvenntArrgse){{strinngddeptt_idd=dp__deppt.SSeleecteedVaaluee;///获取中中选定的的项的vvaluue,SellecttedVValuue的意意思很明明显,意意思为选选中的值值//注意::这里的的判断不不要写成成if((deppt_iid!==nulll)这这样写会会出错的的if(ddeptt_idd!==""")//这里里要进行行判断,如如果选中中的是第第一项,即即显示文文本为“==请选选择系部部==”这一项项时,ddeptt_idd是没有有值的,即即为空{strinngssql=""sellecttsppc_iid,sspc__nammeffrommsppeciialwheeredeppt_iid=""+deppt_iid;///查询询出与ddeptt_idd相等的的记录,这这里的ddeptt_idd为整型型,所以以不用加加单引号号引起来来SqlDaataRReadderdr=ddb.rreDrr(sqql);;//获取取数据源源,数据据源来源源于sppeciial表表dpp_sppc.DDataaSouurcee=dr;;//绑定定数据源源dpp_sppc.DDataaTexxtFiieldd="sppc_nnamee";//显示示专业名名称给用用户看dpp_sppc.DDataaVallueFFielld=="sspc__id"";//把专专业的iid值赋赋值给下下拉列表表的项dpp_sppc.DDataaBinnd());///显示数数据dpp_sppc.IItemms.IInseert((0,newwLisstIttem(("===请选择择专业===",,"""));;}else{///如果dpp_deept选选中的是是第一项项“==请选选择系部部==”,此时时的DaataVValuueFiieldd是为空空的,所所以要相相应的把把dp__spcc,dpp_cllasss,dpp_naame中中的项清清空掉dpp_sppc.IItemms.CCleaar());///清空DDroppDowwnLiist22下拉列列表的项项dpp_sppc.IItemms.IInseert((0,newwLisstIttem(("===请选择择专业===",,"""));;dpp_cllasss.Ittemss.Cllearr();;//清空空DrropDDownnLisst3下下拉列表表的项dp__claass..Iteems..Inssertt(0,,neewLiistIItemm("===请选择择班级===",,"""));;dpp_naame..Iteems..Cleear(();///清空空下拉列列表的项项dpp_naame..Iteems..Inssertt(0,,neewLiistIItemm("===请选择择姓名===",,"""));;}}}proteecteedvooiddp__spcc_SeeleccteddInddexCChanngedd(obbjecctssendder,,EvventtArggsee){{strinngsspc__id=ddp_sspc..SellecttedVValuue;if(sspc__id!=""){strinngssql=""sellecttcllasss_idd,cllasss_naamefroomcclassswwherresspc__id=="++sppc_iid;SqlDaataRReadderdr=ddb.rreDrr(sqql);;//获取取数据源源,数据据源来源源于cllasss表dpp_cllasss.DaataSSourrce=ddr;///绑定定数据源源到dpp_cllasss.DaataTTexttFieeld=""claass__namme";;dpp_cllasss.DaataVValuueFiieldd="cllasss_idd";dpp_cllasss.DaataBBindd();;dpp_cllasss.Ittemss.Innserrt(00,nnewLListtIteem("===请选择择班级===",,"""));;}else{dpp_cllasss.Ittemss.Cllearr();;dpp_cllasss.Ittemss.Innserrt(00,nnewLListtIteem("===请选择择班级===")));}}}proteecteedvooiddp__claass__SellecttedIIndeexChhangged((objjecttseendeer,EveentAArgsse)){{strinngcclasss_iid==dpp_cllasss.SeeleccteddVallue;;if(cclasss_iid!!="""){strinngssql=""sellecttsttu_iid,sstu__nammeffrommsttuInnfowheereclaass__id=="++cllasss_idd;SqlDaataRReadderdr=ddb.rreDrr(sqql);;//获取取数据源源,数据据源来源源于sttuInnfo表表dpp_naame..DattaSoourcce==drr;///绑定数数据源dpp_naame..DattaTeextFFielld=="sstu__namme";;dpp_naame..DattaVaalueeFieeld=""stuu_idd";dpp_naame..DattaBiind(();dpp_naame..Iteems..Inssertt(0,,neewLiistIItemm("===请选择择姓名===",,"""));;}else{dp__namme.IItemms.CCleaar());///清空下下拉列表表的项dpp_naame..Iteems..Inssertt(0,,neewLiistIItemm("===请选择择姓名===",,"""));;}}}proteecteedvooidbtnn_reecorrd_CClicck(oobjeectsennderr,EEvenntArrgse){{DateTTimeelaateTTimee=DatteTiime..Parrse((txttLatteTiime..Texxt.TTrimm()));///获取从从文本框框输入的的晚归时时间字符符串,并并把字符符串转换换成真正正的时间间类型strinngllateeInttro=ttxtCConttentt.Teext..Triim());///获取输输入的晚晚归事由由,Trrim(()方法法的作用用是截断断字符串串左右两两边的空空格strinngsstuIId==dp__namme.SSeleecteedVaaluee;///从选中中的dpp_naame的的项的vvaluue获取取到sttu_iidstrinngrregiionIId==dpp_reegioon.SSeleecteedVaaluee;///从选中中的dpp_reegioon的项项的vaaluee获取到到reggionn_iddstrinngssql=""insserttinntolatte(sstu__id,,reggionn_idd,laate__timme,llatee_inntroo)vvaluues(('"+sstuIId++"'',"+rregiionIId++",,'"+llateeTimme++"'','""+latteInntroo+"'))";try{intfflagg=db..sqllEx((sqll);if(fflagg>0){RRespponsse.WWritte(""<sccrippt>aalerrt(''登记成成功!'')<//scrriptt>"));ttxtCConttentt.Teext=""";ttxtLLateeTimme.TTextt="";}else{RRespponsse.WWritte(""<sccrippt>aalerrt(''数据录录入失败败!'))</sscriipt>>");;}}catchh(SSysttem..Exccepttionneee){Reespoonsee.Wrritee("<<scrriptt>allertt('""+ee..Messsagge.TToSttrinng())+"'))</sscriipt>>");;}}}proteecteedvooidbtnn_reesett_Cllickk(obbjecctseendeer,EveentAArgsse)){{txttConntennt.TTextt="";txttLatteTiime..Texxt==""";}}}到此,实现现晚归情情况记录录功能。实现晚归查查询功能能模块latecchecck.aaspxx的页面面设计如如下:这个模块最最难就难难在如何何根据用用户选择择的查询询条件动动态地组组合SQQL查询询语句,这这里使用用一个GGriddVieew控件件用于显显示用户户查询后后的数据据。这里里的查询询逻辑是是这样的的:如果果用户进进入此查查询页面面查询数数据时,当当用户直直接单击击查询按按钮,不不选择任任何的查查询条件件,就将将全部信信息绑定定到GrridVVieww中显示示出来,如如果用户户查询时时加上了了查询条条件(如如:用户户可以选选择系部部进行查查询,或或者是选选择系部部和专业业作为查查询条件件进行查查询,或或者是选选择系部部,专业业和班级级进行作作为查询询条件进进行查询询,或者者直接输输入要查查询的姓姓名或者者宿舍或或者开始始时间或或者是结结束时间间或者是是同时输输入这些些查询关关键字或或者是输输入查询询关键字字的同时时由选择择了系部部,专业业和班级级等关键键词组成成的查询询条件)),那么么就根据据查询条条件从数数据库中中查询出出满足条条件的记记录,将将满足的的记录绑绑定到GGriddVieew控件件中进行行输出显显示。查询部分的的代码如如下:proteecteedvooidbtnnSeaarchh_Cllickk(obbjecctssendder,,EvventtArggsee){{strinngssql=""sellecttsttuInnfo..stuu_naame,,stuuInffo.rroomm,cllasss.cllasss_naame,,reggionn.reegioon_nnamee,laate..latte_iintrro,llatee.laate__timme,llatee.laate__idfroomsstuIInfoo,cllasss,reegioon,llateewhhereesttuInnfo..claass__id==claass..claass__idanddsttuInnfo..stuu_idd=laate..stuu_iddanndrregiion..reggionn_idd=laate..reggionn_idd";/*如果用用户没有有选择查查询条件件,只是是单击查查询按钮钮,就只只执行这这条SQQL语句句,将全全部的记记录查询询出来**/strinngddeptt_Idd=dp__sellecttDeppt.SSeleecteedVaaluee;strinngsspc__Id=ddp_sseleectSSpecc.SeeleccteddVallue;;strinngcclasss_IId==dpp_seelecctCllasss.SeeleccteddVallue;;strinngrregiion__Id==dp__sellecttReggionn.SeeleccteddVallue;;strinngsstarrtimme==txxtSttarttTimme.TTextt;strinngeendttimee=txttEnddTimme.TTextt;strinngrroomm=txttRooom.TTextt;strinngnnamee=txttNamme.TTextt;if(ddeptt_Idd!=="""){///如果用用户选择择了系部部,则重重新组合合SQLL语句,加加上查询询条件———“系系部编号号”sqql++=""anndsstuIInfoo.deept__id=="+ddeptt_Idd;}if(sspc__Id!=""){///如果用用户选择择了专业业sqql++=""anndsstuIInfoo.sppc_iid=""+sppc_IId;}if(cclasss_IId!!="""){///如果用用户选择择了班级级sqql++=""anndsstuIInfoo.cllasss_idd="++claass__Id;;}if(rregiion__Id!=""){///如果用用户选择择了专门门sqql++=""anndllatee.reegioon_iid=""+rregi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论