午夜亚洲国产日本电影一区二区三区,九九久久99综合一区二区,国产一级毛片视频,草莓视频在线观看精品最新

加急見刊

藥品進(jìn)銷存儲(chǔ)管理系統(tǒng)(二)

未知

涉及該模塊文件分別為:register.jsp、 RegisterAction.java以及UserDAO.java。

4.1.2 文件設(shè)計(jì) register.jsp文件:

按照下述內(nèi)容設(shè)計(jì)register.jsp文件。

表單名:form1。

表單執(zhí)行程序:register.jsp。

表單數(shù)據(jù)傳輸方法:post。

表單的要素如附錄一表1所示。

在structs-config.xml中actionMappings中配置如下:

type="my.action.RegisterAction" validate="true">

//帶表單驗(yàn)證類的action,input參數(shù)為表單證錯(cuò)誤返回的頁面,name是接受頁面參數(shù)的表單類,path為頁面請(qǐng)求到服務(wù)器的路徑,type為處理請(qǐng)求的action類的路徑,forward為驗(yàn)證成功與否的轉(zhuǎn)發(fā)路徑。

RegisterAction.java代碼如下:

package my.action;

public class RegisterAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) {

UserBean user = new UserBean();

//聲明JavaBean

RegisterForm rform = (RegisterForm) form;

//從表單類中接過已驗(yàn)證過的表單信息

user.setUsername(rform.getUsername());

user.setPassword(rform.getPassword());

user.setSex(rform.getSex());

user.setBorntime(rform.getYear() + "-" + rform.getMonth() + "-"

+ rform.getDay());

user.setEmail(rform.getEmail());

user.setIntroduce(rform.getIntroduce());

user.setRealname(rform.getRealname());

user.setTelNumber(rform.getTelNumber());

user.setStatus("0");

//賦值Bean中所有屬性

UserBean database=new UserDAO().findOne(user.getUsername());

//注冊(cè)之前檢查用戶名是否已經(jīng)存在,若存在則生成錯(cuò)誤信息,反饋到注冊(cè)頁面

if(database!=null){

request.setAttribute("login.error", "對(duì)不起,您的用戶名已經(jīng)被人使用,請(qǐng)重新輸入!");

return mapping.findForward("register.error");

}

//所有驗(yàn)證完成,將用戶信息入庫,成功則將成功信息反饋到首頁

int n = new UserDAO().insertUser(user);

if (n == 0) {

return mapping.findForward("register.error");

} else {

request.setAttribute("login.error", "注冊(cè)成功,請(qǐng)等待審核!!");

return mapping.findForward("register.ok");

}

}

}

4.2 用戶登陸模塊 4.2.1 用戶登陸流程分析 用戶在正確注冊(cè)之后,在后臺(tái)經(jīng)管理員審批,正式獲得日志系統(tǒng)的使用權(quán)限。在首頁輸入用戶名和密碼登陸系統(tǒng)。若用戶名和密碼有誤,將返回登陸頁,并顯示錯(cuò)誤提示。用戶名和密碼無誤則成功登入系統(tǒng)。后臺(tái)系統(tǒng)中管理員登陸模塊與該模塊實(shí)現(xiàn)類似,本文不再敘述。用戶登陸過程活動(dòng)圖如下圖4-2。

圖4-2 用戶活動(dòng)過程

4.2.2 用戶登陸模塊文件設(shè)計(jì) 用戶登陸模塊主要有三個(gè)文件。負(fù)責(zé)視圖層的login.jsp和負(fù)責(zé)控制層的LoginAction.java和負(fù)責(zé)模型層的UserDAO.java和UserBean.java。

在structs-config.xml中actionMappings中配置如下:

type="my.action.LoginAction" validate="true">

其中模塊商業(yè)邏輯的主要部分LoginAction.java的代碼如下:

package my.action;

public class LoginAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) {

LoginForm userform=(LoginForm)form;

//獲取頁面表單信息

UserBean bean=null;

bean=new UserDAO().finduser(userform.getUsername(), userform.getPassword());

//將用戶從登陸頁面輸入的用戶名和密碼與user表中用戶名與密碼核對(duì),若不一致,生成錯(cuò)誤信息,返回到登陸頁面

if(bean==null){

request.setAttribute("login.error", "您還沒有注冊(cè),請(qǐng)先注冊(cè)!");

return mapping.findForward("login.error");

}else{

String status=bean.getStatus();

if(status.equals("0")){

request.setAttribute("login.error", "抱歉,您的帳戶正在審批中,暫時(shí)無法登陸!");

//若用戶名和密碼一致,再次核對(duì)用戶審批狀態(tài),未審批完成,生成提示信息并返回首頁

return mapping.findForward("login.error");

}

List kind=new KindDAO().findKind(userform.getUsername());

List diary=new DiaryDAO().findDiaryByUser(bean.getUsername());

request.setAttribute("diary", diary);

request.getSession().setAttribute("kind", kind);

request.getSession().setAttribute("user", bean);

return mapping.findForward("login.ok");

}

}

}

4.3 日志管理模塊 4.3.1 日志管理功能模塊圖

4.3.2 設(shè)計(jì)思想及特點(diǎn) 注冊(cè)用戶登陸后進(jìn)入日志管理頁面能對(duì)日志進(jìn)行相關(guān)操作。具體來說,若用戶是第一次登陸,在添加日志之前系統(tǒng)會(huì)提示用戶先添加日志分類,所有日志均建立在分類之下的。在分類添加完成之后,用戶就能進(jìn)入日志維護(hù)頁面對(duì)日志進(jìn)行添加,刪除,修改操作了。值得注意的是在刪除分類時(shí),用戶在刪除類別的同時(shí),也把該類別下的所有日志刪除了。添加日志時(shí)用戶能夠通過設(shè)置日志狀態(tài)是否公開來決定是否讓日志被他人瀏覽,這樣能將優(yōu)秀的文章進(jìn)行相互交流。

下面主要給出添加日志的活動(dòng)圖和文件設(shè)計(jì):

活動(dòng)圖如下圖4-4。

圖4-4 添加日志活動(dòng)圖

type="my.action.AddDiaryAction" validate="true">

控制器層主要文件AddDiaryAction.java源代碼如下:

package my.action;

public class AddDiaryAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) {

HttpSession session=request.getSession();

UserBean user=(UserBean)session.getAttribute("user");

if(user==null){

return mapping.findForward("tohome.do");

}//驗(yàn)證用戶是否已經(jīng)登陸,若沒登陸則為非法登入,返回首頁

AddDiaryForm aform=(AddDiaryForm)form;

DiaryBean diary=new DiaryBean();

diary.setDiaryTitle(aform.getTitle());

diary.setContent(aform.getContent());

diary.setKindID(aform.getKind());

diary.setUserID(user.getUsername());

diary.setIsOpen(aform.getIsopen());

if(aform.getIsopen().equals("0")){

diary.setStatus("2");

}else{

diary.setStatus("0");

}

//接表單信息,并封裝到j(luò)vabean中

int n=new DiaryDAO().addDiary(diary);

//調(diào)用數(shù)據(jù)操作對(duì)象的add方法,將信息入庫,成功則返回到成功頁面

if(n!=0){

List list=new DiaryDAO().findDiary(diary.getKindID());

request.setAttribute("diary", list);

return mapping.findForward("addDiary.ok");

}else{

return mapping.findForward("addDiary.error");

}

}

}

4.4 后臺(tái)用戶管理模塊 4.4.1 主要功能概述 該模塊主要是由查詢和顯示兩個(gè)子模塊組合而成。管理能通過在查詢模塊輸入用戶名、性別、聯(lián)系方式、真實(shí)姓名之后選擇操作進(jìn)行查詢,在顯示模塊能根據(jù)用戶選擇的查詢方式和操作顯示不同的結(jié)果。管理員能在顯示頁面對(duì)用戶進(jìn)行相應(yīng)操作。

選擇“停用”后頁面顯示結(jié)果如下圖4-5。

圖4-5 選擇“停用”后頁面顯示結(jié)果

4.4.2 查詢與分頁 在此模塊中最為關(guān)鍵的就是查詢與分頁功能的實(shí)現(xiàn)。本系統(tǒng)在設(shè)計(jì)時(shí)將此過程分兩步來實(shí)現(xiàn)的。第一步用SearchUserAction.java來處理查詢要求;首先接受頁面查詢參數(shù)生成查詢所有記錄的SQL語句,然后運(yùn)用JAVA的String類的相關(guān)方法將SQL語句字符串進(jìn)行處理,等到查詢總記錄數(shù)目的CountSQL語句,再次通過得到的記錄總數(shù)和每頁應(yīng)該顯示記錄條數(shù)計(jì)算得到顯示總頁數(shù),然后將SQL語句和頁數(shù)傳給第二步。第二步ShowUserAction.java負(fù)責(zé)顯示個(gè)分頁內(nèi)容。通過接受第一步所傳過來的SQL語句和總頁數(shù)生成新的光查該頁記錄數(shù)的SQL語句,再一次從數(shù)據(jù)庫中查詢出具體記錄并傳到j(luò)sp頁面將結(jié)果顯示出來。

該過程活動(dòng)圖如圖4-6。

圖4-6 過程活動(dòng)圖

在structs-config.xml中actionMappings中配置如下:

SearchUserAction.java源代碼:

package my.action;

public class SearchUserAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) {

HttpSession session=request.getSession();

AdminBean admin=(AdminBean)session.getAttribute("admin");

if(admin==null){

return mapping.findForward("tohome.do");

}

//管理員登陸驗(yàn)證,若為非法登陸,則返回首頁

String sql = this.createSql(request, response);

//生成分頁之前的sql語句

String countSql = this.getCountSql(sql);

//生成統(tǒng)計(jì)所有記錄數(shù)的sql語句

int total = new UserDAO().getUserNum(countSql);

//調(diào)用數(shù)據(jù)操作對(duì)象,統(tǒng)計(jì)所有記錄數(shù)

int pageNumber = 1;

int perPageNumber = 7;

pageNumber = this.getPageNumber(total, perPageNumber);

//調(diào)用統(tǒng)計(jì)頁數(shù)方法,獲得總頁數(shù)

request.getSession().setAttribute("u.pageNumber", pageNumber);

request.getSession().setAttribute("u.perPageNumber", perPageNumber);

request.getSession().setAttribute("u.sql", sql);

return mapping.findForward("search.ok");

}

//將所有分頁信息放入session對(duì)象,并分發(fā)至顯示處理類

//生成統(tǒng)計(jì)記錄數(shù)的sql語句的方法

private String getCountSql(String sql) {

String temp = sql.substring(sql.indexOf("from") - 1);

temp = "select count(*) " + temp;

return temp;

}

//生成頁數(shù)

private int getPageNumber(int total, int numPerPage) {

int pageNumber = 0;

if (total % numPerPage == 0) {

pageNumber = total / numPerPage;

} else {

pageNumber = (total / numPerPage) + 1;

}

return pageNumber;

}

}

ShowUserAction.java的源代碼:

package my.action;

public class ShowUserAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) {

HttpSession session=request.getSession();

AdminBean admin=(AdminBean)session.getAttribute("admin");

if(admin==null){

return mapping.findForward("tohome.do");

}

下載