资源预览内容
第1页 / 共47页
第2页 / 共47页
第3页 / 共47页
第4页 / 共47页
第5页 / 共47页
第6页 / 共47页
第7页 / 共47页
第8页 / 共47页
第9页 / 共47页
第10页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
附录 C 软件开发文档指南1 可行性研究报告可行性研究报告的编写目的是:说明该软件开发项目的实现在技术、经济和社会条件方面的可行性; 评述为了合理地达到开发目标而可能选择的各种方案;说明论证所选定的方案。可行性研究报告的编写内容要求如下:1.1 引言1.1.1 编写目的本文的目的是阐述摩托车配件进销存管理系统的设计。本设计的编写目的在于全面说明摩托车配件进销存管理系统中的设计方案,包括系统的基本处理流程、程序系统的组织结构、模块划分和功能分配,为程序的详细设计提供基础。1.1.2 背景由于近些年来开发工具的成熟,市场上已经存在许多进销存软件,但是多数并未针对摩托车配件销售行业,难以满足这些企业的需求,即便是已存在的摩托车配件进销存管理系统,也存在很多不实用的冗余功能。这些企业需要一种功能实用、操作简便、安全稳定的摩托车配件进销存管理软件,以满足普通的进销存管理及基本的业务统计。因此,开发适合于中小企业使用的摩托车配件进销存管理系统就显得十分迫切和必要. 进销存管理系统是基于先进的软件和高速、大容量的硬件基础上的新的进销存管理模式,通过集中式的信息数据库,将企业的进、销、存、调拨、统计等企业的经营业务有机的结合起来,达到数据共享、降低成本、提高效率、改进服务等目的。一般来说,利用进销存管理系统可以在以下方面提高企业的管理水平:(1) 实现从企业配件采购、入库、库存、出库的信息化管理。(2) 改善了企业内部各供应环节的管理、调度及资源配置,使管理合理规范。(3) 降低了因人工处理的费用及数据的差错,使企业降低了运营成本。(4) 降低采购成本。(5) 减少仓储面积,提高房产综合利用。(6) 加快资金周转实现的经济效益。(7) 提高管理水平、增加竞争能力。项目选择在Microsoft公司的最新开发平台MicrosoftVisualStudio2005上,用 c#.Net语言开发我们的系统。Microsoft.NET 是微软公司推出的为了简化在第三代因特网的高分布式环境下的应用程序开发,基于开发的互联网标准和协议实现异质语言和平台的高度交互性而构建的新一代计算和通信平台。它的核心技术包括分布式计算、XML 、组件技术、即时编译技术等。它的可视化开发平台通过初期的几个版本,目前已经发展到了技术上更加成熟的Microsoft 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 47 页 - - - - - - - - - Visual Studio 2005。Microsoft推出的全新编程和开发平台.NET Framework ,支持多种语言利用公共.NET类库开发应用程序。最新的开发平台和工具带来了最好的技术力量支持,使在此基础上开发的本系统具有更加良好的功能和性能。1.1.3定义摩托车配件进销存管理系统是利用计算机信息技术,将摩托车配件入库、出库、批发、门市零售等日常业务统一管理。利用计算机在运算方面的优势,及时准确的将摩托车配件进、销、存等环节的数据输出,使经营人员更为科学的进行经营活动。 1.1.4 参考资料暂无1.2 可行性研究的前提1.2.1 要求该系统应该具有制定采购计划、摩托车配件需求计算、材料供求分析的功能。要以企业管理的计划和控制职能为核心,提供了生产、销售、采购、库管、计划等实用而丰富的管理功能。1.2.2 目标所建议的系统的开发目标应考虑以下几个方面:(1)系统需要操作方便,方便管理员对整个系统的管理和查阅。(2)系统需要提供综合查询系统,方便库存情况的查询。(3)系统需要良好的扩展性,方便功能扩展和性能扩展。(4)系统需要较好的安全性和灾难恢复机制。1.2.3 条件、假定和限制对本项目开发中给出的条件、假定和所受到的限制如下: 1.所建议系统的运行寿命的最小值系统运行寿命的最小值应为10 年. 2.进行系统方案选择比较的时间系统方案选择比较的时间为1 个月3 经费、投资的来源和限制经费、投资的来源是某高校信息学院,限制不超过合同上约定的条目。4. 法律和政策方面的限制系统的研制和开发都选用正版软件,将不会侵犯他人、集体和国家的利益,不会违反相关的国家政策和法律。5. 硬件、软件、运行环境和开发环境方面的条件和限制(1)硬件资源服务器:工作站或小型机;网络设备:网络交换机,网卡,网线其他设备:打印机。(2)软件资源服务器端软件选择的具体说明:操作系统: Windows 2003 Server 或 Windows NT 。数据库管理系统:SQL Server 2005 。开发语言: C# 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 47 页 - - - - - - - - - 6. 可利用的信息和资源可参考传统的手工管理方式。7. 系统投入使用的最晚时间系统投入使用的最晚时间为2012 年 7 月。1.2.4进行可行性研究的方法本次可行性分析是按照前面给出的步骤进行的,即按照复查项目目标和规模,研究目前正使用的系统,导出新系统的高层逻辑模型,重新定义问题这一循环反复过程进行的。1.2.5评价尺度本系统进行评价时的主要尺度有:费用的多少, 开发时间的长短,以及使用的难易程度等。1.3 对现有系统的分析1.3.1 数据流程和处理流程顶层数据流程:进销存管理系统供应商品采购退货销售商品退货系统维护管理操作基本档案管理进销存信息文件用户(操作员)系统管理员进货公司客户报表1.3.2 工作负荷现有系统的工作主要有:(1)商品信息的管理。(2)供应商及客户信息的维护。(3)采购计划、物料需求计算、材料供求分析1.3.3 费用开支运行现有系统所需要的费用支出包括:管理人员的工资、安装及维护费用等。1.3.4 人员运行维护现有系统的人员为企业管理部门经理1.3.5 设备现有系统所需要的设备有:服务器、打印机等。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 47 页 - - - - - - - - - 1.3.6局限性现有系统的局限性表现在以下方面:手工操作难度较大、易出错、工作量大;对商品信息和库存信息详细的查询困难。随着使用气的加长,维护成本将不断增大。1.4 所建议的系统1.4.1 对所建议系统的说明所建议的系统是基于B/S 结构的企业进销存管理系统,采用B/S 结构最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用, 客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。1.4.2数据流程各处理流程进销存管理系统供应商品采购退货销售商品退货系统维护管理操作基本档案管理进销存信息文件用户(操作员)系统管理员进货公司客户报表1.4.3 改进之处( 1)维护和升级方式简单对于软件的升级及维护,B/S 架构的产品明显体现着更为方便的特性。B/S 架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行;如果是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。( 2)成本降低,选择更多 B/S架构的应用管理软件,可以安装在Linux服务器上,而且安全性高。所以服务器操作系统的选择是很多的,而且Linux 是免费的。1.4.4 影响1.4.4.1 对象设备的影响由于本系统开发时采用新的技术和手段,所以需要配备符合本报告2.3 条件所列出的条件的计算机硬件。1.4.4.2对软件的影响软件环境需符合本报告2.3 条件所列出的。1.4.4.3对用户单位机构的影响名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 47 页 - - - - - - - - - 为了运行所建议系统,需要管理员熟悉计算机相关操作。1.4.4.4 对系统运行的影响用户操作规程按照系统所建议系统的提示进行;系统失效后, 数据库恢复到最新的更新备份状态进行保存。1.4.4.4对开发的影响开发过程需要及时与用户沟通、了解其需求,不断改进和完善系统。1.4.4.6 对地点和设施的影响1.4.4.7 对经费开支的影响需要支付开发单位有关费用。1.4.5 局限性1.4.6 技术条件方面的可行性本系统是一个基于B/S 结构的管理系统,采用面向对象技术、数据库技术、 分布式技术等先进技术开发的应用程序,现有的开发技术已非常成熟,且被广泛应用于各行各业,利用现有技术完全可以达到功能目标。考虑开发期限较为充裕,预计可以在规定的时间内完成开发。1.5 可选择其他系统方案1.5.1 可选择的系统方案1 1.5.2 可选择的系统方案2 1.6 投资及收益分析1.6.1 支出1.6.1.1 基本建设投资硬件设备:服务器。软件: Windows 2003 Server 或 Linux 、数据库管理系统:SQL Server 2005 开发工具: Visual Studio 2005。1.6.1.2其他一次性支出系统设计和开发费用。1.6.1.3 非一次性支出1.6.2 收益1.6.2.1 一次性收益管理方式的自动化,减少了人力、物力费用。1.6.2.2非一次性收益缩短了操作时间,极大地提高了工作效率和系统性能。1.6.2.3 不可定量的收益维护简单及效率提高带来的收益。1.6.2.3收益 / 投资比待定1.6.4 投资回收周期根据投资回收期计算方法,收益的累计数开始超过支出的累计数的时间为1 年。1.6.5 敏感性分析1.7 社会条件方面的可行性1.7.1 法律方面的可行性所建议系统的研制和开发都选用正版软件,将不会侵犯他人、集体和国家的利益,不会违反相关的国家政策和法律。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 47 页 - - - - - - - - - 1.7.2 使用方面的可行性本系统的研制和开发充分考虑用户工作流程、计算机操作水平等,尽可能提供更人性化、直观的界面,满足用户要求。系统的操作方式在用户组织内可行1.8 结论技术成熟,可着手组织开发。2 项目开发计划编制项目开发计划的目的是用文件的形式,把对于在开发过程中各项工作的负责人员、开发进度所需经费预算、所需软、 硬件条件等问题作出安排记载下来,以便根据本计划开展和检查本项目的开发工作。编制内容要求如下:2.1 引言2.1.1 编写目的根据项目开发计划书来有效组织团队对项目进行合理科学的开发工作,预期读者为小组所有成员2.1.2 背景说明:a摩托车配件进销存管理系统b本项目的任务提出者为客户、开发者为本团队C 该软件系统同其他系统或其他机构的基本的相互来往关系密切。2.1.3 定义2.1.4 参考资料a本项目的经核准的计划任务书或合同、上级机关的批文此处略去;2.2 项目概述2.2.1 工作内容简要地说明在本项目的开发中须进行的各项主要工作。1 先进行需求分析,对用户的需求作详细的询问,这是直观重要的一个工作2 团队讨论,分工协作,数据库设计,模块开发设计(原形,软件功能实现)有序进行2.2.2 主要参加人员顾运 技术方面:精通c#.net vs2005+sql server 2005 programmer designing 2.2.3 产品及成果2.2.3.1 程序2.2.3.2 文件2.2.3.3 服务承络向用户提供各项服务,包括培训安装、 维护和运行支持等,规定开始日期为软件发布日期、期限为5 年。2.2.3.4 非移交产品2.2.4 验收标准2.2.5 完成项目的最迟期限20125.17 2.2.6 本计划的审查者与批准者名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 47 页 - - - - - - - - - 项目经理顾运2.3 实施总计划2.3.1 工作任务的分解项目经理顾运负责数据库设计,模块开发设计 (原形,软件功能实现)及打包部署产品发布 2.3.2 接口人员 a 负责本项目同用户的接口人员为项目经理;b负责本项目同本单位各管理机构,如合同计划管理部门、财务部门、质量管理部门等的接口人员为项目经理;c负责本项目同各分合同负责单位的接口人员为项目经理。2.3.3 进度3 周内完成全部开发工作2.3.4预算本开发项目所需要的劳务(包括人员的数量和时间)人员数量为1,时间为3 周以及经费的预算(包括办公费、差旅费、机时费、资料费、通讯设备和专用设备的租金等)和来源。2.3.5 关键问题影响整个项目成败的关键问题在于前期的系统需求分析2.4 支持条件2.4.1 计算机系统支持2.4.2 需要用户承担的工作2.4.3 需由外单位提供的条件2.5 专题计划要点3 软件需求说明书软件需求说明书的编制是为了使用户和软件开发者双方对该软件的起初规定有一个共同的理解,使之成为整个开发工作的基础。编制软件需求说明书的内容要求如下:3.1 引言3.1.1 编写目的准确了解用户的需求,准确了解系统必须做些什么,对目标系统提出完整的准确的清晰的具体的要求,为以后的开发工作打好基础,指明一个正确的方向。3.1.2 背景传统的摩托车配件经营对互联网的利用不够,经营成本相对较高、效益较低。本设计的主要目标是实现一款针对摩托车配件公司的专业化网络管理软件。通过浏览器与服务器端的通信,实现跨地区的摩托车配件采购、仓储和销售等业务数据的共享,以便分布在各地的摩托车配件采购、销售等工作人员即时反馈供求信息, 提高企业的运作效率。通过该摩托车配件购销管理系统,可以有效解决摩托车配件采购、仓储和销售过程中因为信息滞后而引起的经营成本过高的问题。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 47 页 - - - - - - - - - 3.1.3 定义3.1.1 参考资料3.2 任务概述3.2.1 目标3.2.2 用户的特点3.2.3 假定与约束工具和语言约束:vs2005 c#.net 设计约束 ; 应该使用的标准;硬件平台;3.3 需求规定3.3.1 对功能的规定摩托车配件进销存管理系统主要包含四个功能模块:用户管理、采购管理、仓储管理和销售管理。各个模块主要功能分别如下:( 一) 用户管理子系统。主要实现对用户的增删管理、基本信息管理和权限变更管理。( 二) 采购管理子系统用于实现摩托车配件采购过程中的采购订单、收货通知单等基本文件的编制,通过库存信息、缺货信息以及摩托车配件供应商信息实现采购订单、收获通知单的开立、递送、撤销等日常采购业务。( 三) 仓库管理子系统用于管理摩托车配件的库存状况等基本信息,完成每次摩托车配件进出仓库的质量检验及数据变更,能够对不同品种进行分类管理及存量控制。( 四) 销售管理子系统用于处理摩托车配件销售的日常业务,完成销售订单、出库申请单等基本文件的编制,并能通过销售订单对每一个月的销售情况进行统计,生成月销售单。3.3.2 对性能的规定3.3.2.1 精度3.3.2.2 时间特性要求同时提供鼠标与键盘操作。3.3.2.3 灵活性模块化设计,方便以后的扩展3.3.3 输入输出要求 (1)输入方式为键盘输入,在输入时要求尽可能少输入数据,提供常用数据的选择输入,并提供数据的核对功能。(2) 输出方式提供屏幕输出和打印输出两种方式,屏幕输出与打印输出的内容要求保持一致。3.3.4 数据管理能力的要求(1) 订单数据应保存10 年以上,每月已处理订单数据备份存档,且不允许修改。(2) 对用户的管理应该由授权的人进行,不可随意修改删除。 (3)单据表格应该方便填写,有一定的可选项,并且简单明了。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 47 页 - - - - - - - - - 3.3.5 故障处理要求(1) 涉及数据库访问的应用程序必须保证数据库的一致性。 (2)应用程序故障时可重启电脑而继续使用3.3.6 其它的专门的要求(1) 系统只能由授权的人员操作,以保证数据的安全。(2) 保证数据不被非指定人员修改与删除 (3)一般情况不处理退货3.4 运行环境规定3.4.1 设备 (1)要求采用专用服务器作为Web服务器及数据库服务器(2) 打印机3.4.2 支持软件低端计算机设备采用Windows 2000(专业版 )/XP ;摩托车配件进销存管理系统的实现主要基于 c#.net asp.net开发技术3.4.3接口该 B/S 结构网络系统采用TCP/IP 进行数据传递,访问SQL数据库时采用ADO方式进行访问。3.4.4 控制摩托车配件进销存管理系统可以通过启动浏览器,输入Web服务器地址后进入系统。4 数据需求说明书数据要求说明书的编制目的是为了向整个开发时期提供关于处理数据的描述和数据采集要求的技术信息。编制数据要求说明书的内容要求如下:4.1 引言4.1.1 编写目的为准确说明系统的数据存储与处理方式,特编写本数据要求说明。该数据要求说明书主要提供给系统实现人员使用,并用于与用户沟通,确认系统满足用户的功能需求。4.1.2背景摩托车配件进销存管理系统要处理的数据主要是订单信息数据、库存信息数据、销售信息数据等。下面是关于数据库设计的关键说明。(1)系统名称:某企业摩托车配件进销存管理系统。(2)数据库名称: db_MOTOJXC 。(3)数据库管理系统:采用sqlserver 2005 4.1.3 定义(1)PK ,主码,是唯一确定一条记录的关键数据项。(2)ER图,实体联系图,是反映与数据相关的实体及实体之间关系的图。(3)vs 2005 是 microsoft公司开发的 .net 开发工具,是本系统开发的工具。4.1.4 参考资料4.2 数据的逻辑描述4.2.1 静态数据名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 47 页 - - - - - - - - - (1)系统用户基本信息,包括帐号、用户名等。(2)长期供应商信息,包括供应商号、供应商名、品种类型等4.2.2 动态输入数据(1)采购订单数据,包括采购订单编号、数量等(2)收货通知单数据,包括编号、供应商信息等(3)库存总账数据,包括库存总账编号、库存总量(4)入库单数据,包括入库单编号、入库数量等。(5)出库单数据,包括出库单编号、出库数量等(6)付款通知单数据,包括付款单编号、付款金额等(7)缺货单数据,包括编号、缺货品种等(8)销售订单数据,包括编号、客户信息等数据(9)出库申请单数据,包括出库品种、客户信息等数据4.2.3 动态输出数据4.2.4 内部生成数据(1)月销售账单汇总4.2.5 数据约定4.3 数据的采集4.3.1 要求和范围摩托车配件进销存管理系统的数据采集来自采购、销售、和仓储部门,其数据范围包括摩托车配件信息的相关数据。(1)采购负责联系上游摩托车配件供应商,管理供应商信息数据。(2)仓储部门获取摩托车配件入库信息等数据。(3)销售部获取需求信息以及销售业绩数据。4.3.2 输入的承担者长期合作供应商数据输入的承担者为负责采购管理的采购部员工,入库信息数据输入的承担者为负责仓储管理的员工,而需求信息数据的输入主要由销售部门的员工负责。4.3.3处理在网络系统环境下,由销售部进行销售订单、销售额等数据处理,订单数据处理后送交仓储部门;仓储部门根据摩托车配件入库信息及订单信息进行库存管理。采购部门根据库存状况进行适当的采购。4.3.4 影响该系统为B/S 网络版的摩托车配件进销存管理系统,需要企业设立专门的信息中心,负责共享数据库服务器的管理。5 概要设计说明书概要设计说明书可称作系统设计说明书,这里说的系统是指程序系统,编制的目的是说明对程序的系统的设计考虑,包括程序系统的基本处理流程、程序系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为程序的详细设计提供基础。编制概要设计说明书的内容要求如下:5.1 引言5.1.1 编写目的本概要设计说明书是针对摩托车配件进销存管理系统而编写的。目的是明确系统的数据结构和软件结构, 对该项目进行总体设计给出内部软件和外部系统部件之间的接口定义,在明确系统需求的基础上划分系统的功能模块,进行系统开发的分工,明确各模块间的接口、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 47 页 - - - - - - - - - 数据结构的细节以及具体的装配要求。为进行后面的详细设计和实现作准备。5.1.2背景项目名称:摩托车配件进销存管理系统项目开发者5.1.3 定义在该概要设计说明书中的专门术语有:进销存管理系统、SQL Server 2005数据库。5.1.4 参考资料【1】谭庆平等编著, 软件工程实践教程北京高等教育出版社,2009 年 4 月【2】赵池龙等编著, 实验软件工程 (第 2 版)电子工业出版社,2006 年 7 月【3】萨师煊 , 王珊等编著,数据库系统概论北京高等教育出版社, 2004年5.2 总体设计5.2.1 需求规定5.2.2 运行环境设备 CPU:Pentium 500MHz 以上 磁盘空间容量:600MB以上 内存: 128MB以上支持软件 操作系统: windows 或 linux 数据库为 SQL Server 2005 其它软件 :vs 2005 5.2.3 基本设计概念和处理流程5.2.4 结构5.2.5 功能需求与程序的关系5.2.6 人工处理过程5.2.7 尚未解决的问题5.3 接口设计5.3.1 用户接口名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 47 页 - - - - - - - - - 用户需要一个友善的界面。在界面设计上应做到简单易于操作。在设计语言上,使用c#.net进行编程。5.3.2 内部接口各模块之间采用函数调用、参数传递、返回值的方式进行信息传递5.3.3 外部接口5.4 运行设计5.4.1 运行模块组合服务器程序的接收网络数据模块必须始终处于活动状态。接收到数据后, 调用数据处理/ 查询模块对数据库进行访问,完成后调用网络发送模块,将信息返回客户机。具体软件的运行模块组合为程序多窗口的运行环境,各个模块在软件运行过程中能较好的交换信息,处理数据。5.4.2 运行控制软件运行时有较友好的界面,基本能够实现用户的数据处理要求。5.4.3 运行时间系统的运行时间基本可以达到用户所提出的要求,在0.1S 之内。5.5 系统数据结构设计5.5.1 逻辑结构设计要点5.5.2 物理结构设计要点系统的物理结构具体由数据库来设计与生成5.5.3 数据结构与程序的关系服务器程序在对录入、修改、 删除和查询信息进行操作时需对数据库数据结构,也就是数据表进行查询和修改:在定过程中都需要对数据库中的所有表,进行联合查询、修改。5.6 系统出错处理设计5.6.1 出错信息用户输入为空时,系统提示“输入的不能为空”。在用户使用错误的数据或访问没有权限的数据后,系统给出提示:“对不起,你非法使用数据,没有权限!”而且用户的密码管理可以允许用户修改自己的密码,不允许用户的匿名登录。用户在使用关键字或资源名称检索时,如没有相关信息,系统给出提示:“对不起,没有找到匹配的资源”。 编号重复错误时,系统提示“_已存在请重新输入” 。 数据库连接问题, 系统提示“数据库连接问题! ” 。5.6.2 补救措施由于数据在数据库中已经有备份,故在系统出错后可以依靠数据库的恢复功能,并且依靠日志文件使系统再启动,就算系统崩溃用户数据也不会丢失或遭到破坏。但有可能占用更多的数据存储空间,权衡措施由用户来决定。5.6.3 系统维护设计由于系统较小没有外加维护模块,因为维护工作比较简单,仅靠数据库的一些基本维护。如:定期为数据库进行Backup,维护管理数据库死锁问题和维护数据库内数据的一致性等。6 详细设计说明书详细说明书可称作程序设计说明书。编制目的是说明一个软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,如果一个软件系统比较简单,层次很少,本文件可以不单独编写,有关内容合并概要设计说明书。对详细设计说明书的内容要求如下:6.1 引言6.1.1 编写目的6.1.2 背景6.1.3 定义名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 47 页 - - - - - - - - - 6.1.4 参考资料6.2 程序系统的组织结构6.3 程序 1(标识符)设计说明6.3.1 程序描述实现进货管理中的进货单模块, 能够记录经手人和供货单位,并选择要进货的配件信息,并保存进货单6.3.2 功能6.3.3 性能6.3.4 输入项经手人供货单位进货配件信息,进货的数量 , 应付金额等6.3.5 输出项打印进货单一式两份6.3.6 算法6.3.7 流程逻辑6.3.8 接口6.3.9 存储分配6.3.10 注释设计6.3.11 限制条件6.3.12 测试计划6.3.13 尚未解决的问题6.4 程序 2(标识符)设计说明7 数据库设计说明书数据库设计说明书的编制目的是对于设计中的数据库所有标识、逻辑结构和物理结构作出具体的设计规定。其内容要求如下:7.1 引言7.1.1 编写目的7.1.2 背景7.1.3 定义7.1.4 参考资料7.2 外部设计7.2.1 标识符和状态(1 )PK :主码。(2)CK :候选码。(3)UIX:唯一索引。(4)FK :外码。(5)DC :参照关系级联删除。(6)UC :参照关系级联更新。(7)DN :参照关系删除主码则将外码置为空。(8)DF :参照关系,有外码参照不允许删除主码。(9)Check:Check 约束,字段级约束。(10)Assert :表级约束。(11)Tranc :事物保证的业务规则。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 47 页 - - - - - - - - - 7.2.2 使用它的程序序号数据结构(表)程序1 用户登陆、用户管理、修改密码2 供应商供应商信息增加、删除3 采购订单采购订单生成编制4 收货通知单收货通知单生成编制5 库存总账库存汇总、更新6 入库单入库信息的增加、编制7 出库单出库信息的增加、编制8 付款通知单付款通知单的增加、编制9 缺货单缺货单的添加等程序10 出库申请单出库申请单的编制等程序11 销售订单销售订单的查询、添加等程序12 月销售账单月销售账单的统计等程序7.2.3 约定7.2.4 专门指导7.2.5 支持软件需要数据库管理系统sql server 2005。7.3 结构设计名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 47 页 - - - - - - - - - 7.3.1 概念结构设计实体联系图( ER图)关系模式命名规范和关系模式描述(1)tb_employee (2)tb_currentaccount 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 47 页 - - - - - - - - - (3)tb_power 权限表(4)tb_resell_detailed (5)tb_resell_main (6)tb_rewarehouse_detailed 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 47 页 - - - - - - - - - (7)tb_rewarehouse_main (8)tb_sell_detailed (9)tb_sell_main 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 47 页 - - - - - - - - - (10)tb_stock (11)tb_unit (12)tb_units (12)tb_warehouse_detailed 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 47 页 - - - - - - - - - (13) tb_warehouse_main 7.3.3 物理结构设计数据库名称及文件(1)数据库名称:db_MOTOJXC,使用该逻辑名称存取数据库。(2)文件及其存储方式:sqlserver2005数据库存储7.4 运用设计7.4.1 数据字典设计7.4.2 安全保密设计8 模块开发卷宗模块开发卷宗是在模块开发过程中逐步编写出来的,每完成一个模块或一级密切相关的模块的复审时编写一份,应该把所有的模块开发卷宗汇集在一起。编写的目的是记录和汇总低层次开发的进度和结果,以便于对整个模块开发工作的管理和复审,并为将来的维护提供非常有用的技术信息。具体的内容要求如下:10.1 标题10.2 模块开发情况表本系统的开发模块表进货管理模块销售管理模块库存管理模块基础数据模块系统维护模块1 进货单1 销售单1 库存状况1 库存配件信息1 本单位信息2 进货退货单2 销售退货单2 库存上限报警2 往来单位信息2 系统管理设置3 进货分析3 销售统计3 库存下限报警3 公司职员信息3 系统数据备份/ 恢复4 往来对帐4 配件销售排行4 库存盘点4 系统数据清理10.3 功能说明名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 47 页 - - - - - - - - - 本系统主要实现了支持多条件查询、批量填写进货单及销售单、与代理商和供应商往来账本明细,绝不存在假账、漏账、差账等情况、图表分析月销售状况、当外界环境(停电、网络病毒)干扰本系统时,系统可以自动保护原始数据的安全、强大的报表打印等功能。10.4 设计说明1 本系统登陆模块2 系统主窗口3 进货单名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 47 页 - - - - - - - - - 4 进货分析5 销售单名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 47 页 - - - - - - - - - 6 配件销售成本清单7 库存配件基本信息名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 47 页 - - - - - - - - - 8 往来单位基本信息9 公司职员基本数据名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 47 页 - - - - - - - - - 10 库存状况11 库存盘点10.5 源代码清单1 系统登陆模块清单using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace MOTOJXC publicpartialclassfrmLogin : Form 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 47 页 - - - - - - - - - BaseClass.BaseInfo baseinfo = new MOTOJXC.BaseClass.BaseInfo (); BaseClass.cPopedom popedom = new MOTOJXC.BaseClass.cPopedom (); public frmLogin() InitializeComponent(); privatevoid btnLogin_Click(object sender, EventArgs e) if (txtUserName.Text = string.Empty) MessageBox .Show( 用户名称不能为空! , 错误提示 , MessageBoxButtons .OK, MessageBoxIcon.Error); return ; DataSet ds = null ; popedom.SysUser = txtUserName.Text; popedom.Password = txtUserPwd.Text; ds=baseinfo.Login(popedom); if (ds.Tables0.Rows.Count 0) frmMain frm_main = new frmMain (); frm_main.Show(); if(Convert .ToBoolean(ds.Tables0.Rows0stock) frm_main.tlmBuy.Enabled = true ; if ( Convert .ToBoolean(ds.Tables0.Rows0vendition) frm_main.tlmSale.Enabled = true ; if ( Convert .ToBoolean(ds.Tables0.Rows0storage) frm_main.tlmStock.Enabled = true ; if ( Convert .ToBoolean(ds.Tables0.Rows0system ) frm_main.tlmSystem.Enabled = true ; if(Convert .ToBoolean(ds.Tables0.Rows0base ) frm_main.tlmBase.Enabled = true ; this .Visible = false ; else MessageBox .Show( 用户名称或密码不正确! , 错误提示, MessageBoxButtons .OK, MessageBoxIcon.Error); privatevoid txtUserName_KeyUp( object sender, KeyEventArgs e) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共 47 页 - - - - - - - - - if (e.KeyValue = 13) txtUserPwd.Focus(); privatevoid txtUserPwd_KeyUp( object sender, KeyEventArgs e) if (e.KeyValue = 13) btnLogin.Focus(); privatevoid btnExit_Click(object sender, EventArgs e) this .Close(); privatevoid frmLogin_Load(object sender, EventArgs e) 2 系统主界面模块using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace MOTOJXC publicpartialclassfrmMain : Form public frmMain() InitializeComponent(); privatevoid fileUnits_Click(object sender, EventArgs e) BaseInfo.frmUnits frm_units = new MOTOJXC.BaseInfo. frmUnits (); frm_units.Show(); privatevoid fileStore_Click(object sender, EventArgs e) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 26 页,共 47 页 - - - - - - - - - new MOTOJXC.BaseInfo. frmStock ().Show(); privatevoid fileEmployee_Click(object sender, EventArgs e) new MOTOJXC.BaseInfo. frmEmployee().Show(); privatevoid fileBuyStock_Click(object sender, EventArgs e) new MOTOJXC.BuyStock.frmBuyStock ().Show(); privatevoid fileResellStock_Click(object sender, EventArgs e) new MOTOJXC.SaleStock. frmResellStock().Show(); privatevoid fileRebuyStock_Click(object sender, EventArgs e) new MOTOJXC.BuyStock.frmRebuyStock ().Show(); privatevoid fileSellStock_Click(object sender, EventArgs e) new MOTOJXC.SaleStock. frmSellStock().Show(); privatevoid fileBuyStockAnalyse_Click(object sender, EventArgs e) new MOTOJXC.BuyStock.frmBuyStockAnalyse ().Show(); privatevoid fileBuyStockSum_Click(object sender, EventArgs e) new MOTOJXC.BuyStock.frmBuyStockSum().Show(); privatevoid fileSellStockSum_Click(object sender, EventArgs e) new MOTOJXC.SaleStock. frmSellStockSum ().Show(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 27 页,共 47 页 - - - - - - - - - privatevoid fileSellStockStatus_Click(object sender, EventArgs e) new MOTOJXC.SaleStock. frmSellStockStatus().Show(); privatevoid fileSellStockOrderBy_Click(object sender, EventArgs e) new MOTOJXC.SelectDataDialog.frmSelectOrderby().Show(); privatevoid fileSellStockCost_Click(object sender, EventArgs e) new MOTOJXC.SaleStock. frmSellStockCost().Show(); privatevoid fileStockStatus_Click(object sender, EventArgs e) new MOTOJXC.Stock.frmStockStatus().Show(); privatevoid fileUpperLimit_Click(object sender, EventArgs e) new MOTOJXC.Stock.frmUpperLimit().Show(); privatevoid fileLowerLimit_Click(object sender, EventArgs e) new MOTOJXC.Stock.frmLowerLimit().Show(); privatevoid fileCheckStock_Click(object sender, EventArgs e) new MOTOJXC.Stock.frmCheckStock ().Show(); privatevoid本单位 ToolStripMenuItem_Click(object sender, EventArgs e) new MOTOJXC.SetSystem.frmUnits ().Show(); privatevoid fileUnitsList_Click(object sender, EventArgs e) new MOTOJXC.BuyStock.frmUnitsList().Show(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 28 页,共 47 页 - - - - - - - - - privatevoid fileCurrentBook_Click(object sender, EventArgs e) new MOTOJXC.BuyStock.frmUnitsList().Show(); privatevoid fileBakupAndRestor_Click(object sender, EventArgs e) new MOTOJXC.SetSystem.frmBakup().Show(); privatevoid fileClearTable_Click(object sender, EventArgs e) new MOTOJXC.SetSystem.frmClearTable().Show(); privatevoid fileSetOP_Click(object sender, EventArgs e) new MOTOJXC.SetSystem.frmSetOP().Show(); privatevoid frmSysPopedom_Click(object sender, EventArgs e) new MOTOJXC.SetSystem.frmSetOP().Show(); privatevoid fileEnd_Click(object sender, EventArgs e) Application.Exit(); privatevoid frmMain_FormClosed(object sender, FormClosedEventArgs e) Application.Exit(); privatevoid登录 ToolStripMenuItem_Click(object sender, EventArgs e) System.Diagnostics.Process .Start(iexplore.exe); privatevoid启动 WordToolStripMenuItem_Click(object sender, EventArgs e) System.Diagnostics.Process .Start(WINWORD.EXE); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 29 页,共 47 页 - - - - - - - - - privatevoid启动 ExcelToolStripMenuItem_Click(object sender, EventArgs e) System.Diagnostics.Process .Start(excel.exe); privatevoid系统计算器 ToolStripMenuItem_Click(object sender, EventArgs e) System.Diagnostics.Process .Start(calc.exe); privatevoid frmMain_Load(object sender, EventArgs e) 3 进货单模块using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace MOTOJXC.BuyStock publicpartialclassfrmBuyStock : Form BaseClass.BaseInfo baseinfo = new MOTOJXC.BaseClass.BaseInfo (); BaseClass.cBillInfo billinfo = new MOTOJXC.BaseClass.cBillInfo(); BaseClass.cCurrentAccount currentAccount = new MOTOJXC.BaseClass.cCurrentAccount(); BaseClass.cStockInfo stockinfo = new MOTOJXC.BaseClass.cStockInfo(); public frmBuyStock() InitializeComponent(); privatevoid frmBuyStock_Load(object sender, EventArgs e) txtBillDate.Text = DateTime.Now.ToString(yyyy-MM-dd ); DataSet ds = null ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 30 页,共 47 页 - - - - - - - - - string P_Str_newBillCode = ; int P_Int_newBillCode = 0; ds = baseinfo.GetAllBill(tb_warehouse_main); if (ds.Tables0.Rows.Count = 0) txtBillCode.Text = DateTime.Now.ToString(yyyyMMdd)+ JH +1000001 ; else P_Str_newBillCode = Convert .ToString(ds.Tables0.Rowsds.Tables0.Rows.Count - 1billcode); P_Int_newBillCode = Convert .ToInt32(P_Str_newBillCode.Substring(10, 7) + 1; P_Str_newBillCode = DateTime.Now.ToString(yyyyMMdd) + JH + P_Int_newBillCode.ToString(); txtBillCode.Text = P_Str_newBillCode; txtHandle.Focus(); privatevoid btnSelectHandle_Click(object sender, EventArgs e) MOTOJXC.SelectDataDialog.frmSelectHandle selecthandle; selecthandle= new MOTOJXC.SelectDataDialog.frmSelectHandle(); selecthandle.buyStock = this ; / 将新创建的窗体对象设置为同一个窗体类的实例(对象) selecthandle.M_str_object = BuyStock ; / 用于识别是那一个窗体调用的selecthandle窗口的 selecthandle.ShowDialog(); privatevoid btnSave_Click(object sender, EventArgs e) / 往来单位和经手人不能为空!if (txtHandle.Text = string.Empty | txtUnits.Text = string.Empty) MessageBox .Show( 供货单位和经手人为必填项! , 错误提示, MessageBoxButtons .OK, MessageBoxIcon.Error); return ; / 列表中数据不能为空if ( Convert .ToString(dgvStockList3, 0.Value) = string.Empty | Convert .ToString(dgvStockList4, 0.Value) = string.Empty | Convert .ToString(dgvStockList5, 0.Value) = string.Empty) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 31 页,共 47 页 - - - - - - - - - MessageBox .Show( 请核实列表中数据:数量、单价、金额不能为空!, 错误提示 , MessageBoxButtons .OK, MessageBoxIcon.Error); return ; / 应付金额不能为空if (txtFullPayment.Text.Trim() = 0 ) MessageBox .Show( 应付金额不能为! , 错误提示 , MessageBoxButtons .OK, MessageBoxIcon.Error); return ; / 向进货表(主表)录入配件单据信息 billinfo.BillCode = txtBillCode.Text; billinfo.Handle = txtHandle.Text; billinfo.Units = txtUnits.Text; billinfo.Summary = txtSummary.Text; billinfo.FullPayment =Convert .ToSingle(txtFullPayment.Text); billinfo.Payment = Convert .ToSingle(txtpayment.Text); / 执行添加 baseinfo.AddTableMainWarehouse(billinfo, tb_warehouse_main); / 向进货(明细表)中录入配件单据信息for ( int i = 0; i dgvStockList.RowCount-1; i+) billinfo.BillCode = txtBillCode.Text; billinfo.TradeCode = dgvStockList0, i.Value.ToString(); billinfo.FullName = dgvStockList1, i.Value.ToString(); billinfo.TradeUnit = dgvStockList2, i.Value.ToString(); billinfo.Qty = Convert .ToSingle(dgvStockList3, i.Value.ToString(); billinfo.Price = Convert .ToSingle(dgvStockList4, i.Value.ToString(); billinfo.TSum = Convert .ToSingle(dgvStockList5, i.Value.ToString(); / 执行多行录入数据(添加到明细表中) baseinfo.AddTableDetailedWarehouse(billinfo, tb_warehouse_detailed); / 更改库存数量和加权平均价格DataSet ds = null ; stockinfo.TradeCode=dgvStockList0, i.Value.ToString(); ds=baseinfo.GetStockByTradeCode(stockinfo, tb_Stock); stockinfo.Qty =Convert .ToSingle(ds.Tables0.Rows0qty); stockinfo.Price =Convert .ToSingle(ds.Tables0.Rows0price); stockinfo.AveragePrice = Convert .ToSingle(ds.Tables0.Rows0averageprice); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 32 页,共 47 页 - - - - - - - - - / 处理 - 加权平均价格if (stockinfo.Price = 0) stockinfo.AveragePrice = billinfo.Price; / 第一次进货时,加权平均价格等于进货价格 stockinfo.Price = billinfo.Price; else / 加权平均价格 =(加权平均价 * 库存总数量 +本次进货价格 * 本次进货数量) /(库存总数量 +本次进货数量) stockinfo.AveragePrice = (stockinfo.AveragePrice * stockinfo.Qty + billinfo.Price * billinfo.Qty) / (stockinfo.Qty + billinfo.Qty); / 更新 - 配件库存数量 stockinfo.Qty = stockinfo.Qty + billinfo.Qty; int d = baseinfo.UpdateStock_QtyAndAveragerprice(stockinfo); / 向往来单位明细表- 录入数据 - 这样以来为分析 currentAccount.BillCode = txtBillCode.Text; currentAccount.ReduceGathering =Convert .ToSingle(txtFullPayment.Text); currentAccount.FactReduceGathering =Convert .ToSingle(txtpayment.Text); currentAccount.Balance =Convert .ToSingle(txtBalance.Text); currentAccount.Units = txtUnits.Text; / 执行添加int ca = baseinfo.AddCurrentAccount(currentAccount); MessageBox .Show( 进货单过账成功!, 成功提示, MessageBoxButtons .OK, MessageBoxIcon.Information); this .Close(); privatevoid btnSelectUnits_Click(object sender, EventArgs e) MOTOJXC.SelectDataDialog.frmSelectUnits selectUnits; selectUnits = new MOTOJXC.SelectDataDialog.frmSelectUnits(); selectUnits.buyStock = this ; / 将新创建的窗体对象设置为同一个窗体类的实例(对象) selectUnits.M_str_object = BuyStock ; / 用于识别是那一个窗体调用的selectUnits窗口的 selectUnits.ShowDialog(); privatevoid dgvStockList_CellDoubleClick(object sender, DataGridViewCellEventArgs e) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 33 页,共 47 页 - - - - - - - - - SelectDataDialog.frmSelectStock selectStock = newMOTOJXC.SelectDataDialog. frmSelectStock(); selectStock.buyStock = this ; / 将新创建的窗体对象设置为同一个窗体类的实例(对象) selectStock.M_int_CurrentRow = e.RowIndex; selectStock.M_str_object = BuyStock ; / 用于识别是那一个窗体调用的selectStock窗口的 selectStock.ShowDialog(); privatevoid btnEixt_Click(object sender, EventArgs e) this .Close(); privatevoid dgvStockList_CellValueChanged(objectsender, DataGridViewCellEventArgse) if (e.ColumnIndex = 3) / 计算统计配件金额 try floattsum = Convert .ToSingle(dgvStockList3, e.RowIndex.Value.ToString() * Convert .ToSingle(dgvStockList4, e.RowIndex.Value.ToString(); dgvStockList5, e.RowIndex.Value = tsum.ToString(); catch if (e.ColumnIndex = 4) try floattsum = Convert .ToSingle(dgvStockList3, e.RowIndex.Value.ToString() * Convert .ToSingle(dgvStockList4, e.RowIndex.Value.ToString(); dgvStockList5, e.RowIndex.Value = tsum.ToString(); catch privatevoid dgvStockList_CellStateChanged(object sender, DataGridViewCellStateChangedEventArgs e) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 34 页,共 47 页 - - - - - - - - - / 统计配件进货数量和金额try float tqty = 0; float tsum = 0; for ( int i = 0; i = dgvStockList.RowCount; i+) tsum = tsum + Convert .ToSingle(dgvStockList5, i.Value.ToString(); tqty = tqty + Convert .ToSingle(dgvStockList3, i.Value.ToString(); txtFullPayment.Text = tsum.ToString(); txtStockQty.Text = tqty.ToString(); catch privatevoid txtpayment_TextChanged(object sender, EventArgs e) try txtBalance.Text = Convert .ToString(Convert .ToSingle(txtFullPayment.Text) - Convert .ToSingle(txtpayment.Text); catch ( Exception ex) MessageBox .Show( 录入非法字符! +ex.Message, 错误提示, MessageBoxButtons .OK, MessageBoxIcon.Error); txtpayment.Focus(); 4 销售单代码清单using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace MOTOJXC.SaleStock 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 35 页,共 47 页 - - - - - - - - - publicpartialclassfrmSellStock : Form BaseClass.BaseInfo baseinfo = new MOTOJXC.BaseClass.BaseInfo (); BaseClass.cBillInfo billinfo = new MOTOJXC.BaseClass.cBillInfo(); BaseClass.cCurrentAccount currentAccount = new MOTOJXC.BaseClass.cCurrentAccount(); BaseClass.cStockInfo stockinfo = new MOTOJXC.BaseClass.cStockInfo(); public frmSellStock() InitializeComponent(); privatevoid frmSellStock_Load(object sender, EventArgs e) txtBillDate.Text = DateTime.Now.ToString(yyyy-MM-dd ); DataSet ds = null ; string P_Str_newBillCode = ; int P_Int_newBillCode = 0; ds = baseinfo.GetAllBill(tb_sell_main); if (ds.Tables0.Rows.Count = 0) txtBillCode.Text = DateTime.Now.ToString(yyyyMMdd) + XS + 1000001 ; else P_Str_newBillCode = Convert .ToString(ds.Tables0.Rowsds.Tables0.Rows.Count - 1billcode); P_Int_newBillCode = Convert .ToInt32(P_Str_newBillCode.Substring(10, 7) + 1; P_Str_newBillCode = DateTime.Now.ToString(yyyyMMdd) + XS + P_Int_newBillCode.ToString(); txtBillCode.Text = P_Str_newBillCode; txtHandle.Focus(); privatevoid btnSelectHandle_Click(object sender, EventArgs e) MOTOJXC.SelectDataDialog.frmSelectHandle selecthandle; selecthandle = new MOTOJXC.SelectDataDialog.frmSelectHandle(); selecthandle.sellStock = this ; / 将新创建的窗体对象设置为同一个窗体类的实例(对象) selecthandle.M_str_object = SellStock; / 用于识别是那一个窗体调用的selecthandle窗口的 selecthandle.ShowDialog(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 36 页,共 47 页 - - - - - - - - - privatevoid btnSelectUnits_Click(object sender, EventArgs e) MOTOJXC.SelectDataDialog.frmSelectUnits selectUnits; selectUnits = new MOTOJXC.SelectDataDialog.frmSelectUnits(); selectUnits.sellStock = this ; / 将新创建的窗体对象设置为同一个窗体类的实例(对象) selectUnits.M_str_object = SellStock; / 用于识别是那一个窗体调用的selectUnits窗口的 selectUnits.ShowDialog(); privatevoid dgvStockList_CellDoubleClick(object sender, DataGridViewCellEventArgs e) SelectDataDialog.frmSelectStock selectStock = newMOTOJXC.SelectDataDialog. frmSelectStock(); selectStock.sellStock = this ; / 将新创建的窗体对象设置为同一个窗体类的实例(对象) selectStock.M_int_CurrentRow = e.RowIndex; selectStock.M_str_object = SellStock; / 用于识别是那一个窗体调用的selectStock窗口的 selectStock.ShowDialog(); privatevoid dgvStockList_CellStateChanged(object sender, DataGridViewCellStateChangedEventArgs e) / 统计配件进货数量和金额try float tqty = 0; float tsum = 0; for ( int i = 0; i = dgvStockList.RowCount; i+) tsum = tsum + Convert .ToSingle(dgvStockList5, i.Value.ToString(); tqty = tqty + Convert .ToSingle(dgvStockList3, i.Value.ToString(); txtFullPayment.Text = tsum.ToString(); txtStockQty.Text = tqty.ToString(); catch 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 37 页,共 47 页 - - - - - - - - - privatevoid dgvStockList_CellValueChanged(objectsender, DataGridViewCellEventArgse) if (e.ColumnIndex = 3) / 计算统计配件金额 try floattsum = Convert .ToSingle(dgvStockList3, e.RowIndex.Value.ToString() * Convert .ToSingle(dgvStockList4, e.RowIndex.Value.ToString(); dgvStockList5, e.RowIndex.Value = tsum.ToString(); catch if (e.ColumnIndex = 4) try floattsum = Convert .ToSingle(dgvStockList3, e.RowIndex.Value.ToString() * Convert .ToSingle(dgvStockList4, e.RowIndex.Value.ToString(); dgvStockList5, e.RowIndex.Value = tsum.ToString(); catch privatevoid txtpayment_TextChanged(object sender, EventArgs e) try txtBalance.Text = Convert .ToString(Convert .ToSingle(txtFullPayment.Text) - Convert .ToSingle(txtpayment.Text); catch ( Exception ex) MessageBox .Show( 录入非法字符! + ex.Message, 错误提示 , MessageBoxButtons .OK, MessageBoxIcon.Error); txtpayment.Focus(); privatevoid btnSave_Click(object sender, EventArgs e) / 往来单位和经手人不能为空!if (txtHandle.Text = string.Empty | txtUnits.Text = string.Empty) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 38 页,共 47 页 - - - - - - - - - MessageBox .Show( 供货单位和经手人为必填项!, 错误提示 , MessageBoxButtons .OK, MessageBoxIcon.Error); return ; / 列表中数据不能为空if ( Convert .ToString(dgvStockList3, 0.Value) = string.Empty | Convert .ToString(dgvStockList4, 0.Value) = string.Empty | Convert .ToString(dgvStockList5, 0.Value) = string.Empty) MessageBox .Show( 请核实列表中数据:数量、单价、金额不能为空!, 错误提示 , MessageBoxButtons .OK, MessageBoxIcon.Error); return ; / 应付金额不能为空if (txtFullPayment.Text.Trim() = 0 ) MessageBox .Show( 应付金额不能为! , 错误提示 , MessageBoxButtons .OK, MessageBoxIcon.Error); return ; / 向销售表(主表)录入配件单据信息 billinfo.BillCode = txtBillCode.Text; billinfo.Handle = txtHandle.Text; billinfo.Units = txtUnits.Text; billinfo.Summary = txtSummary.Text; billinfo.FullPayment = Convert .ToSingle(txtFullPayment.Text); billinfo.Payment = Convert .ToSingle(txtpayment.Text); / 执行添加 baseinfo.AddTableMainSellhouse(billinfo, tb_sell_main); / 向销售(明细表)中录入配件单据信息for ( int i = 0; i dgvStockList.RowCount - 1; i+) billinfo.BillCode = txtBillCode.Text; billinfo.TradeCode = dgvStockList0, i.Value.ToString(); billinfo.FullName = dgvStockList1, i.Value.ToString(); billinfo.TradeUnit = dgvStockList2, i.Value.ToString(); billinfo.Qty = Convert .ToSingle(dgvStockList3, i.Value.ToString(); billinfo.Price = Convert .ToSingle(dgvStockList4, i.Value.ToString(); billinfo.TSum = Convert .ToSingle(dgvStockList5, i.Value.ToString(); / 执行多行录入数据(添加到明细表中) baseinfo.AddTableDetailedWarehouse(billinfo, tb_sell_detailed); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 39 页,共 47 页 - - - - - - - - - / 更改库存数量DataSet ds = null ; stockinfo.TradeCode = dgvStockList0, i.Value.ToString(); ds = baseinfo.GetStockByTradeCode(stockinfo, tb_Stock); stockinfo.Qty = Convert .ToSingle(ds.Tables0.Rows0qty ); stockinfo.Qty = stockinfo.Qty - billinfo.Qty; int d = baseinfo.UpdateSaleStock_Qty(stockinfo); / 向往来单位明细表- 录入数据 - 这样以来为分析 currentAccount.BillCode = txtBillCode.Text; currentAccount.AddGathering = Convert .ToSingle(txtFullPayment.Text); currentAccount.FactAddFee = Convert .ToSingle(txtpayment.Text); currentAccount.Balance = Convert .ToSingle(txtBalance.Text); currentAccount.Units = txtUnits.Text; / 执行添加int ca = baseinfo.AddCurrentAccount(currentAccount); MessageBox .Show( 销售单过账成功!, 成功提示 , MessageBoxButtons .OK, MessageBoxIcon.Information); this .Close(); privatevoid btnEixt_Click(object sender, EventArgs e) this .Close(); 5 库存盘点模块using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace MOTOJXC.Stock publicpartialclassfrmCheckStock : Form BaseClass.BaseInfo baseinfo = new MOTOJXC.BaseClass.BaseInfo (); BaseClass.cStockInfo stockinfo = new MOTOJXC.BaseClass.cStockInfo(); string G_Str_tradecode = ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 40 页,共 47 页 - - - - - - - - - public frmCheckStock() InitializeComponent(); / 设置 DataGridView 标题privatevoid SetdgvStockListHeadText() dgvStockList.Columns0.HeaderText = 配件编号 ; dgvStockList.Columns1.HeaderText = 配件名称 ; dgvStockList.Columns2.HeaderText = 配件型号 ; dgvStockList.Columns3.HeaderText = 配件规格 ; dgvStockList.Columns4.HeaderText = 配件单位 ; dgvStockList.Columns5.HeaderText = 配件产地 ; dgvStockList.Columns6.HeaderText = 库存数量 ; dgvStockList.Columns7.Visible = false ; dgvStockList.Columns8.Visible = false ; dgvStockList.Columns9.Visible = false ; dgvStockList.Columns10.HeaderText = 盘点数量 ; dgvStockList.Columns11.Visible = false ; dgvStockList.Columns12.Visible = false ; privatevoid tlBtnFind_Click(object sender, EventArgs e) if (tlCmbStockType.Text = string.Empty) MessageBox .Show( 查询类别不能为空! , 错误提示! , MessageBoxButtons .OK, MessageBoxIcon.Error); tlCmbStockType.Focus(); return ; else if (tlTxtFindStock.Text.Trim() = string.Empty) dgvStockList.DataSource = baseinfo.GetAllStock(tb_stock).Tables0.DefaultView; this .SetdgvStockListHeadText(); return ; DataSet ds = null ; / 创建DataSet 对象if (tlCmbStockType.Text = 配件产地 ) / 按单位编号查询名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 41 页,共 47 页 - - - - - - - - - stockinfo.Produce = tlTxtFindStock.Text; ds = baseinfo.FindStockByProduce(stockinfo, tb_Stock); dgvStockList.DataSource = ds.Tables0.DefaultView; else/ 按单位名称查询 stockinfo.FullName = tlTxtFindStock.Text; ds = baseinfo.FindStockByFullName(stockinfo, tb_stock); dgvStockList.DataSource = ds.Tables0.DefaultView; this .SetdgvStockListHeadText(); privatevoid frmCheckStock_Load(object sender, EventArgs e) dgvStockList.DataSource = baseinfo.GetAllStock(tb_stock).Tables0.DefaultView; this .SetdgvStockListHeadText(); privatevoid dgvStockList_CellEnter(object sender, DataGridViewCellEventArgs e) tltxtFullName.Text = dgvStockList1, e.RowIndex.Value.ToString(); G_Str_tradecode = dgvStockList0, e.RowIndex.Value.ToString(); privatevoid tlbtnCheckStock_Click(object sender, EventArgs e) if (tltxtCheckStock.Text = string.Empty) MessageBox .Show( 盘点数量不能为空! , 错误提示, MessageBoxButtons .OK, MessageBoxIcon.Error); return ; / 验证输入的文本必须为阿拉伯数字。for ( int i = 0; i tltxtCheckStock.Text.Length; i+) if (!Char.IsNumber(tltxtCheckStock.Text, i) MessageBox .Show( 库存上限设置必须为阿拉伯数字! , 错误提示 , MessageBoxButtons .OK, MessageBoxIcon.Error); return ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 42 页,共 47 页 - - - - - - - - - stockinfo.TradeCode = G_Str_tradecode; stockinfo.Check = Convert .ToSingle(tltxtCheckStock.Text); int d= baseinfo.CheckStock(stockinfo); dgvStockList.DataSource = baseinfo.GetAllStock(tb_stock).Tables0.DefaultView; this .SetdgvStockListHeadText(); MessageBox .Show( 保存库存配件盘点成功! , 成功提示, MessageBoxButtons .OK, MessageBoxIcon.Information); privatevoid tlBtnExit_Click(object sender, EventArgs e) this .Close(); 10.6 测试说明经测试系统可以准确运行10.7 复审的结论9 测试分析报告测试分析报告的编写是为了把组装测试和确认测试的结果、发现及分析写成文件加以记载,具体的编写内容要求如下:12.1 引言12.1.1 编写目的12.1.2 背景12.1.3 定义12.1.4 参考资料12.2 测试概要12.3 测试结果及发现12.3.1 测试 1(标识符)与数据库联接的测试using System; using System.Collections.Generic; using System.Text; / 引用类库using System.Data.SqlClient; using System.Data; namespace MOTOJXC.BaseClass classDataBase: IDisposable 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 43 页,共 47 页 - - - - - - - - - privateSqlConnection con; / 创建连接对象 #region打开数据库连接/ /打开数据库连接 . / privatevoid Open() / 打开数据库连接if (con = null ) con = new SqlConnection ( Data Source=(local);DataBase=db_CMS;User ID=sa;PWD=sa); if (con.State = System.Data.ConnectionState.Closed) con.Open(); #endregion其中的 Data Source= (local );DataBase=db_CMS;User ID=sa;PWD=sa 要改为 Data Source=GUYUN-PC;DataBase=db_MOTOJXC;User ID=sa;PWD=sa12.3.2 测试 2(标识符),12.4 对软件功能的结论12.4.1 功能 1(标识符)12.4.1.1 能力12.4.1.2 限制12.4.2 功能 2(标识符),12.5 分析摘要13.5.1 能力12.5.2 缺陷和限制12.5.3 建议12.5.4 评价12.6 测试资源消耗10用户手册用户手册的编制是要使用非专门术语的语言,充分地描述该软件系统工程所具有的功能及基本的使用方法。使用户(或潜在用户)通过本手册能够了解该软件的用途,并且能够确定在什么情况下,如何使用它。具体的内容要求如下:8.1引言8.1.1编写目的8.1.2背景8.1.3定义8.1.4参考资料名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 44 页,共 47 页 - - - - - - - - - 8.2 终端操作在使用本系统时,请按照以下流程进行操作:(1)在“系统维护”菜单中的“数据清理”模块中清空原始数据。(2)在“系统维护”菜单中的“系统管理设置”模块设置本单位的操作员。(3)在“系统维护”菜单中的“本单位信息”模块中设置本单位信息。(4)在“基础数据”菜单中设置基本信息。(5)在“库存管理”菜单中的“库存状况”模块中设置商品的库存上下限。(6)在“进货管理”菜单中的“进货单”模块中添加商品的进货信息。(7)在“进货管理”菜单中的“进货退货单”模块中可以添加进货退货信息。(8)在“进货管理”菜单中的“进货分析”模块和“进货统计(含退货)”模块中可以查看到所有的进货信息和进货退货信息。(9)在“销售管理”菜单中的“销售单”模块中添加销售信息。(10 )在“销售管理”菜单中的“销售退货单”模块中添加销售退货信息。(11)在“销售管理”菜单中的“销售统计(不含退货)”模块和“月销售状况”模块中查看销售记录和销售退货记录。(12)在“销售管理”菜单中的“商品销售排行”模块中可以查看某一时间段的销售排行榜。(13)在“销售管理”菜单中的“销售成本表”模块中可以查看商品的成本及毛利。(14)在“销售管理”菜单或“进货管理”菜单中的“往来对账”模块中查看与某单位间的账目情况。(15)在“库存管理”菜单中的“库存上限报警”、 “库存下限报警”模块中查看商品的库存数量。(16)在“库存管理”菜单中的“库存盘点”模块中设置盘点数量。(17)在“系统维护”菜单中可以对系统数据进行清理及备份。(18) “辅助工具”和“系统信息”菜单中提供了一些辅助功能。本系统的初始用户名为“guyun” ,密码为“ guyun”默认登陆帐号/密码: guyun/guyun 11 开发进度月报开发进度月报的编制目的是及时向有关管理部门汇报项目开发的进展和情况,以便能及时发现或处理开发过程中出现的问题。一般地,开发进度月报是以项目组为单位每月编写的。如果被开发的软件系统规模比较大,整个工程项目被划分给若干个分项目组承担,开发进度月报将以项目组为单位按月编写。具体的内容要求如下:13.1 标题13.2 工程进度与状态13.2.1 进度在规定时间内完成了软件开发任务13.2.2 状态名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 45 页,共 47 页 - - - - - - - - - 13.3 资源耗用与状态13.3.1 资源耗用13.3.1.1 工时3 weeks 13.3.1.2 机时13.3.2 状态13.4 经费支出与状态13.4.1 经费支出13.4.1.1 支持性费用13.4.1.2 设备购置费13.4.2 状态13.5 下个月的工作计划13.6 建议12 项目开发总结报告项目开发总结报告的编制是为了总结本项目开发工作的经验,说明实际取得的开发结果以及对整个开发工作的各个方面的评价。具体的内容要求如下:14.1 引言14.1.1 编写目的记录下本次软件开发过程中的经验总结教训,为以后的开发工作提供指导14.1.2 背景14.1.3 定义14.1.4 参考资料14.2 实际开发结果14.2.1 产品摩托车配件进销存管理系统14.2.2 主要功能和性能本系统主要实现了支持多条件查询、批量填写进货单及销售单、与代理商和供应商往来账本明细,绝不存在假账、漏账、差账等情况、图表分析月销售状况、当外界环境(停电、网络病毒)干扰本系统时,系统可以自动保护原始数据的安全、强大的报表打印等功能。14.2.3 基本流程14.2.4 进度14.2.5 费用14.3 开发工作评价14.3.1 对生产率的评价总体而言还算可以14.3.2 对产品质量的评价比较好但仍有不足名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 46 页,共 47 页 - - - - - - - - - 14.3.3 对技术方法的评价开发所用的c#语言是一个明智地选择,vs2005 强大的可视化开发环境裨益很明显,为开发工作带来了很多便利,sql server 2005是一款功能强大的企业级数据库,为系统数据的安全稳定提供了良好的保障14.3.4 出错原因的分析本系统的开发过程中不可避免的出现了很多错误,后来仔细想想, 还是自己的开发经验还明显不足所致,心态也不够稳定,开发过程中急于求成,往往忽略了很多重要的细节名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 47 页,共 47 页 - - - - - - - - -
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号