大工软件工程课程大作业答案
网络教育学院《软件工程》课程大作业
题目:企业货物管理系统
学习中心:
层次:
专业:
年级:
学号:
学生:
完成日期:
总体设计说明书,
一、运行环境
硬件开发环境:
CPU:Intel Pentium 4 2.00GHz
内存:2G
硬盘:160G
软件开发环境:
操作系统:Microsoft Windows XP Professional SP2
开发工具包:Java(TM) SE Development Kit 6
开发工具:MyEclipse Enterprise Workbench 5.5.1 GA
JSP服务器:Apache Tomcat 5.5.26
数据库:Microsoft SQL Server 2000并安装升级补丁
浏览器:Microsoft Internet Explorer 6.0以上
二、系统功能模块设计、
系统功能模块设计介绍管理人员的登录与注册模块、进货入库管理模块、退货管理模块、商品调价管理模板的具体功能。
登录:用以实现用户的登录和注册。
用户管理:对系统所有的用户以列表形式浏览并能进行删除。
部门管理:对本企业的部门进行管理,有添加、删除、修改等管理。
供应商管理:对提供物资的企业或厂商信息进行添加、删除、修改。
员工管理:对企业的员工进行添加、删除、修改。
进货合同:对企业采购物品的合同进行添加、删除、修改管理。
库房管理:对企业库房进行管理。
库存管理:对所有库存中的物资以列表形式列出,可以对该信息进行修改和删除。
退货管理:对核查不合格的产品情况进行管理。
核查管理:对所采购的物资进行核查,合格进入库房,不合格列入退货列中。
库存查询管理模块:根据查询条件进行查询,查询条件可以是条形码、产品名称、产品类型、所在库房。
三、系统层次结构图
需求分析规格书
一、功能需求分析
本企业货物管理系统根据管理员的ID和密码登陆,登陆成功后根据管理人员的需求选择相应的操作。在这里包括的模块分别为:登陆模块、用户管理模块,部门管理模块、库房管理模块、货物新增管理模块、库存管理模块、退货单管理模块、库存查询管理模块。现在对每个模块画出业务流程图,并做业务分析。
通过对客户的了解,以及对系统的分析,我们得出以下的结论,在货物管理系统中,数据库至少要记录入库货物的详细记录的信息,货物出库的详细记录的信息,职工的基本信息,供应商的基本信息,以及库房中每一种货物的边际值,即库房中的货物数量到了一定的界限,就要提醒管理员进货,具体的内容如下:(1)用最低的费用最短的时间提供尽可能精确、正确的信息,以便选择最佳的实施方案,以提高商家的经济效益。
(2)完整、及时提供在管理及决策中需要的数据。
(3)利用指定的数据关系分析数据,客观预测未来。
(4)不仅要对物质的信息进行管理,还要了解物质的相关信息。
(5)用统一标准处理和提供物质基本信息,排除使用前后矛盾的不完整的数据。
图1
二、数据需求分析
1.职工与仓库的局部ER图
通过分析我们可以知道,一个仓库可以有多个职工在里面工作,但是一个职工只能在一个仓库中工作,因此仓库和职工之间的关系是1对多的,它们的局部E-R图如图2所示:
图2
2.供应商和货物的局部ER图
通过分析我们可以知道,一个供应商可以提供多种货物,每一种货物也可以由不同的供应商提供,因此供应商和货物之间的关系是多对多的,它们的局部E-R图如图3所示:
图3
3. 货物与仓库的局部ER图
通过分析我们可以知道,一种货物可以存储在多个仓库中,每一个仓库也可以存储多种货物,因此货物和仓库之间的关系是多对多的,它们的局部E-R图如图4所示:
图4
4. 系统的全局ER图
通过以上的分析,把仓库,仓库管理员,货物,供应商集合到一起,形成全局E-R图如图5所示:
图5
以上就是对货物管理系统的概念设计的全过程。
详细设计说明书一、系统数据表
表3管理员表
表4入库表
表名5出库表
表6用户表
二、核心程序
由于本项目的许多文件需要访问数据库,利用JDBC可以实现与后台数据库管理系统ORACLE之间进行数据传输。本系统使用了一个java文件,文件为:ConnFactory.java
本文件用于连接数据库,实现数据库查询、删除及更新操作。本项目采用JDBC直接连接数据库,数据库名称为orcl,用户名为“demo”,密码为“demo”。方法public static Connection getConnection()主要用于载入驱动程序。关键代码如下:
package mycase.dao;
import java.sql.*;
import oracle.jdbc.driver.OracleDriver;
public class ConnFactory {
public static Connection getConnection() throws Exception {
DriverManager.registerDriver(new OracleDriver());
String url = "jdbc:oracle:thin:@PC-20110412UIFW:1521:orcl";
String user = "demo";
String password = "demo";
Connection conn = DriverManager.getConnection(url,user,password);
return conn;
}
/*
//测试
public static void main(String[] args) throws Exception {
ConnFactory.getConnection();
}
*/
}
本系统设有权限分配,和为管理员和操作员两种管理权限,只有输入正确的账号密码,选取相应的管理级别,方能登入到管理系统。登陆验证过程是通过过滤器实现的,同时也屏蔽掉一些字符,如“、”、‘、‘和=等,目的在于防止SQL 注入式攻击。过滤器代码如下:
package mycase.filter;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MyFilter implements Filter {
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) arg0;
HttpServletResponse response = (HttpServletResponse) arg1;
HttpSession session = request.getSession();
//判断登陆
if (session.getAttribute("adminname") == null){
response.sendRedirect("../login.jsp");
return;
}
//继续向下执行
arg2.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
}
public void destroy() {
}
}
系统的内部查询界面设计,这主要是系统的管理员用来登陆用的,管理物资管理系统中的所有信息,仓库管理员不可以进入。
系统的职工的基本信息模块,它主要是用来管理仓库中职工的基本信息,实现职工的添加,删除和修改等操作。页面的操作代码如下:
<%
set conn=server.CreateObject("adodb.connection") '创建数据库对象set rs=server.CreateObject("adodb.recordset") '创建记录集对象set myrs=server.CreateObject("adodb.recordset") '创建记录集对象set rec=server.CreateObject("adodb.recordset") '创建记录集对象conn.open application("dsn") '打开数据库
sql="select id from tab_cgdan"
rs.open sql,conn,1,3 '打开记录集
str=myrs("id")
cgid=cint(mid(str,7,5))+1
cgid="cg"&year(date())&cstr(cgid)
else