第三章 系统设计
系统的总体结构是指整个系统是由哪些部分组成,以及各部分在逻辑上和物理上的相互关系。为了实现系统总体功能,提高系统的各项指标,这些指标包括系统的可行性、可用性、可维护性、易读性,提高系统的工作效率。总体结构设计的主要任务就是根据系统分析的要求和组织的实际情况,对新系统的总体结构形式和可利用的资源进行大致设计,将整个系统合理的划分成各个功能模块,正确的处理模块之间与模块内部的联系以及他们之间的调用关系和数据联系,定义各模块的内部结构等等。它是一种宏观的、总体上的设计和规划,与当前的业务部门一一对应,一般地,有一个独立的业务管理部门,应有一个对应的管理子系统。
系统的总体结构设计应遵循以下原则:
- 分解协调原则:要善于把一个复杂问题分解成多个易于解决、易于理解的小问题分别处理,在处理过程中根据系统总体要求协调各部分的关系。
- 信息隐蔽、抽象的原则:上层模块只规定下层模块做什么和所属模块间的协调关系,但不规定怎么做,以保证各模块的相对独立性和内部结构的合理性,使模块与模块之间层次分明,易于理解、实施和维护。
- 自顶向下的原则:先抓住总的功能目标,然后再逐层分解。
- 一致性原则:要保证整个软件设计过程中有统一的规范、标准。
- 面向用户的原则:各模块必须功能明确,接口明确。
图3-1 系统结构图
从系统结构图可以看出,所有访问者都是通过ASP页面中的程序访问数据库或文件系统,这是ASP网站的基本特点。
Client/Server结构是该系统的主要架构。采用客户机/服务器(C/S)结构存在三个显然的优点:
- 以集中的方式高效率地管理通讯。
- 可以共享资源。比如在信息管理系统中,服务器将信息集中起来,任何客户机都可以通过访问服务器而获得所需的信息。
- 客户机和服务器之间的通讯以“请求——响应”的方式进行。
在进行功能模块设计时保持“功能独立”是模块化设计的基本原则。实践证明,“功能独立”的模块可以降低开发、测试、维护等阶段的代价。但是“功能独立”并不意味着模块之间保持绝对的孤立。一个系统要完成某项任务,需要各个模块相互配合才能实现,此时模块之间就要进行信息交流。在设计一个模块时不仅要考虑“这个模块就该提供什么样的功能”,还要考虑“这个模块应该怎样与其它模块交流信息”。
以下列出网上图书销售系统主要功能模块:
-
-
- 图书销售模块
- 用户管理模块
- 后台管理模块
-
在设计过程中,采用了评价模块设计优劣的三个特征因素:
- 信息隐藏:为了尽量避免某个模块的行为去干扰同一系统中的其它模块,要注意必要信息隐藏。模块的信息隐藏可以通过接口设计来实现。一个模块仅提供有限个接口( Interface),执行模块的功能或与模块交流信息必须且只须通过调用公有接口来实现。
- 内聚与耦合:内聚(Cohesion)是一个模块内部各成分之间相关联程度的度量。耦合(Coupling)是模块之间依赖程度的度量。内聚和耦合是密切相关的,与其它模块存在强耦合的模块通常意味着弱内聚,而强内聚的模块通常意味着与其它模块之间存在弱耦合。模块设计追求强内聚,弱耦合。度量内聚的内聚强度从低到高有几种类型:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。度量耦合的耦合强度按从强到弱的顺序可分为几种类型:内容耦合、公共耦合、控制耦合、标记耦合、数据耦合、非直接耦合。
- 封闭——开放性:一个可以作为一个独立体模块被其它程序引用,则称模块具有封闭性。一个可以被扩充模块,则称模块具有开放性。模块的“封闭——开放性”实际上对应于软件质量因素中的可复用性和可扩充性。采用面向对象设计方法可以较好地解决这个问题。
- 根据上面的功能描述按照模块独立性原则画出的系统详细功能模块图
图3-2 系统详细功能模块图
选择高效、稳定、合适的数据库系统对大量数据进行管理是影响整个系统性能的重要因素。考虑到大量的用户信息有上万条记录的存储量对数据库处理能力会有比较高的要求,因此在数据库的选择上应更多的考虑应用于Windows 2000 Server系统的大型数据库。
数据库软件方面:具有在线备份、恢复机制;支持数据库开发工具;支持网络协议;支持数据安全等。
数据存储设备要求:要求支持足够大的数据存储容量;处理速度上满足系统的要求。
目前主流的数据库软件主要有ORACLE、MS SQL Server 2000、INFORMIX和SYBASE。本系统因根据信息量考虑选用MS SQL Server 2000。
1.首先要根据客户的需求画出的实体—联系图:管理员实体、图书信息实体、客户实体。各个实体具体的描述E-R图如图3-3:
图3-3 系统主要实体E-R图
2.根据客户的需求对数据库进行详细的设计,下面对本系统数据库中的表进行说明。
- admin:管理员信息表
- books:库存图书信息表
- categories:图书分类表
- subcategories图书子类表
- suppliers:出版社表
- customers:客户表
- orders:销售图书信息表
- stockmovements:图书的入库、更改信息表
3.现在根据E-R实体模型图和数据库表的说明对数据库进行逻辑设计。
表3-1 admin
列名 | 数据类型 | 大小 | 可否为空 | 说明 |
adminname | nvarchar | 10 | NOT NULL | 管理员名(主索引) |
pws | nvarchar | 10 | NOT NULL | 管理员密码 |
表3-2 orders
列名 | 数据类型 | 大小 | 可否为空 | 说明 |
idorder | int | 4 | NOT NULL | 订货编号(主索引) |
orderdata | datetime | 8 | NOT NULL | 订货日期(次索引) |
idcustomer | int | 4 | NOT NULL | 客户编号(次索引) |
idbook | int | 4 | NOT NULL | 图书编号 |
Totalmoney | float | 8 | NOT NULL | 打折后的总价 |
Totalbooks | int | 4 | NOT NULL | 该类书总数 |
[add] | nvarchar | 70 | NOT NULL | 送货地址 |
city | nvarchar | 50 | NOT NULL | 送货城市 |
state | nvarchar | 50 | NOT NULL | 送货省份 |
comment | ntext | 16 | NULL | 备注 |
idpayment | tinyint | 4 | NOT NULL | 付款方式 |
send | bit | 1 | NOT NULL | 是否以送货 |
表3-3 books
列名 | 数据类型 | 大小 | 可否为空 | 说明 |
idbook | int | 4 | NOT NULL | 图书编号(主索引) |
Idcategory | int | 4 | NOT NULL | 类编号(次索引) |
Idsubcategory | int | 4 | NOT NULL | 子类编号(次索引) |
Idsupplier | int | 4 | NOT NULL | 出版社编号(次索引) |
Bookname | nvarchar | 50 | NOT NULL | 图书名 |
Isbn | nvarchar | 50 | NULL | ISBN编号 |
details | ntext | 16 | NULL | 内容介绍 |
Orgcost | float | 8 | NOT NULL | 进价 |
Price | float | 8 | NOT NULL | 售价 |
imgeurl | nvarchar | 50 | NULL | 图片位置 |
Stock | int | 4 | NOT NULL | 在库数 |
availstock | int | 4 | NOT NULL | 可供销售的数目 |
Active | bit | 1 | NOT NULL | 是否发布 |
Hotdeal | bit | 1 | NOT NULL | 是否热点图书 |
Sales | int | 4 | NOT NULL | 已销售数 |
visits | int | 4 | NOT NULL | 被浏览次数 |
表3-4 categories
列名 | 数据类型 | 大小 | 可否为空 | 说明 |
Idcategory | int | 4 | NOT NULL | 图书类编号(主索引) |
categoryname | nvarchar | 50 | NOT NULL | 类名 |
表3-5 subcategories
列名 | 数据类型 | 大小 | 可否为空 | 说明 |
Idcategory | int | 4 | NOT NULL | 图书子类编号(主索引) |
categoryname | nvarchar | 50 | NOT NULL | 子类名 |
Idcategory | int | 4 | NOT NULL | 图书类编号(次索引) |
表3-6 suppliers
列名 | 数据类型 | 大小 | 可否为空 | 说明 |
Idsupplier | int | 4 | NOT NULL | 出版社编号(主索引) |
suppliername | nvarchar | 50 | NOT NULL | 出版社名称 |
表3-7 customers
列名 | 数据类型 | 大小 | 可否为空 | 说明 |
idcustomer | int | 4 | NOT NULL | 客户编号(主索引) |
username | nvarchar | 20 | NOT NULL | 客户名 |
password | nvarchar | 20 | NOT NULL | 密码 |
realname | nvarchar | 20 | NOT NULL | 真实姓名 |
phone | nvarchar | 30 | NULL | 电话 |
| nvarchar | 50 | NOT NULL | 电子邮件地址 |
[add] | nvarchar | 70 | NOT NULL | 地址 |
city | nvarchar | 50 | NOT NULL | 城市 |
state | nvarchar | 50 | NOT NULL | 省份 |
zip | int | 4 | NOT NULL | 邮政编码 |
表3-8 stockmovements
列名 | 数据类型 | 大小 | 可否为空 | 说明 |
idbook | int | 4 | NOT NULL | 图书编号 |
daremovement | datetime | 8 | NOT NULL | 操作日期 |
quantity | int | 4 | NOT NULL | 操作数量 |
一个网站除了要有较完美的页面和较强的功能设计的软件外,还要有比较好的服务器和工作站。
- 客户机
使用资源的计算机。这里的客户机由计算机群组成,主要作用是网页编辑、图形加工处理、文字处理、多媒体制作、网络管理等。制作好的网页通过网络传到服务器上供大家浏览。
- 在硬件基本配置上要求有:
CUP:P3 900GHz
内存:128MB
硬盘:20GB
- 软件方面:Windows98 / Windows 2000 Profession / Windows XP
- 服务器
在网络上提供资源并对这些资源进行管理的计算机,它提供各种共享资源的服务。其资源有可以是一个文件、文件夹、打印机、网页等等。服务器可分为WWW服务器、E-mail服务器、数据库服务器等,本系统则需要购买的服务器一台服务器作为本网站的WWW服务器:
- 网站服务器:Dell 的SC1420
- 网络服务器的操作系统:选用Windows 2000 Server
- 数据库:微软的 SQL Server 2000
本网站为了实现网上售书的功能用到了许多的网页,因此,要对每个页面所实现的功能都应该能清除的表达。一般来说页面的命名要和相应的功能结合起来,最好不要用汉字命名以减少不必要的麻烦,要采用有特殊意义的英文来命名文件名。用到的主要页面列表如表3-9所示。
表3-9 主要页面列表
文件名 | 作用和功能 | 备注 |
Default.asp | 主页 | |
Listbyhotdeals.asp | 显示热点图书 | 包含主页中 |
Viewitem.asp | 显示某一本图书细节 | |
Bookquery.asp | 顾客查询图书 | |
Myinfo.asp | 客户账户查询 | |
Additem.asp | 要选定的图书加入购物车 | |
Itemremove.asp | 从购物车中去掉某些图书 | |
Checkout.asp | 结帐台 | |
Login.asp | 用户登录 | |
Regist.asp | 用户注册 | |
Orderverify.asp | 购物车确认 | |
Adminlogin.asp | 管理员登录 | 后台 |
Addcategory.asp | 添加图书类别 | 后台 |
Addbook.asp | 添加新图书 | 后台 |
Addsupplier.asp | 添加出版商 | 后台 |
Appendbook.asp | 增加在库图书数目 | 后台 |
Changestock.asp | 改变在库图书各种状况 | 后台 |
Stockquery.asp | 在库数查询 | 后台 |
Customerquery.asp | 查询客户 | 后台 |
Changeadmin.asp | 改变管理员 | 后台 |