![MySql數(shù)據(jù)庫課程設計學生管理系統(tǒng)_第1頁](http://file4.renrendoc.com/view/66665b631522ac2d8ea147756f4c3a94/66665b631522ac2d8ea147756f4c3a941.gif)
![MySql數(shù)據(jù)庫課程設計學生管理系統(tǒng)_第2頁](http://file4.renrendoc.com/view/66665b631522ac2d8ea147756f4c3a94/66665b631522ac2d8ea147756f4c3a942.gif)
![MySql數(shù)據(jù)庫課程設計學生管理系統(tǒng)_第3頁](http://file4.renrendoc.com/view/66665b631522ac2d8ea147756f4c3a94/66665b631522ac2d8ea147756f4c3a943.gif)
![MySql數(shù)據(jù)庫課程設計學生管理系統(tǒng)_第4頁](http://file4.renrendoc.com/view/66665b631522ac2d8ea147756f4c3a94/66665b631522ac2d8ea147756f4c3a944.gif)
![MySql數(shù)據(jù)庫課程設計學生管理系統(tǒng)_第5頁](http://file4.renrendoc.com/view/66665b631522ac2d8ea147756f4c3a94/66665b631522ac2d8ea147756f4c3a945.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
....../...XX科技大學數(shù)據(jù)庫課程設計報告系院應用科學學院年級2013級專業(yè)信息與計算科學131802學號201318030204學生姓名XXXXXX指導教師姓名XXXXXX課程設計〔論文題目XX科技大學學生管理系統(tǒng)目錄TOC\o"1-3"\h\u第一章緒論11.1研究的背景及意義11.1.1選題的背景11.1.2研究的意義11.2系統(tǒng)目標21.3應用技術21.3.1Servlet技術21.3.2JSP技術31.3.3JDBC31.3.4MySQL31.3.5myEclipse31.3.6Tomcat41.3.7JSTL標簽41.3.8XML4第二章需求分析52.1功能需求52.1.1系統(tǒng)模塊分解52.1.2功能需求描述52.2非功能需求82.2.1性能需求82.2.2其它需求8第三章總體設計103.1運行環(huán)境103.2模塊結構11第四章數(shù)據(jù)庫設計124.1概念結構設計124.1.1設計思路124.1.2E-R圖124.2邏輯結構設計15設計思路154.3物理結構設計154.3.1存取方式154.3.2存儲結構15第五章界面設計185.1界面關系圖185.2界面設計成果195.2.1登錄界面195.2.2功能菜單界面20第六章詳細設計256.1登錄注冊設計276.1.1算法描述276.1.2程序流程圖276.1.3關鍵類說明286.2用戶管理設計286.2.1程序流程圖286.2.2關鍵類說明29第七章編碼307.1部分核心代碼307.1.1用JDBC連接JAVAweb和數(shù)據(jù)庫307.1.2登錄注冊、頁面管理347.2代碼優(yōu)化和開發(fā)需知事項40第七章總結41參考文獻42.........第一章緒論1.1研究的背景及意義1.1.1選題的背景隨著教育事業(yè)的不斷發(fā)展,學校的規(guī)模不斷擴大,學生數(shù)量及其信息量的急劇增加,有關學生的各種信息處理也隨之展開。學生管理信息系統(tǒng)應運而生了,它可用來管理學生信息與提高系統(tǒng)管理工作的效率。學生信息管理系統(tǒng)把VisualBasic〔前臺開發(fā)與MYSQL〔后臺管理有機地結合,并運用流行的ADO等相關技術,完成學生信息的規(guī)范管理、科學統(tǒng)計和快速查詢,從而可大大減少該管理上的工作量。數(shù)據(jù)庫在一個信息管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結構設計的好壞將直接對應用系統(tǒng)的效率以及實現(xiàn)的效果產生影響。合理的數(shù)據(jù)庫結構設計可以提高數(shù)據(jù)庫存儲的效率,保證數(shù)據(jù)的完整性和一致性。同時,合理的數(shù)據(jù)結構也將有利于程序的順利實現(xiàn)。1.1.2研究的意義學生學籍管理系統(tǒng),可用于學校等機構的學生信息管理,查詢,更新與維護,使用方便,易用性強,圖形界面清晰明了。該軟件用java語言編寫,用SQLServer2012數(shù)據(jù)庫作為后臺的數(shù)據(jù)庫進行信息的存儲,用SQL語句完成添加,查詢,修改,刪除的操作。用JDBC驅動實現(xiàn)前臺Java與后臺SQL數(shù)據(jù)庫的連接。Java語言跨平臺性強,可以在Windows等系統(tǒng)下使用,方便簡單,安全性好。......1.2系統(tǒng)目標該系統(tǒng)主要建立一個基于B/S模式的實驗室信息管理系統(tǒng),用戶和管理員不需要下載客戶端就可以通過瀏覽器訪問學生管理系統(tǒng),快捷方便,從網頁獲取當前的學生信息,及時的更新信息,修改信息,保證信息的正確性和時效性,從而更好更快捷更便利的管理學生信息,實現(xiàn)學生信息的直觀可視化和及時可靠化,本系統(tǒng)主要針對與系統(tǒng)相關的兩類用戶實現(xiàn)信息的管理:1.對于實驗室管理人員:可以登陸到管理員頁面,可以方便的進行學籍信息管理、班級信息管理、成績信息管理、用戶管理和系統(tǒng)管理。2.對于教師:教師可以進行注冊成為網站的用戶,并可以通過登錄進入普通用戶界面以后來學籍信息管理、班級信息管理、成績信息管理和系統(tǒng)管理,但是無法查看和修改其他的用戶的信息。1.3應用技術1.3.1Servlet技術Servlet是服務器端的Java應用程序,具有獨立于平臺和協(xié)議的特性,可以生成動態(tài)的Web頁面。它擔當客戶請求與服務器響應的中間層。Servlet是位于Web服務器內部的服務器端的Java應用程序,與傳統(tǒng)的從命令行啟動的Java應用程序不同,Servlet由Web服務器進行加載,該Web服務器必須包含支持Servlet的Java虛擬機。最早支持Servlet技術的是JavaSoft的JavaWebServer。此后,一些其它的基于Java的Web服務器開始支持標準的ServletAPI。Servlet的主要功能是交互式地瀏覽和修改數(shù)據(jù),生成動態(tài)Web內容。這個執(zhí)行的過程為:客戶端發(fā)送請求至服務器端;服務器將請求信息發(fā)送至Servlet,Servlet生成響應結果并將其傳給服務器,響應內容動態(tài)生成,通常取決于客戶端的請求,服務器將響應返回給客戶端,Servlet看起來與s通常的Java程序無很大差別。Servlet導入特定的屬于JavaServletAPI的程序包。因為是對象字節(jié)碼,可動態(tài)地從網絡加載,可以說Servlet對Server就如同Applet對Client一樣。但是,由于Servlet運行于Server中,它們并不需要一個圖形用戶界面。從這個角度來說,Servlet也被稱為FacelessObject。一個Servlet就是Java編程語言中的一個類,它可以被用來擴展服務器的性能,服務器上駐留著可以通過"請求-響應"編程模型來訪問的應用程序。盡管Servlet可以對任何類型的請求產生響應,但通常只用來擴展Web服務器的應用程序。1.3.2JSP技術JavaServerPages技術是一項純Java平臺的技術,它主要用來產生動態(tài)網頁的內容。在傳統(tǒng)的網頁HTML文件中加入Java程序片段和JSP標記,就構成了JSP網頁。當Web服務器接收到訪問JSP網頁的請求時,首先執(zhí)行其中的程序片段,然后將執(zhí)行結果以HTML格式返回給客戶。JSP是基于JavaServlet以及整個Java體系的Web開發(fā)技術,利用這一技術可以建立先進、安全、快速和跨平臺的動態(tài)網頁。JDBCJDBC由一組Java語言編寫的類和接口組成,使用內嵌式的SQL,主要實現(xiàn)三方面的功能:建立與數(shù)據(jù)庫的連接,執(zhí)行SQL聲明以及處理SQL執(zhí)行結果。JDBC支持基本的SQL功能,使用它可方便地與不同的關系型數(shù)據(jù)庫建立連接,進行相關操作,并無需再為不同的DBMS分別編寫程序。1.3.4MySQLMySQL是一個多用戶、多線程的SQL數(shù)據(jù)庫,是一個客戶機/服務器結構的應用,它由一個服務器守護程序mysqld和很多不同的客戶程序和庫組成。MySQL的快速和靈活性足以滿足一個網站的信息管理工作。因為許可證的靈活,任何人都可以以任何目的免費使用,修改,和分發(fā)PostgreSQL,不管是私用,商用,還是學術研究使用。命令執(zhí)行速度快,也許是現(xiàn)今最快的;簡單有效的用戶特權系統(tǒng)。1.3.5myeclipseEclipse是一個非常優(yōu)秀的集成開發(fā)環(huán)境,它旨在簡化用于多操作系統(tǒng)軟件工具的開發(fā)過程,可以用于管理多種開發(fā)任務,其中包括測試、性能調整以及程序調試等,而且還可以集成來自多個供應商的第三方應用程序開發(fā)工具。通過集成大量的插件,myeclipse的功能可以不斷擴展,以支持各種不同的應用。myeclipse平臺是一個成熟的、精心設計的、可擴展的體系結構,其組成結構如圖所示用myeclipse開發(fā)的插件,可以適應多平臺的需要,且具有良好的可擴展性和靈活性。myeclipse是一個開放源代碼的、基于Java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構建開發(fā)環(huán)境。幸運的是,myeclipse附帶了一個標準的插件集,包括Java開發(fā)工具<JavaDevelopmentTools,JDT>。1.3.6TomcatTomcat服務器是ApacheGroupJakarta小組開發(fā)的一個免費服務器軟件,適合于嵌入Apache中使用,而且,它的源代碼可以免費獲得,你可以自由地對它進行擴充。Tomcat服務器的兼容性很好,如WebLogic服務器采用其為Web服務器引擎,Jbuilder將其作為標準的測試服務器,Sun公司也將其作為JSP技術應用的示例服務器。但是Tomcat服務器有眾多大軟件公司的支持,而且服務器的性能穩(wěn)定,其發(fā)展前景很好。本次開發(fā)使用Tomcat7.x。1.3.7JSTL標簽JSTL是apache對EL表達式的擴展〔也就是說JSTL依賴EL,JSTL是標簽語言!JSTL標簽使用以來非常方便,它與JSP動作標簽一樣,只不過它不是JSP內置的標簽,需要我們自己導包,以及指定標簽庫而已!如果你使用MyEclipse開發(fā)JavaWeb,那么在把項目發(fā)布到Tomcat時,你會發(fā)現(xiàn),MyEclipse會在lib目錄下存放jstl的Jar包!如果你沒有使用MyEclipse開發(fā)那么需要自己來導入這個JSTL的Jar包:。1.3.78XMLXML,可擴展的標識語言〔eXtensibleMarkupLanguage,其先驅是SGML和HTML。SGML,通用標識語言標準〔StandardGeneralizedMarkupLanguage,是國際上定義電子文件結構和內容描述的標準,是一種非常復雜的文檔結構,主要用于大量高度結構化數(shù)據(jù)的防衛(wèi)區(qū)和其它各種工業(yè)領域,便于分類和索引。同XML相比,SGML定義的功能很強大,然而它不適于Web數(shù)據(jù)描述,而且價格非常昂貴。第二章需求分析2.1功能需求2.1.1系統(tǒng)模塊分解學生信息管理系統(tǒng)的總體功能由以下幾大模塊構成:學籍信息管理、班級信息管理、成績信息管理、用戶管理和系統(tǒng)管理。如下圖所示:圖2-1系統(tǒng)功能模塊分解圖2.1.2功能需求描述學籍信息管理模塊描述:用戶在注冊成功后,用合法的賬號密碼登陸管理系統(tǒng)頁面。在頁面的公告欄中,管理員可以及時發(fā)布公告,提醒用戶一些需要注意的信息,由于學生信息的變動,管理員需要時常改動學生信息,通過本系統(tǒng),可以實現(xiàn)學生學號、姓名、性別、班級、出生日期等的添加、查看、修改和刪除。用例圖:圖2–2學生管理子系統(tǒng)用例圖班級選課信息管理模塊描述:班級信息管理主要包括班號、年紀、班主任、教室的添加、查看、修改和刪除。由于老師調動,任職期的更改等原因,班級的班主任隨時可能發(fā)生更改,需要及時修改保證信息的準確性。用戶可以通過查看信息來清楚明了的指導該學校所有班級的詳細準確的班級信息。用例圖:班級班級信息添加班級信息刪除班級信息查看班級信息修改班級信息添加班級信息刪除班級信息查看班級信息修改班級信息管理員管理員圖2–3學生管理子系統(tǒng)用例圖成績信息描述:主要包括了學生的考好,姓名,學號,班級,課程的名稱,獲得的成績。管理員可以用此來完成學生信息的統(tǒng)計和成績的登記。同時也可以對這些信息進行刪除、添加、查看和修改操作,以此來確保成績信息的真實可靠性。用例圖:實驗選課信息實驗選課信息添加學生成績刪除學生信息查看成績信息修改學生信息添加學生成績刪除學生信息查看學生信息修改學生信息管理員管理員圖2–3學生管理子系統(tǒng)用例圖用戶管理模塊描述:由于在實際過程中,有些用戶可能會因為較長時間沒有使用系統(tǒng)而忘記了本人的信息,這是就可以找管理員進行用戶信息的查看,其次也可以通過管理員直接添加一個用戶以得到前臺頁面的操作權限,還可以進行信息的修改和注銷。用例圖:圖2-4用戶管理子系統(tǒng)用例圖圖2-5實驗室管理員管理子系統(tǒng)用例圖2.2非功能需求2.2.1性能需求最大并發(fā)用戶數(shù):15〔因數(shù)據(jù)庫同時訪問人數(shù)限制導致同時在線人數(shù):100訪問高峰時期同時在線人數(shù):300訪問高峰時期同時提交事務人數(shù):30高峰時期系統(tǒng)響應時間:10s以內注:以上信息為開發(fā)人員估計所得,具體情況具體對待。2.2.2其它需求精度用戶名要求長度不超過3-20個字符。密碼長度要求為3--20個字符。日期:精確到某年某月某日軟件需求1、WindowsXP操作系統(tǒng);2、SQL數(shù)據(jù)庫;3、MyEclipse9.0開發(fā)工具;4、Tomcat7.X服務器;5、SQLyogTunnel.phpMySql輔助工具硬件需求1、Web服務器1臺;2、數(shù)據(jù)庫服務器1臺;3、備份服務器1臺;4、開發(fā)服務器1臺;5、硬件防火墻1臺;6、軟件防火墻服務器1臺;7、千兆路由器1臺;8、10M網絡寬帶1條。...第三章總體設計3.1運行環(huán)境1>設備客戶程序硬件要求:具有PentiumII處理器且滿足以下要求的計算機:最低512M內存,最小20GB硬盤,鼠標,鍵盤。WEB服務器硬件要求:具有PentiumIV處理器且滿足以下要求的計算機:最低512MB內存,最小80GB硬盤,鼠標,鍵盤。2>支持軟件客戶程序軟件:Windows98/2000/XP或更高版本IE6.0或者更高版本,Firefox等瀏覽器 網絡支持WEB服務器軟件:Tomcat7.0Windows98/2000/XP或更高版本數(shù)據(jù)庫服務器軟件Windows98/2000/XP或更高版本 數(shù)據(jù)庫:XML3.2模塊結構1>本小節(jié)從管理員用戶使用的角度出發(fā),列出了系統(tǒng)所提供的各個功能,系統(tǒng)的各功能模塊如下表所示:表3SEQ表\*ARABIC\s11系統(tǒng)功能模塊列表序號功能模塊名稱子功能模塊名稱備注首頁注冊登錄管理員模塊學生學籍信息添加學籍信息修改學籍信息查看學籍信息刪除學籍信息班級信息管理添加班級信息修改班級信息查看班級信息刪除班級信息2.3成績信息管理2.3.1成績信息添加2.3.2成績信息修改2.3.3成績信息查看2.3.4成績信息刪除2.4用戶管理添加用戶修改用戶信息查看用戶信息刪除用戶信息2.5系統(tǒng)管理修改自己登陸密碼其他功能有待開發(fā)用戶模塊查看信息修改登陸密碼......第四章數(shù)據(jù)庫設計4.1概念結構設計4.1.1設計思路概念模型是數(shù)據(jù)庫系統(tǒng)的核心和基礎。概念設計階段的主要任務和目標是根據(jù)需求分析的結果找出所有數(shù)據(jù)實體,畫出對應的E-R圖。對于較復雜的系統(tǒng),通常首先要根據(jù)各個用戶對數(shù)據(jù)和使用權限的不同畫出各自對應的局部E-R圖,然后把各個局部E-R綜合起來形成系統(tǒng)的整體ER圖。所以就針對本系統(tǒng)來說,根據(jù)實際業(yè)務,首先抽象學生學籍信息、班級信息管理、成績管理、用戶等4個實體,再根據(jù)業(yè)務的需求分析出各個實體所擁有的屬性,并以此設計出系統(tǒng)的概念模型。4.1.2E-R圖管理員管理員實驗科目實驗成績實驗選課信息實驗科目管理員學籍成績班級用戶圖4-2-1系統(tǒng)主頁面E-R圖管理員管理員實驗科目實驗成績實驗選課信息實驗科目學籍信息增加學籍信息修改學籍信息查看學籍信息刪除學籍信息圖4-2–2實驗科目模塊E-R圖管理員管理員實驗科目實驗成績實驗選課信息實驗科目班級信息信息增加班級信息修改班級信息查看班級信息刪除班級信息圖4-2–2選課信息管理E-R圖管理員管理員實驗科目實驗成績實驗選課信息實驗科目用戶信息用戶賬號密碼查看看用戶賬號密碼增加用戶賬號密碼修改刪除用戶信息圖4-2–3用戶信息管理E-R圖用戶名用戶名密碼注冊登陸系統(tǒng)主頁面學籍信息管理班級信息管理成績管理用戶管理圖4-2-4系統(tǒng)主頁面管理E-R圖4.2邏輯結構設計4.2.1設計思路邏輯設計階段的主要任務和目標是根據(jù)概念設計的結果設計出數(shù)據(jù)庫的邏輯結構模式,包括全局模式和各個外模式。對于本系統(tǒng)來說,管理員在使用本系統(tǒng)時,必須先成功注冊,然后用注冊的張?zhí)柡兔艽a進行登陸操作,進入系統(tǒng)主頁面。本系統(tǒng)包括學籍信息管理、班級信息管理、成績信息管理、用戶管理和系統(tǒng)管理五大模塊,普通用戶不具有用戶管理這個模塊。在實驗室科目這個模塊中又包含了學號、姓名、性別、班級、出生日期、入學日期這六個的模塊,班級信息包含了班號、年紀、班主任姓名、教室這四個小的模塊,成績信息模塊包含考好、班級、學生名字、學號、課程、成績這六個小的模塊,用戶管理包含了用戶名、密碼、性別三個小的模塊,管理員可以通過系統(tǒng)對每個大模塊下的小模塊進行增改刪查等操作。4.3物理結構設計4.3.1存取方式數(shù)據(jù)庫結構的物理設計是指對一個給定的邏輯數(shù)據(jù)模型選取一個最適合應用環(huán)境的物理結構的過程,主要是設計表結構。系統(tǒng)數(shù)據(jù)庫設計中,實體對應于表,實體的屬性對應于表的列,實體之間的關系成為表的約束?;旧鲜菍⑦壿嬙O計中的實體轉換成物理設計中的表,而本系統(tǒng)也是如此是通過關系表的形式存取數(shù)據(jù)。4.3.2存儲結構表4SEQ表\*ARABIC\s11系統(tǒng)數(shù)據(jù)庫組成表數(shù)據(jù)庫名:userdemo序號表名標簽說明功能說明1user表普通用戶存儲用戶的相關信息2student表學生學籍信息存儲學生學籍的信息3Cla表班級信息班級信息4grade表學生成績信息存儲學生成績信息的信息表42用戶信息表表名:user序號列名數(shù)據(jù)類型長度小數(shù)位標識主鍵允許空默認值說明1usernamevarchar255否2passwordvarchar255否3sexvarchar255否表44學生學籍信息表名:student序號列名數(shù)據(jù)類型長度小數(shù)位標識主鍵允許空默認值說明1Stunumvarchar255否2stunamevarchar255否3stusexvarchar255否4stuclavarchar255否5stubirthvarchar255否6stutoschvarchar255否表45b班級信息表表名:cla序號列名數(shù)據(jù)類型長度小數(shù)位標識主鍵允許空默認值說明1clanumvarchar255否2clagravarchar255否3clateavarchar255否4claroomvarchar255否表46成績信息表表名:grade序號列名數(shù)據(jù)類型長度小數(shù)位標識主鍵允許空默認值說明1gradnumvarchar255否2gradclavarchar255否3gradxuevarchar255否4gtadnamevarchar255否5gradprojvarchar255否6gradevarchar255否......第五章界面設計5.1界面關系圖注冊頁面登陸頁面系統(tǒng)主頁面學生信息注冊頁面登陸頁面系統(tǒng)主頁面學生信息管理頁面添加信息頁面查看信息頁面修改學籍頁面圖5-1界面關系圖注:主頁面到班級信息管理、成績管理、用戶管理的流程圖和上面類似。5.2界面設計成果5.2.1登錄界面圖5-1登錄界面圖5-2注冊界面圖5-3管理員登錄界面圖5-3普通用戶登錄界面5.2.2功能菜單界面圖5-4學生信息管理主頁面圖5-5查看學籍頁面圖5-6添加學生學籍信息頁面圖5-7修改學生學籍用戶圖5-7刪除用戶圖5-7班級信息圖5-8查看、修改、刪除班級信息圖5-9添加班級信息圖5-10修改班級信息圖5-11學生成績信息管理圖5-12查看、刪除、修改修改成績信息圖5-13用戶信息管理主頁面〔管理員權限圖5-14查看、刪除頁面〔管理員權限圖5-14添加用戶信息〔管理員權限圖5-15修改用戶信息〔管理員權限圖5-16主要工具使用展示-myEclipse圖5-17主要工具使用展示-mySql第六章詳細設計6.1登錄注冊設計6.1.1算法描述在用戶輸入用戶名密碼并選中用戶種類以后,將數(shù)據(jù)提交到服務器,先檢查用戶的類型,再根據(jù)用戶類型并讀取出用戶名將其與數(shù)據(jù)庫中的數(shù)據(jù)進行核對,查看數(shù)據(jù)庫中是否存在該用戶名,如果存在再核對其輸入的密碼是否正確,當用戶名和密碼都正確時則完成驗證并跳轉到成功頁面;如果用戶名不正確則不必核對密碼直接提示輸入信息有誤,需要重新輸入用戶名和密碼。在注冊時,用戶填寫完信息后提交給服務器后,服務器先讀取用戶名與數(shù)據(jù)庫中的數(shù)據(jù)進行核對,如果該用戶名存在則提示用戶該用戶已存在。 6.1.2程序流程圖圖6-1登錄注冊程序流程圖6.1.3關鍵類說明DB:負責數(shù)據(jù)庫連接的類,包含了連接的創(chuàng)建、數(shù)據(jù)庫的關閉、創(chuàng)建預處理對象,結果集對象;User:用戶實體類,即JavaBean,囊括了用戶的屬性和get、setter方法;UserDAO:DAO層處理數(shù)據(jù)實現(xiàn)接口類,定義了讀者業(yè)務操作的方法;UserService:service層用戶相關業(yè)務的方法類,在該類中有用戶登錄驗證方法publicbooleancheck<Stringusername,Stringpassword>方法,實現(xiàn)用戶名和密碼的驗證,通過方法publicbooleansave<Stringusername,Stringpassword>實現(xiàn)用戶的注冊;Regist:負責注冊處理并跳轉的Servlet類,在該類的doGet<>方法中調用UserService類中的save<>方法將用戶提交的信息提交到服務器完成注冊,并根據(jù)save<>的返回值跳轉到相應的頁面。Login:負責登錄處理并跳轉的Servlet類,在該類的doGet<>方法中調用UserService類中的方法進行用戶名和密碼的驗證,并根據(jù)驗證結果跳轉到相應的頁面。6.2用戶管理設計6.2.1程序流程圖圖6-2用戶管理流程圖6.2.2關鍵類說明User:教師實體類,即JavaBean,囊括了讀者的屬性和get、setter方法;UserDAO:DAO層處理數(shù)據(jù)實現(xiàn)接口類,定義了讀者業(yè)務操作的方法;UserService:service層讀者相關業(yè)務的方法類,包括publicbooleansave<Stringusername,Stringpassword>方法進行注冊和添加用戶操作,publicbooleandelete<intuserId>方法完成用戶的刪除以完成用戶的注銷,publicbooleanupdate<intuserId,Stringusername,Stringpassword>方法完成用戶信息的更新,通過publicUserfindById<intuserId>方法可以根據(jù)用戶Id查看用戶信息,通過publicUserfindByName<Stringname>方法可以根據(jù)用戶名進行查詢用戶信息,通過publicArrayList<User>findAll<>取出數(shù)據(jù)庫中所有讀者的信息;AddUser:負責用戶添加并跳轉的Servlet類,在該類的doGet<>方法中調用UserService類中的save<>方法,將用戶提交的數(shù)據(jù)通過處理提交到數(shù)據(jù)庫中完成用戶的添加,并根據(jù)save<>的返回值跳轉到相應的頁面。UpdateUser:負責用戶信息的更新并跳轉的Servlet類,在該類的doGet<>方法中調用UserService類中的update<>方法,將用戶提交的數(shù)據(jù)通過處理提交到數(shù)據(jù)庫中完成用戶的更新,并根據(jù)update<>的返回值跳轉到相應的頁面。DeleteUser:負責用戶的注銷并跳轉的Servlet類,在該類的doGet<>方法中調用UserService類中的delete<>方法,將用戶提交的數(shù)據(jù)通過處理提交到數(shù)據(jù)庫中完成讀者的注銷,并根據(jù)delete<>的返回值來確定是否刪除成功并跳轉到相應的頁面;注:其他模塊設計思路與上述思路和方法相似,不予說明。第七章編碼7.1部分核心代碼7.1.1用JDBC連接JAVAweb工程與數(shù)據(jù)庫連接數(shù)據(jù)庫publicstaticConnectiongetConnection<>throwsException{ Propertiespro=newProperties<>; InputStreaminStream=UserUtils.class.getResourceAsStream<"/perties">; pro.load<inStream>; Class.forName<pro.getProperty<"driverClassName">>; Connectioncon=DriverManager.getConnection<pro.getProperty<"url">,pro.getProperty<"username">,pro.getProperty<"password">>;returncon; }連接數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)層的增刪改查/**增刪改查crud*@authorAdministrator*DOM4J解析xml*①導包*②jdbc數(shù)據(jù)從程序存入數(shù)據(jù)庫或者數(shù)據(jù)庫讀取到程序*/publicclassUserDAO{ publicvoidaddUser<Useru>throwsException{ Connectioncon=UserUtils.getConnection<>; Stringsql="insertintouser<username,password,sex>values<?,?,?>"; PreparedStatementp=con.prepareStatement<sql>; p.setString<1,u.getUsername<>>; p.setString<2,u.getPassword<>>; p.setString<3,u.getSex<>>; p.executeUpdate<>; p.close<>; con.close<>; } //刪除用戶 publicvoiddeleteUser<Useru>throwsException{ Connectioncon=UserUtils.getConnection<>; Stringsql="deletefromuserwhereusername=?"; PreparedStatementp=con.prepareStatement<sql>; p.setString<1,u.getUsername<>>; p.executeUpdate<>; p.close<>; con.close<>; } //修改屬性 publicvoidalterUser<Useroldu,Usernewu>throwsException{ Connectioncon=UserUtils.getConnection<>; Stringsql="updateusersetusername=?,password=?,sex=?whereusername=?"; PreparedStatementp=con.prepareStatement<sql>; p.setString<1,newu.getUsername<>>; p.setString<2,newu.getPassword<>>; p.setString<3,newu.getSex<>>; p.setString<4,oldu.getUsername<>>; p.executeUpdate<>; p.close<>; con.close<>; } //查找通過用戶名查找 publicUserfindByUsername<Stringusername>throwsException{ Connectioncon=UserUtils.getConnection<>; Stringsql="select*fromuserwhereusername=?"; PreparedStatementp=con.prepareStatement<sql>; p.setString<1,username>; ResultSetrs=p.executeQuery<>; Useru=null; if<rs.next<>>{ u=newUser<rs.getString<"username">,rs.getString<"password">,rs.getString<"sex">>; } rs.close<>; p.close<>; con.close<>; returnu; } //通過性別查找多個用戶 publicList<User>findBySex<Stringsex>throwsException{ Connectioncon=UserUtils.getConnection<>; Stringsql="select*fromuserwheresex=?"; PreparedStatementp=con.prepareStatement<sql>; p.setString<1,sex>; ResultSetrs=p.executeQuery<>; List<User>uList=newArrayList<User><>; while<rs.next<>>{ uList.add<newUser<rs.getString<"username">,rs.getString<"password">,rs.getString<"sex">>>; } rs.close<>; p.close<>; con.close<>; returnuList; } //查找全部用戶 publicList<User>findALL<>throwsException{ Connectioncon=UserUtils.getConnection<>; Stringsql="select*fromuser"; PreparedStatementp=con.prepareStatement<sql>; ResultSetrs=p.executeQuery<>; List<User>uList=newArrayList<User><>; while<rs.next<>>{ uList.add<newUser<rs.getString<"username">,rs.getString<"password">,rs.getString<"sex">>>; } rs.close<>; p.close<>; con.close<>; returnuList; }}7.1.2登陸注冊1>登陸的靜態(tài)頁面實現(xiàn)代碼<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="/jsp/jstl/core"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><scripttype="text/javascript"> //點擊該按鈕改變圖片驗證碼的值 functionchange<>{ //通過id獲取圖片的節(jié)點 varnode=document.getElementById<"imgid">; //通過節(jié)點拿src node.src="<c:urlvalue='/image'></c:url>"+"?"+newDate<>.getTime<>; } //注冊按鈕 functionadd<>{ //點擊注冊跳轉到reg.jsp頁面 location.href="<c:urlvalue='/jsp/user/reg.jsp'/>"; } //普通用戶登陸 functionuserlogin<>{ //點擊注冊跳轉到reg.jsp頁面 location.href="<c:urlvalue='/userlogin.jsp'/>"; } </script><head><title>XX科技大學</title><metahttp-equiv="pragma"content="no-cache"> <metahttp-equiv="cache-control"content="no-cache"> <metahttp-equiv="expires"content="0"> <styletype="text/css">.error{ text-align:center; color:red; font-weight:900; font-size:12px; } </style></head><body><h1align="center"><imgalt=""src="images/xiaohui.jpg"></h1><h1align="center">學籍信息</h1><br><br><hrstyle="height:20px;"><pclass="error">${requestScope.errMsg}</p><pclass="error"></p><formaction="<c:urlvalue='/LoginServler'/>"method="post"><tablealign="center"width="50%"> <tr> <tdstyle="width:56px;">用戶名</td> <tdstyle="height:51px;width:190px"><inputtype="text"name="username"value="sername}"/></td> <tdstyle="width:94px;height:33px"> <spanclass="error">${requestScope.errMap.username}</span> </td> </tr> <tr> <td>密碼</td> <tdstyle="height:46px;width:264px"><inputtype="password"name="password"value=""/></td> <tdstyle="width:101px;"> <spanclass="error">${requestScope.errMap.password}</span> </td> </tr> <tr> <td>驗證碼</td> <tdstyle="width:207px;"><inputtype="text"name="check"style="width:63px;"><imgalt="圖片驗證碼"src="<c:urlvalue='/image'/>"id="imgid"><inputtype="button"value="換一張"onclick="change<>"></td><!--顯示錯誤信息--><td><spanclass="error">${requestScope.errMap.errPsw}</span></td> </tr> <tr> <td> </td> <tdcolspan="2"><inputtype="submit"value="管理員登陸"style="height:39px;width:106px;"/> <!--點擊注冊跳轉到注冊用戶頁面--> <inputtype="button"value="用戶登陸"onclick="userlogin<>"style="height:39px;"/> <inputtype="button"value="用戶注冊"onclick="add<>"style="height:38px;width:85px;"> </td> </tr></table></form></body></html>登陸的前臺前端的校驗和后端的校驗 publicvoiddoGet<HttpServletRequestrequest,HttpServletResponseresponse> throwsServletException,IOException{ } publicvoiddoPost<HttpServletRequestrequest,HttpServletResponseresponse> throwsServletException,IOException{ //中文請求亂碼 request.setCharacterEncoding<"utf-8">; Useruser=newUser<>; try{ //把頁面?zhèn)鬟^來的屬相值封裝到Map集合中 BeanUtils.populate<user,request.getParameterMap<>>; }catch<Exceptione>{ //TODOAuto-generatedcatchblock thrownewRuntimeException<e.getMessage<>>; } /*后臺的前端校驗:格式 *2》用戶名校驗:用戶名不能為null,在3到20個字符之間 密碼校驗,密碼不能為null,在3到20個字符之間,如果有 錯誤信息,將該信息封裝到Map集合中。 */ Map<String,String>errMap=newHashMap<String,String><>; //用戶名校驗:用戶名不能為null,在3到20個字符之間 if<user.getUsername<>==null||user.getUsername<>.length<>==0>{ errMap.put<"username","用戶名不能為空">; }elseif<user.getUsername<>.length<><3||user.getUsername<>.length<>>20>{ errMap.put<"username","用戶名必須在3到20個字符之間">; } //密碼校驗,密碼不能為null,在3到20個字符之間 if<user.getPassword<>==null||user.getPassword<>.trim<>.length<>==0>{ errMap.put<"password","密碼為空">; }elseif<user.getPassword<>.length<><3||user.getPassword<>.length<>>20>{ errMap.put<"password","密碼必須在3到20個字符之間">; } //驗證碼 Stringcheck=request.getParameter<"check">;//驗證碼 //獲取圖片驗證碼的信息 Stringtext=<String>request.getSession<>.getAttribute<"text">; if<!check.equalsIgnoreCase<text>>{ errMap.put<"errPsw","驗證碼錯誤">; } //判斷集合中是否有錯誤信息 if<errMap!=null&&errMap.size<>>0>{ //存儲錯誤信息存在request域中并轉發(fā)到login.jsp request.setAttribute<"errMap",errMap>; //在request存儲用戶信息回顯 request.setAttribute<"user",user>; //請求轉發(fā) request.getRequestDispatcher<"/login.jsp">.forward<request,response>; return; } //后臺的后端校驗:數(shù)據(jù)庫和前臺傳遞的數(shù)據(jù)是否一致 UserServletus=newUserServlet<>; try{ //判斷用戶是否存在 Useru=us.login<user>; //存入session request.getSession<>.setAttribute<"user",u>; //請求轉發(fā)跳轉到主頁面 response.sendRedirect<request.getContextPath<>+"/jsp/SysMain.jsp">; }catch<Exceptione>{ //TODO:handleexception request.setAttribute<"errMsg",e.getMessage<>>; //在request存儲用戶信息回顯 request.setAttribute<"user",user>; //請求轉發(fā) request.getRequestDispatcher<"/login.jsp">.forward<request,response>; } }}3>登陸的前端和數(shù)據(jù)層連接代碼publicclassUserServlet{ //登陸 privateUserDAOud=newUserDAO<>; publicUserlogin<Useruser>throws
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 金融服務行業(yè)綠色金融與投資顧問方案
- 公司計時工作勞動合同書
- 行政合同的主體是
- 農民合作社經營管理方案
- 企業(yè)服務質量管理作業(yè)指導書
- 保安員工合同
- 2025年南陽b2貨運上崗證模擬考試
- 小學二年級數(shù)學上冊口算練習題
- 電商代運營合同(2篇)
- 電力合同管理協(xié)議(2篇)
- 攝影測量學實習指導書
- 2024年泰州職業(yè)技術學院高職單招數(shù)學歷年參考題庫含答案解析
- 樓梯 欄桿 欄板(一)22J403-1
- 學生綜合素質評定與職業(yè)規(guī)劃的關聯(lián)性分析
- 2025云南省貴金屬新材料控股集團限公司面向高校畢業(yè)生專項招聘144人高頻重點提升(共500題)附帶答案詳解
- 勞動法培訓課件
- 香港及內地傳真號碼
- 湖北中煙工業(yè)限責任公司2025年招聘(技術類和業(yè)務類崗位)【43人】高頻重點提升(共500題)附帶答案詳解
- 石家莊市長安區(qū)學年三年級數(shù)學第一學期期末檢測試題含解析
- 2025年中國一汽招聘筆試參考題庫含答案解析
- 特殊家長課后溝通技巧培訓
評論
0/150
提交評論