第16章 信息系统综合应用开发实例
概述 信息系统有多种类型,涉及管理的不同层次,服务于不同的行业和业务领域。实际信息系统项目的开发是信息技术知识和组织的领域业务知识、管理知识的综合应用,是一项复杂的系统性的工作。 本章介绍一个网上书店信息系统设计开发的实例。 一方面对全书介绍的主要知识进行综合应用实践 另一方面为读者逐步学会自己设计和开发信息系统提供参考。 网上购物已经成为一种新兴的消费形式,网上开店需要一个信息系统的支持。下面围绕一个简单的网上书店的信息系统开发进行分析和设计。
系统设计 1. 系统目标 本系统支持图书商品管理、图书销售、客户分析等三个方面的功能,兼具有信息管理、事务处理和决策支持的系统特点。 2. 需求分析 1)业务需求 网上书店主要有三类用户角色:客户、店员、店长。他们各自的主要业务处理需求如下: 客户在系统中完成图书浏览和订购。主要业务和流程包括:查询、浏览图书商品→选择放入购物车→选择支付方式、发货方式和填写个人信息→生成和提交订单。 店员在系统中完成商品管理、订单处理等:商品上架、下架;商品折扣管理;商品汇总;订单查看→订单处理(系统中不包括费用结算、发货等管理,此处的订单处理仅实现订单完成情况标记,即标记完成、取消等状态)。 店长在系统中获得商品和销售状况分析、客户分析以制订营销策略:商品汇总(包括分类汇总);销售分析(包括按时间、图书类别、客户地域、客户类别等汇总);客户分析(按客户订单汇总、客户兴趣分析、客户重要性、忠诚度分析等)。
2)数据处理需求 系统涉及的数据源有图书数据、客户数据、客户购买数据,产生图书信息表、客户信息表、订单、客户分析表、销售分析表等各项表单。结合业务处理需求,系统数据流图如图9-1所示。
3.系统总体设计 1)系统结构 面向客户的子系统适合采用浏览器/服务器结构(B/S),面向店员和店长的两个子系统采用客户机/服务器结构(C/S),如果更侧重于随时随地地访问系统,也需要采用B/S模式。图9-3给出一个混合了B/S和C/S模式的系统结构。
2)系统技术方案 系统前台开发工具:面向客户的B/S应用程序和面向店员和店长的C/S应用程序均采用Visual Studio .NET 2003开发环境,使用VB.NET语言开发。 后台数据库:数据库采用Microsoft SQL Server2000企业版。 Web服务器:采用Microsoft Internet Information Services (Microsoft IIS 7.0)。
3)系统功能结构 根据需求分析所获得的业务需求和数据流图,可以定义系统的功能模块图如图9-4所示。
详细功能说明 用户 主要功能 客户 店员 店长 客户信息理 注册、维护个人信息;查看个人购买记录;查看个人客户类别、忠诚度等。 查询、浏览、汇总客户信息;客户评价;客户分类等。 图书信息理 图书查询、浏览(包括浏览本书信息和相关图书列表)。 维护图书基本信息、包括增、删、改等;图书折扣管理;图书信息汇总。 查询图书信息、图书信息汇总。 购书管理 向购物车添加书,填写购书数量,选择支付方式、发货方式,生成和提交订单。 查询订单,修改订单状态。 查看、汇总未处理订单。 营销分析 按时间、图书类别、地域等汇总销售情况,查询和生成相关信息报表;客户兴趣分析、购买频度分析、忠诚度分析等。
系统主要实体有图书和客户两个,通过“订购”活动建立联系,建立实体联系模型的E-R图。 4. 数据库设计 (1)数据库概念设计 系统主要实体有图书和客户两个,通过“订购”活动建立联系,建立实体联系模型的E-R图。
1)将数据库的概念模式图转化为如下四个基本关系模式: (2)数据库逻辑设计 1)将数据库的概念模式图转化为如下四个基本关系模式: 客户(客户号,姓名,性别,职业,生日,所在省区,联系电话,Email,客户等级,忠诚度) 图书(书号,书名,作者,出版社,出版时间,类别,内容简介,价格,折扣) 订单(订单号,客户号,支付方式,发货方式,发货地址,订货时间) 订单详细资料(订单号,书号,数量) 2)数据库的关系图如图9-6所示。
下面给出SQL Server下的网上书店数据库物理设计的关系模型设计、完整性约束设计和索引选择。 (3)数据库物理设计 下面给出SQL Server下的网上书店数据库物理设计的关系模型设计、完整性约束设计和索引选择。 1) Customer客户表:存储客户基本信息。 字段名称 字段说明 类型定义 属性限定 索引 关系(外键) CustomerCode 客户号 Char(8) Primary Key 主索引 Name 客户姓名 Varchar (16) Not Null √ Sex 性别 Char (2) "男"或"女" Job 职业 Char(12) Birthday 生日 Datetime Hometown 所在省区 Varchar (40) Email Telephone 联系电话 VIPClass 用户等级 Char(1) “A”~”D” LoyaltyClass 忠诚度
2) Book图书表:存储图书基本情况。 字段名称 字段说明 类型定义 属性限定 索引 关系(外键) BookCode 书号 Char(8) Primary Key 主索引 BookName 书名 Varchar(60) Not Null √ Author 作者 Char(20) Publisher 出版社 Varchar(50) PublishTime 出版时间 DateTime BookSort 图书类别 Content 内容简介 Varchar(1000) Price 价格 Numeric(4,1) Discount 折扣 Numeric(2,1) Not Null Default 1
4)OrderDetail订单详细情况表:存储订单的详细情况。 字段名称 字段说明 类型定义 属性限定 索引 关系(外键) OrderCode 订单号 Char(8) Primary Key 主索引 CustomerCode 客户号 Not Null √ Customer: PayType 支付方式 Varchar(1) SendType 发货方式 Address 发货地址 Varchar(200) OrderTime 订货时间 DateTime Default GetDate() OrderStatus 订单状态 Char(1) “P”、“F”、“C” Default “P” 4)OrderDetail订单详细情况表:存储订单的详细情况。 字段名称 字段说明 类型定义 属性限定 索引 关系(外键) OrderCode 订单号 Char(8) Primary Key 主索引 Order: OrderCode BookCode 书号 Book: BookCode Amount 数量 Int Default 0 >=0
(4)数据库应用对象设计 存储过程建立在SQL Server服务器端,在数据库应用程序中使用存储过程可以简化客户端程序,提供系统运行效率,并且减少网络信息传输量。 视图建立在SQL Server服务器端,可以简化客户端程序和提高访问安全性。 (5)数据库维护设计 1)访问安全维护:为数据库各用户分配恰当的访问权限,删除不使用的用户帐户。 2)数据安全维护:制定数据库备份和恢复策略,建立数据库维护计划,定期执行备份策略。
5.算法设计 本系统中业务流程相对比较简单,涉及的算法较少。如果系统要支持更多营销策略的改变,可能需要数据库中有更多的数据项或表的支持,尤其是客户分析方面的扩展。下面仅对本系统所使用的算法举例列举如下: 1)折扣计算 实际书价= Book.Price* Book.Discount 2)客户奖励 IF Customer.VIPClass=”A” Then实际书价= Book.Price* Book.Discount*0.9 3)客户等级 系统将客户分为四个等级:A.VIP客户、B.重点客户、C.一般客户和D.维持客户。客户等级依据客户2年内消费总额在公司客户的排名来划分,采用判定表来描述: 等级 划分依据 A 消费额排名在前10%以内 B 消费额排名在前10%~20%以内 C 消费额排名在前30%~90%以内 D 消费额排名在后10%以内
4) 忠诚度 系统的客户忠诚度由四个方面的特征值加权求和获得,各特征值及权重见表9-3。 各特征值的评价值依据表9-4获得: 表9-3客户等级划分判定表 表9-4特征评价值判定表 特征 权重系数 年均消费额评价值 0.4 年均购买次数评价值 0.2 购买产品种类数评价值 交易时长评价值 特征评价值 划分依据 1 排名在前10%以内 0.8 排名在前10%~20%以内 0.6 排名在前30%~90%以内 0.2 排名在后10%以内 忠诚度= 年均消费额评价值*0.4 +年均购买次数评价值*0.2 + 购买产品种类数评价值*0.2+ 交易时长评价值*0.2
6. 系统开发设计 系统开发设计涉及很多详细的设计内容,限于篇幅,这里只给出一般性说明和要求。 1)子系统设计 按照系统结构设计,本系统应该包括两个子系统,面向客户的网上购书B/S系统和面向店长和店员的C/S系统。所以两个子系统应该分别设计。 2)界面设计要求 以菜单集成各功能窗口。 各窗口界面整齐美观,恰当地使用各种窗体控件,便于用户使用。 有用户登录界面(即进行身份验证,用户根据权限使用不同的功能)。 报表要简洁清晰,布局合理。
3)程序设计注意事项 注意输入有效性检查,即用程序检验用户输入的数据是否符合数据类型或格式需求,如果不合适,提醒其重新输入,从而保证与数据库的正确交互以及保证数据库信息的有效性。 全局变量使用:因为系统中含有多个窗体和模块文件,为了数据处理需要,可以使用一些全局变量,这样可以简化程序,减少代码量,简化提高系统效率,可将全局变量放在模块文件中。 过程和函数的使用:将一些具有独立功能的程序段编写为过程或函数,这样不仅使程序结构模块化,而且可以通过过程或函数多次调用共享代码。 存储过程建立在SQL Server服务器端,在数据库应用程序中使用存储过程可以简化客户端程序,提供系统运行效率,并且减少网络信息传输量。 视图建立在SQL Server服务器端,可以简化客户端程序和提高访问安全性。