基于Ajax的博客系统毕业论文.docx
- 文档编号:28232661
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:57
- 大小:4.34MB
基于Ajax的博客系统毕业论文.docx
《基于Ajax的博客系统毕业论文.docx》由会员分享,可在线阅读,更多相关《基于Ajax的博客系统毕业论文.docx(57页珍藏版)》请在冰豆网上搜索。
基于Ajax的博客系统毕业论文
基于Ajax的博客系统毕业论文
第一章前言4
1.1研究的目的和意义4
1.2本课题研究方法4
第二章开发环境综述2
2.1Ajax概述2
2.2PHP概述2
2.3MySQL数据库概述3
2.4Apache服务器概述4
第三章总体设计6
3.1系统设计原则6
3.2系统模块设计6
3.3系统功能运行需求7
3.4数据库设计8
3.4.1数据库需求分析8
3.4.2数据库表结构设计9
3.4.3实体关系设计12
第四章详细设计与系统实现17
4.1日志的设计与实现17
4.1.1日志文章列表17
4.1.2日志浏览19
4.1.3日志添加19
4.1.4日志修改21
4.1.4日志删除23
4.1.5发表评论24
4.1.5回复评论25
4.1.6创建文章分类27
4.1.6编辑文章分类28
4.1.7删除文章分类29
4.2Ajax相册的设计与实现30
4.2.1照片自动播放30
4.2.2照片浏览31
4.2.2相册创建33
4.2.3照片上传34
4.3留言版模块的设计与实现35
4.3.1添加留言35
4.3.2回复留言37
4.4好友模块的设计与实现38
4.4.1申请好友38
4.5用户模块的设计与实现42
4.5.1注册用户42
4.6超级管理员模块的设计与实现44
4.6.1用户管理44
4.6.2博客管理45
第五章总结47
参考文献48
附录:
英文资料及其翻译49
谢辞51
第一章前言
1.1研究的目的和意义
在blog没有出现之前,人们主要通过BBS、QQ聊天等方式来释放自己的想法,但是其缺点是杂乱无章,使得本来零碎的想法更加的支离破碎。
而blog的出现,可以让人们拥有自己的一片天地,去思考、记录每天身边发生的事情。
而且通过写blog还可以达到以下的目的:
1.记录生活,在自己的每一天上留下思考的划痕;
2.整理思路,固化知识,获得更多更好的想法;
3.分享,将自己的想法、经验与他人分享;
4.交流、提高,通过交流产生更多的思维火花,相互提高;
5.交友,互相鼓励,一路同行。
1.2本课题研究方法
随着互联网的普及,用户对于网上冲浪的体验要求越来越高,因此对于传统Web的发送请求、等待这种模式已经不能满足用户的需求了。
但是,随着Web2.0时代的到来,尤其是Ajax技术的兴起,使得这种传统的Web设计模式已经得到了改变。
作为一种新的Web应用程序模型,Ajax仍处于幼年时期。
因此,Ajax很有研究的必要,要设计一个好的Ajax应用程序,应该遵循如下的原则:
1.尽量减少通信量:
Ajax应用程序向服务器发送的信息量以及从服务器接收的信息量应尽可能的少。
2.避免下载整个页面:
当最初的页面下载之后,所有与服务器的通信都由
Ajax引擎管理。
不要一些地方通过Ajax来完成少量数据的下载,而在另外的地方重新下载整个页面,这将对用户体验造成破坏。
该设计为了满足博客用户的体验,在博客文章列表功能和相册功能均采用了
Ajax技术,并且遵循了上述Ajax应用程序的设计原则。
第二章开发环境综述
2.1Ajax概述
Ajax的全称是AsynchronousJavaScriptAndXML(异步JavaScript和XML),
它不是一项新的技术,而是很多成熟技术的合。
比起Ajax中异步的概念,在传统Web模式中是一种同步的概念:
用户必须等待每个请求,当一个请求结束后才能获得结果,在使用完这些结果后才会发出新的请求。
由此可见,在传统的Web开发中,完全是一种请求->刷新->响应的模型,用户只能等待请求完成后才能进行用户操作,操作完成后才能提交下一个请求,用户行为和服务器行为是一种同步的关系,需要相互等待,正是这种等待,造成了BS架构客户端和CS架构客户端的本质区别。
而在基于Ajax的Web程序中,最为重要的就是将同步请求转变为异步请求。
这意味着客户端和服务器端不必在相互等待,而是可以进行一些并发操作。
用户在发送请求以后可以继续当前工作,包括浏览和提交信息。
在服务器响应完成之后,Ajax引擎会将更新的数据显示给用户,而用户则根据响应容来决定自己下一步的行为。
2.2PHP概述
PHP是超文本预处理器(PHP:
HypertextPreprocessor)。
PHP主要是用于服务器端的脚本程序,因此可以用PHP来完成任何其他的CGI程序能够完成的工作,如收集表单程序、生成动态网页、或者发送/接受Cookies。
但PHP的功能远不局限于此。
PHP脚本主要用于以下三个领域:
1.服务器端脚本。
这是PHP最传统,也是最主要的目标领域。
开展这项工作需要具备以下三点:
PHP解析器(CGI或者服务器模块)、Web服务器。
需要在运行Web服务器时,安装并配置PHP。
2.命令行脚本。
可以编写一段PHP脚本,并且不需要任何服务器或者浏览器来运行它。
通过这种方式,仅仅需要PHP解析器来执行。
这种方法对于依赖cron(UNIX或者Linux环境)或者TaskScheduler(Windows环境)的日常运行的脚本来说是理想的选择。
这些脚本也可以用来处理简单的文本。
3.编写桌面应用程序。
对于有着图形界面的桌面应用程序来说,PHP或许不是一种最好的语言,但是用户如果非常精通PHP,并且希望在客户端应用程序中使用PHP的一些高级特性,可以利用PHP-GTK来编写这些应用程序。
用这种方法,还可以编写跨平台的应用程序。
PHP能够用在所有的主流操作系统上,包括Linux、UNIX的各种变种(包括HP-UX、Solaris和OpenBSD)、MicrosoftWindows、MacOSX、RISCOS等。
今天,PHP已经支持了大多数的Web服务器,包括Apache、MicrosoftInternetInformationServer(IIS)等。
使用PHP,并不局限于输出HTML。
PHP还能被用来动态输出图像、PDF文件甚至Flash。
还能够非常简便的输出文本,如XHTML及任何其他形式的XML文件。
PHP能够自动生成这些文件,在服务器端开辟出一块动态容的缓存,可以直接把它们打印出来,或者存储到文件系统中。
PHP最强大最显著的特性之一,是它支持很大围的数据库。
目前,PHP支持如下数据库,如表2-1所示。
表2-1PHP支持的数据库
Adabas
InterBase
PostgreSQL
dBase
FrontBase
SQLite
Empress
mSQL
Solid
FilePro
DirectMS-SQL
Sybase
Hyperwave
MySQL
Velocis
IBMDB2
ODBC
UNIXdbm
Informix
Oracle(OCI7和OCI8)
Ingres
Ovrimos
2.3MySQL数据库概述
MySQL是一种关系型数据库。
MySQL的主要功能包括:
1.客户/服务器体系。
MySQL是一种客户/服务器系统。
整个系统由一个数据库服务器(MySQL)和任意多个用户(应用程序)构成。
客户通过与服务器进行通信的方式来完成数据查询和保存修改等操作。
客户既可以与服务器运行在同一台计算机上,也可以运行在另外一台计算机上。
常见的大型数据库系统(Oracle,MicrosoftSQLServer等)几乎都是客户/服务器系统。
与它们形成对照的是文件服务器系统(file-serversystem),如MicrosoftAccess、dBase和FoxPro等。
文件系统的最大不足是在网络上运行时会因为用户人数的增加而变得效率低下。
2.SQL兼容性。
正如其名字所表现的,MySQL支持SQL作为自己的数据库语言。
SQL是一种专门用于查询和修改数据库里的数据以及对数据库进行管理和维护的标准化语言。
3.子查询。
从4.1版开始,MySQL具备了以下形式的查询进行处理能力:
Select*fromtable1wherexin(selectyfromtable2)
4.视图。
视图(view)是一个被视为数据库对象并且能反映出数据库的某个特定方面的SQL查询关系。
MySQL从5.0版本开始支持视图。
5.存储过程。
存储过程用于处理被存储在数据库系统部的SQL代码。
存储过程的常见用途是把一些特定的连续操作步骤,例如插入或删除一条数据记录等,简化为一个函数调用。
存储过程向编写客户软件的程序员提供了这样一种便利:
在程序里只需调用一个存储过程就可以完成一系列操作,不用再与数据库打交道。
视图和存储过程对大型数据库项目的管理维护工作有很大帮助。
存储过程还可以提高工作效率。
MySQL从5.0版本开始支持存储过程。
6.触发器。
触发器是由数据库服务器在一些特定的数据库操作(INSERT、UPDATE和DELETE)过程中自动执行的一组SQL命令。
MySQL从5.0版本开始支持触发器。
7.Unicode。
MySQl从4.1版本开始支持所有常用的字符集,包括Latin-1、Latin-2和Unicode。
2.4Apache服务器概述
Apache,是一个开放源代码的HTTP服务器,可以在大多数计算机操作系统中运行,由于其具有良好的跨平台性和安全性,被广泛使用,是最流行的Web服务器端软件之一。
它快速、可靠并且可通过简单的API扩展,Perl/PHP等解释器可被编译到服务器中。
Apache支持许多特性,大部分通过编译的模块实现。
一些通用的语言接口支持Perl、Python、Tcl和PHP。
流行的认证模块包括mod_access,mod_auth和mod_digest。
其他的例子有SSL和TLS支持(mod_ssl)、proxy模块,很有用的URL重写(由mod_rewrite实现),定制日志文件(mod_log_config),以及过滤支持(mod_include和mod_ext_filter)。
第三章总体设计
3.1系统设计原则
1.实用性
2.适应性和可扩展性
系统设计适应于多种运行环境,并且可以根据需求进行模块的扩展。
3.可靠性
出现异常时,提供人性化的异常信息,方便用户理解,采取相应措施,保证业务运行流畅。
4.可维护性和可管理性
采用人性化设计理念,具有友好的用户界面,使得操作简洁、高效。
5.安全性
网络层安全、用户程序安全。
6.总体规划、分层实施原则
设计开始之前进行详细的总体规划,然后进行分步开发。
总体设计思路:
采用面向过程的开发模式。
首先开发出用于显示用户操作界面的模板页面,每当有新用户注册时,会根据用户注册时填写的唯一个性域名,为用户开辟一块以其域名命名的物理空间,并且将这些模板文件拷贝到该目录下。
然后在开发出所有用户公用的对服务器端进行访问的函数。
3.2系统模块设计
1.日志模块
(1)日志类型创建、删除
(2)日志添加、修改、删除
(3)日志分页列表(Ajax分页)
(4)评论日志
(5)回复评论
2.Ajax相册模块
(1)创建相册
(2)上传照片
(3)照片自动播放
(4)照片分页(Ajax分页)浏览
3.好友模块
(1)添加、删除好友
(2)添加、删除友情
(3)申请好友消息提示、接受好友提示
4.留言板模块
(1)发表留言
(2)回复留言
5.用户注册
6.超级管理员模块
(1)日志删除
(2)留言删除
(3)用户删除
功能模块图如图3-1所示
图3-1功能模块图
3.3系统功能运行需求
1.操作系统
该程序可运行在Windows及Linux操作系统。
2.开发工具
(1)Apache服务器
(2)PHP5
(3)MySQL5.0
3.4数据库设计
数据库在一个系统中占有非常重要的地位,数据设计的优劣将直接对应用系统的效率以及实现的效果产生影响。
合理的数据库结构设计可以提高数据存储效率,保证数据的完整性和一致性,从而有利于程序的实现。
设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的和将来可能增加的需求。
3.4.1数据库需求分析
用户需求具体体现在各种信息的提供、保存、更新和查询上,这就要求数据库结构能充分满足各种信息的输出和输入。
通过收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据词典,为后面的具体设计打下基础。
针对Blog系统的需求,通过该过程的容和数据分析,设计如下所示的数据项:
1.日志信息
2.分类信息
3.评论信息
4.相册信息
5.照片信息
6.留言信息
7.好友信息
8.系统信息
9.用户信息
3.4.2数据库表结构设计
1.日志信息表
表3-1日志信息表(blog)
列名
字段说明
数据类型
缺省值
是否为空
外键关联
备注
id
日志id
int(11)
否
主键
title
日志标题
varchar(50)
否
author_id
作者id
int(11)
否
是
content
日志容
text
否
fb_time
发表时间
date
否
b_type
日志类别id
int(11)
否
是
ispl
是否可评论
int(11)
否
isdel
是否删除
int(11)
0
否
2.分类信息表
表3-2分类信息表(blog_type)
列名
字段说明
数据类型
缺省值
是否为空
外键关联
备注
id
类别id
int(11)
否
主键
type_name
类别名称
varchar(50)
否
owner_id
所属者id
int(11)
否
是
3.评论信息表
表3-3评论信息表(blog_pl)
列名
字段说明
数据类型
缺省值
是否为空
外键关联
备注
id
评论id
int(11)
否
主键
from_id
评论人id
int(11)
否
是
to_id
被评论人id
int(11)
否
是
blog_id
日志id
int(11)
否
是
pl_content
评论容
text
否
pl_time
评论时间
date
否
4.相册信息表
表3-4相册信息表(xc)
列名
字段说明
数据类型
缺省值
是否为空
外键关联
备注
id
相册id
int(11)
否
主键
xc_name
相册名称
varchar(50)
否
owner_id
所属者id
int(11)
否
是
5.照片信息表
表3-5照片信息表(picture)
列名
字段说明
数据类型
缺省值
是否为空
外键关联
备注
id
照片id
int(11)
否
主键
p_name
照片文件名
varchar(50)
否
xc_id
相册id
int(11)
否
是
6.留言信息表
表3-6留言信息表(lyb)
列名
字段说明
数据类型
缺省值
是否为空
外键关联
备注
id
留言id
int(11)
否
主键
user_id
被留言人id
int(11)
否
是
ly
留言容
text
否
ly_time
留言时间
date
否
lyr_id
留言人id
int(11)
否
是
7.好友信息表
表3-7好友信息表(friend)
列名
字段说明
数据类型
缺省值
是否为空
外键关联
备注
id
id
int(11)
否
主键
user_id
用户id
int(11)
否
是
has_id
好友id
int(11)
否
是
isFriendLink
友情
int(11)
0
否
8.系统信息表
表3-8系统信息表(sys_message)
列名
字段说明
数据类型
缺省值
是否为空
外键关联
备注
id
消息id
int(11)
否
主键
from_id
发送用户id
int(11)
否
是
to_id
接受用户id
int(11)
否
是
isComfrim
是否确认
int(11)
0
否
message_type
消息类型
int(11)
否
9.用户信息表
表3-9用户信息表(user)
列名
字段说明
数据类型
缺省值
是否为空
外键关联
备注
id
用户id
int(11)
否
主键
用户名
Varchar(50)
否
nc
昵称
Varchar(50)
否
domain
个性域名
Varchar(20)
否
password
密码
Varchar(20)
否
isadmin
是否管理员
int(11)
0
否
photo
头像路径
Varchar(50)
null
是
3.4.3实体关系设计
1.日志信息实体图,如图3-2所示
图3-2日志实体图
2.分类信息实体图,如图3-3所示
图3-3分类信息实体图
3.评论信息实体图,如图3-4所示
图3-4评论信息实体E-R图
4.相册信息实体图,如图3-5所示
图3-5相册信息实体图
5.照片信息实体图,如图3-6所示
图3-6相册信息实体图
6.留言信息实体E图,如图3-7所示
图3-7留言信息实体图
7.好友信息实体图,如图3-8所示
图3-8好友信息实体图
8.系统信息实体图,如图3-9所示
图3-9系统信息实体E-R图
9.用户信息实体图,如图3-10所示
图3-10用户信息实体图
总体E-R图,如图3-11所示
图3-11总体E-R图
第四章详细设计与系统实现
4.1日志的设计与实现
4.1.1日志文章列表
1.博客首页
如图4-1所示,用户在地址栏输入自己的个性域名后,页面会跳转到该用户的首页,首页以Ajax分页的方式显示了博客的文章列表,当用户点击文章标题下的分页导航条的时候,客户端就会实现无刷新分页,如图4-2所示。
图4-1博客文章列表图
图4-2博客文章列表分页显示效果图
2.后台业务逻辑
(1)用户在浏览器地址栏输入自己的个性域名后,页面就会跳转到该用户目录下的index.php页面,该页面在加载的时候首先会执行代码
$server_arr=explode('/',$_SERVER['PHP_SELF']),其中超级全局变量$_SERVER['PHP_SELF']保存了当前页面的物理路径,然后用explode()方法将当前物理路径以‘/’作为分隔符,截取成字符串并将返回结果保存在一个数组,例如Array([0]=>[1]=>myblog[2]=>temp[3]=>index.php)。
(2)根据上述数组中的下标为2的元素,即当前用户的个性域名,到表user中查询当前用户的全部信息,根据这些信息来初始化该用户的首页。
(3)在页面body加载后自动调用page.js文件中的page()方法,该方法是实现Ajax分页的显示博客文章列表的方法。
调用方法为:
pageNum= echo1? >&author_id= phpecho$user_array['id']? >');"> 其中../ajax/createBlogXml.php为后台生成博客文章列表的文件,该文件实现了将文章列表以XML的形式返回的方法,返回的XML文件将由page.js中相关的方法进行对XML的DOM解析工作,pageNum参数为当前的页数,页面刚一加载时默认为1,author_id是查询出来的当前用户id。 4.1.2日志浏览 1.日志浏览: 如图4-3所示,单击文章标题,进入所要浏览的文章页面。 图4-3浏览文章图 2.后台业务逻辑: (1)点击文章,将博客文章id作为参数传到view_blog.php页面 (2)根据博客文章id在表blog中查询相应的文章 4.1.3日志添加 1.日志新建: 如图4-4所示,首先用户需要登录,登录的用户名为用户注册时的E_Mail地址。 用户登录后会在页面头部出现”博文”菜单选项。 单击“博文”选项,进入文章发表页面,如图4-5所示,在该页面用户需输入文章的标题,文章的容,以及文章的类别,用户还可以选择该文章是否可以评论。 当文章成功发表后,自动返回首页。 图4-4用户登录图 图4-5文章发表图 2.后台业务逻辑 (1)用户输入自己的E_Mail地址和密码进行登录,如果登录成功,将用户名保存到session中,然后系统会重新跳转到该用户的首页,在首页加载完成后会判断该用户名是否在session中,如果存在,则将隐藏的“博文”菜单选项显示出来。 (2)在文章发表的表单中,自定义一个”act”属性,其值为“add”,该属性是用来标识用户提交的动作,根据这个动作来调用后台不同的处理函数,另外为了在处理完相应的操作后页面能顺利的跳转回当前用户的目录下,还需要将用户的个性域名作为参数传到后台。 (3)当用户提交文章后,会将表单的数据提交到blog_do.php后台处理页面,该页面除了接收与文章相关的数据外,还接收了用户提交的动作和用户的个性域名。 后台采用switch、case语句根据提交的动作调用相应的操作函数,添加文章的时候应该调用blog_do.php中的addBlog()方法。 在数据成功插入到blog表后,系统会根据用户传入的个性域名将页面重新跳转到该域名目录下的index.php页面。 4.1.4日志修改 1.日志修改: 如图4-6所示,点击文章进入文章浏览页面,如果当前用户已经登录则在文章标题的旁边显示“编辑”和“删除”。 点击“编辑”页面跳转到文章编辑页面,如图4-7所示。 文章修改成功后页面重新跳转到文章浏览页面,如图4-8所示。 图4-6文章浏览图 图4-7文章编辑图 图4-8文章浏览图 2.后台业务逻辑 (1)用户输入自己的E_Mail地址和密码进行登录,如果登录成功,将用户名保存到session中,用户进入文章浏览页面后,判断该用户名是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Ajax 博客 系统 毕业论文