第一篇:毕业设计-小型超市销售管理系统(VB)DOC
姓名
班号
专业
计算机科学与技术
同组姓名
独自一组
指导教师
小 型 超 市 销 售 管 理 系 统
摘 要
本文介绍了小型超市销售管理系统开发全过程。系统的开发采用Visual Basic 6.0 和SQL Server 2000,并以Windows 2000Server 作为开发平台。
本系统是市场上最流行的超市上常用的系统之一,它主要包含以下几个模块:系统权限的设定、原始数据录入、数据的汇总及查询等。从而,实现对进货、库存、销售及员工信息等实现全面、动态、及时的管理。
本文系统的分析了软件开发的背景及过程;首先介绍了软件的开发环境,其次介绍了本软件的详细设计过程:数据库的设计、各个模块的设计和实现,以及具体界面的设计和功能。最后对在本软件开发过程中的问题进行了总结。
通过阅读该论文,读者可以了解到“小型超市销售管理系统”的规划、设计过程,掌握系统的功能。同时对当前比较具有代表性的微软公司开发工具VisualBasic 6.0 和功能强大的数据库开发工具SQL Server 2000 以及数据库连接技术有一定了解。
关键词:进销存管理系统,VB6.0,SQL Server 2000
Abstract
The paper narrates the total process about the Business Invoicing and Inventory System of ShenYang GuanTian Technology Incorporated Company.This system based on Windows 2000 and it is developed with Visual Basic 6.0 and SQL Server 2000.The system was customized for ShenYang GuanTian Technology Incorporated Company which includes system operators' setting, the original data's input and modification, the gathering and searching for the information.Thus, it makes Invoicing and Inventory information's Management System in a total, dynamic and timely way.The paper systematically analyses the system development background and development process.Firstly, the paper introduce the software development circumstance, secondly, it discussed the system development detailed design process which includes database designing, function blocks designing and implement and interface designing as well.Finally, I summarize some problems that met during the course of development.The reader can know IIS's planning, designing process and grasp the system function through the reading.At the same time, he can learn the most representative development tool at present –Visual Basic 6.0, the powerful database development tool--SQL Server 2000 and the technology in connecting databases with Visual Basic--ActiveX Data Objects(ADO).Key words: IIS, VB 6.0, SQL Server 2000
目录
摘 要.................................................................2 Abstract..............................................................3 目录..................................................................4 前言..................................................................5 第一章 系统开发概述...................................................8 1.1 计算机技术发展................................................8 1.2 数据库技术....................................................9 1.3 系统目标.....................................................10 1.4 系统设计原则.................................................11 第二章 课题开发的理论依据...........................................12 2.1 SQL Server 2000 简介.........................................12 相对于7.0的忧越性............................................13 2.2 Visual Basic 6.0 简介........................................14 2.3 面对对象的程序设计介绍.......................................15 2.4 系统开发理论介绍.............................................16
一、系统规划阶段..............................................17
二、系统分析阶段..............................................17
三、系统设计阶段..............................................17
四、系统实施阶段..............................................17
五、系统运行和维护阶段........................................18 第三章 系统总体设计.................................错误!未定义书签。
3.1 系统功能分析及功能的实现.....................错误!未定义书签。3.2 数据库设计...................................错误!未定义书签。3.3 系统运行环境.................................错误!未定义书签。第四章 系统详细设计.................................................19 4.1、系统功能总括................................错误!未定义书签。4.2、程序各功能详细设计..........................错误!未定义书签。
1用户管理模块的设计..........................错误!未定义书签。2其他方面设计................................错误!未定义书签。
第五章 系统的问题与调试.............................................19 第六章 致谢.........................................................20 参考文献.............................................................21
前言
该小型超市销售管理系统,主要含超市的进、销、存以及人事管理系统。开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者,要求建立起数据一致性和完整性强.数据安全性好的库。而对于后者,则要求应用程序功能完备,界面亲切并且易使用等特点。
经过分析情况,我使用了微软公司的Visual Basic 6.0。它是Windows应用程序开发工具,是目前最为广泛的、易学易用的面向对象的开发工具。Visual Basic 6.0提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。故而,实现本系统Visual Basic 6.0 是一个相对较好的选择。
小型超市销售管理系统是一个大从型超市进货、销售、库存及人事管理工作的核心,它的内容对于各类型超市的决策者和管理者来说都至关重要,所以小型超市销售管理系统应该能够为超市工作者提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
作为计算机应用的一部分,使用计算机对进销存及人事信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高公司进货、销售及库存和人事管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。
现在可以见到的小型超市销售管理系统林林总总,为什么从新开发一个新的超市系统还具有必要性呢?因为,虽然市场上可以见到的小型超市销售管理系统往往是为了广泛面的用户而开发的或是为了某个特定的公司开发的。往往存在着功能“大、全”所造成的严重资源浪费,或是功能对于另外的即将使用该系统的公司具体状况的情况不适用等情况。以某个特定的环境为背景而重新开发的小型超市销售管理系统首先的优点就是:程序员能对市场上超市的情况有更加深入的理解、对各类型的超市管理需求有着更加深入的调查研究;大小适用,功能适当则是针对普遍超市商家编写软件的另一个优点。多数商业小型超市销售管理系统存在着功能大而全却没有重点的情况,往往是许多用户浪费了其中的许多功能,又导致了界面的凌乱,给层次稍低的用户带来使用上的不方便。而且在培训员工时又大大浪费了培训所带来的经济负担。
本着上面几点,我在对大部分普遍使用的小型超市销售管理系统的需求进行调查研究的基础上,重新开发了具有针对性的小型超市销售管理系统,着重考虑了普遍商家的现实情况和使用的方便易用程度而设计了本软件,能让市场上大多数超市的企业家、超市老板等节约开发程序、培训员工等带来的经济负担,也让他们在管理上感到得心应手,如水得鱼。
第一章 系统开发概述
近年来,计算机技术飞速发展几乎超出了人们的想象,硬件的更新换代速度更是以级数进行。计算机在处理对象、处理方法上都发生了很大的变化。作为计算机科学的重要分支——数据库技术,也被越来越多的应用领域采用来存储和处理他们的信息资源。计算机已经不再仅仅是科学研究的工具,它越来越多的影响到了我们的生活的诸多方面,更多的应用软件出现在了我们的身边,给人们生活的方方面面都带来了极大的便利。
1.1 计算机技术发展
在计算机硬件和软件技术不断创新和进步的背景下,计算机技术在20 世纪有许多重大突破,它涉及到人们生活的方方面面,主要可以归结为以下四个方面:
第一、处理对象的变化。在计算机应用初期,计算机的处理主要是数值和简单的符号。随着计算机速度和存储容量的增大,今天的计算机已经能够处理声、图、文和语言等多种信息,除二维、静止图像外,还可以处理三维运动的图像等等。也就是说,人类使用的任何信息形式现在计算机都可以处理了。这不仅使计算机的用途大大地扩展,而且使今天的用户能够从计算机的屏幕上看到图文并茂,有声有色的画面。从而使计算机从专业人员圈子中走出来,走向普通用户,走向平民百姓。
第二、处理方法或建模方法的进步,传统计算机的应用只限制在数学模型为基础的数值计算上。不管是科学计算,数据处理还是计算机自动化,这些都离不开数值计算,因此让计算机做任何事情之前,首先需要建立数学模型:算数的、代数的、微积分的、等等,没有数学模型计算机无从进行计算,这些使所有传统算法的基础,到了20 世纪中叶,由于人工智能的出现以及它所取得的成就,计算机应用开始突破这一限制——计算机能够进行符号计算,记忆逻辑和知识为基础的符号推理。这些突破极大地扩展了计算机的应用范围,使那些无法用数学表达的问题,只要人们有足够的经验知识,计算机就可能根据这些知识进行模拟,达到问题求解的目的,实现所谓人工智能,人们希望那些目前大家了解还不深,或者还就不清楚的问题,计算机也能帮助解决,软计算就是这个背景下提出的。二十世纪的七八十年代,提出的模糊计算,神经网络计算以及进化计算等,都是希望计算机能够进一步处理模糊概念、模糊推理等类问题,是计算机在先前经验只是较弱的情况下,也能帮助人们处理疑难问题、软计算或计算智能给人们带来希望,因此成为近来研究的热点。
第三、处理方式的变化。在处理方式上人们也经历了三个阶段。在早期的主机 8 时代,人们采用的是集中交互处理的模式。这两种方式都是以各人单独工作的中心的,现在我们进入了计算机网络时代,人们的工作方式发生了很大转变,走向分布协同工作的时代。总之,以上这些变化会影响到21 世纪计算机应用技术的发展和变化。
第四、硬件技术的提高。伴随着时代的发展,由最初的电子管计算机发展到即将到来的量子计算机,计算速度也发展到了最初计算机的数万倍以上。在外型上,从桌上型、笔记型(Notebook)到掌上型计算机,不管是功能上的提升或可携带性的特色,都显示出未来计算机将以轻薄短小,容易携带为主。随着计算机进一步的小型化,人工智能将越来越强地集成到我们的环境中。便携设备将像装饰品一样穿在衣服里。个人计算机也不断向着普及的方向发展,各种计算机外设的品质不断提高、丰富,极大的方便了人们的工作和生活。
1.2 数据库技术
数据库技术的发展已经经历了很长的一段时间,从层次型数据库,网状数据库直到今天的关系型数据库以及面向对象的数据库。目前流行的数据库管理系统(DBMS)有多种,其中大型数据库管理系统有Oracle, SQL Server 等,小型数据库管理系统有Foxpro, Access 等,它们已能满足人们对数据库应用的基本要求。今天,网络技术的发展对数据库技术提出了新的要求。人们希望能访问存储在不同网格,不同节点上的数据而不需要了解数据存储的细节,并且能够在系统局部故障的情况下保证数据无损。这就形成了人们对分布式数据库管理系统的部分要求——数据的位置透明性和安全性。本系统采用的开发平台是Windows2000 Server。与其它操作系统相比,Windows2000 Server 更稳定,有较好的网络功能。数据库开发采用的是SQL Server2000,软件的数据库访问及软件开发工具采用的是Visual Basic 6.0,它面向对象的编程方式使程序设计过程大大简化,对数据库的访问更灵活。相对于其他开发环境,Visual Basic6.0使开发人员的工作更快、成本更低、周期更短、质量更高、功能更强。Visual Basic6.0 为应用开发环境提供了全面综合性的支持:事件驱动的应用程序;功能强大的编程语言和函数;面向对象的编程;开放的数据库连接系统。1.系统的安全性
系统的安全性和健壮性,即保证系统在局部故障条件下能持续运行并且系统中的数据无丢失现象,是设计分布式数据库管理系统所必须考虑的问题之一。分布数据库管理系统采用域模式,实行统一管理。在系统运行的任一时刻,整个系统中都存在着唯一的一台主服务器,完成整个系统的维护,包括系统数据字典的维护、用 户视图的生成和分发、安全权限管理等。同时,系统中还应存在多台备份服务器,在主服务器出现故障时,系统中的任何一台备份服务器都有可能被提升为主服务器。由于这个原因,系统中处于正常工作状态的任何备份服务器必须随时与主服务器保持一致。任何对于主服务器中的系统数据字典、用户配置以及安全规则的修改必须同时反映到各个备份服务器上去。当把系统之外的一台机器加入到系统中作为备份服务器时,必须把主服务器中当前保存的全部有关系统资源的库信息复制到该机器上。1.数据透明性
分布式数据库管理系统不仅仅是反数据存储在不同的物理节点上,实现远程查询,更重要的是实现透明的数据管理,例如:查询、修改、复制等。在实现数据透明性方面,采用的方法是使用系统数据字典。系统数据字典是整个数据库管理系统的核心。字典中主要存放了以下内容:
整个数据库管理系统中数据库与数据对象的定义,以及它们之间的相互关系。有关用户存取权限和安全规则的定义。数据库中所定义的一系列的完整性的约束条件。
全局概念模式、分片模式、分布模式的定义以及各模式之间映象的定义,全局用户信息等等。
以上所有信息使得系统中的数据可以更好地组织在一起,从而方便了数据的浏览、查询以及复制等操作;使系统的安全性和完整性得到了有力的保障;使用户可以从全局的角度来操纵系统中的数据。
尽管用户需要访问的数据库可能位于不同的物理节点,但用户看到的是一个完整的统一的数据库——即逻辑数据库。用户在安全规则许可的情况下,可以很方便地访问逻辑数据库中的任何数据,而不需关心他所需要的数据是存储在哪一个网络中,哪一个计算机上,使用的是什么系统,应通过哪种方式去访问等等。这就实现了分布式数据库系统所要求的透明性。根据用户的安全级别,系统生成数据字典的相应的用户视图分发给用户。用户视图屏蔽了系统数据字典中用户不应见到的部分,只给出了对应于用户权限的部分数据,从而进一步保证了数据的安全性。1.3 系统目标
建立一套功能完整的、高效的进销存人事管理系统。
该系统应该是大众型的,符合计算机及非计算机专业的人应用,能让市场上大多数人在短时间内用熟用精,给商家减轻开发系统,培训员工带来的经济负担。系统能够准确反映使用客户在进货、库存、销售方面的各种信息,以帮助决策 10 者制定适宜的销售进货策略。
在人事方面能简单化地适应那些员工多或者少都易于管理的方向。给主权者在改变人事变动方面做到轻松及易于处理。
实现对各种用户类型数据、产品信息、交易情况、交易数量等信息电子化管理、查询,了解进销存各项相关信息。
让上级权限者对下级所做过的操作进行信息管理,比如该系统的经理查询收银员的收银情况,项目经理的进货情况等。
能及时提醒进货员工及时的查询货物进售情况,让进货员工对进货提醒进行设置。
为使用客户进销存管理信息化和电子化打下一个较为良好的软件基础。1.4 系统设计原则
本系统的设计本着简明同适用的原则。应用了当前最适应的开发工具Visual Basic 6.0及最流行的数据库工具SQL SEVER 2000。采用简单明了并且亲切的用户界面,保证了用户使用的方便程度。同时在调查研究的基础上做到了应有、尽有,功能实用而又不拖沓。使本进销存及人事管理系统达到先进、科学、高效的水准。
第二章 课题开发的理论依据
2.1 SQL Server 2000 简介
目前市场上数据库的主流厂商及产品有IBM DB2、Microsoft SQL SERVER 2000、ORACLE 9i、Sybase。
IBM是通过DB2与WebSphere、Tivoli和Lotus四大品牌共同提供电子商务基础架构,而自己并不开发应用软件,目前一些ERP厂商、CRM 厂商以及电子商务软件厂商都与IBM建立了合作关系,将IBM公司的数据库作为其应用软件的开发平台。Oracle则截然不同,它在自己的数据库平台上为用户开发了电子商务套件,其中包括ERP、CRM和SCM等企业应用软件。它认为这样可以使用户直接获得一整套解决方案,而不必考虑集成问题,而且,通过一家厂商就可以获得全部的服务和支持,避免在集成上的昂贵开销。Sybase公司作为客户机/服务器的倡导者,其开发工具PowerBuilder拥有众多的开发者。还有一部分不可忽视的是免费的数据库, 比如MYSQL等。
SQL Server作为微软在Windows 系列平台上开发的数据库,一经推出就以其易用性得到了很多用户的青睐,相信大多数将自己的业务建立在Windows平台上的用户都会对它有相当的亲切感。今天,我们就来谈谈您所关注的数据库解决方案之微软篇。
区别于FoxPro、Access小型数据库,SQL Server是一个功能完备的数据库管理系统。它包括支持开发的引擎、标准的SQL语言、扩展的特性(如复制、OLAP、分析)等功能。而像存储过程、触发器等特性,也是大型数据库才拥有的。
SQL SERVER 2000往往成为首选的理由
上手容易
话分两头,如果您的企业至今还未购置数据库,其中一个主要的原因可能就是认为它不好上手,那么,从SQL Server开始吧。毕竟,大多数的中小企业日常的数据应用是建立在Windows平台上的。由于SQL Server与Windows界面风格完全一致,且有许多“向导(Wizard)”帮助,因此易于安装和学习,有关SQL Server的资料、培训随处可得,并且目前国内具有MCDBA认证的工程师不在少数。
从另一个角度来讲,学习SQL Server是掌握其他平台及大型数据,如Oracle,Sybase,DB/2的基础。因为这些大型数据库对于设备、平台、人员知识的要求往往较高,而并不是每个人都具备这样的条件,且有机会去接触它们。但有了SQL Server的基础,再去学习和使用它们就容易多了。IT行业的实践经验充分证明了这一点。
兼容性良好
由于今天Windows操作系统占领着主导地的位,选择SQL Server一定会在兼容性方面取得一些优势。另外,SQL Server 2000 除了具有扩展性,可靠性以外,还具有可以迅速开发新的因特网系统的功能。尤其是它可以直接存贮 XML 数据,可以将搜索结果以 XML格式输出等特点,有利于构建了异构系统的互操作性,奠定了面向互联网的企业应用和服务的基石。这些特点在.NET 战略中发挥着重要的作用。
相对于7.0的忧越性
Microsoft SQL Server 2000是在SQL Server 7.0的基础上对性能、可靠性、质量以及易用性进行了扩展。SQL Server 2000中包含许多新特性,这些特性使其成为针对电子商务、数据仓库和在线商务解决方案的卓越的数据库平台。其增强的特性包括对丰富的扩展标记语言(XML)的支持、综合分析服务以及便捷的数据库管理。
电子商务
在使用由Microsoft SQL Server 2000关系数据库引擎的情况下,XML数据可在关系表中进行存储,而查询则能以XML格式将有关结果返回。此外,XML支持还简化了后端系统集成,并实现了跨防火墙的无缝数据传输。你还可以使用Hypertext Transfer Protocol(超文本传输协议,HTTP)来访问SQL Server 2000,以实现面向SQL Server 2000数据库的安全Web连接和无须额外编程的联机分析处理(OLAP)多维数据集。
数据仓库
Microsoft SQL Server 2000非常明显的改进就是增加了OLAP(联机分析处理)功能,这可以让很多中小企业用户也可以使用数据仓库的一些特性进行分析。OLAP 13 可以通过多维存储技术对大型、复杂数据集执行快速、高级的分析工作。数据挖掘功能能够揭示出隐藏在大量数据中的倾向及趋势,它允许组织或机构最大 限度的从数据中获取价值。通过对现有数据进行有效分析,这一功能可以对未来的趋势进行预测。
增强的在线商务
Microsoft SQL Server 2000简化了管理、优化工作,并且增强了迅速、成功的部署在线商务应用程序所需的可靠性和伸缩性。其中,用以提高可靠性的特性包括日志传送、在线备份和故障切换群集。在伸缩性方面的改进包括对多达32颗CPU和64 GB RAM的支持。通过自动优化和改进后的管理特性--诸如数据文件尺寸的自动管理、基于向导的数据库拷贝、自动内存管理和简化的故障切换群集安装与管理,在线商务应用程序能够被迅速部署并有效管理。
利于构筑“敏捷性商务”
所谓“敏捷性商务” 就是能够打破内部和外部的商业界限,对迅速改变的环境做出快速反应。微软已经与关键的合作伙伴建立起了战略关系,创造出了能够与许多供应商的产品实现整合的解决方案,因而企业用户并不需要做出“要么完全接受,要么全部不要”的承诺。在部署解决方案的过程中,企业用户不一定要拆除原有的设备从头。敏捷商务让企业用户能够充分利用现有的系统,自主决定所需的硬件和软件解决方案以及由谁来提供,伸缩自如、游刃有余
2.2 Visual Basic 6.0 简介
Visual Basic是一种可视化的编程语言,利用可视化技术进行编程,可使应用程序的开发简单、快捷;程序员不需要了解更多的关于面向对象的程序设计的细节,即可编写出界面友好、功能强大的应用程序。因此,Visual Basic在国内外各个领域中应用非常广泛。由于其容易学习、功能强、编程效率高,无论是专业人员还是非专业人员,都可以非常容易地掌握好Visual Basic的使用。它还提供了众多的Active X控件,提高了软件开发人员的编程效率,Visual Basic 6.0主要特点如下:
1、可视化设计
Visual Basic具有“所见即所得”的功能。在程序设计时,头脑中所想象的应用程序界面,完全可以键盘与鼠标完成,而不用编制大量的代码。如改,也可 14 利用键盘或鼠标完成,而底层的一些程序代码可由Visual Basic自动生成或修改。Visual Basic为用户提供了大量的控件,这些控件对于熟悉Windows应用程序的用户而言是一点也不陌生,如“标签”、“组合框”、“命令按钮”、“文本框”等等,用户只需用鼠标或键盘把这些控件拖到所需的位置,并设置它们的大小、形状属性等,即可得到所需的应用程序界面。
2、事件驱动编程
在Visual Basic中把窗体及控件称为对象。这些对象组成了与用户交互的图形界面(也称为用户接口或用户界面)。在设计应用程序时,必须考虑到用户如何与程序进行交互。用户通过鼠标和键盘与应用程序进行交互是最直接、最方便的,这时那些对象必须对鼠标、键盘操作所引起的事件作出响应。因此,Visual Basic编程重点是编写事件驱动过程的代码。
3、面向对象程序设计
Visual Basic是面向对象的程序设计语言,它将代码和数据结合在一个个对象中,用户只需了解每个对象能完成何种任务,而不需知道对象是如何工作的。软件开发人员主要编写操作驱动过程的代码,使对象对用户的操作作出响应。但因Visual Basic没有多态等面向对象的特性,所以也有人称Visual Basic是一种准面向对象的程序设计语言。
4、Visual Basic是一种32位的开发工具
Visual Basic5.0以前的开发工具很多是在DOS和Windows3X下使用,因而它们基本上是16位的开发工具,Visual Basic6.0是运行在Windows9X或WindowsNT操作系统下的,因此它是典型的32位开发工具。
5、易学易用、开发周期短
Visual Basic简单易学,界面友好,容易使用。Visual Basic提供的大量功能强大的控件,能帮助开发人员在较短时间内用少量语句编写出应用程序,缩短了开发周期。
2.3 面对对象的程序设计介绍
传统的结构化程序设计(Structured Programming)是一种强调功能抽象化和模块化的编程方法,它把解决问题的过程看作是一个处理单位。这就是说结构化程序设计中,模块是对功能的抽象,而每一个模块都是一个处理单位,并有输入和输出。
而面向对象的程序设计(Object Oriented Programming, OOP)是一种以对象为基础,以事件来驱动对象执行的程序设计技术。OOP 把计算过程看作为对象的分类过程加上其状态变化的过程,也就是将一个应用程序逐步划分成相互关联的多个对 象,并且建立起与这些对象相互关联的事件过程,通过对象对所发生的事件产生响应,并执行相应的事件过程以引发对象状态的改变,从而最终达到完成计算的目的。
与结构化程序设计不同,面向对象的程序设计综合了功能的抽象和数据的抽象,它把解决问题的过程看作是一个对象分类演绎的过程。在OOP 中,对象(Object)是一个包括数据和方法(操作)的并被封装起来的整体,它是对数据和功能的抽象和统一,而对象就包含了模块的概念。
面向对象设计是一种全新的程序设计方法,它从根本上改变了传统的程序设计模式。其基本思想是:通过建立与具体实际应用相对应的对象,并通过这些对象的组合来创建具体的应用程序。这种设计方法给程序设计带来了许多良好特性,一般说来有以下几点:
(1)模块性:对象是一个功能和数据独立的单元,它们之间只能通过对象认可的方式来进行通信,并可以较为自由地为其他对象所调用。
(2)封装性:这一特性为信息的隐藏提供了具体的实现手段,用户不必清楚对象内部的细节,只需了解其功能即可。
(3)继承性:这一特性为代码的共享提供了一种非常有效的方法,从而可以避免重复的代码设计,实现对象的可重用性。这一特性也是面向对象程序设计技术最本质的特征。
(4)可靠性:对象实现了抽象和封装,从而使得其中出现的错误限制在对象的内部,因而不会向外部传播,同时也易于检查和维护。
(5)可扩充性:面向对象系统可以通过继承机制不断扩充其对象的功能,而不会影响原系统的运行。
(6)连续性:虽然面向对象的程序设计语言在编程模式上相差很大,但它并没有摒弃传统的做法,它不仅采用了传统程序设计语言的语言元素,而且利用它们来模拟建立对象,从而使得一个熟悉传统程序设计语言的编程者能够很快掌握面向对象设计的规律。
2.4 系统开发理论介绍
软件的生命周期指从提出软件产品开始,直到该软件产品被淘汰的全过程。信息系统在使用过程中随着其生存环境的变化,要不断维护、修改,当它不再适应的时候就要被淘汰,就要有新系统代替老系统,这种周期循环称为信息系统的生命周期。
信息系统的生命周期可以分为系统规划、系统分析、系统设计、系统实施、系统运行和维护等五个阶段。
一、系统规划阶段
系统规划阶段的任务是对各大小型超市的环境、目标及现行系统的状况进行初步调查,根据企业目标和发展战略,确定信息系统的发展战略,对建设新系统的需求做出分析和预测,同时考虑建设新系统所受的各种约束,研究建设新系统的必要性和可能性。根据需要与可能,给出拟建系统的备选方案。对这些方案进行可行性分析,写出可行性分析报告。可行性分析报告审议通过后,将新系统建设方案及实施计划编写成系统设计任务书。
二、系统分析阶段
系统分析阶段的任务是根据系统设计任务书所确定的范围,对现行系统进行详细调查,描述现行系统的业务流程,指出现行系统的局限性和不足之处,确定新系统的基本目标和逻辑功能要求,即提出新系统的逻辑模型。这个阶段又称为逻辑设计阶段,他是整个系统建设的关键阶段,也是信息系统建设与一般工程项目的重要区别所在。该阶段的工作成果体现在系统说明书中,这是系统建设的必备文件。它既是给用户看的,也是下一阶段的工作依据。因此,系统说明书既要通俗,又要准确。用户通过说明书可以了解未来系统的功能,判断是不是其所要求的系统。系统说明书一旦讨论通过,就是系统设计的依据,也是将来验收系统的依据。
三、系统设计阶段
简单地讲,系统分析阶段的任务是回答系统“做什么”的问题,而系统设计阶段要回答的问题是“怎么做”。该阶段的任务是根据系统说明书中规定的功能要求,考虑实际条件,具体设计实现逻辑模型的技术方案,也即设计新系统的物理模型。这个阶段又称为物理设计阶段,可分为总体设计和详细设计两个阶段。这个阶段的技术文档是“系统设计说明书”。
四、系统实施阶段
系统实施阶段是将设计的系统付诸实施的阶段。这一阶段的任务包括计算机等设备的购置、安装和调试,程序的编写和调试,人员培训,数据文件转换,系统调试与转换等。这个阶段的特点是几个互相联系、互相制约的任务同时展开,必须精心安排、合理组织。系统实施是按实施计划分阶段完成的,每个阶段应写出实施进度报告。系统测试之后写出系统测试分析报告。
五、系统运行和维护阶段
系统投入运行后,需要经常进行维护和评价,记录系统运行的情况,根据一定的规格对系统进行必要的修改,评价系统的工作质量和经济效益。
需要完整版 访问www.xiexiebang.com QQ:232999858
第五章 系统的问题与调试
在系统的编写过程中,通常会出现大量的这样或是那样的错误,处理错误能力的大小也是评价一个程序员优秀与否的标准。程序中的错误大致分三种:语法错误、逻辑错误、意外错误。这里面语法错误是最常见的,占了错误中的大部分,但也是最容易解决的,通常在程序的编译时,多半可以发现这些错误并将其解决,逻辑错误的解决也不难,只要真正了解程序的流程及内部的逻辑关系,也会迎刃而解。最难处理的是意外错误,通常发生此类错误时,还要查找很多与之相关的程序部分,真正了解错误的本质,还需要有较全面和扎实的专业知识。在这次的毕业设计过程中,我也遇到了很多问题。例如,当在进行查询时,如果两条查询使用的是同一个Recordset 对象。
对于一个VB 的初学者来说,记录集Recordset 往往使用后不能养成随手关闭的习惯。这样就会造成上述的情况。在程序设计的初期,这样类似的错误一直困扰者我。当两个过程使用的是同一个变量的时候,在新打开过程的时候应该先关闭掉原先的内容的Recordset。避免这种错误的方法就是用Close 属性关闭掉先前使用的Recordset 对象,然后再对第二个对象进行操作。.从这次毕业设计的过程中我学到了很多有用的东西,上面这些只是在查错方面的一些技巧。严谨、负责、求实、进取的精神则是此次毕业设计给我的最大启示。任何一个微小的Bug 都可能导致程序的崩溃。毕业设计将对我以后学习和工作产生更深远的影响。
第六章 致谢
紧张忙碌的毕业设计即将结束了,在这几个月的课程设计中,我从项目的规划、调研开始,到编码、测试,充分体会了一个软件产品的生产过程,也让我看到了我自身水平的不足。与此同时,同样让我感到了继续学习、更新自身知识、加强自身能力的必要性。大学四年的学习即将结束,我也即将走向新的起点。这段毕业设计的经历给了我克服困难的决心和解决问题的经验,它将对我今后的生活、学习起到很大的帮助。
经过两个多月的学习,我初步掌握了Visual Basic 6.0 的基本应用,基本达到了毕业设计的要求。最重要的是,毕业设计的经历增强了我自我学习的能力,做到了在不用老师手把手教授的情况下,完成了一个较为复杂的管理系统。同时,在课程设计的过程中,查阅了大量的资料,也增强了我进行资料收集、查找和对资料进行筛选的能力。
在整个毕业设计的实习过程中,我要衷心的感谢我的指导老师徐老师。他一直都在为我的毕业设计提供耐心的指导,并且帮助我解决了很多疑难问题,这样才有了我的这份毕业设计。我还要感谢我的同学们,他们也给了我许多支持。最后,也是最重要的,感谢所有这四年中传授我知识,给予我关怀和帮助的老师们!
参考文献
[1]田金兰.Visual Basic 6使用指南,电子工业出版社,2002 [2]Jeffrey.Visual Basic 6数据库访问技.机械工业出版社,2003 [3]潘锦平.软件开发技术,西安电子科技大学出版社,1999 [4]王珊,萨师宣,数据库系统概论,高等教育出版社,2001 [5]陆丽娜,软件工程,经济科学出版社,2000 [6]周之英,现代软件工程,科学出版社.2000.1 [7]唐任仲,工程应用软件开发技术,化学工业出版社.1999.5 [8]李怀明,Visual Basic 6.0 中文版参考详解,清华大学出版社.1999.11 [9]李善茂,Visual Basic 6.0 高级编程技巧,电子工业出版社.1999.5 [10] 谭浩强,Visual Basic 6.0 中文版 提高与应用,电子工业出版社.1999.11 [11] 伍俊良,Visual Basic 课程设计与系统开发案例,清华大学出版社,2002.8 [12] 同志工作室,Visual Basic 6.0 数据库开发实例,人民邮电出版社,2001.1 [13]J Ivar Jacobson, Grady Booch, James Rumbaugh,《统一软件开发过程》北京 : 清华大学出版社, 2005.[14]张树兵戴红陈哲,《Visual Basic 6.0 中文版入门与提高》,清华大学出版社,2002.5 [15]陈丽芳,《Visual Basic程序设计学习指导》北京 : 机械工业出版社, 2005 [16]侯清富, 郭岗编著《软件工程师实战基本功》北京 : 人民邮电出版社, 2005 [17]钟军,Visual Basic数据库高级实例导航.北京:科学出版社,2004.3 [18]求是科技,Visual Basic 6.0数据库开发技术与工程实践,北京:人民邮电出版社.2004.1 [19]刘炳文,精通Visual Basic 6.0中文版,北京:电子工业出版社,1997.7 [20]刘圣才、李春葆,Visual Basic程序设计题典,北京:清华大学出版社,2002 [21]启明工作室,Visual Basic + Access数据库应用系统开发与实例,北京:人民邮电出版社,2004.11 [22]肖卫东,计算机信息管理基础.北京:国防科技大学出版社, 2002.5 21 [23]微软公司希望图书创作室,Visual Basic 6.0编程宝典,2003 [24]刘韬、骆娟、何旭洪,Visual Basic 6.0数据库系统开发实例导航.北京:人民邮电出版社,2002.4 [25]李存斌、郭晓鹏,Visual Basic高级编程及其项目应用开发.北京:中
国水利水电出版社,2003.2 [26]林陈雷、郭安源、葛晓东.Visual Basic 6.0教育信息化系统开发
实例导航.北京:人民邮电出版社,2003.6 [27]李晓黎、张巍,Visual Basic + SQL Server数据库应用系统开发与实例.北京:人民邮电出版社,2003.8 [28]郑阿奇、曹戈,Visual Basic 6.0实用教程.[第二版].南京:电子工业出版社,2004.1 [29]张海藩,软件工程.北京:人民邮电出版社,2002.7
第二篇:小型超市管理系统
小型超市管理系统一:需求分析
1.超市信息管理系统是一个面向超市用来进行超市日常信息处理的管理信息系统(MIS)。该信息系统能够方便的为超市的售货员提供各种日常售货功能,也能够为超市的管理者提供各种管理功能,如进货、统计商品等。
(1)超市信息管理系统能够支持售货员日常售货功能。每一个售货员通过自己的用户名称和密码登录到售货系统中,为顾客提供服务。在售货员为顾客提供售货服务时,售货员接收顾客购买商品,根据系统的定价计算出商品的总价,顾客付款并接受售货员打印的货物清单,系统自动保存顾客购买商品记录。
(2)超市信息管理系统能够为超市的管理者提供管理功能。超市的管理包括库存管理、订货管理、报表管理和售货人员管理和系统维护等。库存管理员负责超市的库存管理;订货员负责超市的订货管理;统计分析员负责超市的统计分析管理;系统管理员负责超市的售货人员管理和系统维护。每种管理者都通过自己的用户名称和密码登录到各自的管理系统中。
(3)库存管理包括商品入库管理、处理盘点信息、处理报销商品信息和一些信息的管理设置信息。这些设置信息包括供应商信息、商品信息和特殊商品信息。库存管理员每天对商品进行一次盘点,当发现库存商品有损坏时,及时处理报损信息。当商品到货时,库存管理员检查商品是否合格后并将合格的商品进行入库。当商品进入卖场时,商品进行出库处理。
(4)订货管理是对超市所缺货物进行的订货处理,包括统计订货商品和制作订单等步骤。当订货员发现库存商品低于库存下限时,根据系统供应商信息,制作订单进行商品订货处理。
(5)统计分析管理包括查询商品信息、查询销售信息、查询供应商信息、查询缺货信息、查询报表信息和查询特殊商品信息,并制作报表。统计分析员使用系统的统计分析功能,了解商品信息、销售信息、供应商信息、库存信息和特殊商品信息,以便能够制定出合理的销售计划。
(6)系统管理包括维护员工信息、维护会员信息和系统维护。系统管理员通过系统管理功能,能够了解公司员工信息、会员信息,还能够对系统进行维护工作。二:创建系统用例模型 1.员工用例图
员工是超市售货员和超市管理者的抽象,它所包含的行为是超市售货员和超市管理者共同的行为。员工在本系统中通过合法的身份验证;能够修改自身信息和密码。
2.售货员用例图
售货员能够通过该系统进行销售商品活动。当售货员销售商品时,首先获取商品信息,然后将销售信息更新,如果顾客需要打印购物清单,则需要打印购物清单,在购物清单中需要对商品信息进行计价处理。
3.库存管理员用例图
库存管理员能够通过该系统进行如下活动:
(1)处理盘点。超市库存管理员每天需要对超市商品信息进行盘点。(2)处理报销。超市库存管理员对超市损坏商品进行报销处理。(3)商品入库。当商品到货时,库存管理员检查商品是否合格后并将合格的商品进行入库。
(4)商品出库。当商品进入卖场时,商品进行出库处理。(5)管理设置。库存管理员负责供应商信息、商品基本信息和特殊商品信息的管理设置。
4.订货员用例图
订货员能够通过该系统进行订货管理活动。订货员首先根据商品缺货信息统计订货商品,根据需要订货商品信息制定出订单。
5.统计分析员用例图
统计分析员负责超市的统计分析管理,它能够通过该系统进行如下活动:
(1)查询基本信息。统计分析员能够查询商品的基本信息,根据商品的基本信息,制定出相应的方案。
(2)查询销售信息。统计分析员根据销售情况,制定合理的销售方案。
(3)查询供应商信息。统计分析员能够查询供应商信息。
(4)查询缺货信息。统计分析员能够查询缺货信息。
(5)查询报损信息。统计分析员能够查询报损信息。
(6)查询特殊商品信息。统计分析员能够查询特殊商品信息
6.系统管理员用例图
系统管理员能够通过该系统进行如下活动:
(1)维护会员信息。系统管理员能够维护超市会员的信息,如添加会员、删除会员和修改会员信息等。
(2)维护员工信息。系统管理员能够维护超市员工的信息,如添加员工、删除员工和修改员工信息等。
(3)系统设置。系统管理员能够根据一些需要进行必要的系统设置。
三:创建系统静态模型
在获得系统的基本需求用例模型以后,我们通过考察系统对象的各种属性,创建系统静态模型。
(1)首先,我们先确定系统的参与者的属性。每一个超市员工在登录系统时,都需要提供员工的用户名称和密码,因此每一个超市员工应该拥有用户名称和密码属性。超市员工还拥有在超市中的唯一标识——员工编号。此外,员工属性中还包含员工的年龄、头衔和照片等信息。超市的售货员和管理者都继承自员工,拥有员工的属性。在系统中记录的顾客包括顾客的名称、顾客的编号、顾客地址、顾客级别和顾客的总消费金额等记录。
(2)其次,我们确定在系统中的主要业务实体类,这些类通常需要在数据库中进行存储。例如,我们需要存储商品的信息,因此需要一个商品类,同样,根据供应商信息我们可以确定供应商类。(2)其次,我们确定在系统中的主要业务实体类,这些类通常需要在数据库中进行存储。例如,我们需要存储商品的信息,因此需要一个商品类,同样,根据供应商信息我们可以确定供应商类。
四:创建系统动态模型
1.售货员销售商品序列图和交互图 工作流程如下:
(1)顾客希望通过售货员购买商品,售货员希望通过售货管理子系统处理商品销售。
(2)顾客将购买商品提交给售货员。
(3)售货员通过销售管理子系统中的管理商品界面获取商品信息。
(4)管理商品界面根据商品的编号将商品类实例化并请求该商品信息。
(5)商品类实例化对象根据商品的编号加载商品信息并提供给管理商品界面。(6)管理商品界面对商品进行计价处理。
(7)管理商品界面更新销售商品信息。
(8)管理商品界面显示处理商品。
(9)售货员将货物提交给顾客。
2.统计分析员查询商品信息序列图和交互图 工作流程如下:
(1)统计分析员希望通过统计分析子系统查询商品信息。
(2)统计分析员通过统计分析子系统中的查询商品信息界面获取商品信息。
(3)查询商品信息界面根据商品的属性或特征将商品类实例化并请求该类商品信息。
(4)商品类实例化对象加载商品信息,并提供给管理商品界面。
(5)查询商品信息界面显示该类商品信息。
(6)统计分析员请求查询商品信息界面制定出该类商品报表。
(7)查询商品信息界面制定该类商品报表。
(8)查询商品信息界面将该类商品报表显示给统计分析员。
3.库存管理员处理商品入库
工作流程如下:
(1)库存管理员希望通过库存管理子系统将购买的货物处理入库(2)库存管理员通过库存管理子系统中的商品入库界面获取商品信息。
(3)商品入库界面根据商品的编号将商品类实例化并请求该类商品信息。
(4)商品类实例化对象根据商品的编号加载商品信息并提供给商品入库界面。
(5)库存管理员通过商品入库界面增加商品数目。(6)商品入库界面通过商品类实例化对象修改商品信息。(7)商品类实例化对象向商品入库界面返回修改信息。(8)商品入库界面向库存管理员显示添加成功信息。
4.订货员进行订货管理 工作流程如下:
(1)订货员希望通过订货管理子系统处理商品订货管理。(2)订货员通过订货管理子系统中的订货管理界面获取待订货商品信息。
(3)订货管理界面将商品类实例化并根据商品的数量应当满足的条件请求有关商品信息。
(4)商品类实例化对象根据商品的数量应当满足的条件加载商品信息并提供给订货管理界面。
(5)订货员通过订货管理子系统中的订货管理界面获取待订货厂商信息。
(6)订货管理界面将供应商类实例化并根据商品的类型请求有关供应商信息。
(7)供应商类实例化对象加载供应商信息并提供给订货管理界面。(8)订货员通过订货管理子系统中的订货管理界面制作相关订单。(9)订货管理界面制作相关订单并显示给订货员。
5.商品状态图
在超市信息管理系统中,我们将有明确状态转换的类进行描述,以下我们以商品的状态图为例,简单进行说明。 商品包含以下的状态:刚被购买还未入库后的商品、被添加能够出售的商品、商品被出售、商品被回收。它们之间的转化规则是:
(1)刚被购买后的商品可以通过库存管理员添加成为入库的商品。(2)当入库商品被出售,商品处于被销售状态。(3)当商品由于过期、损坏等因素造成的不合格时,商品被剔除。
6.员工验证登录活动图
在利用系统的活动图来描述在超市信息管理系统中的参与者如何协同工作时,我们还可以建立相关参与者的活动图进行说明。以下我们以员工验证密码为例进行说明。 我们可以通过以下的方式描述员工验证登录的活动:(1)员工需要通过身份验证后进入相关子系统才能够进行相关操作。
(2)首先,系统运行后系统进入初始化登录界面。(3)员工输入自己的用户名称和密码。
(4)登录界面对用户输入的用户名称和密码进行判断。(5)如果是合法的用户,则系统对用户的权限进行判断,员工进入相关的管理界面,登录成功。
(6)如果是非法的用户,系统提示用户名称或密码错误,登录失败。
五:创建系统部署模型 1.系统构件图
在超市信息管理系统中,我们通过构件映射到系统的实现类中,说明该构件物理实现的逻辑类。例如,在超市信息管理系统中,我们可以对商品类和供应商类分别创建对应的构件进行映射。
2.系统部署图
在超市信息管理系统中,系统包括四种节点,分别是:前台售货节点,售货员使用,负责货物销售;库存管理节点,库存管理员通过该节点进行库存管理和维护;订货管理节点,订货管理员通过该节点进行订货管理;统计分析节点,统计分析员通过该节点进行统计分析;系统管理节点,系统管理员通过该节点进行系统维护和员工信息维护。
第三篇:基于java小型超市管理系统
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.Arrays;import java.util.Scanner;
public class Mytest { static int sign=0;//goodname数组第一个空下标号
static int sign1=0;//cname数组第一个空下标号
static String[] cpass=new String[20];//存放售货员名称
static String[] cname=new String[20];//存放售货员登入密码
static String[] goodname=new String[20];//存放商品名称
static double[] goodprice=new double[20];//存放商品价格
static int[] goodout=new int[20];//存放商品销售量
static int[] goodnum=new int[20];//存放商品数量
public static void main(String[] args)throws Exception { cname[0]=“ZhouTian”;//初始的售货员名称
cpass[0]=“723”;//初始的售货员密码 createArrays();readArrays(“goodname”);//将文件中的内容读入到相应的数组里
readArrays(“goodprice”);readArrays(“goodnum”);readArrays(“cname”);readArrays(“cpass”);readArrays(“goodout”);menu();//登入之后加载的主菜单
} /** * 加载登入菜单
*/ private static void menu(){
Scanner scan = new Scanner(System.in);
System.out.println(“ttt欢迎使用商超购物管理系统 n”);
System.out.println(“tttt1.登录系统n”);
System.out.println(“tttt2.退出 ”);
System.out.println(“*************************************************”);
System.out.println(“请选择,输入数字: ”);
int a = scan.nextInt();
switch(a){
case 0:
System.out.println(“退出!”);//按0不登入
case 1:
System.out.println(“请输入用户名:”);// 查找售货员姓名是否存在,与所对应的密码是否匹配
String name = scan.next();
System.out.println(“请输入密码:”);
String pass = scan.next();
int flage = 0;
int ff = 0;
for(int i = 0;i < cname.length;i++){
if(name.equals(cname[i])){
flage = 1;//售货员的名称匹配flage=1;
ff = i;
break;
}
}
if(flage == 1){//名称匹配之后再匹配密码
if(pass.equals(cpass[ff])){
loadmenu1();//密码也匹配之后再允许登入
} else {
System.out.println(“密码错误!”);
}
} else {
System.out.println(“该用户名不具有权限”);
}
break;
case 2:
System.out.println(“谢谢您的使用!”);
break;
default:
break;
} }
/** * ,创建文件,将数组信息存入到各文件中, */ static void createArrays(){
BufferedWriter bw = null;
try {
File file1 = new File(“d:gname.txt”);
if(!file1.exists()){
bw
=
new
BufferedWriter(new FileWriter(“d:gname.txt”));
String content1 = strToString(goodname);//数组内容转换成字符串
bw.write(content1);//写入
bw.close();
}
File file2 = new File(“d:gprice.txt”);
if(!file2.exists()){
bw
=
new
BufferedWriter(new FileWriter(“d:gprice.txt”));
String content2 = doubleToString(goodprice);//数组内容转换成字符串
bw.write(content2);//写入
bw.close();
}
File file3 = new File(“d:gnum.txt”);
if(!file3.exists()){
bw
=
new
BufferedWriter(new FileWriter(“d:gnum.txt”));
String content3 = intToString(goodnum);//数组内容转换成字符串
bw.write(content3);//写入
bw.close();
}
File file4 = new File(“d:cname.txt”);
if(!file4.exists()){
bw
=
new
BufferedWriter(new FileWriter(“d:cname.txt”));
String content4 = strToString(cname);//数组内容转换成字符串
bw.write(content4);//写入
bw.close();
}
File file5 = new File(“d:cpass.txt”);
if(!file5.exists()){
bw
=
new
BufferedWriter(new FileWriter(“d:cpass.txt”));
String content5 = strToString(cpass);//数组内容转换成字符串
bw.write(content5);//写入
bw.close();
}
File file6 = new File(“d:gout.txt”);
if(!file6.exists()){
bw
=
new
BufferedWriter(new FileWriter(“d:gout.txt”));
String content5 = intToString(goodout);//数组内容转换成字符串
bw.write(content5);//写入
bw.close();
}
} catch(IOException e){
e.printStackTrace();
}
}
/** * 登入之后加载商超购物管理系统
*/ static void loadmenu1(){
System.out.println(“欢迎进入商超购物管理系统!”);
System.out.println(“tttt商超购物管理系统”);
System.out
.println(“********************************************************************************”);
System.out.println(“tttt1.商品维护”);
System.out.println(“tttt2.前台收银”);
System.out.println(“tttt3.商品管理”);
System.out.println(“tttt4.退出”);
System.out.println(“********************************************************************************”);
System.out.println(“请选择,输入数字或按0退出:”);
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
switch(a){
case 0:
System.out.println(“谢谢您的使用!”);
break;
case 1:
System.out.println(“执行显示商品维护菜单”);
loadmenu2();
break;
case 2:
System.out.println(“执行前台收银”);
loadmenu6();
break;
case 3:
System.out.println(“执行商品管理”);
loadmenu7();
break;
default:
break;
} } /* * 在商超购物管理系统中按1键时 */ static void loadmenu2(){
System.out.println(“tttt商超购物管理系统 商品维护”);
System.out
.println(“********************************************************************************”);
System.out.println(“tttt1.添加商品t”);
System.out.println(“tttt2.更改商品t”);
System.out.println(“tttt3.删除商品t”);
System.out.println(“tttt4.显示所有商品t”);
System.out.println(“tttt5.查询商品t”);
System.out
.println(“********************************************************************************”);
System.out.println(“请选择,输入数字或按0返回上一级菜单:”);
Scanner scan = new Scanner(System.in);
int b = scan.nextInt();
switch(b){
case 0:
loadmenu1();
break;
case 1:
addgoods();
break;
case 2:
System.out.println(“执行更改商品操作”);
loadmenu3();// 修改商品
break;
case 3:
System.out.println(“执行商品删除操作”);
loadmenu4();// 商品删除
break;
case 4:
System.out.println(“显示所有商品”);
System.out.println(“商品名称ttt” + “商品价格ttt” + “商品数量ttt”
+ “备注”);
showgoods();
break;
case 5:
System.out.println(“执行查询商品操作”);
loadmenu5();
break;
default:
break;
} } /* * 在商超购物管理系统中按2键时
*/ static void loadmenu6(){
System.out.println(“tttt商超购物管理系统 前台收银”);
System.out
.println(“********************************************************************************”);
System.out.println(“tttt1.购物结算”);
Scanner scan = new Scanner(System.in);
int ch = scan.nextInt();
switch(ch){
case 0:
loadmenu1();
break;
case 1:
pay();
break;
default:
break;
}
} /* * 在商超购物管理系统中按3键时
*/ static void loadmenu7(){
Scanner scan = new Scanner(System.in);
System.out.println(“ttt商超购物管理系统 商品管理”);
System.out
.println(“********************************************************************************”);
System.out.println(“tttt1.库存查询”);
System.out.println(“tttt2.已出售商品”);
System.out.println(“tttt3.售货员管理”);
System.out.println(“请选择,输入数字或按0返回上一级菜单:”);
int ch = scan.nextInt();
switch(ch){
case 0: loadmenu1();
break;
case 1:
System.out.println(“执行库存查询操作:”);
kusear();
break;
case 2:
System.out.println(“执行已出售商品查询操作”);
besold();
break;
case 3:
System.out.println(“执行售货员管理操作”);
salesman();
break;
default:
break;
}
} /* * 对售货员信息的增添,修改 */ static void salesman()
{
Scanner scan = new Scanner(System.in);
System.out.println(“
1、添加售货员”);
System.out.println(“
2、修改售货员信息”);
System.out.println(“请选择,输入数字或按0返回上一级菜单:”);
int b = scan.nextInt();
switch(b){
case 0:
loadmenu7();//返回上一级
break;
case 1:
addsale();//选择1键,添加售货员
break;
case 2:
modifysale();//更改售货员的信息
break;
default:
break;
} } /* 添加售货员 * */ static void addsale(){
Scanner scan = new Scanner(System.in);
String f;
// sign1 = sign1 + 1;
do {
System.out.println(“添加售货员姓名:”);
String addname = scan.next();
add(cname, addname, sign1);//将新信息添加到相应数组中
System.out.println(“添加售货员登陆密码:”);
String addpass = scan.next();
add(cpass, addpass, sign1);//将新信息添加到相应数组中
// writeArray();
sign1++;//新信息添加后数组下标加1
writeArray();
System.out.println(“是否继续(y/n)”);
f = scan.next();
// writeArray();
} while(f.equals(“y”));
salesman();} /* * 更改售货员的信息 */ static void modifysale(){
String f;
Scanner scan = new Scanner(System.in);
System.out.println(“输入更改员工名称:”);
String newname = scan.next();
int k = searmember(newname);//查询需要改的售货员的信息,并返回其在数组中的下标
if(k >= 0){//判断售货员是否存在
System.out.println(“员工姓名” + “ttt密码”);
System.out.println(cname[k] + “ttt” + cpass[k]);
System.out.println(“选择您要更改的内容:”);
System.out.println(“
1、更改员工姓名:”);
System.out.println(“
2、更改登录密码:”);
int kk = scan.nextInt();
switch(kk){
case 1:
System.out.println(“请输入已更改员工姓名:”);
String newnname = scan.next();
cname[k] = newnname;
writeArray();
System.out.println(“是否继续(y/n)”);
f = scan.next();
if(f.equals(“y”)){
modifysale();
} else {
salesman();
}
break;
case 2:
System.out.println(“请输入已更改密码:”);
String newpass = scan.next();
cpass[k] = newpass;
writeArray();
System.out.println(“是否继续(y/n)”);
// System.out.println(“是否继续(y/n)”);
f = scan.next();
if(f.equals(“y”)){
modifysale();
}
salesman();
break;
default:
break;
}
} } /* * 查询ename姓名的售货员在数组中的下标 */ static int searmember(String ename){
for(int i = 0;i < cname.length;i++){
if(cname[i].equals(ename)){
return i;
}
}
return-1;// 不存在时
} /* * 查询已出售的商品信息 */ static void besold()
{
System.out.println(“商品名称ttt” + “商品价格ttt” + “商品数量ttt” + “备注”);
for(int i = 0;i < goodout.length;i++){
if(goodout[i]!= 0){
System.out.println(goodname[i] + “ttt” + goodprice[i]
+ “ttt” + goodout[i]);
}
}
loadmenu7();} /* * 查询库存中售的商品信息
*/ static void kusear(){
Scanner scan = new Scanner(System.in);
String f;
do {
System.out.println(“输入要查询的商品名称:”);
String sname = scan.next();
int t = ndimsear(sname);//按确切的商品名称进行查询,即非模糊查询,找出商品名称信息的下标
if(t >= 0){
System.out.println(“商品名称ttt” + “商品价格ttt” + “商品数量ttt”
+ “备注”);
System.out.println(goodname[t] + “ttt” + goodprice[t]
+ “ttt” + goodnum[t] + “ttt”);//按下标输出商品相应的信息
} else {
System.out.println(“没有此商品”);
}
System.out.println(“是否继续(y/n)”);
f = scan.next();
} while(f.equals(“y”));
loadmenu7();
} /* * 按确切的商品名称进行查询,即非模糊查询,找出商品名称信息的下标
*/ static int ndimsear(String s){
for(int i = 0;i < goodname.length;i++){
if(goodname[i].equals(s)){
return i;
}
}
return-1;//没查询到时
}
/* * 商品结算
*/ static void pay(){
Scanner scan = new Scanner(System.in);
double sum = 0;
String f;
do {
dimsearch1();//按关键字进行模糊查询,查找可能需要的商品
System.out.println(“请选择商品:”);
String bnam = scan.next();//按查询到的相关商品中选择要购买的商品
System.out.println(“请输入购买数量:”);
int bnum = scan.nextInt();
int fl = seargood(bnam);
System.out.println(bnam + “ttt” + goodprice[fl] + “ttt”
+ “购买数量” + bnum + “ttt” + bnum * goodprice[fl]);
goodnum[fl] = goodnum[fl]sum));
writeArray();//将对数组的更改写入到文件中
loadmenu1();//结束购买返回
} /* * 查找商品返回下标 */ static int seargood(String bbnam){
for(int i = 0;i <= goodname.length;i++){
if(goodname[i].equals(bbnam)){
return i;
}
}
return-1;}
/* * 对商品进行各种查找
*/
static void loadmenu5(){
Scanner scan = new Scanner(System.in);
System.out.println(“
1、按商品数量升序查询”);
System.out.println(“
2、按商品价格升序查询”);
System.out.println(“
3、输入关键字查询商品”);
System.out.println(“请选择,输入数字或按0返回上一级菜单:”);
int choice = scan.nextInt();
switch(choice){
case 0:
loadmenu2();//返回上一级
break;
case 1:
numshenxu();//按商品数量升序进行查找
break;
case 2:
priceshenxu();//按商品价格升序进行查找
break;
case 3:
dimsearch();//按商品的关键字进行查找
break;
default:
break;
}
}
static void dimsearch1(){
int[] k;
Scanner scan = new Scanner(System.in);
System.out.println(“输入商品关键字:”);
String sear = scan.next();
k = Arrays.copyOf(index(sear), index(sear).length);
System.out.println(“商品名称ttt” + “商品价格ttt” + “商品数量ttt” + “备注”);
if(k!= null){
for(int i = 0;i < k.length;i++){
System.out.println(goodname[k[i]] + “ttt” goodprice[k[i]]
+ “ttt” + goodnum[k[i]] + “ttt”);
}
}
} /* * 按商品的关键字进行查找
*/ static void dimsearch()
+ {
String f;
do {
int[] k;
Scanner scan = new Scanner(System.in);
System.out.println(“输入商品关键字:”);
String sear = scan.next();
k = Arrays.copyOf(index(sear), index(sear).length);
System.out.println(“商品名称ttt” + “商品价格ttt” + “商品数量ttt”
+ “备注”);
if(k!= null){
for(int i = 0;i < k.length;i++){
System.out.println(goodname[k[i]] + “ttt”
+ goodnum[k[i]]
+ “ttt”);
}
goodprice[k[i]]
+
“ttt”
+
}
System.out.println(“是否继续(y/n)”);
f = scan.next();} while(f.equals(“y”));loadmenu2();} static int[] index(String ss){ int countt = 0;int counttt = 0;for(int i = 0;i < goodname.length;i++){
if(goodname[i].indexOf(ss)>= 0){
countt++;
} } int[] location = new int[countt];for(int i = 0;i < goodname.length;i++){
if(goodname[i].indexOf(ss)>= 0){
location[counttt] = i;
counttt++;
}
}
return location;} /* * 按商品数量升序进行查找
*/ static void numshenxu(){
int[] newnum = Arrays.copyOf(goodnum, goodnum.length);
double[]
newprice
=
Arrays.copyOf(goodprice, goodprice.length);
String[] goodname.length);
for(int i = 0;i < newnum.lengthi1;i++){
for(int j = 0;j < newprice.length1;j++){
if(newprice[j] < newprice[j + 1]){
int temp = newnum[j];
newnum[j] = newnum[j + 1];
newnum[j + 1] = temp;
double temp1 = newprice[j];
newprice[j] = newprice[j + 1];
newprice[j + 1] = temp1;
String temp2 = newname[j];
newname[j] = newname[j + 1];
newname[j + 1] = temp2;//相应的下标在不同的数
newname
=
Arrays.copyOf(goodname, 组里进行挑换,商品的信息才能保持一致
}
}
}
System.out.println(“商品名称ttt” + “商品价格ttt” + “商品数量ttt” + “备注”);
for(int k = 0;k < newnum.length;k++){
if(newprice[k]!= 0){
System.out.println(newname[k] + “ttt” + newprice[k]
+ “ttt” + newnum[k] + “ttt”);
}
}
loadmenu5();} /* *更改商品信息的操作
*/ static void loadmenu3(){
Scanner scan = new Scanner(System.in);
System.out.println(“输入更改商品名称:”);
String nam = scan.next();
int b = showflage(nam);
print(b);
System.out.println(“选择您要更改的内容:”);
System.out.println(“
1、更改商品名称::”);
System.out.println(“
2、更改商品价格:”);
System.out.println(“
3、更改商品数量:”);
int ch = scan.nextInt();
switch(ch){
case 0:
break;
case 1:
int counnt = 0;
String f = “y”;
while(f.equals(“y”)){
if(counnt!= 0){
// Scanner scan = new Scanner(System.in);
System.out.println(“输入更改商品名称:”);
nam = scan.next();
b = showflage(nam);//查找需要更改商品的下标
print(b);//输出这个商品的各种信息
}
System.out.println(“请输入已更改商品名称”);
String cname = scan.next();
goodname[b] = cname;//更改名称
System.out.println(“是否继续(y/n)”);
f = scan.next();
counnt++;
writeArray();
}
loadmenu2();
break;
case 2:
counnt = 0;
f = “y”;
while(f.equals(“y”)){
if(counnt!= 0){
// Scanner scan = new Scanner(System.in);
System.out.println(“输入更改商品名称”);
nam = scan.next();
b = showflage(nam);
print(b);
}
System.out.println(“请输入已更改商品价格”);
double cprice = scan.nextDouble();
goodprice[b] = cprice;//新价格写入数组
System.out.println(“是否继续(y/n)”);
f = scan.next();
counnt++;
writeArray();
}
loadmenu2();
break;
case 3:
counnt = 0;
f = “y”;
while(f.equals(“y”)){
if(counnt!= 0){
// Scanner scan = new Scanner(System.in);
System.out.println(“输入更改商品名称”);
nam = scan.next();
b = showflage(nam);
print(b);
}
System.out.println(“请输入已更改商品数量”);
int cnum = scan.nextInt();
goodnum[b] = cnum;
counnt++;
writeArray();
System.out.println(“是否继续(y/n)”);
f = scan.next();
}
loadmenu2();
break;
default:
break;
}
} /* * 查询nama这个商品在goodname中的下标
*/ static int showflage(String nama){
int flag = 0;
for(int i = 0;i < goodname.length;i++){
if(goodname[i].equals(nama)){
flag = i;
break;
}
}
return flag;}
static void print(int b){
System.out.println(“商品名称 tt” + “商品价格 tt” + “商品数量 tt” + “备注”);
System.out.println(goodname[b] + “tt” + goodprice[b] + “tt”
+ goodnum[b] + “ tt”);
} /* * 删除商品菜单
*/ static void loadmenu4(){
String f;
int d;
do {
Scanner scan = new Scanner(System.in);
System.out.println(“请输入要删除的商品名称:
String dname = scan.next();
d = showflage(dname);
delete(d);
System.out.println(”是否继续(y/n)“);
f = scan.next();
writeArray();//删除之后重新写入文件
} while(f.equals(”y“));
loadmenu2();}
”);/* * 删除商品 */ static void delete(int dd){
for(int i = dd;i < goodname.length1] = null;
goodprice[goodprice.length1] = 0;
} /* * 查询所有商品
*/ static void showgoods(){
int i = 0;
while(goodprice[i]!= 0){
System.out.print(goodname[i] +
“ttt” goodprice[i] + “ttt”
+
+ goodnum[i] + “ttt”);
if(goodnum[i] < 10){
System.out.println(“ttt*该商品已不足10件!”);
}
System.out.println();
i++;
}
loadmenu2();
} /* * 商品添加操作 */ static void addgoods(){
System.out.println(“执行添加商品操作:t”);
String a;
do {
Scanner scan = new Scanner(System.in);
System.out.println(“输入商品名称:”);
String na = scan.next();
add(goodname, na, sign);
System.out.println(“输入添加商品价格:”);
double pr = scan.nextDouble();
add(goodprice, pr, sign);
System.out.println(“输入添加商品数量:”);
int c = scan.nextInt();
add(goodnum, c, sign);
sign++;
System.out.println(“是否继续(y/n)”);
a = scan.next();
writeArray();
} while(a.equals(“y”));
loadmenu2();
} /* * 将数组信息写入到相应的文件里,启动程序时就要调用这个函数 */ static void writeArray(){
BufferedWriter bw = null;
try {
bw
=
new
BufferedWriter(new FileWriter(“d:gname.txt”));
String content1 = strToString(goodname);
bw.write(content1);
bw.close();
bw
=
new
BufferedWriter(new FileWriter(“d:gprice.txt”));
String content2 = doubleToString(goodprice);
bw.write(content2);
bw.close();
bw
=
new
BufferedWriter(new FileWriter(“d:gnum.txt”));
String content3 = intToString(goodnum);
bw.write(content3);
bw.close();
bw = new BufferedWriter(new FileWriter(“d:cname.txt”));
String content4 = strToString(cname);
bw.write(content4);
bw.close();
bw
=
new
BufferedWriter(new FileWriter(“d:cpass.txt”));
String content5 = strToString(cpass);
bw.write(content5);
bw.close();
bw
=
new
BufferedWriter(new FileWriter(“d:gout.txt”));
String content6 = intToString(goodout);
bw.write(content6);
bw.close();
} catch(IOException e){
e.printStackTrace();
} } /* * 添加商品名称 */ static void add(String[] aa, String n, int b){
if(b == aa.length){
aa =(String[])Arrays.copyOf(aa, aa.length * 2);
}
aa[b] = n;} /* * 添加商品价格
*/ static void add(double[] aa, double pr, int b){
if(b == aa.length){
aa =(double[])Arrays.copyOf(aa, aa.length * 2);
}
aa[b] = pr;} /* * 添加商品数量
*/ static void add(int[] aa, int cc, int b){
if(b == aa.length){
aa =(int[])Arrays.copyOf(aa, aa.length * 2);
}
aa[b] = cc;
}
/** * 从文件中读取信息到相应的数组里
*/ static void readArrays(String name)throws Exception {
BufferedReader br = null;
try {
if(“goodname”.equals(name)){
br
=
new
BufferedReader(new FileReader(“d:gname.txt”));
String content1 = br.readLine();
String[] arr = strToString(content1);
goodname arr.length);
for(int i = 0;i < goodname.length;i++){
if(!goodname[i].equals(“null”)){
sign++;
=
(String[])
Arrays.copyOf(arr,}
}
} else if(“goodprice”.equals(name)){
br
=
new
BufferedReader(new FileReader(“d:gprice.txt”));
String content2 = br.readLine();
double[] arr = doubleToString(content2);
goodprice arr.length);
} else if(“goodnum”.equals(name)){
br
=
new
BufferedReader(new
=
(double[])
Arrays.copyOf(arr, FileReader(“d:gnum.txt”));
String content3 = br.readLine();
int[] arr = intToString(content3);
goodnum =(int[])Arrays.copyOf(arr, arr.length);
} else if(“cname”.equals(name)){
br
=
new
BufferedReader(new FileReader(“d:cname.txt”));
String content4 = br.readLine();
String[] arr = strToString(content4);
cname arr.length);
=(String[])Arrays.copyOf(arr,for(int i = 0;i < cname.length;i++){
if(!cname[i].equals(“null”)){
sign1++;
}
}
} else if(“cpass”.equals(name)){
br
=
new
BufferedReader(new FileReader(“d:cpass.txt”));
String content5 = br.readLine();
String[] arr = strToString(content5);
cpass arr.length);
} else {
br
=
new
BufferedReader(new
=
(String[])
Arrays.copyOf(arr, FileReader(“d:gout.txt”));
String content6 = br.readLine();
int[] arr = intToString(content6);
goodout =(int[])Arrays.copyOf(arr, arr.length);
}
} catch(FileNotFoundException e){
e.printStackTrace();
} catch(IOException e){
e.printStackTrace();
}
} /* * 将字符串转换成字符串数组 */ static String strToString(String[] arry){
// String arrys=“";
// for(int i=0;i // { // arrys=arry+arry[i]+”,“; // } // //arrys=arrys+arry[arry.length-1]; // System.out.println(arrys); // return arrys; StringBuilder sb = new StringBuilder(); for(int i = 0;i < arry.length;i++){ sb.append(arry[i]).append(”,“); } sb.deleteCharAt(sb.length()-1); // System.out.println(sb.toString()); return sb.toString();} /* * 将字符串转换成字符串数组 */ static String[] strToString(String ar){ String[] arry = ar.split(”,“);return arry;} /* * 将int型数组转换成字符串 */ static String intToString(int[] arrr){ String ss = ”“; ss = Arrays.toString(arrr); String sss = ss.replace(”[“,”“).replace(”]“, ”“).replace(” “, ”"); 小型超市管理系统设计说明书 系统概述 小型超市管理系统的设计对一个超市的运转是十分重要的。改革开放以来,我国逐步进入市场经济,外国企业的进入,给我国的本土经济带来巨大的冲击。因此,为了使我们自身的企业更好地应对外来竞争的压力,我们的企业迫切地需要管理制度的完善。 小型超市管理系统是现存信息系统中较为复杂的一类,这是由超市自身的目标、任务和性质所决定的。它应用于用户权限管理、进货管理、销售管理、顾客管理和用户注册管理等几个方面,牵涉的信息种类较多。这也同时是一款信息查询系统,体现出超市当前的库存商品数量、价格以及销售情况。方便了顾客购买商品,而且对超市的管理、销售、进货以及经理决策起着至关重要的作用。依靠现代化信息处理技术来管理超市,大大节省了人力、物力,改善了员工的工作条件,方便了广大消费者,提高了企业的效率,增加其收益。 超市管理的信息化建设工作具有长期性、复杂性和多变性,所以超市管理系统也不是一个简单的、封闭的、静止的系统,它是会随时间推移在应用广度和深度上逐步变化和发展的系统。需求分析 需求分析分为三个部分:需求的文字表述、数据流图、数据字典。 一、需求分析: 小型超市管理系统的设计的服务对象是广大顾客及超市的管理人员。它涉及的面广、数据量大,如果对整个系统不能很好的 设计,将会给超市的效益带来巨大压力,如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市努力追求的目标。下面是我们队该系统所做的详细分析: 1、用户工作流程 与超市运转相关的群体主要有顾客、销售员和超市工作人员。围绕着三大群体,我们设计了以下流程。进货或销售商品时,用户要对订单或销售单进行核对审查,这时不同的用户需要填写与各自身份相对应的信息,经系统默认,进入到相应的界面,通过指导查询所需信息,如进货信息、销售信息和商品信息等。 2、用户业务需求 (1)、该软件将为不同的用户提供不同的操作权限,当用户不同时,根据对用户权限的判断,决定该用户进入哪一界面;(2)、该管理软件将对商品进行资料统计和管理,提供详细的商品信息,方便顾客查询; (3)、该软件将对商品的订货单和销售单进行录入管理和统计,使销售员和超市管理人员及时了解超市的销售情况;(4)、该软件将为用户提供账号管理工具,以便对用户账号进行管理,包括用户的添加、修改、编辑和删除等操作。 3、系统的设计目标 实现超市数据的信息化管理,提高超市在运作中的效率,减少人力的消耗,提高管理质量,将超市信息管理环节简单化。 4、用户对系统的要求 1)、信息要求 由于系统的使用主体是顾客和销售员,因此对系统的信息要求可分为以下几个方面: a.用户信息 用户的基本信息,主要包括用户的名称,密码,住址,权限,姓名及年龄信息; b.商品信息 商品的基本信息,主要包括商品的名称,数量,产地,价格,大小等信息; c.订货信息 订货的基本信息,包括商品的名称和数量,顾客姓名,销售日期,商品的大小和价格等; d.进货信息 进货的基本信息,主要包括所订购商品的名称和数量,订购生产厂家,订购日期,订购状态和订购人姓名等。 2)、处理要求 a.用户注册或登录 用户通过这个功能,可以注册成为会员或员工,也可以进入到系统主界面进行操作,用户可以是系统管理员,顾客,或销售员; b.商品查询与购买 顾客通过这个功能,可以浏览所有的商品,或者通过商品的某种信息,分项查询找到需要的商品后进行订货购买; c.订货单查询 通过这个功能,顾客可以根据自己的需求修改订单或下订单; d.销售情况查询 通过这个功能,销售员可以查询到商品的所有销售信息,了解超市的销售情况。安全性与完整性要求 1)、安全性要求 a.系统应设置访问用户的标识以鉴别用户是否合法,并要求合法用户设置密码,保证用户身份不被盗用; b.系统应对不同的数据设置不同的访问级别,限制访问用户可以查询和处理的数据的类别和内容; c.系统应对不同用户设置不同的权限,区分不同的用户,如顾客,超市管理人员和销售员; 顾客:查询某种或全部商品,下订单购买商品; 超市管理人员:进行用户管理,增加、删除或修改用户; 销售员:查询全部商品信息,或分享查询销售情况。2)、完整性要求 a.各种信息记录的完整性,信息记录内容不能为空; b.各种数据间相互的联系的正确性; c.相同的数据在不同记录中的一致性。 5、确定系统的边界 经过前面的需求分析,确定有计算机完成的工作时对数据进行各种管 理和处理,具体的工作内容见第二部分,由手工完成的工作主要有对原始数据的录入;不能由计算机生成的,各种数据的更新,包括数据变化后的修改,数据的增加,失效数据或无用数据的删除等;系统的日常维护。 二、系统功能的设计和划分 根据如上的需求分析,我们可将本系统按照所完成的功能划分成以下几个子系统: 用户权限管理子系统 进货管理子系统 销售管理子系统 顾客管理子系统 用户注册管理子系统 后台管理子系统 各子系统完成的功能如下: 1、用户权限管理子系统 (1)系统管理员具有所有的数据和功能权限,能查看进货管理表单、销售管理表单,能管理普通用户; (2)普通用户具有查询商品、订购商品和修改个人信息等功能;(3)销售员除了具有一般用户的权限外,还可以进行销售报表的查询等; 2、进货管理子系统 (1)用户查询或分项查询订货单; (2)下订单或更改订单状态; 3、销售管理子系统 让销售员能够进行销售信息的查询,及时了解超市的销售情况; 4、顾客管理子系统 (1)顾客可以浏览所有的商品信息;(2)可以通过分项功能查询,找到所需商品;(3)直接订货或购买商品; 5、用户注册管理子系统 (1)填写个人信息,注册成为会员;(2)根据不同的目的取得不同的商品权限。 《小型超市管理系统》需求分析报告 小型超市管理系统需求分析 1.引言 1.1 编写目的 自改革开放以来,社会市场经济不断发展,人们生活水平不端提高,由小型小卖部、小型零售商等小而杂的商店逐渐演变成今天市区里我们无处不在东西品种繁多的价格便宜的大小中型流行超市。超市之流行是以顾客自选方式经营的大型综合性零售商场。又称为自选商场,大大方便了人们购物,为大量忙碌的工作人员节省了大量的时间。 本系统采用microsoft visual C# 2010程序设计及SQL Sever 2005数据库管理知识进行功能的实现。能够提高超市信息管理系统各项工作地效率和质量,改善经营管理,减轻各类事务性工作的工作量,使超市的职员能够更轻松并且更好地服务于顾客,保证顾客的购物需求,同时也间接地为超市带来更多的盈利。最终达到为超市服务的效果。 1.2 项目风险 具体说明本软件开发项目的全部风险承担者,以及各自在本阶段所需要承担的主要风险,首要风险承担者包括: 任务提出者: 软件开发者: 产品使用者:面向小型超市、小型零售店 本系统无风险,为学生作品。 1.3 预期读者和阅读建议 列举本软件产品需求分析报告所针对的各种不同的预期读者,例如,可能包括: 用户; 1.开发人员; 2.销售经理; 3.库存管理员;4.商品录入人员。 5.系统使用者(经营中小型超市法律主体)6.收银人员; 并且描述了文档中,其余部分的内容及其组织结构,并且针对每一类读者提出最适合的文档阅读建议。 《小型超市管理系统》需求分析报告 1.4 产品范围 本软件适合于中小型超市管理用于采购管理、销售管理,库存管理及财务管理及商品数据录入,修改、查询。我们不仅能够快而准的知道我们的一天的进出货及销售情况,又能够准确无误的生成知道我们想要拥有的销售报表、季销售报表、年销售报表。通过一些基本查询功能,查询自己想要的结果,知道自己的盈利情况。通过此系统,我们能够及时查询到我们的存货情况,通过系统警报及时补缺商品。 1.5 参考文献(具体开发过程中外加参考资料) 列举编写软件产品需求分析报告时所用到的参考文献及资料,可能包括: 1.百度文库(小型超市管理系统) 本项目的合同书; 上级机关有关本项目的批文; 本项目已经批准的计划任务书; 用户界面风格指导; 开发本项目时所要用到的标淮; 系统规格需求说明; 使用实例文档; 属于本项目的其它己发表文件; 本软件产品需求分析报告中所引用的文件、资料; 相关软件产品需求分析报告; 为了方便读者查阅,所有参考资料应该按一定顺序排列。如果可能,每份资料都应该给出: 标题名称; 作者或者合同签约者; 文件编号或者版本号; 发表日期或者签约日期; 出版单位或者资料来源。 2.综合描述 这一部分概述了正在定义的软件产品的作用范围以及该软件产品所运行的环境、使用该软件产品的用户、对该软件产品己知的限制、有关该软件产品的假设和依赖。 本系统采用microsoft visual C# 2010程序设计及SQL Sever 2005数据库管理知识进行功能的实现。能够提高超市信息管理系统各项工作地效率和质量,改善经营管理,减轻各类事务性工作的工作量,使超市的职员能够更轻松并且更好地服务于顾客,保证顾客的购物需求,同时也间接地为超市带来更多的盈利。最终达到为超市服务的效果。 《小型超市管理系统》需求分析报告 2.1 产品的状况 超市管理系统,该系统是现有应用软件的替代品(升级产品);是新一代新型的,自主型的产品。它是一个大系统的组成部分,它与POS机连接在一起收银及会员及时消费。能够达到快速提升的收银效率和一系列的管理有机的结合起来。 2.2 产品的功能 该系统包括:前台管理(普通收银部分和会员收银包括与后台折扣情况结合起来,达到高效率结算)和后台管理(销售管理,存货管理,财务管理,基本资料管理,每日提醒)。 一.前台管理: 1.登陆人员管理:使用人员账号密码登陆 2.销售信息管理:添加商品的单价价格以及销售数量等 二.后台管理: 1.存货管理:主要是了解某一类商品的库存情况,并对商品进行添加、修改、删除; 2.供货商管理:记录供货商的个人资料(姓名,地址,联系方式等); 3.基本资料管理:里面包含产品的概况、人员管理、商品管理等。 2.3 运行环境 描述了本软件的运行环境,一般包括: 硬件平台; 操作系统和版本:Windows XP 支撑环境(例如:数据库等)和版本:Microsoft VisualC#和Microsoft SQL Server2005 其它与该软件有关的软件组件; 与该软件共存的应用程序。 2.4 设计和实现上的限制 确定影响开发人员自由选择的问题,并且说明这些问题为什么成为一种限制。可能的限制包括下列内容: 必须使用的特定技术、工具、编程语言和数据库; 避免使用的特定技术、工具、编程语言和数据库; 要求遵循的开发规范和标准; 例如,如果由客户的公司或者第三方公司负责软件维护,就必须定义转包者所使用的设计符号表示和编码标准; 硬件的限制 例如,定时需求或存储器限制; 《小型超市管理系统》需求分析报告 数据转换格式标淮的限制。 2.5 假设和约束(依赖)列举出对软件产品需求分析报告中,影响需求陈述的假设因素(与己知因素相对立)。如果这些假设因素不正确、不一致或者被修改,就会使软件产品开发项目受到影响。这些假设的因素可能包括: 计划使用的商业组件,或者其它软件中的某个部件; 假定产品中某个用户界面将符合一个特殊的设计约定; 有关本软件用户的若干假定(例如:假定用户会熟练使用SQL语言。); 有关本软件开发工作的若干假定(例如:用户承诺的优惠、方便、上级部门给予的特殊政策和支持等。); 有关本软件运行环境的一些问题; 此外,确定本软件开发项目对外部约束因素所存在的依赖。有关的约束可能包括: 1.工期约束; 2.人员约束; 3.设备约束; 4.地理位置约束; 其它有关项目约束; 3.外部接口需求 3.1 用户界面 3.1.1 用户登录界面 用户名 密码 组件:文本框、标准按钮 快捷键:Enter键 《小型超市管理系统》需求分析报告 3.1.2商品信息管理 商品的增、删、查、改 存货管理界面 库存录入 《小型超市管理系统》需求分析报告 存货查询 组件:文本框、标准按钮、消息框、数据网格 基本资料管理界面 产品概况 人员管理 供应商管理 商品管理 组件:标准按钮、文本框、数据网格、下拉列表框 《小型超市管理系统》需求分析报告 3.2 软件接口 描述该软件产品与其它外部组件的连接,这些外部组件必须明确它们的名称和版本号以资识别,可能的外部组件包括: 操作系统:Windows XP; 数据库:Microsoft SQL Server2005; 工具:Microsoft Visual C# 2010; 函数库; 集成的商业组件:中间件; 4.系统功能需求 4.1 用户登录 用户登录界面主要提供用户的登录。 4.2 前台管理 4.2.1 人员管理 提供用户的注册、注销、修改以及删除。 《小型超市管理系统》需求分析报告 4.2.1 销售管理 提供商品销售的信息,以便及时补货。 4.3 后台管理 4.3.1 存货管理 存货管理提供了库存的录入、查询、修改登录功能,还包括缺货提醒的提醒功能。 1.库存录入,包括库存的添加、删除、修改等功能提供添加旧商品或添加新商品的选择功能。 2.存货查询,主要提供库存的查询功能 4.3.2 销售信息管理第四篇:小型超市管理系统设计说明书
第五篇:小型超市管理系统需求分析