食物营养成分查询系统

上传人:天*** 文档编号:100300072 上传时间:2022-06-02 格式:DOCX 页数:39 大小:1.72MB
返回 下载 相关 举报
食物营养成分查询系统_第1页
第1页 / 共39页
食物营养成分查询系统_第2页
第2页 / 共39页
食物营养成分查询系统_第3页
第3页 / 共39页
点击查看更多>>
资源描述
学院(部)数学科学学院题 目食物营养成分查询系统食物营养成分查询系统摘 要本次毕业设计以食物营养成分查询为主题进行网站的设计与开发。主要的开发语言是HTML5和JAVA,辅之以JSP和CSS。同时为了简化代码,减少出错概率,应用当前主流的SSH框架。项目结构采用分层的思想,主要分为三层,即:视图层,控制层和持久层,分别对应V(View),C(Control),M(Model),以此来理清开发过程中各个模块之间的逻辑关系,减少模块之间耦合,也方便项目功能扩展与维护。本项目主要开发工具是Myeclipse10,服务器使用的是开源的apcche-Tomcat7.0.42。数据库采用轻量级开源而且稳定的MySQL。具体的框架版本为Struts2,Spring4.x,Hibernate5.x。关键词:javaweb;分层;MVC;SSH;数据库;AbstractThis graduation design carries on the website design and the development with the food nutrition ingredient inquiry as the theme. The main development languages are HTML5 and Java, supplemented by JSP and CSS. At the same time, in order to simplify the code and reduce the probability of error, the current mainstream SSH framework is applied. The project structure is divided into three layers, that is, view layer, control layer and persistence layer, which correspond to the view,control model respectively, so as to clarify the logical relationship between the various modules in the development process and reduce the coupling between the modules. It also facilitates the extension and maintenance of project functions. The main development tool of this project is Myeclipse10. the server adopts the open source Apache-Tomcat 7.0.42. the database adopts the lightweight open source database MySQL. The specific versions of the frameworks are Struts 2,Spring 4. X, Hibernate5.x. Key words: Java web; hierarchical thinking; MVC; SSH;database;目 录1. 绪论.11.1 研究背景11.2 研究目标11.3 论文结构12. 相关技术与方法22.1 架构概述22.2 STRUTS232.2.1 Struts2是什么32.2.2 Struts2的定位42.2.3 Struts2的技术优势42.3 SPRING42.3.1 Spring是什么42.3.2 Spring的核心思想52.4 HIBERNATE62.4.1 Hibernate是什么62.4.2 ORM核心思想62.5 SSH整合72.5.1 Struts2与Spring整合72.5.2 Hibernate与Spring整合72.5.3 web.xml的配置73. 系统分析83.1系统可行性分析83.1.1 经济可行性分析83.1.2 技术可行性分析83.1.3 操作可行性分析83.2 系统需求分析83.2.1 系统总体需求83.2.2 系统用例图需求94. 系统设计134.1系统实体类设计134.1.1 User实体类设计134.1.2 Admin实体类设计134.1.3 FoodCalss实体类设计144.2.4 FoodItem实体类设计144.2.5 User_FoodItem实体类设计154.2 数据库设计164.2.1 t_user表164.2.2 t_admin表164.2.3 t_foodCalss表164.2.4 t_foodItem表164.2.5 user_foodItem表164.3 关键业务设计174.2.5 用户登陆业务时序图174.2.5 用户添加食物业务时序图175. 系统实现195.1 HIBERNATE配置文件195.1.1 HIBERNATE映射配置文件195.1.2 HIBERNATE核心配置文件215.2 STRUTS配置文件225.3 SPRING配置文件245.4 WEB.XML配置文件275.5 拦截器285.5.1 拦截器与过滤器的区别285.5.1 拦截器主要作用 286. 系统实际实现与测试296.1 用户登陆与注册296.1.1 用户登陆界面296.1.2 用户注册界面296.2 管理员主界面306.3 网站主页306.4 食物营养信息页面317 总结32参考文献33致谢第一章 绪论1.1 研究背景俗话说:“民以食为天”。随着我国社会经济的的飞速发展,人民的生活质量在不断的提高,人们对健康饮食也越来越高关注。食物是维持人体健康所需营养成分至关重要的来源,合理的食物搭配能有效促进人体健康,所以人们越发重视食物的营养搭配,而不仅仅是满足与解决温饱饥饿问题。同时,互联网技术的快速速发展,为开发网站提供了各种便捷高效的工具。开发者用这些工具能搭建专业网站,方便了用户在繁杂的网络信息中寻找到所需食物的营养成分,从而能找到最适合自己的食物。1.2 研究目标本文的目的就是搭建一个能让用户合理搭配饮食,方便查询食物营养成分的的平台。同时,借助这次毕业设计,锻炼自己动手能力,了解最新的网络开发技术和常用框架,从而提高自己实际开发能力。1.3 论文结构第一章:主要论述了食物营养成分查询系统背景与意义第二章:关键技术的介绍,主要是在网站开发中常用的SSH框架和它们的整合。第三章:系统分析,包括可行性分析,需求分析及系统关键用例图分析。第四章:系统设计,主要是实体类设计,E-R模型图和相应的数据库实现。第五章:系统实现,包括三大框架主要配置文件的代码实现和拦截器的功能。第六章:系统实际测试测试效果展示。第二章 相关技术与方法2.1架构概述Struts 是一个优秀的MVC框架,实现的方式是JSP+Servlet+JavaBean,以控制为核心要素。JSP只负责显示和收集数据,sevlet用于连接视图和模型的桥梁,将视图层的数据发送给模型层,JavaBean则又分为业务类和数据实体,业务类处理业务数据,数据实体存储数据,大多数的项目都是使用这种MVC的实现模式。Struts的MVC设计模式使得我们逻辑清晰,让我们编写的程序层次分明,不易产生错误。但同时,也带了一些问题,主要是效率低下的问题,需要解析配置文件。而且比较臃肿,有漏洞,所以使用范围越来越小。Spring 主要用来提供了管理业务对象的一致方法,目的是最大程度上降低业务层和其他层的耦合度,使我们的产品在最大程度上解耦。其中关键是控制反转思想和依赖注入思想,通过配置文件方式来管理各种对象。Hibernate 是用来持久化数据的,即提供对数据库的各种操作的接口。此外,核心思想是对象关系映射,即已操作对象的思想来操作数据库。Hibernate对JDBC进行了非常轻量级的封装。在SSH整合中,可以使用HibernateTemplate,即HIbernate模板,使用更为简便。StrutsSpringHibernateJSPActionServiceDAOHibernate2.2 Struts2概述2.2.1 Struts2是什么Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。Struts2框架的基本思想是采用MVC设计模式,即将应用设计成模型(Model)、视图(View)和控制器(Control)三个部分。在本次论文中,我主要用到action中的模型驱动封装,用于从前端表单中获取参数,并将它们封装到对应的对象中,并传递给service。此外,另一个中要内容是值栈,需要在前端调用标签库,用来向前端页面展示数据。拦截器用来做身份鉴别。2.2.2 Struts2的定位Struts2作为表现层的框架设计存在2.2.3 Struts2的技术优势原始获取表单提交的数据需要获取request请求,然后通过getParameter方式获取参数。然而这样比较繁琐。Struts提供模型驱动封装,可以把数据直接封装到对象中。此外,还有表达式封装和属性封装。在Struts2中提供一种存储机制,类似于域对象,叫值栈。每个action都有一个值栈。在前端页面,需要使用OGNL表达式获取存储在值栈中的数据,OGNL表达式具有丰富的标签库,比EL表达式更为强大。拦截器可利用AOP编程思想形成责任链模式,在不修改代码的条件下扩展action中方法的功能。2.3 Spring概述2.3.1 Spring是什么在目前企业的JAVA应用中,Spring框架是必须的,Spring的核心是控制反转,它是一个大容器,方便组装和管理各种类系统内外部资源,同时支持面向切面编程,这是对面向对象的补充。目前广泛应用与日志和数据库事务龙之,减少了大量的重复代码,使得程序更为清晰。因为Spring可以使模块解耦,控制对象之间的协作,所以Spring框架是目前Java最为流行的框架。Spring提供了一下的策略:1:对于POJO的潜力开发,提供轻量级和低侵入的编程,可以通过配置来扩展POJO的功能,通过依赖注入的理念去扩展功能,降低系统耦合度,提高系统可读性和可扩展性。2:提供面向切面编程,尤其是把企业的核心应用,数据库应用,通过切面消除可以前复杂的try.catch.finally的代码结构。3:为了整合各个框架和技术的应用,Spring提供了模板类,通过模板可以整合各个框架和技术,比如支持Hibernate开发的HibernateTemplate,支持Mybaits开发的SqlSessionTemplate。这样就把各种企业用到的技术整合到该框架中,提供统一的模板,从而使得各种技术用起来更简单。2.3.1 Spring核心思想Spring的核心是IOC(控制反转)和AOP(面向切面编程)。IOC,即控制反转(Inversion of Control,英文缩写为IoC),是一个重要的面向对象编程的法则来减少降低计算机程序的耦合问题。 IOC是通过描述(在java中可以是XML或者注解),并通过第三方去生产或获取特定对象的方式。在Java中IOC意味着,设计好的对象交给容器控制,而不是传统的在对象内部直接控制。举例来说,果汁制造器依赖于饮品店和订单去制造果汁,而饮品店是别人创造的,我们只需要它能生产果汁就行了,而不需要去理解如何创建果汁。AOP,面向切面编程(Aspect Oriented Programming)。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP底层采用动态代理实现,分为两种情况。第一种有接口,使用动态代理创建接口实现类代理对象。第二种没有接口,使用动态代理创建类的子类代理对象。它通过横向增强创建代理类而不是传统的纵向集成方式来增强类功能,从而减少了大量重复代码。2.4 Hibernate概述2.4.1 Hibernate是什么Hibernate是一个开放源代码的对象关系映射框架,是一个全自动的ORM框架。Hibernate可以自动生成SQL语句,自动执行,使得Java开发者可以使用对象编程思维来操纵数据库。从中,我们可以得出这样的结论:我们可以使用Hibernate来完成原来我们使用JDBC完成的操作,也就是与数据库的交互操作。它是在dao层去使用的。2.4.2 ORM思想 ORM就是让实体类和数据库表进行一一对应。一个实体类对应一张数据表,实体类中的属性对应数据表中的字段。这样不需要直接操作数据库表,只要操作表对应的实体类对象。ORM模型的简单性简化了数据库查询过程。这样用户不必理解数据库的底层结构。该框架的缺点是在需要存储过程或者复杂的SQL时,它的映射关系几乎完全用不上,需要开发者手动写代码,所以无法完全掌握数据库SQL,而优化SQL是高并发,高响应系统的必然要求,这是互联网系统的普遍特性,所以在实际开发中,HIbernate几乎被排除在外 Java EE杨开振。互联网轻量级框架整合开发N.电子工业出版社。为了克服这些弊端,javaweb项目通常引入NoSql技术。NoSql是一种基于内存的数据库,并有一定的持久化能力,目前最广泛应用的是Redis。2.5 SSH框架整合由于Spring框架处于三大框架中间位置,所以三大框架整合的基本思想是struts2和Spring整合,Hibernate与Spring整合。此外整合的另外一个目标是解决一个问题,即第一次创建sessionFactory时,由于需要大量资源,导致第一次hibernate操作非常缓慢,而以后的操作响应速度比较快。通过配置监听器,整合后一旦服务器启动,就创建sessionFactory对象,把工作留给服务器,这样就解决了问题。2.5.1 struts2和Spring整合通常的做法是在struts.xml中配置action,但整合后,把action的创建交给spring配置,并把class属性值有类的路径名改为spring中的bean id值2.5.2 Hibernate和Spring整合(1)Hibernate的SessionFactory交给spring配置(2)把Hibernate数据库核心配置交给Spring配置2.5.3 web.xml需要配置监听器,核心过滤器以及spring的配置文件路径信息。第三章 系统分析3.1 可行性分析3.1.1 技术可行性由于采用成熟稳定的SSH框架以及功能强大的JSP技术,前后端基本可以完成各个功能。此外,因为本科学过JAVA面向对象程序设计和数据库技术,所以我在编程技术方面没有问题。3.1.2 经济可行性为节省开放支出,采用开源而且稳定的Tomcat作为小型服务器。Tomcat服务器是SUN公司开发的一个优秀的servlet容器,本身完全由Java语言编写,是Apache开源组织的一个软件项目。开发工具用myEclipse,这是在Eclipse基础之上添加自己的插件,优点是功能强大,甚至有JDK和内置服务器,功能十分强大,缺点就是不是开源的。数据库采用开源的MySQL,该数据库可支持关系型数据库。3.1.3 操作可行性为方便用户的管理员操作,前端页面大多用图形化按键,用户既可以通过具体食物名查询,也可以通过超链接图片按类别查询,用户不需要专业的开发知识便可完成各种操作。管理员在每一行列表末尾提供相应的操作按钮,十分直观简单。3.2 需求分析3.2.1 系统总体需求3.2.2 用例图分析管理员登陆用例编号UC01用例名称管理员登录用例概述管理员通过此用例登录系统主参与者管理员前置条件无基本事件流步骤活动A1输入指定的action访问路径,A2输入正确账户名密码登录扩展事件流1a用户名或密码错误,返回提示信息1b若正确,这把管理员保存在session域中用户管理用例编号UC02用例名称用户管理用例概述管理员通过此用例管理数据库中的用户信息主参与者管理员前置条件Session中保存该管理员,即管理员已登陆基本事件流步骤活动A1修改用户信息A2注销用户信息A3查看用户信息扩展事件流1a1b食物信息管理用例编号UC03用例名称食物信息管理用例概述管理员通过此用例管理数据库中的食物主参与者管理员前置条件管理员身份正确登录基本事件流步骤活动A1增加食物信息A2删除食物信息A3修改食物信息扩展事件流1a食物不存在,返回提示信息用户登陆用例编号UC04用例名称用户登陆用例概述用户通过此用例登陆系统主参与者用户前置条件无基本事件流步骤活动A1用户通过主界面的登陆超链接。A2输入用户名和密码。扩展事件流1a用户名或密码错误,给出提示信息。1b登陆成功,把用户保存在session域中,方便下一步操作用户对食物操作用例编号UC05用例名称用户对食物操作用例概述用户通过此用例查询和操作食物主参与者用户前置条件用户登陆成功基本事件流步骤活动A1根据session获取用户,再根据food_id获取食物A2将食物添加到用户的哈希集合扩展事件流1a1b第四章 系统设计4.1 实体类设计4.1.1 User类类功能描述存储用户信息所在包名称cn.itcast.Entity继承对象Object实现对象类属性保护属性类型名称描述备注privateIntegeruser_id用户ID系统中用户的唯一标示,数据库配置文件中配置为自动增长策略privateStringuser_name姓名设置为可变长度,varchar(256)privateStringpassword密码设置为可变长度,varchar(256)privateStringUser_sex性别前端设置为单选按钮,取值只有男或女privateStringuser_email用户邮箱需要在前端进行正则表达式检验privateSetsetFoodItem哈希集合用于存储用户所选择的食物说明:每个属性应设为私有。此外,为了让其他类调用,应该生成每个属性对应的set和get方法,并且提供无参构造。4.1.2 Admin类类功能描述存储管理员信息所在包名称cn.itcast.Entity继承对象Object实现对象类属性保护属性类型名称描述备注privateIntegeradmin_id管理员ID系统中管理员的唯一标示,数据库配置文件中配置为自动增长策略privateStringadmin_name管理员姓名设置为可变长度,varchar(256)privateStringpassword密码设置为可变长度,varchar(256)privateStringadmin_email管理员邮箱需要在前端进行正则表达式检验privateStringadmin_phone管理员手机需要在前端进行正则表达式检验4.1.3 FoodClass类类功能描述存储食物类信息所在包名称cn.itcast.Entity继承对象Object实现对象类属性保护属性类型名称描述备注privateIntegerfoodClass_id食物类ID系统中食物类的唯一标示,数据库配置文件中配置为自动增长策略,同时通过配置文件设为具体食物的外键privateStringfoodClass_name食物类名设置为可变长度,varchar(256)privateStringfoodClass_description食物类描述设置为可变长度,varchar(256)privateSetsetFoodItem哈希集合用于属于该类的食物4.1.4 FoodItem类类功能描述存储食物营养信息所在包名称cn.itcast.Entity继承对象Object实现对象类属性保护属性类型名称描述备注privateIntegerfoodItem_id食物ID系统中食物的唯一标示,数据库配置文件中配置为自动增长策略privateStringfood_name食物名称设置为可变长度,varchar(256)privateStringfood_alias密码设置为可变长度,varchar(256)privateStringfood_description描述设置为可变长度,varchar(256)privateDoublefood_calorie食物热量需要在前端惊醒数据类型检验privateDoublefood_fat食物脂肪需要在前端惊醒数据类型检验privateDoublefood_cellulose纤维素需要在前端惊醒数据类型检验privateDoublefood_carbohydrate碳水化合物需要在前端惊醒数据类型检验privateDoublefood_protein蛋白质需要在前端惊醒数据类型检验4.2 数据库设计4.2.1 User表4.2.2 Admin表4.2.3 FoodClass表4.2.4 FoodItem表4.2.5 User_FoodItem表4.3 关键业务设计4.3.1 用户登陆4.3.2 用户添加食物第五章 系统实现5.1 Hibernate配置文件5.1.1 Hibernate映射文件5.5 过滤器5.5.1 过滤器与拦截器的区别一:过滤器过滤的范围比拦截器更广,拦截器只能拦截对action的请求,而过滤器几乎可以过滤所有的资源。二:二者实现机制不同,过滤器基于filter接口中的doFilter回调函数,拦截器则基于Java本身的反射机制。 在Struts2中,拦截器是用来拦截Action中的方法的调用,在被拦截的Action方法被执行前,先执行响应的拦截器中的方法。通常重复的代码会放在拦截器中,让action方法执行前或执行后再执行。通常,多个拦截器的多样灵活的组合,会带来丰富的功能。5.5.2 拦截器的作用本次论文使用拦截器的主要目标是是实现权限控制,防止普通用户在未登陆管理员账号的情况下擅自调用action方法,修改数据库中食物的信息。此外,不提供注册管理员的action,由DBowner写入。第六章:系统实际实现与测试6.1 用户登陆与注册界面6.1.1 登陆界面展示若用户登陆成功,则把信息保存在session域中,并显示在首页。否则返回该登陆页面6.1.2 注册界面注册是要求数据库中无重复用户名,若有重复用户名,则提示注册失败6.2 管理员界面管理员主要职责是管理用户,食物和类别,其中,这些方法的调用都需要拦截器,防止被外部恶意攻击篡改数据。当管理员修改数据时,拦截器需要从session中获取管理员对象。6.3 主界面用户可以在搜索框输入要查询的食物,也可以点击图片超链接,按食物类别查询食物信息。用户不一定需要登陆,但若添加食物,则必须登陆。6.4 食物信息查询页面显示食物的六种主要营养成分,用户可以通过下方的按钮将食物添加到喜欢的食物。第七章:总结本网站是在Java和MySQL的基础上设计的食物营养成分查询系统。本系统的特点是使用了当经web开发的主流开发技术,即html+css+ssh,并对三大框架进行了整合,方便了模块功能的修改与拓展。此外,前端技术的应用,优化了用户体验,用户只需简单的操作就可完成预期功能。由于自身水平有限,因此做出来的系统不是很完善,仍有许多需要改进的地方。如未使用更常用的springMVC+Mybaits.其中数据库的性能是主要问题。但系统只是实现了一些简单的功能,功能不够丰富。并且数据库设计过程中有设计不合理之处,设计得较为简单。对系统界面的整体把握不够好,页面布局也不够完美,缺少提示信息,没有良好的视觉体验,以后需要在这方面进行一些完善和该井。参考文献1 杨开振 java EE互联网轻量级框架整合开发N.电子工业出版社2 孙卫琴 Tomcat与Java Web M.电子工业出版社3 梁勇 Java语言程序设计M.机械工业出版社4 李东博 HTML5+CSS3从入门到精通M.清华大学出版社5 张红娟 数据库原理M.西安电子科技大学出版社
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕业论文


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!