目 录
结论 28
随着互联网的使用越来越广泛,人们开始选择网站购物,但是就目前来说,这些购物网站所面对的对象大多是社会总体人群,在商品选择的问题上,并没有很强的针对性,而且大多数购物系统均需购买者支付邮费,因此不能很好的满足用户对商品出售的需求。面对这一现状,在充分利用网上购物技术这一总体优势的基础上,完善了对应的软体架设以及程序编码的工作,采取MySQL作为后台数据的主要存储单元,采用koa框架、node.js技术、Ajax技术进行业务系统的编码及其开发,设计了一个专门针对购物用户的跳蚤市场应用网站,给购物用户提提供商品交易的平台。
该系统的设计遵循了模块化的原则,将一个完整的跳蚤市场网站分解为各个模块,然后逐一实现各个模块的功能,最后把各个模块组装到一起构成一个完整的跳蚤市场网站。
关键词:跳蚤市场网站;node.js语言;MySQL;koa框架
Abstract
With the increasingly widespread use of the Internet, people have started to choose websites for shopping. However, currently, these shopping websites are mostly aimed at the overall social population, and they do not have strong targeting in product selection. Moreover, most shopping systems require buyers to pay for postage, so they cannot effectively meet users' needs for product sales. Faced with this situation, on the basis of fully utilizing the overall advantages of online shopping technology, we have improved the corresponding software installation and program coding work, adopted MySQL as the main storage unit for backend data, and adopted koa framework, node. js technology, and Ajax technology to code and develop industry business systems. We have designed a flea market application website specifically targeting shopping users, Provide a platform for shopping users to trade goods.
The design of this system follows the principle of modularization, breaking down a complete flea market website into various modules, then implementing the functions of each module one by one, and finally assembling each module together to form a complete flea market website.
Keywords:Flea market website; Node. js language; MySQL; Koa framework
1 绪论
1.1 选题背景与意义
21世纪全球进入一个新经济时代,数据库技术在 Internet 中的应用越来越广泛。
生活方式的日益丰富,互联网的普及,使人们惊讶地发现,除了我们熟知的日常购物方式外,网上购物这一新购物形式正悄悄融入我们的生活叫。既然这样,作为新时代的大学校园,伴随着学生的购买能力的提高和每年的升学和毕业,也存在的许多各种各样的再也用不上的商品,我们可以不再受限于信息交流的落后即只限于于校园公告栏或者请人代为宣传的方式进行交易。这种方式有很多局限性和偶然性,并不能满足商品畅通交流的要求。于是开发一个跳蚤市场小程序显得尤为重要通过这个系统,大家可以非常方便的浏览发布的信息,还可以对各种商品信息作出横向比较,作出自己的最佳选择,从而进行购买。
1.2 国内外发展情况
在全球信息化浪潮正迅猛推进的今天,电子商务作为一个新兴的事物、作为种更快捷、准确的交易形式,在世界范围内也包括我国得到了全面开展并逐渐渗透到人们生活的各个领域,其发展速度之快是以往的商务模式所不及的而校园跳蚤市场在高校中可算是一项传统的活动,每年都有毕业生要毕业,每年都有新生要报到,毕业生不可能将几年来留存下的物品都带走,有些物品已成为累赘,而学生们的消费水平本身不高,都希望能买到物美价廉的商品。校园在充满个性时尚的元素的同时,也不能缺乏勤俭节约的品德,凭借web 服务器和客户的浏览器,利用网络高效率、低成本的特点,为我校学生提供网络交易平台。
目前网上校园跳蚤市场交易是通过传统的BBS跳蚤版,随着目前高校扩招与校园信息化的开展,校园网络的建设将进入一个更加高速发展的时期,发展校园电子商务的硬件环境趋于完善。有必要开发出新型的校园网络跳蚤市场,为我校学生提供交易平台,在 Internet上发布商业信息,商品广告,使用户可以查阅商品、搜索商品,为用户提供全天候的、更好、更快的交易活动空间,实现网上交易的基本功能。游客可以通过注册成为用户,然后添加自己要出售的物品以及售卖价格、联系方式等;而买主则可以搜索自己所需要的东西。通过本市场不但能处理毕业生的多余物品,平时学生们有任何闲置的东西或有任何需求都可以免费得到处理,不限时间也不限地点。
1.3node.js主要功能
V8引擎本身使用了一些最新的编译技术。这使得用Javascript这类脚本语言编写出来的代码运行速度获得了极大提升,又节省了开发成本。对性能的苛求是Node的一个关键因素。 Javascript是一个事件驱动语言,Node利用了这个优点,编写出可扩展性高的服务器。Node采用了一个称为“事件循环(event loop)”的架构,使得编写可扩展性高的服务器变得既容易又安全。提高服务器性能的技巧有多种多样。Node选择了一种既能提高性能,又能减低开发复杂度的架构。这是一个非常重要的特性。并发编程通常很复杂且布满地雷。Node绕过了这些,但仍提供很好的性能。
Node采用一系列“非阻塞”库来支持事件循环的方式。本质上就是为文件系统、数据库之类的资源提供接口。向文件系统发送一个请求时,无需等待硬盘(寻址并检索文件),硬盘准备好的时候非阻塞接口会通知Node。该模型以可扩展的方式简化了对慢资源的访问, 直观,易懂。尤其是对于熟悉onmouseover、onclick等DOM事件的用户,更有一种似曾相识的感觉。
虽然让Javascript运行于服务器端不是Node的独特之处,但却是其一强大功能。不得不承认,浏览器环境限制了我们选择编程语言的自由。任何服务器与日益复杂的浏览器客户端应用程序间共享代码的愿望只能通过Javascript来实现。虽然还存在其他一些支持Javascript在服务器端 运行的平台,但因为上述特性,Node发展迅猛,成为事实上的平台。
在Node启动的很短时间内,社区就已经贡献了大量的扩展库(模块)。其中很多是连接数据库或是其他软件的驱动,但还有很多是凭他们的实力制作出来的非常有用的软件。
最后,不得不提到的是Node社区。虽然Node项目还非常年轻,但很少看到对一个项目如此狂热的社区。不管是新手,还是专家,大家都围绕着项目,使用并贡献自己的能力,致力于打造一个探索、支持、分享、听取建议的乐土。
1.4node.js功能模块
Node使用Module模块去划分不同的功能,以简化应用的开发。Modules模块有点像C++语言中的类库。每一个Node的类库都包含了十分丰富的各类函数,比如http模块就包含了和http功能相关的很多函数,可以帮助开发者很容易地对比如http,tcp/udp等进行操作,还可以很容易的创建http和tcp/udp的服务器。
要在程序中使用模块是十分方便的,只需要如下:
在这里,引入了http类库,并且对http类库的引用存放在http变量中了。这个时候,Node会在我们应用中搜索是否存在node_modules的目录,并且搜索这个目录中是否存在http的模块。如果Node.js找不到这个目录,则会到全局模块缓存中去寻找,用户可以通过相对或者绝对路径,指定模块的位置,比如:
var myModule = require('./myModule.js');
模块中包含了很多功能代码片断,在模块中的代码大部分都是私有的,意思是在模块中定义的函数方法和变量,都只能在同一个模块中被调用。当然,可以将某些方法和变量暴露到模块外,这个时候可以使用exports对象去实现。
1.5论文结构与章节安排
论文将分层次经行编排,除去论文摘要致谢文献参考部分,正文部分还会对网站需求做出分析,以及阐述大体的设计和实现的功能,最后罗列部分调测记录,论文主要架构如下:
第一章:引言。第一章主要介绍了课题研究的背景,系统开发的现状和本文的国内外发展情况与主要工作。
第二章:系统需求分析。第二章主要从系统的用户、功能等方面进行需求分析。
第三章:系统设计。第三章主要对系统框架、系统功能模块、数据库进行功能设计。
第四章:系统实现。第四章主要介绍了系统框架搭建、系统界面的实现。
第五章:系统测试。第五章主要对系统的部分界面进行测试并对主要功能进行测试
2跳蚤市场网站分析
系统分析是开发一个项目的先决条件,通过系统分析可以很好的了解系统的主体用户的基本需求情况,同时这也是项目的开发的原因。进而对系统开发进行可行性分析,通常包括技术可行性、经济可行性等,可行性分析同时也是从项目整体角度进行的分析。然后就是对项目的具体需求进行分析,分析的手段一般都是通过用户的用例图来实现。下面是详细的介绍。
2.1 可行性分析
在项目上使用的工具大部分都是是当下流行开源免费的,所以在开发前期,开发时用于项目的经费将会大大降低,不会让开发该软件在项目启动期受到经费的影响,所以经济上还是可行的。尽量用最少的花费去满足用户的需求。省下经费用于人工费,以及设备费用。将在无纸化,高效率的道路上越走越远。
所以经济可行性没有问题。
(2)操作可行性:
此次项目设计参考了几个该模式下网站的开发案例,对他们的操作界面分析,将众多案例结合在一起,突出以人为本简化操作,所以具有基本计算机知识的人都会操作本项目。
因此操作可行性也没有问题。
(3)技术可行性:
技术可行性指的是对于搭建框架的可行性,以及有更优秀的技术出现时系统的技术更新换代的纳新性如何,开发时间成本费用比如何。
现有koa技术能够迎合所有电子商务系统的搭建。开发这个跳蚤市场网站的时候我采用了koa+MySQL用以运行整体程序。
综上所述技术可行性也没有问题。
(4)法律可行性:
从开发者角度来看,koa和MySQL是网上开源且免费的,在知识产权方面不会产生任何法律纠纷。
从用户使用角度来看,只要不再系统上贩卖违禁品,对系统做出条约协议,杜绝非法支付即可。
综上所述法律可行性也没有问题。
业务流程是用一些特定的符合和线条来进行演示用户在使用系统时的过程,在进行系统分析的时候,业务流程可以帮助开发人员更好的理解业务,发现错误,完善系统。
用户成功登入系统后就能够实现增加数据的操作,增加数据的编号是特定的,系统生成,用户不能随意填写,除了编号以外,其他增加信息用户自己填写,填写后的信息经过系统验证,验证合法通过就显示增加数据成功了,相反的话,就没有增加成功,图2-1显示的就是在增加数据时的流程。

图2-1 数据增加流程图
数据修改时的流程和上面介绍的数据增加时的流程差不多,如图2-2所示。

图2-2 数据修改流程图
如果系统里面存在一些没有用的数据的话,相关的管理人员还可以对这些数据进行删除,图2-3就是数据删除时的流程图。

图2-3 数据删除流程图
按照跳蚤市场网站的角色,我划分为了普通用户管理模块和管理员管理模块这两大部分。
普通用户管理模块:
(1)用户注册登录:用户注册为普通用户并登录跳蚤市场网站;用户对个人信息的增删改查,比如个人资料,密码修改。
(2)用户查看商品:用户进行商品信息的阅览,通过发现喜欢的商品后可以购买+评论+收藏。
(3)商品资讯:用户进行资讯的阅览,查看管理者发布的商品资讯信息。
(4)商品购买:用户对喜欢的商品可以加购,在购物车里面,当用户确定提交完毕后,将其提交给服务器后台系统,并生成订单。
(5)我的订单:用户在提交订单后,可以对提交的订单进行管理。
管理员管理模块:
(1)登录:管理员的账号是在数据表表中直接设置生成的,不需要进行注册;
(1)用户管理:管理员可以对前台上注册过的用户信息进行管控,也可以对管理员信息进行管控。
(3)资源管理:管理员可以对跳蚤市场网站前台展示的商品资讯以及资讯分类所属分类进行管控。
(4)模块管理:在“模块管理”这一菜单下可以对系统当中的用户操作的所有信息进行管理,包含了物流信息。
(5)轮播图/公告校管理:管理员可以对系统前台展示的轮播图以及公告消息进行增删改查,方便用户进行查看。
(6)分类管理:管理员对跳蚤市场网站中商品的分类进行管控。
(7)商城管理:管理员对用户提交的商品订单进行管控。
2.3.2 非功能性分析
跳蚤市场网站的非功能性需求比如跳蚤市场网站的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:
表3-1跳蚤市场网站非功能需求表
安全性 |
主要指跳蚤市场网站数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 |
可靠性是指跳蚤市场网站能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
性能 |
性能是影响跳蚤市场网站占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 |
比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 |
用户只要跟着跳蚤市场网站的页面展示内容进行操作,就可以了。 |
可维护性 |
跳蚤市场网站开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
2.4 系统用例分析
通过2.3功能的分析,得出了本跳蚤市场网站的用例图:
普通用户角色用例如图2-3所示。

图2-3跳蚤市场网站普通用户角色用例图
web后台管理上的管理员是维护整个跳蚤市场网站中所有数据信息的。管理员角色用例如图2-4所示。

本章主要通过对跳蚤市场网站的可行性分析、流程分析、功能需求分析、系统用例分析,确定整个跳蚤市场网站要实现的功能。同时也为跳蚤市场网站的代码实现和测试提供了标准。
本章主要讨论的内容包括跳蚤市场网站的功能模块设计、数据库系统设计。
3.1 系统架构设计
本跳蚤市场网站从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。

图3-1跳蚤市场网站系统架构设计图
表现层(UI):又称UI层,主要完成本跳蚤市场网站的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本跳蚤市场网站时的舒适度。UI的界面设计也要适应不同版本的跳蚤市场网站以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。
业务逻辑层(BLL):主要完成本跳蚤市场网站的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。
数据层(DL):由于本跳蚤市场网站的数据是放在服务端的MySQL数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本跳蚤市场网站的数据存储和管理功能。
3.2 系统功能模块设计
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本跳蚤市场网站中的用例。那么接下来就要开始对本跳蚤市场网站的架构、主要功能和数据库开始进行设计。跳蚤市场网站根据前面章节的需求分析得出,其总体设计模块图如图3-2所示。

图3-2跳蚤市场网站功能模块图
3.2.2用户模块设计
后台管理员能够实现对前台注册的用户增删改查操作,用户模块结构图如下图:

图3-3用户用户模块结构图
3.2.3评论管理模块设计
跳蚤市场网站是一个交流性质的公开平台,系统用户和管理人员用户可以对平台上信息进行评论,增加用户之间的互动性。但是同时也为了更好的规范评论的内容,给予管理员删除不合适的言论的功能,所以需要专门设计一个评论管理模块,具体的结构图如下:

图3-4评论模块结构图
3.2.4订单管理模块设计
跳蚤市场网站最重要的一个功能就是购买,其模块功能结构,具体的结构图如下:

图3-5订单模块结构图
3.2.5商城管理模块设计
跳蚤市场网站是中需要存储不少商品信息,其模块功能结构,具体的结构图如下:

图3-6商城模块结构图
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
3.3.1 数据库概念结构设计
下面是整个跳蚤市场网站中主要的数据库表总E-R实体关系图。

图3-6跳蚤市场网站总E-R关系图
下面根据跳蚤市场网站的数据库总E-R关系图可以得出跳蚤市场网站需要很多E-R图,在此罗列出来一些主要的数据库E-R模型图。

图3-7普通用户E-R关系图

图3-8 评论E-R关系图

图3-9订单E-R关系图
通过上一小节中跳蚤市场网站中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
表address (收货地址:)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
address_id |
int |
10 |
0 |
N |
Y |
收货地址: |
|
2 |
name |
varchar |
32 |
0 |
Y |
N |
姓名: |
|
3 |
phone |
varchar |
13 |
0 |
Y |
N |
手机: |
|
4 |
postcode |
varchar |
8 |
0 |
Y |
N |
邮编: |
|
5 |
address |
varchar |
255 |
0 |
N |
N |
地址: |
|
6 |
user_id |
mediumint |
8 |
0 |
N |
N |
用户ID:[0,8388607]用户获取其他与用户相关的数据 |
|
7 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
8 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
9 |
default |
bit |
1 |
0 |
N |
N |
0 |
默认判断 |
表article (文章:用于内容管理系统的文章)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
article_id |
mediumint |
8 |
0 |
N |
Y |
文章id:[0,8388607] |
|
2 |
title |
varchar |
125 |
0 |
N |
Y |
标题:[0,125]用于文章和html的title标签中 |
|
3 |
type |
varchar |
64 |
0 |
N |
N |
0 |
文章分类:[0,1000]用来搜索指定类型的文章 |
4 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击数:[0,1000000000]访问这篇文章的人次 |
5 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
点赞数 |
6 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
7 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
8 |
source |
varchar |
255 |
0 |
Y |
N |
来源:[0,255]文章的出处 |
|
9 |
url |
varchar |
255 |
0 |
Y |
N |
来源地址:[0,255]用于跳转到发布该文章的网站 |
|
10 |
tag |
varchar |
255 |
0 |
Y |
N |
标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 |
|
11 |
content |
longtext |
2147483647 |
0 |
Y |
N |
正文:文章的主体内容 |
|
12 |
img |
varchar |
255 |
0 |
Y |
N |
封面图 |
|
13 |
description |
text |
65535 |
0 |
Y |
N |
文章描述 |
表article_type (文章分类)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
type_id |
smallint |
5 |
0 |
N |
Y |
分类ID:[0,10000] |
|
2 |
display |
smallint |
5 |
0 |
N |
N |
100 |
显示顺序:[0,1000]决定分类显示的先后顺序 |
3 |
name |