当前位置首页 > 医药卫生 > 基础医学
搜柄,搜必应! 快速导航 | 使用教程  [会员中心]

实习报告之仓库管理系统

文档格式:DOC| 27 页|大小 647KB|积分 10|2022-08-15 发布|文档ID:135757004
第1页
下载文档到电脑,查找使用更方便 还剩页未读,继续阅读>>
1 / 27
此文档下载收益归作者所有 下载文档
  • 版权提示
  • 文本预览
  • 常见问题
  • 计算机工程学院Pr o j e c t 2 ( GUI +SQL 2 0 0 5 )实习报告选题名称:仓库管理系统专业:班级:姓名:计算机科学与技术(软件工程方向)软件 1092王伟剑学号:指导教师:1091305220冯万利 于长辉 高尚兵 庄军2011 年06 月11 日Project2 (GUI+SQL2005)实习任务书课题名称 仓库管理系统1. 掌握面向对象的程序设计技术和方法;设计目的2. 学习用 C#设计 GUI 程序解决实际问题;3. 熟悉 VS.NET开发平台,能使用 .NET 平台进行程序设计及程序调试;4. 能使用 ADO.NET进行数据库系统设计与开发实验环境1. Windows XP 操作系统2. Visual Studio 开发平台3. SQL Server2005 数据库管理系统任务要求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) 的要求同时简单介绍了 Visual Studio2008 编程环境和 SQL数据库管理系统的功能特点,库存管理系统是企业物流管理中不可或缺的的一部分本系统利用 ASO三层架构,完成系统登录,注销,修改密码的基本功能,仓库入库登记,出库登记,仓库货物预警,仓库内货物盘点的主要功能 本系统并不复杂, 主要完成通过 GUI 开发,利用关键字对数据库进行增删改查等操作。

    关键词:仓库管理;数据库;信息管理; Visual Studio 2008目 录1 需求分析1.1 系统概述仓库存放的货物品种繁多, 堆放方式以及处理过程也很复杂 随着业务量的增加,仓库管理者需要处理的信息量会大幅上升, 因此往往很难及时准确的掌握整个仓库的运作状态 针对这一情况, 本系统在满足仓库的基本管理功能基础上发挥信息系统的智能化,减轻仓库管理人员和操作人员的工作负担系统主要实现目标是监控整个仓库的运作情况;提供完整的计划任务功能,由整个操作系统的指令中心来安排进出任务, 确认任务的开始, 进货管理和出货管理按其指令执行即可; 实时监控所有货物的在线运动的情况, 实时提供仓库变化的信息1.2 系统总体需求根据详细的需求分析, 企业在库存中面临的主要问题体现在: 库存量大,库存资金周转慢,不能及时统计库存物料;库房人员重复工作多,效率低;不知道库存物资积压时间长短 系统输入繁琐, 极易产生输入错误, 缺少智能化输入功能,如:产品名称输入过程中,产品名称和产品代码不能够相互协调,易产生不匹配现象另外,整个系统运行较慢,数据处理能力不够,进行一个查询往往需要等待很长时间 该系统还缺少通用库存管理理功能, 货物组成条目都是经过手工计算的,工作量很大,且容易产生错误,有一个小错误,核对都需要花费很大的精力,换句话说,当前没有通用库存管理系统。

    本系统从最初的采购到存储和出库,仓库管理将决定企业是否兑现其承诺从仓库计划到仓库操作和交叉运输, 优化的仓库将有助于大幅度减少企业的库存量和和货物成本, 因为企业将能保持较低的库存货水平, 优化入库,保管和出库活动,并且协调载货量1.3 可行性分析技术上可行: 该系统所需硬件设备, 市场上销售且价格较低, 甚至可以使用原有的设备, 软件上,操作系统采用 Windows系列操作系统, 数据库管理系统采用 Visual Studio 2008 ,这些软件在 GUI 开发中已被大量应用,技术上都比较成熟因此在技术上是可行的2 概要设计2.1E-R 图输入 账 号密码 登录账号密码符合要求 N 重新输入Y修改密码 注销 退出 主要功能主要功能入库登记 出库登记 仓库预警 库存盘点输入货物详情输入货物详情输入预警数量显示库内货物详情数据库,信息数据库,信息显示数量不栏同步修改栏同步修改足货物详情2.2 相关说明登录系统:账号密码均存储于 SQL数据库中输入账号及账号对应密码,即可登录系统修改密码:需输入一次原密码, 输入两次新密码相同即可修改 密码修改同步于SQL数据库注销: 登录账号退出,返回登陆界面。

    退出系统: 系统退出入库登记:输入产品 ID ,即可直接获得产品的相关信息,此时输入入库数量就可以完成货物的入库操作,如果此时产品为新产品,需输入产品的详细信息,就可以完成货物的入库操作入库操作同步更新 SQL数据库出库登记:输入产品 ID ,即可直接获得产品的相关信息,此时输入出库数量就可以完成货物的出库操作,入库操作同步更新 SQL数据库仓库预警:输入预警数量,点击确定按钮,此时显示数据库中,货物数量小于预警数量的货物总数和货物详细信息商品查询:显示仓库中所有货物的详细信息,可以输入产品 ID 和产品名称进行货物查询,支持模糊查找3 详细设计3.1 数据库表定义Users 表(用户信息表)Goods表(货物详情表)Worehouses表(仓库信息表)3.2GUI 框架设计1 用户系统2 主菜单3 密码修改4 货物入库5 货物出库6 库存预警7 商品查询4 编码实现登录系统public static string pwd;public static string pid;private void button1_Click(object sender, EventArgs e){pwd = this.textBox1.Text;pid = this.textBox2.Text;Logs l = new Logs();if (int.Parse (l.isPassword(this.textBox2.Text,this.textBox1.Text).ToString() )==1){this.Hide();Management m = new Management();m.ShowDialog();}else{DialogResultdr= MessageBox.Show("请检查您的用户名和密码","登录失败",MessageBoxButtons.YesNo);if (DialogResult.No==dr){Application.Exit();}}}private void button2_Click(object sender, EventArgs e){Application.Exit();}主菜单public partial class Management : Form{public Management(){InitializeComponent();}private void ChangeToolStripMenuItem_Click(object sender, EventArgs e){ChangePassword cp = new ChangePassword();cp.ShowDialog();}private void LogoutToolStripMenuItem_Click(object sender, EventArgs e){DialogResultdr= MessageBox.Show("您 确 定 要 注 销 吗 ?","注 销",MessageBoxButtons.YesNo);if (dr == DialogResult.Yes){Application.Exit();}}private void OutToolStripMenuItem_Click(object sender, EventArgs e){Application.Exit();}private void Management_Load(object sender, EventArgs e){this.goodsTableAdapter.Fill(this.wmsDataSet.Goods);}private void Management_FormClosed(object sender, FormClosedEventArgs e){Application.Exit();}private void InputF2ToolStripMenuItem_Click(object sender, EventArgs e){InputWHForm iwh = new InputWHForm();iwh.ShowDialog ();}private void Management_Activated(object sender, EventArgs e){this.goodsTableAdapter.Fill(this.wmsDataSet.Goods);}private void OutF6ToolStripMenuItem_Click(object sender, EventArgs e){OutWHForm owh = new OutWHForm();owh.ShowDialog ();}private void WarningToolStripMenuItem_Click(object sender, EventArgs e){Warning w = new Warning();w.ShowDialog();}private void GoodsDetailsToolStripMenuItem_Click(object sender, EventArgs e){this.goodsTableAdapter.Fill(this.wmsDataSet.Goods);}private void WareHouseDetailsToolStripMenuItem_Click(object sender, EventArgs e){this.warehousesTableAdapter.Fill(this.wmsDataSet1.Warehouses);}private void SearchToolStripMenuItem_Click(object sender, EventArgs e){Search s = new Search();s.Show();}private void fillByToolStripButton_Click(object sender, EventArgs e){try{this.goodsTableAdapter.FillBy(this.wmsDataSet.Goods);}catch (System.Exception ex){System.Windows.Forms.MessageBox.Show(ex.Message);}}}入库登记public partial class InputWHForm : Form{public InputWHForm(){InitializeComponent();}private void InputWHForm_Load(object sender, EventArgs e){// TODO: 这行代码将数据加载到表“ wmsDataSet4.Goods”中。

    您可以根据需要移动或移除它this.goodsTableAdapter.Fill(this.wmsDataSet4.Goods);}private void button6_Click(object sender, EventArgs e){this.Close();}public void SendToInput(){GoodsDetails s = new GoodsDetails();s.GID = int.Parse(this.textBox1.Text);s.GName = boBox1.Text;s.Gprice = float.Parse(this.textBox3.Text);s.GProvider1 = boBox1.Text;s.GProvider2 = boBox4.Text;s.Wname = int.Parse (boBox2.Text);s.Count = SqlHelper.DefiniteCount(this.textBox1.Text) + int.Parse(this.textBox2.Text);SqlHelper.AddGoods(s);}private void button5_Click(object sender, EventArgs e){SendToInput();this.Close();}private void textBox1_TextChanged(object sender, EventArgs e){GoodsDetails g = SqlHelper.Bind(this.textBox1.Text);boBox3.Text = g.GName;this.textBox3.Text = g.Gprice.ToString ();boBox1.Text = g.GProvider1;boBox4.Text = g.GProvider2;boBox2.Text = g.Wname.ToString ();}}出库登记public partial class OutWHForm : Form{public OutWHForm(){InitializeComponent();}private void button2_Click(object sender, EventArgs e){this.Close();}private void button1_Click(object sender, EventArgs e){SentToOutput();this.Close();}private void SentToOutput(){GoodsDetails s = new GoodsDetails();s.GID = int.Parse(this.textBox1.Text);s.GName = boBox1.Text;s.Gprice = float.Parse(this.textBox3.Text);s.GProvider1 = boBox1.Text;s.GProvider2 = boBox4.Text;s.Count = SqlHelper.DefiniteCount(this.textBox1.Text) - int.Parse(this.textBox2.Text);SqlHelper.OutGoods(s);}private void OutWHForm_Load(object sender, EventArgs e){// TODO: 这行代码将数据加载到表“ wmsDataSet2.Goods”中。

    您可以根据需要移动或移除它this.goodsTableAdapter.Fill(this.wmsDataSet2.Goods);}private void textBox1_TextChanged(object sender, EventArgs e){GoodsDetails g = SqlHelper.Bind(this.textBox1.Text);boBox3.Text = g.GName;this.textBox3.Text = g.Gprice.ToString ();boBox1.Text = g.GProvider1;boBox4.Text = g.GProvider2;}}库存预警public partial class Warning : Form{public Warning(){InitializeComponent();}private void button3_Click(object sender, EventArgs e){this.listBox1.Items.Clear();List g = new List();g = SqlHelper.WarningBind(this.textBox2.Text);int i = 0;for ( i=0; i < g.Count();i++ ){this.listBox1.Items.Add(g[i].GID.ToString().PadLeft(4)+g[i].GName.PadLeft(20) + g[i].Count.ToString().PadLeft(10)+ g[i].GProvider1.PadLeft(20)+g[i].GProvider2.PadLeft(10));}this.textBox1.Text = i.ToString();}}货物查询public partial class Search : Form{public Search(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){this.Close();}private void Search_Load(object sender, EventArgs e){// TODO: 这行代码将数据加载到表“ wmsDataSet5.Goods”中。

    您可以根据需要移动或移除它this.goodsTableAdapter.Fill(this.wmsDataSet5.Goods);}private void button2_Click(object sender, EventArgs e){GoodsDetails g = SqlHelper.BindVague(boBox3.Text);this.textBox1.Text = g.GID.ToString();this.textBox3.Text = g.Gprice.ToString();boBox1.Text = g.GProvider1;boBox4.Text = g.GProvider2;boBox2.Text = g.Wname.ToString();this.textBox2.Text = g.Count.ToString();}private void button3_Click(object sender, EventArgs e){GoodsDetails g = SqlHelper.Bind(this.textBox1.Text);boBox3.Text = g.GName;this.textBox3.Text = g.Gprice.ToString();boBox1.Text = g.GProvider1;boBox4.Text = g.GProvider2;boBox2.Text = g.Wname.ToString();this.textBox2.Text = g.Count.ToString();}}数据库连接public static void ChangeDBPassword(int p,string p2){SqlConnection co = new SqlConnection(ConnectionString.con);SqlCommand cmd = new SqlCommand(string.Format("update Users set Upassword='{0}' where UID='{1}'", p,p2), co);co.Open();var i = (int)cmd.ExecuteNonQuery ();MessageBox.Show(" 密码修改成功 ");co.Close();}public static void AddGoods(GoodsDetails g){SqlConnection co = new SqlConnection(ConnectionString.con);SqlCommand cmd3 = new SqlCommand(string.Format("selectcount(*)from Goods where产品ID='{0}'", g.GID), co); co.Open ();int j=(int)cmd3.ExecuteScalar (); if(j==0){SqlCommand cmd2 = new SqlCommand(string.Format("insert into Goodsvalues('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}')",g.GID ,g.GName ,g.Gprice,g.Count ,g.GProvider1 ,g.GProvider2 ,g.GDescribe,g.Wname ), co);int i = (int)cmd2.ExecuteNonQuery();MessageBox.Show("添加成功");co.Close();}else{SqlCommand cmd1 = new SqlCommand(string.Format("update Goods set 产品名称 ='{1}',产品价格 ='{2}', 仓库所剩数量 ='{3}', 厂商 ='{4}', 厂商 ='{5}', 备注 ='{6}', 收货仓库 ID='{7}' where 产品 ID='{0}'", g.GID, g.GName, g.Gprice, g.Count , g.GProvider1, g.GProvider2,g.GDescribe,g.Wname ), co);int i = (int)cmd1.ExecuteNonQuery();MessageBox.Show(" 更新成功 ");co.Close();}}public static void OutGoods(GoodsDetails g){SqlConnection co = new SqlConnection(ConnectionString.con);try{SqlCommand cmd1 = new SqlCommand(string.Format("update Goods set 产品名称 ='{1}',产品价格 ='{2}', 仓库所剩数量 ='{3}', 厂商 ='{4}', 厂商 ='{5}', 备注 ='{6}', 收货仓库 ID='{7}' where 产品 ID='{0}'", g.GID, g.GName, g.Gprice, g.Count, g.GProvider1, g.GProvider2,g.GDescribe,g.Wname ), co);co.Open();int i = (int)cmd1.ExecuteNonQuery();co.Close();MessageBox.Show(" 仓库出库记录完成 ");}catch (SqlException){MessageBox.Show(" 出库失败 ");}}public static int DefiniteCount(string p){SqlConnection co = new SqlConnection(ConnectionString.con);SqlCommand cmd = new SqlCommand(string.Format("select 仓库所剩数量 from Goods where 产品 ID='{0}'", p), co);SqlCommand cmd1 = new SqlCommand(string.Format("select count(*) from Goods where 产品ID='{0}'", p), co);co.Open();int i=0;if ((int)cmd1.ExecuteScalar() == 1)i = (int)cmd.ExecuteScalar();co.Close();return i;}public static GoodsDetails Bind(string p){SqlConnection co = new SqlConnection(ConnectionString.con);SqlCommand cmd = new SqlCommand(string.Format("select * from Goods where 产 品 ID='{0}'", p), co);co.Open();var i = cmd.ExecuteReader();GoodsDetails g = new GoodsDetails();while (i.Read()){g.GName = i[1].ToString();g.Gprice = float.Parse(i[2].ToString());g.GProvider1 = i[4].ToString();g.GProvider2 = i[5].ToString();g.GDescribe = i[6].ToString();g.Count = (int)i[3];g.Wname = (int)i[7];}return g;}public static List WarningBind(string p){SqlConnection co = new SqlConnection(ConnectionString.con);SqlCommand cmd = new SqlCommand(string.Format ("select * from Goods where 仓库所剩数量 <'{0}'",p), co);co.Open();var i = cmd.ExecuteReader();List gd = new List();while (i.Read()){GoodsDetails g = new GoodsDetails();g.GName = i[1].ToString();g.GProvider1 = i[4].ToString();g.GProvider2 = i[5].ToString();g.Count = (int)i[3];g.Wname = (int)i[7];gd.Add(g);}return gd;}public static GoodsDetails BindVague(string p){SqlConnection co = new SqlConnection(ConnectionString.con);SqlCommand cmd = new SqlCommand(string.Format("select * from Goods where 产品名称 like '%{0}%'", p), co);co.Open();var i = cmd.ExecuteReader();GoodsDetails g = new GoodsDetails();while (i.Read()){g.GID = (int)i[0];g.GName = i[1].ToString();g.Gprice = float.Parse(i[2].ToString());g.GProvider1 = i[4].ToString();g.GProvider2 = i[5].ToString();g.GDescribe = i[6].ToString();g.Count = (int)i[3];g.Wname = (int)i[7];}return g;}5 总结在这次课程设计中, 让我学到了很多在课堂和书本上学不到的知识, 我在这次课程设计中最大的收获有以下几个方面:一、领略到了数据库设计在计算机领域的重要性。

    数据库作为一个永久存储形式在应用中发挥着重要的作用 在数据库设计中, 我明白了数据库设计中不是范式越高越好的我们要根据我们的应用来决定,一切应该以需求为首要选择二、对变成环境、一些控件的使用和界面的美化方面更加熟悉因为《仓库管理系统》中涉及到很多控件的使用, 只有很好的使用这些控件才可以给出一个很好的界面呈现在用户的面前 这样更有利于数据库和用户之间的交流 这里就要涉及一些平时不太常见的控件的使用问题为了更好的在系统中利用这些控件,我上网查询了一些关于控件使用的资料,最主要的是 MSDN上面、还有借了一些这方面的书籍在界面的美化方面,我了解了一些 WINDOWS自定义界面的知识,现在的软件其实好多面向用户的时候用户首先看的就是一个软件的界面是否有好,是否漂亮其实,界面美化是很重要的因为美,是人一直追求的主要知识有:自定义窗口形状,按钮的 3D 效果,控件的自定义等等这些都是通过面向对象编程的一些特性实现的,又得是通过多态,又得是通过类的继承三、利用软件工程学开发系统虽然这个《仓库管理系统》是一个小的系统,但只有从这些小的项目中就利用软件工程学的知识, 这样可以开发在系统设计和实现中我们可以总结很多经验和教训。

    利用三层架构的框架设计, 更好的展现了代码的清晰可辨四、系统的核心是入库、 库存和出库三者之间的联系, 每一个表的修改都将联动的影响其它的表, 当完成入库或出库操作时系统会自动地完成库存的修改 查询功能也是系统的核心之一, 在系统中即有单条件查询和多条件查询, 也有精确查询和模糊查询, 系统不仅有静态的条件查询, 也有动态生成的条件查询, 其目的都是为了方便用户使用 系统有完整的用户添加、 删除和密码修改功能 体现了系统面向用户的方面致 谢本次课程设计是在我的老师冯万利,于长辉等的亲切关怀和悉心指导下完成的他们严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我从课题的选择到项目的最终完成, 老师都始终给予我细心的指导和不懈的支持两年多来,老师们不仅在学业上给我以精心指导,同时还在思想、生活上给我以无微不至的关怀, 老师们一丝不苟的作风, 严谨求实的态度, 踏踏实实的精神,不仅授我以文,而且教我做人,虽历时三载,却给以终生受益无穷之道对老师们的感激之情是无法用言语表达的 在此谨向老师们致以诚挚的谢意和崇高的敬意淮阴工学院,这里严谨的学风、优美的校园环境使我大学两年过的很充实和愉快。

    在这短短的两年时间里, 我有幸和许多优秀的同学一起学习, 听睿智的老师们讲授课程 虽然只有短短的两年时光, 但我确实学到了很多有用的知识, 尤其是对我思想和方法上的指导 这些有用的东西一直对我大学的学习和生活有很重要的指导作用, 我相信,这些东西将伴随我走完整个人生的道路 我不能不感谢班里的每一位同学和老师,跟你们在一起学习、生活,那真是其乐融融,妙不可言!在本次课程设计即将完成之际, 我的心情无法平静, 从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意 ! 最后我还要感谢培养我长大含辛茹苦的父母,谢谢你们 !“路漫漫其修远兮, 吾将上下而求索”,这是大二旅程的结束, 也是未来道路的开始未来的路极其漫长与艰辛,我将更加的努力,不负家人,老师,同学们的众望参考文献1 NIIT 《使用 C#进行面向对象编程》上海,安艾艾迪信息技术有限公司2 NIIT 《使用 .NET Framework 进行 GUI 应用开发》上海,安艾艾迪信息技术有限公司3 NIIT 《关系数据库系统介绍使用 SQLServer 2005 查询和管理数据》上海,安艾艾迪信息技术有限公司4 NIIT 《使用 ADO.NET和 XML开发数据库应用程序》上海,安艾艾迪信息技术有限公司5 NIIT 《编程逻辑与技术信息搜索和分析技能》上海,安艾艾迪信息技术有限公司。

    点击阅读更多内容
    卖家[上传人]:无极剑圣
    资质:实名认证