【正文】
. j a vaM e m b e r _N a m eM e m b e r _P a s s w o rdF L A G = 1L o g i n ( )是 否 存 在M e m b e r表M a n a g e .j s pt r u eL o g i n F a i lf a l s e 圖 22 登錄 模塊流程圖 商品信息查看模塊 在 中點擊“商品信息管理頁面”,鏈接為 ”?flag=1” 。接受到 Flag=1 ,調(diào)用 FindAll()方法,查詢 MysqL 數(shù)據(jù)庫中 goods表,查詢所有商品信息,返回一個 ListGoods 集合,名為 list。 在商品信息展示頁面,創(chuàng)建一個 。將 request 范圍內(nèi)的“ goods”接收并進行強制類型轉(zhuǎn)換。 在 每一行商品的后面,加上“刪除”“更新”兩個鏈接,分別為:“ o?flag=2amp。id=%=(i).getID()%”。 相關(guān)流程見圖 23。 顧客可以在購物車中編輯商品信息,包括修改商品數(shù)量,刪除某些不想要的商品,或者清空購物車。如果點擊“結(jié)賬”,則進入生成流水號頁面。 購物車流程圖如圖 511 所示。 表 31 商品基本信息表 名稱 含義 類型 約束 備注 GoodsID 商品 ID Int 20 主鍵 自動增長 GoodsName 商品名稱 Varchar 10 唯一值 GoodsType 商品類型 Int 20 不為空 GoodsPrice 單價 Int 10 不為空 GoodsPurchasePrice 進價 Int 10 不為空 GoodsAmount 商 品數(shù)量 Int 10 不為空 GoodsGetTime 進貨日期 Date 不為空 GoodsMaintainTime 保質(zhì)期 Int 10 不為空 單位為(天) GoodsFactory 生產(chǎn)廠家 Varchar 50 不為空 員工信息表見 表 32。 表 33 進貨單 表 名稱 含義 類型 約束 備注 Input_ID 進貨單 ID Int 50 主鍵 自動增長 Input_GoodsID 商品 ID Int 20 不為空 Input_GoodsName 商品名稱 Varchar 10 唯一值 Input_GoodsType 商品類型 Int 20 不為空 Input_GoodsPrice 單價 Int 10 不為空 Input_GoodsPurchasePrice 進價 Int 10 不為空 Input_GoodsAmount 商品數(shù)量 Int 10 不為空 Input_GoodsGetTime 進貨日期 Date 不為空 Input_GoodsMaintainTime 保質(zhì)期 Int 10 不為空 單位為(天) Input_GoodsFactory 生產(chǎn)廠家 Varchar 50 不為空 訂單表見表 34。 表 35 交易單表 名稱 含義 類型 約束 備注 Sale_ID 交易單 ID Varchar 20 主鍵 自動增長 Sale_Date 交易日期 Date 不為空 Sale_Accountcode 交易流水號 Varchar 50 不為空 4 系統(tǒng)詳細設(shè)計 與實現(xiàn) 由于小型超市信息管理系統(tǒng)結(jié)構(gòu)比較簡單,相對大型的,成熟的超市采用的管理系統(tǒng)來說,無論在系統(tǒng)的性能,結(jié)構(gòu)復(fù)雜度,安全性上面都無法與之相比。在本章節(jié)中,選取小型超市信息管理系統(tǒng)關(guān)鍵模塊進行設(shè)計闡述。 有關(guān)本系統(tǒng)的文件結(jié)構(gòu)如下: 此處為小型超市信息管理系統(tǒng)關(guān)鍵模塊的詳細描述,并附上相關(guān)代碼以及截圖。 相關(guān)代碼如下: : % page language=java import=.* pageEncoding=UTF8% % taglib uri= prefix=c% % String path = ()。 % !DOCTYPE HTML PUBLIC //W3C//DTD HTML Transitional//EN html head base href=%=basePath% titleMy JSP 39。 starting page/title meta equiv=pragma content=nocache meta equiv=cachecontrol content=nocache meta equiv=expires content=0 meta equiv=keywords content=keyword1,keyword2,keyword3 meta equiv=description content=This is my page ! link rel=stylesheet type=text/css href= link type=text/css rel=stylesheet href=css/ / script type=text/javascript !將表單中的數(shù)據(jù)清空 function clearInfo(onePart){ (onePart).innerHTML = 。tishiMsg39。tishiMsg39。 margintop: 6px。點擊 submit按鈕,按照 action 中的路徑調(diào)用方法,傳遞方法的類型為“ post”,將提交至 servlet 的dopost 方法。 // 根據(jù)用戶名查詢用戶表中的數(shù)據(jù) public ListUser findUserInfoByName(String userName)。 // 向用戶管理中添加用戶信息 public boolean add(User user)。 // 根據(jù)用戶名編號查詢用戶表中的數(shù)據(jù) public User findUserInfoById(int userId)。 // 分頁獲取用戶信息 public PageSize getUserInfoByPage(int currPage)。 }說明: login 方法,接受前臺頁面?zhèn)鬟f過來的用戶名與密碼,并利用編碼轉(zhuǎn)換類將用戶名轉(zhuǎn)換為 UTF8 編碼類型,解決了亂碼問題。如果返回值為空,則輸出登錄失敗頁面。 public interface UserDao { // 判斷用戶登錄是否成功 public User ifLogin(String name, String password)。 // 獲 取數(shù)據(jù)庫中用戶表中的數(shù)據(jù)并封裝在集合中 public ListUser getAllUserInfo()。 // 根據(jù)用戶編號修改用戶管理頁面中的用戶信息 public int updateUserInfo(User user, int userId)。 // 根據(jù)用戶編號 刪除用戶管理頁面中相應(yīng)的用戶信息 public int deleteUserInfoById(int userId)。 //修改用戶密碼 public int updateUserPwdInfo(int userId,String userNewPwd)。首先連接至數(shù)據(jù)庫,利用前臺傳來的用戶名,密碼字段對數(shù)據(jù)庫進行查詢,以結(jié)果集形式進行 返回。 相關(guān)界面設(shè)計見圖 41,圖 42,圖 43。 String basePath = () + :// + () + : + () + path + /。39。 } /script /head body class=bluestyle div id=login div class=icon/div div class=loginbox form method=post action=DologinServlet dl dt 用戶名: /dt dd input type=text name=userName class=inputtext onFocus=clearInfo(39。) / /dd dt 密 碼: /dt dd input type=password name=passWord class=inputtext / /dd /dl div class=buttons input type=submit name=submit value=登錄系統(tǒng) class=inputbutton / input type=reset name=reset value=重 填 class=inputbutton onclick=clearInfo(39。) / /div /form c:if test=${flag==false} div style=marginleft: 450px。 color: F00 span id=tishiMsg style=color: F00登錄失??!請重新登陸 /span 說明: FindAll方法調(diào)用 gooddao的 selectGoods方法 ,將所有商 品信息讀出,以集合的形式存入變量“ goods”中,在中進行調(diào)用。 圖 43 商品 添加 頁面 base href=%=basePath% titleMy JSP 39。 starting page/title meta equiv=pragma content=nocache meta equiv=cachecontrol content=nocache meta equiv=expires content=0 meta equiv=keywords content=keyword1,keyword2,keyword3 meta equiv=description content=This is my page ! link rel=stylesheet type=text/css href= link type=text/css rel=stylesheet href=css/ / script type=text/javascript !驗證賬單編號 function checkNum(){ var txtId=(billNum).value。} if(flag==false){ (idMsg).innerHTML=賬單編號已經(jīng)存在 ! 。 if(!(txtId)){ (idMsg).innerHTML=賬單編號必須為數(shù)字! 。 } } !將表單中的數(shù)據(jù)清空 function clearInfo(onePart,twoPart){ (onePart).value=。 } !驗證交易金額 function checkMoney(){ var txtMoney=(money).value。} var reg=/^[09]*$/。 (money).value=。 if(==0){ (unitMsg).innerHTML=請輸入交易單位 !。 if(==0){ (amountMsg).innerHTML=交易數(shù)量不能為空! 。 if(!(txtAmount)){ (moneyMsg).innerHTML=非法字符 ,請輸入數(shù)字!。 } } !驗證商品名稱 function checkComName(){ var txtComName=(Name).value。} var reg=/^[\u4e00\u9fa5]{0,}$/。 (NameMsg).value=。 if(==0){ (discriptionMsg).innerHTML=商品描述不能為空! 。 } } !驗證各表單中輸入的數(shù)據(jù)時否合法 function submitYesNo