版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
超市的进销存管理系统的管理与实现摘要近年来,我国经济蓬勃向上,很多公司对于管理软件的投入不断加大,各种公司超市规模疯狂扩大,公司和超市在对于统筹和分配上的投入意愿也越来越明显,愿意将大量资金投入到相关的领域。随着公司或超市产品的不断增多,本人发现公司或超市的进货、销售、存储方面的压力也越来越大,用人工的方式进行进货、销售、存储方面的信息登记,容易犯错误,因为数据的量非常多,因此需要对公司或超市在进货、销售、库存方面进行改进,提高运营的效率,降低运营的成本,避免因人工管理不善带来的漏洞,因此超市进销存管理系统的运行和管理就显得尤为重要。本设计探究的超市进销存系统管理使用SSM框架,还用了jsp技术和java编程语言和数据库mysql完成的。通过本系统,实现了客户管理,供应商家管理,商品信息管理,出入库管理,销售管理等,可以有效提高超市进销存管理效率。本系统经过测试,运行效果稳定,操作方便、快捷,是一个功能全面、实用性好、安全性高,并具有良好的可扩展性、可维护性的超市进销存管理平台。BLUE超市进销存管理系统主要是针对超市进销存管理而开发,可以帮助超市进行合理化的管理,调高管理效率,对超市发展非常重要。本系统的使用使管理人员从繁重的工作中解脱出来,实现无纸化办公,能够有效地提高超市进销存管理效率。关键词:BLUE超市;进销存管理;管理效率目录TOC\o"1-3"\h\u187141引言 1125881.1研究背景 1225501.2研究现状 1266561.3研究内容 37962系统关键技术 511652.1JSP技术 5117742.2MYSQL数据库 5311242.3SSH框架 529523系统分析 1210453.1可行性分析 1144613.1.1技术可行性 117703.1.2操作可行性 1182433.1.3经济可行性 1135743.1.4法律可行性 226273.2系统性能分析 2282023.3系统功能和用例分析 266693.4系统流程分析 5185113.4.1开发流程 5157963.4.2登录流程 6233513.4.3添加信息流程 6202304系统设计 8323204.1系统概要设计 8167804.2系统结构设计 8291644.3数据库设计 9272494.3.1数据库E-R图 9150104.3.2数据库表设计 13227255系统详细设计与实现 18241715.1数据库连接实现 18186155.2前台模块 1814775.3后台模块 21209225.3.1登录 21163065.3.2员工用户模块 22119515.3.3人事用户模块 24275775.3.4销售用户模块 27144765.3.5采购用户模块 2783045.3.6财务用户模块 31120606系统测试 34234886.1测试目的 3422456.2测试方案 34292066.3测试策略 3624246.4测试分析 367172总结 378763参考文献 38PAGE261引言1.1研究背景随着时代的发展和世界科学技术水平的不断提升,计算机发展也慢慢地越来越成熟。我们对于电脑的依赖越发深刻,在许多领域,都在慢慢用计算机进行管理,例如超市、科研等领域。从电脑出现开始,发展到现在已经超出了我们的想象。它带给我们生活和工作许多的改变,方便了我们日常生活中的方方面面。计算机已经融入到我们的生活中,和我们的生活息息相关。因为时代的发展,商业上的竞争越来越激烈,超市要想生存并且谋求发展,就必须要非常努力地寻求改变和增进管理水平。超市间的竞争全方位无死角的,要求超市有非常强大的生命力,可以迅速地做出反应。这就对超市各个部门的沟通、协调、合作提出了很高的要求:同步生产的步伐,咨询信息的共享,内部资源的调拨分发,让各个单位之间既有自己的独立生产空间,也要能服从大局,为整个超市作出贡献。随着已知技术的出现,为提高超市在进货、销售、库存方面的管理能力,提高超市效率及降低运营成本,本人决定开发“超市进销存管理系统”。本人做的这个系统是在电脑上运行的,能够做到科学、合理、实用、好用,它的结构和功能清晰,可以为超市带来诸多的便利,最终给超市降低成本、增加收益。近年来,我国经济蓬勃向上,很多公司对于管理软件的投入不断加大,各种公司超市规模疯狂扩大,公司和超市在对于统筹和分配上的投入意愿也越来越明显,愿意将大量资金投入到相关的领域。本人对这个项目进行了非常细致地观察、调研和研究,发现了随着公司或超市产品的不断增多,公司或超市的进货、销售、存储方面的压力也越来越大,用人工的方式进行进货、销售、存储方面的信息登记,容易犯错误,因为数据的量非常多,因此需要对公司或超市在进货、销售、库存方面进行改进,提高运营的效率,降低运营的成本,避免因人工管理不善带来的漏洞,因此超市进销存管理系统的运行和管理就显得尤为重要。1.2研究现状作为计算机技术的发源地,美国的计算机技术一直发展方向一直以来都是世界的领导者。同样,在企业管理相关领域,美国拥有悠久的开发历史,从最初的MRP系统到MRPII,作为企业库存管理的最初方式,MRPII在美国得到了非常广泛的应用。拒不完全统计,在美国,80%的大型企业都不同程度地应用了MRPII系统,50%以上的中型企业都在一定的程度上应用了MRPII系统,即使是小型企业也有30%以上使用了MRPII,由此可以看出计算机库存管理系统对美国制造业的影响之大。同样,在制造业较为发达的德国,也有超过95%的大型企业应用到了计算机库存管理系统。事实上,对于计算机库存管理系统的应用,在一定程度上体现了一个国家制造业的先进指数,同时也成就了一个国家雄厚的制造实力。同样,在进销存管理方面的计算机应用,国外的发展也相当地成熟,拥有许多非常成熟的解决方案。例如由MRO公司提供的解决方案MAXIMO管理系统,在国外的应用就非常之广泛。其影响力已经伸展到了大洋彼岸的我国,在国内已经有超过50家企业成功地实现了MAXIMO系统的应用。作为其中的一小部分,MAXIMO提供的库存管理技术可以灵活的掌握企业的库存,企业的进销存提供支撑。在国外,超市是一种以有顾客自我服务为主,商品种类多为品牌商品的大型零售业。它最早出现在美国的20世纪30年代,是一种零售业状态。被称为“零售商业的第三次革命”。超市的产生可归结于上个世纪商业竞争的加剧和信息技术的发展,超市采取的是顾客自助服务销售方式,来满足消费者每天的生活所需的零售业态。超市特点:顾客自助服务代替了营业员的服务,节约了劳动力,使得超市的运营成本降低,从而促进商品价格的降低,售货结算当面交易,大大提高了超市销售商品的效率。随着企业经营模式的不断变革,现代企业的管理已成为一项系统性管理工程,其由人力资源管理、技术管理、供销管理、财务管理等诸多子系统共同组成。全面预算管理作为企业内部一种控制会计制度,推其推行能够完善以财务管理为中心的企业管理体制,有效提高以提高企业经济效益为目的的会计管理活动效率。随着经济发展和企业管理理论的不断创新,全面预算管理已不只是企业财务管理的一部分,而是兼具成本控制、资源分配与激励和考评的全面管理体制,并要求我国国有企业集团将全面预算管理与整体发展战略紧密地结合在一起。另外,各种先进的管理设备、技术以及管理理念的引入,使得类似零售企业之类的具有纵向特性的企业群能够保证更高的集中度,在管理方面以及企业资源规划方面更具有灵活度。国内在企业资源管理方面的计算机技术的使用起步较晚,从1981年国内第一次系统地引入MRPII系统以来,企业资源管理系统在我国已经拥有30多年的发展历程。虽然资源管理技术在国内的发展依然比较肤浅,但是企业资源管理理念在国内已经得到了较为广泛的普及,各种类型的企业资源管理系统的应用已经覆盖到了各行各业。自上世纪九十年代起,特别是国家863计划对计算机集成制造系统CIMS(ComputerIntegratedManufacturingSystem)应用示范工程的提出,许多大型企业先后引入了国外的ERP/MRPⅡ系统,为企业资源管理在我国的普及听歌推力。到二十一世纪,随着国家信息化步伐的加快,企业资源管理系统的应用已经成为了决定一个企业存亡的风向标,同时随着市场竞争的加剧,迫使更多的企业处于节流开源的考虑不得不引进企业资源管理系统。随着国内企业对资源管理系统的应用的广泛发函,国外大型的企业资源管理提供厂商也逐渐的重视国内的市场,包括SAP以及Oracle公司此类为代表的大型解决方案提供厂商都在国内设立了分公司以及研发机构,这也在不同的程度上激励着国内企业资源管理市场的发展。国内开发的进销存管理软件,是在引进国外的软件基础上,结合自身经验,取得了一定的成效。由于国外的进销存管理系统的研究方向是面向大型企业开始的,国内的进销存商品的开发也必然如此。现在中小超市规模小、人数少和运作流程简单,相对于现有的进销存管理系统的解决方案,往往都比较大,对于中小型超市来说无论是从规模上已经成本方面的考虑都不太可能采用此类大型的进销存管理解决方案。迫于上述原因,许多的中小型超市选择与软件厂商进行合作,量身定制管理系统,但是如此操作往往由于软件厂商的专业知识的缺乏,以及超市系统需求输入的片面导致开发出来的商品往往不能够在实践中得到广泛的应用。而且由于这种进销存管理软件是超市独立与软件公司开发的,基本上只局限于某一超市使用,很难推广,造成很大的资源浪费。与企业管理系统的发展类似,超市在我国的形成也较为晚,到上世纪九十年代全国上下才有了超市这个概念。但是超市在我国的发展相当的迅速,到如今,众多国际零售业巨头都不得不把我国的市场作为全球市场的一个重要部分重视。这在一定的程度上得益于国内近二十年的经济快速的增长,同样也是由于国内消费群体规模巨大。与超市规模的迅速发展形成鲜明对比的是国内超市管理系统的落后程度,在中小型超市中,老式的供销年代的库存盘点方式比比皆是,如此的处理办法不仅大大地加重了超市的管理费用,削减了超市的利润,同时在激烈的市场竞争中使得超市往往处于下风,这也迫使众多的国内超市不得不加快对进销存系统应用的步伐。超市作为一种新型的商品提供渠道,其得以发展壮大的突出优点就在于其为消费者提供了一站式,全面而便捷的解决方案。但是在目前国内小型超市系统而言,由于管理方案的落后,企业无法实现有效的管理,在结算等于消费者面对面的交流中不能给消费者提供非常满意的结果,是的小型超市越来越受到消费者的诟病。这也是本人当初选题的最初出发点,随着超市规模的扩展,日常数据处理任务的加重,使得超市系统在日常运营方面需要处理的信息的呈现指数的上升,而原始的人工盘点的处理办法已经成为一个超市发展的毒瘤,迫使我们不得不对其进行改革。而以计算机技术为代表的解决方案,不仅能够为超市系统提供便捷的服务,同时可以大大的节约超市的劳动力开始,提升超市的处理速度,大大地提高超市的经营效率。1.3研究内容本人编写的这个BLUE超市进销存系统的论文主要说明了超市进销存系统的开发的过程中使用到的方法和技术,首先要对需求进行分析,其次再是设计系统,最后就是软件功能实现以及做一些测试,本人在开始做这个项目的论文之前到图书馆借了JSP书籍和MYSQL数据库书籍等编程书籍,然后针对开发的超市进销存管理系统,借鉴他人已经做过的系统,本人在网上查找了一些系统并进行了研究,观察及调研他们的系统结构是怎么样的,有什么功能,想清楚用户的需求是啥,然后才是写代码,在写完代码后就会进行软件的测试和验收,这就是大致的开发流程。这次本人的论文有以下几个方面的内容,具体情况如下:一是绪论:本人从项目的现状和它的背景一同分析开发此系统的重要性。二是相关技术:针对本人开发这个系统所用到的编程等技术,进行了说明三是系统分析:本人从两个方面进行了阐述,包括项目的可行性,项目的功能需求这两个方面去研究和探讨本次本人开发的这个系统。四是系统设计:功能模块设计和数据库设计这两部分内容都有专门的表格和图片表示。五是系统实现:对界面进行展示,对操作流程进行说明。六是系统测试:看看项目有没有达到要求,是否能按设想的运行。
2系统关键技术2.1JSP技术JSP(Java脚本页面)是Sun和许多参与建立的公司所提倡的动态web技术。将Java程序添加到传统的web页面HTML文件(*)。htm,*。Html)。JSP这种能够独立使用的编程语言可以嵌入在html语言里面运行,正因为JSP参照了许多编程语言的特性,使得JSP在web的脚本技术当中也占有一定的重要位置,对于刚入门编程行业的初学者来讲,jsp这种编程语言不仅容易学习,而且还具备许多高级的特性。在程序的开发过程中,使用jsp也不失为一种正确的选择,像表单数据的收集操作以及字符串信息的处理方面等等,jsp都能很轻松地解决,帮助程序开发者省下许多时间。JSP新版本的发布,这是一个新世纪的到来。它有面向对象的全部机制,还保留了向下兼容的特性。所以,运用JSP,可以自由地选择OS、Web服务器以及合适的数据库管理系统。同时,我们在编码上也有选择的余地,一种是面向过程,一种是面向对象,或兼而使用,可以称为混合方式设计。JSP的优点:编写一次,始终运行。还有jsp可以延展可以缩短的强大优势,还有就是支持多种开发语言并且兼容性好,适用于很多平台顺利运行。2.2MYSQL数据库大型系统的开发,对数据库也是有一定的要求。数据库具有一定的优势,能够存储、修改、增加、删减数据。在以前数据库的功能只有保存数据和进行一些简单的管理操作,但是时代的进步和需求的改变,现在的数据库正变得越来越复杂,功能也越来越多、越来越实用。数据库最开始只能放少量的信息或者数据,到后来慢慢地增加了许多功能,在现在,数据库甚至能放非常非常大量的信息和数据,相信在未来,它还会进一步发展,变得更加适应人类社会的需求。本次开发的超市进销存管理系统使用的数据库是MYSQL数据库,这个数据库是国外微软公司提出来的具有一定扩展性以及性能高的数据库。MySQL是一个开源和多线程的关系管理数据库系统,MySQL是开放源代码的数据库,具有跨平台性,虽然功能未必强大,导致很多人都了解这个数据库的基本应用,在数据库中,总共建立了10几个表,这里面每个表都是相对应的,都各自有各自的联系,数据库意义重大,如果没有数据库的链接,就没办法运行程序,这显然可以看见数据库与程序的重要性,是紧密相连接的。2.3SSH框架SSH(Spring-Struts-Hibernate),由Spring、Struts2和hibernate3三个部分组成,此框架前市场上较为流行的基于B/S模式的Web应用程序开源框架[7]。Spring号称是JAVA程序开发界的春天,程序在运行期间,类的创建以及调用由调用类使用new关键字来进行创建,这样程序在执行时无论是否需要调用,都会使用内存去创建被调用类[8]。而使用Spring后,由他的核心思想控制反转来解决这个问题,被调用类只有在需要创建时才会创建;Spring的另一个面向切面编程主要的思想就是可以在某个执行程序块的之前或者之后执行一个业务上的逻辑处理等[9]。Struts实现了mvc模式,使得源文件层次结构更加清晰,同时struts有着强大的标签库以及拦截器,从数据库取出的数据使用struts能够更加直观简洁地表示,通过拦截器更加简单地实现防止盗链接操作[10]。Hibernate是针对于数据库建立的框架,他使得程序与数据库之前的联系不再是使用SQL语句来进行操作,开发人员可通过定义的方法来进行对数据库的操作。3系统分析3.1可行性分析可行性分析目的是研究这个project的真实可行性,做一个项目不是为了自娱自乐,而是为了解决某种真实存在的需求。这种可行性的调研必须是对人类社会的发展有促进作用的,真实解决人们生活或者商业上的需求的。3.1.1技术可行性本超市进销存管理系统主要采用JSP和MYSQL数据库作为设计工具,学习起来非常容易并且使用便利。超市进销存管理系统的硬件要求不是很严格,只要是个不太烂的机器,一般都能运行这个系统,如果配置再好一点,运行起来会更加没有压力,体验也会更加好。但是如果配置水平较低,整体的运行效率和运行效果就可能不太行,这样会导致运行起来不顺畅,体验较差。但目前来说,基本上大家使用的设备,运行本超市进销存管理系统是绝对没问题的。大学时,就选修或者自己学习了jsp、mysql等等相关的知识。本人的专业是软件工程,本人对软件测试,UML统一建模语言等课程都有较好的了解,拥有一定的系统分辨、开发和验证能力。JSP以及MYSQL结合起来设计与开发一套超市进销存管理系统,必定是没有任何问题的。3.1.2操作可行性因为本人尚且还在读书,程序方面的开发经验不够充足,对于程序啊、界面啊、UI啊、交互等方面,没有设计得非常复杂,本人主要讲究方便易懂,操作上简洁明了,不能让使用者用着云里雾里。操作者一开始进入系统,UI上便会有相应提示信息,跟着操作提示就可以找到对应的功能操作模块,对于使用者来说上手几乎没有难度。3.1.3经济可行性从经济的可行性上进行分析,主要就是对投入和产出进行一个比较,判断是否值得,如果花费了大量精力、时间乃至金钱,却在产出上没有相应的结果,那就不是一个值得的项目。超市进销存管理系统采用的软件都是微软的东西,开发周期短,这样可以节约很多的时间精力金钱,有开源节流的作用。同时我们的系统非常简洁、对于设备的配置没有非常高的要求,能满足基本需求的设备,一般都能满足我们项目的运行,所以在经济层面上,这个项目是完全可行的。3.1.4法律可行性本人自主开发的系统,所有的资料以及代码都是开源,完全合理合法合规,而且没有任何抄袭,不会有版权上的问题。我们在法律上是完全合法的。根据以上几点理由,本项目在法律可行性上也是完全可行的。3.2系统性能分析(1)系统的存储性:因为是一个涉及到进货、库存、销售的系统,所以数据库的设计和开发上会比较高要求,数据多,操作复杂,各种表链接,各种主键外键的关联,所以本人这个系统是一个非常强大的系统,才能满足这个系统的需要。(2)系统的易学性:这个系统应该是简洁明了的,能让用户迅速弄懂的。系统是给用户使用的,而不是给开发者自娱自乐的,如果一个系统设计得很高端,但是却给用户的使用造成非常大的困扰,或者让用户很难迅速地弄懂这个系统应该怎么使用,那就是一个失败的系统,因为其不符合其设计出来的根本目的(3)系统的数据要求:数据的类型,种类之类的都要非常准确。例如我们不能在姓名这一栏里输入一串数字。并且这些数据应该是可以更新的,而不是完全不可修改的。(4)系统稳定性:要求系统运行相对稳定,尽可能少的BUG,尽可能得流畅,尽可能地提供较好的交互体验和功能体验。3.3系统功能和用例分析前台界面设计:前台界面主要是超市中所有物品的展示,顾客可通过分页栏找到自己想要的物品或者根据关键字使用搜索栏来进行物品的搜索。用户点击物品后进入物品详情页后,可查看到物品名称、价格、保质期、生产地等信息,同时可选择加入购物车或直接购买的方式进行物品购买产生物品的销售信息[20]。后台界面设计:后台登录界面不需选择身份,员工、采购经理、销售经理、财务经理和人事经理输入用户和密码后,系统将会根据用户的身份字段导向对应的管理界面。因此后台部分的功能可根据使用者分为5个部分的用户,除每个用户的登录、退出和密码修改等基本功能外,所实现的主要功能有:(1)员工:个人信息管理;个人工资信息查看。(2)人事管理:个人信息管理;员工管理。(3)销售管理:个人信息管理;商品管理。(4)采购管理:个人信息管理;商品分类管理;采购信息管理;生产商管理。(5)财务管理:个人信息管理;工资管理;商品销售管理;采购信息管理。预期结果:设计出界面美观,操作简单,可运行的网站,并完成毕业论文。对系统的用力例分析可更加清晰系统的业务功能。通过描述系统中所存在的所有类型的用户,以及所有用户提供的服务,从而能够更加清晰系统的功能,有利于系统的设计与实现。以下为对系统中的用例分析:顾客用例图如图3-1所示:图3-1顾客用例图员工用例图如图3-2所示:图3-2员工用例图人事人员用例图如图3-3所示:图3-3人事用例图采购人员用例图如图3-4所示:图3-4采购用例图财务人员用例图如图3-5所示:图3-5财务用例图销售用例图如图3-6所示:图3-6销售用例图3.4系统流程分析3.4.1开发流程本人对本项目所要做的系统在超市实际应用中做了调查,进而确定本人项目的流程类型、设计模式以及开发流程。第一是明白用户的需求是什么,进行需求分析;第二是对管理模块和系统使用的数据库进行分析,然后编程,进行系统整合,最后对系统进行测试,修改BUG。系统开发流程图如图3.2所示图3.2系统开发流程图3.4.2登录流程使用者进入前,必须要通过匹配的用户账户和密码,才可登录到系统,系统登录流程图如图3.3所示。图3.3系统登录流程图3.4.3添加信息流程管理员登录后可进行信息的添加操作,添加信息流程图如图3.4所示图3.4添加信息流程图
4系统设计4.1系统概要设计超市进销存管理系统的特点就是利用Browser/Server(B/S)结构,是一个适用于Internet环境下的模型结构,系统的开发为超市进销存管理提供了一个网络管理平台,让管理人员只要上网就可实现超市进销存相关信息的管理操作。本系统的工作原理图如图4.1所示:图4.1系统工作原理图4.2系统结构设计系统结构设计要求我们对任务进行分解,分段完成这些细分的任务,最终再结合、统筹对接成一个完整的大型项目。在过程中呢,先确定我们细分的小领域要实现什么功能,达到什么效果,对于每个细分任务而言,我们要了解一些基本的信息,例如技术啦、测试等等。然后要对每个小模块做一个初步设计,并在开发的过程中进行优化,设计出一个具体可实现的系统结构。本系统为超市综合管理系统。系统的设计与实现主要是为了实现以下几个目标:第一,信息管理功能,能够实现及时的浏览、添加、删除、修改和查询信息,能够实现用户浏览商品以及管理员对用户、商品、供货商和订单等信息的管理。人事管理,人事经理可对系统中用户进行浏览、添加、删除、修改和查询管理,同时可在添加用户时进行其权限的分配。第三,财务管理,财务管理员可进行员工个人工作信息的浏览、添加、删除、修改和查询管理,可对采购所用的费用和商品销售情况进行查看。员工用户可以查看个人工资信息等。第四,采购和存储货物管理,采购管理员负责货物的采购以及采购信息的管理(主要包括品信息管理,供应商厂家信息管理,采购信息管理),采购的物品自动进入商品信息中,采购管理员可进行商品类型信息的管理;销售管理员可进行商品的管理。系统结构如图4.2所示。图4.2系统结构图4.3数据库设计数据库对于一个项目的影响非常地大,它的好坏直接影响了项目的好坏。其中数据库的设计也就是表结构的设计,还有表之间的相互关联。就比如用户信息表与销售信息表之间,必定要有某些数据有关联,这样在后续的查询中,我们才能查找到相应地想要的内容。若表之间都是独立的,那就毫无作用和意义了。4.3.1数据库E-R图本超市进销存管理系统采用的是MYSQL数据库,数据存储快,因为超市进销存管理系统,主要的就是对信息的管理,信息内容比较多,这就需要好好的设计一个好的数据库,分类要清楚,不能添加信息的时候,造成信息太过混乱,设计好的数据库首先就需要先把各个实体之间的关系表达明确,下面我们用E-R图来具体表示。E-R图是一种描述显示数据类型间的关系的数据描述方法,E-R图可以完整地映射出现实模型的关系。E-R图中的三个最为重要的元素就是实体、属性、关系。E-R图即由这三点组成。本超市进销存管理系统的E-R图如下所示:员工信息字段分析:ID,名称,工号,性别,密码,出生日期,联系方式,地址,职位标记(判断员工的职位),职位,身份,是否删除标记(flag)。员工薪水信息字段分析:ID,员工ID,员工名称,卡号,加入时间,薪水,是否删除标记(flag)。员工和员工薪水信息E-R图如图4-3所示。图4-3员工和员工薪水信息E-R图供应商信息字段分析:ID,名称,地址,联系方式,是否删除标记(flag)。商品分类信息字段分析:ID,名称,是否删除标记(flag)。商品信息字段分析:ID,名称,价格,供应商ID,供应商名称,商品分类ID,商品分类名称,数量,图片路径,单位,保质期,地址,保存方式,配料,优点,是否删除标记(flag)。商品信息和商品分类信息以及供应商信息E-R图如图4-4所示。图4-4商品信息和商品分类信息以及供应商信息E-R图采购信息字段分析:ID,时间,名称,单价,总价格,供应商ID,供应商名称,商品分类ID,商品分析名称,数量,图片路径,单位,保质期,地址,保存方式,配料,优点,是否删除标记(flag)。采购单在添加时需要选择在哪家供应商进行采购以及架构和所获得商品属于那种商品分类。采购信息与供应商信息和商品分类信息如图E-R图如图4-8所示。图4-5采购信息与供应商信息和商品分类信息E-R图订单信息字段分析:ID,时间,总价格,是否删除标记(flag)。订单详细信息字段分析:ID,采购时间,总价格,单价,数量,商品名称,商品ID,订单id,是否删除标记(flag)。订单与订单详细信息以及商品信息E-R图如图4-6所示。图4-6订单与订单详细信息以及商品信息E-R图根据全部实体的局部E-R确定了各个实时间的关系,绘制出全局的E-R如图4-11所示。4.3.2数据库表设计本超市进销存管理系统需要后台数据库,系统采用MYSQL数据库进行数据的存储,下面介绍数据库中的各个表的详细信息。表4.1所示为生产商实体的ID、名称、地址、联系方式以及是否删除属性在数据库物理结构的定义,其中对于是否删除属性的设置其数据类型为int型,1为未删除,0为删除。表4.1Supplier生产商信息表列名数据类型长度说明idVarchar32IDNamevarchar20名称addressvarchar200地址telpohonevarchar11联系方式flagint11是否删除表4.2所示为生产商品的所属类别实体的ID、名称和是否删除属性在数据库物理结构的定义,对每种实体的ID的设置则根据系统ID生成工具的特性选择其长度为32。表4.2GoodClassify生产商品类别信息表列名数据类型长度说明idvarchar32IDNamevarchar20名称flagint11是否删除表4.3所示为商品实体的ID、名称、单价、供应商ID和名称、商品分类ID和名称和是否删除等属性在数据库物理结构的定义,对于其单价属性小数点的特殊性,将其设计为double类型。表4.3Good商品信息表列名数据类型长度说明idvarchar32IDNamevarchar20名称Pricedouble16,2单价suppliersIdvarchar32供应商IDsuppliersNamevarchar20供应商名称goodClassifyIdvarchar32商品分类IDgoodClassifyNamevarchar20商品分类名称numint11数量imagesPathvarchar100图片路径danweivarchar20单位bzqvarchar20保质期flagint11是否删除addressvarchar100地址savaWayvarchar100保存方式peiliaovarchar100配料specialFeaturesvarchar100优点表4.4所示为用户薪水实体的ID、用户ID、用户名称、卡号、加入时间、薪水、是否删除等属性在数据库物理结构的定义,对于其中薪水的添加时间以及用户的卡号信息都应该根据属性的大小来设置合理的数据类型以及大小。表4.4UserSla用户薪水信息表列名数据类型长度说明idvarchar32IDuserIdvarchar32用户IDuserNamevarchar20用户名称card_numbervarchar18卡号y_monthDatetime255加入时间slarydouble16,2薪水flagint11是否删除表4.5所示为订单详细信息实体的ID、下单时间、总价格、是否删除等属性在数据库物理结构的定义,对于订单详细实体的下单时间以及单个价格须根据其特点设计合理的数据类型和大小,其分别为Datetime类型时间和双精度类型的价格。表4.5SDes订单详细信息表列名数据类型长度说明idvarchar32IDtimeDatetime0下单时间salesvarchar32所属订单sumPricedouble16,2单个价格flagint11是否删除表4.6所示为订单详细信息实体的ID、下单时间、总价格、是否删除等属性在数据库物理结构的定义。表4.6Sales订单信息表列名数据类型长度说明idVarchar32IDtimeDatetime20下单时间sumPricedouble16,2总价格flagint11是否删除表4.7所示为采购实体的ID、名称、供应商和名称、商品分类ID和名称、数量等属性在数据库物理结构的定义。对于其中的供应商、商品和分类的ID和名称的设计须跟关联表中字段的类型和长度一致,否则会导致在数据库中进行信息的存取时有报错等问题。表4.7Purchasing采购信息表列名数据类型长度说明idvarchar32IDNamevarchar20名称suppliersIdvarchar32供应商IDsuppliersNamevarchar20供应商名称goodClassifyIdvarchar32商品分类IDgoodClassifyNamevarchar20商品分类名称numint11数量imagesPathvarchar100图片路径danweivarchar255单位bzqvarchar100保质期flagint11是否删除addressvarchar100地址savaWayvarchar100保存方式peiliaovarchar100配料specialFeaturesvarchar100优点Timedatetime0时间singlePricedouble16,2单价doublePricedouble16,2总价格表4.7所示为员工实体的ID、名称、工号、性别、密码、出生日期、联系方式地址等属性在数据库物理结构的定义。表4.8User员工信息表列名数据类型长度说明idvarchar32IDnamevarchar255名称workNumbervarchar255工号sexvarchar255性别pwdvarchar255密码bothDayvarchar255出生日期telphonevarchar255联系方式addressvarchar255地址jobFlagin11职位标记jobPositionvarchar255职位idCardvarchar255身份证号flagint11是否删除
5系统详细设计与实现5.1数据库连接实现一个系统的实现,除了实现系统业务所编写的代码,支持系统运行的还有系统本身的数据,因此系统数据库连接实现是系统实现的一个重点。系统的数据库连接主要由hibernate来实现,之所以选定此框架,是由于此框架的全自动性,即开发人员不需关注于Sql语句的编写,由框架自身来完成。同时这种自动性使得hibernate不同于MyBtais,移植性高。以下代码为系统数据库连接实现的代码展示[23]。<beanname="dataSource"class="com.mchange.v2c3p0.ComboPooledDataSource">//连接类<propertyname="driverClass"value="com.mysql.jdbc.Driver"/>//驱动<propertyname="jdbcUrl"value="jdbc:mysql://localhost:3306/sp"/>//链接<propertyname="user"value="root"/>//用户名<propertyname="password"value="123456"/>//密码<propertyname="initialPoolSize"value="2"/>//初始化池大小<propertyname="minPoolSize"value="1"/>//最小连接池数目<propertyname="maxPoolSize"value="4"/>//最大连接池数目</bean>5.2前台模块顾客输入系统访问连接:8080/superMarket/login,进入系统,可分页式地查看到系统中所有的商品信息。如图5.2所示。图5.2商品信息页实现代码:HttpSessionsession=ServletActionContext.getRequest().getSession();if(nowPage==0){nowPage=1;}page2();goodclassifyList=iGoodClassifyService.getAllGoodClassify();session.setAttribute("goodclassifyList",goodclassifyList);session.setAttribute("goodList",goodList);顾客可通过搜索栏搜索具有关键字名称的商品,点击商品进入商品详情页。商品详情页如图5.3所示。图5.3商品详情页实现代码:Goodgood1=iGoodService.selectOneGood(good.getId());HttpSessionsession=ServletActionContext.getRequest().getSession();session.setAttribute("good",good1);进入物品详情页后,顾客对想要购买的商品输入数量后,可选择两种购买方式“加入购车车”和立马购买。顾客点击页面右上方的“购物车”可进行购物车展示页面如图5.4所示。图5.4购物车展示页面实现代码:Goodgood1=iGoodService.selectOneGood(good.getId());booleanflag=false;//判断购物车是否已经有此物品Iterator<String>iter=salesDesMap.keySet().iterator();while(iter.hasNext()){Stringkey=iter.next();SDessalesDes2=salesDesMap.get(key);if(salesDes2.getGoodId().equals(good.getId())){flag=true;}}SDessalesDes3=newSDes();if(flag==true){Iterator<String>iter2=salesDesMap.keySet().iterator();while(iter2.hasNext()){Stringkey=iter2.next();SDessalesDes2=salesDesMap.get(key);if(salesDes2.getGoodId().equals(good.getId())){salesDes2.setGood_num(salesDes2.getGood_num()+num);System.out.println(salesDes2.getGood_num()+"");salesDes2.setSumPrice(salesDes2.getSumPrice()+num*salesDes2.getSinglePrice());salesDes2.setPur_time(UUIDUtil.getTimeString());alesDes3=salesDes2;salesDesMap.put(salesDes2.getGoodId(),salesDes2);}顾客点击物品详情页的“立即购买”或购物车的“立即结算”进入结算页面,如图5.5所示。实现代码:HttpSessionsession=ServletActionContext.getRequest().getSession();Salessales1=(Sales)session.getAttribute("salesgwc");iSalesService.saveSales(sales1);Iterator<String>iter=salesDesMap.keySet().iterator();while(iter.hasNext()){Stringkey=iter.next();SDessalesDes2=salesDesMap.get(key);salesDes2.setSalesId(sales1.getId());Goodgood1=iGoodService.selectOneGood(salesDes2.getGoodId());good1.setNum(good1.getNum()-salesDes2.getGood_num());iGoodService.updateGood(good1);iSDesService.saveSDes(salesDes2);}session.removeAttribute("salesgwc");session.removeAttribute("salesDesMap");salesDesMap=newHashMap<String,SDes>();setMessage("购买成功");setPath("/qiantai/pay2.jsp");5.3后台模块5.3.1登录输入连接:8080/superMarket/houtai/login.jsp进入系统登录的界面,登录的成功或失败取决于用户需要在进入系统之前是否输入了非空且与数据库某个用户匹配的用户名和密码。当用户到主界面之后,系统会根据用户的身份字段进入不同的功能页面。登录页面如图5.6所示。图5.6后台登录页面登录实现代码:HttpSessionsession=ServletActionContext.getRequest().getSession();Salessales1=(Sales)session.getAttribute("salesgwc");iSalesService.saveSales(sales1);Iterator<String>iter=salesDesMap.keySet().iterator();while(iter.hasNext()){Stringkey=iter.next();SDessalesDes2=salesDesMap.get(key);salesDes2.setSalesId(sales1.getId());Goodgood1=iGoodService.selectOneGood(salesDes2.getGoodId());good1.setNum(good1.getNum()-salesDes2.getGood_num());iGoodService.updateGood(good1);iSDesService.saveSDes(salesDes2)}session.removeAttribute("salesgwc");session.removeAttribute("salesDesMap");salesDesMap=newHashMap<String,SDes>();setMessage("购买成功");setPath("/qiantai/pay2.jsp");5.3.2员工用户模块员工用户登录进入系统后,可通过点击菜单栏下个人信息或点击右侧导航栏的“你好!员工**”查看到员工用户信息。员工用户信息页面如图5.7所示。图5.7员工用户信息页面实现代码:HttpSessionsession=ServletActionContext.getRequest().getSession();Useruser1=iUserService.selectUserByID(user.getId());setPath("/houtai/rs/userUpdate.jsp");session.setAttribute("userUpdate",user1);员工用户可通过点击菜单栏下工资信息查看到用户的卡号、加入时间以及薪水等个人薪水信息。用户薪水信息页面如图5.8所示。图5.8用户薪水信息页面实现代码:UserSlauserSla1=iUserSlaService.selectUserSlaByID(userSla.getId());HttpSessionsession=ServletActionContext.getRequest().getSession();session.setAttribute("userSla",userSla1);return"success";员工用户可通过点击右侧导航栏的修改密码进行用户的密码修改,对于密码的修改,需满足新密码与重复新密码一致,新旧密码不能一致以及三种密码不能为空等规则。密码修改申请提交后,旧密码与当前用户密码不一致时,页面将会弹出旧密码输入错误提示,密码修改页面和旧密码输入错误提示如图5.9和5.10所示。图5.9用户密码重置图5.10旧密码输入错误提示实现代码:if(!user1.getPwd().equals(oldpwd)){setMessage("旧密码输入错误!");if(user1.getJobFlag()==0){setPath("/houtai/rs/updateUserPwd.jsp");}elseif(user1.getJobFlag()==1){setPath("/houtai/yg/updateUserPwd.jsp");}elseif(user1.getJobFlag()==2){setPath("/houtai/xs/updateUserPwd.jsp");}elseif(user1.getJobFlag()==3){setPath("/houtai/cw/updateUserPwd.jsp")}else{setPath("/houtai/cg/updateUserPwd.jsp");}return"true";}else{user1.setPwd(newpwd);setMessage("密码修改成功,点击确定后重新登录!");iUserService.updateUser(user1)setPath("/out");return"false";}系统分为普通员工、人事、财务、销售和采购五个部分的用户,但五个模块的用户都实现了用户的登录,个人信息浏览,个人工资查看,密码修改和退出。5.3.3人事用户模块该部分主要的功能为人事对于系统重要用户的管理。人事用户登录后点击左侧菜单栏下人事管理可分页式的查看到系统中所有的用户信息。用户信息管理页面如图5.11所示。图5.11人事用户管理实现代码:pagePath="userMana";HttpSessionsession=ServletActionContext.getRequest().getSession();if(nowPage==0){nowPage=1;}page();session.setAttribute("userList",userList);session.setAttribute("pagePathA",pagePath);session.removeAttribute("searchUserName");return"true";人事用户可点击图5.11中的新增用户进行系统用户的添加。用户添加页面如图5.12所示。在用户添加页面中,带“*”得输入框都是必填项,对于未填写的信息以及未按正确格式输入的输入,网页的Js校验都会弹出对应的提示提醒操作员。图5.12用户添加页面实现代码:user.setId(UUIDUtil.getUUIDString());user.setPwd("123");user.setFlag(1);System.out.println(user);HttpSessionsession=ServletActionContext.getRequest().getSession();booleanbool=iUserService.judgeAddUser(user);if(bool==false){setMessage("添加用户失败!已经存在");}else{iUserService.saveUser(user);setMessage("添加用户成功!");}setPath("userMana");人事用户可点击图5.11中的某条用户信息后的“修改”连接,进行用户信息的修改,同样在修改时带“*”号的数据不能删减为空且必须满足格式。用户修改页面如图5.13所示。图5.13用户修改页面实现代码:iUserService.updateUser(user);setMessage("更新用户信息成功!");setPath("userMana");人事用户可点击图5.11中的某条用户信息后的“删除”连接,进行用户信息的删除,系统将会弹出提示是否进行删除提示以防误删。同时对于系统所有数据的删除,均采取逻辑删除(即不在页面展示,数据库仍然存在数据)。用户信息删除提示如图5.14所示。图5.14用户信息删除提示。实现代码:HttpSessionsession=ServletActionContext.getRequest().getSession();booleanbool=iUserService.DeleteUserByID(user.getId());if(bool){setMessage("删除用户信息成功!");}else{setMessage("人事用户不能删除!");}setPath("userMana");return"true";5.3.4销售用户模块该部分主要为销售型用户对于商品信息的管理,主要实现了商品信息的删除,修改和查询功能。管理员可点击右侧导航栏下的商品管理对商品信息进行分页式的查看,也可通过中部的查询框进行商品信息的查询。商品信息管理页面如图5.15所示。图5.15商品信息管理销售用户可点击图5.15商品信息管理页面中某条商品信息后的“修改”可进行商品信息的修改。销售用户点击商品信息后的“删除”进行商品的删除。实现代码:pagePath="goodMana";HttpSessionsession=ServletActionContext.getRequest().getSession();if(nowPage==0){nowPage=1;}page();session.setAttribute("goodList",goodList);session.removeAttribute("searchGoodName");return"success";5.3.5采购用户模块该部分实现的主要模块有采购用户对于生产商的管理、商品分类的管理自己采购信息的管理。采购用户登录成功进入系统后,点击功能界面菜单栏中的生产商管理,进入厂商管理界面进行生产商信息的分页式查看。通过生产商展示页面采购用户可通过“新增生产商分类”、“修改”和“删除”连接分别对生产商进行添加、修改和删除操作。生产商信息展示页面如图5.16所示。图5.16生产商信息展示实现代码:pagePath="suppliersMana";HttpSessionsession=ServletActionContext.getRequest().getSession();if(nowPage==0){nowPage=1;}page();session.setAttribute("suppliersList",suppliersList);session.removeAttribute("searchSuppliersName");return"success";点击采购用户功能界面菜单栏中的商品类型管理可分页式的展示所有的商品分类信息。商品类型管理界面如图5.17所示。点击图5.17中“新增商品分类”、“删除”和“修改”链接可对商品分类信息进行添加、删除和修改操作。图5.17商品分类信息管理实现代码:pagePath="goodClassifyMana";HttpSessionsession=ServletActionContext.getRequest().getSession();if(nowPage==0){nowPage=1;}page();session.setAttribute("goodClassifyList",goodClassifyList);session.removeAttribute("searchGoodClassifyName");return"success";点击采购用户功能界面菜单栏中的商品类型管理可分页式的展示所有的商品分类信息。商品类型管理界面如图5.18所示。图5.18采购单管理实现代码:pagePath="purchasingMana";HttpSessionsession=ServletActionContext.getRequest().getSession();if(nowPage==0){nowPage=1;}page();session.setAttribute("purchasingList",purchasingList);session.removeAttribute("searchPurchasingName");return"success";点击图5.18中“新增采购单”、“删除”链接可对商品分类信息进行添加、删除操作。对于采购单的新增(即为商品的添加),需选择生产商信息和商品分类信息并上传图片。采购单新增页面如图5.19所示。图5.19采购单新增页面实现代码:Stringima1Name=UUIDUtil.getUUIDString()+ima1FileName;Filefile1=newFile(savePath,ima1Name);FileUtils.copyFile(ima1,file1);purchasing.setId(UUIDUtil.getUUIDString());purchasing.setTime(UUIDUtil.getTimeString());purchasing.setDoublePrice(purchasing.getNum()*purchasing.getSinglePrice());purchasing.setImagesPath("images/"+ima1Name);Supplierssuppliers1=iSuppliersService.getSingleSuppliers(purchasing.getSuppliersId());GoodClassifygoodC=iGoodyService.getSingleGoodClassify(p.getGoodClassId());purchasing.setSuppliersName(suppliers1.getName());purchasing.setGoodClassName(goodClassify1.getName());purchasing.setFlag(1);purchasing.setAddress(suppliers1.getAddress());iPurchasingService.addPurchasing(purchasing);Goodgood=newGood();good.setId(UUIDUtil.getUUIDString());good.setFlag(1);good.setName(purchasing.getName());good.setNum(purchasing.getNum());good.setAddress(purchasing.getAddress());good.setBzq(purchasing.getBzq());good.setDanwei(purchasing.getDanwei());good.setGoodClassifyId(purchasing.getGoodClassId());good.setGoodClassifyName(purchasing.getGoodClassName());good.setImagesPath(purchasing.getImagesPath());good.setSavaWay(purchasing.getSavaWay());good.setPeiliao(purchasing.getPeiliao());good.setSuppliersId(purchasing.getSuppliersId());good.setSuppliersName(purchasing.getSuppliersName());good.setSpecialFeatures(purchasing.getSpecialFeatures());good.setPrice(purchasing.getSinglePrice());iGoodService.saveGood(good);setMessage("采购成功!");setPath("purchasingMana");5.3.6财务用户模块该部分实现的模块有采购管理员对工资、商品销售信息和采购信息管理。财务用户登录系统后,点击功能界面下工资管理,可分页式地查看到系统中已有的所用员工工资信息。员工工资管理界面如图5.20所示。图5.20员工工资信息管理实现代码:pagePath="userSlaMana";HttpSessionsession=ServletActionContext.getRequest().getSession();if(nowPage==0){nowPage=1}page();userList=iUserService.getAllUser();session.setAttribute("userList",userList);session.setAttribute("userSlaList",userSlaList);session.removeAttribute("searchUserSlaifyName");return"success";通过点击图5.20中员工工资信息管理界面中某条工资信息后的“新增工资信息”、“修改”和“删除”链接可对员工的工资进行添加、修改和删除操作。采购用户点击功能界面菜单栏中的商品销售管理可分页式查看到所有的商品销售信息。商品销售管理如图5.21所示。图5.21销售信息管理实现代码:pagePath="salesMana";HttpSessionsession=ServletActionContext.getRequest().getSession();if(nowPage==0){nowPage=1;}page();session.setAttribute("salesList",salesList);return"success";点击图5.21商品销售管理中某条商品销售信息后的查看可查看当前订单的详细信息。某条商品销售信息下详细订单信息如图5.22所示。图5.22详细订单信息实现代码:pagePath="goodManaSales";HttpSessionsession=ServletActionContext.getRequest().getSession();if(nowPage==0){nowPage=1;}page();session.setAttribute("sDesList",sDesList);return"success";采购用户点击功能界面菜单栏中的采购管理可分页式查看到所有的采购信息,如图5.23所示。同时可通过搜索框和查询按钮进行采购信息的查询以及通过删除连接进行采购信息的删除。图5.23采购信息管理实现代码:pagePath="purchasingMana";HttpSessionsession=ServletActionContext.getRequest().getSession();if(nowPage==0){nowPage=1;}page();session.setAttribute("purchasingList",purchasingList);session.removeAttribute("searchPurchasingName");return"success";6系统测试6.1测试目的系统测试也是非常重要的一个模块,它主要判断系统是否符合要求,在功能上、运行上是否符合预期。若一个系统在测试的时候出现了问题,我们应当欢迎并且及时的修改。超市进销存管理系统完成了开发之后,就进入了测试环节,测试的主要作用就是为了发现问题,找出问题,解决问题。我们要以用户的视角去使用这个软件,怎么可能出错我们就怎么来操作,只有这样,在真实的用户使用场景上,才能尽可能少地减少BUG和错误,测试的过程会用到许多方法,黑盒白盒等等,测试后的最后目的,就是让真正的用户在使用的时候尽可能少遇到一些问题。其次就是一些界面上的问题,也可以通过测试来发现,例如某处比较辣眼睛,虽然功能没问题但在视觉上让人不舒服,这种涉及到用户体验的事情也是非常重要的,需
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 煤矿内部控制管理制度
- 煤矿运销科内部考勤制度
- 甲公司内部控制制度规定
- 监测站内部审计制度
- 监理内部考勤制度
- 科室内部奖金分配制度
- 科技馆内部制度
- 管委会内部竞聘上岗制度
- 粮仓进粮内部管理制度
- 贸易型企业内部控制制度
- 新课标人教版六年级下册数学全册教案(核心素养教案)
- 《快递实务》教案全套 项目1-7 1.1走进快递-7
- 《建筑业10项新技术(2025)》全文
- 藻井文化课件
- 监委外逃人员管理办法
- 136号文深度解读及案例解析培训
- 食品用洗涤剂产品生产许可证实施细则
- 歌唱活动活动方案
- 部编版小学语文一年级上册看拼音写词语全册(练习+答案)
- 住院阿尔茨海默病患者安全管理专家共识解读
- 假如我是总经理如何管理企业
评论
0/150
提交评论