当前位置:网站首页>基于SSM的物料管理系统(源码+文档+数据库)
基于SSM的物料管理系统(源码+文档+数据库)
2022-06-24 19:02:00 【老杨没掉头发】
目录
摘要
该系统项目开发主要是丰富的前端页面配合部分的后台功能,主要包括登录功能板块,首页板块、出库板块、入库板块、修改板块、新产品入库板块。经过需求分析,在此的基础上提出了系统的总体设计方案及各模块的详细设计,对每个页面的设计都进行了详细设计。
该网站系统使用了SSM框架、Eclipse编辑器、数据存储用了mysql,希望这个系统可以如设计初衷为人们的生活带来信息共享的便利,以及记录生活美好时刻。
此系统由博主于2022年6月18日测试,系统完美运行,虽然只是原始表单显示,但其功能之强大不亚于一个带了美化的网站。
源代码放在文章末尾。
一、需求分析
从软件工程的理论基础出发理解,需求分析在整个软件生命周期中是最重要的一个阶段。软件需求分析报告的质量对软件开发的前期功能设计和后期维护以及扩展等影响是非常深远,它的存在意义十分巨大。高质量的软件需求分析对软件的整个开发过程将起到事半功倍的作用,有句话说的好,“磨刀不误砍柴工”。若前期无法准确用户需求和产品功能需求,后续的需求修改将会导致和带来一定程度甚至巨大的损失。
二、文档目录
文档结构标准,符合毕设要求。
三、功能性需求分析
功能和文字太多,故以下只列出模块标题,实际参考文档第3章。
四、非功能性需求分析
功能和文字太多,故以下只列出模块标题,实际参考文档第3章。
五、项目数据库设计
总体E-R图
六、主要功能模块实现
6.1 登录板块
前面系统流程已经介绍到过登录的逻辑实现,登录验证失败重定向回登录页,登录验证成功则跳转进入首页面。
6.1.1 后台登录核心验证代码
//用户登录状态判断
Admin admin2 = as.selectOne(admin);
String name = admin.getName();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if(admin2==null){//表示找不到,登录失败
admin2 = as.selectByName(name);
if(admin2==null){//用户名错误
model.addAttribute("loginError","用户名不存在");
}else {
if(admin2.getCount()==0){//第一次登录失败,记录第一次登录失败的时间
as.updateFirstErrorLog(name);
model.addAttribute("loginError","密码错误");//传数据至jsp界面
}else {
Date now=sdf.parse(sdf.format(new Date()));
Date date1=sdf.parse(admin2.getTime());
System.out.println(now);
System.out.println(date1);
System.out.println(now.getTime()-date1.getTime()<24*60*60*1000);
model.addAttribute("loginError","密码错误");//传数据至jsp界面
if(admin2.getCount()>0&&admin2.getCount()<4){//登录密码错误,count加一
as.updateErrorCount(name);
model.addAttribute("loginError","密码错误");//传数据至jsp界面
}
if(now.getTime()-date1.getTime()<24*60*60*1000&&admin2.getCount()==4){
as.updateState(name);//设置count为5,并且设置状态为冻结,设置time为当前冻结的时间
model.addAttribute("loginError","一天内输错密码5次,账号冻结一天");//传数据至jsp界面
}
if(admin2.getCount()==5&&now.getTime()-date1.getTime()<24*60*60*1000){
model.addAttribute("loginError","该用户名因多次输入密码错误,已被冻结");
}
}
}
return "forward:/login.jsp";
}if(admin2.getState()==-1) {//账户被冻结的情况
Date now=sdf.parse(sdf.format(new Date()));
Date date1=sdf.parse(admin2.getTime());
System.out.println(now);
System.out.println(date1);
System.out.println(now.getTime()-date1.getTime()<24*60*60*1000);
if(now.getTime()-date1.getTime()>24*60*60*1000){
as.updateErrorState(name);//冻结时间超过一天,自动解冻
}
else{
model.addAttribute("loginError","用户被冻结");//传数据至jsp界面
return "forward:/login.jsp";
}
}
as.initLog(name);
model.addAttribute("admin",admin2);
request.getSession().setAttribute("admin",admin2);
6.1.2 前台登录跳转核心代码
<form action="${pageContext.request.contextPath }/login.do" method="post" method="post" onsubmit="return checkForm()">
<table >
<tr>
<td><font color="white">用户名:</font></td>
<td><input id="userName" value="${loginName }" name="name" size="20"/></td>
</tr>
<tr>
<td><font color="white">密 码:</font></td>
<td><input id="pwd" type="password" name="pwd" size="20"/></td>
</tr>
<!-- <tr>
<td>验证码:</td>
<td><input id="userName" name="userName" size="4"/>
<img src="image.jsp" alt="" onclick="this.src='image.jsp?id='+Math.random()">
</td>
</tr> -->
<tr><td></td></tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="登录"/>
<input type="reset" value="重置"/>
</td>
</tr>
</table>
</form>
其余代码便不一一讲解,直接上效果图,详情请参考设计文档。
6.2 首页模块
6.3 管理员管理模块
增删改查均能实现
6.4 入库出库模块
6.5 添加大类和小类模块
6.6 添加供应商
6.7 查询功能
6.8 入库出库分组查询
6.9 导出数据
七、系统测试
7.1 测试方法
在依照ui设计图完成前端页面展示之后,便可以依照需求与设计图进行一波用户界面测试,检测前端页面是否符合客户要求,是否组合搭配完美,体验感良好不突兀以及input框等是否符合输入条件限制
对脚本语言中的模块或者封装的方法等最小可验证的单元进行检查以及验证过,单元测试可以尽早发现出问题,但是单元测试具有一定的局限性,测试范围不广泛不全面,无法覆盖所有的执行路径。因此需要进行集成测试。
性能测试通常包括负载以及压力测试两种。
性能测试通常是用于检测系统在反复使用的情况下是否还能满足需求上要求的性能指标,也能用于检测系统在运行过程中是否会发生内存泄漏之类的问题。
在系统大概完成之时,要对项目系统依照测试计划完整地测试一遍整个项目并记录和提出bug反馈,在解决相应bug时,便可以进行回归测试了。
在回归测试之后,当该版本的项目系统准备正式封版之前,进行最后一次整体的至上而下的详细测试,该测试步骤主要是针对用户需求、业务流程进行的正式的测试,以确定系统是否能够满足验收标准。
(1)测试目的:由于该项目的重心偏向于页面设计和前台交互实现,于是浏览器测试便是测试的重中之重。
(2)测试对象:对目前互联网中的前七款浏览器进行测试
(3)测试结果如表6-1。
八、结论与展望
在互联网大范围覆盖的加速时代背景下,人们的生活节奏也随之越来越快,这款基于库存管理的系统不论是设计它之时,还是到现在小出成品,它的初衷与意义都是在符合当代人们生活要求的前提下给人们带来一些创意用心非恶性盈利的库存管理平台,希望可以为广大仓库管理员带来一股不一样的清流。
8.1 结论
从思索自己的项目方向到如今的小有成果,一路过来,这就是个学习的过程。从某种意义上来说,这是第一个从设计理念到需求初稿、项目总体设计、页面设计、后台功能需求,然后逐个去完成再到后台的找bug改bug到最后的总结。一路走来学习到了很多优秀文献,精美的前端页面设计,以及尝试学习和接触不太擅长的后台和数据库。其次,论文的整套流程让我对大学的许多学习课程再次进行了回顾,也让我对不曾涉及的领域有个一个专研并使用的机会。总而言之,这就是个学习的路程,一路下来学习到了很多,自己也扎实了很多。
8.2 后期展望
到现在为止我们的项目已经算是有了一个1.0版本了,基本上可以满足用户的需求,但是随着互联网的不断发展以及为了更上这日新月异的时代的前进角度,我们的系统需要不断优化、更新、迭代,不断满足新的需求。这是一个漫长的过程,但是只要我们不忘这款项目的设计初心,我们的项目一定可以越来越好并从中学习到许多。
在未来的时间里我希望以下几个方面可以进行更好的完善与优化:
- 扩大系统的信息来源,增强自己的数据库,以为用户提供更多更丰富的优质信息和有趣故事。
- 系统的信息分类更加广泛更加全面,不再仅仅局限于以上几个模块,而是可以涵盖到生活的方方面面。
- 提高系统的信息搜索效率和准确性,在巨大的信息资源库中,对信息的准确捕捉是一件非常重要的事情,得以迅速给出用户他们想要的反馈信息。
边栏推荐
- Methods for comparing float types in the kernel
- Vs2017 add header file path method
- RF_DC系统时钟设置GEN1/GEN2
- 【CANN文档速递04期】揭秘昇腾CANN算子开发
- Compressed list of redis data structures
- Get to know the data structure of redis - hash
- gateway
- LCD1602 string display (STM32F103)
- 【CANN文档速递06期】初识TBE DSL算子开发
- Openstack actual installation and deployment tutorial, openstack installation tutorial
猜你喜欢
Zadig + 洞态 IAST:让安全溶于持续交付
LCD1602 string display (STM32F103)
Capacitive inching touch switch module control (stm32f103c8t6)
苹果不差钱,但做内容“没底气”
Vs2017 setting function Chinese Notes
【Go語言刷題篇】Go從0到入門4:切片的高級用法、初級複習與Map入門學習
Mq-2 smoke concentration sensor (STM32F103)
Teach you how to view the number of connected people on WiFi in detail how to view the number of connected people on WiFi
Microsoft Office Excel 2013 2016 graphic tutorial on how to enable macro function
建立自己的网站(14)
随机推荐
Todesk remote control, detailed introduction and tutorial
JMeter environment deployment
LCD12864 (ST7565P) Chinese character display (STM32F103)
Coinbase将推出首个针对个人投资者的加密衍生产品
Bytebase joins Alibaba cloud polardb open source database community
Five day summary of software testing
Win7 10 tips for installing Office2010 five solutions for installing MSXML components
Ribbon源码分析之@LoadBalanced与LoadBalancerClient
Landcover100, planned land cover website
Docker installing Oracle
An accident caused by a MySQL misoperation cannot be withstood by High Availability!
[cann document express issue 05] let you know what operators are
Using dynamic time warping (DTW) to solve the similarity measurement of time series and the similarity identification analysis of pollution concentration in upstream and downstream rivers
Nodered has no return value after successfully inserting into the database (the request cannot be ended)
What is showcase? What should showcase pay attention to?
[go language questions] go from 0 to entry 4: advanced usage of slice, elementary review and introduction to map
Fundamentals of performance testing -- definitions of common terms
The agile way? Is agile development really out of date?
Stackoverflow 年度报告 2022:开发者最喜爱的数据库是什么?
First understand redis' data structure - string