资源描述
长治学院课程设计报告课程名称:数据库原理课程设计设计题目进销存管理系统系别:计算机系专业:计算机科学与技术组别:第一组学生姓名:韩伟伟 学号:08407106起止日期:2011年6月7日 2011年6月22日指导教师:马桂芳目录 5错误!未定义书签。 6 6 6 8 13 13 13系统规划二、总体设计 2.1系统功能简述 5三、数据库原理 53.1 系统原理概述 53.1.1 ER 图 3.1.2 系统原理概述 3.1.3 数据流图 3.2 逻辑结构设计3.2.1 基本表信息 3.2.2 存储过程触发器视图设计四、模块划分(系统管理模块实现) .4.1 系统登录界面及代码 4.2 系统管理模块界面及代码五、系统的优点及不足之处 14六、总结和致谢 15七、参考文献 15进销存管理系统系统背景说明待开发的软件系统的名称:进销存管理系统 软件项目的用途:用于数据库课程设计及商业用途 软件项目的范围:系统涉及企业的库存,销售与进货提供了管理 功能,为库存,销售,进货等管理数据提供了分析功能小组成员成员:韩伟伟,令狐岩,李江民,杨捷指导老师:马桂芳 随着技术发展,电脑操作及管理日趋简化,电脑知识日趋普及,同时市场经 济快速多变,竞争激烈,因此企业采用电脑管理进货、库存、销售等诸多环节也 已成为趋势及必然。一、系统规划1.1 可行性分析经济上可行性分析 现在,计算机的价格已经十分低廉,性能却有了长足的进步。而本系统的开 发,为企业的工作效率带来了一个质的飞跃,为此主要表现有以下几个方面:第一,本系统的运行可以代替人工进行许多繁杂的劳动; 第二,本系统的运行可以节省许多资源; 第三,本系统的运行可以大大的提高企业的工作效率; 第四,本系统可以使敏感文档更加安全,等等。本产品的开发所需的设备在现有条件下,只需要少量的投入资金就可以实 现。因此在经济上是可行的。技术上可行性分析a) 软件可行性PowerBuilder 具有丰富的数据库功能,可以直接建立和编辑数据库,使 用结构化查询语言直接访问 SQL Sever 上的数据库,并提供简单的面向对象 的库操作命令、多用户数据库的加锁机制和网络数据库的编程技术。SQL Sever2000 是由微软公司推出的,能提供超大型系统所需的数据库 服务,并对数据库提供全面的保护,具有防止问题发生的安全措施,他是一 个采用 SQL 语言的关系型数据库管理系统。作为客户机/服务器的后端数据 库,他是所有数据的汇总和管理中心。b) 硬件可行性CPU :奔腾三代以上。OS (操作系统):Windows2000/windows98 以上。内存:64MB以上。硬盘: 30G 以上。本系统的开发利用 Microsoft SQL Server2000 作为本系统的数据库, 它是一个支持多用户的新型数据库,适用于大中规模的数据量需求。使用 PowerBuilder 作为系统开发的开发环境,此开发工具开发数据库 管理系统,采用面向对象的方式,方便、简捷、功能强大。管理上可行性分析课设指导老师给与了精心的讲解和大力的支持。 综上所述,系统在技术上、经济上、管理上都是可行的。二、总体设计2.1系统功能简述根据生活经验,我们开发该系统主要是为了实现:方便的查询信息,简 单准确的进行插入和删除等操作。所以在该系统中,我们主要实现了它的以 上几个功能:查询功能是在查询客户消费、购物情况等信息,是提供给管理 者参考的;插入、删除和保存功能是在客户信息表和购物信息表以及库存信 息表中得到实现。三、数据库原理3.1 系统原理概述管理信息系统的开发是一个复杂的系统工程,它涉及到计算机的处理技术、 系统理论、组织结构、管理功能、管理知识等各方面的问题,每一种开发方法都 要遵循相应的开发策略。数据库由DBMS (数据库管理系统)处理,DBMS则由专 业开发人员和用户通过应用程序直接或间接的使用。数据库管理系统是指数据库 系统中管理数据的软件系统。它是数据库系统的核心组成部分。对数据库的一切 操作,包括定义,更新及各种控制,都是通过它实现的。它总是基于某种数据模 型,可以把DBMS看成是某种数据模型在计算机系统上的具体实现。根据数据模 型的不同, DBMS 可以分成层次型、关系型、面向对象型等。3.1.1 ER 图编号更新商品调用单价名称 数量盘点清单仓库3.1.2 系统原理概述管理信息系统的开发是一个复杂的系统工程,它涉及到计算机的处理技术 系统理论、组织结构、管理功能、管理知识等各方面的问题,每一种开发方法都 要遵循相应的开发策略。数据库由DBMS (数据库管理系统)处理,DBMS则由专 业开发人员和用户通过应用程序直接或间接的使用。数据库管理系统是指数据库 系统中管理数据的软件系统。它是数据库系统的核心组成部分。对数据库的一切 操作,包括定义,更新及各种控制,都是通过它实现的。它总是基于某种数据模 型,可以把DBMS看成是某种数据模型在计算机系统上的具体实现。根据数据模 型的不同, DBMS 可以分成层次型、关系型、面向对象型等。3.1.3 数据流图应收帐幵票商品帐收款财务帐库存客户销售 员销售查询销售报表库存报表库存盘点3.2.1 基本表信息表一 商品信息表字段名数据类型长度是否允许空说明商品编号varchar10否主键,惟一标识商品记录商品名称varchar50是单价varchar50是月产量varchar50是供应商名称varchar50是备注信息text16是表二 供应商信息表字段名数据类型长度是否允许空说明供应商编号varchar10否主键,惟一标识供应商记录供应商名称varchar50是供应商单位全称地址varchar50是邮政编码varchar10是联系电话varcgar20是企业网址varchar50是联系人varchar50是联系人电话varcgar20是开户银行varchar50是银行账号varchar13是备注信息text16是表三 客户信息表字段名数据类型长度是否允许空说明客户编号varchar10否主键,惟一标识各户记录客户名称varchar50是客户单位全称地址varchar50是邮政编码varchar6是联系电话varchar20是企业网址varcgar30是联系人varchar50是联系人电话varcgar20是开户银行varchar50是银行账号varchar20是备注信息text16是表四 商品进货信息表字段名数据类型长度是否允许空说明入库序号decimal9否主键,惟一标识商品入库记录商品编号varchar10否外键,对应商品信息表中商品编号商品名称varchar50是供应商编号varchar10否外键,对应供应商信息表中供应商编号供应商名称varchar50是规格varchar30是数量varchar10是单价varchar50是总金额varchar50是日期datetime8是经手人varchar20是备注信息text16是修改人varchar20是修改日期datetime8是表五 商品库存信息表字段名数据类型长度是否允许空说明库存序号decimal9否主键,惟一标识商品库存记录库存编号varchar30是库存名称varchar50是商品编号varchar10否外键,对应商品信息表中商品编号规格varchar30是数量varchar10是单价varchar50是总金额varchar50是日期datetime8是备注信息text16是表六 商品销售信息表字段名数据类型长度是否允许空说明出库序号decimal9否主键,惟一标识商品入库记录出库编号varchar10是商品编号varchar10否外键,对应商品信息表中商品编号商品名称varchar50是规格varchar30是数量varchar10是单价varchar50是总金额varchar50是出库日期datetime8是提货人varchar50是经手人varchar20是备注信息text16是修改人varchar20是修改日期datetime8是表七 库存明细表字段名数据类型长度是否允许空说明盘点编号varchar10否主键,惟一标识商品盘点记录商品编号varchar10否外键,对应商品信息表中商品编号商品名称varchar50是规格varchar30是单价varchar50是账面库存varchar50是实盘库存varchar50是盘点人员varchar50是盘点日期datetime8是备注信息text16是表八 用户信息表字段名数据类型长度是否允许空说明用户名varchar10否主键用户密码varchar10否用户名称varchar50是备注信息text16是3.2.2 存储过程触发器视图设计-1 创建库存视图 if exists (select 1 from sysobjects where name = view_storage_product)drop view view_storage_product go create view view_storage_product asselect a.*,b.StorageAddress,b.StorageNumber from ProductInfo a inner join StorageInfo b on a.ProductID = b.ProductIDgo-查看库存视图select * from view_storage_product-2 创建订单信息视图if exists (select * from sysobjects where name = view_CustomerInfo_OrderInfo_ProductInfo) drop view view_CustomerInfo_OrderInfo_ProductInfogo create view view_CustomerInfo_OrderInfo_ProductInfo asselect CustomerName,ProductName,OrderTime,OrderNumber, RequireDate,OrderEmployee,IsConsignment from CustomerInfo a inner join OrderInfo b on a.CustomerID = b.CustomerID inner join ProductInfo c on b.ProductID = c.ProductIDgoselect * from view_CustomerInfo_OrderInfo_ProductInfo-3.创建添加客户信息的存储过程if exists (select 1 from sysobjects where name = proc_InsertCustomerInfo) drop proc proc_InsertCustomerInfogocreate procedure proc_InsertCustomerInfoCustomerName nvarchar(20),CustomerAddress nvarchar(50),CustomerPhone nvarchar(11), Taxno nvarchar(10),Repute nvarchar(10),Country nvarchar(lO)=中国,Province nvarchar(lO) as begininsert into CustomerInfo values(CustomerName,CustomerAddress,CustomerPhone,Taxno,Repute,Country, Province) end go-调用存储过程exec proc_InsertCustomerInfo 胡雷松,湖北神农架,622512,622512,优秀default,河南 select * from CustomerInfo-4.创建添加产品信息存储过程(需验证产品的价格必须大于等于0)if exists (select 1 from sysobjects where name = proc_InsertProductInfo)drop procedure proc_InsertProductInfo go create proc proc_InsertProductInfoComponyID int,ProductName nvarchar(20),ProductType nvarchar(20),NumberPerMonth int ,Price moneyasbeginif(Price=0)begininsert into ProductInfo values(ComponyID,ProductName,ProductType,NumberPerMonth,Price) endelsebeginprint 产品价格必须大于0!endendgo-调用存储过程exec proc_InsertProductInfo NULL,C#入门经典,书籍,3000,65select * from ProductInfo-5.创建进货时库存信息变化的触发器-如果没有该产品的信息,则将数据添加到库存信息表中-如果仓库中已经存在该产品,则增加该产品的库存数量if exists (select 1 from sysobjects where name = trg_StockInfo_Insert)drop trigger trg_StockInfo_Insertgocreate trigger trg_StockInfo_Inserton StockInfofor insertasdeclare ProductID int,StockNumber intselect ProductID = ProductID from insertedselect StockNumber = StockNumber from inserted where ProductID = ProductIDif (ProductID not in (select ProductID from StorageInfo )begininsert into Storageinfo values(ProductID,东北仓库,StockNumber)endelsebeginupdate StorageInfo set StorageNumber = StorageNumber + StockNumber whereProductID = ProductIDendgo-测试触发器insert into Stockinfo values(4,350,NULL,NULL,NULL,getdate(),张三)select * from StorageInfoselect * from StockInfo-6.创建添加订单信息存储过程-订单时间默认为系统单前时间,验证订单数量必须大于0验证产品需要时间必须大 于系统当前时间1月以上,根据库存信息与产品生产能力判断,是否能在产品需要时间之 前完成该产品的生产,验证订单业务员长度必须大于2,默认是否发货为“否”if exists (select * from sysobjects where name = proc_InsertOrderInfo)drop proc proc_InsertOrderInfogocreate proc proc_InsertOrderInfoProductID int,OrderNumber int,OrderEmployee nvarchar(20),CustomerID int,Price money,Ordersum money,RequireDate datetime,IsConsignment nvarchar(2)asbegindeclare OrderTime char(20)select ProductID = ProductID from insertedselect OrderNumber = OrderNumber from insertedselect OrderEmployee = OrderEmployee from insertedselect CustomerID= CustomerID from insertedselect Price = Price from insertedselect Ordersum = Ordersum from insertedset OrderTime = convert(char(20),getdate(),120)set RequireDate = convert(char(20),dateadd(month,1,getdate(),120) if(OrderNumber0 and len(OrderEmployee)2 anddatediff(dd,OrderTime,dateadd(month,1,getdate()=0 )beginif(OrderNumber 0 then commit;else messagebox(,无法保存! ”) rollback;end if五、系统的优点及不足之处系统的优点:实现了比较完善的系统管理,另外库存管理中若有商品价钱 设置的不合理,可以直接在库存窗口中进行修改,方便用户使用。还有就是销售 进货管理模块,也分别实现了他们的基本功能,同时还为他们设置了订单及进货 单的查询和报表打印功能。系统的不足:系统中只有唯一类型的用户管理员,不能保证系统的绝 对安全,应该对不同身份的用户设置不同的访问权限,来增强系统的安全性。应该改善的地方:系统的利润统计模块设计的不够详细,不能很好的反应 进销存系统的盈亏,应该完善一下利润统计模块,使其更方便用户使用。 六、总结和致谢在数据库专业课的学习中,我们接触了高移植性的 SQL Server 语言,在这 个星期里,我们专业的学生在马老师的带领下进行了数据库课程设计实践学习。 在这之前,我们已经学习过一个C+的课程,对数据库基础这门课程也学习了一 个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多 东西还是很陌生,更多的在运用起来的时候还是感到很棘手,而且 PowerBuilder 也是首次接触。由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是 给我们简单的介绍了几个比较重要的实际操作,包括了 PowerBuilder控件的使 用,简单的SQL语句等。通过此次课程设计,对于数据库的设计方法我有了基本 的了解,对于PowerBuilder的编程环境也有所了解。在编写程序的过程中,我 也发现了自己的很多不足,比如平日程序编写量少,使得漏洞百出,错误很多。 在以后的学习过程中要注意这些问题,多向他人学习,取长补短。总之,这次数据库课程设计对我的帮助很大,也使得将来在毕业设计中,对 数据的处理,提供了一个优秀的方案。七、参考文献1. 数据库系统及应用 高等教育出版社第二版 崔巍编著2. PowerBuilder实用教程电子工业大学出版社郑阿奇殷红先张为民编著指导教师评语:指导教师签名:年月日成 绩 评 定项目权重成绩1、设计过程中出勤、学习态度等方面0.12、设计技术水平0.43、编程风格0.24、设计报告书写及图纸规范程度0.3总成绩
展开阅读全文