基于JAVA的现代化酒店点菜系统设计(共32页).doc
精选优质文档-倾情为你奉上本科生毕业设计基于JAVA的现代化酒店点菜系统设计 2013年 5月 独 创 性 声 明本人郑重声明:所呈交的毕业设计是本人在指导老师指导下取得的研究成果。除了文中特别加以注释和致谢的地方外,设计中不包含其他人已经发表的研究成果。与本研究成果相关的所有人所做出的任何贡献均已在设计中作了明确的说明并表示了谢意。签名:_ _年_月_日授权声明本人完全了解许昌学院有关保留、使用本科生毕业设计的规定,即:有权保留并向国家有关部门或机构送交毕业设计的复印件和磁盘,允许毕业设计被查阅和借阅。本人授权许昌学院可以将毕业设计的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编设计。本人设计中有原创性数据需要保密的部分为: 学生签名: 年月日指导教师签名: 年月日基于JAVA的现代化酒店点菜系统设计摘 要随着我国市场经济的不断发展,国民生活水平的不断提高,进入酒店等消费场所的人数也与日俱增。传统的手工点菜方式由于其难计算、难查找、难更改、易出错、效率低等缺点已逐渐退出了酒店等消费场所的服务管理平台。为了提高酒店的服务管理质量,提高消费者的满意程度,本文开发出了一套操作简单、功能全面、集分析和管理于一体的酒店点菜系统。本论文采用B/S三层软件体系结构,以Windows为操作平台,Java为开发语言,SQL Server 2005为数据库,Eclipse为开发工具,使用JDBC连接,设计并实现了酒店点菜系统。该系统实现了在可视化的基础上,利用数据库进行后台管理。主要模块有:登陆模块、点菜模块、信息管理模块、结账模块。该系统达到了服务方便、顾客满意的初衷,可初步适用于各大酒店。关键词:酒店点菜;账单支付;JDBC连接;数据库管理The Modern Hotel Order System Based On JAVAABSTRACTWith the continuous development of market economy in our country, the national life level unceasing enhancement, the numbers of people that entry to the hotel and other places of consumption is also growing. Traditional way of manual order ,since its difficult to calculate, hard to find, difficult to change, error-prone, and low efficiency of faults has been gradually out of the hotel and other places of consumption of the service management platform. In order to improve the quality of hotel service management, and improve customer satisfaction. In this paper, developed a simple operation, comprehensive functions, and integrated management of hotel order system.This paper adopts B/S three-tier software architecture, with Windows as operation platform, Java as a development language, SQL Server2005 for database, Eclipse as a development tool, using the JDBC connection. Designing and implement the hotel order management system.The system is realized on the basis of visualization, using database management background. Main module includes: customer order, the landing module, order module, information management module, check module. To achieve the original intention of convenient services, customer satisfaction, this system can be applicable to the hotel.Key words: the hotel order; Bill pay; JDBC connection; The database management 目 录专心-专注-专业基于JAVA的现代化酒店点菜系统设计1. 绪论随着餐饮业发展,酒店管理水平的提高和顾客就餐体验要求的增高,国内外都产生了对现代化酒店点菜系统的需求。下面将详细介绍本系统的开发背景、开发目的和国内外研究现状。1.1 开发背景我国市场经济发展带动餐饮行业蓬勃发展,进入酒店等消费场所的人数也与日俱增,规模不断增大,但相应的酒店管理服务却没有跟上时代的脚步。餐饮从业人员没有相应地重视点菜环节的改革和完善,酒店企业经常遇到顾客抱怨上菜速度慢、漏菜、丢单、 漏单、餐厅的成本控制难等问题。加之都市生活节奏的加快,消费者在外出就餐时,对点菜上菜速度就有了更高的要求。传统的手工点菜方式由于其难计算、难查找、难更改、易出错、效率低等缺点已逐渐退出了酒店等高等消费场所的服务管理平台。层出不穷的各类酒店点菜系统也应运而生,呈现出多元化的发展趋势。1.2 开发目的为了更好的满足广大消费者的多元化需求和适用不同层次的消费水平,提高酒店的服务质量,提高酒店工作人员的工作效率,酒店可采用现代化点菜系统。本系统在很短时间内便可完成点菜,大大缩短了点菜上菜时间。减少了服务员的工作量,降低服务员的劳动强度,相应地节省了劳动力。同时避免了因服务员来回跑动产生的忙乱现象,大大提升了服务品质和服务形象,为营造高档就餐环境创造了良好条件。本文在多方面考察、分析和研究现有酒店点菜系统的基础之上,以提高消费者的满意程度及商家的服务水平和市场竞争力为目标,致力于开发出一套操作简单、可视化程度高、功能全面、集分析和管理于一体的酒店点菜系统,极具有市场价值。本系统通过集成从顾客点菜、上菜到结帐等一系列功能,为每个环节明确分工,并通过可视化的软件支持,有效减小了人为差错的概率,代之以高效、便捷、准确的数字化服务系统,使餐饮企业的管理更加规范化。总之现代化酒店点菜系统可有效的提高工作效率,提高服务质量,将低运营成本,提升企业形象。1.3 国内外研究现状目前,我国酒店餐饮业在日常点菜管理中仍普遍采用手工操作方式,整体科技含量比较低,随着餐饮业高速发展和酒店规模的不断扩大,许多酒店餐饮企业采用连锁经营和集团化运营,手工操作无论是在工作效率、人力成本和决策信息等方面都已经难以适应企业发展的要求,制约了整个酒店餐饮业的规模化发展和整体服务水平的提升。在欧美发达国家,信息数字技术产品在饭店与餐饮业的应用已经得到普及。就点菜系统而言,最普遍的是计算机收银台录入菜单设备、POS点菜系统,除了这种点菜系统,其它的计算机信息系统已经从预订、接待、点菜、菜品上传、厨房分单打印、收银、经理查询等方面在大型餐饮企业全方位地整合起来了。我国也将在未来几年赶上世界潮流。2. 系统需求分析2.1 功能需求分析本文对现有的酒店点菜系统进行了细致的调研,并对收集到的需求信息进行汇总分析,挖掘出了一系列系统需求。 2.1.1 基础数据设置功能系统管理员通过该部分功能完成酒店点菜系统中基础数据的设置工作。主要工作包括:上传菜品图片,设置价格等。2.1.2 顾客查询菜品信息功能菜品可以分为凉菜,热菜。也可以细分为主食、小炒、汤类等。价格可根据不同的消费水平分为实惠、中档、高档不同等级。口味可分为酸、甜、辣等多种。通过前台可视化界面实现顾客多方面选择。2.1.3 点、补、退选菜功能顾客可根据口味、价格、食料、菜系进行点菜通过前台可视化界面实现顾客多方面选择。点菜完毕后,系统自动进行菜价统计并显示。如果顾客不满意则可进行退选或补选。2.1.4 数据处理功能系统自动记录点菜次数,并对补选的菜进行次数增加,退选的菜进行次数减少,并将最终结果进行时间先后的排序。系统可根据用户选择的菜,自动进行总价计算并显示,以方便用户补选或退选,便于服务员收费。2.1.5 后台管理功能厨师可以通过点菜系统查看顾客对自己做的菜的满意度和受欢迎或者不受欢迎的菜品。经理可根据系统记录的每种菜品的被点次数推出“特色菜”,撤销不受欢迎的菜品,改进菜单,提高服务质量。服务员可在输入自己的员工号后,输入客人餐桌号或包间号进行收费。2.1.6 系统权限管理功能系统设置不同权限:经理、厨师、服务员、和其他人员只有被授予相应权限后,才可以根据自己的权限查看相应的内容,保证了系统的安全性。2.2 非功能性需求(1)系统运行稳定、安全可靠。界面简洁友好,使用方便。(2)当基础数据发生变化时,系统管理员能很方便地进行基础数据的维护,提高系统的灵活性和实用性。(3) 最大程度的保证点菜数据的准确性。在顾客进行点菜时要实现各种关键基础数据的选择输入,避免大量的文字输入,以便减少点菜时间,提高录入数据的准确度。(4)提高系统的并发性能。本系统每次点菜的人数在可预见的几年内不断增加,所以系统要保证同时在线的人数。(5) 尽可能的降低系统运行和维护的成本,以便在餐饮行业中推广本系统,扩大使用范围。2.3 用户操作分析与酒店点菜管理系统相关的人员(可能操作系统的角色)详细情况及需求如表2-1所示。表2-1 使用系统的相关人员及需求描述角色需求描述顾客根据系统操作提示自主进行点菜、退菜操作,系统要能够根据顾客的选择进行自动进行结账计算并显示。服务员根据系统操作提示对已经上桌的菜进行标记,查看账单进行收账。经理查看营业情况,各菜品反映情况,顾客反馈意见等。厨师查看顾客对菜品的评价。后台管理人员对数据库初始数据的设置,系统维护与升级。对数据进行分析,并根据顾客点菜情况适当修改菜单。权限设置,数据备份。2.4 可行性分析2.4.1 技术可行性该项目主要以Windows为操作平台,Java为开发语言,SQL Server 2005为数据库,Eclipse为开发工具,使用JDBC连接。系统的技术平台、开发工具是当前主流成熟的技术,有很多成功的案例。2.4.2 经济可行性新系统对计算机的性能要求不高,购买、安装基本的数据通讯设备、数据库管理软件的成本比较低。同时节约了很多人力方面不必要的支出。另外提高了上菜速度,使餐桌的利用率得到提高,增加了整个餐厅的流动量,提高了管理水平,经济上的收益远远大于成本。2.5 数据流程图2.5.1 系统整体数据流程点菜系统是一个信息交流平台。顾客与点菜系统交换的信息有查询菜谱信息、确定点菜信息、调整点菜信息、查看菜谱信息和消费信息。厨师与点菜系统交换的信息有查看点菜信息和上传菜品完成信息。收银员与点菜系统交换的信息有查看消费清单和确定消费金额并结账。服务员与点菜系统交换的信息有查看点菜信息和送菜信息。系统管理员与点菜系统交换的信息有发出登陆和查询请求、查看和修改菜谱信息、查看账面信息等。根据用户就餐全过程得到的数据流程图如图2-1所示。图2-1 系统整体数据流程图2.5.2 系统E-R图根据需求分析,菜品的属性应该包括价格、类型、菜名和菜号。职员的属性应该包括编号、姓名、性别、年龄和电话。台桌的属性应该包括桌台号、桌台名称和桌台状态。根据用户就餐全过程中各实体的属性和关系画出系统E-R图,如图2-2所示。 图2-2 系统数据库E-R图2.6 开发环境运行环境: Windows 7 Ultimate , 安装JDK1.6支持Java运行内存:2GB (2x1G) NECC DDR2 800MHz SDRAM 内存 前台界面设计:JavaScript + Eclipse数据库:SQL Server 2005图片处理:Photoshops CS43. 概要设计3.1 系统总体结构基于java的现代化酒店点菜系统采用最新的软件设计思想,采用模块化设计,为每个环节明确分工,并通过可视化的软件支持,集成从顾客点菜、上菜到结帐等一系列功能。系统主要包括登陆模块,信息管理模块,点菜模块,结账模块,和退出模块。如图3-1所示。点菜系统 登录模块退出模块信息管理模块结账模块点菜模块图3-1 系统总体结构不同的模块,负责不同的功能,简单明了,清晰易懂。为系统设计和用户使用都带来了方便。下面主要模块的功能进行具体说明。3.1.1 登陆模块 顾客在选择好餐桌之后,看到的是已经由服务员登陆的界面,可以直接看到菜品信息,减少了顾客操作程序,提高了点菜的效率,同时易于确定桌号,方便结账管理。3.1.2 信息管理模块主要采用SQL Server 2005数据库将菜品信息、菜系信息、台号信息和用户信息等信息汇总保存,并具有查询、修改、删除信息的功能。信息管理模块结构如图3-2所示。信息管理菜品管理用户管理台号管理菜系管理图3-2 信息管理模块3.1.3 点菜模块菜品可以分为凉菜,热菜。也可以分为主食、小抄、汤类等。通过前台可视化界面呈献给顾客。顾客可根据口味、价格、食料、菜系进行点菜,通过前台可视化界面实现菜品选择。点菜完毕后,系统自动进行菜价统计并显示。如果顾客不满意则可进行退选或补选。点菜模块如图3-3所示。点菜模块更新菜单点菜加菜删除图3-3 点菜模块结构图3.1.4 结账模块收银员登陆收银系统,显示顾客已消费的每一道菜的单价与消费总金额。点击结账确认按钮,显示结账成功,打印结账清单并将消费信息发送到数据库。3.2 系统用例图3.2.1 顾客点菜用例图顾客在整个就餐过程中,可以提出点菜、补选、退选、查看、结账、评价等要求。根据顾客点菜流程画出用例图,如下图3-4所示。图3-4 顾客点菜用例图3.2.2 系统权限用例图系统管理员根据系统权限设计需要,可以进行用户管理,添加和删除用户。普通用户受权限设置,只能使用点菜系统的部分功能。画出系统权限用例图,如图3-5所示。图3-5 系统权限用例图4. 详细设计4.1 数据结构设计数据库设计是系统设计过程中的重要组成部分,它是通过管理系统的整体需求而制定的,数据库设计的好坏直接影响到系统的后期开发。下面对本系统中具有代表性的数据库设计进行详细说明。不同的实体,采用不同的数据结构存储在数据库中,可以在数据库中设置不同的参数,做添加和更改。各表如下。(1) 用户表系统用户表包括用户ID、用户性别、用户姓名、用户的出生年月、用户身份证号、密码等属性。如下表4-1所示。表4-1 用户表列名类别长度备注idInt18主键sexChar2男/女nameVarchar8姓名birthdayDatetime无出生日期id_card Varchar18身份证号passwordVarchar6密码(2) 菜系表菜系表属性相对简单,只包括菜系ID和菜系名称。如下表4-2所示。表 4-2 菜系表列名类别长度备注idInt18主键nameVarchar20菜系名(3)菜品表菜名表示数据库中主要的表。报价菜品序号、菜品ID、菜品名称、菜品助记码、菜品单位和菜品价格。如下表4-3所示。表4-3 菜品表列名类别长度备注numChar8主键sort_idInt8编号nameVarchar20菜品名称codeVarchar10助记码unitVarchar4单位unit_priceInt2单价(3) 台号列表台号表包括台号和每个台号所包含的座位数。顾客可以根据自己就餐的人数来选择不同的台号就坐。如下表4-4所示。表 4-4 台号列表列名类别长度备注numVarchar5主键seatingInt2座位数(4) 开单表开单表包括菜单序号、台号、开台日期、消费金额和用户ID。可以通过用户ID和台号确定顾客的消费情况。开单表如下表4-5所示。表4-5 开单表列名类别长度备注numChar11主键desk_numVarchar5台号datetimeDatetime无开台日期moneyInt6金额user_idInt10用户id(6)签单表签单表用来记录顾客的消费情况。签单表包括表单ID、开台编号、具体消费数目和实收金额。可以根据签单表实现结账的功能。如下表4-6所示。表4-6 签单表列名类别长度备注idint20主键order_form_numChar11开台编号menu_numChar8菜品编号amountInt6具体消费数目totalInt6实收金额4.2 主要功能模块设计系统通过模块化设计为每个功能设置一个模块,可以方便系统开发和维护。下面对系统的主要子模块的功能做详细描述。4.2.1 点菜模块酒店点菜模块,包括开台点菜、添加菜品、删除菜品。顾客可以选定就餐桌台,然后选择菜品进行点菜。通过系统可以清楚的看到自己已经点过的菜品。如下图4-1所示。确定点菜模块开台点菜查询菜单删除查询增加查询图 4-1 酒店点菜模块4.2.2 信息管理管理模块酒店的信息管理管理,包括菜品管理、菜系管理、台号管理和用户管理。管理员可以添加和删除桌台,添加和删除菜系,添加和删除菜品,添加和删除用户。通过查询、添加和删除操作进行信息的维护。可以在台号、菜系、菜品和用户的信息发生改变的时候,方便的进行信息的管理和维护。后台管理模块如下图4-2所示。添加删除菜品管理菜系管理台号管理用户管理信息管理模块确定退出图4-2 酒店信息管理模块4.2.3 结账模块结账模块除了可以实现自动结账功能外还包括日结账管理、月结账管理、年结账管理。通过这个模块的功能,管理员可以方便的查看每天、每月和每年的营业额。结账管理模块图下图4-3所示。 结账管理日结账报表月结账报表年结账报表查询退出确定图4-3 酒店结账管理模块5. 系统实现5.1 登陆界面用户登录窗口是每一个应用软件都不可或缺的部分,其主要功能是保证用户的数据安全。同时用户登录窗口也是用户看到的第一个系统界面,因此一个设计优秀的用户登录窗口将有效地加深用户对系统的第一印象,使用户产生愉快的使用体验。如图5-1所示。 图5-1 登陆界面图5.2 主窗口设计本系统将主窗体划分为5个工作区,分别是开台签单工作区、自动结账工作区、后台管理工作区、结账报表工作区以及系统安全工作区。不同的工作区负责不同的功能模块的实现。该酒店点菜系统对各功能模块的分区,使主窗体界面显得更加有条理,更加简洁,达到了操作简单,方便使用的标准。开台签单工作区在主界面上半部分。自动结账工作区在系统主界面下半部分的中部,可以清楚地看到用户的消费金额。后台管理工作区、结账报表工作区和系统安全工作区并排在主界面的左下角。该酒店点菜系统主窗体效果如图5-2所示。图5-2 酒店管理系统主窗体效果图5.3 开台签单工作区设计开台签单工作区是本系统最常用的工作区。在获取欲添加的菜品时,既可以通过菜品编号获得,也可以通过菜品助记码获得,并且默认菜品的数量为一个,用户可以自己需要选择菜品的数量。开台签单工作区的主要功能有开台、点菜、加菜、签单、查看开台信息和签单信息,开台签单工作区的效果图如图5-3所示。 图5-3开台签单工作区图5.4 自动结账工作区设计自动结账工作区有两个主要功能,一个是自动计算当前选中餐台的消费金额,例如选中餐台“8001”,在自动结账工作区将显示该餐台的消费金额,如图5-4所示。图5-4 消费金额计算图另一个功能是在结账时自动计算找零金额。用户输入“实收金额”后单击“结账”按钮,系统将自动计算出需要找零的金额,并弹出一个结账完成的提示对话框,如图5-5所示。图5-5 结账图5.5 后台管理工作区设计后台管理工作区用来维护软件正常运作需要的一些信息,例如台号信息、菜系信息、菜品信息等,只有填写了这些信息,才能开台,以至结账和生成报表。在后台管理工作区提供了对台号、菜系和菜品信息的维护功能。如图5-6所示。图5-6 后台管理工作区在菜品管理界面,可以为每个菜品编号,为每个菜品设置一个名称,一个助记符,并把它归类到一个菜系中。还可以更改每个菜品价格。如图5-7所示。图5-7 菜品管理在菜系管理界面,可以为饭店提供的菜品详细分类,还可以添加、删除菜系。如图5-8所示。 图5-8 菜系管理在台号管理界面,可以添加、删除台号。还可以设定每个桌台可以容纳的顾客数。如图5-9是台号管理模块。图5-9 台号管理后台管理工作区还提供了对酒店操作用户的管理功能,通过用户管理按钮可以进行用户的添加和删除管理。如图5-10所示。图5-10 用户管理图6. 系统调试6.1 系统测试目的和原则6.1.1 软件测试目的 软件测试随着软件的编写而产生,有软件的生产和运行就必然有软件测试。测试的目的是为了在软件投入生产性运行之前,尽可能多地发现软件中的错误。成功的测试能发现系统运行中的错误,进而调试程序,达到系统正确运行的目的。6.1.2 软件测试原则软件开发人员即程序员应当避免测试自己的程序。因为测试由别人来进行可能会会更加有效、客观,并且容易成功。应尽早地和不断地进行软件测试。应当把软件测试贯穿到整个软件开发的过程中。因为在软件开发的每一环节都有可能产生意想不到的问题。所以在软件开发各阶段测试,把错误克服在早期,从而减少成本,提高软件质量。 6.2 登陆页面测试用例对登陆界面进行测试,得到如下结果,如表6-1所示。表6-1登陆页面测试用例表测试项执行步骤预期结果实际结果正确登录验证输入正确的用户名,密码能够正确的登录同预期结果错误登录验证输入不存在的用户名不能登录,返回错误信息同预期结果输入错误的用户名和错误的密码不能登录,返回错误信息同预期结果不输入用户名不能登录,返回登陆页面同预期结果 6.3 用户管理页面测试用例表6-2 表用户管理页面测试测试项执行步骤预期结果实际结果正确添加用户验证把用户的所有信息都正确输入能够正确的添加用户,提交后进入原来的界面与预期结果相同添加不完整的用户信息验证不输入“密码”弹出警告信息“添加用户信息失败!”与预期结果相同正确修改用户信息验证点击“编辑”修改该用户的信息能够正确的修改用户信息与预期结果相同不输入用户ID由系统自动添加ID,显示添加成功与预期结果相同不输入身份证号显示警告信息“编辑失败!”与预期结果相同删除用户验证选择要删除的用户弹出用户是否确认删除对话框,点击确定后能够正确的删除用户与预期结果相同6.4 菜品管理测试用例表6-3 菜品管理页面测试用例表测试项执行步骤预期结果实际结果正确添加用户菜品把用户的所有信息都正确输入能够正确的添加菜品,提交后进入原来的界面与预期结果相同添加不完整的菜品信息不输入商品名称弹出警告信息“请填写商品名”与预期结果相同不输入菜品单位系统不允许为空,显示警告信息“请添加单位”与预期结果相同不输菜品助记码系统不允许为空,显示警告信息“助记码”与预期结果相同不选择菜系显示警告信息“请选择菜系”与预期结果相同菜品价格显示警告信息“请输入菜品价格”与预期结果相同参考文献1 张志军等著.现代酒店服务与管理M北京:北京大学音像出版社,2005:7-122 王珊,萨师煊.数据库系统概论M.北京:高等出版社,2006:3-163 齐治昌,谭庆平,宁洪.软件工程M.北京:高等教育出版社,2004:6-304 张涛. java XML编程指南M.北京:高等教育出版社,2010:9-15 周绪. MySQL中文版入门与提高M.北京:清华大学出版社,2010:4-156 张海藩. 软件工程导论M.北京:清华大学出版社,2008:10-127 黄晓东. JAVA课程设计案例精编M.北京:中国水利水电出版社,2004:5-48 李晓黎, 张巍. java网络应用系统开发与实例M.北京:人民邮电出版社,2004:12-189 沈小红.网上酒店点菜系统J.浙江水利水电专科学校学报,2003:6-1510 张秀玉等编著.SQL Server数据库程序设计M.机械工业出版社,2003:4-1附 录 数据库链接代码如下: package com.mwq.dao; import java.sql.*; public class JDBC private static final String DRIVERCLASS = "com.microsoft.sqlserver.jdbc.SQLServerDriver"private static final String URL = "jdbc:sqlserver:/localhost:1433;DatabaseName=db_DrinkeryManage"private static final String USERNAME = "sa"private static final String PASSWORD = "123"private static final ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>();static / 通过静态方法加载数据库驱动try Class.forName(DRIVERCLASS).newInstance();/ 加载数据库驱动 catch (Exception e) e.printStackTrace();public static Connection getConnection() / 创建数据库连接的方法Connection conn = threadLocal.get();/ 从线程中获得数据库连接if (conn = null) / 没有可用的数据库连接try conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);/ 创建新的数据库连接threadLocal.set(conn);/ 将数据库连接保存到线程中 catch (SQLException e) e.printStackTrace();return conn;public static boolean closeConnection() / 关闭数据库连接的方法boolean isClosed = true;Connection conn = threadLocal.get();/ 从线程中获得数据库连接threadLocal.set(null);/ 清空线程中的数据库连接if (conn != null) / 数据库连接可用try conn.close();/ 关闭数据库连接 catch (SQLException e) isClosed = false;e.printStackTrace();return isClosed; 图片更改代码如下:package com.transnal.web.utils; import java.awt.Dimension; import magick.ImageInfo; import magick.MagickImage; public class ImageUtil static / 不能漏掉这个,不然jmagick.jar的路径找不到 System.setProperty("jmagick.systemclassloader", "no"); /* * param width * param height * param maxValue * return */ private static int getWidthHeight(int width, int height, int maxValue) int nWidth = 0; int nHeight = 0; if (width < height) nWidth = width * maxValue / height; nHeight = maxValue; else if (width > height) nHeight = height * maxValue / width; nWidth = maxValue; else nWidth = width * maxValue / height; nHeight = height * maxValue / width; return new int nWidth, nHeight ; /* * 压缩图片 * * param filePath * 源文件路径 * param toPath * 缩略图路径 */ public static void resetDimension(String filePath, String toPath, int maxValue) ImageInfo info = null; MagickImage image = null; Dimension imageDim = null; MagickImage scaled = null; try info = new ImageInfo(filePath); image = new MagickImage(info); imageDim = image.getDimension(); int wideth = imageDim.width; int height = imageDim.height; int wh = getWidthHeight(wideth, height, maxValue); wideth = wh0; height = wh1; scaled = image.scaleImage(wideth, height);/ 小图片文件的大小. scaled.setFileName(toPath); scaled.writeImage(in