铜陵学院《信息系统分析与设计》课程设计题目:仓库管理信息系统的分析与设计系别:数学与计算机科学系班级:08信管学生姓名:吕帅帅学号:0806121039陈华0806121014谢飞0806121001贾炜男0806121004荚磊0806121042 指导教师:张然职称:讲师起止日期:2011年12月5日起至2011年12月11日目录一、开发背景3二、需求分析3三、业务流程图5四、数据流图与数据字典61、数据流图 ...................................................................................................................... 错误!未定义书签。
2、数据字典 (7)五、系统功能设计9六、数据库设计91、E-R图 (9)2、关系模式的3NF设计 .................................................................................................. 错误!未定义书签。
七、系统实施111、系统界面 (11)2、系统的主要源代码: (13)3、开发过程中遇到的技术问题以及解决方法 (33)八、系统开发总结33九、主要参考文献34一、开发背景随着我国经济的飞速发展,各种类型规模的公司企业迅速崛起,许多从事生产和经营管理的企业都有自己生产和销售的产品,而这些产品都需要储存在仓库中,对于每个企业来说,随着企业规模的不断扩大,产品数量的急剧增加,所生产产品的种类也会不断地更新与发展,有关产品的各种信息量也会成倍增长。
面对庞大的产品信息量,如何有效地管理仓库产品,对这些企业来说是非常重要的,仓库管理的重点是销售信息能否及时反馈,从而确保企业运行效益。
而仓库管理又涉及入库、出库的产品、经办人员及客户等方方面面的因素,如何管理这些信息数据,是一项复杂的系统工程,充分考验着仓库管理员的工作能力,工作量的繁重是可想而知的,所以这就需要由仓库管理系统来提高仓库管理工作的效率,这对信息的规范管理、科学统计和快速查询,减少管理方面的工作量,同时对于调动广大员工的工作积极性,提高企业的生产效率,都具有十分重要的现实意义。
可行性分析:(1)技术可行性近几年来计算机技术发展异常迅猛,高速度大容量的电脑已成为许多企业里日常工作必不可少的设备,随着办公自动化的软件不断涌现,微机的普及为该系统的开发奠定了坚实的基础。
(2)经济可行性一方面,系统的开发不需要额外增加设备购置费、软件开发费、管理和维护费用。
另一方面,系统的开发可以较好地解决仓库因日常事务繁杂而造成的处理效率低,出错率偏高的局面,并可以及时了解各项日常事务的进展情况,为及时调整库存资料提供可靠的数据支持,从而明确工作目标,同时还可以减少人工劳动、提高工作效率。
(3)操作可行性计算机以强大的信息处理能力作为人类脑力劳动的有利助手登上历史舞台后,已渗透到社会生活的各个领域,使现代社会组织、特别是企业,学校的信息处理能力适应现代化管理的要求,且系统逐步从单项事务信息处理系统迅速向综合服务(决策支持系统)的管理信息系统发展。
本系统使用界面良好,易于操作。
图书馆拥有一批较高素质的员工,只需了解相关知识,就可熟练操作本系统了。
通过以上分析,图书馆管理信息系统的开发在经济上、技术上、操作上都是可行的。
二、需求分析仓库管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库。
而对于后者则要求应用程序功能完备,易使用等特点。
通过对系统的终端用户、生产商和销售商进行分析,可以得到本系统典型的文本需求说明,其中的关键部分如下:基本信息是仓库管理系统得以运行的数据基础。
基本信息包括产品信息、仓库信息、生产商信息和销售商的信息。
用户可以通过界面来随时添加、修改和查询这些信息。
出入库管理是仓库管理系统的核心部分,实现产品的出入库登记。
产品出入库登记中的产品信息、仓库信息、生产商信息和销售商的信息都是从已有的信息中通过下拉列表选择的,这样可以减少出错,提高效率;如果在基本信息中找不到相关信息即时进行添加。
根据用户需求,该系统应该实现以下功能:1)基本信息(包括产品信息、仓库信息、生产商和销售商信息)的添加、修改和查询。
2)填写基本信息→提交信息填写3)修改基本信息→提交信息修改4)选择填写查询条件→提交查询→查询结果显示5)产品入库登记、修改和查询。
6)填写入库产品信息→提交入库登记7)修改入库登记→提交信息修改8)选择填写查询条件→提交查询→查询结果显示9)品出库登记、修改和查询。
10)出库选择→填写出库产品信息→提交出库登记11)修改出库登记→提交信息修改12)选择填写查询条件→提交查询→查询结果显示13)产品库存统计信息查询14)选择查询条件→填写查询内容→提交查询→查询结果显示15)用户和仓库管理员注册16)登录→输入用户名→输入密码→注册17)用户修改密码和仓库管理员添加用户。
28)输入旧密码→输入新密码→确认新密码→提交密码修改29)输入新用户名→输入用户密码→确认密码→设置用户权限→提交用户添加(1)图书信息维护:主要完成图书馆新进图书的编号、登记、入馆等操作。
(2)读者信息维护:主要是完成读者信息的添加、修改和删除等操作,只有是系统中的合法读者才有资格进行图书的借阅活动。
(3)借书/还书处理:主要完成读者的借书和还书活动,记录读者借还书情况并及时反映图书的在库情况。
(4)读者借阅记录:让每位读者能及时了解自己的借书情况,包括曾经借阅记录以及未还书记录。
(5)图书书目检索:读者能够根据不同的信息(如书名、作者、关键词等)对图书馆的存书情况进行查找,以便快速的找到自己希望的图书。
(6)图书超期通知:为图书管理员提供一个统计信息,能够统计出到目前为止逾期未归还的图书及相应的读者信息。
三、业务流程图生产商登记入库表入库表统计入库统计库存表修改库存表库存表仓库管理员报警处理销售商登记出库表修改库存表统计出库表出库表四、数据流图与数据字典根据系统功能描述,采用面向数据流的分析方法,绘制出系统的数据流图。
1数据流图顶层数据流图功能数据流图用户信息数据流图管理员信息数据流图…2、数据字典五、系统功能设计一、仓库总管对功能的需求二、仓库管理员对功能的需求三、采购员对功能的需求六、数据库设计E-R图局部E-R图1、管理员信息2、用户信息3、产品信息4、仓库信息数据库完整E-R图create table members(m_id varchar2(20) primary key,m_name varchar2(20) ,m_age number,m_sex varchar2(4));create table product(p_id number primary key,p_name varchar2(20),p_amount number,p_factoryId number references factory(f_id) );create table factory(f_id number primary key,f_name varchar2(20),f_address varchar(40));七、系统实施1、系统界面B/S系统用户登录界面登录窗口【仓库管理系统主界面】【用户管理界面】【入库新产品界面】【产品入库】【产品出库】2、系统的主要源代码:(业务逻辑是以java语言写的,界面是jsp,结合oracle数据库)《0》下面是处理用户登录package com;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import er;/*** Servlet implementation class Login*/public class Login extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public Login() {super();// TODO Auto-generated constructor stub }/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String id=request.getParameter("id");String password =request.getParameter("passwd");System.out.println(id);System.out.println(password);User user=new User();user.setId(id);user.setPassword(password);if(user.login()){if("admin".equals(user.getId())){response.sendRedirect("success1.jsp");}elseresponse.sendRedirect("Success.jsp");}else{response.sendRedirect("Login.jsp");}}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}《1》用户类package model;import java.sql.Connection;import java.sql.PreparedStatement; import java.sql.ResultSet;import java.sql.SQLException;import dao.Conn;public class User {private String id;private String password;private String name;private int age;private String sex;public String getName() {return name;}public void setName(String name) { = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public User() {super();// TODO Auto-generated constructor stub }public User(String id, String password, String name, int age, String sex) {super();this.id = id;this.password = password; = name;this.age = age;this.sex = sex;}public boolean login() {Connection conn = Conn.getConnection();String password2 = null;try {PreparedStatement ps = conn.prepareStatement("select m_password from members where m_id=?");ps.setString(1, this.id);ResultSet rs = ps.executeQuery();if (rs.next()) {password2 = rs.getString("m_password");System.out.println(rs.getString("m_password"));if (password2.equals(this.password)) {return true;} else return false;}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return false;}public boolean isHave() {Connection conn = Conn.getConnection();try {PreparedStatement ps = conn.prepareStatement("select m_id,m_password from members where m_id=?");ps.setString(1, this.id);ResultSet rs = ps.executeQuery();if (rs.next()) {return true;}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return false;}public void inMan() {Connection conn = Conn.getConnection();try {PreparedStatement ps = conn.prepareStatement("insert into members(m_id,m_password,m_name,m_age,m_sex) values(?,?,?,?,?)");ps.setString(1, this.id);ps.setString(2, this.password);ps.setString(3, );ps.setInt(4, this.age);ps.setString(5, this.sex);ps.execute();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public void deleteMan() {Connection conn = Conn.getConnection();try {PreparedStatement ps = conn.prepareStatement("delete from members where m_id=?");ps.setString(1, this.id);ps.execute();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public void EditPassword(){Connection conn = Conn.getConnection();try {PreparedStatement ps = conn.prepareStatement(" update members set m_password=? where m_id=?");ps.setString(1, this.password);ps.setString(2, this.id);ps.execute();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getPassword() {return password;}public void setPassword(String password) { this.password = password;}《2》数据库的连接package dao;import java.sql.Connection;import java.sql.DriverManager;public class Conn {public static Connection getConnection(){Connection conn=null;try {Class.forName("oracle.jdbc.OracleDriver");conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "scott");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();return conn;}}《3》以下是对仓库的管理,只列出了新商品增加。