资源描述
本科生毕业论文(设计)基于JSP的小型超市信息管理系统设计与实现姓名学号专业指导教师年 月 日II摘 要随着零售业的不断发展,超市这种高效,方便的销售模式已经越来越成熟。目前,市场上的超市存在着大型化和小型化两种趋势。大型超市往往拥有着雄厚的资金实力,极为全面的商品种类,但也存在着网店覆盖率低,不能满足偏远地区人民需要的问题。而小型超市则很好地填补了这个空白。本文是对小型超市信息管理系统的开发过程进行详细描述的论文,目的是采用JSP/SERVLET开发,应用MVC架构,设计一个小型超市管理系统。为小型超市管理系统提供一个价格低廉,开发简单,维护方便,功能实用的解决方案。此次采用的软件过程模型为过程开发模型,具体表现为将基本的过程活动、描述、开发、有效性验证和进化,看成是一些界限分明的独立的过程阶段。本文一步步按照开发过程中所涉及到的问题进行详细描述,由浅至深,从构建系统前进行的需求分析,到后台数据的处理,表单之间的传递等内容,都进行了阐释,并附上了关键模块的相关代码。目前,本系统已经可以满足小型超市的日常经营需要,并期待进一步的改进。关键词:JSP;信息管理系统;MVC框架AbstractWith the continuous development of retail industry, the supermarket, as an effective and convenient mode of retailing, has become more and more mature. Now, the supermarkets on the market place have two trends such as maximize and minimize. The hypermarket often has solid capital or cash and very comprehensive kinds of goods. But the hypermarket also has problems. For example, their branch usually lack of fraction of coverage, so that they could not afford the needs of people who lives at remote area, while the tiny supermarket can solve this problem very well. This article is a particular description paper of developing process of this mini supermarket management system. The purpose is developing this system with JSP/SERVLET and applying the MVC framework, so that we can design and build this supermarket management system. We can provide a solution which is cheap, easy-developing, convenient-maintaining and functional to this management system.This system has satisfied the needs of routine of the supermarket, and looked forward to a further improvement.Key Words: JSP(Java Server Page),IMS(Information Management System),MVC Frame目 录1 引 言11.1背景11.1.1社会背景11.1.2公司背景11.1.3技术背景11.2文章结构32 问题定义与可行性分析42.1问题定义42.1.1商品基本信息42.1.2人员基本信息42.1.3进、销、存42.1.4结算42.2可行性分析42.2.1技术可行性研究42.2.2经济可行性研究53 需求分析63.1综合描述63.2功能性需求63.2.1顾客功能性需求63.2.2管理员功能性需求73.3非功能性需求83.3.1性能需求83.3.2安全措施需求94 总体设计104.1系统总体设计104.2模块设计104.3数据库设计125 系统详细设计与实现155.1综合描述155.2关键模块详细设计175.2.1登录模块175.2.2商品信息查看模块215.3.3购物车模块265.3功能性模块设计335.3.1数据库连接类335.3.2编码转换类345.3.3流水号生成类345.3.4进货单模块设计355.4系统测试415.4.1测试的目标与方法415.4.2测试用例41结 论43参考文献44致 谢45IV1 引 言1.1背景本处简要介绍了小型超市信息管理系统的开发背景,主要内容包括社会背景,公司背景,技术背景三个部分。旨在为读者阐明小型超市信息管理系统开发的基调,使读者对小型超市信息管理系统的社会意义,背景信息有个大致的了解。1.1.1社会背景随着我国社会主义市场经济的不断成熟与发展,越来越多的人们意识到,第三产业在社会经济发展中起到了越来越重要的作用。超市这种形式在我国起步于20世纪90年代,现在已经成为我国零售业的主要形式之一。随着超市经营规模的扩大化,商品种类日趋丰富,原有的人工销售模式已经远远不能满足要求,在超市管理方面的效率也大大降低。因此,在超市经营中引入计算机管理势在必行。不同于纯粹的电商销售B2C模式,超市管理系统在日常经营中存在着自身独有的特点:商品种类丰富,数据量巨大,因而不能对超市的整体经营状况,相关商品的销售情况,进存货的决策有一个宏观上的了解。因此,我在本次设计中选择了小型超市信息管理系统,利用现代化的计算机技术来对超市经营中所设计到的业务进行管理,从而节省了大量的人力物力,减少了人工操作带来的风险,并且能够对整个超市的销售情况有一个宏观上的了解,从而能够对超市下一步的经营策略,进货方向有一个数据上的支持。这允许了管理人员能够对市场的变化做出及时准确的反应。1.1.2公司背景小型超市在其日常经营管理中存在着自身独有的特点。首先,规模小,实力弱。不同于其他的大型连锁超市,小型超市一般都以个体经营为主,因此存在着规模较小,成本低,实力弱的特点。因此在信息管理系统的投入上,不可能很多,所以我的设计中,要考虑到成本方面的问题。要尽量做到在节省成本的同时,满足超市信息管理系统日常工作的需要。其次,缺乏相关技术人员支持。小型超市一般位于地理位置相对偏远的地区,其经营管理人员的素质普遍不高,同时也缺乏相应的技术人员对系统进行维护和技术支持。因此,在设计系统时,应尽量做到界面简洁友好,方便使用者学习使用。同时,要考虑到系统的稳定性。1.1.3技术背景关于JSP:JSP是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态技术标准。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标签,就构成了JSP网页java程序片段可以操纵数据库、重新定向网页以及发送E-mail等,实现建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,这样大大降低了对客户浏览器的要求,即使客户浏览器端不支持Java,也可以访问JSP网页。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。关于MVC:MVC设计模式将一个完整的应用分为3个组件:Model(模型),View(视图)以及Controller(控制器)。 Model(模型):该组件是对软件所处理问题逻辑的一种抽象,封装了问题的核心数据,逻辑和功能实现,独立于具体的界面显示以及I/O操作。在本设计当中,使用JAVA类实现。 View(视图):该组件将表示模型数据,逻辑关系以及状态信息,以某种形式展现给用户。视图组件从模型组件获得显示信息,并且对于相同的显示信息可以通过不同的显示形式或视图展现给用户。在本设计当中用JSP页面实现。Controller(控制器):该组件主要负责用户与软件之间的交互操作,控制模型状态变化的传播,以确保用户界面与模型状态的统一。Web应用中当用户请求到来时,控制器本身不输出任何东西也不做任何处理,它只是接收请求并决定调用哪个模型去处理该请求,然后用确定使用哪个视图组件来显示模型处理返回的数据。在本设计当中,使用Servlet实现。 1.2文章结构本论文由五大部分组成:第二章节 问题定义与可行性分析。主要内容是针对小型超市的业务流程具体情况,分析抽象业务类型,找到并明确超市信息管理系统中会遇到的问题,并就这些问题提出解决方案。可行性分析是针对问题的解决方案,结合小型超市建立过程中的实际情况,对方案的可行性做出一个真实,准确的评估与计算。从而为以后的需求分析,系统设计确立一个明确的方向。第三章节 需求分析。此章节的编写基本按照需求分析报告的格式展开。对小型超市的各个业务模块进行分析,划分系统的各个部分。数据库建模的内容也在此章节包含。第四章节 总体设计。在需求分析完成的基础之上,对小型超市信息管理系统的各个模块进行总体设计,对用户界面进行详细的介绍和明确。第五章节 系统详细设计。在总体设计完成的基础上,对系统关键模块的功能进行实现。对每个功能的输入输出,变量传递,各模块在执行任务时的数据流程,工作流程进行事先。进而对各个模块的功能进行明确。2 问题定义与可行性分析2.1问题定义本处主要内容是小型超市信息管理系统的问题定义部分。作者通过日常生活的超市购物经历,深入分析小型超市信息管理系统可能或正在面对的问题,并以问题定义的方式提出。旨在确立小型超市信息管理系统的开发方向,为以后的需求分析定下基调。2.1.1商品基本信息1商品信息按照统一格式存入数据库;2商品按类进行编整,进货;3商品类型不能删除,每种类型都必须有商品;4商品厂家要有记录。2.1.2人员基本信息1只有管理员可以登录该系统后台;2管理员只有注册过才能登录系统; 3管理员可以对管理员表进行操作,但不能删除其他管理员;4顾客可以直接进入系统进行购物。2.1.3进、销、存1进货后要对商品存量进行更新;2后要对商品存量进行更新。2.1.4结算以购物车形式实现。2.2可行性分析可行性分析是任何一个系统开发项目所不能缺少的一环。可行性分析的意义就在于当开发者已经明确开发过程中可能会出现的问题时,要对这些目标,问题进行实际意义的分析。从而避免那些明显超出能力范围,成本范围,以及冗余繁杂的模块,代码等。在一个项目开发的前期明确哪些功能,哪些目标是可以达成的,显然非常重要。2.2.1技术可行性研究在IT行业中从业的工作人员一般都要求懂计算机,具有一定软硬件基础,会使用各种管理软件,熟悉IT产品。因为,超市中的对员工素质要求比较高,从管理层到下面的营销人员,都要求具有一定的IT背景,所以在新系统投入使用时,只要对员工进行少量的培训,系统的功能和使用方法就基本上能够使系统顺利的运行了。2.2.2经济可行性研究因为通过网络传递销售信息,可以不受距离的限制,因此可以节约许多的人力和物力,方便管理,由此可以减少不必要的开支,同时该系统可以提高企业的销售效率,即提高了企业的经济效益,所以从经济上是完全可行的。开发新系统的工作是一项艰巨复杂的工作,它的投资主要是人力和物力的投资。对于本系统的开发来说,其主要投资还是在人力和物力两个方面。如果是企业自己安排人手开发系统的话,其主要的投资还是在人力资源上,从系统的业务需求调查到系统的分析编码制作都是需要巨大的人力投入的。超市作为一个尖端的高科技产业,其员工要求都比一般企业的要求要高,而且对系统开发及软件产业了解比较多,所以在自我开发管理系统的过程中,企业自己比较容易安排人手,这样就可以为企业节约大部分的额外开支。同时超市就其他产品还说,属于高端行业,无论是产品的价格还是质量都比较高,而经营产品的经销商或者是商家都要求有雄厚的资金的作支持。所以,在系统的开发过程中,企业完全有能力承担开发费用。管理系统是一个信息化、智能化和先进管理理念的集合体。而管理是一个动态过程,在其运行过程中要采取多项措施。所以在管理中获得经济效益是一个综合效益,要对他进行直接定量的分析是比较困难的。一般新系统带来的经济效益是间接的,其最主要的表现就是减少了企业的管理费用和人力开支。而其他一些烦琐的事物都通过新系统来加以分析解决,不仅节省了大量的时间,还为企业的各项决策提供了宝贵的资料,为企业带来巨大的经济效益。3 需求分析3.1综合描述编写目的:第二章节的编写主要是为后面的系统详细设计打下基础。通过需求分析的编写,要明确系统可以分为哪些模块,每个模块实现的作用都有哪些,不同人员对系统的要求都有哪些。使读者对这个小型超市信息管理系统的设计思想有一个初步的了解。预期读者:本章节的预期读者包括设计人员,超市信心管理系统的使用者,管理员。因此在设计时尽量做到图文兼备,使得阅读者能够了解系统的工作流程,相关数据的交互。运行环境:本系统开发环境具体如下:1 windows7操作系统;2 Myeclipse6.0.1;3 Mysql5.5;4支持Html ,JavaScript的浏览器,如 IE9。3.2功能性需求功能性需求是整个需求分析章节最为重要的部分。它直接决定了系统的模块划分,业务逻辑,明确了使用者对小型超市信息管理系统功能的要求。一个完善的,明确的,详细的功能性需求分析是开发一个系统的关键。成功的功能性需求分析可以避免后期对系统的大范围改动甚至是推倒重建,因此,本部分极为重要。3.2.1顾客功能性需求1不用输入用户名,密码 ,直接登录超市管理系统的商品页面;2查看商品的基本信息,包括 商品编号,单价,余量,厂家,生产日期,保质期;3在购物车中查看自己选中的商品名称,价格,数量,并可以从购物车中移除某些商品,查看总价,并可以选择结账或选择继续购物;4点击结账后显示结账成功并退出系统。相关用例图见图3-1。图3-1 顾客用例图顾客用例 “查看商品基本信息”的用例描述见表3-1。其他用例类似于此,不再一一赘述。表3-1 用例描述-查看商品基本信息使用者顾客用例查看商品基本信息参与者顾客,小型超市信息管理系统数据顾客向超市信息管理系统发送商品相关信息,如商品名,商品类型,商品编号等激励超市信息管理系统根据用户发送的字段,查询后台数据库响应超市信息管理系统返回查询商品结果备注无3.2.2管理员功能性需求1打开网站后,进入登录页面。输入用户名,密码 登录系统。2登陆后,选择进入系统人员管理页面或者商品信息管理页面。在系统人员管理页面中,查看其它管理员的信息,并可以添加新的管理员。在商品信息管理页面,可以查看全部商品的信息,包括商品编号,进价,单价,余量,厂家,生产日期,保质期。3进入商品信息管理页面的进货管理页面,可以填写进货单,实现相关产品数量的增加。4进入商品信息管理页面的销售查看页面,可以查看近期各项商品的销售情况。5点击页面右上角的退出按钮,直接退出系统并跳转到登录页面。相关用例图见图3-2 管理员功能性需求用例图。图3-2 管理员功能性需求用例图3.3非功能性需求非功能性需求分析主要是对面向系统性能方面的要求进行分析,以确定诸如硬件配置,数据库连接等问题。非功能性需求的合理确定会给系统的后期维护,硬件升级,系统性能分析等带来很大的便利。3.3.1性能需求相互合作的用户数量1;系统支持的并发操作数量1。容量需求:存储器:2G;磁盘空间:10G;数据库中表的最大行数:无规定。3.3.2安全措施需求1主机设备和网络通信设备必须有备份,并处于实时备用状态。2建立设备档案,详细记录设备的基本情况(包括升级、更新情况等)、故障现象、故障分析、维修过程、处理结果等内容。设备发生故障时应及时维修,必要时,通知供货厂商(代理商)的技术人员到场解决。3在下列情况下须进行系统软件的系统级全备份:新系统投入运营上线之前;系统软件升级之前和之后;固定的周期时点(如季末、年末等;特定时点(如灾难应急演练前、系统发生重大事故恢复后等)。4在下列情况下须进行数据库零级备份:新系统上线时(最好全备);结帐前后;年终结算;固定周期时点(如一个月);特定时点(如系统发生重大事故恢复之前、之后)。5在下列情况下须进行数据库增量备份:两次零级备份之间必须每日做增量备份。4 总体设计4.1系统总体设计系统总体设计图如图4-1所示。当使用人员登录系统后,按身份的不同进入各自的页面,并使用系统提供的功能。管理员的人员信息管理属于操作者所有,在此本系统默认管理员可以操作其他管理员的信息。图4-1 系统总体设计图4.2模块设计本处将对小型超市信息管理系统进行分模块设计,明确各个模块的操作流程,功能如何使用等问题。1 登录模块超市信息管理系统的使用者主要有两种:普通的顾客和管理员。按照日常生活中超市的运作流程,普通顾客不需要为其设立专门的数据表,所以只需要实现管理员的登录模块。使用者进入系统后,首先进入欢迎界面。普通顾客点击“开始购物旅程”超链接,直接进入购物界面。管理员点击“进入后台系统”超链接,进入管理员登陆界面。由于管理员对系统有操作,查看等权限,因此不允许在登陆页面注册新的管理员。登陆成功后跳转至管理员管理页面,否则显示“Login fail”登陆失败。当输入正确的姓名,密码后,界面自动跳转到管理员管理欢迎界面。2 商品信息管理模块管理员进入后台管理界面后,点击“商品信息管理页面”超链接,进入商品信息管理页面。页面查询后台数据库数据,将所有商品信息展示在右侧页面上。若管理员需要对相关商品信息作出修改,或者删除某项商品信息。则点击相应的超链接进行操作。删除成功后系统会提示“删除成功”。点击“更新”,系统会进入商品信息更新页面。在页面中,已经预先填好了所选商品信息。这允许管理员仅对需要修改的字段内容修改,避免了全盘输入的麻烦。若管理员需要添加新商品,则点击“添加新商品”链接。系统跳转到 商品信息添加页面。在此页面填入相应的商品信息,点击“添加”按钮。若各个字段的值都符合要求,则系统提示“添加成功”。再点击左侧“商品信息管理页面”,则可以看到刚才插入的商品信息。3 进货单管理模块进货是超市正常运营,及时跟进市场最新动态,调整售货方向的最重要的手段。进货单管理模块用来实现进货功能,管理员可以填写进货单实现对商品表及进货单表的更新。在 管理员管理欢迎界面 点击“进货单管理页面”,系统跳转到进货单管理页面。由于进货操作是管理员对超市经营情况收集信息的重要途径,因此不允许对进货单进行修改操作,以便进行对账,合计等操作。点击“增加进货单”链接,系统跳转至进货信息添加页面。在进货信息添加页面中,当管理员填写好相应的字段后,点击“添加”按钮。系统在后台会自动查找填入的商品名。如果以前存在同名的商品,则在原来的商品的基础上,对数量作出修改。如果查不到填入的商品名,则在商品表中新建一条记录。最后,在进货单表中生成相应的进货记录。4 管理员信息管理模块在管理员管理欢迎界面,点击“管理员信息管理页面”。系统跳转至管理员信息管理界面。在此界面上,可以实现对管理员信息的增删改,在此不再一一赘述。5 交易信息查看模块顾客每次在超市的消费都会有相应的记录。由于小型超市规模的限制,不可能大量保存每笔交易的详细信息,因此系统以交易流水号的形式表示每笔交易。此模块就是供管理员查看交易信息的记录。由于交易信息是对超市中已存在的交易行为的记录,因此不允许管理员对交易信息进行修改,只能在记录较多时删除某条记录。6 退出模块管理员在左侧菜单点击“退出”链接,进入“确认退出页面”。7购物模块在开始页面点击“开始购物旅程”链接,跳转到购物页面。点击一项商品后的添加至购物车链接,会提示添加成功,并选择查看购物车或继续购物。点击“查看购物车”进入购物车管理页面。可以实现对购物车中商品数量的修改,查看目前已购买商品的价格总计,或者选择删除购物车中的某项商品,甚至清空购物车。点击“结账”链接,系统在新页面中会生成一个交易流水号,继续点击“结账”,如果后台保存成功,则提示交易完成,点击链接离开。4.3数据库设计商品基本信息表见表4-1。表4-1 商品基本信息表名称含义类型约束备注GoodsID商品IDInt 20主键自动增长GoodsName商品名称Varchar 10唯一值GoodsType商品类型Int 20不为空GoodsPrice单价Int 10不为空GoodsPurchasePrice进价Int 10不为空GoodsAmount商品数量Int 10不为空GoodsGetTime进货日期Date不为空GoodsMaintainTime保质期Int 10不为空单位为(天)GoodsFactory生产厂家Varchar 50不为空员工信息表见表 4-2。表4-2 员工信息表名称含义类型约束备注MemberID员工IDInt 20主键自动增长MemberName员工姓名Varchar 10不为空MemberPassword员工密码Varchar 6不为空MemberSex员工性别Int 1不为空1:男 2:女MemberAge员工年龄Int 10可为空进货单表见表4-3。表4-3 进货单表名称含义类型约束备注Input_ID进货单IDInt 50主键自动增长Input_GoodsID商品IDInt 20不为空Input_GoodsName商品名称Varchar 10唯一值Input_GoodsType商品类型Int 20不为空Input_GoodsPrice单价Int 10不为空Input_GoodsPurchasePrice进价Int 10不为空Input_GoodsAmount商品数量Int 10不为空Input_GoodsGetTime进货日期Date不为空Input_GoodsMaintainTime保质期Int 10不为空单位为(天)Input_GoodsFactory生产厂家Varchar 50不为空订单表见表4-4。表4-4 订单表名称含义类型约束备注Account_ID订单IDInt 20主键自动增长Account_GoodsID商品IDInt 20不为空Account_Code交易流水号Varchar 50外键 参照Sale表code不为空Account_GoodsCount购买商品数量Int 10不为空交易单表见表4-5。表4-5 交易单表名称含义类型约束备注Sale_ID交易单IDVarchar 20主键自动增长Sale_Date交易日期Date不为空Sale_Accountcode交易流水号Varchar 50不为空在进行小型超市信息管理系统的数据库设计时,要综合考虑到超市的经营成本,维护成本,员工素质等问题。因此在设计表时,要尽量做到简洁有效,结构清晰。过多的外键,约束,甚至于不必要的字段等都是在小型超市设计中所要避免的。因此在设计商品表时,只涉及了关于货物的基本信息,在人员信息表设计时,只涉及了人员最基本的信息,避免了其他冗杂的字段带来的大量数据空间消耗以及维护上和开发上的困难,从而为商品信息及交易信息的存贮留下了充裕的空间。当然,随着超市的经营,规模上的扩大在所难免,员工信息,交易记录的复杂度将会日渐上升。但由于小型超市信息管理系统采用了MVC框架结构,因此在系统升级,表结构改变上相对简单,成本较低。5 系统详细设计与实现5.1综合描述由于小型超市信息管理系统结构比较简单,相对大型的,成熟的超市采用的管理系统来说,无论在系统的性能,结构复杂度,安全性上面都无法与之相比。因此在进行系统设计时,应尽量做到结构清晰,编码方式合理,代码与系统的可维护性较高。在本章节中,选取小型超市信息管理系统关键模块进行设计阐述。主要模块有登录模块,商品信息查看模块,购物车模块三部分。有关本系统的文件结构见图5-1,图5-2。图5-1 系统文件结构描述:controller包主要是存放servlet类,实现业务逻辑与功能函数,接受表单传参。每个servlet类都要在xml文件中进行注册,以便系统进行调用。Dao包主要是存放数据库操作类。每个controller类的功能都是通过dao类的函数实现对数据库的操作。Entity包主要是存放数据库实体类,每个java类都对应着数据中的表,除了shoppingcart类。实体类主要是实现接受参数,返回查询结果。图5-2 超市信息管理系统页面描述:小型超市信息管理系统中主要页面包括GoodsManage.jsp,Goods.jsp,selectSC.jsp等。主要实现商品信息展示,购物车模块结果。Manage.jsp为框架网页,实现后台管理的主页面布局。5.2关键模块详细设计此处为小型超市信息管理系统关键模块的详细描述,并附上相关代码以及截图。在代码的关键处加以说明,以方便读者阅读。5.2.1登录模块登录流程如图5-3。管理员在登录表单填写用户名,密码,将表单与Flag标志提交至Servlet。系统根据XML文件的配置,调用相关的Servlet类(MemberController.java)。Servlet根据Flag的值,调用相应的函数,查询数据库表(member)并进行判断,如果用户名与密码匹配,则跳转到管理页面(manage.jsp),否则,输出登录失败页面。图5-3 登录模块流程图相关代码如下:Login.jsp: 请输入您的姓名:请输入您的密码: 说明:登录表单中,将姓名与密码字段 “name”属性分别设置为“Member_Name”,“Member_Password”,向后台进行参数传递。点击submit按钮,按照action中的路径调用方法,传递方法的类型为“post”,将提交至servlet的dopost方法。MemberController.java:public void login(HttpServletRequest req,HttpServletResponse response)tryToChinese to=new ToChinese();Member user=new Member();MemberDAO memberdao=new MemberDAO();user.setName(req.getParameter(Member_Name);user.setPassword(req.getParameter(Member_Password);Member member=memberdao.login(user);if(member=null)PrintWriter out=response.getWriter();out.println();out.println( );out.println( );out.println(login fail+);out.println( );out.println();out.flush();out.close();elsereq.getSession().setAttribute(Member, member);RequestDispatcher rd=req.getRequestDispatcher(manage.jsp);rd.forward(req, response);catch(Exception e)e.printStackTrace();说明:login方法,接受前台页面传递过来的用户名与密码,并利用编码转换类将用户名转换为UTF-8编码类型,解决了乱码问题。实例化一个MemberDao类,调用其Login方法,返回实体类Member。如果返回值为空,则输出登录失败页面。否则,跳转至管理员管理页面manage.jsp。MemberDAO.java Login.()public Member login(Member member)throws SQLExceptionString sql=select * from member where MemberName=? and MemberPassword=?;PreparedStatement psmt=conn.prepareStatement(sql);psmt.setString(1, member.getName();psmt.setString(2, member.getPassword();ResultSet rs=psmt.executeQuery();Member member1=new Member();if(rs.next()member1.setID(rs.getInt(MemberID);member1.setName(rs.getString(MemberName);member1.setPassword(rs.getString(MemberPassword);member1.setSex(rs.getInt(MemberSex);member1.setAge(rs.getInt(MemberAge);rs.close();return member1;elsereturn null;说明:Login方法对数据库进行操作。首先连接至数据库,利用前台传来的用户名,密码字段对数据库进行查询,以结果集形式进行返回。并实例化member类,将结果集中的数据输出,返回Member类型。相关界面设计见图5-4,图5-5,图5-6。图5-4 超市信息管理系统欢迎界面图5-5 超市管理员登陆界面图5-6 登陆失败页面5.2.2商品信息查看模块在Left.jsp 中点击“商品信息管理页面”,链接为”Goods.do?flag=1” 。系统根据XML配置文件,调用GoodsController.java 。接受到Flag=1 ,调用FindAll()方法,查询MysqL数据库中goods表,查询所有商品信息,返回一个List 集合,名为list。利用req.setAttribute(goods, list) 将集合存入request范围内,然后跳转至商品信息展示页面(Goodsmanage.jsp)。在商品信息展示页面,创建一个Table.列名分别为商品各项属性名。新建一个List list.。将request 范围内的“goods”接收并进行强制类型转换。循环list,将商品输出。在每一行商品的后面,加上“删除”“更新”两个链接,分别为:“Goods.do?flag=2&id=”,“Goods.do?flag=5&id=”。点击链接,可以调用GoodsController.java 中的相应函数,传递参数为ID,进行删除或更新的操作。相关流程见图5-7。图5-7 商品信息查看模块流程图相关代码如下:Left.jsp:欢迎页面商品信息管理页面进货单管理页面管理员信息管理页面交易信息查看页面退出GoodsManage.jsp:商品ID商品名商品类型商品售价商品进价商品数量商品进货时间商品保质期(天)生产厂家%List list=new ArrayList();list=(List)request.getAttribute(goods);for(int i=0;i a href=Goods.do?flag=2&id=删除 a href=Goods.do?flag=5&id=更新 添加新商品GoodController.java.FindAll():public void findAll(HttpServletRequest req,HttpServletResponse response)tryListlist=gooddao.selectGoods();req.setAttribute(goods, list);RequestDispatcher rd=req.getRequestDispatcher(GoodsManage.jsp);rd.forward(req, response);catch(Exception e)e.printStackTrace();说明:FindAll方法调用gooddao的selectGoods方法,将所有商品信息读出,以集合的形式存入变量“goods”中,在中进行调用。GoodsDAO.selectGoods:public List selectGoods()throws SQLExceptionResultSet rs=null;tryConnection conn;conn=con.getConnection();String sql=select * from goods ;Statement psmt=conn.createStatement();rs=psmt.executeQuery(sql);List list=new ArrayList();while(rs.next()Goods good=new Goods();good.setID(rs.getInt(GoodsID);good.setName(rs.getString(GoodsName);good.setType(rs.getInt(GoodsType);good.setPrice(rs.getInt(GoodsPrice);good.setPurchasePrice(rs.getInt(GoodsPurchasePrice);good.setAmount(rs.getInt(GoodsAmount);good.setGetTime(rs.getString(GoodsGetTime);good.setMaintainTime(rs.getInt(GoodsMaintainTime);good.setFactory(rs.getString(GoodsFactory);list.add(good);return list; catch(Exception e)e.printStackTrace(); return null;相关页面设计见图5-8,5-9,5-10。图5-8 商品信息查看页面图5-9 商品信息添加页面图5-10 商品信息更新页面5.3.3购物车模块用户在商品浏览页面查看商品。如果喜欢某件商品,点击每行商品后的“添加至购物车”链接,调用“Cart.do?flag=1&id=?”ID为要添加的商品的ID。系统根据XML配置文件,调用CartController 中的add方法,代码如下:public void add(int id,HttpServletRequest request, HttpServletResponse response)try request.getSession().setAttribute(Amounterror, );GoodsDAO gd=new GoodsDAO();int exitNum=0;List list=(List)request.getSession().getAttribute(ShoppingCart);for(int i=0;ilist.size();i+)if(list.get(i).getID()=id)exitNum=list.get(i).getAmount(); list.remove(list.get(i);Shoppingcart sc=new Shoppingcart();Goods g=gd.FindGoodsbyID(id);sc.setID(g.getID(); sc.setName(g.getName();sc.setAmount(exitNum+1);sc.setPrice(g.getPrice();list.add(sc);request.getSession().setAttribute(ShoppingCart, list);RequestDispatcher rd=request.getRequestDispatcher(addcartsuccess.jsp); rd.forward(request, response);catch(Exception e) e.printStackTrace(); 说明:其中在session范围内设置了“AmountError”变量,用于校验购物车中商品数量与现在超市中商品余量的关系。先从“ShoppingCart”变量中提取商品,并保留商品数量,删除此商品。然后重新实例化一个Shoppingcart ,将顾客选中的商品信息存入list中重新存入session中。然后页面跳转到addcartsuccess.jsp。此时购物车session中已存放了顾客选中的商品信息,默认商品数量为1,点击查看购物车链接“selectSC.jsp”。代码如下: %Listlist=new ArrayList(); list=(List)request.getSession().getAttribute(ShoppingCart); % 您未购买任何商品。 前去购物 您购买的商品如下: 离开超市 商品名称 商品单价 商品数量 价格小计 %for(int i=0;i input type=text value= name=num a href=Cart.do?flag=3&id=删除商品 %float allcost=0; for(Shoppingcart sc :list)allcost+=sc.getAmount()*sc.
展开阅读全文