仓库管理系统
一实验目的
学习使用vs2008开发数据库应用程序的一般方法及步骤;熟悉数据库引擎BDE、ADO,熟练使用数据库程序开发中的相关组件;对前面所学的知识做一总结与回顾。
二实验内容
●系统分析及数据库设计
随着科学技术的发展,社会进步,计算机迅速的发展,仓库管理的方法也日新月异,以前全是由人管理的方法现存在很多的缺点:管理效率低,劳动强度大,信息处理速度低而且准确率也不够令人满意。为了提高仓库管理效率,减轻劳动强度提高,信息处理速度和准确性;为仓库管理员提供更方便、科学的服务项目。为仓库管理员提供的一种更先进、科学的服务系统。于是我们便选择了由计算机来设计一个仓库管理系统的方案。让计算机对仓库进行准确的管理,仓库管理员可以直接在计算机上实现仓库的信息管理,并能在一定程度上实现一定的自动化。
●系统基本功能实现
系统的核心是入库、库存和出库三者之间的联系,每一个表的修改都将联动的影响其它的表,当完成入库或出库操作时系统会自动地完成库存的修改。查询功能也是系统的核心之一。
仓库管理各种信息的输入,包括入库、出库、还库、用户信息、供应商信息、商品信息等。
仓库管理各种信息的查询、修改和维护。
我们设计了用户管理、供应商管理、商品信息管理、入库管理、出库管理、查询管理六个主要模块。
●系统高级功能实现
系统的核心是对商品信息的管理,商品的入库、出库、库存,当三者之间有变化的时候就需要对相应的数据进行修改,如进货的时候,要添加入库信息,当然库存信息也要随着增加,同理出库也是一样,出去了一件商品相应的库存就要少一件商品,达到数据信息的统一性,方便管理人员进行处理管理
●系统运行测试和发布
系统的整个的运行是在计算机上逐步完成的,每一步都是经过相应的操作方能完成,可能运行的有点慢但是总的还是可以正常的管理操作,有不好的地方希望与我们组联系,以后改进。
三实验步骤
●系统需求分析
仓库管理系统主要用于仓库货品信息的管理,系统包括仓库管理、入库、出库和查询等几部分组成。仓库管理系统实现对货品信息的管理和浏览等。仓库管理人员可以浏览、查询、添加、删除等产品的基本信息。
(1)可以进行对用户的一个管理,包括用户的信息,用户信息的修改等;
(2)商品的供应商的信息的一个管理,供应商的基本信息,添加、删除、修改查询等;
(3)产品入库管理,填写入库单,确认产品入库;
(4)产品出库管理,填写出库单,确认产品出库;
(5)可以查询产品入库情况、出库情况、当前库存情况,可以按入库出库编号,商品编号或者是商品名称等进行查询;
系统功能模型图如下:
●系统功能设计
(1)基本信息管理
基本信息包括用户信息、供应商信息和库存信息及入库出库的记录信息等。在产品入库时,需要提供供应商的信息;在产品出库时,也需要提供供应商的信息。
基本信息管理模块可以实现以下功能:
添加、修改、删除和查看用户信息;
添加、修改、删除和查看供应商信息;
添加、修改、删除和查看商品信息。
(2)商品信息管理
产品信息管理模块可以实现以下功能:
⑴添加产品信息;
⑵修改产品信息;
⑶删除产品信息;
⑷查询产品信息;
(3)仓库管理操作
进行入库和出库操作。入库操作需要记录相关的产品信息、仓库信息、客户信息、入库时间等信息;出库操作需要记录相关的产品信息、仓库信息、出库时间等信息。
(4)查询管理功能
查询管理模块可以对仓库产品进行各种类型的查询,从而能够全面的了解仓库情况。
●数据库设计
我们设计的数据库共有6个表,分别是:用户信息表、供应商信息表、库存表、入库信息表、出库信息表、商品信息表。其中库存表与入库出库表有直接的关系,当每执行一次入库还是出库的操作的时候,库存表的信息都要发生改变,三者是有联系的,我们做的这个不是很智能只是通过对数据的修改来完成这个入库出库的操作。每次入库的时候都要核对供应商的信息以防止发生错误,在出库的时候也要查询是否有库存有的话才能进行出库,反之则不能进行出库。
如下所示各个表的数据字段: 商品信息表:
用户信息表:
系统实现
我们的设计使用delphi来做的,所以每一块都是采用的delphi的简单的设计思想,由于能力有限做的只是从一个窗口打开到另外一个窗口的操作,同一个界面只能进行此时的操作,不能同时打开多个窗体进行操作。总共是六个模块,完成这个系统,每个部分完成相应的功能。开始的系统分析中已经分析过了,我们的这个系统是面向人的一个操作的,由人来触发操纵这个系统管理相应的数据。我们要实现的是对人员信息,商品信息、供应商信息还有就是出库入库的操作,最后还有就是查询的操作,整个系统就算是完了
四重点难点
我们在这个系统的整个的编写过程中遇到了很多的问题,具体的简单问题如下:
(1)在刚刚开始的时候,我们不知道可以建立一个共有的数据库的连接,所以在建一个窗体的时候我们就连接一次数据库后来通过和别人的交流,知道要建一个公共的连接,所以后来才有了现在的公共的连接的一个form,数据库连接好之后还是有问题总是显示不出来,每次都是的总是显示不出来,原因是adoquery的active每次都不会自动的置为true而是必须我自己修改一下保存了之后就变为true,运行一次就要变一次,所以每次运行之前还都要从新设置一下。
(2)在我们对这个系统进行数据分析的时候,有一点就是要保持数据的统一性,完整性,开始的时候我还不是很注意这一点就是在做简单的数据的增删改的操作,但是后来仔细的想一想还是不对,我们经过仔细的商量和在网上的搜索,结果还是想到了,必须把这三个表连在一起,不管是入库还是出库都要对库存信息进行修改才对,我们是通过用adoquery的locate的功能进行查找记下查找到的库存信息,取一个i对这个数据先进行保存,然后要是入库的话就是把新加进来的数量加上这个i然后再赋给库存信息的库存数量,
代码如下:i:=strtoint(DBEdit19.text);
ADOQuery3.Post;
ADOQuery2.Active:=true;
ADOQuery2.Locate('商品编号',DBEdit21.text,[]);
j:=strtoint(DBEdit15.Text);
ADOQuery2.Edit;
DBEdit15.Text:=IntToStr(i+j);
ADOQuery2.Post;
出库也是一样的,利用这个i把原有的库存信息的库存数量进行保存提取然后减去出库的数量结果再赋给库存量就行了,我们也是不太会做问别人还有在网上查资料才找到的。
(3)在做查询的时候,我们基本上都是用的adoquery的select语句做的,刚刚开始的时候我们的select的语句总是写错,执行不了,我们的查询语句不知道该怎么写是好了所以后来就全部用like 写了,这样写就没有那么多的错误了,如我们的对库存的查询:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from 库存信息where 商品编号like '''+edit1.Text+'%''');
ADOQuery1.Open;
我们的查询就是用like做的,通过参数的查询查找到相应的数据,刚开始的时候我们写的是
ADOQuery1.SQL.Add('select * from 库存信息 where 商品编号'''+edit1.Text+'%''');但是就是运行部出来,写法上应该是没有问题但是就是运行部出来,后来就加了一个like 就对了,也许是like 的查询更广吧!
(4) 在做对供应商的查询的时候,我们做的是一个下拉的combox,下拉下来选择相应的项目进行参
数查询,但是所有的语法都是没有问题的,只有在对供应商ID的进行参数查询的时候出问题了,就是查不出来,为此还专门找人帮我调了好久,结果是问题在对ACCESS的建表的时候‘供应商ID’输成了‘供应商ID ’多了一个空格,查询的时候计算机不认就查不出来,这样的问题真的是不应该犯啊,为此我们可是费了好大的劲啊!
(4)在对修改的数据进行保存的时候出了点问题,就是如果数据并没有修改如果直接点击保存的话会报错,原因是数据并没有做任何的修改,adiquery并不支持这样的保存,起初并不是很在意都是修改了一下然后就点保存是可以的,但是后来发现是不完善的,后来就做了简单的修改,如果没有进行修改则,保存按钮时灰色的,不能点击,而且一旦进行修改了之后它也会变成灰色,避免了因为没有修改而点击报错的问题。
(5)还有就是我在做这个登录界面的时候,由于开始的时候不是先做的登录界面,我们是直接做的主界面,做完主界面的时候发现没有做登录界面,我们找了一些资料,做了一下这个登陆界面,但是刚刚开始的时候连接不上,找到的一些方法好像就是用不成,本来也是想做一个权限的限制的但是发现不好做,一个权限就要对应一个主界面,无疑是增加了很大的工作量,综合考虑我们就没有做这个权限的问题。最后还是就现在这个登录界面,输入用户名,密码正确则进入错误就不能进行访问
五系统评价
我们组的这个我觉得做的不是很好,用的方法都很简单,但是总的来说还是挺好的,我们给自己打个84分吧,感觉还行,基本的功能都已经完成了,也没有什么大的问题,当然还是有不好的不完善的地方,有些地方时没有做好的,做的不对,就像是查询的时候查询完第一次当把当前窗口关闭再从新打开的时候上次查询的结果还在原来的地方并没有清除。、
我们组是三个人,组长(肖亚磊)做的是:登录界面、主界面、用户还有供应商及商品管理这几块。
组员(郁会杰)做的是:入库、入库查询、商品信息查询这几个模块。
组员(金俏俏)做的是:出库、出库查询、库存查询这几个模块。
我觉得我们组做的不是很好但是基本功能都是实现了,界面做的也可以只是有点单调而已故打分如下:
肖亚磊(组长):85分
郁会杰(组员):83分
金俏俏(组员):83分
六心得体会
肖亚磊:
我觉得我这次的课程设计对我的帮助很大,因为刚刚开始的时候我对这个面向对象程序设计理解的还不是很深,所以学的也不是很好,只是会简单的画界面啊,做一些简单的程序,没有真正的从一个开发着的角度去合理的利用delphi可视化开发工具,我觉得这个delphi是一个很好的开发工具,理解了什么叫聪明的程序员用delphi这个话的含义。
我们做的是仓库管理系统,由于刚开始的时候分析的不是很仔细对delphi的使用也不是很熟悉,所以刚刚开始的时候走了很多的歪路,做了很久才慢慢的走上了正轨。遇到的问题很多,就像刚开始的时候我连怎么把每个模块联系在一起都不知道,怎么用怎么弄想了很久,结果还是问同学才最后明白是用的unit use的这么一个工具吧连接起来的,真的是一头雾水刚开始的时候,不过现在好了通过这次的课程设计我又学到了不少,对于大四的毕业设计我想我也就用这个开发工具做了。我做的是登陆界面还有主界面,用户管理、供应商管理及商品信息的管理修改,看似很多其实很多都是一样的,只是换了一个名字而已,用的原理都是一样的,用的是相类似的代码,数据的增删改查等都是最基本的操作。当然这其中也是遇到了很多的问题的,登陆的时候我就遇到了很多的问题总是提示我数据库没有连接上,登陆界面我就用了一个adoquery的连接,用它连接总的那个数据库的连接,但是刚开始的时候就是连不上,我在主界面的creat的事件中写了代码:
Application.CreateForm(TForm10, Form10);
Form1.visible:=false;
Form10.showmodle;
结果就是不对,网上的代码就是这样的但是我用就是不对了,我就是很奇怪啊,后来经过仔细的查看在,文件的生成的时候就已经创建过了这个from10文件,我这样做就是多此一举了,删掉这个代码在工程文件中从新进行了编写才算是对了。在修改保存的时候也遇到了问题,就是保存修改过的文件信息是没有错的但是保存没有修改的信息就会报错,显示adoquery不支持这个保存的信息。后来我就直接改成了初始值如果没有进行修改就不能保存,保存的enable是灰色的无法点击,保存完成之后也会变灰防止多点击而报错。
总的来说我的收获是很大,对delphi这门课的认识更深了,知道了以前不是很注重的细节的调试,还有就是程序在出错之后的处理,以前只是会去问比人,但是现在我会慢慢的自己修改自己找问题的所在自己解决,对我的能力有了很大的提高。
班级:计科082
姓名:肖亚磊
学号:084632237
我们组做的是仓库管理系统,我负责了其中的商品入库,商品入库查询和商品查询三个部分,刚开始的时候没有一点的头绪,但是后来通过看书和网上查到的一些类似的仓库管理系统才开始做的。在商品入库模板中用到了三个ADOQUERY来控制该模板中的三步来实现对商品入库的管理包括(先通过确认入库供应商是否存在(通过查询来实现))在这个模块中不设置ASOQUERY的active为true而是通过在程序中当查询时才显示出要查询的信息。在个功能的实现是借鉴了下载的一个相关的仓库管理系统中的内容,因为当设置其属性为active时在DBGRID中就会显示出数据库中所有的供应商信息这样就无法显示出要查询的信息是否准确的显示,在查询语句中用到了SQL语句这是一个难点虽然一些简单的查询可以在以前做过的试验中找到但一些比较复杂的语句就要自己去实现通过不同的方式来实现整个功能的可用性。在procedure TForm4.Button16Click(Sender: TObject);
var i,j:integer;
begin
i:=strtoint(DBEdit19.text);
ADOQuery3.Post;
ADOQuery2.Active:=true;
j:=strtoint(DBEdit15.Text);
ADOQuery2.Edit;
DBEdit15.Text:=IntToStr(i+j);
ADOQuery2.Post;
ShowMessage('信息保存完毕,请关闭对话框,或进行下一商品的入库操作!');这个查询中就是一个比较复杂的运用,因为以前都是在ADOTABLE中的查询用到的locate(通过这个语句来实现整个商品的信息)还有就是关联的问题,因为是管理系统所以当一步实现后要在整个系统中的所有信息中有显示。刚开始的时候总是想不出来最后用了一个很简单的方法就实现了就是通过保存数据库。这是一个很简单的方法可惜到最后才想起来。
在入库查询中主要是通过SQL语句来实现的最要是查询全部信息,通过商品编号,商品名称,供应商编号进行查询。在商品查询中实现的功能基本和入库信息查询中的一样,都是简单的SQL语句的应用。
在本系统中通过DATAMODULE实现了对整个数据库的连接只用了一个adoconnection来控制数据库的连接通过viewform来控制整个系统中的form。在做这个系统的时候在刚开始费了很多的力气,刚开始是不知道怎样下手,到后来是对一些语句的不理解对一些问题想的太复杂。在这做这次系统中收获了很多学会了一些简单的技巧,一些复杂的控件不会用可以用一个或几个简单的控件来实现。还有就是对SQL语句的运用有了更深入的了解。总的来说对这次自己的表现还是比较满意至少学会了DATAMODULE和VIEWFORM的运用。
班级:计科082
姓名:郁会杰
学号:084632218
商品出库:单击菜单中的“商品出库”项,弹出商品出库界面。出库信息管理:库存查询和出库。先查询是否有用户需要出库的商品或者能否满足用户的操作需求。若有,用户可接下去操作商品的出库,可按照商品编号或者商品名称进行查询;否则,退出此操作界面或进行其他操作。
出库查询:为方便管理者查看出库信息,可按照出库编号、商品编号、商品名称进行查询,对商品是否已出库进行查询。方便管理者总结前一段时间内,商品的出库信息,让他们对今后的一段时间里,是否增加或减少某些商品的库存量有直接的影响。减少不必要的损伤和麻烦。
库存查询:方便管理者对当前出库的所以商品进行查询,可按照商品编号或者商品名称进行查询。使管理者及时掌握当前商品的库存信息,有利于管理者对商品的管理,在第一时间做出最有效的决定。
做完本次实验,让我对Delphi有了进一步的掌握,对于与数据库之间的联系有了进一步的了解。在使用ADOQuery以及SQL语句上的查询语句,有了熟练的掌握。这仅仅只是一个小型的数据库,但是它所包含的内容却很多很广泛。一个人并不能把它的方方面面都想到,在与小组的讨论中,我们不断的完善它。从中,我学到了很多东西,一个人的思想是狭隘的,不能考虑全面,这就体现了团队合作的重要性。每个人都表现出自己擅长的方面,那么这个方案也就会越来越完美。
对于if语句,如果条件有好几句话,最好是加上Begin……end 语句,否则,容易出错。对于任何一种软件,都是熟能生巧,只有不断的使用与熟悉,才能掌握,就像是单引号,在使用过程中,一定要想好到底是几撇,如果出错了,就更该,直到改对为止。这样反复的操作,才能让你印象深刻。如果只是上课听老师讲课,过一段时间,很容易就会遗忘。经过自己的实践操作,在自己的使用过程中才能很好的记忆。
最后,对于本次实验的最大收获,在团队合作中,让我们彼此有了更深的了解,相处更加愉快。有时,合作也是拉近你我关系的一种方法。
班级:计科082
姓名:金俏俏
学号:08463226
仓
库
管
理
系
统
班级:计科082
组长:肖亚磊学号:084632237
组员:郁会杰学号:084632218
组员:金俏俏学号:084632206