书签 分享 收藏 举报 版权申诉 / 29

类型订餐系统javaee课程设计.docx

  • 文档编号:13826541
  • 上传时间:2023-06-17
  • 格式:DOCX
  • 页数:29
  • 大小:364.07KB

formaction="login">

textfieldname="userName"label="用户名"value="">

textfield>

passwordname="password"label="密码"value="">

password>

submitvalue="登录"/>

propertyvalue="resultMSG"/>

form>

publicclassALogin

{publicvoiddoLogin(HashtableinputData,HashtableoutputData,

HttpSessionmySession)

throwsException

{//获取输入信息

StringsUsername=(String)inputData.get("username");

StringsPassword=(String)inputData.get("password");

//校验用户输入信息

LUserlUser=(LUser)GlobalObjectProvider.getLogicService(CommonConst.LOGIC_KEY_USER);

//如果对应的类没有的话,报错并返回login页面

if(lUser==null)

{thrownewException("用户名或密码错误请重新输入!

");}

//获取用户信息

UseruserInfo=lUser.getUserInfo(sUsername,sPassword);

if(userInfo==null)

{

outputData.put("pageId",CommonConst.VIEWID_LOGIN);

outputData.put("errMsg","用户名密码检查失败!

请重新输入。

");

outputData.put("username",sUsername);

return;

}

Else

{

outputData.put("pageId",CommonConst.VIEWID_MENU);

//往session中设置用户信息

mySession.setAttribute("loginUser",userInfo);

return;

}}}

3.2订餐系统主页面模块设计

用户可以通过订餐系统主页面进行订餐如图5所示。

图5

功能描述:

顾客登陆管理,包括

(1)登陆时可以以游客或者会员的两种方式进行订餐操作,如果是会员登陆,先前需要录入用户名、密码、验证码,以便系统确认登陆成功。

(2)会员个人信息管理,会员可以修改个人资料(如:

,地址等),也可以查看订餐信息,了解当前订餐的动态(详见会员登录流程图)。

(3)选购美食,作为顾客,在挑选美食的过程中,可以直接将称心的美食选进购物车中也可通过一系列查询,进一步了解后,再选择美食(详见选购美食流程图)。

选购美食部分代码如下:

……//得到在Spring中动态注入的Service层对象

……//得到日志对象log

publicActionForwardqueryForAll(ActionMappingmapping,ActionFormform,

HttpServletRequestrequest,HttpServletResponseresponse){

Stringforward="first";

if(request.getParameter("user").equals("manager")){

forward="queryDishes";

}

Foodfood=newFood();

ListfoodList=null;

ListtopList=null;

intallRecorders=foodService.queryForAllRecorders(food);

//当不是第一次登陆页面时

if(request.getParameter("cp")!

=null&&request.getParameter("ls")!

=null){

intcurrentPage=Integer.parseInt(request.getParameter("cp"));

intlineSize=Integer.parseInt(request.getParameter("ls"));

if(currentPage>1&&lineSize>allRecorders){

currentPage=1;

}

food.setCurrentPage(currentPage);

food.setLineSize(lineSize);

foodList=foodService.queryForFood(food);

}else{

//第一次来到页面,top5和食品图片等信息

foodList=foodService.queryForFood();

}

intpageSize=(allRecorders+food.getLineSize()-1)/food.getLineSize();

request.setAttribute("pageSize",pageSize);

request.setAttribute("allRecorders",allRecorders);

topList=foodService.queryForTop();

//下拉列表中的信息

ListfoodAttributeList=foodService.querySelectInfo();

//传给top10的list

request.setAttribute("topList",topList);

//传给视频图片等信息的list

request.setAttribute("foodList",foodList);

//传给下拉列表的list

request.setAttribute("foodAttributeList",foodAttributeList);

returnmapping.findForward(forward);

}

首先判断是从哪个页面跳到到这里来调用这一方法,随着调用者的不同,方法也会将最后的传输到不同的页面中去。

然后查询出所有美食的记录数,再对是否是第一次登录到此页面进行判断,以为,第一次登录时当前页数和每页显示行数是默认的,而此后登录到此页面时有可能发生改变,最后再用Spring中动态注入的服务层中食品类的对象调用查询食品信息的方法,再将结果通过request对象传输到对应的页面中去。

publicStringgetFoodInfo(Stringsrc){

//图片绝对路径

Stringpicsrc=null;

StringfoodInfo=null;

//只保留相对路径,将绝对路径去掉

Stringtemp[]=src.split("/");

for(inti=0;i

//得到图片的相对路径

picsrc=temp[temp.length-1];

}

Foodfd=foodDAO.query(picsrc);

foodInfo=fd.getFoodDescription();

returnfoodInfo;

}

此方法要在jsp页面中有DWR的对象调用,其中得到的路径是图片在服务器上的绝对路径,首先用String类中的split方法将其截成数据库中所存入得图片路径形式,然后再作为查询条件在数据库中查询,查询出美食的信息。

然后DWR对象会将查询出来的信息作为jsp页面中回调函数的参数传回页面端。

 

3.3美食信息添加功能模块

功能描述:

对菜品信息进行维护,包括:

添加菜品,添加菜品图品,价格,是否是推荐菜品等。

菜品过季下架,用于菜品原料缺少或菜品过季等情况,进行逻辑删除。

菜品的查询,可以按菜品的名称、价格、销售量、是否是推荐菜品进行查询,默认是推荐菜品查询。

修改维护菜品信息,主要针对菜品原料的价格更变菜品的价格及菜品是打折时的价格更变,如图6所示。

图6

美食添加中图片上传功能代码如下:

/**图片上传**/

……//定义局部变量

try{

IPTimeStampits=newIPTimeStamp(request.getRemoteAddr());

//自动为上传图片命名,以确定图片的唯一性,以防覆盖

foodPictureAddr=its.getIPTimeStampRand()+"."+its.getLastName(file.getFileName());

stream=file.getInputStream();

filePath=this.getServlet().getServletContext().getRealPath("/images/food")+"/"+foodPictureAddr;

bos=newFileOutputStream(filePath);

intbytesRead=0;

byte[]buffer=newbyte[8192];

while((bytesRead=stream.read(buffer,0,8192))!

=-1){

bos.write(buffer,0,bytesRead);

}

}catch(Exceptione){

e.printStackTrace();

}finally{

try{

bos.close();

stream.close();

}catch(IOExceptione){

e.printStackTrace();

}catch(Exceptione){}

}

file.destroy();

/**图片上传结束**/

首先,有系统自动未上传图片命名,防止覆盖,然后通过字符串拼接的方式作为图片的地址存入数据库(例如:

图片名称叫aaa,扩展名为jpg,在存入数据库中的地址就是相对地址系统自动生成的名字.jpg),在通过输入输出流的方式将图片上传到服务器上。

即由从form中得到的图片路径以流的方式服务器上的一本系统自动并命好的文件上,最后关闭输入流和输入流,并将文件损毁。

另附图片自动命名类的部分代码如下

//为了得到不重复的图片名称(首先用数字零给本机IP地址的点补位,然后再加上当前时间(精确到毫秒),最后再加上三个随机数)

……//定义局部变量

publicStringgetIPTimeStampRand(){

StringBufferbuf=newStringBuffer();

if(ip!

=null){

Stringstr[]=this.ip.split("\\.");

for(inti=0;i

buf.append(this.addZero(str[i],3));

}

}

buf.append(this.getTimeStamp());

Randomrand=newRandom();

for(inti=0;i<3;i++){

buf.append(rand.nextInt(10));

}

returnbuf.toString();

}

ip已经在实例化自动命名类对象是赋值,即是本机的ip地址,将ip地址通过“.”字符来分开有字符串数组接收,再将每部分未满三位的进行补零操作,再加上时间戳,最后加上三位随机数,再将StringBuffer转换成String对象最后得到的容既是系统为图片自动赋好的名字。

另附美食类别处理代码如下:

if((!

attributeId.trim().equals("0"))&&!

(attributeId.trim().equals(""))){

food.setFoodTypeId(attributeId);

}else{

//新类别

foodAttributeValue=foodService.queryFoodAttributeId();

foodAttributeId=foodAttributeValue.getAttributeId();

try{

//调用bean中的changeAttributeId方法将foodAttributeId转换成foodattribute表中的格式

attributeid=foodAttributeValue.changeAttributeId(foodAttributeId);

}catch(Exceptione){

//超过3位,提示减少不必要的食品类型,或者联系hhq

e.printStackTrace();

log.error("系统添加食品类别信息过多!

",e);

thrownewSystemException("foodattributelargenum

配套讲稿:

如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

特殊限制:

部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

关 键  词:
系统 javaee 课程设计
提示  冰点文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:订餐系统javaee课程设计.docx
链接地址:https://www.bingdoc.com/p-13826541.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2


收起
展开