毕业设计之进销存管理系统——一步步搭建自己的框架及系统bojiangzhou

上面简单的展示了完成后的系统测试截图,你可以下载war包部署到自己的tomcat上看,下面开始进入正文。

开发一个(简单)系统,我想首要做的就是进行系统需求分析,弄清楚你为什么要做这个系统,这个系统有哪些功能模块,每个功能具体实现些什么功能。

当然,我这里的主要目的是完成毕业设计,交出毕业论文。但我并没有简单的只是为了完成一个毕业设计而去开发这个系统。主要想法是以开发这套进销存管理系统为例,详细说明一个系统从确认需求、技术选型、架构设计、系统实现到测试部署的整个开发过程。综合运用自己平时所学的知识、技术,及实习获得的经验等,去完整且较好的实现一个系统。搭建一个基础系统框架,形成一定规范,以后在此基础上做开发,可以省去很多诸如搭建框架、加入依赖、配置等工作。

这次开发所做的主要工作及意义如下:

①学会站在用户的角度分析用户需求,完成需求分析设计等。

③熟练掌握Spring+SpringMVC+Hibernate+ExtJs的开发技术。

④熟练使用maven构建工具。

⑤站在企业的角度,试着搭建自己的一个底层基础框架。

⑥建立完整的燃气管进销存管理系统,进行测试并分析结果。

⑦将系统部署到互联网上,以实现真正的web应用。

首先,对系统进行需求分析,首先需要了解的就是什么是进销存系统,进销存系统也称为供应链管理系统,最基本的内容就是采购、库存、销售、退货管理。进销存系统是对企业生产经营中采购、入库、销售进行跟踪管理,从采购单开始,到商品入库,商品销售出库,每一步都跟踪记录。有效解决企业的分销管理等业务问题。那么燃气管进销存系统有何不同呢,其实进销存系统已经具备了一般商品的进销存功能,燃气管就是一种商品。以此为出发点,开始着手设计系统功能模块。

系统分为6大模块,分别是基础设置、采购管理、销售管理、库存管理、统计分析、系统管理。系统设置的角色有admin、采购员、销售员、库存管理员等。

系统模块结构(使用xmind设计):

系统总体流程(使用visio设计):

需求确定了,就要进入具体的开发阶段,首先确定开发这个系统综合用到哪些技术、开发工具等。

简单说下这个系统的开发环境:

开发平台:windows8.1

Java版本:jdk1.8

项目管理工具:Maven

开发工具:IntellijIDEA

数据库:MySql5.1

服务器:Tomcat8.5

开发框架:Spring4+SpringMVC+Hibernate5

前端框架:ExtJs4.2+Jsp

建模工具:PowerDesigner、Visio

IDEA是java语言开发的集成环境,Intellij被公认为最好的Java开发工具之一。IDEA在代码自动提示、重构、调试、各类版本工具(maven、svn等)整合等方面都是比较强的。本人是在实习期间转用idea开发的,之前一直使用eclipse,相比eclipse,idea在调试、代码自动提示等方面更显优势。项目在idea中有一个更友好的目录结构,尤其是多工程项目。当然,eclipse比idea更容易上手,使用idea可以提高你的开发速度,但前提是你需要记住大量的快捷键。使用idea的调试功能,比如,你只需要按快捷键Alt+F8,然后输入表达式,就可以快速求值;在调试的时候,idea会在变量的后面以不同的颜色显示变量的值,你就可以很清楚的知道调试的每一步,非常方便。使用好IDEA能在很大程度上提高我们的开发速度。

ExtJs可以用来开发富客户端的ajax应用,是用javascript写的与后台技术无关的前端ajax框架,主要用于创建前端用户界面,拥有强大的数据处理功能,以及图表统计等。同时,ExtJs拥有很多个性化的主题供你选择,是开发后台管理系统的一个不错的选择。

在进行进销存系统的设计和编码之前,首先设计一个自己的底层框架,这个底层框架在之后可以作为其它具体项目开发的一个基础,从而不必每次开发项目时,都去做很多重复的工作。这个底层框架主要包括一个开发的规范,以及一些通用的工具类等,更重要的是分类别引入各个框架,如Spring、Hibernate、各个配置文件等。同时,如果以后在开发中,增加的一些新功能,还可以往这个底层中添加,不断的去完善。

在进行框架设计之前,为了使软件开发过程顺畅、提高代码的可靠性,可读性和可维护性等,首先需要确定的就是开发规范了,俗话说,没有规矩不成方圆,软件开发亦是如此。下面列出一些简单的需要遵守的规范。

首先需要遵守的是一些基础规范。一般来说,公司会将域名作为所有命名的一个基础,比如文件名、包名等等。因此我申请了一个域名[www.lyyzoo.com]作为个人域名。然后将D:/lyyzoo-repo作为开发的根目录,即个人代码仓库,以后所有的项目都会建到这个目录下。所有的项目开发使用maven来管理项目,因此目录结构是标准的maven规范目录。

maven约定的目录结构:

①命名

>所有的命名需要见名之意,尽量保证通过变量名得知变量的含义,需要注释的地方尽量添加注释。

>包命名全小写,通过域名倒写+模块的形式,如:com.lyyzoo.service

>类命名采用Pascal名法,大写字母开头,每个单词首字母大写。

>方法名采用Camel命名法,小写字母开头,每个单词首字母小写;getter和setter使用Lombok自动生成,只需添加@Data注解即可。

>变量名采用Camel命名法,小写字母开头,每个单词首字母大写。变量名不宜过长,可采用首字母缩写的形式,但要见名之意。

>常量名全大写,每个单词之间使用”_”分隔。

②分层

项目以功能模块划分,不同项目建立不同的工程,使用maven的依赖进行管理。包的基本分层有controller(控制层)、service(业务层)、dao(数据访问层)、entity(模型层)。

底层模块结构图:

以下是各个POM之间的关系:

①lyyzoo>pom.xml

②lyyzoo-base>pom.xml

③lyyzoo-starter>pom.xml

结构建好后,就需要进行一些详细的依赖配置工作了,lyyzoo是所有模块的父类,所以在lyyzoo中需要添加公用的属性、依赖管理、maven插件等。

首先将所有的版本号提出来,放到里,这样一旦需要切换到另一个版本时,就可以只改个版本号就达到目的了。其中列出了一些属性如下:包括底层的版本、Java版本、Spring、Hibernate的版本等等。

①首先需要引入lyyzoo下的其它模块,如lyyzoo-base-core、lyyzoo-starter-base等模块。

说明一下,整个底层很大一部分是从之前实习的公司(这个就不说了)直接拿过来的,有些则更改了。相信我拿取的这部分代码并不会涉及机密问题,不用于商业用途,仅仅只是学习,应该没多大问题。

lyyzoo-base-core目录结构:

lyyzoo-base-core是基础核心,封装了返回结果和加入了一些常用的工具类。

com.lyyzoo.bean包下封装了BaseBean和Result,BaseBean是Bean类的一个基础类,实现了序列化,重写了toString()方法,如下:

1packagecom.lyyzoo.bean;23importorg.apache.commons.lang3.builder.ToStringBuilder;4importorg.apache.commons.lang3.builder.ToStringStyle;56importjava.io.Serializable;78/**9*BaseBean实现序列化

10*11*@authorbojiangzhou12*@date2017-03-2713*/14publicabstractclassBaseBeanimplementsSerializable{1516/**17*ToStringBuilder–用于辅助实现Object.toString()方法

18*/19publicStringtoString(){20returnToStringBuilder.reflectionToString(this,ToStringStyle.MULTI_LINE_STYLE);21}2223}ViewCodeResult则封装了返回的结果,这里主要与ExtJs相对应,ExtJs进行ajax请求时,返回success=true,会进入success()方法;返回success=false,会进入failure()方法。同时,封装了返回消息、标识、错误信息等,便于前端拿到相应数据。

lyyzoo-starter-base目录结构:

lyyzoo-starter-base是web应用程序的一个基础,主要封装了基础实体类以及spring-base和日志的配置。实体的顶层是AbstractEntity,AbstractEntity继承BaseBean。AbstractEntity重写了equals和hashCode方法,主要做的处理是,如果两个实体的id相同也算这两个对象为同一个对象。代码如下:

1packagecom.lyyzoo.data.entity;23importcom.lyyzoo.bean.BaseBean;45importjava.io.Serializable;67/**8*抽象实体类重写equals和hashCode方法9*10*@authorbojiangzhou11*@date2017-03-2812*/13@SuppressWarnings("serial")14publicabstractclassAbstractEntityextendsBaseBeanimplementsSerializable{1516publicabstractIDgetId();1718@Override19publicbooleanequals(Objectobj){2021if(null==obj){22returnfalse;23}24if(this==obj){25returntrue;26}27if(!getClass().equals(obj.getClass())){28returnfalse;29}3031AbstractEntity<>that=(AbstractEntity<>)obj;3233returnnull==this.getId()false:this.getId().equals(that.getId());34}3536@Override37publicinthashCode(){38inthashCode=17;3940hashCode+=null==getId()0:getId().hashCode()*31;4142returnhashCode;43}4445}ViewCodeBaseEntity则继承AbstractEntity,BaseEntity作为其它实体的父类存在,BaseEntity定义了主键ID的生成策略。代码如下:

在开始开发一个系统之前,首先需要做的就是根据需求分析设计系统的实体对象以及对应的数据库表结构,这是开发的基础。

根据前面的需求分析设计的功能模块,实体对象可以分为5个模块,分别是系统模块(system)、基础模块(base)、采购模块(purchase)、销售模块(sale)、库存模块(stock)。下面是实体清单:

有了清单之后,利用PowerDesigner进行数据库物理模型设计。由于拥有对数据库的完全控制权,所以不对表设置约束,所有的约束在程序代码中进行控制。下面列出各个实体的属性即对应的表,具体可参考《数据库物理模型.pdm》。物理模型设计完成后,创建名为gpss的数据库,然后创建各个表。

数据库模型:

需求分析做完了,技术没问题,底层架构也设计好了,数据库设计好了,前面的所有准备工作做完了,下面就要进行燃气管进销存系统的编码实现了。首先要做的工作就是创建工程,项目名拟为gpss,即燃气管进销存(GasPurchaseSaleStock)的缩写,工程名则为lyyzoo-gpss。

lyyzoo-gpss目录结构:

lyyzoo-gpss>pom.xml:

lyyzoo-gpss-base>pom.xml:

lyyzoo-gpss-web>pom.xml:

一些基础的配置如下:

比如JDBC的属性:

config-online.xml:

maven环境配置,在lyyzoo-gpss>pom.xml中配置两个环境:

1234dev567env8dev91011121314online151617env18online19202122ViewCode不同环境打包插件(portable-config-maven-plugin)的配置:

1234com.juvenxu.portable-config-maven-plugin5portable-config-maven-plugin61.1.578910replace-package1112131415src/main/resources/portable/config-${env}.xml16171819ViewCode3.模块分层3.1lyyzoo-gpss-base工程建好后,创建包的结构。按照一般的分层方式,分为dao层、entity层、service层,同时,每层下按模块划分为system、base、purchase、sale、stock。然后在entity下根据表设计创建实体类。

lyyzoo-gpss-base目录结构:

然后是lyyzoo-gpss-web模块,该模块主要是controller层,以及静态资源文件、jsp文件等。com.lyyzoo.gpss.web作为controller层的包,同样,在web下按系统模块划分。

lyyzoo-gpss-web目录结构:

lyyzoo-gpss-web/src/main/webapp/static作为静态文件的根目录,static/lib目录作为三方类库的根目录,如ExtJs、jQuery、其它的插件等。static/css是系统css文件的根目录;static/img是图片的根目录;static/js是系统js文件根目录,/js下同样按模块划分。

静态资源文件目录结构:

taglib.jsp中引入了标签和设置了资源的路径:

BaseController代码如下:

HomeController代码如下:

系统容错性测试,主要是测试输入一些错误的数据类型以及超出范围的数值测试系统在异常条件下的行为。系统在这方面做得比较好,如果用户输入了一些非法的数据,会立即提醒用户输入正确的数据。首先会在前台判断用户输入的数据的合法性、是否必须输入等,数据传到后台后,还会在代码里判断一次数据是否正确,才会保存到数据库。而系统使用的Jdbc也能在一定程度上防止SQL注入等问题。如果系统发生一些无法预测的异常,也会以友好的界面提示用户,以便技术员及时维护系统。

总体来说,整个的测试过程比较顺利,也存在一些小问题,就立即修复了。功能全部实现了,该系统能满足一个基本的进销存流程,以后也还可以扩展。

写到这里就基本完了,大学四年的最后一篇博客,以后就是在工作中去学习了。

很开心,要离开学校了,可以去工作找money了;很忧伤,要离开学校了,一生中可能最舒适的时光就是大学时光了。

我很喜欢我的学校——西南大学,坐落于缙云山下,环境优美、美女如云,哈哈!

THE END
1.ssm毕设进销存管理系统源码+程序+论文ssm毕设 进销存管理系统源码+程序+论文 本系统带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。 系统程序文件列表 开题报告内容 选题背景 进销存管理系统作为企业资源管理的重要工具,对于提升运营效率、降低管理成本具有关键作用。当前,国内外关于进销存管理系统的研究主要集中在系统架构设计、数据处理算法以及https://blog.csdn.net/wuzhou101/article/details/143841771
2.进销存管理系统论文(独家整理6篇)(论文范文)进销存管理系统论文(独家整理6篇)文档信息主题:关于论文中的毕业论文”的参考范文。属性:Doc-02F6UE,doc格式,正文3558字。质优实惠,欢迎下载!适用:作为计算机论文科目,编写学士学位论文、本科毕业论文或发表期刊、评初级职称的参考文献;提供作写作参考,解决学术论文怎么写及格式等相关问题。作者:**目录目录1正文.https://m.docin.com/p-2617907888.html
3.进销存管理系统论文范文10篇(含目录).doc进销存管理系统论文范文10篇(含目录).doc,进销存管理系统论文范文10篇(含目录) 文档信息 主题: 关于“论文”中“毕业论文”的参考范文。 属性: F-00D5FK,doc格式,正文3270字。质优实惠,欢迎下载! 适用: 作为工商管理、管理理论写作的参考文献,解决如何写好实用https://m.book118.com/html/2021/0613/7031000101003132.shtm
4.基于Java的进销存管理系统设计与实现计算机专业论文基于Java的进销存管理系统设计与实现_计算机专业论文 扫码加入财会交流群 计算机专业论文范文 摘要 随着企业业务的不断扩大,企业的物资供应管理往往是很复杂,繁琐的,由于掌握的物资种类众多,订货,管理,渠道各有差异,各个企业之间的管理体制不尽相同。各类统计计划报表繁多,因此物资管理必须实现计算机化,而且必须根据企业的https://bbs.pinggu.org/jg/lunwen_jisuanjizhuanyelunwen_120487_2.html
5.进销存管理系统毕业设计论文开题报告.doc该【进销存管理系统-毕业设计论文-开题报告 】是由【业精于勤】上传分享,文档一共【7】页,该文档可以免费在线阅读,需要了解更多关于【进销存管理系统-毕业设计论文-开题报告 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设https://www.taodocs.com/p-979340710.html
6.小型零售业仓库进销存管理系统的设计与实现28吕俊亚;超市进销存管理系统的设计与实现探讨[J];现代商贸工业;2008年03期 29王会青;医药进销存管理系统设计与实现[J];山西科技;2007年03期 30刘丹;张婷;李志刚;基于ASP.NET的企业进销存管理系统的开发[J];电脑知识与技术(学术交流);2007年19期 中国重要会议论文全文数据库前2条 https://cdmd.cnki.com.cn/Article/CDMD-10614-2010251559.htm
7.中小型商品流通企业进销存管理系统的分析与设计中小型商品流通企业进销存管理系统的分析与设计,商品流通企业,进销存管理,数据库, 随着中国社会主义市场经济的高速发展,中小企业在经济领域的作用越来越大,并且数量也越来越多。在众多的中小企业中,商品流通企业https://wap.cnki.net/lunwen-2009166677.html
8.基于jspm多店进销存系统的计算机毕设源码+论文商品数据的处理量快速增长,原本的人工管理模式已经不太适合这种形式,使用计算机可以完成数据收集、处理和分析,减少人力和物力的资源浪费。企业需要商品多店进销存系统的建立,能为企业商品管理提供信息化管理和动态化管理,提高商品管理质量和使用效率。 在本系统的设计中,运用Java设计语言,系统的数据库采用了 SQLSERVER。https://blog.51cto.com/u_12508287/12130229
9.如何搭建轻流进销存管理系统轻流搭建进销存管理系统轻流进销存管理系统是一种用于管理企业进销存业务的软件系统。它可以帮助企业实现库存管理、销售管理、采购管理、供应链管理等功能,提高企业的运营效率和管理水平。 要搭建轻流进销存管理系统,可以按照以下步骤https://cloud.tencent.com/developer/information/%E5%A6%82%E4%BD%95%E6%90%AD%E5%BB%BA%E8%BD%BB%E6%B5%81%E8%BF%9B%E9%94%80%E5%AD%98%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F-article
10.基于ERP的中小型企业进销存管理信息化研究论文题目:基于ERP的中小型企业进销存管理信息化研究 论文分类:工业技术论文→自动化技术、计算机技术论文→计算技术、计算机技术论文→计算机软件论文→管理程序、管理系统论文 论文页数:共78页 会员充值下载 会员下载更优惠,低至0.3元/页,本篇需支付23.4元 下载http://m.51papers.com/down.asp?id=734786
11.我院药品进销存系统的应用及相关药品管理措施改进探讨论文标题: 我院药品进销存系统的应用及相关药品管理措施改进探讨 英文标题: 中文摘要: 英文摘要: 期刊: 2013年第24卷第13期 作者: 陈社带 刘锐锋 程小荣 林保基 英文作者: 关键字: 药品进销存系统;药品盘点;药品管理;账物相符率;改进 KEYWORDS: 总下载数: 81次 本日下载数: 2次 本月下载数: 81次http://wap.china-pharmacy.com/9/29/34/178/19625.html