《服装库存管理系统.docx》由会员分享,可在线阅读,更多相关《服装库存管理系统.docx(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、长 沙 学 院课程设计说明书题目服装库存管理系统系(部)计算机科学与技术系专业(班级)2010软件工程(服务外包)1班姓名最好的沉淀学号2010022111指导教师最好的沉淀起止日期2012.3.12 2012.7.6课程设计任务书课程名称:基础编程能力考核设计题目:服装库存管理系统已知技术参数和设计要求:1. 问题描述(功能要求):服装库存管理系统主要包括:(1) 系统管理 系统管理包括用户管理和货号管理,能进行增加、删除、修改和查找的操作。(2) 库存管理 库存管理包括入库单管理和出库单管理。入库单管理包括入库单基本信息管理和入库单明细管理,并能分别对入库单和入库单明细进行增加、删除、修改
2、和查找的操作。出库单管理包括出库单基本信息管理和出库单明细管理,并能分别对出库单和出库单明细进行增加、删除、修改和查找的操作。(3) 辅助管理辅助管理包括修改密码。2. 运行环境要求:(1)客户端:Windows操作系统IE浏览器(2)服务器:windows server 版操作系统Tomcat web 服务器My SQL 数据库服务器3. 技术要求:强调软件工程过程文档的规范化。l 需求分析规格说明书与用例规约l 系统数据库设计,时序图,类图,MVC架构l 系统完整编码,采用JSP、Servlet技术设计工作量:40课时工作计划:(1) 2010级软件工程所有班级16课时: 1609理论讲座
3、20课时:上机、调试。计算机系机房4课时:答辩。计算机系机房。(具体时间地点老师先申请,机动安排)指导教师签名:日期:教研室主任签名: 日期:系主任签名: 日期:长沙学院课程设计鉴定表姓名曾祥炫学号2010022111专业软件工程班级10软件1班设计题目服装库存管理系统指导教师潘怡指导教师意见:评定等级: 教师签名: 日期: 答辩小组意见:评定等级:答辩小组长签名:日期:教研室意见:教研室主任签名: 日期: 系(部)意见:系主任签名:日期:说明课程设计成绩分“优秀”、“良好”、“中等”、“及格”、“不及格”五类;项目实训(四)工作计划表周 次实训内容备 注第0周(2012.3.122012.4
4、.6)1 实训启动召集项目组学生开会明确实训的内容和要求袁伟森老师讲课致远楼1609第一周(2012.5.142012.5.18)1系统需求分析设计致远楼1409第二周(2012.5.212012.5.25)1组长讨论会,讨论需求分析进度情况完善需求文档2. 用例和用例规约设计致远楼1409第三周(2012.5.282012.6.1)1系统详细设计,类模型设计2时序图的设计致远楼1408第五周(2012.6.42012.6.8)1第一阶段任务检查需求分析2. 开发工具的使用致远楼1408第六周(2012.6.112012.6.15)1Struts2技术讲解2. 第二阶段任务检查数据库的设计致远
5、楼1408第七周(2012.6.182012.6.22)1. 代码实现2. 答疑调试致远楼1408第八周(2012.6.252012.6.29)1. 代码实现2. 答疑调试致远楼1408第九周(2012.7.22012.7.6)1答辩致远楼1401目录第1章 设计内容与要求11.1 设计内容11.2 设计要求1第2章 需求分析32.1 整体用例图32.2 用例规约32.3 需求描述5第3章 系统设计63.1 数据库设计63.1.1数据库对象命名规则63.1.2 数据项编码规则63.1.3 用户信息表结构63.2 类图设计73.3 时序图设计7第4章 系统实现94.1 登陆设计实现94.2 修改
6、密码设计实现12第5章 总结17参考文献18附录19第1章 设计内容与要求1.1 设计内容服装库存管理系统主要的设计内容包括:(1)系统管理 系统管理包括用户管理和货号管理。在用户管理中要包括新建系统用户、删除系统用户、查看系统用户详细信息、更新系统用户、查询系统用户、系统用户登陆和修改密码。在货号管理中包括新建货号、删除货号、查看货号详细信息、更新货号、查询货号(2)库存管理库存管理包括入库单管理和出库单管理。入库单管理包括新建入库单、删除入库单、查看入库单详细信息、更新入库单、提交入库单、查询入库单、新增入库单明细、查看入库单明细的详细信息、更新入库单明细、删除入库单明细、查询入库单明细。
7、出库单管理包括新建出库单、删除出库单、查看出库单的详细信息、更新出库单、提交出库单、查询出库单、新增出库单明细、查看出库单明细的详细信息、更新出库单明细、删除出库单明细、查询出库单明细。(3)辅助管理辅助管理包括修改密码。1.2 设计要求(1)系统管理 用户管理中在新建系统用户时用户登录号、用户姓名和用户密码为必选项,如果没有填写应该要能给出提示信息。用户能够根据用户登录号和用户姓名来查询系统用户的详细信息。系统用户能够根据用户登录号和密码来成功登陆系统。用户在成功登陆后可以使用旧密码来设置新密码。 货号管理中在新建货号时货号、品名、色号、尺码、面料、里料、出厂价、零售价为必选项,若有一项没有
8、填写应该要能给出提示信息。用户可以根据货号、色号、尺码来查看货号详细信息。(2)库存管理 入库单管理中在新建入库单时入库日期、所入仓库、来源是必选项,如果有一项没有填写,系统要能够给出提示信息, 备注为非必选项。用户成功登陆系统后可以根据单据号来查看入库单的详细信息。用户在更新入库单时要先查询到要更新的入库单,然后再进行入库单的更新。用户在保存入库单信息后可以进行新增入库单详细信息的操作,新建时可以设定入库单明细的货号、色号、尺码和数量。 出库单管理中在新建出库单时出库日期、所出仓库、接收人、接收人电话为必选项,若有一项没有填写则给出提示信息,其中备注为非必选项。用户成功登陆系统后可以根据单据
9、号来查看出库单的详细信息。用户在更新出库单时要先查询到要更新的出库单,然后再进行出库单的更新。用户在保存出库单信息后可以进行新增出库单详细信息的操作,新建时可以设定出库单明细的货号、色号、尺码和数量。(3)辅助管理 用户在成功登陆系统后可以进行修改密码,修改密码时旧密码、新密码和确认密码为必选项,如果有一项没有填写,系统应该给出提示信息。旧密码必须要与登录时使用的密码一致,否则无法修改密码,新密码和确认密码也必须保持一致方能成功修改。第2章 需求分析2.1 整体用例图 图1 全局用例图2.2 用例规约表1 用户登陆用例规约用例名称:用户登陆用例ID:CSMS-01角色:用户简要说明:用户利用登
10、录号密码登陆系统前置条件:无基本事件流:1、用户输入登录号2、用户输入密码3、用户点击“登陆”按钮其它事件流:1、用户输入的登录号和密码为必选项,如有一项为空,系统要能给出提示信息 2、系统接收用户输入的登录号和密码并且将其与数据库中的用户信息表中的对应数据进行验证,验证成功则允许用户登陆,否则提醒用户输入正确的登录号和密码。异常事件流:1、登陆号或者密码为空就点击登陆。2、登录号或者密码错误后置条件:系统用户信息保存到数据库中,并且页面能够将用户输入的数据传送至后台服务器中表2修改密码用例规约用例名称修改密码用例IDCSMS-02角色用户。简要说明用户修改密码前置条件用户已经登录系统基本事件
11、流1、用户请求修改密码。2、系统弹出修改密码页面。3、用户输入旧密码。4、用户输入新密码,确认新密码。5、点击“完成”。其他事件流1、旧密码、新密码、确认密码为必选项、任何一项为空系统都要发出提示信息2、系统接收用户输入的旧密码,并且将旧密码与数据库中的密码进行验证,若新密码与确认密码一致,且验证通过,则允许用户修改密码异常事件流1、用户输入的旧密码与用户登陆使用的密码不一致。2、用户输入的新密码与确认密码不一致。后置条件系统能够获取用户在页面上输入的旧密码、新密码和确认密码,并且对旧密码与登陆密码进行验证。2.3 需求描述1用户登陆需求编号:CODEMN-1需求描述:用户使用登录号和密码来成
12、功登陆系统。CODEMN-1-1 用户输入登录号和密码CODEMN-1-2 页面获取用户输入的登录号和密码,并且与数据库中的数据进行比较CODEMN-1-3 证成功则允许用户登陆,否则提醒用户输入正确的登录号和密码。 2用户修改密码需求编号:CODEMN-2 需求描述:用户修改密码CODEMN-2-1:用户输入旧密码、新密码、确认密码。CODEMN-2-2:系统接收用户输入的旧密码,并且将旧密码与数据库中的密码进行验证,同时将获取到的新密码和确认密码进行比较。CODEMN-2-3:若旧密码验证通过,且新密码与确认密码一致,则允许用户修改密码,否则给出错误提示信息,密码修改不成功。 第3章 系统
13、设计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 用户信息表
14、结构 表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,
15、 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页面上
16、选择的操作的类型,根据操作类型来决定dologin()和doUpdatePwd()方法的调用。3.3 时序图设计 图3 用户登陆时序图如图3所示,用户首先在登陆界面的文本框中输入登录号和密码,UserServlet获取用户输入的登录号和密码,调用userImpl中的loginUser()方法将获取的登录号和密码作为参数传送至数据库中执行,并且返回执行结果,UserServlet根据返回结果来判断是否发生页面跳转和给出用户提示信息。图4 修改密码时序图如图4所示,用户首先在修改密码页面内输入旧密码、新密码、确认密码,UserServlet获取用户输入的旧密码、新面貌、确认密码,并且调用userI
17、mpl中的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 pub
18、lic 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.inte
19、rImpl;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
20、 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 use
21、rLogin, 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
22、();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.toStri
23、ng();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; /访问数据库的用户名 priv
24、ate static String pwd=123456; /访问数据库的密码 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 SQLExcept
25、ion 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; id
26、FrmMain.submit();说明:if(idFrmMain.userid.value=)和if(idFrmMain.psword.value=)是用于判断登陆界面用于输入登录号和登陆密码的两个文本框中的值是否为空,当用户点击“登陆”按钮时若userid和psword还为空,则提醒用户输入登录号和登陆密码。idFrmMain.action=UserServlet?opt=login;idFrmMain.submit();意思是当用户点击登陆后将调用UserServlet中的方法。代码段5 登陆验证及页面跳转:public void dologin(HttpServletRequest re
27、quest, 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);
28、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.getP
29、arameter(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_n
30、ame);是将变量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
31、。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;/修改密码说明:此段代码
32、的作用是定义接口声明相关的方法,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) th
33、rows 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();Prep
34、aredStatement 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+); PreparedS
35、tatement 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)
36、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=(Pr
37、eparedStatement) 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.reNe
38、wPwd.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!=idFrmM
39、ain.reNewPwd.value)此段代码是在判断用户输入的新密码和确认密码是否为空和是否相等,若输入域为空则提醒用户输入新密码和确认密码,若新密码和确认密码不一致则提醒用户输入一致的新密码和确认密码。idFrmMain.action=UserServlet?opt=updatePwd;意思是用户选择修改密码后系统会调用UserServlet中的方法。代码段4 获取页面的操作类型:public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOExc
40、eption 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
41、 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, Cl