广州企业网站排名百搜科技
摘 要
本系统利用PHP动态网络开发技术,以MySQL作为后台数据库,使用Apache配置Web服务器,结合JavaScript和HTML两种脚本语言,以及配合多种网页开发工具,实现了基于B/S模式的个人日志发表和交流的平台——个人博客系统。
全文主要分为6个部分:第1部分主要介绍个人博客系统的特点、优点和本系统所要用到的各种开发技术;第2部分主要论述了传统系统和所要开发系统的处理流程、功能介绍和比较;第3部分主要分析了系统的各项功能和性能需求,给出了系统需求管理规划表,展示了各种需求的优先级,规划和分配了各个模块所要完成的系统功能;第4部分系统数据库设计,主要分析和设计了系统的数据库表和项,以及数据库各项的标识符;第5部分系统详细设计,逐一给出了系统各个模块的详细设计过程;第6部分系统配置和发布,介绍了系统开发和运行的相关环境配置以及运行效果展示。
关键词:博客 PHP MySQL 动态网页 B/S模式
目 录
1 绪论
1.1 个人博客
1.1.1 个人博客的研究意义
1.1.2个人博客的简介
1.1.3个人博客的特点
1.2 开发技术
1.2.1 PHP技术
1.2.2 PHP工作原理
1.2.3 B/S结构
1.2.4 数据库技术
1.2.5 Apache技术
1.2.6 JavaScript语言
2 系统可行性分析设计
2.1 开发的目的和背景
2.2 系统目标和研究方法
2.3 传统系统的分析
2.4 所要开发的系统的分析
2.5 系统的其它可行性
2.6 可行性结论
3 系统需求分析和概要设计
3.1 系统需求分析
3.1.1 开发背景
3.1.2 系统实现目标概述
3.1.3 系统功能需求
3.1.4 系统需求管理规划表
3.1.5 系统性能要求
3.2 概要设计
3.2.1 系统体系结构
3.2.2 系统模块划分
3.2.3 系统功能划分组织结构图
3.2.3 运行环境
4 系统数据库设计
4.1 MySQL 数据库简介
4.2 数据库表的设计
4.2.1 概述
4.2.2 用户表
4.2.3文章内容表
4.2.4 文章评论表
4.2.5图片信息表
4.2.6 朋友圈信息表
4.2.7 数据库ER关系图
5 系统的详细设计
5.1 首页面及主要页面设计
5.2 系统主要功能模块开发
5.1.1首页模块
5.1.2 文章管理模块
5.1.3 图片管理模块
5.1.4 朋友圈管理模块
5.1.5管理员管理模块
6系统配置和发布
6.1 开发和应用环境配置
6.1.1安装Apache2.2.6
6.1.2 安装PHP5.2.5
6.1.3安装MySQL6.0.3
6.1.4安装phpmyadmin2.11.3
6.2 系统的发布和运行效果
6.2.1 系统的发布
6.2.2 系统运行效果
7 总结
致 谢
参 考 文 献
Abstract
1 绪论
博客,数字生活新时尚,通过文字、图片、声音等,尽情展示自我、分享感受、参与交流,美好你我生活。Show you, share me,人人都可以博客,人人都需要博客。
1.1 个人博客
1.1.1 个人博客的研究意义
1.1.2个人博客的简介
“博客”一词是从英文单词Blog翻译而来。Blog是Weblog的简称,而Weblog则是由Web和Log两个英文单词组合而成。Weblog就是在网络上发布和阅读的流水记录,通常称为“网络日志”,简称为“网志”。它是继Email、BBS、IM之后出现的第四种全新的网络交流方式。它绝不仅仅是一种单向的发布系统,而且有着极其出色的交流功能。另外Blog也提供了非常方便实用的个性化功能。简言之,Blog就是以网络作为载体,简易迅速便捷地发布自己的心得,及时有效轻松地与他人进行交流,再集丰富多彩的个性化展示于一体的综合性平台。
1.1.3个人博客的特点
1,零机制:博客属于个人所有,是自发建立和非正式的建设。BSP(Blog Service Provider——博客服务托管商)不能对博客发号施令。
2,零技术:博客不需要作网站的专业知识,可以像发邮件一样简单地实现博客网页的呈现。技术的极度简化,包括架构和申请博客网站、编辑、上传和修改内容等。
3,零成本:任何一个人都可以像申请免费邮件般免费申请自己的博客网站。不需要注册域名的成本,不需要租用服务器空间的成本,不需要许多软件工具的成本。
4,零编辑:博客用户就是编辑,即时写作、即时发布、自我检查。这形成了与传统写作截然不同的“体验”,真正实现了作者“零磨损”的开放式写作。
5,零形式:博客页面的表现形式和文章内容的表现方式十分灵活,没有特定形式。
6,与个人主页相比较,博客的使用更方便、交互性更强。与传统的电子邮件、BBS和ICQ这三种互联网沟通方式相比,博客是一种较严肃的沟通平台。BBS公共匿名性很强,而个人性很弱,因此缺乏约束。电子邮件和ICQ则是多用于个人间的通讯,而博客是个人性和公共性的结合。博客是个人在网上展示自己、与别人沟通交流的综合平台,它的管理比BBS简单的多。
1.2 开发技术
本系统在Windows XP下采用PHP技术作为服务器端脚本解释器,MySQL作为后台数据库平台以及Apache作为Web服务器,并且使用了一些辅助开发工具和技术,比如Dreamweaver CS3等。
1.2.1 PHP技术
PHP(Hypertext Preprocessor——超文本预处理器)是一种HTML内嵌式的脚本语言(类似ASP)。PHP的语法大部分兼容了C、JAVA、Perl,并增加了PHP特有的语法结构,可以比CGI或者Perl更快速的执行动态网页,只需要很少的编程知识就能建立一个交互的WEB站点。它可以用于管理动态内容、支持数据库、处理会话跟踪,甚至构建整个电子商务站点。它支持许多流行的数据库,包括 MySQL、PostgreSQL、Oracle、Sybase、Informix 和 Microsoft SQL Server。
PHP是完全免费的开源产品,不用花钱,你可以从PHP官方站点(http: //www.php.net)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。Apache和MYSQL也是同样免费开源,在国外非常流行。PHP和MYSQL搭配使用,可以非常快速的搭建一套不错的动态网站系统,因此国外大多数主机系统都配有免费的APACHE+PHP+MYSQL。通常认为这种搭配的执行效率比IIS+ASP+ACCESS要高,而后者的使用还必须另外交钱给微软。
PHP具有如下的优点:
1.学习简单:只需要了解一些基本的语法和语言特设,就可以开始使用PHP。
数据库连接方便:PHP可以编译成具有与许多数据库相连接的函数。PHP与MYSQL是现在绝佳的组合。可以编写外围的函数间接存取数据库。这样当更换使用的数据库时,可以轻松的更改编码以适应这样的变化。PHPLIB就是最常用的可以提供一般事务需要的一系列基库。
2.扩展性强:PHP已经进入了一个高速发展的时期,具有良好的扩展附加功能。
可以进行面向对象编程:PHP提供了类和对象,基于WEB的编程工作非常需要面向对象编程能力。PHP支持构造器、提取类等。
总之,PHP技术具有免费、跨平台、可加密、开发效率高等优点,在编写小型的网站系统时较之ASP、JSP等技术有一定优势。
1.2.2 PHP工作原理
PHP的所有应用程序都是通过WEB服务器(如apache)和PHP引擎程序解释执行完成的,工作过程:
(1)当用户在浏览器地址中输入要访问的PHP页面文件名,然后回车就会触发这个PHP请求,并将请求传送给支持PHP的WEB服务器。
(2)WEB服务器接受这个请求,并根据其后缀进行判断。如果是一个PHP请求,WEB服务器从硬盘或内存中取出用户要访问的PHP应用程序,并将其发送给PHP引擎程序。
(3)PHP引擎程序将会对WEB服务器传送过来的文件从头到尾进行扫描并根据命令从后台读取,处理数据,并动态地生成相应的HTML页面。
(4)PHP引擎将生成HTML页面返回给WEB服务器。WEB服务器再将HTML页面返回给客户端浏览器。
1.2.3 B/S结构
在当前Internet/Intranet领域,“浏览器/服务器(简称B/S)”结构是非常流行的客户机/服务器结构。在B/S体系结构系统中,用户通过浏览器向分布在网络上的许多服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器。B/S结构简化了客户机的工作,客户机上只需配置少量的客户端软件。服务器将担负更多的工作,对数据库的访问和应用程序的执行将在服务器上完成。浏览器发出请求,而其余如数据请求、加工、结果返回以及动态网页生产等工作全部由Web Server完成。实际上B/S体系结构是把二层C/S结构的事务处理逻辑模块从客户机的任务中分离出来,由Web服务器单独组成一层来负担其他任务,这样客户机的压力减轻了,把负荷分配给了Web服务器。这种三次体系结构如图1所示。
图1 B/S三层体系结构
这种结构不仅把客户机从沉重的负担和不断对其提高的性能的要求中解放出来,也把技术维护人员从繁重的维护升级工作中解脱出来。由于客户机把事务处理逻辑部分分给了功能服务器,使客户机一下子“苗条”了许多,不再负责处理复杂计算和数据访问等关键事务,只负责显示部分,所以维护人员不再为程序的维护工作奔波于每个客户机之间,而把主要精力放在功能服务器上程序的更新工作。这种三层结构在层与层之间相互独立,任何一层的改变不会影响其它层的功能。
1.2.4 数据库技术
数据库是数据和数据库对象的集合,其中数据库对象指表(Table)、视图(View)、存储过程(Stored Procedure)和触发器(Trigger)等。数据库通过SQL(Structured Query Language)来对数据进行操作和管理,这里包括一些基本的操作如select、delete、insert、update语句。
ADO(ActiveX Data Objects)是微软开发数据库应用程序的数据库访问技术。它被设计用来同新的数据库访问层OLE DB Provider一起协同工作,以提供通用数据访问(Universal Data MySQL)。OLE DB是一个底层的数据库访问接口,用它可以访问各种数据源,包括传统的关系数据库。ADO封装了OLE DB程序中使用的大量COM接口,所以是一种高层访问技术。关于数据库管理系统和接口的原理如图2所示。
MySQL是一个快速、多线程、多用户的小型关系型数据库管理系统。它支持正规的SQL查询语言和采用多种数据类型,能对数据进行各种详细的查询等。MySQL提供了一全套的数据库创建和访问机制,通过很直观的方式就可以创建、访问、修改数据库的表和项,并且能建立它们之间的各种数据关系。MySQL系列从90年代就发展起来,经过了多年的反展,它已经成为非常成熟的技术,面向中小型企业级应用。
MySQL数据库的特点是数据库文件小而简单,不需要运行或者启动数据库服务进程就可以使用。通常MySQL数据库文件可以随网页文件一起方便地放在网站的目录中,正是由于这些特点,MySQL数据库通常被用来作为网站开发的数据库支持技术。
对MySQL数据库的管理采用图形化管理工具phpMyAdmin 。phpMyAdmin是一个用PHP编写的、基于Web的、跨平台的MySQL管理程序,支持简体中文,使用Web浏览器作为管理界面。通过phpMyAdmin可以进行绝大部分的MySQL操作,包括对数据库级操作,表级操作,以及数据管理等。
1.2.5 Apache技术
Apache是最流行的Web服务器端软件之一。快速、可靠、可通过简单的API扩展,Perl/Python解释器可被编译到服务器中,完全免费,完全源代码开放。
Apache服务器拥有以下特性:1支持最新的HTTP/1.1通信协议拥有简单而强有力的基于文件的配置过程;2 支持通用网关接口;3 支持基于IP和基于域名的虚拟主机;4 支持多种方式的HTTP认证;5 集成Perl处理模块;6 集成代理服务器模块;7 支持实时监视服务器状态和定制服务器日志;8 支持服务器端包含指令(SSI);9 支持安全Socket层(SSL);10 提供用户会话过程的跟踪; 11支持FastCGI;通过第三方模块可以支持Java Servlets。
1.2.6 JavaScript语言
JavaScript语言是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用它的目的是与HTML超级文本语言、JavaApplet(Java小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互作用,从而达到开发客户端应用程序的目的。JavaScript是通过嵌入或调入在标准HTML语言中实现,它的出现弥补了HTML语言的缺陷。
在JavaScript语言的配合下,能够运用PHP技术开发出非常漂亮而且交互性强大的动态Web网站来.
2 系统可行性分析设计
2.1 开发的目的和背景
1、编写目的
可行性分析主要介绍开发项目的一些背景,系统的各方面可行性,从技术、本系统的前景以及当前个人博客的特点和需求等方面展示本系统的优势和限制,主要对象是网络中的上网用户,以便作出正确的后继设计与开发决策。
2、项目背景
写日记、文章一直以来都作为很多人表达自己感情,展示自己才华以及与外人沟通的重要方式,也成为了很多人生活中的重要部分。过去人们都是靠纸和笔来实现,甚至到之后有了电脑,也最多用文本编辑软件来写,最后还是得通过人工交换自己所写的东西,无论是纸张作为载体还是电子存储设备作为载体。这样极大缩减了交流的范围和速度以及交流的频度。随着网络的开速发展,它已经走入大众生活,所以自然而然诞生了个人博客这样一个新兴事物,它不仅仅能取代前面所说的功能,还能加入图片、音乐,而且使得作者更能无所拘束地生动地写出自己想写的,旁人也能非常便捷地阅读并且加以评论,并且它还能作为展示个人个性的窗户。更重要的是网络个人博客利用网络的巨大优势,可以非常快捷、广泛而没有界限地自由交流。交流速度快、交流范围广以及可以让网络中任何人浏览、评论是博客的最大特点,正是有了这些特点,个人博客现在已经成为很多人生活中必不可少的一个部分,它让更多人了解作者的心声,方便了人与人之间的沟通和交流。
2.2 系统目标和研究方法
1、系统的目标
该目标主要是结合与传统系统(即传统以纸张或者磁盘、光盘为载体的写作模式)的比较而定。
(1)人力和设备的节省
传统系统主要是通过人力写作,并且载体是纸张或者磁盘、光盘。而通过本系统,可以节省一定写作人力,并且利用网络存储方式,节省了纸张资源和笔墨资源或者磁盘、光盘资源的使用。
(2)界面美观和便捷的提升
本系统相对传统系统而言,利用了多媒体的各种视觉效果,可以方便加入图片和背景以及表情,有明显的界面美观和直观的优势。
(3)编辑修改的提升
本系统可以使对文章或者一些图片背景等的编辑修改变得非常容易,非常便捷和快速。只用修改局部,不用返工,并且不会留下视觉瑕疵。
(4)交流广泛性和速度的提升
通过网络这种媒介,使得文章、日志的交流变得非常广泛,不会受到地域和世界的限制,世界各地任何人都可以享受交流的服务。并且交流的速度比传统更加快速方便,不通过传统载体的传递。
2、可行性研究方法
(1)调研传统系统效率和特点
通过调研和对比传统系统的工作方式和特点,发现效率和实用性的差距。通过理论和现实技术发展的特点和要求,估算和提出效率、功能的提升。
(2)参考目前已有的网站和案例
如今博客在网络上比比皆是,可以参考和学习已有的一些优秀个人博客的特点和成功之处,来发现传统系统需要改进的地方和新的开发入口。
2.3 传统系统的分析
1、处理流程
传统系统处理流程(总体功能级数据流图)如图3所示,该图给出了传统方式的写作文章以及交流的方式和流程途径。
图3 传统系统处理流程
传统系统的数据流图如图4所示,该图主要给出了传统的以纸张或者磁盘为载体的文章、日志写作和交流的数据流程。
图4 传统系统数据流图
2.4 所要开发的系统的分析
对所要开发的系统的分析是从系统的描述和优越性,用开发的系统的处理流程和所开发系统的数据流图(DFD)来说明的。
1 系统的描述和优越性
该系统是适应当前网络特点和个人个性的情况下开发的个人博客,主要用于文章和日志的写作以及交流评论。其主要特点在前面的绪论和2.1.2已经有详细的介绍。
系统的优越性主要体现在编辑的便捷和修改的方便,以及文章的多媒体性和生动性,还有就是交流的广泛性和快速。详细情况在绪论、背景以及在2.2.1已有介绍。
2 处理流程
所开发的系统处理流程(总体功能级数据流图)如图5所示,该图给出了所要开发系统的系统工作、写作文章和文章交流的方式以及流程途径。
3 数据流图
所开发系统的数据流图如图6和图7所示,它们都是进一步分解后的数据流图。其中图6是用户管理的功能分解数据流图,而图7是文章管理以及评论的功能分解数据流图。图7涉及到用户文章和评论事务和数据库的频繁存储交互,体现了个人博客中文章、日志发表和评论的功能,是个人博客系统中比较主要的一项事务过程。
图6 系统数据流图-用户权限/管理
图7 系统数据流图-文章发表/评论
2.5 系统的其它可行性
前面主要运用了系统流程图和数据流图,通过对传统系统和要开发的系统分析了系统开发的可行性,下面将从其它一些辅助可行性来进一步分析和说明。
本系统主要由PHP作为主要开发技术,PHP已经流行和发展了数年,技术相对比较成熟,开发系统稳定可靠。
系统采用优秀的关系型数据库管理系统MYSQL作为后台数据库,能和Windows以及当前各种系统很好的兼容搭配。
其它辅助网站设计的技术相当丰富,相应开发环境和工具也一应俱全,比如用于网页界面设计的Dreamweaver CS3,还有一些图形处理软件如Photoshop CS2等都是相当成熟和简便的开发工具。
所开发的系统基本能满足个人博客的功能要求和展示博客的特点风格,在处理运算速度、存储量以及响应时间上完全能满足系统要求。
现在网络发展迅速,上网人数众多,博客作为个人个性和情感的展现舞台,相信有非常广阔的发展和应用空间。
系统所采用的技术和平台都是比较成熟和已经发展数年的,目前的硬件配置一般都足以满足系统的运行要求。
系统的基本硬件要求:网络中的服务器(服务器要求能提供空间和支持动态网络技术以及MySQL数据库)、客户端电脑(具有基本多媒体功能和设备)、支持PHP架构的工作和系统平台(WindowsXP)、支持PHP架构的能处理动态网页技术的浏览器(IE6.0以上等具备解释PHP技术的浏览器)。
2.6 可行性结论
综上所述,作为毕业设计的一个项目,简要讨论分析了系统的各种可行性,并且各项可行性上完全满足开发要求,可以开始进一步的工作。
3 系统需求分析和概要设计
3.1 系统需求分析
系统需求分析是现代软件工程应用于系统开发的一项重要环节,通过需求分析可以明确系统的各项需求和功能,根据这些需求和功能可以更好地指导下一步的系统开发和设计,避免了在设计之后对需求的变更而导致的大量返工。
3.1.1 开发背景
过去很多人都喜欢写文章写日记以及交流自己的文章和作品,以求实现相互间的沟通、展现自己的才华和让别人了解自己的想法观点。现在的网络已经成为人们生活中不可或缺的一个元素,所以自然而然诞生了个人博客这样一个新兴事物,它不仅仅能取代前面所说的功能,还能加入图片,而且使得作者更能无所拘束地生动地写出自己想写的,旁人也能非常便捷地阅读并且加以评论,并且它还能作为展示个人个性的窗户。个人博客现在已经成为很多人生活中必不可少的一个部分,方便了人与人之间的沟通和交流。
3.1.2 系统实现目标概述
基于个人博客以上的特点,本系统要实现个人博客的主要基本功能有主界面,用户注册,注册用户登录发表文章(心情、日志),用户登录/退出,游客发表评论,分页浏览文章和评论等。这里其中比较主要的是区分了个人博客的注册用户和游客。注册用户可以在任何时候写下自己的主张,记录下自己的点点滴滴。而游客主要的权限是阅读博客所有注册用户写的文章,阅读后可以发表评论和留言,还可以分页浏览所有注册用户上传的图片。以上是个人博客的系统功能目标,当然由于个人博客的网络流行特点以及个人个性的展示,还适当要求界面比较漂亮轻快,直观便捷,操作方式简单以及人性化。
3.1.3 系统功能需求
根据对系统的特点和应用的分析,可以得到本系统主要有如下功能:
(1)用户注册和登录
这部分功能又分为用户注册、用户登录、用户退出三个部分。
用户注册:游客将个人的信息存储到博客网站的数据库中,注册时要求填写用户的各种详细信息,包括id、Password、Email、性别、生日、其它辅助信息。凡是符合要求的游客都可以注册成功,成为本博客的正式用户,。系统接受这些信息并存储在服务器端的数据库中。
用户登录:主要用于验证博客网站用户信息的真实身份,以便对博客网站进行管理和维护。通过注册后的用户用个人注册的用户名,密码登录到网站。网站检测用户的用户名,密码并给予其相应的权限对博客网站进行操作。
用户退出:已经登陆的用户可以退出,释放自己所占有的各种信息资源。
(2)文章管理
文章管理主要有文章的发表、查询、浏览、评论和删除功能。
博客的系统管理员除了可以查询、浏览和评论文章外,还可以对系统中的所有文章以及评论进行修改、删除操作。这些维护和管理拥有最高权限,并且系统自动更新在服务器端数据库中的数据。
文章的发表:注册用户可以发表自己的文章,文章包括主题、正文、表情、图片等信息,作者通过各种元素来展示自己的想法和思想。系统接受这些信息并且存储在服务器端的数据库中。
文章的删除:注册用户可以删除自己已经发表的文章内容和各项信息,系统自动在服务器端数据库中删除这些记录。
文章的浏览:游客和注册用户根据所获得的用户权限获取服务器端数据存储的各篇文章并且浏览阅读文章的所有信息,包括标题、正文、表情、图片以及其它读者的留言评论。
文章的评论:文章的读者可以评论和回复所阅读的文章,发表自己的看法。系统自动将这些评论存储在服务器端的数据库中,并且可供博客作者以及其它读者浏览。
文章的查询:注册用户可以按文章题目或作者来查询想要查的文章。
(3)图片管理
图片管理有添加,浏览、删除和查询功能。注册用户可以添加自己喜欢的图片,还可以查询和浏览系统中的所有图片信息。游客只能浏览博客系统中的所有图片。系统管理员拥有以上的所有权限,除此之外还可以删除图片。
(4)朋友圈管理
注册用户可以添加自己的朋友信息到朋友圈,可以再浏览和查询朋友信息的前提下,进行删除朋友信息操作。
(5)管理员管理
博客的系统管理员可以对系统中所有的注册用户进行帐户和权限管理,包括修改用户所有的权限,查询用户信息以及删除用户信息;还可以对最新公告进行添加,删除管理。
3.1.4 系统需求管理规划表
根据以上对系统的需求分析,我们可以得到一个更为简明扼要的系统需求管理规划表,本表罗列了系统的各项主要功能,并且对其分类,配有间断描述,最重要的室给出了各个功能需求的优先级,优先级的高低表示了功能实现的迫切程度和必要程度。优级高的代表该功能是系统很重要的功能,需要重点实现。如表1所示。
表1 系统需求管理规划表
需求分类 | 需求名称 | 描述 | 优先级 |
功能性需求 | 用户注册 | 用户可以注册自己的各项信息 | 高 |
用户登录/退出 | 用户可以登录或者退出系统 | 高 | |
用户权限管理 | 博客管理员可以修改用户的权限以及删除用户账号 | 高 | |
文章的添加 | 注册用户可以发表文章,包括表情、图片、链接等 | 高 | |
文章的删除 | 博客管理员可以删除任何一篇文章 但注册用户只能删除自己写的文章 | 中 | |
文章列表 | 对文章按一定类型或者顺序用列表方式展示题目 | 中 | |
浏览文章 | 博客文章读者可以分页浏览文章 | 高 | |
评论文章 | 博客文章读者可以对文章进行评论和回复 | 高 | |
评论的删除 | 博客管理员可以删除某篇文章的某条评论 | 中 | |
朋友信息添加 | 注册用户可以添加自己朋友的信息 | 高 | |
浏览朋友信息 | 注册用户可以浏览自己朋友的信息 | 高 | |
查询朋友信息 | 注册用户可以查询自己朋友的信息 | 高 | |
添加图片 | 注册用户可以上传自己喜欢的图片,与人分享 | 高 | |
浏览图片 | 图片的浏览者可以分页浏览图片 | 高 | |
删除图片 | 博客管理员可以删除博客网站中的某张图片 | 中 | |
查询图片 | 用户可以查询图片 | 高 | |
特征和前景 | 预算 | 项目开发成本控制在毕业设计范围内 | 低 |
系统目标 | 设计和实现个人博客系统,达到毕业设计的目标和要求 | 高 | |
非功能性需求 | 平台限制 | 基于Windows XP ,Apache2.2.4以上,PHP+MySQL数据库 | 高 |
操作方式 | 全部操作都能基于浏览器进行 | 低 | |
硬件需求 | 网络服务器,P3以上、128MB以上多媒体工作站 互连网络连接以及相应设备 | 中 |
3.1.5 系统性能要求
(1)系统可靠性要求
① 系统对用户操作有相应提示,并且可以检查用户输入的各种数据的合法性,对于不合法的数据屏蔽并且提示用户,以避免由于越界或者格式错误而造成的系统错误甚至崩溃。
② 系统在对于数据库操作时候,数据库有一定的约束机制。特点是对于外键(FK)而言,通过“级连”(Cascade)和“参照”(Reference)来保证数据的完整性。
③ 系统能够应对各种特殊操作情况和出错情况,并且给出相应提示。
④ 系统能够有一定的安全和保护措施,以保证网站的正常运行,避免文件和数据库遭到意外事件的破坏而导致网站瘫痪。
(2)系统时间要求
在不考虑网络状况情况下,系统的响应时间应该相当迅速,数据的存储和处理以及返回过程应该满足用户的等待需求,一般控制在0.2s以内。
(3)系统适应性要求
系统应该兼容Windows操作平台、MySQL数据库以及IE浏览器。
(4)系统并行处理能力要求
系统能够支持同时间多用户的访问需求,并且保证运行的相对顺畅。
(5)系统精度要求
时间精度到达秒为单位,其它数据精确到小数点后2位。
3.2 概要设计
概要设计也是软件工程中一个重要的步骤和环节,根据前面的需求分析所得到的系统所要实现的各种功能,概要设计对其进行进一步的模块划分,以确定各个功能由所设计的模块来实现,这样可以构架出一个系统的机构框架,便于后面的具体数据库设计详细设计的实现。
3.2.1 系统体系结构
基于B/S结构的个人博客网站系统,应由终端(用户主机/浏览器)、WEB服务器、数据服务器构成。个人博客网站的核心是中间的接入服务器和应用服务器部分。个人博客网站的总体结构图如图8所示:
图8 博客网站总体结构
3.2.2 系统模块划分
根据前面对系统的需求分析,可以得到系统的模块划分如下:
(1)博客首页模块包括如下主要组成部分:
页整体布局:对于博客的首页风格安排并且布局。
日历:方便用户看时间和日期。
用户登录和注册区:主要是用户注册和登录,在成功登录以后列出用户所拥有的可操作模块。
博客最新日志显示:按时间顺序显示博客中最近的文章标题信息。
最新推荐图片:按时间顺序显示博客中最新上传的图片。
最新公告:上下滚动显示管理员发表的最新公告。
(2)文章管理模块
添加博客文章:已登录的博客注册用户可以发表文章、随笔和日志,内容包括标题、正文、图片、表情等信息。在此前提下,只有以系统管理员身份登录的用户才可以删除博客中的任何文章,系统自动更新服务器端的数据库。
查看博客文章:文章作者可以按搜索条件有选择的查看想要阅读的文章,并可以对它进行评论,但没有删除的权限。
浏览我的文章:只显示作者自己的全部文章,在这个模块的前提下,文章作者有删除文章和评论的权限。
(3)图片管理模块
添加图片:已注册用户可以本地上传图片。
查询图片:登录用户可以按搜索条件有选择的查看图片,但没有删除的权限
浏览图片:分页显示系统中的全部图片。
(4)朋友圈管理模块
注册用户可以添加自己的朋友信息到朋友圈,可以在浏览和查询朋友信息的前提下,进行删除朋友信息操作。
(5)管理员管理模块
博客的系统管理员可以对系统中所有的注册用户进行帐户和权限管理,包括修改用户所有的权限,查询用户信息以及删除用户信息;还可以对最新公告进行添加,删除管理。
3.2.3 系统功能划分组织结构图
根据以上对系统功能模块的划分和设计,可以得到系统功能模块图如图9所示,该图给出了详尽的模块划分和模块组织结构,能够直观展现系统的功能结构关系。
图9 系统功能结构图
3.2.3 运行环境
(1)用户界面
用户需要网页浏览器来使用该系统,界面简洁、美观、友好,具备人性化特点,各种操作有提示信息和错误信息。
(2)软件环境
服务器端:WindowsXP服务器,Apache服务程序,MySQL数据库以及其相应的ODBC。
客户端:Windows XP系统以及IE6.0以上浏览器。
(3)网络带宽
服务器对外网络带宽1M以上,客户端拥有连接互联网的设备和服务。
4 系统数据库设计
MySQL数据库由瑞典MySql公司开发和维护的一个精巧的SQL(Structured Query Language,结构化查询语言)关系型数据库管理系统(DBMS)。MySQL数据早在90年代中期就开始出现,经过近10年的发展,它已经成为一个功能相对强大,技术非常成熟,应用广泛的数据库。由于它的强大功能、灵活性、丰富的应用编程接口(API)以及精巧的系统结构,受到了众多程序员和企业级用户的青睐,特别是它的数据库文件小巧,存放便捷,数据库管理系统运行简单,为建立基于数据库的动态网站提供了强大动力,并且得到了广大网站开发人缘的认可。
MySQL数据库提供完善的SQL-92标准的结构化查询语言,如select、delete、insert、update语句。通过MySQL在操作系统上建立的ODBC可以轻松将这些SQL语句翻译成为相应的MySQL数据库管理系统指令并对数据库进行管理。如图10所示。
图10 MySQL数据库管理系统原理
作为关系型数据,MySQL完全支持对于各种数据库对象的管理和便捷操作,这里包括表(Table)、视图(View)、存储过程(Stored Procedure)和触发器(Trigger)等。MySQL数据库提供完全的可视化管理环境,能够直观便捷而快速地对数据库的各种数据库对象和元素进行修改和管理。
当然,MySQL数据库也完全支持ADO(ActiveX Data Objects)数据库应用程序的数据库访问技术。ADO它被设计用来同新的数据库访问层OLE DB Provider一起协同工作,以提供通用数据访问(Universal Data MySQL)。OLE DB是一个底层的数据库访问接口,用它可以访问各种数据源,包括传统的关系数据库。ADO封装了OLE DB程序中使用的大量COM接口,所以是一种高层访问技术。所以MySQL非常适合PHP技术开发动态网站。
4.2.1 概述
根据第三部分的需求分析和概要设计,可以设计出相应的系统所要使用的数据库表。博客系统所要存储的数据项和数据量相对比较复杂和庞大,所以首先确定这些数据库表的设计一般是一个表存储一个实体或者对象的相关信息,这样分析和设计数据库就相对简单。对于不同的对象或实体,根据具体系统需要和未来扩展,可以适当细分。另外扩充信息和动态变化的信息分开放置在不同的表里。
当然重要的表都会设置一个唯一标识的主键,这个主键不是实际运用中的任何信息项,只用来唯一标识一个数据项,一般用自动编号的数字。
经过需求分析和概要设计,在MySql数据库管理系统中建立名为db_tmlog的数据库,系统所有应用的数据信息将存储在该数据库中,数据库中建立以下5种不同专题的数据表,分别为:用户表(tb_user)、文章内容表(tb_article)、文章评论表(tb_filecomment)、朋友圈表(tb_friend)、图片信息表(tb_tpsc)五个表。
这些表基本上都是一表负责一个实体或者对象的各种信息存储,它们协调工作,以实现个人博客系统对数据存储的要求。
注意,下面各表中数据类型说标有*表示是主键。
4.2.2 用户表
系统主要为了满足网络用户使用博客的需要,由于网络的自身特点,以及网络上联系工具众多,所以用户的信息的设置相对较多,这里主要的是用户的ID编号,这个是用来唯一确定用户的标识,是用户表的主键。管理员及用户标记主要用来设置管理员和用户的权限,不同的权限能得到不同的应用功能。还有用户名、用户密码都比较重要。用户表结构如表2所示。
字段名称 | 数据类型 | 说明 |
id | Int(20) * | 自动编号 |
regname | Varchar(20) | 用户名 |
regrealname | Varchar(20) | 真实姓名 |
regpwd | Varchar(20) | 用户密码 |
regbirthday | date | 用户生日 |
regemail | Varchar(100) | E-mail地址 |
regcity | Varchar(100) | 所在城市 |
regico | Varchar(50) | 人物表情 |
regsex | Varchar(4) | 性别 |
regqq | Varchar(40) | QQ号 |
reghomepage | Varchar(100) | 个人主页 |
regsign | Varchar(200) | 个性化签名 |
regintroduce | text | 自我简介 |
ip | Varchar(20) | 用户IP |
fig | int(1) | 管理员及用户标记 |
4.2.3文章内容表
本表主要用来存放文章的各种信息,这也是博客系统中非常重要的一个表。其中文章ID编号为主键,唯一标识一篇文章。其它信息详见表3所示。
表3 文章内容表
字段名称 | 数据类型 | 说明 |
id | Int(10) * | 自动编号 |
title | Varchar(20) | 文章标题 |
face | Varchar(20) | 人物表情 |
content | text | 文章内容 |
auther | Varchar(20) | 文章作者 |
now | datetime | 发表时间 |
4.2.4 文章评论表
文章评论表主要存储对一篇文章的评论的各种信息,文章的评论信息相对于文章的信息而言要简单一些,主要包括唯一标识评论的id编号,是主键。表的结构如表4所示。
字段名称 | 数据类型 | 说明 |
id | Int(4)* | 自动编号 |
fileid | Int(4) | 所评论的文章id号 |
usename | Varchar(20) | 评论人 |
content | text | 评论正文 |
datetime | datetime | 评论时间 |
4.2.5图片信息表
该表主要用来存储博客系统中发表的照片、图片。其中照片id是唯一标识图片的主键,表的详细结构如表5所示。
字段名称 | 数据类型 | 说明 |
id | Int(10) * | 自动编号 |
name | Varchar(30) | 图片名称 |
url | Char(100) | 以文件的形式存储图片 |
author | Varchar(20) | 图片发表者 |
scsj | date | 上传日期/时间 |
4.2.6 朋友圈信息表
该表主要用来存储某用户的朋友圈信息。其中id是唯一标识朋友信息的主键,表的详细结构如表6所示。
字段名称 | 数据类型 | 说明 |
id | Int(4) * | 自动编号 |
name | Varchar(50) | 朋友名称 |
sex | Varchar(10) | 性别 |
bir | date | 生日 |
city | Varchar(50) | 所在城市 |
address | Varchar(100) | 家庭住址 |
postcode | Varchar(6) | 邮政编码 |
| Varchar(50) | E-mail地址 |
tel | Varchar(20) | 电话号码 |
handset | Varchar(20) | 手机号码 |
| Varchar(20) | QQ号 |
username | Varchar(20) | 用户名 |
4.2.7 数据库ER关系图
数据库中的表有用户表、文章信息表、文章评论表、图片信息表、朋友圈信息表。本系统数据库的5个表的ER图如图11所示。
图11 数据库中5个表的ER图
5 系统的详细设计
详细设计是整个系统设计中,最重要的一个步骤。下面对系统的主要功能模块进行详细的介绍。
博客网站的流程图如图12所示。
图12 博客网站流程图
5.1 首页面及主要页面设计
1、博客网站的文件架设图如图13所示:
图13博客网站文件架设图
2、主要页面如表7所示:
表7 主要页面清单表
文件名 | 说明 |
index.php | 普通用户登录页面,用户只要输入已注册的用户名和密码 |
Register.php | 新用户注册页面 |
file.php | 用户登录后的页面,同时也是添加博客文章页面 |
query.php | 查询博客文章页面 |
myfiles.php | 显示我的文章页面 |
add_pic.php | 添加图片页面 |
browse_pic.php | 浏览图片页面 |
query_pic.php | 查询图片页面 |
friend.php | 朋友添加页面 |
browse_fri.php | 浏览朋友信息页面 |
query_friend.php | 查询朋友信息页面 |
queryuser.php | 查询用户信息页面(只有管理员有权限查看) |
browseuser.php | 浏览用户信息页面(只有管理员有权限浏览) |
managepub.php | 公告管理页面(只有管理员有权限查看) |
5.2 系统主要功能模块开发
5.1.1首页模块
1、博客的首页是相当重要的,这不仅仅是整个博客的第一影响,而且是展现个人博客系统的布局、美工、风格和个性的窗口。它包括博客最新日志区、日历和时钟区、最新图片上传区、最新公告区,用户登录、注册区。把这几个界面区合理的组合是布局和美工的重要之处。如图14所示:
图14 个人博客首页
首页模块index.php中包括了数据库连接文件conn.php,首页的布局和美工设计使用到了Dreamweaver CS3网页开发工具作为辅助开发,运用这个可视化开发工具(Visual Development Tool)可以快捷地设计出Web的界面,自动生成相应的HTML代码,并得到的HTML代码直接嵌入到index.php文件中。
2、用户注册子模块是在“博客首页”的前提下操作的,主要由register.php完成。用户点击“博客注册”进入用户注册界面,然后阅读用户注册协议,确认后可以到达正式注册页面,否则返回。在正式注册页面中用户填写各种信息,包括姓名、密码等。用户的“密码”和“确认密码”必须一致才能注册,否则提示用户两次输入密码不一致。一切信息正确后系统会在数据库中为该用户自动生成一个用户ID编号,这个编号是自动递增的生成,用来唯一标识一个用户。具体流程图如图15所示。
图15用户注册流程图
3、用户登录和退出
用户登录同样是在 “博客首页”的前提下操作的,经过注册的用户可以选择登录帐户,已经登录的用户也可以选择退出帐户。登录时首先客户端发送登录请求给服务器端,服务器端通过数据库检查该用户名是否存在,如果存在,检查密码是否正确,在密码也正确情况下系统服务器端给予登录响应。登录后的用户将获得响应权限的功能。
而用户退出是在用户登录的前提下操作的,这时已经登录的用户选择退出,即可退出服务器并且释放Cookie和Session中的相关信息和资源。具体流程图如图16所示。
图16用户登陆和退出流程图
5.1.2 文章管理模块
文章管理模块是本系统中最基础、最复杂的一个核心功能模块。文章管理模块可以分为添加博客文章、查询博客文章、发表文章评论、删除博客文章/评论4个功能部分。
( 1)添加博客文章
发表博客文章主要是提供用户发表和张贴个人的文章或是对某些事物的独到见解等,通过发表的文章,其他用户可以发表相关的评论,以便能够同来访者进行交流,是一个展现自己的网络交流平台。
这个功能主要由file.php完成。发表文章后,提交博客文章信息到数据处理页(check_file.php)并保存在相应的数据库中。在保存过程中,系统会在数据库中为该文章自动生成一个文章ID编号,这个编号是自动递增的生成,用来唯一标识一篇文章。具体流程图如图17所示。
图17发表文章流程图
(2)文章的查询
发表文章子模块主要由query.php实现。在query.php页面中,查询的功能区如图18,在”查询条件”后的下拉列表框中选择查询条件。在“关键字“后面的文本框中输入查询条件所对应的查询关键字,既可快速检索到相应的数据信息。如果存在,输出数据信息到浏览器;否则,弹出警告信息。
注意:只有系统管理员具备删除的操作权限,如果是普通的博客用户,在查询到的数据信息页面中是不会显示“删除“超级链接。
图18文章查询的功能区
(3)发表文章评论
发表文章评论是在“查询博客文章“的前提下操作的。当页面显示查询的文章信息后,可以点击“发表评论”超级链接,既可跳转到comment.php页发表评论,如图19。
图19发表评论页面
(4)删除博客文章/评论
这功能若是在“查询博客页面” 的前提下进行操作的,删除权限都是系统管理员的操作权限。若是在“我的文章”的前提下进行的操作,那删除权限是属于普通用户的操作权限。(页面和图19类似)
5.1.3 图片管理模块
图片管理主要实现对图片的添加、删除、浏览和查询操作。
- 添加图片
单击【上传】按钮后,图片将以文件的形式传到数据库,并保存在images文件中的upload文件夹中。上传的设计流程和页面分别如图20和图21所示。
图20 图片上传设计流程
图21 添加图片
- 浏览图片
所有上传成功的图片文件循环显示在客户端的浏览器上,并在每一条的记录后面分别加上用于查看图片文件信息的超级链接按钮,在将所有记录进行分页显示。
- 查询图片
图片的查询功能和文章的查询功能类似,这里不再赘述。同样地只有系统管理员具备删除的操作权限,如果是普通的博客用户,在查询到的数据信息页面中是不会显示“删除“超级链接。具体流程图如图22所示。
图22 图片查询流程图
- 删除图片
只有以系统管理员的身份登录,才会显示“删除图片”的功能。删除图片的功能是系统管理员在“查询图片”和“浏览图片”的功能模块的基础上实现的。
5.1.4 朋友圈管理模块
朋友圈管理主要针对用户交友圈的信息进行管理,其中添加、浏览、删除朋友圈的功能与文章、图片管理的功能类似,这里不再赘述。下面重点讲解查询朋友信息功能。
朋友信息的查询与文章、图片的查询略有不同,这里查询的是该用户交际圈的信息,它查询不到所有用户的交际圈的信息。
5.1.5管理员管理模块
管理员管理是对注册的用户信息进行管理的模块。当用户是以系统管理员的身份登陆网站后,那么将拥有用户管理的权限,这时菜单栏中的“管理员管理”处于显示状态(如是普通用户,该模块不会显示)。该模块主要分为查询用户信息,浏览用户信息和公告管理。其中用户的删除是建立在“查询用户信息”和“浏览用户信息”的基础之上实现的。
6系统配置和发布
运用PHP对系统进行开发和应用,必须首先安装和配置好相应的开发环境和支持组件。本章主要介绍系统相关环境的配置和开发后系统的发布情况以及运行效果。
6.1 开发和应用环境配置
下面简要从PHP架构的安装,Apache服务器的配置,以及MySQL数据的设置介绍了系统相关环境的配置和安装。
6.1.1安装Apache2.2.6
运行安装程序 → 安装协议(选择接受协议)→ next →填写服务信息→前面的内容可填可不填,安装类型(选择自定义安装 Custom)→自定义安装设置(如下图23)修改安装目录,可以放在如“E:\Apache2”中 → 安装确认。
图23自定义安装设置
安装完毕后,测试在浏览器地址栏输入 http://localhost,回车显示 “It works!”,表示Apache安装成功。
6.1.2 安装PHP5.2.5
1,解压php-5.2.5-Win32.zip到即将安装PHP的目录,即“E:\php5”。这里主要是拷贝一些以后需要的组件。
2, 运行安装程序 → 接受安装协议 → 选择安装目录,可以为“E:\php5”→ 选择Web服务器设置,这里选择Apache2.2.x Module(因为装的Apache服务器为2.2.6)→ 选择Apache配置文件目录 (即E:\Apache2)→安装设置,点Extensions,尔后NEXT → 准备安装
3,对Apache进行设置,建立studyphp 子目录,即“E:\studyphp”目录 → 修改“E:\Apache2\conf”下的文件“httpd.conf”。
搜索DocumentRoot "E:/ Apache2 /htdocs"把冒号中的E:/ Apache2/htdocs,替换成“E:/studyphp ";
搜索<Directory " E:/ Apache2 /htdocs "> 把冒号中的E:/ Apache2 /htdocs,替换成“E:/studyphp ";
上面这两行可以不改,那么以后添加的论坛程序就要放在E:/ Apache2 /htdocs下面,就是以这个目录作为根目录。改的目的就是不想把所有网站程序都放在Apache的目录下面。
搜索DirectoryIndex index.html 增加为DirectoryIndex index.html index.php
上面这句为了能够运行缺省的页面,这里增加了 index.php作为缺省页面。
修改完毕,保存,并重新启动Apache服务器,也许会启动不成功,这时要不按Ctrl+Alt+Del删除Apache相关程序,要不重新启动计算机。
4,测试在“E:/studyphp”目录中,可以使用笔记本编辑文件 <?php phpinfo(); ?> 并在保存文件时改名为test.php。在浏览器地址栏中输入 http://localhost/test.php,显示如下图24,表示安装Apache和PHP成功。