




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計說明書課設(shè)題目:指導(dǎo)教師:學(xué)院:學(xué)生姓名:學(xué)號:專業(yè)班級:2015年01月02日成績評定姓名:學(xué)號:班級:評分項(xiàng)目分?jǐn)?shù)程序功能完善(30分)回答問題止確(20分)設(shè)計報告規(guī)范(30分)(結(jié)構(gòu)完整,圖表止確,文字通順,版向工整)代碼質(zhì)量(10分)(類、方法及變量等的命名符合規(guī)范,主要方法及字段有注釋,程序有適當(dāng)縮進(jìn))平時表現(xiàn)(10分)(獨(dú)立完成,態(tài)度認(rèn)真)評定成績1系統(tǒng)開發(fā)目標(biāo)及設(shè)計思想1.1 系統(tǒng)開發(fā)基本目標(biāo)1.2 系統(tǒng)開發(fā)設(shè)計思想2關(guān)鍵技術(shù)3系統(tǒng)功能設(shè)計4各功能代碼設(shè)計5使用說明2.96設(shè)計體會3.3參考文獻(xiàn)3.41 系統(tǒng)開發(fā)目標(biāo)及設(shè)計思想1.1 系統(tǒng)開發(fā)基本目標(biāo)該系統(tǒng)包括以下功能:
2、1 面向圖書的功能有:圖書列表的查詢,圖書入庫,圖書修訂,圖書的快速定位查詢,由于此系統(tǒng)所面向的功能有限,所以將圖書的作者和出版社加以細(xì)分,有出版社的管理,包括出版社的添加,出版社的修改,出版社的移除等,為了更方便的實(shí)現(xiàn)添加圖書。同時還有對圖書作者的單獨(dú)管理,如對作者的查詢,增加以及修改等。2面向管理員的功能有:管理員的登錄,注冊功能,管理員的修改以及顯示等,還有管理員對讀者的管理,即對用戶實(shí)現(xiàn)的一些列操作,如對讀者的增刪改查,以及讀者借閱圖書和歸還圖書等。此系統(tǒng)功能設(shè)計以圖書和管理員為重心:本系統(tǒng)的主要功能模塊主要有以上所提及的這些,還有較多小功能設(shè)計,如一些特效的顯示等。1.2 系統(tǒng)開發(fā)設(shè)
3、計思想(1) 采用學(xué)?,F(xiàn)有的軟件和硬件環(huán)境以及設(shè)計要求開發(fā)系統(tǒng)。(2) 系統(tǒng)采用模塊化程序設(shè)計方法,既便于系統(tǒng)功能的各種組合和修改,又便于未參與開發(fā)的技術(shù)維護(hù)人員補(bǔ)充,維護(hù)。(3) 程序設(shè)計符合面向?qū)ο蟮乃枷牒驮瓌t。(4) 要有良好的程序風(fēng)格(類、方法及變量等的命名要符合規(guī)范;類、方法及字段要有注釋;程序有適當(dāng)縮進(jìn))(5) 采用文件對數(shù)據(jù)進(jìn)行存儲。(6) 人機(jī)界面美觀,操作方便、實(shí)用。2關(guān)鍵技術(shù)一、數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(1)E-R圖向關(guān)系模型的轉(zhuǎn)換:讀者(讀者ID,姓名,學(xué)號,性別,所在院系)此為讀者實(shí)體對應(yīng)的關(guān)系模式管理員(管理員ID,姓名,帳號,密碼,注冊時間)此為管理員實(shí)體對應(yīng)的關(guān)系模式圖
4、書(ISBN,書名,出版社,價格,版本號,出版日期,圖書圖片,作者,庫存量,借閱狀態(tài))借閱(圖書ISBN,讀者ID)此為聯(lián)系“借閱”的關(guān)系模型歸還(圖書ISBN,讀者ID)此為聯(lián)系“歸還”的關(guān)系模式(2)數(shù)據(jù)模型的優(yōu)化:1)確定數(shù)據(jù)依賴。2)對于各個關(guān)系模式之間的數(shù)據(jù)依賴進(jìn)行極小化處理,消除冗余的聯(lián)系。3)按照數(shù)據(jù)依賴的理論對關(guān)系模式進(jìn)行逐一分析。4)按照要求分析階段得到的處理要求,分析這樣的應(yīng)用環(huán)境這些模式是否合適。確定是否要對某些模式進(jìn)行合并或分解。5)對關(guān)系模式進(jìn)行必要的分解,提高數(shù)據(jù)操作的效率和存儲空間的利用率。(水平分解,垂直分解)、數(shù)據(jù)庫表設(shè)計根據(jù)系統(tǒng)需求,可以進(jìn)行具體的表的設(shè)計,
5、表4-1是所有數(shù)據(jù)庫表的匯總表2-1數(shù)據(jù)庫匯總表表名說明borrowUser讀者列表,存放讀者借書的相關(guān)信息bookusers管理員表,存放管理員的相關(guān)信息數(shù)據(jù)庫中的各個表的邏輯結(jié)構(gòu)設(shè)計結(jié)果如下面的幾個表格所示,每個表格表示數(shù)據(jù)庫中的一個表。表2-2圖書表(titles)字段名說明isbnvarchar(20)PrimaryKeytitlevarchar(100)圖書名,非空editionNumberint版本號,非空imageFilevarchar(20)文件圖片路徑pricefloat圖書價格borrowTimeint借閱最大期限isBorrowint是否被借出borrowIDint外鍵,
6、讀者ID,非空表2-3讀者表(borrowUser)字段名說明borrowIDintPrimaryKeyborrowNamevarchar(50)讀者姓名,非空departmentvarchar(50)所在系sexvarchar(50)性別studyNumvarchar(20)學(xué)號,非空表2-4管理員表(bookusers)字段名說明userIdintPrimaryKeyaccoutvarchar(20)帳號,非空passwordvarchar(20)密碼,非空namevarchar(20)用戶名,非空3系統(tǒng)功能設(shè)計1、 系統(tǒng)管理員模塊功能該模塊主要包括對管理員進(jìn)行注冊,銷戶,修改賬戶信息等。
7、管理員可以通過注冊一個賬號登錄管理系統(tǒng),之后對所注冊用戶進(jìn)行統(tǒng)一管理,用戶列表顯示了所有注冊用戶的用戶名,密碼,帳號以及注冊時間等操作,管理員可以對所有注冊的帳號進(jìn)行修改和移除。2、 讀者模塊功能該模塊主要有對讀者用戶的注冊,銷戶修改功能。讀者列表主要顯示讀者的姓名,學(xué)號,性別,所在系,這里主要存放借書還書的對象。如果想要借書或還書,就必須先通過管理員登錄進(jìn)行注冊,成為該系統(tǒng)的讀者用戶,進(jìn)而才能對書籍進(jìn)行借還。3、 圖書借還模塊功能該模塊主要是對圖書進(jìn)行借還操作的一個管理模塊,列表主要顯示圖書的isbn號,書名,借閱狀態(tài)以及最大借閱期限等信息。對于書名加以不同的鏈接,由于圖書和作者的關(guān)系是一對
8、多,即一本圖書只能借給一個人,一個人可以借多本不同的圖書,所以根據(jù)每本書的借閱狀態(tài)不同,鏈接對象也不一樣,當(dāng)此書已借出,點(diǎn)擊進(jìn)入的就是歸還頁面,歸還對象即為借書的讀者;若此書狀態(tài)為未借出,則點(diǎn)擊鏈接會進(jìn)入到借書頁面,借書對象是所有注冊的讀者用戶。管理員可以選擇某一位用戶進(jìn)行借出工作。4、 圖書管理模塊功能該模塊主要是對圖書進(jìn)行統(tǒng)一的管理,功能包括對圖書的入庫,移出,修訂,快速檢索等,圖書列表主要顯示圖書的isbn,書名,出版社,價格,版本號,出版年份。點(diǎn)擊書名進(jìn)入圖書詳細(xì)頁面,能看到該圖書的詳細(xì)信息,除剛才所說信息外還有該書籍的作者以及圖片,和正被借閱的讀者用戶名。同時在列表頁面可根據(jù)圖書的i
9、sbn和書名進(jìn)行模糊查詢,能更好的定位某本書或某些書。4各功能代碼設(shè)計一、管理員模塊1 .登錄頁面截圖:*甘K不可聲一占,二!但婢41衛(wèi)工包班撫際Em. BM圖4-1登陸界面代碼部分:通過網(wǎng)址的login.ii在web.xml文件中找到控制器ListUserServlet類,在獲得切割后字符串login,找到下面處理代碼,再調(diào)用DAOmlogin()方法進(jìn)行處理,如果傳入的帳號和密碼能夠獲得一個用戶,則讓其登陸成功,并加載用戶列表,若用戶名密碼不正確則提示錯誤信息。if(action.equals("/login")tryStringaccount=request.getP
10、arameter("userAccount");Stringpassword=request.getParameter("password");booleanflag=false;PrintWriterout=response.getWriter();UserModeluser=dao.login(account.trim(),password.trim();if(user!=null)flag=true;session.setAttribute(userNameuser.getUserName();out.print(flag);out.flush()
11、;out.close();catch(Exceptione)System.out.println("用戶登錄異常!");e.printStackTrace();thrownewServletException();數(shù)據(jù)層login()方法實(shí)現(xiàn):傳入兩個字符串變量,在用sql語句查詢數(shù)據(jù)庫,返回用戶對象。public UserModel login(final String account,final String password) Stringsql=List<UserModel> list =nullsql = "select*frombookus
12、erswhereaccount=?andpassword=?new IParamBingding() list=super.querySql(sql,publicvoidbingParam(PreparedStatementstmt)throwsSQLExceptionstmt.setString(1,account);stmt.setString(2,password);,newUserRowMapper();return(list.size()=0|list=null)?null:list.get(0);2 .列表顯示頁面截圖:端戶14圖4-2管理員列表顯示模塊B潛中Mii呼僑,用詞an工
13、同”端百生白科*和舌耳叩守代碼部分:控制器代碼,頁面通過請求list轉(zhuǎn)到web.xml通過匹配找到servlet包下面的ListUserServlet類,然后通過字符串切割得到list字符串,根據(jù)list找到下面控制器代碼,再調(diào)用數(shù)據(jù)層的queryAll部分查詢數(shù)據(jù)庫的所有管理員信息,并在列表上顯示。if(action.equals("/list")tryList<UserModel>users=dao.queryAll();request.setAttribute("users",users);/step2獲得轉(zhuǎn)發(fā)器RequestDispa
14、tcherrd=request.getRequestDispatcher("userMain.jsp");/step3轉(zhuǎn)發(fā)rd.forward(request,response);catch(Exceptione)e.printStackTrace();thrownewServletException();queryAll()方法的實(shí)現(xiàn)(查詢所有管理員用戶的信息):publicList<UserModel>queryAll()Stringsql="select*frombookusers"returnsuper.querySql(sql,ne
15、wUserRowMapper();queryAll()調(diào)用querySql()方法進(jìn)行sql查詢語句操作publicListquerySql(Stringsql,IRowMappermapper)Connectionconn=nullPreparedStatementstmt=null;ResultSetrs=null;Listlist=newArrayList();tryconn=db.getConnection();stmt=conn.prepareStatement(sql);logger.debug(sql);rs=stmt.executeQuery();while(rs.next()
16、Objectobj=mapper.mappingRow(rs);list.add(obj);catch(Exceptione)logger.debug("執(zhí)行sql語句異常");e.printStackTrace();finallydb.closeResultSet(rs);db.closeStatement(stmt);db.closeConnection(conn);returnlist;3.管理員注冊截圖:圖4-3管理員注冊模塊save()將用戶注冊代碼部分:根據(jù)regist.ii找到此類的部分,在從頁面獲得文本框的內(nèi)容,通過業(yè)務(wù)層方法信息保存到數(shù)據(jù)庫,并調(diào)用通用類的
17、方法getAccount()給用戶生成隨機(jī)且不重復(fù)帳號,作為用戶登錄時的id。tryusername" );StringuserName=request.getParameter(System.out.println(userName);String password = request.getParameter("pwd");UserModel user =new UserModel();user.setUserName(userName);user.setPassword(password);dao.save(user);/用session保存用戶帳號sess
18、ion.setAttribute("userName" , userName);Stringacc=dao.getAccount(userName,password);session.setAttribute("account" , acc);response.sendRedirect("bookusers/registOk.jsp");catch(Exceptione)response.sendRedirect("bookusers/registFail.jsp");生成圖片驗(yàn)證碼的方法:Map<Strin
19、g,BufferedImage>map=ImageUtil.getImage();Stringcode=map.keySet().iterator().next();/將驗(yàn)證碼暫時保存,用來與用戶輸入做比較session.setAttribute("code",code);Bufferedlmageimage=map.get(code);response.setContentType("image/jepg");Outputstreamops=response.getOutputStream();/對原始圖片(image)按照指定的壓縮算法(jpe
20、g)進(jìn)行壓縮,然后再輸出到opsjavax.imageio.ImageIO.write(image,"jpeg",ops);0Ps.close();生成隨機(jī)不重復(fù)賬號:通過所在年份和0-9999之間的隨機(jī)數(shù)之和產(chǎn)生4-7位不等的數(shù)據(jù),作為唯一的idpublicclassAccountMakerstaticRandomrandom=newRandom。;publicstaticStringgetAccount()List<Character>list=newArrayList<Character>();Stringstr=getYear();intnu
21、m=str.length();intk=random.nextInt(num);System.out.println(k);for(inti=0;i<num;i+)list.add(str.charAt(i);for(intj=0;j<k;j+)Stringc=String.valueOf(random.nextInt(9);list.add(k,c.charAt(0);StringBuffersb=newStringBuffer();for(Characterc:list)sb.append(c);returnsb.toString();()/1000/3600/24/365+1
22、970 +publicstaticStringgetYear()longnow=System.currentTimeMillisrandom.nextInt(9999);returnString.valueOf(now);二、讀者管理模塊1 .讀者列表截圖:JavaWeb圖書信息管理系統(tǒng)JavaWehMokManagerSystemi期雙密制在他作古甘程出軀比專任由書營也剪部后苴鹿看甘過|SPSS雪石洋號1王手建另帆學(xué)聯(lián)際Ua*&IU>n可用J項(xiàng)TW周韶”忻1-1b包圖4-4讀者列表代碼部分:此控制器為BorrowUserServlet,里面主要對讀者的一些功能進(jìn)行處理并轉(zhuǎn)發(fā)頁面
23、。該控制器會響應(yīng)用戶在瀏覽器輸入的后綴帶.uu的請求,如"list.uu"。當(dāng)web.xml接收到"list.uu”時會自動跳到該類中處理。該類分割字符串得到“l(fā)ist”,在跳到以下分支代碼處理if(action.equals("/list")tryList<BorrowUser>users=dao.findAll();request.setAttribute("users",users);/step2獲得轉(zhuǎn)發(fā)器RequestDispatcherrd=request.getRequestDispatcher(&q
24、uot;userMain.jsp");/step3轉(zhuǎn)發(fā)rd.forward(request,response);catch(Exceptione)e.printStackTrace();thrownewServletException();該分支調(diào)用DAO!findAll()方法查詢數(shù)據(jù)庫,返回讀者列表的list集合。以下是findAll()方法的實(shí)現(xiàn):publicList<BorrowUser>findAll()Stringsql="select*fromborrowUser'return super .querySql(sql,new BorrowU
25、serMapper();同樣此處調(diào)用數(shù)據(jù)封裝的querySql()方法,此處要對sql查詢的結(jié)果集進(jìn)行處理,故創(chuàng)建一個內(nèi)部類BorrowUserMapper:class BorrowUserMapperimplements IRowMapperthrows SQLException publicObjectmappingRow(ResultSetrs)BorrowUseruser=newBorrowUser();user.setBorrowId(rs.getInt( user.setBorrowName(rs.getString( user.setStudyNum(rs.getString(
26、user.setSex(rs.getString( user.setDepartMent(rs.getString( return user;"borrowID" );"borrowName");"studyNum");sex");"department" );2 .添加讀者:截圖:JavaWeb圖書信息管理系統(tǒng)JavaWebBookManagerSystem度&/rismKirwiftifwwi靠的射r*iim七受j神管g山th住物號十:0圖4-5添加讀者代碼部分:對于讀者的數(shù)據(jù)庫表進(jìn)行分析得到
27、,添加讀者信息應(yīng)該包括姓名,學(xué)號,性別,所在系等字段。在點(diǎn)擊添加按鈕時,用戶會發(fā)送add.uu請求,web.xml會將請求轉(zhuǎn)發(fā)到控制器。再根據(jù)分割得到字符串“add”,進(jìn)入以下代碼塊:通過request獲得頁面參數(shù),b并將其綁定到實(shí)體類BorrowUser的user實(shí)體中,再調(diào)用DAO層add方法,將數(shù)據(jù)插入數(shù)據(jù)庫中tryString(ParamUtil."iso-8859-1"),StringborrowName=getString(request.getParameter("gbk");newborrowName").getBytes(St
28、ring(ParamUtil.so-8859-1"),"gbk"StringstudyNum=newgetString(request.getParameter();studyNum").getBytes(String(ParamUtil.59-1"),"gbk");Stringsex=newgetString(request.getParameter(sex").getBytes("iso-88Stringdepartment=newString(ParamUtil.getString(request.
29、getParameter("iso-8859-1"),"gbk");"department").getBytes(BorrowUseruser=newBorrowUser();user.setBorrowName(borrowName);user.setStudyNum(studyNum);user.setSex(sex);user.setDepartMent(department);dao.add(user);response.sendRedirect("jump_do.jsp");catch(Exception
30、e)e.printStackTrace();thrownewServletException();DAO層add()方法的實(shí)現(xiàn):publicvoidadd(finalBorrowUserbUser)Stringsql="insertintoborrowUser(borrowName,studyNum,sex,department)values(?,?,?,?)"super.updateSql(sql,newIParamBingding()publicvoidbingParam(PreparedStatementstmt)throwsSQLExceptionstmt.setS
31、tring(1,bUser.getBorrowName();stmt.setString(2,bUser.getStudyNum();stmt.setString(3,bUser.getSex();stmt.setString(4,bUser.getDepartMent(););三、圖書借還管理模塊1 .借還列表截圖:it者甘春出穌社奇理圖仲管營回肉梃湃甘s*rapffffJavaWeb困書信息管理系統(tǒng)JavaWebBookManagerSystecu閭?cè)舳鹉玜ihJiin-伯知尢£Jm曲MEeqm0m2J己情力30bjTU*JtB«.-1N-irldM也MbNe&quo
32、t;Tt口b期平口WXVL曲,3Eh0一.E惜曰%Eerl血M玉惜0事5p】Xm】修irB/i麻匕«£d*一仆“皿3MowS打。目即玉情也%flbiBffiffirCmgI抬電Jw*UmcUmUw:L>米借zi£%干帚印r配取冷飛誦丹赤目析書后能入便孽息部H需,3用=tlTd窟L靠w一X1*1下,1.18圖4-6圖書借還一覽代碼部分:會以“l(fā)ist.rr ”的方式去發(fā)送請求, list”進(jìn)而進(jìn)入以下代碼:此模塊控制器類為BookBRServlet,用戶進(jìn)入借還圖書的模塊,此時web.xml會將請求轉(zhuǎn)到該控制器,經(jīng)控制器處理會得到字符串“Stringisbn=
33、ParamUtil.getString(request.getParameter("qisbn");StringbookName=ParamUtil.getString(request.getParameter("bookName");StringqueryParam="&isbn="+isbn+"&bookName="+bookName;List<BookModel>books=dao.quickSearch(isbn,bookName);for(BookModelbook:books
34、)int口countNum=dao.getCountAndNum(book.getTitle();book.setBorrowNum(countNum1);book.setCount(countNum0);request.setAttribute("books",books);request.setAttribute(queryParam",queryParam);/step2獲得轉(zhuǎn)發(fā)器RequestDispatcherrd=request.getRequestDispatcher("bRMain.jsp" );/step3轉(zhuǎn)發(fā)rd.forwa
35、rd(request,response);其中要將瀏覽器地址后附帶的參數(shù)用queryParam進(jìn)行綁定組合,以便后面的分頁操作,其次調(diào)用了quickSearch()方法進(jìn)行快速搜索,當(dāng)方法參數(shù)的isbn和書名為空時為全部檢索,不為空時為快速條件搜索。以下為quickSearch()方法體:publicList<BookModel>quickSearch(Stringisbn,Stringtitle)throwsSQLExceptionStringsql="selectt.*,publisherNamefromtitlestleftouterjoinpublisherspo
36、nt.publisherID=p.publisherID"sql+="whereisbnlike'%"+isbn+"%'andtitlelike'%"+title+"%'"returnquerySql(sql,newTitleRowMapper();2 .圖書借閱截圖:JavaWeb圖書信息管理系統(tǒng)JavaWebBookManagerten®I出版社卷登I圖相菅翌I(lǐng)Bl呼鑿逐|雷罟管理用戶言建,M吊借出岸堀國書mjiJxikTJ-kt0小£0111Hidjaa2h版在*存旦
37、二-J胃苗上朝慶Jbo的名強(qiáng)片工羋嗖”唐醉,敗施光蛤一寸圖4-7圖書借閱代碼部分:對于圖書借還列表顯示的圖書狀態(tài)分為兩種,當(dāng)數(shù)據(jù)庫中圖書的借閱狀態(tài)字段為1時表明此書已借出,其顯示背景成灰色,當(dāng)點(diǎn)擊書名鏈接時,會根據(jù)借閱狀態(tài)自動判斷進(jìn)入歸還圖書的頁面還是借閱圖書的頁面。當(dāng)該圖書已經(jīng)借出,則進(jìn)入歸還頁面,該頁面顯示該圖書的借閱者、借閱期限、書名等詳細(xì)信息int flag = Integer.parseInt (request.getParameter(br");Stringisbn=ParamUtil.getString(request.getParameter("qisbn&
38、quot;);intborrowNum=Integer.parseInt(request.getParameter("borrowNum");BookModel book =new BookModel();將圖書綁定book = dao.findBookBylsbn(isbn);book.setBorrowNum(borrowNum);book.setCount(count);request.setAttribute("book" , book);如果圖書借閱標(biāo)志位為0說明,則轉(zhuǎn)發(fā)到該圖書的借閱頁面,進(jìn)行借閱操作:if (flag = 0) equest
39、.getRequestDispatcher("bRDetails.jsp").forward(request, response);如果發(fā)生錯誤,則至錯誤頁面else request.getRequestDispatcher( onse);"fail.jsp").forward(request,resp3.圖書歸還截圖:圖4-8圖書歸還代碼部分:當(dāng)點(diǎn)擊背景條為灰色的書籍鏈接時,會進(jìn)入歸還頁面,此時標(biāo)志位為if (flag = 1) intcount="count");Integer.parseInt(request.getParame
40、ter(request.getRequestDispatcher("rBDetails.jsp").forward(request, response);四、圖書管理模塊1 .圖書列表顯示截圖:JavaWeb圖書信息管理系統(tǒng)JavaWebBookManagerSysteu罌J出煤也名物像本導(dǎo)出耳拼IT、1Jar*K”t*Fr*cr<i仃附口5)pTen.llCt骯鵬9aw修點(diǎn):|陽耳2I&WMi.Mf-rl4力梟Mb產(chǎn)陽loProflr'WPrtftikiHill駐鵬L3TO格4|H>¥.zjtnywLkVUL.劭,tfrfreasic
41、iIhll阱ce廠OWl1w前的1劇Tflrlt*P!rflp.iiir4ii呻落1grm斯名|HR511貳氏4舊e-Buia"55孫H*-iTsmtiiErreHwtoPv早FTcnli:=,1HQ1阱便t林|W«TheJ's立IrtTLTi-;CrnneCTtlt-i11PreniiceHillE卻i»5.改匿楞比慌曾右者雅出依世m(xù)迎的I:(甘悝I創(chuàng)/怡過售菁膏副jurs-tt£不總會期里行星霞示睡當(dāng)E苣亮嵌1/4Tff|I下典圖4-9圖書列表顯不代碼部分:圖書管理模塊的控制器在ListBookServlet類中,其分辨的后綴為“.xx”,當(dāng)
42、進(jìn)入圖書列表頁面時,瀏覽器會發(fā)送"list.xx”的請求到web.xml,web.xml根據(jù)后綴找到該控制器,在將請求切割成“l(fā)ist”字符串,到下面代碼塊:tryStringisbn=ParamUtil.getString(request.getParameter("qisbn");StringbookName=newString(ParamUtil.getString(request.getParameter("bookName").getBytes("iso-8859-1"),"GBK");Stri
43、ngqueryParam="&isbn="+isbn+"&bookName="+bookName;List<BookModel>books=dao.quickSearch(isbn,bookName);request.setAttribute("books",books);request.setAttribute("queryParam",queryParam);/step2獲得轉(zhuǎn)發(fā)器RequestDispatcherrd="booksMain.jsp" );requ
44、est.getRequestDispatcher(/step3 轉(zhuǎn)發(fā)rd.forward(request,response);catch(Exceptione)e.printStackTrace();thrownewServletException();在獲得通過空的書名和isbn,去DAO層調(diào)用quickSearch()方法,查詢所有書籍2 .圖書添加截圖:JavaWch圖書信息管理系統(tǒng)Erm而naila博*由二i己IF-出廿Fr吊巾匚.舊墓11y儕格joe審靜平帶3WB*1'IF*麻聿*4作牙Faulm111sli"«BdlSulltFIkiri溫錄h善支-te
45、.二皆殖131fMd總竺kuuB年J辜#的局日慎處畏ft帕».11,門口口Esiarrt.b/m!S«t4倒照ManagerSystemr«»wi'-#rwitwetim-fMivi用“田小irewiFmnWw海圖4-10圖書添加代碼部分:當(dāng)點(diǎn)擊圖書添加按鈕時,頁面會重定向到addBook.jsp頁面,如上圖。在該頁面將要添加圖書的各項(xiàng)信息。其中作者添加要從數(shù)據(jù)庫作者表中去選擇。當(dāng)添加的isbn號已存在數(shù)據(jù)庫時,則無法添加。添加isbn時,點(diǎn)擊檢查sibn按鈕,調(diào)用下面方法檢查isbn是否重復(fù):if(action.equals("/ch
46、eckIsbn")tryStringisbn=ParamUtil.getString(request.getParameter("isbn");booleanflag=dao.checkIsbn(isbn);PrintWriterout=response.getWriter();out.print(flag);out.flush();out.close();catch(Exceptione)e.printStackTrace();thrownewServletException();對于添加信息的合理性檢查,代碼如下(jquery代碼):檢查isbn合理性:$(&
47、quot;#checkISBN").click(function()$("#checkImg").show();varisbn=$("#isbn").val();if(isbn="")alert("isb不能為空!");$("#checkImg").fadeOut(1000);flag0=false;else實(shí)行ajax同步處理,并發(fā)送post請求,調(diào)用checkIsbn()方法:$.ajaxSetup(async:false);$.post("checkIsbn.xx&qu
48、ot;,"isbn":isbn,function(data)if(data="true")名可用已經(jīng)存在alert("isbn");$("#checkImg").fadeOut(1000);flag0=true;elsealert("isbn");$("#checkImg").fadeOut(1000);););,"text"flag0= false);$("#isbn").change(function()varisbnTxt=$(t
49、his).val();if(isbnTxt="").css( "color" , "red" );$("#checkDetails").text("isbn不能為空flag1=false;else$("#checkDetails").text("");flag1=true;);對書名的非空檢查$("#bookName").change(function()vartext=$(this).val();if(text="")$(&
50、quot;#checkName").text("書名不能為空").css("color","red");flag2=false;else$("#checkName").text("正確").css("color","green");flag2=true;對價格的合理性進(jìn)行檢查,必須為數(shù)字,不能為0,必須為正數(shù)varreg=/Nd1,4(.d1,6)?$/;varreg11=/A01,4$(.0*)?/;$("#bookPrice&quo
51、t;).change(function()varval1=$(this).val();if(!val1.match(reg)$( "#priceDetail").text(" 價格必須為合理數(shù)字格式 " ).css( "color", "red" ); elseflag3 = false ;if (val1.match(reg11)|val1<=0)輸入 " ).css( "color", "red" );$( "#priceDetail"
52、).text(" 價格不能為 0 ,請重新flag3=falseelse$( "#priceDetail").text(" 輸入正確").css("color","green");對于年份的合理性檢查,年份所要求格式為:);flag3 =trueXXXXvar reg1 = /Ad4$/;$( "#age" ).change(function()var age = $(this ).val();if(!age.match(reg1)$( "#ageDetail").
53、text(" 年份格式不符合要求" ).css( "color", "red" );flag4=falseelse$( "#ageDetail").text(" 輸入正確" ).css( "color", "green" );flag4=true;對于版本號的合理性檢查varreg2=/Nd1,2$/;$("#edition").change(function()varedition=$(this).val();if(edition=&
54、quot;"|!edition.match(reg2)$("#editionDetail").text("版本號格式不符合要求").css("color","red");flag6=false;else$("#editionDetail").text("輸入正確").css("color","green");flag6=true;);對于出版社的非空檢查,將數(shù)據(jù)庫中所以出版社集合放在下拉框中$("#selectPub
55、lisher").change(function()if($("#selectPublisher").val()="")flag5=false;alert("請選擇出版社");elseflag5=true;);提交添加表單操作$( "#form1" ).submit(function ()$("#isbn").change();$("#bookName").change();$("#age").change();$("#edition&
56、quot;).change$("#selectPublisher").change();$("#bookPrice").change();checkForm1(this);returnflag1&&flag2&&flag3&&flag4&&flag5&&flag6;););實(shí)現(xiàn)圖片上傳功能的代碼:functionupload()varpath=$("#path").val();$.ajaxSetup(async:false);$.post("./
57、upload","path":path,function(data)if(data="true")$("#picImg").src("bms/images/"+path);elsealert("上傳失敗");,"text");returntrue;作者下拉框左右移動的方法代碼:functionmoveitem(fromSel,toSel)varj=0;varfromOpt=fromSel.options;vartoOpt=toSel.options;vartoLen=toSel.length;/當(dāng)前目標(biāo)選擇菜單的項(xiàng)數(shù)for(vari=fromOpt.length-1;i>=0;i-)if (fromOpti.selected) toSeltoLen+j=newOption(fromOpti.text,fromOpti.value);fromOpti=null;j+;提交所選作者:functionche
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 螞蟻搬家合同范本
- 草坪養(yǎng)護(hù)合同范本
- 定制球鞋合同范本
- 2025年中高壓變量葉片泵項(xiàng)目建議書
- 節(jié)能項(xiàng)目立項(xiàng)報告書
- 農(nóng)產(chǎn)品電商中心技術(shù)可行性分析
- 2025年板材卷材:普中板項(xiàng)目發(fā)展計劃
- 中國小功率非道路柴油機(jī)市場規(guī)?,F(xiàn)狀及投資規(guī)劃建議報告
- 市商貿(mào)有限責(zé)任公司新建綜合樓項(xiàng)目可行性實(shí)施報告
- 2025年塑膠合金行業(yè)深度研究分析報告
- 壓瘡護(hù)理質(zhì)控反饋
- 山東春季高考Photoshop考試復(fù)習(xí)題庫(含答案)
- 湖南省長沙市2023-2024學(xué)年八年級下學(xué)期入學(xué)考試英語試卷(附答案)
- 一年級美術(shù)課后輔導(dǎo)教案-1
- 智慧社區(qū)建設(shè)中的智能化醫(yī)療與康養(yǎng)服務(wù)
- 2023-2024年人教版八年級上冊數(shù)學(xué)期末模擬試卷(含答案)
- 數(shù)據(jù)采集管理制度范文
- 幼兒園小班開學(xué)家長會課件
- 中藥抗骨質(zhì)疏松作用
- 中建綜合支吊架施工方案
- 建筑施工規(guī)范大全
評論
0/150
提交評論