计算机工程学院Project2(GUI+SQL2005)实习报告选题名称:仓库管理系统专业:计算机科学与技术(软件工程方向)班级:软件1092姓名:王伟剑学号:1091305220指导教师:冯万利于长辉高尚兵庄军2011年06月11日Project2(GUI+SQL2005)实习任务书课题名称仓库管理系统设计目的1.掌握面向对象的程序设计技术和方法;2.学习用C#设计GUI程序解决实际问题;3.熟悉VS.NET开发平台,能使用.NET平台进行程序设计及程序调试;4.能使用ADO.NET进行数据库系统设计与开发。实验环境1.WindowsXP操作系统2.VisualStudio2008.net开发平台3.SQLServer2005数据库管理系统任务要求1.利用C#编程思想进行可视化编程,完成系统的设计。突出体现C#语言与其他语言的不同。2.根据课题需要自主创建sql数据库,表内数据关联紧密,数据合理且规范化,避免数据冗余。3.能合适的选择高级控件(如:菜单栏,工具栏,dataGridView,treeView等)完成课题内容,窗口布局合理。4.每个学生从所给题目中任选一题,必须独立完成,不能相互抄袭。工作进度计划序号起止日期工作内容12011-4-11—2011-6-5需求分析22011-6-6—2011-6-6系统设计32011-6-7—2011-6-9系统实现42011-6-9—2011-6-9撰写实习报告52011-6-10—2011-6-10实习答辩指导教师(签章):2011年06月日摘要:随着现代工业的发展,计算机信息管理系统越来越受到企业的重视。本文主要分析介绍了仓库管理系统的一些基本功能和组成情况,包括系统的需求分析、系统结构、功能模块划分以及数据库模式分析等,重点对应用程序的实际开发实现作了介绍。达到了数据的一致性和安全性,且应用程序功能完备,符合了库存管理系统作为典型的信息管理系统(MIS)的要求。同时简单介绍了VisualStudio2008编程环境和SQL数据库管理系统的功能特点,库存管理系统是企业物流管理中不可或缺的的一部分。本系统利用ASO三层架构,完成系统登录,注销,修改密码的基本功能,仓库入库登记,出库登记,仓库货物预警,仓库内货物盘点的主要功能。本系统并不复杂,主要完成通过GUI开发,利用关键字对数据库进行增删改查等操作。关键词:仓库管理;数据库;信息管理;VisualStudio20081目录1需求分析.......................................................21.1系统概述.............................................................21.2系统总体需求.........................................................21.3可行性分析...........................................................22概要设计.......................................................32.1E-R图...............................................................32.2相关说明.............................................................33详细设计.......................................................43.1数据库表定义.........................................................43.2GUI框架设计.........................................................54编码实现.......................................................85总结..........................................................1821需求分析1.1系统概述仓库存放的货物品种繁多,堆放方式以及处理过程也很复杂。随着业务量的增加,仓库管理者需要处理的信息量会大幅上升,因此往往很难及时准确的掌握整个仓库的运作状态。针对这一情况,本系统在满足仓库的基本管理功能基础上发挥信息系统的智能化,减轻仓库管理人员和操作人员的工作负担。系统主要实现目标是监控整个仓库的运作情况;提供完整的计划任务功能,由整个操作系统的指令中心来安排进出任务,确认任务的开始,进货管理和出货管理按其指令执行即可;实时监控所有货物的在线运动的情况,实时提供仓库变化的信息。1.2系统总体需求根据详细的需求分析,企业在库存中面临的主要问题体现在:库存量大,库存资金周转慢,不能及时统计库存物料;库房人员重复工作多,效率低;不知道库存物资积压时间长短。系统输入繁琐,极易产生输入错误,缺少智能化输入功能,如:产品名称输入过程中,产品名称和产品代码不能够相互协调,易产生不匹配现象。另外,整个系统运行较慢,数据处理能力不够,进行一个查询往往需要等待很长时间。该系统还缺少通用库存管理理功能,货物组成条目都是经过手工计算的,工作量很大,且容易产生错误,有一个小错误,核对都需要花费很大的精力,换句话说,当前没有通用库存管理系统。本系统从最初的采购到存储和出库,仓库管理将决定企业是否兑现其承诺。从仓库计划到仓库操作和交叉运输,优化的仓库将有助于大幅度减少企业的库存量和和货物成本,因为企业将能保持较低的库存货水平,优化入库,保管和出库活动,并且协调载货量。1.3可行性分析技术上可行:该系统所需硬件设备,市场上销售且价格较低,甚至可以使用原有的设备,软件上,操作系统采用Windows系列操作系统,数据库管理系统3采用VisualStudio2008,这些软件在GUI开发中已被大量应用,技术上都比较成熟。因此在技术上是可行的。2概要设计2.1E-R图2.2相关说明登录系统:账号密码均存储于SQL数据库中。输入账号及账号对应密码,即可登录系统。修改密码:需输入一次原密码,输入两次新密码相同即可修改。密码修改同步于SQL数据库。注销:登录账号退出,返回登陆界面。退出系统:系统退出。输入账号密码登录账号密码符合要求主要功能重新输入退出NY修改密码注销主要功能入库登记出库登记仓库预警库存盘点输入货物详情输入货物详情输入预警数量数据库,信息栏同步修改数据库,信息栏同步修改显示数量不足货物详情显示库内货物详情4入库登记:输入产品ID,即可直接获得产品的相关信息,此时输入入库数量就可以完成货物的入库操作,如果此时产品为新产品,需输入产品的详细信息,就可以完成货物的入库操作。入库操作同步更新SQL数据库。出库登记:输入产品ID,即可直接获得产品的相关信息,此时输入出库数量就可以完成货物的出库操作,入库操作同步更新SQL数据库。仓库预警:输入预警数量,点击确定按钮,此时显示数据库中,货物数量小于预警数量的货物总数和货物详细信息。商品查询:显示仓库中所有货物的详细信息,可以输入产品ID和产品名称进行货物查询,支持模糊查找。3详细设计3.1数据库表定义Users表(用户信息表)Goods表(货物详情表)5Worehouses表(仓库信息表)3.2GUI框架设计1用户系统2主菜单63密码修改4货物入库75货物出库6库存预警87商品查询4编码实现登录系统publicstaticstringpwd;publicstaticstringpid;privatevoidbutton1_Click(objectsender,EventArgse)9{pwd=this.textBox1.Text;pid=this.textBox2.Text;Logsl=newLogs();if(int.Parse(l.isPassword(this.textBox2.Text,this.textBox1.Text).ToString())==1){this.Hide();Managementm=newManagement();m.ShowDialog();}else{DialogResultdr=MessageBox.Show(请检查您的用户名和密码,登录失败,MessageBoxButtons.YesNo);if(DialogResult.No==dr){Application.Exit();}}}privatevoidbutton2_Click(objectsender,EventArgse){Application.Exit();}主菜单publicpartialclassManagement:Form{publicManagement(){InitializeComponent();}privatevoidChangeToolStripMenuItem_Click(objectsender,EventArgse){ChangePasswordcp=newChangePassword();cp.ShowDialog();}privatevoidLogoutToolStripMenuItem_Click(objectsender,EventArgse){DialogResultdr=MessageBox.Show(您确定要注销吗?,注销,MessageBoxButtons.YesNo);if(dr==DialogResult.Yes)10{Application.Exit();}}privatevoidOutToolStripMenuItem_Click(objectsender,EventArgse){Application.Exit();}privatevoidManagement_Load(objectsender,EventArgse){this.goodsTableAdapter.Fill(this.wmsDataSet.Goods);}privatevoidManagement_FormClosed(objectsender,FormClosedEventArgse){Application.Exit();}privatevoidInputF2ToolStripMenuItem_Click(objectsender,EventArgse){InputWHFormiwh=newInputWHForm();iwh.ShowDialog();}privatevoidManagement_Activated(objectsender,EventArgse){this.goodsTableAdapter.Fill(this.wmsDataSet.Goods);}privatevoidOutF6ToolStripMenuItem_Click(objectsender,EventArgse){OutWHFormowh=newOutWHForm();owh.ShowDialog();}privatevoidWarningToolStripMenuItem_Click(objectsender,EventArgse){Warningw=newWarning();w.ShowDialog();}privatevoidGoodsDetailsToolStripMenuItem_Click(objectsender,EventArgse)11{this.goodsTableAdapter.Fill(this.wmsDataSet.Goods);}privatevoidWareHouseDetailsToolStripMenuItem_Click(objectsender,EventArgse){this.