杨德琴毕业论文(定稿).doc
分类号:TP315 学校代码:11460学 号:06413129南京晓庄学院本科生毕业论文 PHP学习网的设计与实现Design and Implementation of PHP Learning Website 所在系(院):数学与信息技术学院 学 生:杨德琴 指 导 教 师:谢 静 研究起止日期:二九年十一月至二一年五月 二一年五月 学位论文独创性声明本人郑重声明:1. 坚持以“求实、创新”的科学精神从事研究工作。2. 本论文是我个人在导师指导下进行的研究工作和取得的研究成果。3. 本论文中除引文外,所有实验、数据和有关材料均是真实的。4. 本论文中除引文和致谢的内容外,不包含其他人或其它机构已经发表或撰写过的研究成果。5. 其他同志对本研究所做的贡献均已在论文中作了声明并表示了谢意。作者签名:日 期:摘 要近年来,PHP网络编程语言发展迅速,逐渐成为网络开发的主流语言之一。建立一个PHP语言的学习网站,为热衷PHP语言的朋友提供一个互相学习,互相交流的平台是很有必要的。PHP学习网为PHP学习爱好者提供PHP教程,文献书籍,学习网站,资源下载,论坛交流等服务。本文运用软件工程的设计思想,使用当前流行的LAMP(Linux+Apache+MySQL+PHP)组合,设计了一个简单实用的PHP学习网站。本文主要阐述了系统的开发背景,介绍了PHP学习网站实现的开发环境,描述了系统实现的结构框架。在系统实现部分,详细介绍了本文的关键技术。关键词:PHP学习网; PHP教程 ; 文献书籍 ;论坛AbstractNowadays,PHP network programming language has become one of the mainstream languages of the network development with its rapid development. It is quite necessary to estabish a PHP learning website to provide a mutual study as well as mutual communication forum for the PHP language lover.PHP learning website provides services like PHP tutorial, literature books, study websites, source download and forum communication and so on for PHP language lover. The paper uses the design of Software Engineering and the popular LAMP(Linux+Apache+MySQL+PHP) combination to desgin a simple but useful PHP learning website.The paper mainly explained the background of the system development, introduced the development environment of PHP learning website and described the structural framework of the system. In the part of the system implementation, this paper introdeced the key technologies of the system in detail.Key Words: PHP learning website; PHP tutorial; literature books; Apache; forum目 录第一章 绪论11.1 研究背景11.2 学习网站的现状11.3 学习网站存在的问题11.3.1 内容重复率高,资源质量不过关11.3.2 网站欠缺管理,更新速度慢21.3.3 缺乏个性化的学习评价与指导21.3.4 使用率低,交流功能没有充分发挥作用21.4 本文的组织结构3第二章 系统开发环境42.1 PHP语言简介42.1.1 PHP的特点42.2 MySQL简介52.2.1 MySQL的特点52.3 JavaScript语言简介62.3.1 JavaScript的简介62.3.2 JavaScript的特点62.4 HTML语言简介62.4.1 HTML语言的特点72.5 Apache环境配置72.6 PHP环境配置82.7 MySQL环境配置82.8 小结9第三章 系统分析与设计103.1 需求分析103.2 总体设计103.2.1 游客/未登录用户模块113.2.2 登录用户模块123.2.3 管理员模块123.3 数据库设计与实现133.3.1 数据库设计原则133.3.2 数据库概念结构设计143.3.3 数据库逻辑结构设计163.4 本章小结18第四章 系统功能的具体实现194.1 系统前台设计194.1.1 系统前台首页194.1.2 会员登录设计204.1.3 会员注册设计214.2 系统后台设计244.2.1 系统后台登录设计244.2.2 系统后台首页设计254.2.3 后台教程管理264.2.4 数据分页功能284.3 小结29第五章 总 结30致 谢31参考文献32第一章 绪论1.1 研究背景随着计算机技术和通信技术的迅猛发展,计算机网络已深入到人们的工作、生活与学习中;我们在网络上办公、在网络上购物、在网络上学习;其中网络在线学习在近年已经是传统面授学习有力的补充,我们不再局限于天天跑到教室,在家里一样可以完成相关内容的学习,或者在完成系统面授的基础上回家再利用在线学习进行深化并与授课老师进行在线交流等。总之通过网络,人们可以更快更方便地找到自己想要的资源,更有效的利用网络去辅助自己的学习。各种各样的学习网站的出现,不仅能使教师更方便地获取教学资源,更能为学生提供了一个学习的平台,让学生通过自主探究的方式提高自己的学习,PHP网络编程在晓庄已经有好几年的历史,我们在学习、授课、项目的基础上已经积累了大量关于PHP学习的资料,我们在论坛中也发过很多关于PHP与Linux的文章,帮助不少网友解决了相关技术问题,希望通过建立一个PHP学习网来帮助晓庄和全国爱好PHP的同学或者工作人员学习PHP。1.2 学习网站的现状随着Internet使用的普及,大量的学习网站也如雨后春笋般出现,人们很容易就能从一些大型搜索引擎中找出许许多多的学习网站,如在百度中输入“PHP学习网站”,就能得到约614,000个结果,可见学习网站的发展速度非常的快。而如前所述,学习网站的种类很多,除了按网站主要功能可分为资源型、论坛型、辅助学习型和综合型外,还可根据网站所包含的学科种类分为单学科型和多学科型,还可根据网站的内容而分为各种专题型的学习资源网站。各式各样的学习网站能为各种使用者提供更好更适合的帮助。几乎所有的学习网站都能为使用者提供丰富的文本资源,如教案学案、试题、论文等等。而随着网络的发展和人们需求的增长,部分的学习网站更着重于提供图片、视频和flash动画等多媒体资源,而近几年还出现了远程教学的网站。这不仅为教师的课堂教学提供了更好的资源,还可以让学生在课前和课后能以更多的方式去学习和理解课本的知识,而对于学习需要从微观和实验中理解的PHP知识来说,也显得更方便、更容易了。除了提供资源的功能外,部分网站还充分利用了互联网的优势,设置了论坛交流、在线测试、在线诊断、资源上传共享等功能模块,使学生在学习上能够得到多方面的帮助,也便于教师与教师之间、教师与学生之间、学生与学生之间进行沟通交流,也能使家长得到更多教育信息,帮助孩子的学习与升学等等。1.3 学习网站存在的问题1.3.1 内容重复率高,资源质量不过关学习网站都充斥着许许多多的资源,但极少数网站会对资源进行系统的整理与审查,这样就难以避免地导致资源内容的重复率高,质量低劣,甚至有些教案或试题还存在内容不全、错漏百出等毛病。而针对化学学科的资源,还存在着PHP程序写不规范、PHP知识不正确等科学性的错误。而且在PHP学习中占很大比重的程序书写,却只有极少数的学习网站有针对性的内容和板块对学生进行辅导。对于占网站内容比重如此大的资源板块,如果没有对质量进行好把关,那使用者很快就会对这个网站失去信心。1.3.2 网站欠缺管理,更新速度慢随着教育事业的发展,教材的版本和内容也在不断的改进,学生和教师都希望能够得到最新、最贴近课本内容的资源。但在调查过程中,有一半以上的网站更新速度很慢,有部分网站甚至在过去一两年都没有进行更新,也就是说这些网站已经处于无人管理的状态。而更新较快的网站也多数是隔几天更新一次,部分网站的更新周期更长达一周甚至一个月,而且也并不是网站内每个板块都有更新。而对于比较受欢迎的网站(如开心网)和热门网络游戏,更新速度都非常快,开心网几乎每天都进行更新,还把更新的内容发布在网站首页。持续的更新能让使用者对网站保持着新鲜感,尽管是很微小的更新,都能让使用者感到这个网站管理完善,具有使用价值。因此,想要网站可持续发展,及时的更新是必不可少的。另一方面,部分网站还存在结构不清晰,内容编排混乱,让使用者难以在短时间内搜索到自己想要的资料,有些网站难以打开甚至已经无法打开和正常使用了,这也反映出网站缺乏管理的问题。1.3.3 缺乏个性化的学习评价与指导对于学生来说,他们不仅仅希望能从网上获得好的学习资源,更希望能得到进一步的学习评价与指导。但现时国内的学习网站,基本上只为学生提供资源,而对于习题,也只是简单的给出一个答案,并没有更多的指导。我们都知道,对于数学、物理、化学等理科的学习,学生要学习的不是一个简单的答案,更重要的是要学会如何得到答案、学会分析和解决问题。在传统的教学中,教师能根据学生的学习情况给予合适的评价与指导,也能通过逐步的分析讲解让学生更容易理解学习内容。很多学习网站并没有很好的利用网络和技术的优势,只是简单的“课本搬家”,对学生的学习帮助不大;部分网站设置了在线测试和评价板块,但是往往评价技术不完善,方式单一,缺乏个性化的指导,甚至连简单的逐步解题分析(像Cramster学习网站中的解题指导)都没有,不禁让人觉得学习网站还比不上一本好的辅导书!因此,学习网站不但要从内容上下功夫,更要从使用者的需要出发,加强在线的评价功能,为使用者提供个性化的评价与指导,才能真正发挥学习网站的作用,才能更好的促进学习网站的发展。1.3.4 使用率低,交流功能没有充分发挥作用导致学习网站使用率低的原因,首先包含了上面阐述的三个问题。另一方面,部分的学习网站只是建设者为了上一节课而建立的,并没有作后续的管理工作,上完课了,网站就没有用了。总的来说,学习网站普遍存在缺乏趣味性、质量不高等毛病,让使用者失去了持续使用的信心。大部分的学习网站都设置了论坛的板块,供使用者进行互相交流和资源共享,但是这个板块的使用率却不高。Internet的出现,使人们的沟通交流变得简单,身处异地的人们通过Internet就能交流。可是很多学习网站中的论坛板块中,无论是帖子数还是浏览和回复的数量都不多,如百度中设置的“知道”板块,本来是非常好的一个建设,能帮助学生解决学习中的难题,但是其中提出的问题几乎没有人回答,长此下去也就没有人再提出问题了。导致这种现象的原因有很多,如使用者少、网站管理不完善等等,但是主要原因可能是网站缺乏对学生学习的评价与指导,缺乏趣味性,学生并没有在学习上得到真正的帮助。也就是说,使用这个网站并没有让人产生兴趣、共鸣和依赖性,交流当然就会少了。1.4 本文的组织结构本文的组织结构如下:1、绪论。综述了本文的研究背景,分析了当前学习网站的现状;当前学习网站存在的问题。2、系统开发工具(技术)介绍。介绍了本文开发所用的的工具,包括HTML,PHP,MySQL 和 JavaScript。3、系统开发环境介绍。介绍了本文开发所用的系统开发环境,简要介绍了LAMP(Linux+Apache+MySQL+PHP)开发环境,并对环境的配置进行了简要介绍。4、系统的设计与实现。介绍了PHP学习网站的思路并进行了需求分析,在需求分析的基础上进行了系统功能分析、系统功能模块设计以及数据库需求分析等相关方面;该部分是全文的主旨。5、系统功能模块具体实现。对开发中一些主要具体功能的实现进行描述。涉及到数据库详细设计,系统详细模块设计等相关知识。6、总结与展望。对整个论文及设计过程进行总结,指出系统设计过程的心得以及设计中存在的不足;后期还有待完善的地方等。 第二章 系统开发环境PHP学习网以LAMP(Linux+Apache+MySQL+PHP)作为平台,涉及到PHP语言、MySQL数据库、JavaScript语言、HTML语言。2.1 PHP语言简介PHP,一个嵌套的缩写名称,是英文 “超级文本预处理语言”(PHP: Hypertext Preprocessor)的缩写。PHP 是一种 HTML 内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的“嵌入HTML文档的脚本语言”,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。它可以比 CGI 或者 Perl 更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;与同样是嵌入HTML文档的脚本语言JavaScript相比,PHP在服务器端执行,成分利用了服务器的性能;PHP执行引擎还会将用户经常访问的PHP程序驻留在内存中,其他用户在一次访问这个程序时就不需要诚信编译程序了,只要直接执行内存中的代码就可以了,这也是PHP高效率的体现之一。PHP具有非常强大的功能,所有的CGI或者JavaScript的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。2.1.1 PHP的特点开放的源代码:所有的PHP源代码事实上都可以得到。 PHP是免费的。基于服务器端:由于PHP是运行在服务器端的,即使再多的用户,再复杂的程序也不会影响运行的速度。跨平台:PHP可以运行在UNIX、LINUX、WINDOWS下。 嵌入HTML:因为PHP可以嵌入HTML语言,所以学习起来并不困难。 简单的语言:PHP坚持脚本语言为主,与Java以C+不同。效率高:PHP消耗相当少的系统资源。 PHP 是一种用来制作动态网页的服务器端脚本语言。你通过PHP和HTML创建页面。当访问者打开网页时,服务器端便会处理 PHP 指令,然后把其处理结果送到访问者的浏览器上面,就好像 ASP一样。 然而,PHP 跟 ASP 不一样的地方在于,它是跨平台的开放源代码。PHP 可以在 Windows NT 以及很多不同的 Unix 版本中执行,它也可以被编译为一个 Apache 模块,或者是一个CGI二进制文件。当被编译为 Apache 模快时,PHP 尤其轻巧方便。它没有任何繁琐程序所产生的负担,因此可以很快的返回结果,同时也不需为了保持较小的服务器内存映象,而去调整mod_perl。除了能够用来产生你的网页的内容之外,PHP 也可以用来传送 HTTP头。你可以设定 cookies,授权管理,并将使用者重定向至新的页面。它也能很好的访问很多数据库及ODBC。另外还可与各式各样的外部库集成,由此可以让你做几乎任何事情,从创建 PDF 文件到解析XML。PHP 代码就嵌在Web页面中,因此你不必为它建立一个特别的开发环境或IDE。你用<?php and end it with ?>标志PHP代码(也可以将PHP设定成使用ASP形式的<% %>标志甚至是用<SCRIPT LANGUAGE="php"></SCRIPT>)。PHP引擎会处理这些标志之间的任何东西。PHP语言的语法跟C以及Perl很像。在使用前,你无须声明变量。要创建阵列以及散列(关联性阵列)也很快。PHP的初步面向对象特性还提供了组织及封装代码的简便方法。你可以在其官方网站下载取得一份包括PHP所有函数和特性的用户手册。2.2 MySQL简介MySQL是最受欢迎的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL AB是一家基于MySQL开发人员的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQL AB的注册商标。MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。2.2.1 MySQL的特点MySQL作为后台数据库工具,它功能远比Fox、Access强大,并提供了许多标准的关系数据库管理功能的支持。它各种关系数据库管理系统适应于各种硬件平台,包括Unix,PC和主机系统。它的特点有以下几点:(1)集成性 集成性即集多种应用数据于一体。集成性的主要表现为三个方面。首先采用统一的数据结构;其次它建立一个全局统一的数据模式,即不仅可以建立一个全局性的数据结构还可以建立数据间存在的语义联系,从而构成一个内在紧密联系的数据整体;最后它可以根据每个应用的数据需要构作局部模式,这种从局部到全局,再从全局到局部的过程是数据库系统数据集成性的主要特征。(2)高共享性和低冗余性数据共享性主要表现在数据多个应用程序使用,并可用于不同的目的;数据可以在已有数据库系统上开发新的应用程序;它可以向外界提供信息服务功能。数据冗余指同一个数据在不同的地方出现了重复储存。数据库系统所具有的高共享性和低冗余性不仅可以减少不必要的存储空间,更为重要的是可以避免数据的不一致性。(3)数据独立性数据独立性指数据库中的数据与使用这些数据的应用程序之间的互不依赖性,即数据或数据结构的改变不会导致对使用这些数据的应用程序的修改,反之亦然。数据独立性包括物理独立性和逻辑独立性。物理独立性是指数据的物理结构(包括存储结构和存取方式)的改变,不影响数据库的逻辑结构,从而不致引起应用程序的变化。逻辑独立性指数据库总体逻辑结构的改变,如修改数据模式,增加新的数据结构,改变数据间联系等不需要相应修改应用程序。(4)数据的统一管理与控制数据的统一管理与控制表现在四个方面:数据的完整性检查,即对数据库中数据正确性作检查以确保数据的正确;数据的安全性保护,它对数据库访问者作检查以防止非法访问;并发控制,它对多个应用并发访问所产生的相互干扰作控制以保证其正确性;数据库故障恢复,它对遭受破坏的数据具有恢复能力,使数据库具有抗破坏性。2.3 JavaScript语言简介2.3.1 JavaScript的简介JavaScript是一种解释性的,基于对象的脚本语言(an interpreted, object-based scripting language)。JavaScript主要是基于客户端运行的,用户点击带有JavaScript的网页,网页里的JavaScript就传到浏览器,由浏览器对此作处理。前面提到的下拉菜单、验证表单有效性等大量互动性功能,都是在客户端完成的,不需要和Web Server发生任何数据交换, 因此,减轻了Web Server的负担。2.3.2 JavaScript的特点一种脚本编写语言: JavaScript是一种脚本语言,它采取小程序段的方式实现编程。像其它脚本语言一样,JavaScript同样也是一种解释性语言,它提供了一个简易的开发过程。它的基本结构形式与C、C+、VB、Delphi十分相似。但它不需要先编译,而是在程序运行过程中被逐行地解释。它与html表示结合在一起,从而方便用户使用操作。基于对象的语言 :JavaScript是一种基于对象的语言,同时也可以看作一种面向对象的语言。这意味着它能运用自己已经创建的对象。因此许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。简单性 :JavaScript的简单性主要表现在:首先它是一种基于Java基本语句和控制流之上的简单而紧凑的设计,从而对于学习Java是一种非常好的过渡。其次它的变量类型是采用弱类型,并未使用严格的数据类型。安全性 :JavaScript是一种安全性语言,它不允许访问本地硬盘,并不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢失。动态性的 :JavaScript是动态的,它可以直接对用户或客户输入做出响应,无须经过Web服务程序。它对用户的反映响应,是采用以事件驱动的方式进行的。所谓事件驱动,就是指在主页(Home Page)中执行了某种操作所产生的动作,这称为"事件"。例如按下鼠标、移动窗口、选择菜单等都可以视为事件。当事件发生后,可能会引起相应的事件响应。跨平台性 :JavaScript是依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算机,并支持JavaScript的浏览器就可正确执行。2.4 HTML语言简介HTML(Hyper Text Markup Language 超文本标记语言)是一种用来制作超文本文档的简单标记语言。用HTML编写的超文本文档称为HTML文档,它能独立于各种操作系统平台(如UNIX,WINDOWS等)。基于Web的信息处理,用得最多,最简单的,能够被广泛理解的语言就是HTML语言。通过HTML标记可以实现在浏览器进行文字、表格、声音、图像、动画、视频等多媒体信息的检索。HTML语言不但可以在任何文本编辑器中编辑,还可以在可视化网页制作软件中制作网页时可以自动生成,不用自己在文本编辑器中编写;在文档中可以直接嵌入视频剪辑、音效片断和其他应用程序等。2.4.1 HTML语言的特点简易性:HTML版本升级采用超集方式,从而更加灵活方便。可扩展性:HTML语言的广泛应用带来了加强功能,增加标识符等要求,HTML采取子类元素的方式,为系统扩展带来保证。平台无关性:虽然PC机大行其道,但使用MAC等其他机器的大有人在,HTML可以使用在广泛的平台上,这也是WWW盛行的另一个原因。 2.5 Apache环境配置 查询Apache信息通过以下命令查看(如图2-1)图2-1 查看Apache版本信息图测试可以在地址栏中输入127.0.0.1,会出现以下画面。(如图2-2)图2-2 Apache 测试成功信息Apache的主要配置文件为/etc/httpd/conf/httpd.conf在配置文件中,如下几项配置较为重要。Listen 80:Listen可以用来设置httpd监听客户端请求的IP地址和连接端口号,默认为80,可以修改端口号,例如可以修改81,则访问地址为192.168.1.100:81,一般不用修改。DocumentRoot "/var/www/html" :DocumentRoot用于存放网页数据的根目录,所有来自客户端的请求,都会以此目录中的网页来相应,默认的目录为/var/www/html,自行设计网页文件以后应该保存在此目录中;当然此处可以进行修改,根目录修改后,网页文件应保存在修改后的目录中。DirectoryIndex index.html :index.php:DirectoryIndex选项可用来指定用户连接到每个目录时默认打开的网页名称,系统默认为index.html,本机由于首页为index.php 故在后面加上index.php。AddDefaultCharset UTF-8:配置文件中默认字符集为UTF-8,在此由于使用方便以及对汉字的支持,我们将其修改为AddDefaultCharset GB23122.6 PHP环境配置输入命令 rpm- q php,得到PHP的版本信息,如图2-3图2-3 查看PHP版本信息图2.7 MySQL环境配置输入命令 rpm q mysql,得到MySQL的版本信息,如图2-4图 2-4 MySQL版本信息若没有安装则使用rmp ivh mysql软件包的全路径名。在终端中使用命令/etc/rc.d/init.d/mysqld start即可以启动mysql数据库,使用mysql u root p即可进入mysql数据库,如图2-5所示:图 2-5 进入MySQL图处于安全性考虑需要设置mysql密码 mysqladmin u root password 即可。2.8 小结本章首先介绍了PHP语言,MySQL数据库,JavaScript语言和HTML语言,最后给出了配置Apache+MySQL+PHP的方法。 第三章 系统分析与设计3.1 需求分析PHP学习网站为PHP爱好者提供了学习和交流PHP的平台。浏览者可以浏览系统前台信息,管理员可以管理后台,及时更新前台的内容。系统前台提供的具体功能如下:1、用户注册功能:注册成为PHP学习网的合法用户。2、用户登录功能:已注册用户可以输入用户名和密码进入PHP学习网站。3、用户找回密码功能:已注册用户如果忘记自己的密码,正确填写用户密码问题和用户密码答案后,可以修改自己的密码。4、浏览PHP教程:普通浏览者可以查看PHP教程。5、浏览PHP文献书籍:普通浏览者可以查看PHP文献书籍。6、浏览PHP学习网站:普通浏览者可以浏览相关的PHP学习网站。7、论坛交流:PHP学习网站的用户可以进入论坛,发表帖子和回复帖子。普通浏览者只能查看帖子,不能发表和回复帖子。8、站内搜索:普通访问者可以搜索相关的PHP教程,PHP文献书籍和PHP网站。系统后台管理模块的具体功能如下:1、PHP教程管理:管理员在后台可以添加,编辑教程,同时也可以删除过时的教程。2、PHP文献书籍管理:管理员在后台可以添加,编辑和删除相应的文献书籍。3、PHP学习网站管理:管理员在后台可以添加,编辑教程和删除相应的学习网站。4、会员管理:管理员在后台可以删除会员。5、管理员管理:管理员在后台可以添加,编辑和删除相应的管理员。6、论坛管理:管理员在后台不仅可以对论坛栏目进行管理,还可以对相应的论坛帖子进行管理。3.2 总体设计根据PHP学习网的功能需求,进行系统分析设计。系统功能模块图如图3-1所示:图3-1 系统功能模块图3.2.1 游客/未登录用户模块游客/未登录用户模块:游客和未登录的用户都可以查看PHP教程,查看PHP书籍文献,查看PHP学习网站,下载PHP资源,浏览论坛,站内搜索。模块图如图3-2所示:图3-2 游客/未登录用户功能模块图3.2.2 登录用户模块登录用户模块:游客可以首先注册成为PHP学习网的会员,然后登录。登录用户不仅可以查看PHP教程,查看PHP书籍文献,查看PHP学习网站,下载PHP资源,站内搜索,还可以修改个人信息,进入论坛发表帖子和回复帖子。模块图如图3-2所示:图3-3 登陆用户功能模块图3.2.3 管理员模块管理员模块:管理员管理模块也就是网站的后台,主要工作是负责对上面两个模块的管理与维护。包含管理PHP教程、管理文献书籍、管理编辑学习网站、管理PHP资源、管理会员、管理论坛和管理管理员这七个子模块。模块图如图3-4所示: 图3-4 管理员模块图3.3 数据库设计与实现数据库在系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。另外,合理的数据库结构将非常有利于程序的实现。设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。3.3.1 数据库设计原则在动态网站的设计中,数据库设计的重要性不言而喻。如果设计不当,查询起来就非常吃力,程序的性能也会受到影响。无论你使用的是MySQL或者Oracle数据库,通过进行正规化的表格设计,可以令你的PHP代码更具可读性,更容易扩展,从而也会提升应用的性能。1合理使用索引 索引是数据库中重要的数据结构,它的根本目的就是提高查询效率。索引的使用要恰到好处,其使用原则如下: 在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引;在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引;在条件表达式中经常用到的不同值较多的列上建立索引,在不同值少的列上不要建立索引。比如在文档表的“文档类型”列上只有“PHP教程”,“文献书籍”,“学习网站”三个不同值,因此就无必要建立索引。如果建立索引不但不会提高查询效率,反而会严重降低更新速度。 如果待排序的列有多个,可以在这些列上建立复合索引。 2. 避免或简化排序 应当尽量简化或避免对大型表进行重复的排序。当能够利用索引自动以适当的次序产生输出时,优化器就避免了排序这个步骤。为了避免不必要的排序,就要正确地增建索引,合理地合并数据库表(尽管有时可能影响表的规范化,但相对于效率的提高是值得的)。如果排序不可避免,那么应当试图简化它,如缩小排序的列的范围等。 3消除对大型表行数据的顺序存取 在嵌套查询中,表的顺序存取对查询效率可能产生致命的影响。我们有时可以使用并集来避免顺序存取。尽管也许在所有的检查列上都有索引,但某些形式的where子句会强迫优化器使用顺序存取,这一点也应注意。 4. 避免相关子查询 如果一个列同时在主查询和where子句中出现,很可能当主查询中的列值改变之后,子查询必须重新查询一次。而且查询嵌套层次越多,效率越低,因此应当尽量避免子查询。如果子查询不可避免,那么要在子查询中过滤掉尽可能多的行。 5使用临时表加速查询 把表的一个子集进行排序并创建临时表,有时能加速查询。它有助于避免多重排序操作,而且在其他方面还能简化优化器的工作。临时表中的行要比主表中的行少,而且物理顺序就是所要求的顺序,减少了磁盘i/o,所以查询工作量可以得到大幅减少。但要注意,临时表创建后不会反映主表的修改。在主表中数据频繁修改的情况下,注意不要丢失数据。3.3.2 数据库概念结构设计数据库的E-R图反映了实体、实体的属性和实体之间的联系。下面的图3-5至图3-11显示的是各个实体以及实体的属性。图3-5 管理员实体及属性图3-6 用户实体及属性图3-7 学习资料实体及属性图3-8 论坛栏目实体及属性图3-9 帖子实体及属性图3-10 回帖实体及属性图3-11 资源实体及属性下面的图3-12显示的是系统E-R图: 图3-12 系统E-R图3.3.3 数据库逻辑结构设计本系统数据库为:phpjiaoxue,其中包含了七个MySQL数据表来实现对数据的存储、调用。以下为具体数据表模式: 【管理员表】(管理员ID、管理员名、管理员密码) 【用户表】(用户ID、用户名、用户密码、提示问题、提示答案、邮箱、真实姓名、注册时间、登录次数、最后一次登录时间) 【资源表】(资源ID、资源名、原资源名、资源类型、上传时间、新资源名) 【论坛栏目表】(论坛栏目ID、论坛栏目名称) 【学习资料表】(学习资料ID、学习资料标题、学习资料内容、学习资料类型) 【帖子表】(帖子ID、发帖人姓名、时间、主题、帖子内容、对应论坛栏目) 【回帖表】(回帖ID、帖子编号、回复内容、回帖人、回帖时间、对应论坛栏目)其中,用下划线标出的属性为表的主键属性。各表的具体设计如表4-1表4-7所示。根据E-R图,设计每张表的变量名,变量的类型及主键。1tbl_admin 表tbl_admin表存放管理员登录名和密码。表4-1 tbl_admin表变量类型备注(C)idint(10)管理员IDUserNamevarchar(50)管理员名UserPwdvarchar(50)管理员密码2tbl_user表用户所有的注册信息都存放在些表中。表4-2 tbl_user 表名称类型备注(C)Idint(10)用户IDUserNamevarchar(32)用户名UserPwdvarchar(32)用户密码Problemvarchar(50)提示问题Answervarchar(50)提示答案Emailvarchar(100)邮箱TrueNamevarchar(32)真实姓名RegDatedatetime注册时间LogTimesSmallint(10)登陆次数LastLogTimedatetime最后一次登陆时间3 tbl_down 表tbl_down表存放资源的信息,包括资源的编号、名称、类型、资源日期。表4-3 tbl_down表名称类型备注(C)down_idint(10)资源IDfilenamevarchar(50)资源名downvarchar(200)原资源名typevarchar(20)资源类型datedate上传时间newfilenamevarchar(255)新资源名4tbl_class表tbl_class表存放论坛栏目的编号和名称。表4-4 tbl_class表名称类型备注(C)Idint(10)论坛栏目IDClassTypevarchar(32)论坛栏目名称5tbl_pagecontent表tbl_pagecontent表存放学习资料的编号,标题,内容和类型。表4-5 tbl_pagecontent表名