
《中小企业仓库管理系统——总体设计与编码》由会员分享,可在线阅读,更多相关《中小企业仓库管理系统——总体设计与编码(50页珍藏版)》请在文档大全上搜索。
1、 本科毕业论文(设计) 题 目: 中小企业仓库管理系统总体设计与编码 学 院: 专业班级: 学 号: 学生姓名: 指导教师姓名: 指导教师职称: 年 月 日摘要 通过信息化手段进行仓库管理是企业信息化的一个重要组成部分。如何实现一个好的管理信息系统是目前重点研究的对象。在中小企业管理过程中,库存管理一直通过纸笔表格完成,仓库管理系统具有很大的应用前景。而传统的系统架构往往在实际应用中不能恰好满足企业需求,与此同时,敏捷开发日益受到业界的重视。本文将在对中小企业仓库管理系统进行需求分析的基础上,重点阐述系统模块分解、原型设计和多层架构设计这三个在总体设计时需要集中考虑的方面。并积极实践,设计并实
2、现了更利于快速开发的单一功能分层架构。关键字:中小企业仓库管理系统 ,单一功能分层架构AbstractWarehouse management by using information techonologies has been an important part of enterprise informationization. How to realize a well-worked management information system has been the key object of study at present. In the process of Small and
3、Medium-sized Enterprise management, Warehouse management has been being finished by filling tables with pens and papers. There is a good application prospect in the development of Warehouse management information system. Regularly, Traditional architectures don't fit the requirement of products
4、in the practical application. At the same time, agile development has been under the attention of the industry increasingly.On the basis of the requirement analysis of the Warehouse Management Information System for Small and Medium-sized Enterprise, this text mainly covers three parts, including sy
5、stem module decomposition, prototype design and multi-layer architecture design. After active practice, We have designed the multi-layer architecture with single function to meet the actual demand, which has an advantage in agile development.Keywords:Warehouse Management Information System for Small
6、 and Medium-sized Enterprise, the multi-layer architecture with single function目录1引言11.1中小企业仓库管理系统的研究意义11.2 C#11.3 Visual Studio 2010和SQL Server 200522 系统分析32.1 可行性分析32.2 需求分析33 模块分解与原型设计83.1 模块化与快速原型83.2 建账管理及其原型设计103.3 保管明细账管理及其原型设计113.4 添加入库信息及其原型设计113.5 管理入库信息及其原型设计133.6 全部材料入库明细表及其原型设计143.7 材料入
7、库分类汇总表及其原型设计153.8 供货单位供货明细表及其原型设计163.9 添加出库信息及其原型设计173.10 管理出库信息及其原型设计193.11 全部材料出库明细表及其原型设计203.12 材料出库分类汇总表及其原型设计213.13 产品材料耗用汇总表及其原型设计224 架构设计244.1 单一功能分层架构的特点244.2 单一功能分层架构的优缺点254.3 单一功能分层架构在本项目中的应用265 数据库设计285.1实体-联系图285.2关系数据模型286 编码风格297 结束语31参考文献3241引言1.1中小企业仓库管理系统的研究意义一直以来,在中小企业的仓库管理中,出入库登记一
8、直靠纸笔填表格的方式完成。缺点很多:首先,人力成本较高,需要雇用更多的人力进行仓库管理;其次,手工录入容易出现差错,而且纸质账簿保存时被损坏的风险较高;更值得一提的缺点是,如果想得到一份详细的库存汇总信息,需要统计大量数据,花费大量时间。长期以来,这样的问题阻碍了很多中小生产企业的发展,在计算机信息化高速发展的今天,数据的存储、运算和汇总都可以通过程序自动完成,早已不是那个看着账本敲算盘的旧世纪,也已不是指着表格按计算器的年代。现在的管理信息系统正在中小企业管理中发挥着越来越重要的作用,就仓库管理系统而言,中小企业只需要出入库管理员录入出入库信息,中小企业管理者就可以坐在办公室里,通过电脑屏幕
9、,查看关于库存的各种信息,规划企业发展。这极大地降低了中小企业管理的成本,减少了繁琐的流程,加快了工作效率,而且在一定程度上降低了员工的工作量。由于所有的数据均在系统内流动,只要数据由出入库管理员录入系统,每一步流动都可以记录,这也极大地减少了仓库管理的漏洞。而计算机强大的统计功能,可以在几秒内汇总一年、甚至几年的出入库数据,并可以将结果用图表的形式展示出来,通过一些统计模型,还可以预测未来的发展趋势,为中小企业管理者的决策带来了极大的便利。当前,云计算的迅速发展,使得数据存储可以放在云端,数据运算也可以分布到无数终端上。作为中小企业管理者,完全不必担心数据的丢失,只需要借助先进的技术,进行企
10、业的管理,制定战略决策。本文将在对中小企业仓库管理系统进行需求分析的基础上,重点阐述系统模块分解、原型设计和多层架构设计这三个在总体设计时需要集中考虑的方面。1.2 C#C# 是一种多范式编程语言(multi-paradigm programming language)。包含强类型(strong typing)、命令式(imperative)、声明式(declarative)、函数式(functional)、过程式(procedural)、泛型(generic)、面向对象(object-oriented)和面向组件(component-oriented)等编程范式。它是由微软公司基于.NET平
11、台开发并于2000年6月发布的面向通用语言架构(CLI)的新的编程语言。1C#是由C和C+衍生出来的面向对象的编程语言。它在继承C和C+强大功能的同时去掉了一些复杂特性。C#综合了VB简单的可视化操作和C+的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持而成为.NET开发的首选语言。2由于C+发展了C,Java舍掉C+中较为复杂的特性,并且在C+的基础上增加了更多适合工程开发的机制,而C#又在很大程度上借鉴了Java。所以,不管对于目前可以使用C、C+、Java三者中的哪一门语言的程序员,上手C#的难度都相对较低。因此,在限定工期较短并且团队成员只具备
12、初级开发能力的情况下,C#理应作为开发管理信息系统优先选择的编程语言。1.3 Visual Studio 2010和SQL Server 2005Visual Studio是微软公司推出的开发环境。是目前最流行的Windows平台应用程序开发环境。Visual Studio 2010版本于2010年4月12日上市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。Visual Studio 2010同时带来了 .NET Framework 4.0、Microsoft Visual Studio 2010 CTP( Community Technology Preview-CTP
13、),并且支持开发面向Windows 7的应用程序。除了Microsoft SQL Server,它还支持 IBM DB2和Oracle数据库。3Microsoft SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理。Microsoft SQL Server 2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,可以构建和管理用于业务的高可用和高性能的数据应用程序。4为了获得较新的开发体验,我们选择了Visual Studio 2010,而考虑到数据库平台仅仅用来存储数据,并且高版本的数据库平台较难被低版本的数据库平台兼
14、容,并且团队开发环境使用的操作系统中,Windows XP和Windows7均有涉及,所以我们选择了对目前来说,版本相对较低并可以在Windows7上正常运行的Microsoft SQL Server 2005。2 系统分析2.1 可行性分析可行性分析的任务是确定系统在技术上能不能实现、做出来的东西用户能不能用以及是否需要太多的资金来实现这个系统。1. 技术可行性: 客户机可以运行Windows XP及以上版本的操作系统,有足够大的硬盘空间存储数据。2. 操作可行性: 可以为出入库管理员进行使用培训,界面十分简洁,提示信息丰富,易用性可以满足使用的要求。3. 经济可行性: 只需要为出入库管理员
15、配置一台电脑,并运行Windows XP及以上版本的操作系统即可。从技术可行性、操作可行性和经济可行性三个角度进行可行性分析,开发这个中小型的仓库管理系统完全可行。2.2 需求分析需求分析的任务是确定系统必须完成的工作,通过对需求文档的分析和建立原型,并不断和用户交流系统的设计方案,可以在一定程度上获得相对准确的用户需求。如果不进行需求分析,直接进行总体设计,我们无法知道到底该设计什么,或者我们设计的东西到底该什么样子。所以,需求分析在软件定义中占有很重要的地位。本系统作为一款中小企业仓库管理系统,主要完成材料出入库管理、账目管理、供货单位管理、产品耗材管理和一些数据汇总报表功能。主要完成以下
16、几个功能: 图2-1 入库单样表A) 添加入库信息1. 需要添加的信息包括:入库单编号、入库日期、供货单位、供货单号、制单人、入库材料类别、入库材料名称、入库材料规格、入库数目、入库金额。2. 可以修改和删除入库信息。B) 管理入库信息1. 可以根据入库单编号、入库日期、供货单位、供货单号中的任意条件组合查询入库单信息。2. 可以更改和删除入库单信息。图2-2 出库单样表C) 添加出库信息1. 需要添加的信息包括:出库单编号、出库日期、领用班组、生产计划号、产品名、经领人、批准人、制单人、出库材料类别、出库材料名称、出库材料规格、出库数目、出库金额。2. 可以更改和删除出库信息。D) 管理出库
17、信息1. 可以根据出库单编号、出库日期、领用班组、生产计划号、产品名中的任意条件组合查询出库单信息。2. 可以更改和删除出库单信息。图2-3 保管明细账样表E) 建账管理1. 从无到有地将库存的初始数据导入数据库,数据包括材料类别、材料名称、材料规格、材料数目、材料金额。F) 保管明细账管理1. 汇总在某一时间段内,某种特定规格的材料的出入库和结存情况,反馈的数据包括日期、入库单编号、入库数量、入库单价、入库金额、出库单编号、出库数量、出库单价、出库金额、结存数量、结存单价、结存金额。图2-4 供货单位供货明细表样表G) 供货单位供货汇总1. 汇总在某一时间段内,某一特定的供货单位的供货情况,
18、反馈的数据包括日期、材料类别、材料名称、材料规格、数目、单价、金额。图2-5 产品材料耗用汇总表样表H) 产品耗材汇总1. 汇总在某一时间段内,某一特定产品消耗材料的情况,反馈的数据包括材料编号、材料类别、材料名称、材料规格、数目、单价、金额。图2-6 全部材料入库明细表样表图2-7 材料入库分类汇总表样表I) 材料入库汇总1. 全部材料入库明细表,汇总在某一时间段内的全部材料入库情况,反馈的数据包括日期、材料类别、材料名称、材料规格、供货单位、数目、单价、金额。2. 材料入库分类汇总表,汇总在某一时间段内,某一特定类别的材料的入库情况,反馈的数据包括日期、材料名称、材料规格、供货单位、数目、
19、单价、金额。图2-8 全部材料出库明细表样表图2-9 材料出库分类汇总表样表J) 材料出库汇总1. 全部材料出库明细表,汇总在某一时间段内的全部材料出库情况,反馈的数据包括日期、生产计划号、产品名、材料类别、材料名称、材料规格、数目、单价、金额。2. 材料出库分类汇总表,汇总在具体某一天的材料出库与产品生产的对应情况,反馈的数据包括材料类别、产品名、对应的出库金额。3 模块分解与原型设计3.1 模块化与快速原型模块化是把系统划分成独立命名且独立访问的模块,每个模块完成一个特定的子功能,把这些模块集成起来,构成目标系统,完成指定的功能以满足用户的需求。模块化使得系统可以为人所管理,便于控制系统行
20、为。如果一个系统仅由一个模块组成,那么它将很难被人理解。所以我们要把复杂的问题分解成许多容易解决的小问题,各个击破,这样原来的问题也就容易解决了。然而,事实证明,过多的模块,划分过细,会极大增加系统的模块数目,导致过大的模块间通信开销,设计模块间接口所需要的工作量也将大量增加。所以,我们应在模块划分与系统功能之间建立联系,使得模块与功能一一对应,或者在可控范围内多个模块与一个功能对应。采用模块化开发方法,可以使系统结构清晰,不仅容易设计,而且容易阅读和理解。并且程序错误会被限定在涉及的模块之中,易于测试和调试,从而提高软件的可靠性。而添加功能只需修改其中的部分模块,增大了程序的可扩展性。只修改
21、最底层代码,就可以让我们的系统运行在不同的数据库系统上,如果修改最上层代码,甚至可以让我们的系统运行在不同的操作系统上,提高了程序的可移植性。因此,我们按照系统需求分析中涉及的功能,将系统划分成如下几个模块:仓库管理系统入库管理与汇总建账管理保管明细账管理出库管理与汇总管理入库信息添加入库信息全部材料入库明细表材料入库分类汇总表供货单位供货明细表产品材料耗用汇总表材料出库分类汇总表全部材料出库明细表管理出库信息添加出库信息图3-1 仓库管理系统模块分解图通过快速原型设计工具,可以迅速建立系统的原型,尽快向用户提供一个直观的目标系统的模型,有利于用户和开发者在目标系统“什么样子”和目标系统“能做
22、什么”这两个的问题上尽可能快地达成共识。因此,可以忽略原型中不损害系统功能和行为的小瑕疵。并且原型容易修改,开发人员可以根据用户的意见迅速修改,构建更符合用户要求的版本,如果仍然存在问题,还可以再修改,不断靠近用户的实际需求。但要避免对无关系统功能和行为上的小瑕疵的不断更改,以免延误软件的开发时间。在本文中,我们使用Pencil作为我们的原型图绘制工具。Pencil是一款开源的原型图绘制工具,效果和手绘基本一致,十分有利于引起用户的视觉关注,增强用户参与系统开发的积极性。图3-2 主窗体原型设计3.2 建账管理及其原型设计A) 添加建账1. 从数据库中读取已有材料类别,根据材料类别,从数据库中
23、读取材料名称,根据材料类别和材料名称读取材料规格。如果是新添加的材料类别、材料名称和材料规格,可以通过“新建类别”按钮、“新建名称”按钮和“新建规格”按钮,添加新的材料类别、新的材料名称和新的材料规格;2. 填写材料数目和材料金额;3. 点击“添加”按钮,读取界面上填写的数据,显示提示信息;4. 传入数据到数据链接层;5. 从数据库中读取添加后的建账数据,计算单价,返回到界面;6. 显示添加的结果。B) 更改建账1. 修改表格中的数目或者金额,点击“更改”按钮,显示提示信息;2. 将新的数据传入数据链接层;3. 更改数据库中对应的数据;4. 从数据库中读取更改后的建账数据,计算单价,返回到界面
24、;5. 显示更改的结果。C) 删除建账1. 选中表格中要删除的数据行,点击“删除”按钮,显示提示信息;2. 将要删除的数据行编号传入数据链接层;3. 删除数据库中对应的数据;4. 从数据库中读取删除后的建账数据,计算单价,返回到界面;5. 显示删除的结果。图3-3 建账管理窗体原型设计3.3 保管明细账管理及其原型设计A) 查看保管明细账1. 从数据库中读取已有材料类别、材料名称和材料规格;2. 选择查询的开始日期和结束日期;3. 点击“查询”按钮;4. 传入查询条件到数据链接层;5. 根据查询条件查询数据库,计算入库单价、出库单价和结存信息,返回到界面;6. 显示查询的结果。B) 导出到Ex
25、cel1. 点击“导出到Excel”按钮;2. 选择要导出的位置和文件名;3. 按单元格读取表格的数据,拼接xml字符串,填入数据,得到预先确定好规格并填写好数据的电子表格。图3-4 保管明细账窗体原型设计3.4 添加入库信息及其原型设计A) 添加入库基本信息1. 产生入库单编号,获得入库日期;2. 加载已有供货单位。如果是新添加的供货单位,可点击“供货单位”按钮,添加新的供货单位;3. 添加供货单号和制单人;4. 点击“下一步”按钮,传入数据到添加入库详细信息窗体。B) 添加入库详细信息1. 获取从添加入库基本信息中读取的基本信息;2. 从数据库中读取已有材料类别,根据材料类别,从数据库中读
26、取材料名称,根据材料类别和材料名称读取材料规格。如果是新添加的材料类别、材料名称和材料规格,可以通过“新建类别”按钮、“新建名称”按钮和“新建规格”按钮,添加新的材料类别、新的材料名称和新的材料规格;3. 添加材料数目和材料金额;4. 点击“添加”按钮,读取界面上填写的数据,显示提示信息;5. 传入数据到数据链接层;6. 从数据库中读取添加后的建账数据,计算单价,返回到界面;7. 显示添加的结果。C) 修改基本信息1. 点击“修改基本信息”按钮;2. 供货单位、供货单号和制单人变为可编辑状态;3. 修改要修改的基本信息,点击“确定”按钮。D) 更改入库信息1. 修改表格中的数目或者金额,点击“
27、更改”按钮,显示提示信息;2. 将新的数据传入数据链接层;3. 更改数据库中对应的数据;4. 从数据库中读取更改后的入库数据,计算单价,返回到界面;5. 显示更改的结果。E) 删除入库信息1. 选中表格中要删除的数据行,点击“删除”按钮,显示提示信息;2. 将要删除的数据行编号传入数据链接层;3. 删除数据库中对应的数据;4. 从数据库中读取删除后的入库数据,计算单价,返回到界面;5. 显示删除的结果。F) 生成入库单1. 点击“生成入库单”按钮;2. 选择要导出的入库单文件的位置和文件名;3. 按单元格读取表格的数据,拼接xml字符串,填入数据,得到预先确定好规格并填写好数据的电子表格。图3
28、-5 添加入库基本信息窗体原型设计图3-6 添加入库详细信息窗体原型设计3.5 管理入库信息及其原型设计A) 查询入库单信息1. 填写查询条件,按照下列查询规则返回查询结果。查询规则:(1) 如果填写了入库单编号,则优先根据入库单编号查询,日期、供货单位、供货单号无效;(2) 如果只填写供货单位或只填写供货单号,则按照供货单位或供货单号,且入库日期在前后三天范围内进行查询;(3) 如果只填写供货单号和供货单位,则按照供货单号、供货单位和日期进行查询;(4) 如果什么也不填入,则显示前后三天的入库记录。2. 传入查询条件到数据链接层;3. 返回查询的入库单结果,返回到界面。B) 更改入库单信息1
29、. 选中要更改的入库单数据行,点击“更改”按钮;2. 跳转到添加入库详细信息窗体,余下操作和添加入库详细信息一致,提交完数据后关闭添加入库详细信息窗体;3. 点击“刷新”按钮;4. 将原查询条件传到数据链接层;5. 查询入库单更改后的结果,返回到界面。C) 删除入库单信息1. 选中表格中要删除的数据行,点击“删除”按钮,显示提示信息;2. 将要删除的数据行编号传入数据链接层;3. 删除数据库中对应的数据;4. 将原查询条件传到数据链接层;5. 查询入库单删除后的结果,返回到界面。图3-7 管理入库信息窗体原型设计3.6 全部材料入库明细表及其原型设计A) 查看全部材料入库明细表1. 选择查询的
30、开始日期和结束日期;2. 点击“查询”按钮;3. 传入日期条件到数据链接层;4. 根据日期条件查询数据库,计算单价,返回到界面;5. 显示查询的结果。B) 导出到Excel1. 点击“导出到Excel”按钮;2. 选择要导出的位置和文件名;3. 按单元格读取表格的数据,拼接xml字符串,填入数据,得到预先确定好规格并填写好数据的电子表格。图3-8 全部材料入库明细表窗体原型设计3.7 材料入库分类汇总表及其原型设计A) 查看材料入库分类汇总表1. 选择材料类别;2. 选择查询的开始日期和结束日期;3. 点击“查询”按钮;4. 传入查询条件到数据链接层;5. 根据查询条件查询数据库,计算单价,返
31、回到界面;6. 显示查询的结果。B) 导出到Excel1. 点击“导出到Excel”按钮;2. 选择要导出的位置和文件名;3. 按单元格读取表格的数据,拼接xml字符串,填入数据,得到预先确定好规格并填写好数据的电子表格。图3-9 材料入库分类汇总表窗体原型设计3.8 供货单位供货明细表及其原型设计A) 查看供货单位供货明细表1. 选择供货单位;2. 选择查询的开始日期和结束日期;3. 点击“查询”按钮;4. 传入查询条件到数据链接层;5. 根据查询条件查询数据库,计算单价,返回到界面;6. 显示查询的结果。B) 导出到Excel1. 点击“导出到Excel”按钮;2. 选择要导出的位置和文件
32、名;3. 按单元格读取表格的数据,拼接xml字符串,填入数据,得到预先确定好规格并填写好数据的电子表格。图3-10 供货单位供货明细表窗体原型设计3.9 添加出库信息及其原型设计A) 添加出库基本信息1. 产生出库单编号,获得出库日期;2. 添加领用班组、生产计划号、产品名、经领人、批准人和制单人;3. 点击“下一步”按钮,传入数据到添加出库详细信息窗体。B) 添加出库详细信息1. 获取从添加出库基本信息中读取的基本信息;2. 从数据库中读取已有材料类别,根据材料类别,从数据库中读取材料名称,根据材料类别和材料名称读取材料规格。3. 添加材料数目和材料金额;4. 点击“添加”按钮,读取界面上填
33、写的数据,显示提示信息;5. 传入数据到数据链接层;6. 从数据库中读取添加后的出库数据,计算单价,返回到界面;7. 显示添加的结果。C) 修改基本信息1. 点击“修改基本信息”按钮;2. 领用班组、生产计划号、产品名、经领人、批准人和制单人变为可编辑状态;3. 修改要修改的基本信息,点击“确定”按钮。D) 更改出库信息1. 修改表格中的数目或者金额,点击“更改”按钮,显示提示信息;2. 将新的数据传入数据链接层;3. 更改数据库中对应的数据;4. 从数据库中读取更改后的出库数据,计算单价,返回到界面;5. 显示更改的结果。E) 删除出库信息1. 选中表格中要删除的数据行,点击“删除”按钮,显
34、示提示信息;2. 将要删除的数据行编号传入数据链接层;3. 删除数据库中对应的数据;4. 从数据库中读取删除后的出库数据,计算单价,返回到界面;5. 显示删除的结果。F) 生成出库单1. 点击“生成出库单”按钮;2. 选择要导出的出库单文件的位置和文件名;3. 按单元格读取表格的数据,拼接xml字符串,填入数据,得到预先确定好规格并填写好数据的电子表格。图3-11 添加出库基本信息窗体原型设计图3-12 添加出库详细信息窗体原型设计3.10 管理出库信息及其原型设计A) 查询出库单信息1. 填写查询条件,按照下列查询规则返回查询结果。查询规则:(1) 如果填写了出库单编号,则优先根据出库单编号
35、查询,日期、领用班组、生产计划号、产品名均无效。(2) 如果只填写生产计划号,则按照生产计划号且日期在出库日期前后三天范围内进行查询。(3) 如果只填写领用班组,则按照领用班组且在出库日期的前后三天范围内进行查询。(4) 如果只填写产品名,则按照产品名且在出库日期的前后三天范围内进行查询。(5) 如果只填写生产计划号、产品名和领用班组,则按照生产计划号、产品名和领用班组,且在出库日期前后三天范围内进行查询;如果只填写任意两项,则按照所填写的项和日期在出库日期前后三天范围内进行查询。2. 传入查询条件到数据链接层;3. 返回查询的出库单结果,返回到界面。B) 更改出库单信息1. 选中要更改的出库
36、单数据行,点击“更改”按钮;2. 跳转到添加出库详细信息窗体,余下操作和添加出库详细信息一致,提交完数据后关闭添加出库详细信息窗体;3. 点击“刷新”按钮;4. 将原查询条件传到数据链接层;5. 查询出库单更改后的结果,返回到界面。C) 删除出库单信息1. 选中表格中要删除的数据行,点击“删除”按钮,显示提示信息;2. 将要删除的数据行编号传入数据链接层;3. 删除数据库中对应的数据;4. 将原查询条件传到数据链接层;5. 查询出库单删除后的结果,返回到界面。图3-13 管理出库信息窗体原型设计3.11 全部材料出库明细表及其原型设计A) 查看全部材料出库明细表1. 选择查询的开始日期和结束日
37、期;2. 点击“查询”按钮;3. 传入日期条件到数据链接层;4. 根据日期条件查询数据库,计算单价,返回到界面;5. 显示查询的结果。B) 导出到Excel1. 点击“导出到Excel”按钮;2. 选择要导出的位置和文件名;3. 按单元格读取表格的数据,拼接xml字符串,填入数据,得到预先确定好规格并填写好数据的电子表格。图3-14 全部材料出库明细表窗体原型设计3.12 材料出库分类汇总表及其原型设计A) 查看材料出库分类汇总表1. 选择查询日期;2. 点击“查询”按钮;3. 传入日期条件到数据链接层;4. 根据日期条件查询数据库,返回界面;5. 查询所有相关的材料类别,返回界面;6. 查询
38、所有相关的产品,返回界面;7. 根据上述返回的信息,拼接查询结果;8. 显示查询结果。B) 导出到Excel1. 点击“导出到Excel”按钮;2. 选择要导出的位置和文件名;3. 按单元格读取表格的数据,拼接xml字符串,填入数据,得到预先确定好规格并填写好数据的电子表格。图3-15 材料出库分类汇总表窗体原型设计3.13 产品材料耗用汇总表及其原型设计A) 查看产品材料耗用汇总表1. 选择产品名;2. 选择查询的开始日期和结束日期;3. 点击“查询”按钮;4. 传入查询条件到数据链接层;5. 根据查询条件查询数据库,计算单价,返回到界面;6. 显示查询的结果。B) 导出到Excel1. 点
39、击“导出到Excel”按钮;2. 选择要导出的位置和文件名;3. 按单元格读取表格的数据,拼接xml字符串,填入数据,得到预先确定好规格并填写好数据的电子表格。图3-16 产品材料耗用汇总表窗体原型设计4 架构设计架构设计往往决定了系统开发中后期的进度。一个不好的架构,往往会让项目在后期演变成“边做边设计”,出现很多无谓的修改和时间的浪费。从理论上讲,软件开发应该是分析、设计、编码、测试、维护这五个大体的步骤。但是我们发现,到了测试阶段,发现错误,需要修改的时候,经常会修改设计。这样直接造成了较大的修改工作量,甚至可能使问题越改越多。很多人认为,用户需要什么功能,我们就实现什么功能,没必要花时
40、间去设计软件架构。但当这些人发现,到了项目后期,重构代码几乎等于重写代码的时候,为时已晚。还有些人认为,既有的成熟架构已经很多,我们没必要自己设计,浪费时间,并且容易出问题。但这些人会发现,既有的架构很多时候不是太大,就是太小,团队学习既有架构的过程也会浪费系统开发的时间。良好的架构设计,不仅可以让我们的系统满足用户的需求,而且可以在用户需求改变的时候,我们可以用最小的代价满足用户需求的改变。除此之外,良好的设计架构意味着良好的可移植性、良好的可维护性、较高的开发效率等等。所以我们应该重视架构设计在软件开发中的作用。在本项目中,我们设计并使用了单一功能分层架构。对于传统三层架构中不适合本项目的
41、地方进行了取舍,并加入了我们自己的设计理念。4.1 单一功能分层架构的特点所谓单一功能分层架构,就是把整个项目分解为界面层、业务逻辑层、若干中间数据处理层和数据链接层。(待修改)中间的逻辑层,每一层实现且仅实现一个功能。相比较传统三层架构对数据业务逻辑处理这一略显宽泛含混的作用,我们的架构可以更清晰,并且增强了系统的功能内聚,使得每个模块的功能单一,降低了模块的规模,虽然增加了处理结构的深度,但其规模在可控范围之内。在系统开发过程中,团队分工可以更加明确,由于功能单一,团队成员上手的成本低,每个人仅需要完成若干功能中的一个或几个。下一小节,我们将重点阐述,单一功能分层架构的优缺点。图4-1 单
42、一功能分层架构4.2 单一功能分层架构的优缺点单一功能分层架构的主要优点如下:1) 分工明确,职责划分清晰明确的分工有利于团队成员各尽所能,有利于评价团队成员的贡献,避免利益上的冲突,避免争功,有利于维护团队的稳定。2) 工作内容专一工作内容的专一使得团队成员可以专注于自己的模块,有利于加快项目开发速度,并可培养团队成员的一技之长,甚至多技之长,易产生工作积极性。3) 可移植性、可扩展性好每一层只做一件事情,需要添加处理,就添加新的处理层;需要添加功能,就增加宽度。基本不需要改变太多当前项目的已有成果,便于扩展。而如果换数据库,只需更换数据链接层;换操作系统,只需更换界面层。有较强的可移植性,
43、可以应对各种环境变化。(通过GTK#,在Windows上用C#开发的程序也可以移植到Linux操作系统上)4) 不存在过度设计,简单可靠架构简单,不用花费太多时间在架构学习和架构维护上。模块功能单一,易查错,可测试性好,随之而来的,可维护性好。5) 易上手,对团队成员的能力要求低同样是因为架构简单,对团队成员上手的要求较低,一个小时就足可以适应此架构。团队成员也容易知道自己对整个项目的贡献在什么地方。有利于形成开发热情。6) 功能与文件对应,间接减少了关键路径占用的时间我们假设就一个模块的开发与传统三层架构进行对比:用户界面的开发时间是0.5小时数据链接层的开发是1小时传统三层架构:Model
44、的开发是0.2小时业务逻辑层的开发是3小时(包括错误检验、数据压缩和数据加密.)单一功能分层架构:没有Model业务逻辑层的开发是0.3小时(只是传递参数)错误检验层的开发是0.3小时数据压缩层的开发是0.3小时数据加密层的开发是0.3小时.0.3小时由于传统三层架构需要进行数据库的OR-Mapping和每个函数处理后对Model的封装,这部分时间我们算在了业务逻辑层的开发里。通过上述例子,我们很容易发现,传统三层架构在开发过程中,业务逻辑层由于要完成的处理步骤较多,需要耗费较长的时间,而对于使用Visual Studio的前台开发人员来说,用户界面的开发只需要很短的时间,而对于有熟练数据库经
45、验的人来说,数据链接层的开发也十分简单。只有业务逻辑层,由于不同的模块的逻辑可能不同,需要耗费的时间必然会较其他两层更长。并且,由于开发过程中,一般情况下,一个代码文件不能被两个人同时读写,致使前台开发人员和数据链接层开发人员等待业务逻辑层开发人员的现象时有发生。而在我们的单一功能分层架构中,没有Model,不需要封装,在项目规模较小的情况下,函数接口中的变量数目可以接受,不需要浪费时间在OR-Mapping上。同时,克服了传统三层架构开发过程中的闲置问题,前台开发人员和数据链接层开发人员可以在自身工作完成的情况下,帮助完成处理层的各个模块,团队成员互补,有利于缩短工期。7) 性能优化空间大,
46、关键环节可根据对应平台换用动态链接库。解释型语言,如Python,程序的执行速度相对编译型语言要慢,那么我们可以把中间的处理层用C或C+编译成动态链接库,进行性能优化。划分多个处理层,使得动态链接库的功能和调用可以更清晰明了。8) Simple is better一个架构的简洁对于这个架构的推广十分重要,如果一个架构的使用可以被写成一本将近百页的教材,我想这不是一个好的架构,至少不是一个敏捷开发的架构,也不是一个可以迅速被广泛应用的架构。不应为了面向对象而面向对象,不应为了设计模式而设计模式。开发的速度可以带来直接的经济效益,外加用户的满意度。用户想要的是尽快拿出方案、尽快看到原型、尽快交付使
47、用。一个设计完善,可以沿用百年的架构固然理论上是好,但是过长的设计时间,较高的学习成本,都会阻碍系统开发的进程,降低用户的满意度。简单的是最好的。但我们不得不承认,在某些时候,单一功能分层架构存在一定的缺点:1) 由于没有使用OR-Mapping,没有持久化层,所以代码的可重用性不高。2) 由于没有封装Model,函数接口的参数个数在某些情况下会比较多。3) 当对数据的处理步骤过多时,会带来过深的层次,对系统性能的影响会较大。4.3 单一功能分层架构在本项目中的应用通过需求分析,我们可以看到,这个仓库管理系统的规模不是很大,要完成的功能的逻辑也较为清晰,而团队开发人员都相对缺少开发经验,都是在
48、摸索中开发。所以,我们设计了单一功能分层架构。整个系统包括:用户接口层、业务逻辑层、错误检验层和数据链接层。用户接口层负责和用户的交互,包括用户的输入、控件的触发事件和数据的显示;业务逻辑层负责传送数据,并清晰展示所有调用的函数,方便对功能的控制;错误检验层负责检查用户输入的合法性;数据链接层负责对数据库进行增删改查。在实际开发过程中,一个人负责用户接口层编码,一个人负责数据链接层编码,另一个人负责错误检验层编码,之后先完成任务的人连接业务逻辑层。开发中通过局域网即时通信软件,共享函数接口。并在一台电脑上进行代码版本管理,每次开发均进行源代码备份和测试信息备份。在有序的开发过程中,充分体现了单
49、一功能分层架构在迭代开发过程中的优势。并且较低的学习成本也带来了较高的工作积极性。每次构建均有新的模块完成,并保证系统可用,不断添加功能的成就感使得团队开发的积极性较高。5 数据库设计信息管理系统实质上,就如同是为数据库的增删改查设计用户界面和业务逻辑。所以,数据库在信息管理系统中地位的重要性不言而喻。一个好的数据库设计可以带来好的系统扩展性,对于系统性能也有很大的影响。缺乏必要的字段、非必要数据的冗余、数据完整性的丧失等等问题都会对信息管理系统的开发造成致命的影响。由于数据库设计不是本文的重点,在这里我们只是列举一下本项目的实体-联系图和关系数据模型。5.1实体-联系图以下为本项目的实体-联
50、系图:图5-1 实体-联系图5.2关系数据模型以下为本项目的关系数据模型:材料(编号,类别,名称,规格,累计数量,累计金额)建账(编号,材料编号,金额,数量,日期)出库单(编号,产品名,生产计划号,经领人,批准人,制单人,领用班组,日期)入库单(编号,供货单位,供货单号,制单人,日期)入库(编号,入库单编号,材料编号,数量,金额)出库(编号,出库单编号,材料编号,数量,金额)6 编码风格为了保证程序的易读易懂,编码风格十分重要。Programs must be written for people to read, and only incidentally for machines to e
51、xecute.5 通过积累和分析,我们认为一个好的编码风格应具有以下特点:1. 标识符命名应有明确的意义标识符尽量采用英文命名,有明确的意义,并且定义最好按照字母顺序或在业务逻辑中出现的顺序。图6-1 标识符命名应有明确的意义2. 程序中有适当的注释关键的算法实现部分,应有注释以标明该算法实现的功能。但不要每一句都注释,这样会占据太多代码篇幅,影响代码的可读性。图6-2 程序中有适当的注释3.函数应有功能性注释,用以说明函数的功能函数之前,应用注释标明该函数实现的功能、输入参数的类型和作用与输出参数的类型和作用。图6-3 函数应有功能性注释4.每行语句不宜过长,更不要把两行语句写到一行里每行语
52、句应控制在一屏可以放置的范围内,不要使用自动折行的功能,某些高级语言可以使用折行符。5.避免大量使用嵌套循环嵌套循环不容易读懂,单步调试也较为费时,如非极其必要,应避免使用嵌套循环。6.代码应保证缩进全篇齐头的代码更像是E-mail而不是程序源码。一个好的程序源码,应在函数定义、循环、条件选择、类的定义等程序执行流程发生变化的地方进行缩进。这样别人可以更清楚地读懂程序的功能。图6-4 代码应保证缩进7 结束语本文通过对仓库管理信息系统开发流程中的可行性分析、需求分析、原型设计、模块分解、架构设计和数据库设计等几个步骤的阐述,着重分析了单一功能分层架构在管理信息系统开发上的意义。我们始终认为:M
53、ore choice means unhappier, simple is better. 最简单最适合项目需求的就是最好的,我们不应被架构所束缚,而应根据需求,设计最简单最适合需求的架构。简单意味着可以更快交付,适合意味着可以更少修改。从而,在完善系统开发的同时,不断推进管理信息系统领域的创新和进步。 大学本科毕业设计论文题目 中小企业仓库管理系统总体设计与编码 学生姓名 学号 成绩 学院 专业班级 指导教师姓名 _ 指导教师职称 材料目录:3. 任务书 ( 1 )份4. 进度计划表 ( 1 )份3、开题报告 (含文献综述) ( 1 )份4、指导教师评阅书 ( 1 )份5、答辩记录表 ( 1
54、 )份6、论文正文 ( 1 )份7、其它材料 本科毕业设计任务书学 院: 教师姓名: 职 称: 专业名称计算机科学与技术论文题目中小企业仓库管理系统总体设计与编码 题目来源自拟设计内容:中小企业仓库管理系统(Storage Management Information System for Small and Medium-sized Enterprise)是企业信息化的基础,对一个企业的业务流程的开展,起到十分关键的作用,对于企业的信息化管理也具有十分重大的意义。本系统作为一款中小企业仓库管理系统,主要完成材料出入库管理、账目管理、供货单位管理、产品耗材管理和一些数据汇总报表功能。主要完成以
55、下几个功能: A) 添加入库信息B) 管理入库信息C) 添加出库信息D) 管理出库信息E) 建账管理F) 保管明细账管理G) 供货单位供货汇总H) 产品耗材汇总I) 材料入库汇总J) 材料出库汇总K) 导出到电子表格设计要求及主要技术参数:架构设计 系统采用分层架构前台技术 C#后台技术 C#数据库选择 SQL Server 2005可行性分析:可行性分析的任务是确定系统在技术上能不能实现、做出来的东西用户能不能用以及是否需要太多的资金来实现这个系统。1. 技术可行性: 客户机可以运行Windows XP及以上版本的操作系统,有足够大的硬盘空间存储数据。2. 操作可行性: 可以为出入库管理员进
56、行使用培训,界面十分简洁,提示信息丰富,易用性可以满足使用的要求。3. 经济可行性: 只需要为出入库管理员配置一台电脑,并运行Windows XP及以上版本的操作系统即可。从技术可行性、操作可行性和经济可行性三个角度进行可行性分析,开发这个中小型的仓库管理系统完全可行。进度安排:2013年1月5日2月25日明确该系统总体设计需求,查阅相关技术文档,调查系统架构设计的实现方式。2月26日3月15日完成文献综述,提交进度计划表,确定架构,完成开题报告。3月16日3月20日系统总体设计。3月21日3月31日数据库设计。 4月1日5月1日系统编码实现。5月2日5月15日系统测试。5月16日5月20日完成毕业设计论文初稿和其它相关文档。5月21日6月4日完成毕业答辩演讲幻灯片,毕业设计论文修改,补充和整理,并准备进行预答辩。专家意见:专家签字:年 月 日学院意见:院长: 年 月 日本科毕业设计开题报告题 目:中小企业仓库管理系统总体设计与编码 学 院: 学生姓名: 专 业: 班级学号: 指导教师姓名: 指导教师职称: 年 月 日学生姓名 专业班级 学 号 指导教师 职 称 所在学院 论文名称中小企业仓库管理系统总体设计与编码 选题依据:一、理论依据与目的意义 一直以来,在企业的仓库管理中,出入库登记一直靠纸笔填表格的方式完成。缺点很多:首先,人力成本较高,需要雇用更多