资源描述
1超市管理办公软件的开发与利用前 言最初的超市资料管理,都是靠人力来完成的。但近几年我国超市经营规模日趋扩大,销售额和门店数量大幅度增加,而且许多超市正在突破以食品为主的传统格局,向品种多样化发展。小型超市在业务上需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息,并对商品各种信息进行统计分析。因此,在超市管理中引进现代化的办公软件, 实现超市庞大商品的控制和传输,从而方便销售行业的管理和决策,为超市和超市管理人员解除后顾之忧。第一节 开发该系统的依据及意义超市软件系统从企业运营及管理的实际情况出发,结合当前中国零售业业态发展趋势,顺应了零售行业对信息化的要求,为商业管理信息系统提供了系统全面的技术解决方案。基于以上原因,超市信息管理系统目前在各个商业领域都发挥了很大的作用,也得到了越来越多的大、中、小型商业企业的应用。但就目前的应用状况分析,管理系统在中、高端企业得到了广泛的应用和重视,在小型企业、零售店的应用仅局限于信息化的表面层次,没有得到高度的重视。同时,小企业也因资金发面问题限制了其向更高程度信息化的应用! 社会生活的现代化,使得市场的走向发生巨大变化。现代化是也的发展,也使得超市的管理手段发生前所未有的革命。计算机的运用现在发达国家的各类商店超市中十分普及。由于他能准确记载和查阅有关超市经营活动的大量数据,帮助超市经营者掌握和分析营销情况,即时做出正确决策,并且有利于商店内部的财务、工资、人员、库存和销售等情况,因而大大提高了现代超市的管理水平。因此,开发一个小型超市管理系统,它可以使得我们国内的小型超市可以更好的操作。此系统的有减少差错,节省人力,减少顾客购物时间,增加客流量,提高顾客满意度等特点。2第二节 开发设计思想本系统是为某某超市设计开发的在线超市管理系统,来研究基于 C/S 模式的网上信息管理的实现,采用的是 ASP+SQL 2000 模式的电子管理平台。超市作为一种商品集散点,商品及相关信息繁多,涉及很多的信息数据的管理,现今,虽然大多数超市都使用了单机版管理系统或局域网管理系统,但还是没法满足这个起来越网络化的时代的要求。该超市管理系统传袭了传统超市管理系统甚至手工管理系统在信息处理方面的长处,弥补了传统超市管理系统在网络化服务方面的缺失,使超市的服务在服务质量没有减弱的前提下,更方便顾客,贴近顾客。此系统设计上采用三层结构、Web Service 技术,使之在选用平台、采用技术上具有先进性、前瞻性、扩充性,从而保证建成的系统具有良好的稳定性、可扩充性。系统设计按标准化、规范化,分层设计,构件化实现。采用软件构件化的开发方式,使系统结构分层,业务与实现分离,逻辑与数据分离;以统一的服务接口规范为核心,使用开放标准。从功能上来说,系统是比较完备的,系统以 Web 界面与用户交互,为用户提供信息并接受其操作,同时通过数据库管理系统来存储信息数据。系统实现了对信息数据的浏览、查询、编辑和管理等基本数据库操作,采用了模块化设计方法,根据用户的需求及程序的应用与维护的易用性,将各个部分置于不同的模块当中,方便了程序的扩展与维护,同时建立了程序功能复用的基础。第一章 系统分析第一节 可行性分析 可行性分析随着计算机技术的发展和网络人口的增加,人们对网络的需求也越来越苛刻,越来越贴近其生活,电子信息管理已经成为网上的一股潮流。而更多的,是要求传统行业的管理要延伸到网络,以更方便其生活、工作和学习。可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。3要达到这个目的,必须分析几种主要的可能解法的利弊,从而判断原定的系统规模和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。因此,可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。系统的可行性分析主要包括经济上的可行性、技术上的可行性和操作上的可行性。本系统的可行性分析如下:1.1.1 经济可行性 由于本超市管理系统所要求的硬件(计算机及相关硬件)和软件环境(ASP+SQL 2000),市场上都容易购买到或从相关网站下载,系统成本主要集中在本管理系统的开发与维护上,对超市不造成过重的经济负担。而一旦此系统投入使用,不仅可以减少超市的工作强度,提高工作效率,而且方便了超市对信息的管理,延续了传统的管理模式,极大限度的方便了超市管理人员,而且,目标系统不是很复杂,开发的周期较短,人员经济支出不大,所节省的大量人力、财力产生的效益将远远大于本管理系统的开发成本,所以从经济方面讲开发此系统是可行的。1.1.2 技术可行性超市管理系统的开发基于 C/S 模式,主要包括前端应用程序的开发以及后台数据库的建立和维护两个方面。对于前者要求应具备功能完备、易于使用等特点,而对于后者则要求能建立数据一致性和完整性强、数据安全性好的库。本系统拟采用 ASP.NET 和 MS SQL 2000 分别作为前端和后端的开发工具。ASP 是 sun 公司在 Java 基础下开发出来的实现了动态页面与静态页面的分离,脱离了硬件平台的束缚,以及编译后运行等方式大大提高了其执行效率而逐渐成为因特网上的主流开发工具。SQL 2000 作为微软在 Windows 系列平台上开发的数据库,一经推出就以其易用性得到了很多用户的青睐,相信大多数将自己的业务建立在 Windows 平台上的用户都会对它有相当的亲切感。区别于 FoxPro、Sql 2000 小型数据库,SQL 2000 是一个功能完备的数据库管理系统。它包括支持开发的引擎、标准的 SQL语言、扩展的特性(如复制、OLAP、分析)等功能。而像存储过程、触发器等特性,也是大型数据库才拥有的。4因此从技术方面讲开发此系统是可行的。1.1.3 操作可行性超市作为一个商品资源的集散点,其主要功能就是对顾客开放购买的地方。传统的超市管理系统,一般有两种方式:一是手工管理,这种方式应用最传统的“笔纸操作系统” ,将超市的货物信息、销售信息、厂商信息管理及单据管理等均以纯手工的形式进行,将信息以表格文件的表现形式记录在纸上,再进行统一保存。这种方式虽然在简单信息查询时会有一定的方便,但是存在着更多的不便:信息保存时间和条件很受限制、容易被损坏、信息查询不便、信息传达容易造成失误等。另一种是常见的信息管理方法是应用单机版的管理系统,但是这种系统设计时间较早,很多功能划分很不科学,很多设置已经跟不上时代需求了。但是超市管理人员已经有相当的应用经验,所以新的系统操作有一定的操作经验可以作一定的操作经验。本超市规模较大,信息管理经验丰富,单机版的超市管理系统做得较系统较到位,在超市信息处理方面做得很精准规范。综上所述,本超市很有必要,也很有条件做到超市信息在线管理,以更贴近时代需求和超市发展需要。第二节 需求分析52 需求分析2.1 业务流分析超市管理系统工作流程为:系统启动并进入登录界面,系统管理员输入正确的用户名及密码后,登陆系统主操作界面,系统管理员可对系统相关信息进行操作,包括基本信息、货物信息、供应商信息、销售信息、仓库信息等。本系统的业务流程图如图 2-1 所示:本系统是将现代化的计算机技术与超市管理服务模式相结合,按照借阅管理的服务流程设计完成的。同时为扩展服务范围,初步设计一个管理平台以利于信息发布和管理。为了使系统在各项管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下系统开发目标:具体目标如下:(1)操作简单、界面友好:完全控件式的页面布局,使得信息的录入工作更简便;许多选项包括商品信息、采购信息、供应商信息、销售信息等只需要点击鼠标就可以完成。(2)即时可见:对信息的处理(包括添加、修改、删除)将立即在对应的页面显示出来,达到即时发布、即时见效的功能。(3)功能完善:不仅包括常见系统的信息管理的各个方面:信息录入、浏览、删除、修改、查询等各个方面,完整地实现了系统对即时信息的管理要求。同时,为了能有效方面的更新系统的界面。(4)方便移植:系统应具有实用性、可靠性和适用性,同时注意到先进性。查询 发布 修改 浏览 删除 登录系统 系统管理员 基本信息、货物信息、供应商信息等统计 自动写入后台数据库 保存 图 2-1 系统业务流程图 6针对不同的用户,只需要稍作修改就可以开发出适合自己特点的超市管理系统。系统界面中所需的数据都存放于数据文件中,只要对该文件做部分修改,就能在系统界面上实现及时更新的效果,减少了更改系统源代码的复杂性。(5)动态管理:对系统数据库实行动态操作,能实现对数据库信息的动态查询、动态更新修改和动态录入数据。2.2 数据流分析数据流程分析主要包括对信息的流动、传递、处理、存储等的分析。数据流程分析的目的就是要发现和解决数据流通中的问题。现有的数据流程分析多是通过分层的数据流程图(data flow diagram,简称 DFD)来实现的。其具体的做法是:按业务流程图理出的业务流程顺序,将相应调查过程中所掌握的数据处理过程,绘制成一套完整的数据流程图。超市管理系统的数据流程:对本系统操作的数据源有普通用户、注册用户和管理员三种,首先由系统管理员根据不同用户的需要将某些信息保存到数据库中,然后再进行发布。不同权限的用户可以对这些库信息进行添加、修改和删除处理。所有用户均可以进行信息查询。通过对本系统的需求分析,系统的基本功能已经确定。整个系统的数据流程图如 2-2:进入系统登录界面系统维护数据库管理员登录采购信息管理基本信息维护商品信息维护销售信息维护库存信息维护操作页面72.3 数据字典数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据流图和数据字典共同构成系统的逻辑模型。2.3.1 超市管理系统的数据字典1.数据字典列表数据流数据存储名称:管理员信息数据来源:管理员信息表数据去向:管理员登陆模块数据组成:管理员信息管理信息唯一标识+管理员帐号+管理员密码+管理员权限+注册时间描述:存储了管理员的基本信息数据存储名称:商品类别信息数据来源:商品类别信息表数据去向:商品类别模块数据组成:商品类别信息=商品类别信息唯一标识+商品类别+添加时间+经手人描述:存储了商品类别的注册信息数据存储名称:商品信息数据来源:商品信息表数据去向:商品信息模块数据组成:商品信息=商品信息唯一标识+货物名称+供货编号+进价+售价+数量+厂商等描述:存储了商品信息数据存储名称:库存信息数据来源:库存信息表数据去向:库存信息模块数据组成:库存信息=库存信息唯一标识+商品名称+价格+数量+添加时间+单位+编号等描述:存储了库存信息图 2-2 系统数据流程图退出系统供应商管理数据库维护8数据存储名称:销售信息数据来源:销售信息表数据去向:销售信息模块数据组成:销售信息=销售信息唯一标识+货物名称+数量+价格+时间等描述:存储了销售详细信息2.数据字典列表数据处理3.数据字典列表数据存储2.3.2 超市管理系统的数据项管理员数据项:描述:管理员登录系统进行管理员登录管理输入:管理员的用户名、密码过程:判断是否为合法的管理员输出:系统主界面名称: 查询信息描述:根据条件查询所需信息:货物信息等输入: 输入查询的条件过程:查询系统的用户所需的信息输出: 查询得到的信息页面名字:录入信息描述:职员信息,货物信息等的录入输入: 输入要添加录入的信息过程: 将需要添加录入的信息加入数据库中输出: 系统新的信息表页面输出: 查询得到的信息页面名字:修改、删除信息描述:对职员信息,货物信息等修改或删除后存入数据库中输入: 输入要修改或删除的信息过程:对需要修改的信息做修改、删除过时的信息输出: 系统新的信息表页面输出: 查询得到的信息页面名字: 数据库信息别名:无描述:存储了数据库的基本信息数据组成:数据库信息=管理员信息+客户信息+货物信息+库存信息+销售信息位置:数据库输出: 查询得到的信息页面名称:管理员帐号 简述:唯一表示一个管理员数据类型:文本字段大小:50名称:管理员密码 简述:每个管理员所对应的密码数据类型:文本字段大小:509货物数据项:厂商数据项名称:货物编号 简述:货物对应的编号数据类型:文本字段大小:50名称:货物名称 简述:货物的名称数据类型:文本字段大小:50名称:厂商名称 简述:供货厂商的名称数据类型:文本字段大小:40名称:厂商编号 简述:供货厂商的编号数据类型:自动编号字段大小:长整型名称:负责人简述:供货厂商的负责人数据类型:文本字段大小:10名称:货物单位简述:货物的计量单位数据类型:文本字段大小:50名称:权限 简述:管理员对应的权限数据类型:文本字段大小:50名称:注册时间 简述:管理员的注册时间数据类型:时间字段大小:8名称:颜色简述:货物的颜色数据类型:文本字段大小:50名称:单价简述:货物的单价数据类型:数字型字段大小:8名称:售价简述:货物的售价数据类型:数字型字段大小:8名称:电话简述:供货厂商的联系电话数据类型:文本字段大小:12名称:时间 简述:供货厂商信息的添加时间数据类型:时间字段大小:8名称:经手人 简述:厂商信息的管理经手人数据类型:文本字段大小:1010职员数据项货物入库数据项货物出库数据项名称:职员编号 简述:职员的编号数据类型:自动编号字段大小:长整型名称:姓名简述:职员的姓名数据类型:字符串字段大小:10名称:部门 简述:职员所在的部门数据类型:字符串字段大小:50名称:电话 简述:职员的联系电话数据类型:字符串字段大小:50名称:ID 简述:货物入库信息唯一标识数据类型:自动编号字段大小:长整型名称:货物名称简述:入库货物的名称数据类型:字符串字段大小:50名称:数量 简述:货物的数量数据类型:数字型字段大小:8名称:进价 简述:入库货物的进价数据类型:数字型字段大小:8名称:ID 简述:货物出库信息唯一标识数据类型:自动编号字段大小:长整型名称:货物名称简述:出库货物的名称数据类型:字符串字段大小:50名称:数量 简述:货物的数量数据类型:数字型字段大小:8名称:销售价格 简述:入库货物的销售价格数据类型:数字型字段大小:811第二章 开发工具简介和环境配置第一节 ASP 开发工具简介ASP 的全称是 Active Server Pages,即活动服务器页面,以前的互联网全部是由静态的 HTML 页面组成,这样更新网站内容时需要制作大量的 HTML 页面,增大了工作量。但是有了 ASP 以后,我们就能够根据不同的用户,在不同的时间向用户显示不同的内容,使网站的更新变的简单。但是由于 ASP 程序和网页的 HTML 混合在一起,这就使得程序看上去相当的杂乱。在现在的网站设计过程中,通常是由程序开发人员做后台的程序开发,前面有专业的美工设计页面,这样,在相互配合的过程中就会产生各种各样的问题。同时,ASP 页面是有脚本语言解释执行的,使得其速度受到影响。受到脚本语言自身条件的限制,我们在编写 ASP 程序的时候不得不调用 COM 组件来完成一些功能。由于以上种种限制,微软推出了 ASP.NET,ASP.NET 并不只是ASP 4.0,它是一个用于 Web 开发的全新框架,其中包含了许多新的特性。ASP.NET 提供了更易于编写、结构更清晰的代码,这些代码很容易进行再利用和共享;ASP.NET 使用编译后的语言,从而提升性能和伸缩性;ASP.NET 使用Web 表单使开发更直观,利用面向对象技术促进组件的再利用。另外,ASP.NET12中还包括有页面事件、Web 控件、缓冲技术以及服务器控件和对数据捆绑的改进。供 ASP.NET 使用的库以及在 Microsoft.NET 框架中允许通过 Web 使用客户商用函数,为程序员提供了更多新的开发机会。相对于 ASP,ASP.NET 使代码更加干净。现有的 ASP 应用程序中,不管你将它们写得怎么样,结构总是充满了长长短短的代码。而 ASP.NET 的代码不仅更容易编写,而且更加干净整洁,比ASP 代码更易于阅读。同时,ASP.NET 代码的结构方式提高了其再利用性和共享性。其次 ASP.NET 改进了配置、伸缩性、安全性和可靠性。对于简单的 ASP 应用程序,配置其实并不算什么问题,但是当你移植到一个利用组件的 N 层结构中时就会遇到问题。当你对这些应用程序进行配置和维护时,DLL 陷阱问题(组件注册、版本、锁定的 DLL 等等)就会出现。ASP.NET 中则取消了组件注册以及 DLL 锁定,全面使用了 XML 配置文件,从而解决了这个问题。这样你只需要执行复制文件的工作就能配置一个 Web 应用程序。 另外 ASP.NET 对各种不同的浏览器提供了更好的支持。ASP.NET 还 造就了一类新的 Web 应用程序。目前的 Web 应用程序通常都是同一种模式:一套线性应用程序,然后将逻辑植入其中之一。ASP.NET 允许开发人员打破这种单一模式,创造出更加动态而且伸缩性更强的应用程序,这种应用程序能够更好地满足公司的商业需求,并提供一个更加丰富的开发环境。到这里你可能会想,虽然这些目标都很高尚,但是它们会使编写应用程序变得困难。然后恰恰相反,用 ASP.NET 进行开发要简单得多!ADO.NET 是对 Microsoft ActiveX Data Objects (ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是 XML 格式的,因此任何能够读取 XML 格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是 ADO .NET 组件,它可以是基于一个 Microsoft Visual Studio 的解决方案,也可以是任何运行在其它平台上的任何应用程序。ADO.NET 让程序开发人员可以在下一代的 Web 上进行数据存取更为简单,并且更有效率。ADO.NET 可以达成这些目的的最重要的两个改进为:Disconnected DataSet(离线数据集)和 XML Native Support(对于 XML 的原生支持) 。在ADO.NET 中,为了达成离线存取的目的,不使用服务器端光标是自然的结果(默认值) 。同时,在原生模式中,ADO.NET 也会将数据储存成 XML 的文件格式。13ADO.NET 还提供了许多其它的选择性:ADO.NET 可以使用联机数据存取方式,或是离线数据存取方式,这完全取决于您所使用的光标类型和光标位置。同时,ADO 的原生储存数据格式是 Advanced Data TableGram(ADTG)档案格式,这种格式的数据是 RecordSet 在内存中的特有二进制结构。然而,在 ADO.NET 中,预设的 RecordSet 集合的呈现方式是可以变更或修改的离线 XML Schema。ADO.NET 对象模型中的主要对象就是 DataSet,简单来说,DataSet 对象就是 RecordSet 的集合,ADO.NET Framework 会提供所有的 RecordSet 数据库特性,例如排序、分页、检视表、关联性、索引和主键等等。Visual C# .NET 是一套综合工具集,用于为 Microsoft Windows 和 Web 创建 XML Web 服务和基于 Microsoft .NET 的应用程序。它使用了面向组件的 C# 开发语言,为具备 C+ 或 Java 经验的初级和中级开发人员创建下一代软件提供了现代化的语言和环境。Visual C# .NET 是基于 C+ 传统语言而创建。 C# 是一种面向对象的编程语言,它不仅可以让 C+ 和 Java 开发人员马上熟悉,而且提供了重要的改进,包括统一的类型系统、最大化开发人员控制的“不安全”代码以及大多数开发人员容易理解的强大的新语言构造。 C#语言具有对属性、索引器、委托、版本控制和自定义属性的内在支持,使用 XML 注释,C# 开发人员可以生成有用的源代码文档。高级继承模型使开发人员能够重用来自任何支持 .NET 的语言的代码,这对开发人员来说是很方便的。第二节 SQL Server 2000 简介SQLServer2000是一个基于关系型数据库模型建立的数据库管理系统软件(DBMS)。它帮助用户方使地得到所需信息,并提供强大的数据处理工具。它可以帮助用户组织和共享数据库信息,以便于根据数据库信息作出有效的决策。另外,仅有这样个数据库管理系统软件(DBMS),则只能进行一些信息系统所需要的简单数据处理,且对操作者有较高的操作技能要求。因此,信息系统的开发者都是在某种数据库管理系统软件DBMS环境下编写相应的应川程序,以形成一个能够满足应用需求且操作尽可能简单的应用型信息系统,这被称之为二次开发。 SQLServer2000 还具有以下特点:141使信息更易于查找和使用SQLServer2000继续为简便地查找信息提供易于使用的工具。2支持 Web 功能的信息共享SQLServer2000 可以通过企业内部网络Internet 很简便地实现信息共享,而且它可以很容易地将数据库定位到浏览器中,它将桌面数据库的功能和网站的功能结合在一起。3用于信息管理的强大解决方案高级用户和开发人员可以创建那些将SQLServer2000界面(客户端)的易用性和SQL服务器的可扩展性和可靠性结合在一起的解决方案。4改变了数据库窗口可在SQLServer2000容纳并显示新的对象,增强了SQLServer2000 数据库的易用性。5提供名称自动更正功能自动解决当用户重新命名数据库对象时出现的常见负面效应。例如,当用户重命名表中的字段时,将自动在诸如查询的相关对象中进行相应的更改。6具有子数据表功能子数据表在同一窗口中,提供了嵌套式的视图,这样就可以在同一窗口中专注于相关的数据并对其进行编辑。7 用户只需简单地将SQLServer2000对象(表、查询等)从数据库放到ODBC数据源中,即可从 Microsoft SQLServer2000中将数据导出到Microsoft ACCESS 2000 。8数据访问页功能该功能可使用户快捷方便地创建数掂 HTML页,并通过数据 HTML页,将数据库应用扩展到企业内部网络 Internet上。这将帮助用户比以往更快捷、高效的方式共享信息。9共享组件的集成SQLServer2000利用新的 Web组件和位于浏览器中的 COM 控件,为用户提供了多种查看和分析数据的方式。10Microsoft SQL Server 交互性Microsoft SQLServer2000支持OLE DB,使用户可以将SQLServer2000 界面的易用性与诸如 Microsoft SQL Server的后端企业数据库的可升级性相结合。第三章 总体设计15为了最终实现目标系统,必须设计出组成这个系统的所有程序和文件(或数据库) 。模块是数据说明、可执行语句等程序设计对象的集合,它是单独命名的而且可通过名字来访问。模块化就是把程序化分成若干个模块,每个模块完成一个子功能,把这些模块集起来组成一个整体,可以完成指定的满足问题的要求。第一节 网络便民服务系统功能分析首先对现有系统进行分析,现有系统是信息的重要来源。分析已有系统的功能和实现,从而确定新系统的设计目标和模型。由于条件有限,调研主要是在网上进行。 。超市管理人员,需要获得以下功能:系统维护、商品管理、进货管理、库存管理、销售管理、利润查询等。下面是这个系统的一个总体结构图:第二节 超市管理系统功能模块划分根据需求分析与系统功能设计目标,结合实际情况本系统功能模块设计分管理员登录超市信息管理界面管理员管理货物信息管理系统维护厂商信息维护货物入库信息维护货物出库信息管理统计信息管理图 3-1 系统功能模块图16为如下几个模块:1主页:在这里我们可以看见本系统的主要功能和信息。2管理员信息,包括数据项:帐号,密码,权限等。3货物信息,包括数据项:编号,货物名称,计量单位,供货厂商等。4货物入库信息,包括数据项:系统编号,货物名称,货物数量,进货价格等。5货物出库信息,包括数据项:系统编号,货物名称,货物数量,销售价格等。6统计信息,包括数据项:系统编号,货物名称,统计数据等。第四节 超市管理系统各模块对象关系图在概念结构设计这部分内容中,我们将需求分析得到的用户需求抽象为信息模型,它完成的是从现实世界到信息世界的一个映射过程。描述概念模型最有力的工具的是系统 E-R 模型图,所以在这部分中我们用E-R 图来表示本系统中各个实体的关系。在数据库设计的开始,首先用概念模型来数据库中的实体与联系。对现实世界进行第一次抽象,把实体、实体的属性、及实体之间存在的联系,通过 E-R 图的形式来表示出来。它有两个明显的优点:接近于人的思维,容易被用户所理解;概念模型与计算机软硬件环境无关,也独立于数据库管理系统。E-R 图是直观表示概念模型的工具,它有三个基本成分:1矩形框,表示实体类型,。2菱形框,表示联系类型(实体间的联系)。3椭圆形框,表示实体的属性。得到上面数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。设计规划出的实体有:管理员信息实体、职员信息实体、货物信息实体、货物入库信息实体、货物出库信息实体、统计归还实体和厂商信息实体。17实体之间关系的 E-R 图如图 4-1 所示:管理员信息实体 E-R 图如图 4-2 所示:职员信息实体 ER 图如图 4-3 所示:商品实体 ER 图如图 4-4 所示:货物入库信息实体 ER 图如图 4-5 所示:管理员帐号密码权限图 4-2 管理员信息实体ER 图职员信息系统编号姓名所在部门电话.图 4-3 职员信息实体 ER图货物厂商信息货物入库信息货物出库信息销售统计信息供货厂商信息职员信息图 4-1 实体间的关系 E-R 图 管理员 管理货物图 4-4 商品实体 ER 图. .商品信息馆藏编号名称出版社作者货物入库信息18货物出库信息实体 ER 图如图 4-6 所示:货物信息实体 ER 图如图 4-7 所示:货物信息编号名称供货厂商数量.图 4-7 货物信息实体 ER图 编号货物名称数量进货价格图 4-5 图书借阅信息实体ER 图货物出库信息编号货物名称数量销售价格.图 4-6 图书续借实体ER 图19第四章 系统设计第一节 设计目标根据理论,该系统实施后,应达到以下目标:实用性强:我们努力使系统符合实际操作流程的习惯,并尽量减少用户的输入,易学易用的友好的用户界面,满足各层次的用户使用的需求。先进的程序结构:使用当代前卫的软件编程,能延长其生命周期,易于维护与管理。安全可靠性高:后台维护功能齐全,根据平台在各个阶段不同的使用情况,管理人员可以设置相应的操作权限,增加系统注册,分配各个栏目的管理权限,实现系统的维护,保证系统的安全、可靠。使用模块化设计的方法:使系统具有良好的可扩充性,以适应其不同阶段的发展需要,便于后来者分析、维护。操作简单,维护方便:每个子系统都具有相对独立的系统维护功能对可变化的项目可自行维护。查询功能强大:可以对商品的基本情况、用户基本情况等按各种方式查询,可形成各种表单,同时还可对其进行汇总,使管理人员能及时准确地掌握用户和商品等的基本情况。系统运行稳定、安全可靠。3第二节 数据库结构设计本系统的数据库采用 SQL SERVER 2000,SQL(Structured Query Language),意思为结构化查询语言,是一种介于关系代数与关系演算之间的结构化查询语言。它的主要功能就是同各种数据库建立联系,进行沟通。ANSI(美国国家标准协会)规定 SQL 是关系型数据库管理系统的标准语言。SQL 语句可以用来执行各种各样的操作,例如更新数据库中的数据、从数据库中提取数据等20。 SQL 语言之所以能够为用户和业界所接受,并成为国际标准,是因为它是一个综合的、功能极强同时又简捷易学的语言。SQL 语言集数据查询、数据操纵、数据定义和数据控制功能于一体,主要特点包括20:201功能综合统一非关系模型的数据语言一般都分为模式数据定义语言(模式 DDL) 、外模式数据定义语言(外模式 DDL) 、与数据存储有关的描述语言(DSDL)及数据操纵语言(DML) ,分别用于定义模式、外模式、内模式和进行数据的存取与处置。当拥护数据库投入运行后,如果需要修改模式,必须停止现有的数据库的运行,转储数据,修改模式并编译后再重装数据库,十分麻烦。SQL 语言则集数据定义语言 DDL、数据操纵语言 DML、数据控制语言DCL 的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括定义关系模式、建立数据库、插入数据、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作要求,这就为数据库应用系统的开发提供了良好的环境。用户在数据库系统投入运行后,还可根据需要随时地逐步地修改模式,切并不影响数据库的运行,从而使系统具有良好的可扩展性。2高度非过程化非关系数据模型的数据操纵语言是面向过程的语言,用其完成某项请求必须指定存取路径。而用 SQL 语言进行数据操作,只要提出“做什么”,而无须指明“怎么做”,因此无须了解存取路径,存取路径的选择以及 SQL 语言句的操作过程由系统自动完成。这不但大大减轻了用户负担,而且有利于提高数据独立性20。3面向集合的操作方式非关系数据模型采用的是面向记录的操作方式,操作对象是一条记录。而SQL 语言采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合20。4以同一种语法结构提供两种使用方式SQL 语言既是自含式语言,又是嵌入式语言。作为自含式语言,他能够独立地用于联机交互的使用方式,用户何以在终端键盘上直接键入 SQL 命令对数据库进行操作;作为嵌入式语言,SQL 语句能够嵌入到高级语言中,供程序员设计程序时使用。而在两种不同的使用方式下,SQL 语言的语法结构基本上是一致的20。5语言简捷,易学易用21SQL 语言功能极强,但由于设计巧妙,语言十分简捷,完成核心功能只用了 9 个动词,SQL 语言接近英语口语,因此容易学习,容易使用20。本系统的数据库名字为 hospital ,创建过程如下:在 SQL SERVER 2000 的企业管理器中,在左面的控制台根目录中,双击“Microsoft SQL Server”-“SQL Server 组”-“(local)(Windows NT)” ,右击“数据库” ,选择“新建数据库” ,弹出新建数据库窗口,在此窗口中输入要创建的数据库的名字“net05chaoshi” ,点击“确定”按钮,完成数据库的创建。创建数据库如图 3-17 所示:超市管理系统数据库中各个表的设计结果如表所示。每个表格表示在数据库中的一个表。表 1 为管理员信息表,存储系统中的管理员信息。表 1 管理员信息表表 2 为商品类别信息表,记录系统中商品分类的详细信息。表 2 商品分类信息表表 3 为货物信息表,记录系统中已有货物的信息。表 3 货物信息表22 表 4 为货物入库信息表,记录货物入库的信息。表 4 货物入库信息表表 5 为销售记录信息表,记录在销售记录的信息。表 5 销售记录信息表23表 6 为库存信息表,记录在库存的信息。表 5 库存信息表第五章 主要功能模块设计245.2 系统登录模块图 5-1 超市管理系统登录界面打开系统首页,看到如图 5-1 的界面,界面实现的功能是核查系统管理员的身份,以保证系统的安全。其中“确定”按钮的代码设计如下:private void button1_Click(object sender, EventArgs e) /单击登陆按钮 /定义变量 string sql; /给sql赋值,查询用户表中是否有匹配用户名和密码 sql = select * from allusers where username=+textBox1.Text.ToString().Trim()+ and pwd=+textBox2.Text.ToString().Trim()+; DataSet result = new DataSet(); /定义变量result为数据集型 result = new Class1().hsggetdata(sql); /将查询到的结果放入数据集result中 if (result != null) if (result.Tables0.Rows.Count 0) /如果查询结果不为空 nuser = result.Tables0.Rows0username.ToString().Trim(); /给全局变量当前用户nuser赋值 ncx = result.Tables0.Rows0cx.ToString().Trim(); /给全局变量当前权25限ncx赋值 this.Hide(); /隐藏当前窗口 Form2 newform = new Form2(); /弹出新窗口form2 newform.Show(); else /如果查询结果为空 MessageBox.Show(用户名或密码不正确); else /出现异常,给出提示 MessageBox.Show(数据库连接错误,请检查连接!); 5.3 系统主操作设计用户界面的大部分功能都是以管理模块为前提的,因为客户模块所显示的数据大部分需要通过管理模块来添加。因此,我们首先要来介绍管理模块的设计与开发。管理模块相对客户模块要复杂一些,因为在这里需要对所有信息进行维护,包括浏览、增加、修改和删除等操作。为了便于系统维护,页面的命名才用“模块名+功能名”的方式。概括起来,管理模块具有以下功能:* 管理员管理。* 货物维护。* 货物入库维护。* 销售记录维护。* 库存信息维护。26图 5-2 系统主操作界面界面可分为三部分,上方为系统名称、当前系统时间及用户身份。左下侧为系统功能列表,管理员对系统可进行的所有操作功能都可在此进行选择。右侧为操作界面,当未选择任何操作时,系统显示欢迎辞。275.4 管理员信息管理模块图 5-3 管理员信息管理界面此系列页面由两部分组成,上图为目前系统已有的管理员,并以列表形式显示,下图为添加新管理员的操作界面。其中“删除”按钮的代码设计如下:private void button3_Click(object sender, EventArgs e) /单击删除按钮 string sql; /删除 if (dataGridView1.SelectedCells3.Value.ToString().Trim() = 超级管理员) MessageBox.Show(对不起,超级管理员不能删除); else 28 sql = delete from allusers where id= + dataGridView1.SelectedCells0.Value.ToString().Trim(); int dd = 0; dd = new Class1().hsgexucute(sql); if (dd = 1) /如果删除成功,再次执行查询操作,即刷新 sql = select * from allusers order by id desc; DataSet result = new DataSet(); result = new Class1().hsggetdata(sql); dataGridView1.DataSource = result.Tables0; /给出提示 MessageBox.Show(删除成功); else MessageBox.Show(对不起,系统错误); 295.5 商品信息管理页面图 5-4 商品增加页面在此页面中,管理员可进行商品信息的管理操作,包括商品编号、商品名称、价格、商品类别、单位、厂商等。其中“添加”按钮的代码设计如下:private void button1_Click(object sender, EventArgs e) string sql; sql = insert into allpro(bh,mc,price,lb,dw,cs,memo) values( + bh.Text.ToString().Trim() + , + mc.Text.ToString().Trim() + , + price.Text.ToString().Trim() + , + lb.SelectedItem.ToString().Trim() + , + dw.Text.ToString().Trim() + , + cs.Text.ToString().Trim() + , + memo.Text.ToString().Trim() + ); int dd = 0; dd = new Class1().hsgexucute(sql); if (dd = 1)30 MessageBox.Show(修改成功); else /如果语句执行不成功 MessageBox.Show(对不起,系统错误,请检查您的输入是否完全正确!); 5.6 货物信息管理页面图 5-5 商品修改运行界面31此系列页面的主要功能是管理货物信息,故布面除可以显示所有系统已有的货物的详细信息,包括货物名称、商品编号、单位、货物颜色、其他说明等。1其中“修改”按钮的代码设计如下:private void button2_Click(object sender, EventArgs e) string sql; / 修改语句 sql = update allpro set mc= + mc2.Text.ToString().Trim() + ,bh= + bh.Text.ToString().Trim() + ,price= + price.Text.ToString().Trim() + ,lb= + lb.SelectedItem.ToString().Trim() + ,dw= + dw.Text.ToString().Trim() + ,cs= + cs.Text.ToString().Trim() + ,memo= + memo.Text.ToString().Trim() + where id= + dataGridView1.SelectedCells0.Value.ToString().Trim(); int dd = 0; dd = new Class1().hsgexucute(sql); if (dd = 1) MessageBox.Show(修改成功); else MessageBox.Show(对不起,系统错误); 2“删除”按钮的代码设计如下:private void button3_Click(object sender, EventArgs e) if (dataGridView1.SelectedCells0.Value.ToString().Trim() != ) /如果鼠标有选中列表中的行,则执行删除操作 string sql; sql = delete from allpro where id= + dataGridView1.SelectedCells0.Value.ToString().Trim(); int dd = 0; dd = new Class1().hsgexucute(sql); if (dd = 1) /如果删除成功,则清空所有文本框 bh.Text = ; mc2.Text = ; price.Text = ; lb.Text = ;32 dw.Text = ; cs.Text = ; memo.Text = ; /重新查询一次 sql = select * from allpro order by id desc; getdata(sql); MessageBox.Show(删除成功); else MessageBox.Show(对不起,系统错误); 5.7 货物入库信息操作页面图 5-6 商品信息删除页面此页面所完成的功能是将货物入库信息输入系统数据库,界面清晰,操作简便。其中“添加”按钮的代码设计如下:33private void button1_Click(object sender, EventArgs e) string sql; sql = select id from kucun where bh=+bh.SelectedItem.ToString().Trim()+; DataSet hsgds = new DataSet(); hsgds = new Class1().hsggetdata(sql); if (hsgds != null) if (hsgds.Tables0.Rows.Count 0) sql = update kucun set shuliang=shuliang+ + shuliang.Text.ToString().Trim() + ; else sql = insert into kucun(bh,mc,price,shuliang) values( + bh.SelectedItem.ToString().Trim() + , + mc.Text.ToString().Trim() + , + price.Text.ToString().Trim() + , + shuliang.Text.ToString().Trim() + ); int dd = 0; dd = new Class1().hsgexucute(sql); sql = insert into rkjl(bh,mc,price,shuliang) values( + bh.SelectedItem.ToString().Trim() + , + mc.Text.ToString().Trim() + , + price.Text.ToString().Trim() + , + shuliang.Text.ToString().Trim() + ); dd = new Class1().hsgexucute(sql); if (dd = 1) /如果语句执行成功 MessageBox.Show(操作成功); else /如果语句执行不成功 MessageBox.Show(对不起,系统错误,请检查您的输入是否完全正确!); 5.8 销售记录信息操作页面34图 5-7 销售记录管理页面此页面所完成的功能是将销售记录输入系统数据库,界面清晰,操作简便。其中“确定”按钮的代码设计如下:private void button1_Click(object sender, EventArgs e) if (float.Parse(shuliang2.Text.ToString().Trim() float.Parse(shuliang.Text.ToString().Trim() MessageBox.Show(库存不足); else string sql; sql = insert into xsjl(bh,mc,price,shuliang,price2) values( + bh.SelectedItem.ToString().Trim() + , + mc.Text.ToString().Trim() + , + price.Text.ToString().Trim() + , + shuliang2.Text.ToString().Trim() + ,+price2.Text.ToString().Trim()+); int dd = 0; dd = new Class1().hsgexucute(sql); /sql = insert into rkjl(bh,mc,price,shuliang) values( + bh.SelectedItem.ToString().Trim() + , + mc.Text.ToString().Trim() + , + price.Text.ToString().Trim() + , + shuliang.Text.ToString().Trim() + ); sql = update kucun set shuliang=shuliang- + 35shuliang2.Text.ToString().Trim() + where bh= + bh.SelectedItem.ToString().Trim() + ; dd = new Class1().hsgexucute(sql); if (dd = 1) /如果语句执行成功 MessageBox.Show(操作成功); else /如果语句执行不成功 MessageBox.Show(对不起,系统错误,请检查您的输入是否完全正确!); 5.9 销售记录查询页面图 5-8 销售记录查询管理页面用户可以按着商品名称或商品的编号来查询销售记录的情况。其中“查询”按钮的代码设计如下:36private void button5_Click(object sender, EventArgs e) string sql; /查询 sql = select * from xsjl where 1=1; if (textBox5.Text.ToString().Trim() != ) /如果条件不为空,则依次添加所需条件 sql = sql + and mc like % + textBox5.Text.ToString().Trim() + %; if (textBox1.Text.ToString().Trim() != ) sql = sql + and bh like % + textBox1.Text.ToString().Trim() + %; sql = sql + order by id desc; getdata(sql); /调用自定义函数getdata,与上同理 5.10 库存查询模块图 5-8 库存查询管理页面37用户可以按着商品名称或商品的编号来查询商品库存的情况。其中“查找”按钮的代码设计如下:private void button5_Click(object sender, EventArgs e) string sql; /查询 sql = select id,bh,mc,shuliang from kucun where 1=1; if (textBox5.Text.ToString().Trim() != ) /如果条件不为空,则依次添加所需条件 sql = sql + and mc like % + textBox5.Text.ToString().Trim() + %; if (textBox1.Text.ToString().Trim() != ) sql = sql + and bh like % + textBox1.Text.ToString().Trim() + %; sql = sql + order by id desc; getdata(sql); /调用自定义函数getdata,与上同理 管理员拥有整个系统的所有操作权限。其他各项功能操作界面都清晰明了,故不一一说明。第六章 系统调试在编写该系统时,出了不少错误,经过反复的调试与修改,终于调试成功。下面把在调试过程中出现的几个明显的错误介绍一下。第一节 软件调试系统调试的目的是发现程序和系统中的错误并及时予以纠正。在网络便民服务系统中用的调试方法也包括这些:(1) 程序调试38包括语法调试和逻辑检查,测试数据除采用正常数据外,还应用一些异常资料,用来考验程序的正确性。用正常资料调试。用异常资料调试。用错误资料调试。第二节 软件测试软件的测试是系统开发周期中一个十分重要的环节,其重要性体现在它是保证系统质量与可靠性的最后关口,是对整个系统开发过程的最终审查,如果错误不能在测试阶段被发现并纠正,就可能会造成不堪设想的后果。在检查过程中,发现了
展开阅读全文