服装库存管理系统课程设计(共46页).doc
精选优质文档-倾情为你奉上服装库存管理系统课程设计专心-专注-专业长 沙 学 院课程设计说明书题目服装库存管理系统系(部)计算机科学与技术系专业(班级) 软件工程(服务外包)1班姓名曾祥炫学号指导教师潘怡起止日期 .3.12 .7.6课程设计任务书课程名称:基础编程能力考核设计题目:服装库存管理系统已知技术参数和设计要求:1. 问题描述(功能要求):服装库存管理系统主要包括:(1) 系统管理 系统管理包括用户管理和货号管理,能进行增加、删除、修改和查找的操作。(2) 库存管理 库存管理包括入库单管理和出库单管理。入库单管理包括入库单基本信息管理和入库单明细管理,并能分别对入库单和入库单明细进行增加、删除、修改和查找的操作。出库单管理包括出库单基本信息管理和出库单明细管理,并能分别对出库单和出库单明细进行增加、删除、修改和查找的操作。(3) 辅助管理辅助管理包括修改密码。2. 运行环境要求:(1)客户端:Windows操作系统IE浏览器(2)服务器:windows server 版操作系统Tomcat web 服务器My SQL 数据库服务器3. 技术要求:强调软件工程过程文档的规范化。l 需求分析规格说明书与用例规约l 系统数据库设计,时序图,类图,MVC架构l 系统完整编码,采用JSP、Servlet技术设计工作量:40课时工作计划:(1) 级软件工程所有班级16课时: 1609理论讲座20课时:上机、调试。计算机系机房4课时:答辩。计算机系机房。(具体时间地点老师先申请,机动安排)指导教师签名:日期:教研室主任签名: 日期:系主任签名: 日期:长沙学院课程设计鉴定表姓名曾祥炫学号专业软件工程班级10软件1班设计题目服装库存管理系统指导教师潘怡指导教师意见:评定等级: 教师签名: 日期: 答辩小组意见:评定等级:答辩小组长签名:日期:教研室意见:教研室主任签名: 日期: 系(部)意见:系主任签名:日期:说明课程设计成绩分”优秀”、”良好”、”中等”、”及格”、”不及格”五类;项目实训(四)工作计划表周 次实训内容备 注第0周( .3.12 .4.6)1 实训启动召集项目组学生开会明确实训的内容和要求袁伟森老师讲课致远楼1609第一周( .5.14 .5.18)1系统需求分析设计致远楼1409第二周( .5.21 .5.25)1组长讨论会,讨论需求分析进度情况完善需求文档2. 用例和用例规约设计致远楼1409第三周( .5.28 .6.1)1系统详细设计,类模型设计2时序图的设计致远楼1408第五周( .6.4 .6.8)1第一阶段任务检查需求分析2. 开发工具的使用致远楼1408第六周( .6.11 .6.15)1Struts2技术讲解2. 第二阶段任务检查数据库的设计致远楼1408第七周( .6.18 .6.22)1. 代码实现2. 答疑调试致远楼1408第八周( .6.25 .6.29)1. 代码实现2. 答疑调试致远楼1408第九周( .7.2 .7.6)1答辩致远楼1401目录第1章 设计内容与要求1.1 设计内容服装库存管理系统主要的设计内容包括:(1)系统管理 系统管理包括用户管理和货号管理。在用户管理中要包括新建系统用户、删除系统用户、查看系统用户详细信息、更新系统用户、查询系统用户、系统用户登陆和修改密码。在货号管理中包括新建货号、删除货号、查看货号详细信息、更新货号、查询货号(2)库存管理库存管理包括入库单管理和出库单管理。入库单管理包括新建入库单、删除入库单、查看入库单详细信息、更新入库单、提交入库单、查询入库单、新增入库单明细、查看入库单明细的详细信息、更新入库单明细、删除入库单明细、查询入库单明细。出库单管理包括新建出库单、删除出库单、查看出库单的详细信息、更新出库单、提交出库单、查询出库单、新增出库单明细、查看出库单明细的详细信息、更新出库单明细、删除出库单明细、查询出库单明细。(3)辅助管理辅助管理包括修改密码。1.2 设计要求(1)系统管理 用户管理中在新建系统用户时用户登录号、用户姓名和用户密码为必选项,如果没有填写应该要能给出提示信息。用户能够根据用户登录号和用户姓名来查询系统用户的详细信息。系统用户能够根据用户登录号和密码来成功登陆系统。用户在成功登陆后能够使用旧密码来设置新密码。 货号管理中在新建货号时货号、品名、色号、尺码、面料、里料、出厂价、零售价为必选项,若有一项没有填写应该要能给出提示信息。用户能够根据货号、色号、尺码来查看货号详细信息。(2)库存管理 入库单管理中在新建入库单时入库日期、所入仓库、来源是必选项,如果有一项没有填写,系统要能够给出提示信息, 备注为非必选项。用户成功登陆系统后能够根据单据号来查看入库单的详细信息。用户在更新入库单时要先查询到要更新的入库单,然后再进行入库单的更新。用户在保存入库单信息后能够进行新增入库单详细信息的操作,新建时能够设定入库单明细的货号、色号、尺码和数量。 出库单管理中在新建出库单时出库日期、所出仓库、接收人、接收人电话为必选项,若有一项没有填写则给出提示信息,其中备注为非必选项。用户成功登陆系统后能够根据单据号来查看出库单的详细信息。用户在更新出库单时要先查询到要更新的出库单,然后再进行出库单的更新。用户在保存出库单信息后能够进行新增出库单详细信息的操作,新建时能够设定出库单明细的货号、色号、尺码和数量。(3)辅助管理 用户在成功登陆系统后能够进行修改密码,修改密码时旧密码、新密码和确认密码为必选项,如果有一项没有填写,系统应该给出提示信息。旧密码必须要与登录时使用的密码一致,否则无法修改密码,新密码和确认密码也必须保持一致方能成功修改。第2章 需求分析2.1 整体用例图 图1 全局用例图2.2 用例规约表1 用户登陆用例规约用例名称:用户登陆用例ID:CSMS-01角色:用户简要说明:用户利用登录号密码登陆系统前置条件:无基本事件流:1、用户输入登录号2、用户输入密码3、用户点击”登陆”按钮其它事件流:1、用户输入的登录号和密码为必选项,如有一项为空,系统要能给出提示信息 2、系统接收用户输入的登录号和密码而且将其与数据库中的用户信息表中的对应数据进行验证,验证成功则允许用户登陆,否则提醒用户输入正确的登录号和密码。异常事件流:1、登陆号或者密码为空就点击登陆。2、登录号或者密码错误后置条件:系统用户信息保存到数据库中,而且页面能够将用户输入的数据传送至后台服务器中表2修改密码用例规约用例名称修改密码用例IDCSMS-02角色用户。简要说明用户修改密码前置条件用户已经登录系统基本事件流1、用户请求修改密码。2、系统弹出修改密码页面。3、用户输入旧密码。4、用户输入新密码,确认新密码。5、点击”完成”。其它事件流1、旧密码、新密码、确认密码为必选项、任何一项为空系统都要发出提示信息2、系统接收用户输入的旧密码,而且将旧密码与数据库中的密码进行验证,若新密码与确认密码一致,且验证经过,则允许用户修改密码异常事件流1、用户输入的旧密码与用户登陆使用的密码不一致。2、用户输入的新密码与确认密码不一致。后置条件系统能够获取用户在页面上输入的旧密码、新密码和确认密码,而且对旧密码与登陆密码进行验证。2.3 需求描述1用户登陆需求编号:CODEMN-1需求描述:用户使用登录号和密码来成功登陆系统。CODEMN-1-1 用户输入登录号和密码CODEMN-1-2 页面获取用户输入的登录号和密码,而且与数据库中的数据进行比较CODEMN-1-3 证成功则允许用户登陆,否则提醒用户输入正确的登录号和密码。 2用户修改密码需求编号:CODEMN-2 需求描述:用户修改密码CODEMN-2-1:用户输入旧密码、新密码、确认密码。CODEMN-2-2:系统接收用户输入的旧密码,而且将旧密码与数据库中的密码进行验证,同时将获取到的新密码和确认密码进行比较。CODEMN-2-3:若旧密码验证经过,且新密码与确认密码一致,则允许用户修改密码,否则给出错误提示信息,密码修改不成功。 第3章 系统设计3.1 数据库设计3.1.1数据库对象命名规则表3 数据库对象命名规则数据库对象命名规则备注表Tbl_功能描述字符串例如:tbl_user用户表视图View_功能描述字符串例如:view_userInfo用户视图存储过程Proc_功能描述字符串例如:proc_draw取款存储过程3.1.2 数据项编码规则表4数据项编码规则数据项命名规则数据类型长度范围备注登录名用户姓名开头字母字符10位无密码6位长的任意数字字符10位无货号2个大写字母+数字字符10位无色号颜色开头字母+数字字符10位无删除状态逻辑数字1或0整数2无尺码正常人身高如170整数无入库日期年+月+日日期无3.1.3 用户信息表结构 表5 用户信息表表名用户信息表数据库用户主键userLogin其它排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明01userLoginVarchar(20)NY高无主键02usernameVarchar(20)NY高无03PasswordVarchar(20)NN高无04RemarkVarchar(20)FN低无05flagInt NN高无sql脚本create table user( userLogin varchar(20) not null primary key, userName varchar(20) not null, Password int not null , remark varchar(20), flag int not null);备注存储用户信息3.2 类图设计图2 系统登陆和修改密码的类图在登陆和修改密码中,主要运用到userImpl、UserServlet和Userinfo三个类。userImpl中实现了Userinterface中定义的方法,在userImpl中能够拼写sql语句来实现对数据库的操作,即能够修改Userinfo中的属性,BConnection起到了连接数据库的作用。UserServlet根据用户在页面上操作来决定调用什么方法,doPost()能够判断用户在页面上JS页面上选择的操作的类型,根据操作类型来决定dologin()和doUpdatePwd()方法的调用。3.3 时序图设计 图3 用户登陆时序图如图3所示,用户首先在登陆界面的文本框中输入登录号和密码,UserServlet获取用户输入的登录号和密码,调用userImpl中的loginUser()方法将获取的登录号和密码作为参数传送至数据库中执行,而且返回执行结果,UserServlet根据返回结果来判断是否发生页面跳转和给出用户提示信息。图4 修改密码时序图如图4所示,用户首先在修改密码页面内输入旧密码、新密码、确认密码,UserServlet获取用户输入的旧密码、新面貌、确认密码,而且调用userImpl中的updatePwd()函数,以获取的三个值作为参数,updatePwd()将旧密码发往数据库中进行验证,UserServlet根据验证结果来判断密码是否修改成功和传送提示信息。修改密码界面还要验证新密码与确认密码是一致。第4章 系统实现4.1 登陆设计实现代码段1 声明接口:package com.csms.dao.inter;import java.sql.SQLException;import com.csms.dao.model.UserInfo;import com.mysql.jdbc.ResultSet;public interface Userinterface public ResultSet loginUser(String userLogin,String password) throws SQLException;/登陆验证说明:此段代码的作用是定义接口声明相关的方法,public ResultSet loginUser(String userLogin,String password) throws SQLException;定义的是登陆验证方法,此方法声名了在实现登陆的方法中需要传进的两个参数String userLogin,String password,即登录号和登陆密码。代码段2 接口实现:package com.csms.dao.interImpl;import java.sql.SQLException;import com.csms.dao.inter.Userinterface;import com.csms.dao.model.UserInfo;import com.csms.db.DBconnection;import com.mysql.jdbc.Connection;import com.mysql.jdbc.PreparedStatement;import com.mysql.jdbc.ResultSet;import com.mysql.jdbc.Statement;public class Userimpl implements Userinterface DBconnection db=null;Connection conn=null; Statement pst=null;private String password; public Userimpl() throws ClassNotFoundException, SQLException db=new DBconnection(); conn=db.getConn(); pst=(Statement) conn.createStatement(); /登陆验证/public ResultSet loginUser(String userLogin, String password) throws SQLException / TODO Auto-generated method stubStringBuffer strsql=new StringBuffer();strsql.append(" select * from usertable where ");strsql.append(" userLogin='"+userLogin+"' and ");strsql.append(" password='"+password+"'");ResultSet rs=(ResultSet) pst.executeQuery(strsql.toString();return rs;说明:此段代码是先前定义的接口的实现部分,StringBuffer strsql=new StringBuffer();定义了一个字符串strsql。代码strsql.append(" select * from usertable where ");strsql.append(" userLogin='"+userLogin+"' and ");strsql.append(" password='"+password+"'");是拼写sql语句,意思是在数据库中查询用户的登录名和密码。ResultSet rs=(ResultSet) pst.executeQuery(strsql.toString();return rs;意思是将sql语句执行,而且将执行后的结果集合赋值给rs,最后返回rs。db=new DBconnection(); conn=db.getConn(); pst=(Statement) conn.createStatement(); 此段代码是进行数据库的连接。代码段3 数据库连接:public class DBconnection private static String url="jdbc:mysql:/127.0.0.1:3306/csms" /数据库的URL private static String user="root" /访问数据库的用户名 private static String pwd="" /访问数据库的密码 public Connection conn; public Connection getConn() throws ClassNotFoundException, SQLException Class.forName("com.mysql.jdbc.Driver"); /装载JDBC驱动程序 conn=(Connection) DriverManager.getConnection(url,user,pwd); return conn; public void closeConn() throws SQLException conn.close();/关闭数据库连接 说明:private static String url="jdbc:mysql:/127.0.0.1:3306/csms"说明了数据库CSMS的地址,此段代码的主要使用是控制数据库的连接。代码段4 检测输入域:function doLogin() if(idFrmMain.userid.value="") alert('请用户输入账号!'); return ; if(idFrmMain.psword.value="") alert('请用户输入密码!'); return ; idFrmMain.action="UserServlet?opt=login" idFrmMain.submit();说明:if(idFrmMain.userid.value="")和if(idFrmMain.psword.value="")是用于判断登陆界面用于输入登录号和登陆密码的两个文本框中的值是否为空,当用户点击”登陆”按钮时若userid和psword还为空,则提醒用户输入登录号和登陆密码。idFrmMain.action="UserServlet?opt=login"idFrmMain.submit();意思是当用户点击登陆后将调用UserServlet中的方法。代码段5 登陆验证及页面跳转:public void dologin(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException, SQLException HttpSession session=request.getSession(); String user_name=request.getParameter("userid");/获得页面输入的登录号 String user_pwd=request.getParameter("psword");/获得页面输入的登录密码 ResultSet rs=userInter.loginUser(user_name, user_pwd); if(rs.next() session.setAttribute("userLogin",user_name); response.sendRedirect("Main.htm"); /页面的跳转,验证成功进入主页面,否则任然停留在登陆页面/ else String msg="用户密码错误" request.setAttribute("msg", msg); RequestDispatcher rd=request.getRequestDispatcher("login.jsp"); rd.forward(request, response); 说明:String user_name=request.getParameter("userid");是用于获取登陆页面输入的登录号。String user_pwd=request.getParameter("psword");是用于获取登陆页面输入的登录密码。ResultSet rs=userInter.loginUser(user_name, user_pwd);调用loginUser方法,将user_name, user_pwd作为参数传入到loginUser方法中,而且将结果集赋值给rs。if(rs.next()是对re.next()进行逻辑判断,若逻辑值为1则执行中间部分的方法。 session.setAttribute("userLogin",user_name);是将变量user_name以userLogin为名字保存在session中。response.sendRedirect("Main.htm");表示从当前servlet跳转到Main.htl页面。else String msg="用户密码错误" request.setAttribute("msg", msg); RequestDispatcher rd=request.getRequestDispatcher("login.jsp"); rd.forward(request, response); 表示当re.next()逻辑判断为0时提醒用户错误信息,而且任然停留在登陆页面,即login.jsp。4.2 修改密码设计实现代码段 1定义接口:package com.csms.dao.inter;import java.sql.SQLException;import com.csms.dao.model.UserInfo;import com.mysql.jdbc.ResultSet;public interface Userinterface public int updatePwd(String userLogin,String oldPwd,String newPwd) throws SQLException, ClassNotFoundException;/修改密码说明:此段代码的作用是定义接口声明相关的方法,public int updatePwd(String userLogin,String oldPwd,String newPwd) throws SQLException, ClassNotFoundException;定义了修改密码方法,此方法声明了在实现修改密码的方法中需要传进的三个参数String userLogin,String oldPwd,String newPwd,即登录号、旧密码和新密码。代码段 2处理数据:public int updatePwd(String userLogin,String oldPwd,String newPwd) throws SQLException, ClassNotFoundException/ TODO Auto-generated method stubStringBuffer strSql=new StringBuffer();strSql.append("select * from usertable where");/拼写sql字符串strSql.append(" userLogin='"+userLogin+"'and password='"+oldPwd+"'");DBconnection db=new DBconnection();/连接数据库Connection conn=db.getConn();PreparedStatement pst=(PreparedStatement) conn.prepareStatement(strSql.toString();/将SQL语句传送至服务器或数据库ResultSet rs=(ResultSet) pst.executeQuery();/执行语句,返回结果集if(rs.next()StringBuffer strUpdate=new StringBuffer(); strUpdate.append("update usertable set password='"+newPwd+"' where userLogin='"+userLogin+"'"); PreparedStatement pst1=(PreparedStatement) conn.prepareStatement(strUpdate.toString();/将SQL语句传送至服务器或数据库 return pst1.executeUpdate(); /执行sql语句,而且返回结果集else return -1;说明:strSql.append("select * from usertable where"); strSql.append(" userLogin='"+userLogin+"'and password='"+oldPwd+"'");此段代码是在拼写sql语句。pst=(PreparedStatement)conn.prepareStatement(strSql.toString();。此段代码是将拼写好的sql语句送入mysql数据库中。ResultSet rs=(ResultSet) pst.executeQuery();此段代码是将送入数据库中sql语句执行,而且将执行后的结果集赋值给rs。if(rs.next()此代码是对rs.next()进行逻辑判断,当逻辑为真时执行strUpdate.append("update usertable set password='"+newPwd+"' where userLogin='"+userLogin+"'");PreparedStatement pst1=(PreparedStatement) conn.prepareStatement(strUpdate.toString();即系统将用户设定的新密码发送到后台服务器中,服务器在数据库的用户信息表中将用户登录密码设置成新密码。代码段3 在页面对旧密码、新密码、确认密码进行验证:function save() if(idFrmMain.oldPwd.value="") alert('请填写旧密码'); return; if(idFrmMain.newPwd.value!=""&&idFrmMain.reNewPwd.value!="") if(idFrmMain.newPwd.value!=idFrmMain.reNewPwd.value) alert('新密码和确认密码不一致'); return; else alert('新密码和确认密码不能为空'); return; idFrmMain.action="UserServlet?opt=updatePwd" idFrmMain.submit();说明:if(idFrmMain.oldPwd.value="")此段代码的作用是判断oldPwd的值是否为空,若为空则弹出”请填写旧密码”的错误提醒。 if(idFrmMain.newPwd.value!=""&&idFrmMain.reNewPwd.value!="") if(idFrmMain.newPwd.value!=idFrmMain.reNewPwd.value)此段代码是在判断用户输入的新密码和确认密码是否为空和是否相等,若输入域为空则提醒用户输入新密码和确认密码,若新密码和确认密码不一致则提醒用户输入一致的新密码和确认密码。idFrmMain.action="UserServlet?opt=updatePwd"意思是用户选择修改密码后系统会调用UserServlet中的方法。代码段4 获取页面的操作类型:public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException String opt=request.getParameter("opt"); System.out.println(opt); if(opt.equals("updatePwd") /判断是否选择修改密码操作 try doUpdatePwd(request,response); /执行doUpdatePwd()方法 catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); 说明:opt是java里已经定义好的一种机制,用来获取页面上的一些信息,if(opt.equals(”updatePwd”)是在判断opt取到的值是否等于”updatePwd”,若等于则调用doUpdatePwd(request,response)方法。代码段5 修改密码的主要方法:public void doUpdatePwd(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException, SQLException, ClassNotFoundException HttpSession session=request.getSession();/声明session String userName=(String)session.getAttribute("userLogin");/获取用户登陆 的登录号 String oldPwd=request.getParameter("oldPwd");/获取旧密码