数据库原理 课程设计方案设计 设计题目:商品进、销、存管理系统 专 业 计算机科学与技术 班 级 班 学 生 指导老师 2011 年 二 学期 商品进、销、存系 统 背景说明 待开发的软件系统的名称:商品进、销、存管理系统 软件项目的用途:用于数据库课程设计及商业用途 软件项目的范围:系统涉及企业的库存,销售与进货提供了管理 功能,为库存,销售,进货等管理数据提供了分析功能 小组成员: 指导老师: 在信息技术的催化之下,世界经济的变革已经进入了加速状态。世界经济一体化,企业经营全球化,以及高度竞争造成的高度个性化与迅速改变的客户需求,令企业与顾客、企业与供方的关系变得更加密切和复杂。强化管理,规范业务流程,提高透明度,加快商品资金周转,以及为流通领域信息管理全面网络化打下基础,是商品销售公司乃至众多商业企业梦寐以求的愿望。 随着技术发展,电脑操作及管理日趋简化,电脑知识日趋普及,同时市场经济快速多变,竞争激烈,因此企业采用电脑管理进货、库存、销售等诸多环节也已成为趋势及必然。 1.1 划分子系统 各个模块的划分 1.2 制定信息系统开发方案及日程安排 1.2.1 任务分配 陈 光:商品入库(输入) 李钦铭:信息查询(查询) 冶福磊:信息修改(修改) 钟浩杰:信息统计(统计) 曾 炫:商品销售(输出) 1.2.2 计划 需求分析阶段:用时一天。需求分析,业务逻辑,模块化分,详细分工 编码阶段:用时两天。根据需求分析进行编码 整合:待续 2.1系统流程图 业务流程图 2.2 数据字典 重要数据及其简要描述如下所示: 1) 数据元素: 表3.1 商品编号 名称:商品编号 总编号:1-001 说明:唯一标识商品 编号:001 数据值:(连续/离散)离散 有关编码说明: 类型:(字符/数字)数字 长度:4 有关数据结构:商品卡片 表3.2 员工编号 名称:员工编号 总编号:1-002 说明:唯一标识员工 编号:002 数据值:(连续/离散)连续 有关编码说明: 类型:(字符/数字)数字 长度:7 有关数据结构:员工卡片 表3.3 销售编号 名称:销售编号 总编号:1-003 说明:唯一标识每次销售登记 编号:003 数据值:(连续/离散)连续 有关编码说明: 类型:(字符/数字)数字 长度:17 有关数据结构:销售登记卡 表3.4 库存盘点票号 名称:库存盘点票号 总编号:1-004 说明:记录一次库存盘点并唯一标识 编号:004 数据值:(连续/离散)离散 有关编码说明: 类型:(字符/数字)数字 长度:17 有关数据结构:库存盘点登记卡 2) 数据结构: 表3.6 商品卡片 名称:商品登记卡 总编号:2-001 说明:商品信息卡片 编号:001 结构: 有关数据流,数据存储: 编号 商品登记表 名称 商品创建时间 销售单价 [商品备注] 3) 数据流: 表3.7 操作信息 名称:操作信息 总编号:3-001 说明:业务员对客户提出的请求向计算机进行操作 编号:001 数据流来源:业务员 数据流去向: 包括的数据结构: 商品登记 名称 销售登记 金额 日期 表3.9 管理信息 名称:管理信息 总编号:3-002 说明:管理员对库存,财务,基本信息进行管理操作 编号:002 数据流来源:管理员 数据流去向: 包括的数据结构: 库存登记 数量 财务 收入 支出 基本信息登记 4) 数据存储: 表3.10 进货一览表 名称:进货文件 总编号:4-01 说明:一段时间内所有进货信息的存储 编号:D1 结构: 入库时间 入库编号 入库数量 商品编号 表3.11 销售一览表 名称:销售文件 总编号:4-02 说明:一段时间内所有销售信息的存储 编号:D2 结构: 销售编号 有关数据流: 销售时间 商品编号 销售数量 销售单价 销售备注 表3.12 库存一览表 名称:库存文件 总编号:4-03 说明:一段时间内所有库存信息的存储 编号:D3 结构: 更新日期 有关数据流: 库存编号 库存数量 商品编号 5) 处理过程: 表3.12 销售信息单 名称:填写销售单 总编号:5-001 说明:所销售商品的详细信息 编号:P2 输入:D2→P2 输出:P2→(销售单) 处理:查(销售文件)打印销售单,对不完整的地方进行备注信息说明 表3.13 进货信息单 名称:填写进货单 总编号:5-002 说明:所进商品的详细信息 编号:P3 输入:D1→P3 输出:P3→(进货单) 处理:查D1(进货文件)打印进货单,对不完整的地方进行备注信息说明 表.3.14 库存信息单 名称:填写库存单 总编号:5-003 说明:商品存储的详细信息 编号:P4 输入:D3→P4 输出:P4→(反馈信息单) P4→(库存信息单) 处理:查D3(库存文件)打印库存单,对反馈是否存在信息,对 管理员显示库存的详细信息,便于管理。 ⒊ 系统设计 3.1 代码设计 编码设计使数据库系统开发的前提条件,使系统不可缺少的重要内容。编码是指与原来名称对应的符号和记号。它是进行信息交换、处理、传输和实现信息共享的关键。本系统内部信息编码采用顺序码和区间码混合使用: 顺序码是用一串连续的数字来代表系统中的客观实体或实体属性。其优点是简单,容易处理,但是不能反映编码对象的特征。所以用区间码来弥补这个缺点。区间码是按编码的特点把代码分为若干个区段,每一个区段表示编码对象的一个类别。 合理的编码结构是信息处理系统是否具有生命力的一个重要因素,在本系统的代码设计时,遵循以下几个原则: a) 惟一性。每个代码只能惟一地代表系统中的 一个实体或实体属性。 b) 标准性。代码设计时采用国际或国家的标准代码。 c) 合理性。代码设计应该与编码对象的分类体系相适应,使代码对编码对象的分类有标识作用。 d) 可扩充性。编码时留有足够的备用代码。 e) 简单性。方便输入,提高处理效率。 f) 适用性。便于识别和记忆,使用户容易了解和掌握。 编码设计如图 : S P 0 0 商品名称编码 顺序码编码 3.2 输出设计 输出设计的主要目的是满足用户和管理者对数据和信息的要求。本系统将采用表单和查询显示输出方式,使用者可以通过多种方式获取自己所需信息。 输出设计主要考虑了以下几点: a) 方便使用者 b) 考虑系统的硬件性能 c) 尽量利用原系统的输出格式 d) 输出表格要考虑系统的发 例如: 表3.1 输出销售表 编号: 总金额: 商品编号: 商品名称 数量: 备注信息: 商品单价: 3.3 输入设计 在计算机信息传统中,输入数据的正确性决定着整个系统质量的好坏。本商品进销存管理系统主要采取以下输入方法: 1.键盘输入法:录入人员直接通过键盘输入法将所需数据直接手工输入。 由于该系统所涉及的数据量不是很大,所已本系统将采取人工校对的方式进行数据核对。即输入数据后,屏幕将录入的数据显示出来,由人工进行校对。 3.4 数据库设计 概念结构设计过程 本次课设开发商品进、销、存管理系统,经过可行性分析、详细调查以及多次讨论,确定了该系统由商品入库、信息查询、信息修改、信息统计、商品销售五个子系统组成。 本过程结构设计过程采用自底向上的设计方法,即首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构. 下面给出商品销售子系统的分析及分E-R图的设计及对其进行的各项调整。 商品入库子系统 包含子功能: 此模块完成库存产品的输入包括库房中已有商品库存的增加以及新产品的输入信息和数量。如果库房中已存在此商品,则不需添加此商品的商品信息,直接对商品数量做成一定的更新即可。如果此商品为库存中已存在的商品,则应当添加对应的商品信息,包括名称,单价等。再将新商品的数量输入数据库。 根据需求分析给出的数据流图,参照数据字典中的详细描述,给出 商品入库子系统的E-R图: 名称 商品 单价 创建时间 备注 编号 库存 信息查询子系统 包含子功能:商品查询,销售查询,入库查询 A. 商品信息查询。 {商品编号,商品名称,类型,备注,库存量} B. 销售信息查询。 {销售编号,品种数,总金额,客户名称,销售日期,流水号,商品编号,销售单价,销售数量。} C. 入库信息查询。 {入库编号,品种数量,总计金额,入库时间,商品编号,进货单价,数量} 子系统功能: 用户可通过表中所有的属性根据需要选择自己的属性集合来对三张表的信息进行查询。处于商品信息查询状态时有五种基本属性:商品编号,商品名称,类型,备注,库存量。销售信息查询状态时有九个基本属性:销售编号,品种数,总金额,客户名称,销售日期,流水号,商品编号,销售单价,销售数量。处于入库信息查询状态时有七个基本属性:入库编号,品种数量,总计金额,入库时间,商品编号,进货单价,数量。 E-R图: 管理员 N 查询 3 1 1 1 商品信息 销售信息 入库信息 1 1 1 入库信息表 销售信息表 商品信息表 实体属性定义: 管理员(因系统简单,不储存管理员信息,因此不定义此实体的属性) 商品信息(商品编号、商品名称、商品单价、商品创建时间、商品备注) 销售单(销售编号、销售时间、商品编号、销售数量、销售备注) 库存单(商品编号、库存数量) 信息修改子系统 子系统的功能: A.通过商品编号查找出商品的所有信息 B.通过库存编号查找出库存的所有信息 C.通过销售编号查找出销售的所有信息 D.根据查找出来的信息,可以对这些信息进行修改 根据需求分析给出的数据流图,参照数据字典中的详细描述,给出 商品修改子系统的E-R图: 实体属性定义: 管理员(因系统简单,不储存管理员信息,因此不定义此实体的属性) 商品(商品编号、商品名称、商品单价、商品创建时间、商品备注) 销售单(销售编号、销售时间、商品编号、销售数量、销售备注) 库存单(商品编号、库存数量) 信息统计子系统 子系统的功能: A.通过商品编号/信息查找出商品的所有信息 B.通过商品名称查找出商品的所有信息 C.对查询所得的数据分类统计,并将统计的结果以视图(View)的形式展现到用户窗口中 根据需求分析给出的数据流图,参照数据字典中的详细描述,给出 信息统计子系统的E-R图: N M M N M N 统计结果视图 进销存三级数据表 用户 查询 组成 查看 实体属性定义: 用户(用户名) 进销存三级数据表: 进货表(进货编号,商品编号,进货时间,进货数量,进货备注) 存货单(商品编号、商品名称、商品单价、商品创建时间、商品备注) 销售单 (销售编号、销售时间、商品编号、销售数量、销售备注) 统计结果视图(需统计的信息,统计后的信息) 商品销售子系统 子系统的功能: A.通过商品编号查找出商品的所有信息 B.通过商品名称查找出商品的所有信息 C.输入销售数量及备注(可为空)完成销售交易 D.可以随时查看今日销售总额 根据需求分析给出的数据流图,参照数据字典中的详细描述,给出 顾 客 购 买 商 品 销售单 对 应 库存单 对 应 商品销售子系统的E-R图: 1 m 1 1 n 1 对E-R图调整的准则: 现实世界中的事物能作为属性对待的尽量作为属性对待; 属性和实体的划分:属性中不具有需要描述的信息,即属性是不可分的数据项,不再包含其他信息。 具体调整如下: 1.本来顾客还应对应员工关系,但这里为了简便,员工也省略了。 2.库存单可以作为商品的一个属性来设置,但这里为了强调商品的库存情况,需要库存进行进一步的描述,因此这里作为一个实体; 逻辑结构设计 用户的需求体现在各种信息的提供、保存,更新和查询,这就要求数据库结构能充分满足各种信息的输入和输出。收集基本数据,数据结构以及数据处理的流程,组成一份详细的数据字典,为后面的具体设计打下基础。 设计如下数据项和数据结构: l 商品信息,包括的数据项有:商品编号,商品名称,商品单价,商品创建时间,商品备注等等。 l 入库单信息,包括的数据项有:入库编号,入库时间,入库数量,商品品编号,入库备注等。 l 销售单信息,包括的数据项有:销售时间,销售编号,销售数量,商品编号,销售单价,销售备注等。 l 库存信息,包括的数据项有:编号,商品编号,库存数量等。 物理结构设计 有了上面的数据结构,数据项和数据流程就可以进行如下的数据库设计,要将上面的数据库概念结构转化为SQL Server 2000数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。 商品资料 tb_product_info 名称 列名 数据类型 长度 允许空 其他 相关表 商品编号 proID int 主键 自增 商品名称 proName Varchar 30 商品单价 proPrice Varchar 50 商品创建时间 proCreateTime datatime 商品备注 proRemark Varchar 250 允许 入库单 tb_ruku_info 名称 列名 数据类型 长度 允许空 其他 相关表 入库编号 rukuID int 主键 自增 入库时间 rukuDateTime dataetime 入库数量 rukuAcount int 商品编号 proID int 参照商品资料tb_product_info 外键 入库备注 rukuRemark Varchar 250 允许 库存单 tb_kucun_info 名称 列名 数据类型 长度 允许空 其他 相关表 商品编号 proID int 参照商品资料tb_product_info 外键 库存数量 kucunAcount int 销售单 tb_sell_info 名称 列名 数据类型 长度 允许空 其他 相关表 销售编号 sellID int 主键 自增 销售时间 sellDateTime dataetime 商品编号 proID int 参照商品资料tb_product_info 外键 销售数量 sellAcount int 销售单价 proSellPrice Varchar 50 销售备注 sellRemark Varchar 250 允许 4. 系统测试 编程完成后,开始系统测试,不断地重复测试系统功能,使用正确数据录入,一遍遍测试系统的功能是否完成,是否能够达到需求,第二项就是出错处理,根据系统需求给每个部分可能出错的情况进行了出错处理。 6. 心得体会和总结 6.1 个人心得体会 通过这次课程设计,我不仅巩固了数据库课程中所学的各种关于Sql的知识和技巧,更重要的是我学会和实践了如何使用所学知识设计可行的,符合要求的没有冗余的数据库表。这个是课程学习中比较缺乏的经验。此外还提高了自己使用sqlserver的能力,和用面向对象编程语言C#的编程能力。 从数据库的设计和实施中我巩固了,如何创建数据库和表,如何创建视图,如何设置主键和外键,如何设置建的自增。另外,由于使用NAT网络进行数据库的连接,我还特别学到了如何配置网络数据库,如何查看数据库的端口监听状态。 从c#的编程实践中我学会了如何使用面向对象的sqlclient类进行数据库的连接和调试。重点明白了c#与数据库间建立连接后沟通和存取数据的过程和方法。明白了Dataset,和DataAdapter以及Sqlserver之间的关系和作用机制。DataAdapter是数据库与程序间沟通的桥梁。使用DataAdapter的Fill方法填写DataSet供应用程序去调用。用DataAdapter的command子类定义sql命令并执行。 这次课程设计做不同以往的地方就是在课设中使用了系统的,工程化的方法和技术。借鉴了很过原来的成功项目的实践经验。今后的实践和工作都应始终遵循工程化原则,以保证任务的准确和高效完成。 在此,我们的项目将告一段落,虽然对我们是皆大欢喜,然而我们并不会因此感到骄傲、自满、因为我们需要做的还很多。让我认识最深的就是团队合作精神,这种精神在项目以及职业生涯中是不可缺少的,最后我们每一个职业人必须拥有的一种能力。当然,我们从中也了解到编程的乐趣以及程序编写的多样性和变通性。然而,在整个项目的开发中也暴露出了我们在知识掌握上存在的误区,同时让我们也深刻明白了“会做与做了”的区别。所以总的来说,通过这个项目,除了技术和知识层面上的收获,值得我们去学习、深思的却更多,因为我们依然在成长! 通过这次数据库系统设计,我基本了解了整个系统的大致模型,数据库与程序之间的链接,但是在输出方面,还有一些类型不一致导致显示出错或修改出错。所以只能将那些特殊类型的数据都改为VARCHAR类型的,这样数据失去了它的特性。这对以后的发展是不利的,所以在以后的发展道路上我们要解决这些问题。如果技术上允许,以后可以尝试用网站的形式来做一个这样的系统。可能还有一大堆新知识要学习,但是我们要相信前途是光明的,我们一定要不惧困难,语言不是问题,思想才是最主要的,以后对系统的分析要更彻底,更详细,这样就可以保证在实现阶段少一些问题。 在数据库专业课的学习中,我们接触了高移植性的SQL Server语言,在这个星期里,我们专业的学生在姚老师的带领下进行了数据库课程设计实践学习。在这之前,我们已经学习过一个C++的课程,对数据库基础这门课程也学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,而且C#也是首次接触。 由于时间的关系,这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作,包括了C#插件的使用,简单的SQL语句,指针引用等。并且,给了一个《酒店管理系统的范例》,使得第一次做的我们有一句可循。 通过此次课程设计,对于数据库的设计方法我有了基本的了解,对于C#的编程环境也有所了解。在编写程序的过程中,我也发现了自己的很多不足,比如平日程序编写量少,使得漏洞百出,错误很多。另外,对于this等指针的使用还不熟悉,仅仅理解,用到时却手忙脚乱。在以后的学习过程中要注意这些问题,多向他人学习,取长补短。 总之,这次数据库课程设计对我的帮助很大,也使得将来在毕业设计中,对数据的处理,提供了一个优秀的方案。 通过本次数据库课程设计,使我真正的了解了软件工程编程思想及数据库应用的开发技术,也是我第一次尝试开发项目。虽然不是很全面,但也是一次尝试,一次团队合作。 通过本次项目开发,使我更系统的掌握了数据库的整个设计过程:概念结构设计、逻辑结构设计、物理结构设计,更全面的理解了各个设计的衔接与分工及其联系和转化。本次课设更是我第一次接触C#,第一次使用C#,通过半天的自学,基本上能够使用上一些功能来完成所涉及的功能,由此我又新增了更多的知识,在编程过程中曾遇到过很多问题,比如最直接的第一项就是数据库连接,C#提供了很多连接方式,更多的学习才能获得更多,各种不同方式的采用才能让系统变得更完善,其在编程过程中遇到的类型转换问题,让我受益匪浅,textbox是string类型的,在其获得数据与向其发送数据时必须强制类型转换,更学会了隐式类型转换和显式类型转换。总之此次课设使我学到很多收获很多,更重要的是学会了团队合作项目开发。 课设总结: l 比较辛苦,在项目期间都是竭尽全力。 l 比较充实,项目期间大家都过的比较忙碌比较充实。 l 问题不断,虽然问题不少,不过最后还是被解决掉了。 l 虽不完美,由于是第一次做项目,大家没有经验,不过自己给予自己肯定! 本文档由香当网(https://www.xiangdang.net)用户上传