每天都要认真学习,才能更加进步。└(^o^)┘
在工作和学习的过程中要善于思考,勤于学习。并做出适当的记录,才能最快速的学习并掌握一项知识。希望在这个平台和大家一起共同成长,和大家分享一个SSM(MYECLIPSE)项目,该项目名称为基于web的java食堂管理系统。先简单介绍一下这个项目的背景:食堂管理是指以专业、先进的物流基础设施和大规模的统一采购、源头采购形成品种、价格、数量、质量上的突出优势,为各企业单位、学校、工厂和自营餐厅的客户或其他餐饮服务企业配送所需的肉类、蔬菜、豆制品、主副食品及调味料等。采用当前非常流行的B/S体系结构,以JAVA作为开发技术,主要依赖SSM技术框架,mysql数据库建立本系统。
大家在学习中编写SSM(MYECLIPSE)框架的项目时常选用的开发工具是MYECLIPSE,从上面的项目背景中,我们可以得出基于web的java食堂管理系统拥有 后台。才能让用户完整的使用该项目。
基于web的java食堂管理系统项目的登录角色包括了管理员、采购员,系统中所有的用户都是拥有账号密码字段的。其中管理员只能在后台和数据库进行添加。而其余的登录角色可以通过注册的方式成功拥有系统账号密码。
系统中菜品、食材、菜品食材之间具有较强的联系性。他们之间的关系为菜品食材的菜品与菜品的mingzi字段对应、菜品食材的菜品id与菜品的id字段对应、菜品食材的食材与食材的mingzi字段对应、菜品食材的食材id与食材的id字段对应
。在菜品食材表中可以体现出这种关系。在系统的功能中,菜谱菜品是一个重要的表。这个表使得菜谱、菜品关联了起来。在菜谱菜品表中菜谱菜品的菜谱名字与菜谱的mingzi字段对应、菜谱菜品的菜谱id与菜谱的id字段对应、菜谱菜品的菜品名字与菜品的mingzi字段对应、菜谱菜品的菜品id与菜品的id字段对应、菜谱菜品的菜品价格与菜品的jiage字段对应
,他们拥有关联关系。系统中菜谱、食材、菜谱食材之间具有较强的联系性。他们之间的关系为菜谱食材的菜谱与菜谱的mingzi字段对应、菜谱食材的菜谱id与菜谱的id字段对应、菜谱食材的食材名字与食材的mingzi字段对应、菜谱食材的食材id与食材的id字段对应、菜谱食材的食材价格与食材的jiage字段对应、菜谱食材的食材单位与食材的danwei字段对应
。在菜谱食材表中可以体现出这种关系。
总结得出基于web的java食堂管理系统项目所有数据为:管理员(admin)、食材(shicai)、菜品(caipin)、菜品食材(caipinshicai)、菜谱(caipu)、菜谱菜品(caipucaipin)、菜谱食材(caipushicai)、采购员(caigouyuan)
基于web的java食堂管理系统之管理员表
字段名 | 类型 | 属性 |描述
id| INT(11) | PRIMARY KEY |管理员id
username| VARCHAR(255) | |账号
password| VARCHAR(255) | | 密码
基于web的java食堂管理系统之食材表
字段名 | 类型 | 属性 |描述
id| INT(11) | PRIMARY KEY |食材id
mingzi| VARCHAR(255) | |名字
jiage| VARCHAR(255) | |价格
danwei| VARCHAR(255) | | 单位
基于web的java食堂管理系统之菜品表
字段名 | 类型 | 属性 |描述
id| INT(11) | PRIMARY KEY |菜品id
mingzi| VARCHAR(255) | |菜品名字
jiage| VARCHAR(255) | |价格
leixing| VARCHAR(255) | | 类型
基于web的java食堂管理系统之菜品食材表
字段名 | 类型 | 属性 |描述
id| INT(11) | PRIMARY KEY |菜品食材id
caipin| VARCHAR(255) | |菜品
caipinid| VARCHAR(255) | |菜品id
shicai| VARCHAR(255) | |食材
shicaiid| VARCHAR(255) | |食材id
shicaifenliang| VARCHAR(255) | |食材分量
shicaijiage| VARCHAR(255) | | 食材价格
基于web的java食堂管理系统之菜谱表
字段名 | 类型 | 属性 |描述
id| INT(11) | PRIMARY KEY |菜谱id
mingzi| VARCHAR(255) | |菜谱名字
shijian| VARCHAR(255) | |时间
jiage| VARCHAR(255) | |价格
shenhe| VARCHAR(255) | |审核
leixing| VARCHAR(255) | | 类型
基于web的java食堂管理系统之菜谱菜品表
字段名 | 类型 | 属性 |描述
id| INT(11) | PRIMARY KEY |菜谱菜品id
caipu| VARCHAR(255) | |菜谱名字
caipuid| VARCHAR(255) | |菜谱id
caipinmingzi| VARCHAR(255) | |菜品名字
caipinid| VARCHAR(255) | |菜品id
caipinjiage| VARCHAR(255) | |菜品价格
renshu| VARCHAR(255) | |人数
caipingzongjia| VARCHAR(255) | | 菜品总价
基于web的java食堂管理系统之菜谱食材表
字段名 | 类型 | 属性 |描述
id| INT(11) | PRIMARY KEY |菜谱食材id
caipu| VARCHAR(255) | |菜谱
caipuid| VARCHAR(255) | |菜谱id
shicai| VARCHAR(255) | |食材名字
shicaiid| VARCHAR(255) | |食材id
shicaijiage| VARCHAR(255) | |食材价格
shicaidanwei| VARCHAR(255) | |食材单位
shicaifenliang| VARCHAR(255) | |食材分量
shicaizongjia| VARCHAR(255) | | 食材总价
基于web的java食堂管理系统之采购员表
字段名 | 类型 | 属性 |描述
id| INT(11) | PRIMARY KEY |采购员id
username| VARCHAR(255) | |账号
password| VARCHAR(255) | | 密码
//定义caipucaipinguanli方法响应页面请求
@RequestMapping(VALUE= "caipucaipinguanli")publicString caipucaipinguanli(HttpServletRequest request,HttpSession SESSION, HttpServletResponse response,String backurl) {
logger.debug("CaipucaipinController.caipucaipinguanli ......");
CaipucaipinExample example=NEW CaipucaipinExample();
List caipucaipinall=caipucaipindao.selectByExample(example);
request.setAttribute("caipucaipinall", caipucaipinall);
IF(backurl!= NULL && backurl.indexOf("caipucaipinguanli.action") == -1){
RETURN"forward:/" +backurl; }
RETURN"caipucaipinguanli";
}//定义 caipucaipinchakan方法
@RequestMapping(VALUE= "caipucaipinchakan")publicString caipucaipinchakan(HttpServletRequest request,HttpSession SESSION, HttpServletResponse response,String backurl) {
logger.debug("CaipucaipinController.caipucaipinchakan ......");
CaipucaipinExample example=NEW CaipucaipinExample();
List caipucaipinall=caipucaipindao.selectByExample(example);
request.setAttribute("caipucaipinall", caipucaipinall);
IF(backurl!= NULL && backurl.indexOf("caipucaipinchakan.action") == -1){
RETURN"forward:/" +backurl; }
RETURN"caipucaipinchakan";
}
添加菜谱菜品模块:
系统中存在添加菜谱菜品功能,通过点击添加菜谱菜品可以跳转到该功能模块,在该功能模块中,填写对应的菜谱菜品信息。菜谱菜品包含信息菜谱名字,菜谱id,菜品名字,菜品id,菜品价格,人数,菜品总价,填写完所有信息后,通过post方法将数据提交到tianjiacaipucaipin.action中,该地址将在服务器中caipucaipinController类中的tianjiacaipucaipinact方法中进行响应。响应结果为,获取所有的菜谱菜品信息,封装一个caipucaipin类,使用caipucaipinController类中定义的caipucaipindao的insert方法,将菜谱菜品数据插入到数据库的caipucaipin表中。并给出用户提示信息,添加菜谱菜品成功,将该信息保存到request的message中,该信息将在页面中进行展示。该部分核心代码如下:
通过caipucaipindao的insert方法将页面传输的菜谱菜品添加到数据库中 caipucaipindao.insert(caipucaipin);
将添加菜谱菜品成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "添加菜谱菜品成功");
返回菜谱菜品管理界面
return "forward:/tianjiacaipucaipin.action";
查询菜谱菜品模块:
在后台caipucaipinguanli方法中,通过selectByexample方法获取所有的数据信息。将其保存到request中,在页面中通过foreach方法
进行循环展示到table中。完成菜谱菜品查询操作。具体代码如下:
生成菜谱菜品样例类,通过example定义查询条件 CaipucaipinExample example = new CaipucaipinExample();
通过caipucaipindao的selectByExample方法查询出所有的菜谱菜品信息 List caipucaipinall = caipucaipindao.selectByExample(example);
将菜谱菜品信息,保存到request中,在页面通过foreach方法进行展示 request.setAttribute("caipucaipinall", caipucaipinall);
返回菜谱菜品管理界面
return "forward:/caipucaipinguanli.action";
修改菜谱菜品模块:
在页面填写完修改信息后,点击修改按钮,将数据提交到xiugaicaipucaipin中,封装为一个菜谱菜品
,使用update方法修改该菜谱菜品信息,将数据同步到数据库,完成修改操作。
定义修改成功提示信息,修改菜谱菜品成功,并保存到request中具体代码如下:
通过caipucaipindao的修改方法根据id修改对应的菜谱菜品 caipucaipindao.updateByPrimaryKeySelective(caipucaipin);
将修改菜谱菜品成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "修改菜谱菜品信息成功");
返回菜谱菜品管理界面
return "forward:/caipucaipinguanli.action";
删除菜谱菜品模块:
删除菜谱菜品功能实现在caipucaipinController中,实现方法为shanchucaipucaipin。在页面中通过get方法shanchucaipucaipin.action?Id的形式将需要删除的菜谱菜品id上传到服务器中,响应对应的方法,调用caipucaipindao中的deleteByPrimaryKey方法,完成删除操作。将删除成功的提示信息返回到页面中,完成删除数据的操作。该部分核心代码:
通过caipucaipindao的删除方法根据id删除对应的菜谱菜品 caipucaipindao.deleteByPrimaryKey(id);
将删除菜谱菜品成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "删除菜谱菜品成功");
返回菜谱菜品管理界面
return "forward:/caipucaipinguanli.action";