淮海工学院计算机科学系课程设计报告设计名称:仓储物资管理系统姓名:袁海燕学号:221003135 专业班级:G计101系(院):计算机工程学院设计时间:2013.1.7--2013.1.18设计地点:计算机工程学院机房一、课程设计的目的《数据库原理及应用》课程设计是计算机科学与技术专业集中实践性环节之一,是学习《数据库原理及应用》课程后进行的一次全面的综合练习。
本课程设计主要在于加深学生对数据库基础理论和基本知识的理解,掌握数据库应用系统设计开发的基本方法,达到进一步使学生综合运用所学知识和增强实际动手能力的目的。
二、课程设计任务与要求2.1.课程设计任务以Microsoft SQL Server 2008R2作为后台数据库平台,以My Eclipse作为前台开发工具,完成一个小型数据库应用系统的设计开发。
本次课程设计开发的系统名称为仓储物资管理系统。
2.2.课程设计要求通过对某企业的仓储物资管理业务进行分析,调查,设计该企业的仓储物资管理系统。
主要实现以下功能:基础信息管理功能:分为物品信息管理、员工信息管理、客户信息管理、供应商信息管理、仓库信息、供应信息。
进货管理管理功能:对库存进行查询,对于缺货或库存较少的物品进行进货,对已到的物品进行入库登记处理,并随时可查询入库登记,然后可生成入库报表。
库房管理功能:库房用于存放物品,能够库存物品的编号、仓库编号、库存数量等信息。
新进的物品要入库,可查询库存信息,盘点库存信息,对于已卖出的物品,其在库存中的数量要相应的减少,对于被退回的物品要重新入库,其相应得库存数量要增加,最后可生成库存报表。
销售管理功能:此功能对销售信息及物品进行处理。
员工对已销售的物品进行销售登记,同时更改物品的库存信息,对于被退货的物品要进行销售退货登记,同时更改该物品的库存信息,系统可生成销售报表。
财务管理功能:系统可进行财务管理,能够让员工更好地了解到本单位的财务状况,以便管理者能够为本部门更好地做出决策。
系统能够统计当日销售物品的资金状况,也能够统计当月销售物品的资金状况。
统计功能:系统可进行各物品销售数量的统计、所有员工销售额统计、所有物品的库存统计、所有顾客购买物品的统计。
三、设计说明书3.1概述1、开发背景:通过对仓库的物品的零售、批发等工作的深入调查,发现其业务主要包括物品销售、出入库管理、财务管理、人事管理等。
仓储物资管理是一项琐碎、复杂而又十分细致的工作。
手工进行日常的物品销售、出入库的工作,容易出现“开空单”的现象,且呆账、错账时有发生,而且费时费力。
本系统在设计中考虑和克服了上诉问题,实现了仓储物资管理工作的系统化、规范化和自动化。
2、开发趋势:仓储物资管理系统数量众多,如今类似软件开发趋势主要表现在以下几点:风险最小化、提高效率、增强质量、提高可预测性、简化沟通、降低开销等。
3、可行性:在计算机技术飞速发展的今天,计算机管理已经在很多领域得到广泛的应用。
计算机化已成为各行各业现代化一个不可或缺的因素。
因此,仓储物资管理系统已成为管理中的重要组成不分。
目前很多仓库的信息管理还比较落后,劳动强度大且效率低,工作人员的大量时间都消耗在繁杂的事务上。
因此,开发仓储物资管理系统将大大提高他们的工作效率。
物品管理是一个非常重要和繁杂的事务,需要完成物品的购入、存储、销售等很多操作,这就使得使用仓储物资管理系统来管理这样的事务有着很好的效果。
4.开发工具:以Microsoft SQL Server 2008R2作为后台数据库平台,以My Eclipse作为前台开发工具。
3.2系统需求分析员工登陆:需要员工输入自己的工号及密码,输入内容若与数据库中的内容一致,则成功登陆系统,否则退出系统。
信息的管理:为物品信息管理、员工信息管理、客户信息管理、供应商信息管理、仓库信息、供应信息。
进货管理:对于缺货或库存较少的物品进行进货,对已到的物品进行入库登记处理。
库房管理:库房用于存放物品。
新进的物品要入库,可查询库存信息,盘点库存信息,对于已卖出的物品,其在库存中的数量要相应的减少,对于被退回的物品要重新入库。
销售管理:对销售信息及物品进行处理。
员工对已销售的物品进行销售登记,同时更改物品的库存信息,对于被退货的物品要进行销售退货登记,同时更改该物品的库存信息,系统可生成销售报表。
财务管理:系统能够统计当日销售物品的资金状况,也能够统计当月销售物品的资金状况。
还可进行各物品销售数量的统计、所有员工销售额统计、所有物品的库存统计、所有顾客购买物品的统计。
3.3系统设计:3.3.1.系统总体设计1.基础信息管理基础信息管理分为物品信息管理、员工信息管理、客户信息管理、供应商信息管理、仓库信息、供应信息。
可对员工的信息进行管理(包括添加新员工,查询、修改和删除员工信息)、添加物品信息、客户信息和供应商信息。
2.进货管理对库存进行查询,对于缺货或库存较少的物品进行进货,对已到的物品进行入库登记处理,并随时可查询入库登记,然后可生成入库报表。
3.库房管理库房用于存放物品,能够库存物品的编号、仓库编号、库存数量等信息。
新进的物品要入库,可查询库存信息,盘点库存信息,对于已卖出的物品,其在库存中的数量要相应的减少,对于被退回的物品要重新入库,其相应得库存数量要增加,最后可生成库存报表。
4.销售管理此功能对销售信息及物品进行处理。
员工对已销售的物品进行销售登记,同时更改物品的库存信息,对于被退货的物品要进行销售退货登记,同时更改该物品的库存信息,系统可生成销售报表。
5.财务管理系统可进行财务管理,能够让员工更好地了解到本单位的财务状况,以便管理者能够为本部门更好地做出决策。
系统能够统计当日销售物品的资金状况,也能够统计当月销售物品的资金状况。
系统能够对已退货的物品进行财务处理。
还可进行各物品销售数量的统计、所有员工销售额统计、所有物品的库存统计、所有顾客购买物品的统计。
6.系统系统主要用于对系统进行后期维护和改进,在这里没做太多处理,仅仅实现员工登陆功能和退出系统功能。
系统功能模块图如所示:3.3.2仓储物资管理系统的数据流图:3.3.2.1数据流图仓储物资管理系统中的数据流主要贯穿于管理工作中的业务操作流程之中,涉及到员工登陆、进货、销售、退货、财务统计等。
图一总数据流图图二进货管理流图图三销售管理流图3.3.2.2数据流分析仓储物资管理系统中的数据流程主要描述如下:员工登陆成功后可进行进货、物品入库、入库登记查询、库存查询、销售退货处理、销售查询、销售物品等操作。
3.3.3数据字典数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
数据流图和数据字典共同构成系统的逻辑模型。
3.3.4数据库设计3.3.4.1数据库概念结构设计:本系统主要有员工、仓库、物品、客户、供应商五个实体集,一个员工能管理多个仓库,一个仓库只能有一个员工管理,两个实体集之间是一对多联系。
一个员工可以可以销售多个物品,一个物品只可以由一个员工销售,两个实体集之间是一对多的联系。
一种物品可以存储在多个仓库,一个仓库可以存储多种物品,两个实体集之间是多对多联系。
一种物品可由多个供应商供应,一个供应商可供应多种物品,两个褓集之间是多对多联系。
一种物品被多个客户购买,一个客户可以购买多种物品,两个实体集之间是多对多联系。
本系统的E-R图如图所示:图3-2E-R关系图实体包括:员工(系统用户)、仓库、物品、客户、供应商联系:统计(1:n)、管理(1:n)、购买(m:n)、供应(m:n)图3-3员工实体图员工实体属性:员工工号(主)、员工姓名、性别、联系电话、所属部门、家庭住址图3-4客户实体图客户实体属性:客户编号(主)、客户姓名、工作单位、联系电话、地址图3-5供应商实体图供应商实体属性:供应商编号(主)、公司名称、邮政编码、联系电话、公司名称图3-6物品实体图物品实体属性:物品编号(主)、物品名称、物品类型、参考价格、生产日期、有效期、规格、计量单位图3-7仓库实体图仓库实体属性:仓库编号(主)、仓库名称、员工工号图3-8入库关系图入库信息属性:【入库编号、物品编号(外)、仓库编号(外)】(主)、入库时间、入库数量图3-9库存关系图库存信息属性:【库存编号、物品编号(外)、仓库编号(外)】(主)、库存数量图3-10销售关系图销售信息属性:【销售编号、物品编号(外)、客户编号(外)】、销售日期、销售数量、销售金额、员工工号(外)图3-11供应关系图供应属性:供应编号(外)、供应商编号(外)、物品编号(外)3.3.4.2数据库逻辑结构设计:根据关系模型的转换原则,上面的E-R图可以转换为如下所示的关系模型:员工(员工工号,员工姓名,性别,所属部门,家庭地址,联系电话)客户(客户编号,客户姓名,工作单位,联系电话,地址)供应商(供应商编号,公司名称,公司地址,邮政编码,联系电话)物品(物品编号,物品名称,物品类型,参考价格,生产日期,有效期,规格,计量单位,员工工号)仓库(仓库编号,仓库名称,员工工号)入库信息(入库编号,物品编号,仓库编号,入库时间,入库数量)库存信息(库存编号,物品编号,仓库编号,库存数量)销售信息(销售编号,物品编号,客户编号,销售日期,销售数量,销售金额)供应(供应编号,供应商编号,物品编号)通过以上E-R图的设计和分析,可以为仓储物资管理系统创建9张数据表,分别如下表所示:表3-1 员工表(User)表3-6 入库信息表(Import)3.4系统实施3.4.1主要模块代码(一)、进货管理……事件响应{……getTextField();从文本框中获取输入信息,待进行供应商信息处理、物品信息处理、以及入库登记及入库处理try{con3=DriverManager.getConnection("jdbc:odbc:maen"," "," ");sql3=con3.createStatement();rs3=sql3.executeQuery("SELECT * FROM Import");//连接数据库,查询Import表的信息,留待进行比较和操作之用,具体如何运用,在下面有说明。
while(rs3.next()){String impID=rs3.getString(1);String wpID=rs3.getString(2);String depotID=rs3.getString(3);if(impID.equals(ImpID)&&wpID.equals(WpID)&&depotID.equals(DepotID)){//查看入库信息中是否存在同样的记录c++;}}if(c==0)//如果入库信息表中不存在同样的记录,则进行登记{Recode1="("+"'"+ImpID+"'"+","+"'"+WpID+"'"+","+"'"+DepotID+"'"+","+"'"+Import_time+"'"+","+Import_num+")";insertStr1="INSERT INTO Import V ALUES"+Recode1;sql3.executeUpdate(insertStr1);jTextArea1.setText("");jTextArea1.append("登记成功!"+"\n");}if(c!=0)//如果入库信息中存在该种记录则返回信息,提醒用户问题所在{jTextArea1.setText("");jTextArea1.append("主键重复,请检查!"+"\n");}con3.close();}catch(SQLException es){System.out.println(es);}注:上面的代码实现的是入库信息登记,首先要到Import表中查询是否存在相同的登记,如果有相同的信息,系统无法实现登记功能。