简介
- 项目相关:SpringMvc+Spring+Mybatis框架, MySQL数据库
- 论文文档:格式是参考传智播客的一篇论文写的。
- 源码链接:Web-网上书城SSM-课程设计-源码+论文-Java文档类资源-CSDN下载
- 资源暂时下架
- Web-网上书城SSM-课程设计(源码+论文)_并且严格按照国家法律法规来进行研究和实践,并无法律和政策方面的限制。-Java文档类资源-CSDN下载有项目搭建视频。项目描述:https://blog.csdn.net/qq_34060370/ar并且严格按照国家法律法规来进行研究和实践,并无法律和政策方面的限制。更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/qq_34060370/84581359
摘 要
自从淘宝的创立伊始,网上购物越来越受大众欢迎并且流行,网上购物充分利用了互联网方便了人们。随着科技与社会的进步,人们对图书的需要日益增长,人们想轻松购买到图书,能买到好书,能方便快捷,这无疑是一个巨大的市场,于是可以借助互联网开发一套网上图书系统,满足人们的需求。
网上图书系统给人们带来方便,使人们足不出户就可以浏览各式各样的图书,可以方便快捷的检索自己想要的图书,可以轻松快捷浏览多本图书信息,只需点一点就可以购买到图书,网上图书系统不用像传统书店一样需店铺,并且需雇员销售。
系统以JSP显示用户注册、登陆、书籍的预览查询、对书籍的购买通过购物车等功能。
关键词 电子商务 网上书城
目 录
摘要...
目录...
第一章 绪论...
1.1 课题背景、目的及意义...
1.1.1课题背景...
1.1.2课题目的和意义...
1.2 国内外研究现状...
1.2.1 国外的研究现状...
1.2.2 国内的研究现状...
第二章 可行性分析...
2.1 社会可行性...
2.2 技术可行性...
2.3 操作可行性...
2.4 系统的技术介绍...
2.4.1 Javascript.
2.4.2 JQuery.
2.4.3 MySQL.
2.4.4 MVC.
2.4.5 Spring.
2.4.6 SpringMVC.
2.4.7 Mybatis.
2.5 系统开发平台及运行环境...
2.5.1 系统开发平台...
2.5.2 运行环境...
第三章 需求分析...
3.1 系统功能模块概述和分析...
3.2 系统功能模块设计...
3.3 数据库分析...
第四章 网上图书商城前台设计与实现...
4.1首页设计...
4.2用户模块...
4.2.1用户注册...
4.2.2用户登录...
4.2.3修改用户资料...
4.2.4退出...
4.3图书模块...
4.3.1图书列表...
4.3.2图书详细...
4.3.3图书搜索...
4.4购物车...
4.4.1添加图书到购物车...
4.4.2我的购物车...
4.4.3修改条目数量...
4.4.4删除条目...
4.5订单模块...
4.5.1付款...
4.5.2生成订单...
4.5.3订单列表...
4.5.4订单删除...
4.5.5订单状态...
第五章 网上图书商城后台设计与实现...
5.1登录...
5.2后台主页...
5.3用户信息管理...
5.3.1.用户列表...
5.3.2.用户删除...
5.4图书管理...
5.4.1.图书列表页面...
5.4.2.添加图书...
5.4.3.修改图书...
5.4.4.删除图书...
5.5订单管理...
5.5.1.订单列表...
5.5.2.订单发货...
第六章 系统测试... .
6.1测试的目的与目标... .
6.2测试方法... .
6.3测试用例... .
6.4测试结论... .
第七章 结论... .
第八章 致谢... .
第九章 参考文献...
第一章 绪论
1.1 课题背景、目的及意义
1.1.1 课题背景
随着internet的普及和电子商务的兴起,网上图书销售是Internet电子商务在图书销售行业发展的必然结果,这种新型的图书销售形式,与传统利用书店进行销售的方式相比拥有许多优势:一是降低了销售成本;二是利用网络作为交易平台,改变传统的交易方式,使得交易活动不受空间和时间的限制;三是信息的传递更迅速灵活,新书信息上传后,客户可以立即看到,交易马上可以从网上进行,从而大大提高了交易的效率。正是由于这些优势,网上图书销售才能得以迅速地发展。网上图书销售系统的主要功能是利用网站作为交易平台,将图书的一些基本信息以网站的形式发布到Internet中,客户可以通过Internet登录图书销售网站来查看售书信息并提交订单订购图书,实现在线交易。
1.1.2 课题目的和意义
在各行各业竞争日益激烈的今天,提高工作效率和工作质量是每个企业必须面临并且必须解决的重大课题。
有了《网上图书商城》就不需要客户到书城手工查询需要的图书,而只需在自家的电脑前输入查询条件,或通过类别查询,快速而准确的找到需要的图书,大大加快了查询速度。
《网上图书商城》不仅可以大量减少人力、物力,降低了成本,而且突破了时间和空间的限制,使得图书交易活动可以在任何时间、任何地点进行,实现24小时营业,不需要营业员,网上书城可以被设置成一个自动售货机。同时,《网上图书商城》更容易开拓全球市场从而大大提高了效率,对推动《网上图书商城》未来的发展有着一定的实际意义。
1.2 国内外研究现状
1.2.1 国外的研究现状
网上售书这是信息社会发展的必然要求。国际互联网的开通,为信息社会的飞速发展创造了条件。在美、日等信息化程度较高的国家和地区,网上图书销售发展速度迅猛。据InternetWorldStatS的统计,今天的互联网有17亿用户。而目前的全球人口为67亿,到2020年毫无疑问会有更多的人使用互联网。美国国家科学基金会预计,到那时互联网的用户数量将接近50亿。网民队伍的迅速扩充,无疑为网上售书的发展提供了巨大的市场空间。加上图书因其具有标识清晰、规格统一、特征容易描述、同种商品个体之间无差异等特性而能成为发展电子商务的最为理想的商品类型。因此,网上售书成为各国发展电子商务的首选目标,国际互联网开通后,各国电子商务网站很大一部分都是网上书店。只要网络发展没有停止,网上售书的发展就不会停止。
1.2.2 国内的研究现状
近年来,随着计算机网络技术的飞速发展,网络技术应用已经相当普及,使得在线购买成为现实,各种各样的网上图书销售系统层出不穷,国内各大图书商都在创建自己的计算机网上电子商务系统。随着科学技术的飞速发展,Internet这个昔日少数科学家接触和使用的科研工具已经成了普通百姓都可以触及的大众型媒体传播手段。
第二章 可行性分析
2.1 社会可行性
《网上图书商城》系统主要目的是进行网上售书,并且严格按照国家法律法规来进行研究和实践,并无法律和政策方面的限制。
2.2 技术可行性
本系统采用的是JSP、SSM和MySQL开发,Windows操作系统,采用Spring配置jdbc与后台数据库进行连接,用Mybatis框架完成数据的添加、修改、删除、查询等功能。由于JSP、Servlet功能强大,而MySQL灵活易维护在开发方面具有方便快捷、使用灵活的特点,以及目前的广泛实际应用,因此使用JSP、SSM、MySQL是开发轻平台的最佳组合从而说明本系统在技术方面可行。
硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。
2.3 操作可行性
目前,大多数计算机都能运行该系统,该系统的安装、调试、运行不会改变原计算机系统的设置和布局(因为B/S结构系统),并且系统界面简单,提示信息完整,只需用户有web浏览器再由相关人员指导便能够方便的操作此软件。
2.4 系统的技术介绍
2.4.1 Javascript
JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。
2.4.2 JQuery
jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
2.4.3 MySQL
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
2.4.4 MVC
MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式。
MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。
2.4.5 Spring
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
2.4.6 SpringMVC
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等。
2.4.7 MyBatis
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。
2.5 系统开发平台及运行环境
2.5.1 系统开发平台
系统的开发是在Tomcat环境下进行的。Tomcat是一个免费的开源的Servlet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。Tomcat被Java World杂志的编辑选为2001年度最具创新的Java产品,可见其在业界的地位。
2.5.2 运行环境
操作系统:Windows 7以上版本。
服务器软件:Tomcat6.0以上版本。
浏览器:IE、Fire Fox、Google Chrome。
第三章 需求分析
3.1 系统功能模块概述和分析
《网上图书商城》模型是典型的网上购物实践中最为普遍的电子商务企业对客户(B2C)模式,主要包括会员注册、订单管理、购物车、搜索、支付等基本功能。此外,本系统也将实现在线图书销售系统的后端管理,包括图书的添加、订单的处理等功能。
《网上图书商城》主要功能如下:
1.前台部分:
- 用户管理:注册、登录、修改个人资料(密码,手机,图片);
- 图书推荐:推荐最新上传的图书
- 图书显示:关键字搜索图书、查看书的详细;
- 购物车管理:选中图书添加到购物车、修改购物车的图书数量、删除购物车的图书;
- 订单管理:购图书生成订单、我的订单、确认收货。
2. 后台部分: - 用户管理:管理员登录、删除前台用户;
- 书籍管理:添加图书、修改图书、删除图书;
- 订单管理:查看所有订单、发货;
3.2 系统功能模块设计
根据系统功能分析,可以画出系统的功能模块图。
3.3 数据库分析
信息系统的主要任务是通过大量数据获得管理所需要的信息,这就要求系统本身能够存储和管理大量的数据,而这一功能的实现必须借助大型数据库系统。本系统的开发选择MySQL作为后台数据库开发工具。
1. 概念模型设计
概念数据模型是面向用户、面向现实世界的数据模型,是与DBMS无关的。它主要用来描述一个单位的概念化结构。采用概念数据模型,数据库设计人员可以在设计的开始阶段,把主要精力用于了解和描述现实世界上,而把涉及DBMS的一些技术性的问题推迟到设计阶段去考虑。
根据数据流程分析,绘制网上书城的全局E-R模型如图所示。
根据设计规划的主要实体有:用户、图书分类、图书、购物车、订单、管理员。各个实体具体的描述属性图如下(实体属性在下图中并没有全部给出,因为属性过多的原因):
1. 用户实体
2. 图书实体
3. 购物车实体
购物车其实是购物项的集合,多个购物项构成了购物车。
4. 订单实体
订单其实是订单项的集合!即多个订单项构成了订单。
2. 数据库表设计
数数据库的逻辑设计,即把概念设计得到的概念数据库模式变为逻辑数据模式,它依赖于DBMS。
本系统数据库表如下:
(1)books
列名 | 数据类型 | 是否允许为空 | 说明 |
id | int | 否 | 序号(主键) |
book_name | varchar(255) | 否 | 书籍名称 |
author | varchar(32) | 否 | 作者 |
pub | varchar(32) | 是 | 出版社 |
price | float | 是 | 书籍原价 |
rob | float | 是 | 书籍现价 |
detail | text | 是 | 书籍描述 |
pic | varchar(64) | 是 | 书籍图片 |
(2)manager
列名 | 数据类型 | 是否允许为空 | 说明 |
id | int | 否 | 序号(主键) |
manager_name | varchar(32) | 否 | 管理员名 |
manager_password | varchar(32) | 否 | 密码 |
(3)orders
列名 | 数据类型 | 是否允许为空 | 说明 |
id | int | 否 | 序号(主键) |
user_id | int | 否 | 下单用户id |
book_id | int | 否 | 书籍id |
number | int | 是 | 购买数量 |
trading_type | int | 是 | 交易状态 |
order_sn | Varchar(33) | 是 | 订单号 |
subtotal | float | 是 | 订单总价格 |
rob | float | 是 | 书籍现价 |
pic | Varchar(64) | 是 | 书籍图片 |
book_name | Varchar(255) | 是 | 书籍名称 |
(4)shopcart
列名 | 数据类型 | 是否允许为空 | 说明 |
id | int | 否 | 序号(主键) |
user_id | int | 否 | 下单用户id |
book_id | int | 否 | 书籍id |
book_name | Varchar(255) | 书籍名 | |
rob | float | 是 | 书籍现价 |
number | int | 是 | 数量 |
subtotal | float | 是 | 总价格 |
price | float | 是 | 书籍原价 |
pic | Varchar(64) | 是 | 书籍图片 |
(5)users
列名 | 数据类型 | 是否允许为空 | 说明 |
id | int | 否 | 序号(主键) |
username | varchar(32) | 否 | 用户名 |
password | varchar(32) | 否 | 密码 |
phone | varchar(11) | 否 | 手机号 |
| varchar(64) | 否 | 邮箱 |
address | varchar(256) | 否 | 地址 |
tx | varchar(64) | 否 | 头像 |
第四章 《网上图书商城》前台设计与实现
《网上图书商城》的整个前台部分是供用户浏览、选购图书的部分,一个好的网站的前台部分一定非常精美,非常有条理,因此,前台的设计主要把握3点:简明扼要、条理清晰、层次分明。下面将一一介绍我的《网上图书商城》系统的前台部分的实现。
4.1 首页设计
首页应该大气简洁,使用div分层显示首要内容
1. 顶部
- 网站标题;
- 菜单。
菜单部分就是一系列的超链接,用户在未登录时看到的是“登录”和“注册”链接;在登录后看到的是我的头像,并且点击弹菜单包含个人资料、购物车、订单、退出菜单项
2. 下一层
这一层是banner层,3张大图显示网站系统的主题,使用jquery轮播,实现动态效果
3. 接下来层
下面是一些精美css+div构成的界面
4.2 用户模块
注册用户是构成网站主体的一个重要组成部分,网站设置注册用户的目的之一在于方便网站信息的管理。
4.2.1 用户注册
用户在登录之前需要先进行注册,在首页中点击“注册”链接就可以到达注册页面。
表单校验
注册页面使用JQuery对用户输入的数据进行校验:
1. 用户名:
- 不能为空;
- 长度必须在2~15之间;
- 用户名不能与数据库的相同
2. 登录密码: - 不能为空;
- 长度必须在2~15之间;
3. 确认密码: - 不能为空;
- 必须与登录密码相同;
表单校验中,用户名是否被注册过需要请求服务器,所以这里使用的是JQuery的ajax()来完成对服务器的访问。
4.2.2 用户登录
在首页点击“登录”链接就可以来到登录页面。
1. 表单校验
(1). 用户名:
- 不能为空;
- 长度必须在2~15之间;
(2) .密码: - 不能为空;
- 长度必须在2~15之间;
登录表单校验使用的JQuery完成,其中用户名与密码是否存在 。
2. 登录成功
用户登录成功后,会回到首页。这时在首页会显示当前用户的头像,有头像点击就可以出现弹框,如果没有登录这些功能将被隐藏
4.2.3 修改用户信息
用户在登录成功后,点击头像的个人资料菜单项进入个人信息修改
1. 表单校验
(1). 原密码:
- 不能为空;
- 长度必须在2~15之间;
- 是否正确;
(2). 新密码: - 不能为空;
- 长度必须在2~15之间;
(3). 确认密码: - 不能为空;
- 必须与新密码相同;
(4). 电话: - 不能为空;
- 是否11位。
(5). email: - 不能为空;
- 是否正确。
(6).地址: - 不能为空;
4.2.4 退出
当用户登录后,点击退出链接可以完成退出。
4.3 图书模块
4.3.1 图书列表
在首页的菜单项点击书库可以进入图书列表页面。
可以在图书列表上方输入关键字进行搜索。
4.3.2 图书详细
点击某本图书,会到达图书详细页面。
4.3.3 图书搜索
在搜索框输入关键字,显示符合条件的图书
4.4 购物车
购物车使用数据库来保存数据,也就是说添加到购物车中的图书,不会因为关闭浏览器,或者是关闭电脑而消失。
4.4.1 添加图书到购物车
在图书详细页面,给出数量,然后点击“添加到购物车”就可以把图书添加到购物车中,并且会到达购物车列表页面。
4.4.2 我的购物车
也可以在顶部菜单栏点击头像再点“购物车”链接查询购物车。购物车列表页面会显示所有车中所有条目,每个条目会显示图书图片、图书名称、图书当前价、数量,以及小计。
4.4.3 修改条目数量
在购物车列表页面中,点击某个条目上的数量来完成修改数量。Js控制不能把数量设为0
4.4.4 删除条目
在购物车列表页面中,点击某个条目后面的“删除”链接会删除当前条目。
也可以全选,然后点击“删除”链接,完成一次删除多个条目。
4.5 订单模块
对订单的操作,对应数据库中的表(orders)。
- 生成订单:通过购买图书生成订单;
- 订单列表:显示当前用户的所有订单;
- 删除订单:对我的订单删除;
4.5.1 付款
选中要购买的商品购买,准备生成订单。
4.5.2 生成订单
购买完后生成订单,跳转到订单列表,显示刚刚购买的商品
4.5.3 订单列表
在顶层菜单栏点击头像的“我的订单”链接,就会到达订单列表页面。该页面会显示当前用户的所有订单信息。
4.5.4 订单删除
对订单成功的订单,如果觉得不想看见了可以自行点击删除
4.5.6 订单状态
订单的状态分为5种:
1:未付款状态。当订单刚刚生成时,就是10状态;
2:已付款状态,但未发货。当订单刚刚支付之后,就是20状态;
3:已发货,但未确认收货。当订单刚刚发货之后,就是30状态;
4:交易成功。当订单确认收货之后,就是40状态。一旦订单为40状态后,就不能再改变状态;
第五章 《网上图书商城》后台设计与实现
书城后台的设计是为管理员方便管理系统而设计的,其中包括分类管理、图书管理,以及订单管理。
5.1 管理员登录
后台管理员登录页面,登录成功后到达后台主页。
5.2 后台主页
管理员登录成功后,到达主页。主页是分左右显示。
- 左边显示用户信息管理、图书信息管理、订单信息管理;
- 右边显示左边功能列表被点击的列表页面。
5.3 用户信息管理
5.3.1 用户信息列表
当点击首页左边的“用户信息管理”链接到达用户信息列表页面。
5.3.2 删除用户
管理员可以直接删除前台用户
5.4 图书信息管理
5.4.1 图书列表页面
点击左边的“图书信息管理”进入图书列表页面。图书列表页面可以进行增删改图书
5.4.2 添加图书
点击“添加书籍”链接后,在页面中弹出添加图书表单页面。
表单使用了JQuery进行校验,如果校验无误,添加图书会成功!
5.4.3 修改图书
点击图书列表的“修改”链接后,在页面中出现这个被点击的图书信息已经赋值在表单的div
修改完后保存就修改完成
5.4.4 图书删除
在图书列表中点击某一本图书的删除链接,会将此图书删除
5.5 订单管理
5.5.1 订单列表
点击“订单信息管理”链接会到达订单列表页面。该页面会显示所有订单!
订单列表页面上包含按状态查询的链接,分别为:未付款、已付款、已发货、交易成功
5.5.2 订单发货
对用户付了款的图书点击设置发货,将图书的状态改为30,表示已发货用户未收获
第六章 系统测试
6.1 测试的目的与目标
在此系统进行初步实现之后,开始进行对系统进行测试,找出系统中存在的Bug,通过测试,用提交的Bug报告来为以后软件的改进提供标准和参考,能够在以后的系统改进中找到依据。
测试后的软件各模块基本功能可以顺利进行,尽可能的提高软件的健壮性。
6.2 测试方法
- 从是否关心软件内部结构和具体实现的角度划分:黑盒测试和白盒测试;
- 从是否执行程序的角度:静态测试和动态测试;
- 从软件开发的过程按阶段划分有:单元测试、集成测试、确认测试、系统测试、验收测试、回归测试、Alpha测试、Beta测试;
6.3 测试用例
由于功能模块较多,测试内容篇幅较长,所以在本论文中只介绍前台登入系统的测试用例,表6.1是本系统用户登入的测试表,从测试的结果来看与期望结果完全相同。
登入系统测试用例
功能特性 | 用户登录验证 | ||||
测试目的 | 验证是否输入合法的信息 | ||||
测试数据 | 用户名称:1111 密码:1111 | ||||
测试内容 | 操作描述 | 数据 | 期望结果 | 实际结果 | 测试状态 |
1 | 输入用户姓名,按“登陆”按钮。 | 用户姓名:1111, 密码为空 | Js提示密码不能为空 | Js提示密码不能为空 | 与期望结果相同 |
2 | 输入密码,按“登陆”按钮。 | 用户姓名为空,密码:1111 | Js提示用户名不能为空 | Js提示密码不能为空 | 与期望结果相同 |
3 | 输入用户姓名和密码,按“登陆”按钮。 | 用户姓名:1, 密 码:1 | 显示警告信息“用户名或密码误!” | 显示警告信息“用户名或密码误” | 与期望结果相同 |
4 | 输入用户姓名和密码,按“登陆”按钮。 | 用户名:1111,密 码:1111 | 正确登入到首页 | 正确登入到首页 | 与期望结果相同 |
6.4 测试结论
把开始的代码写得越好,它出现的错误也就越少,你也就越能相信所做过的测试是彻底的。系统化测试以一种有序方式设法探测潜在的麻烦位置。同样,毛病最可能出现在边界,这可以通过手工的或者程序的方式检查。自动进行测试是最理想的,用得越多越好,因为机器不会犯错误、不会疲劳、不会用臆想某此实际无法工作的东西能行来欺骗自己。回归测试检查一个程序是否能产生与它们过去相同的输出。在做了小改变之后就测试是一种好技术, 能帮助我们将出现问题的范围局部化,因为新问题一般就出现在新代码里面。
第七章 结论
通过开发《网上图书商城》,我较全面的掌握了JAVA的基本知识和编程技巧,掌握了解了SSM开发模式,并在开发过程中我的JAVA开发能力得到了进一步的提高。如:更进一步的深入了解MVC设计模式,软件三层框架;SQL语言的使用; SSM的配置和优点。
在开发过程中我学到了一些经验:系统分析的好坏将决定着的系统开发成功与否,一份好分析设计将是成功开发主要因素。我们在着手开发之前不要急于编程,先应有较长的时间去把分析做好,做好数据库设计工作,写出相关的开发文档等。然后再开始编写程序代码,这样做到每写一步代码心底有数,有条不絮。当然也有些还需待继续深入地方如:控件的应用等。
第八章 致谢
第九章 参考文献
[1] 石志国,薛为民,董洁.JSP应用教程.北京:清华大学出版社.北京交通大学出版社,2004