基于LAMP的网络在线投票系统的设计与实现【计算机科学专业】【毕业设计+文献综述+开题报告】

基于LAMP的网络在线投票系统的设计与实现【计算机科学专业】【毕业设计+文献综述+开题报告】

ID:479614

大小:313.00 KB

页数:52页

时间:2017-08-09

上传者:U-944
基于LAMP的网络在线投票系统的设计与实现【计算机科学专业】【毕业设计+文献综述+开题报告】_第1页
基于LAMP的网络在线投票系统的设计与实现【计算机科学专业】【毕业设计+文献综述+开题报告】_第2页
基于LAMP的网络在线投票系统的设计与实现【计算机科学专业】【毕业设计+文献综述+开题报告】_第3页
基于LAMP的网络在线投票系统的设计与实现【计算机科学专业】【毕业设计+文献综述+开题报告】_第4页
基于LAMP的网络在线投票系统的设计与实现【计算机科学专业】【毕业设计+文献综述+开题报告】_第5页
资源描述:

《基于LAMP的网络在线投票系统的设计与实现【计算机科学专业】【毕业设计+文献综述+开题报告】》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

(20届)本科毕业论文基于LAMP的网络在线投票系统的设计与实现 摘要:在线投票是网站中最常见的功能之一,也是网站建设中经常要开发的一个模块,具备基本的添加主题、查看主题、修改主题、删除主题等功能,是LAMP(Linux+Apache+Mysql+Php)网站中常用的信息交流平台,用户可以通过投票系统设置投票主题,通过对投票结果的分析,得到关于网站建设或热点问题的意见、建议和相关信息。当商家推出某个新产品需要了解用户的满意度和需求时,或者对某些比赛的结果进行评估时,往往通过网络投票的方式来获取采样数据。掌握投票系统的设计与实现,有利于在LAMP系统开发中进一步轻松管理和实现用户的各种调查统计。关键词:在线投票;Lamp;Linux TheDesignandImplementationofWebOnlineVotingSystembasedonLampAbstract:Onlinevotingsystemisoneofthemostcommonfunctionsofawebsite,alsoamodulethatoftenbeendevelopedduringthewebdesign.Itincludessomebasicperformances,suchasaddingsubject,lookforsubject,revisesubject,deletesubjectandsoon.SotheOnlinevotingsystemisthemostfrequentlyusedInformationexchangeplatformintheLAMP(Linux+Apache+Mysql+Php)webs.Theuserscansetthevotingthemethroughthissystem,andgetsomeideas,suggestsandotherrelatedinformationconcerningwebdevelopmentorhotissuesbyanalyzingthevotingresult.Whenthemerchantwanttoknowthecustomers’satisfactiondegreeandrequirementtohisnewpushedproducts,orwhenevaluatingtheresultsofsomecompetitions,weoftengainsampledatathroughnetworkvoting.ToknowaboutthedesignandachievementofavotingsystemisbenefitforeasiermanagementandachievementofvariousinvestigationstatisticsofusersinthedevelopmentofLAMPsystems.Keywords:Onlinevotingsystem;Lamp;Linux 目录1.引言…………………………………………………………………………………………12.开发环境与开发工具介绍…………………………………………………………………22.1Linux系统介绍……………………………………………………………………22.2ApacheWeb技术……………………………………………………………………42.3PHP技术……………………………………………………………………………62.4MYSQL技术………………………………………………………………………63.系统分析与设计………………………………………………………………………………83.1需求分析…………………………………………………………………………………83.2系统设计…………………………………………………………………………………83.2.1系统整体设计……………………………………………………………………83.2.2功能模块划分……………………………………………………………………83.2.3系统流程…………………………………………………………………………93.3数据库设计……………………………………………………………………………103.3.1数据库需求分析…………………………………………………………………113.3.2数据库表关系…………………………………………………………………123.3.3创建数据库……………………………………………………………………134.在线投票系统的基本功能…………………………………………………………………154.1添加投票主题…………………………………………………………………154.2查看投票主题…………………………………………………………………154.3修改投票主题…………………………………………………………………154.4删除投票主题…………………………………………………………………155.主要源代码介绍…………………………………………………………………………165.1添加投票主题………………………………………………………………………165.2查看投票主题………………………………………………………………………205.3修改投票主题………………………………………………………………………215.4删除投票主题………………………………………………………………………246.进一步的探讨……………………………………………………………………………277.结束语……………………………………………………………………………………29 致谢……………………………………………………………………………………………30参考文献………………………………………………………………………………………31 1引言目前,几乎在所有的Linux发布版中都默认包含了“LAMPstack”的产品。这些产品组成了一个强大的Web应用程序平台。“LAMPstack”中的每一个组件都是一个FOSS(免费或者开源软件/FreeorOpenSourceSoftware)的实例。FOSS方法的好处有三个方面。第一,FOSS软件的性质意味着应用程序可以免费下载,能够让更广泛的人们不用付费就可以使用这个应用软件。这种免费的方式对于广大用户特别具有吸引力。这些用户如果不使用免费的软件就需要付费购买“专业”的商用软件工具。这在制作网站方面通常是一种昂贵的步骤。FOSS许可证是开放式的,因此对于基于FOSS技术的应用软件的使用和限制都非常少。不需要为软件的发布支付任何许可证费就可以开发和应用基于LAMP的工程。因此,这对业余爱好者和专业人员都非常有吸引力。FOSS技术(包括LAMP)的增长和使用的主要原因是因为用户能够访问其资源,修复故障和改善应用软件的性能都非常容易。与开源软件许可证结合在一起,这种方法为许多企业简化了开发过程,并且为企业提供了专有软件或者商业软件的限制中所没有的灵活性[1]。LAMP组合以其简单性、开放性、低成本、安全性和适用性,受到越来越多的Web开发人员的欢迎和喜爱。虽然这些开放源代码程序本身并不是专门设计成同另外几个程序一起工作的,但由于它们都是影响较大的开源软件,拥有很多共同特点,这就导致了这些组件经常在一起使用。而且这些组件的兼容性在不断完善,在一起的应用情形变得更加普遍。并且它们为了改善不同组件之间的协作,创建了一些扩展功能。目前,几乎在所有的Linux发布版中都默认包含了这些产品。Linux操作系统、Apache服务器、MySQL数据库和PHP语言,这些产品共同组成了一个强大的Web应用程序平台。LAMP中的成员都是源码开放的,这意味着其代码的核心部分可以被免费使用,所有源码、文档都可以在相应的官方网站上获得,用户都可以自由复制、编译、分发和拷贝。任何一个LAMP项目都属于自己,并且可以自行处理。正是由于这种开源精神,才使得LAMP社区可以聚集众多爱好者,也使得LAMP有如此迅猛的发展,而且更新速度,以及发现和修正错误的速度都是非常快的。现在越来越多的供应商、用户和企业投资者逐渐认识到,使用LAMP单个组件的开源软件组成的平台,用来构建以及运行各种商业应用和协作构建各种网络应用程序,变得更加具有竞争力,更加吸引客户。LAMP无论是性能、质量还是价格都将成为企业、政府信息化所必须考虑的平台,并逐渐开始于面向企业级应用发展。Apache+PHP+MySQL被认为是在Linux平台上最佳组合之一[2]。47 2.开发环境与开发工具介绍2.1linux系统介绍1.Linux操作系统的诞生Linux操作系统是一类Unix计算机操作系统的统称。Linux操作系统的内核的名字也是“Linux”。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。Linux得名于计算机业余爱好者LinusTorvalds。Linux操作系统是UNIX操作系统的一种克隆系统。它诞生于1991年的10月5日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并经过全世界各地计算机爱好者的共同努力下,现已成为今天世界上使用最多的一种UNIX类操作系统,并且使用人数还在迅猛增长。Linux操作系统刚开始时并没有被称作Linux,Linus给他的操作系统取名为FREAX,其英文含义是怪诞的、怪物、异想天开等意思。在他将新的操作系统上载到ftp,funet,fi服务器上时,管理员AriLemke很不喜欢这个名称。他认为既然是Linus的操作系统就取其谐音Linux作为该操作系统的目录吧,于是Linux这个名称就开始流传下来。Linux操作系统的诞生、发展和成长过程始终依赖着以下五个重要支柱:UNIX操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet网络。2.Linux的内核Linux是最受欢迎的自由电脑操作系统内核。它是一个用C语言和汇编语言写成,符合POSIX标准的类Unix操作系统。Linux最早是由芬兰黑客林纳斯.托瓦兹(LinusB.Torvalds)为尝试在英特尔x86架构上提供自由免费的类Unix操作系统而开发的。该计划开始于1991年,林纳斯·托瓦兹当时在Usenet新闻组comp.os.minix登载帖子,这份著名的帖子标示着Linux计划的正式开始。在计划的早期有一些Minix黑客提供了协助,而今天全球无数程序员正在为该计划无偿提供帮助。技术上说Linux是一个内核。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux。3.基本思想47 Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。4.Linux的应用过去,Linux主要被用作服务器的操作系统,因为它的廉价、灵活性及Unix背景。传统上,以Linux为基础的“LAMP(Linux,Apache,MySQL,Perl/PHP/Python的组合)”技术,除了已在开发者群体中广泛流行,它亦是现时提供网站服务供应商最常使用的平台。基于其低廉成本与高度可设置性,Linux常常被应用于嵌入式系统,例如机顶盒、移动电话及移动装置等。在移动电话上,Linux已经成为SymbianOS的主要竞争者;而在移动装置上,则成为WindowsCE与PalmOS外之另一个选择。目前流行的TiVo数码摄影机使用了经过客制化后的Linux。此外,有不少硬件式的网络防火墙及路由器,例如部份LinkSys的产品,其内部都是使用Linux来驱动、并采用了操作系统提供的防火墙及路由功能。采用Linux的超级电脑亦愈来愈多,根据2008年11月的TOP500超级电脑列表,现时世上最快速的超级电脑使用Linux作为其操作系统。而在表列的500套系统里,采用Linux为操作系统的,占了439组(即87.8%)。2006年开始发售的SONYPlayStation3亦可使用Linux的操作系统,它有一个能使其成为一个桌面系统的YellowDogLinux。之前,Sony亦曾为他们的PlayStation2推出过一套名为PS2Linux的DIY组件。Ubuntu自9.04版本,恢复了PPC支持(包括PlayStation3)。而随着OLPC的XO-1,华硕的EeePC等低价电脑的推行,许多人乐观的认为在低端PC市场,linux的市场占有率正在快速的增长。但在Windows进入此一市场后,Linux的市占率快速下滑。现在Windows系统在所有的PC市场中,都占有绝对优势。5.Linux的特性Linux的流行是因为它具有许多诱人之处。(1)完全免费47   Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变。这让Linux吸收了无数程序员的精华,不断壮大。(2)完全兼容POSIX1.0标准  这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。(3)多用户、多任务  Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。(4)良好的界面  Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。(5)丰富的网络功能  互联网是在Unix的基础上繁荣起来的,Linux的网络功能当然不会逊色。它的网络功能和其内核紧密相连,在这方面Linux要优于其他操作系统。在Linux中,用户可以轻松实现网页浏览、文件传输、远程登陆等网络工作。并且可以作为服务器提供WWW、FTP、E-Mail等服务。(6)可靠的安全、稳定性能  Linux采取了许多安全技术措施,其中有对读、写进行权限控制、审计跟踪、核心授权等技术,这些都为安全提供了保障。Linux由于需要应用到网络服务器,这对稳定性也有比较高的要求,实际上Linux在这方面也十分出色。(7)支持多种平台  Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux2.4版内核已经能够完全支持Intel64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。47 2.2ApacheWeb技术Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。同时Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。也是一个基金会的名称、一种武装直升机等等。Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“apatchyserver”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个ApacheWeb站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon、Yahoo!、W3Consortium、FinancialTimes等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。Apache的诞生极富有戏剧性。当NCSAWWW服务器项目停顿后,那些使用NCSAWWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了ApacheGroup,后来这个团体在NCSA的基础上创建了Apache。Apacheweb服务器软件拥有以下特性:支持最新的HTTP/1.1通信协议。  拥有简单而强有力的基于文件的配置过程。 支持通用网关接口。  支持基于IP和基于域名的虚拟主机。支持多种方式的HTTP认证。  集成Perl处理模块。  47 集成代理服务器模块。  支持实时监视服务器状态和定制服务器日志。  支持服务器端包含指令(SSI)。  支持安全Socket层(SSL)。  提供用户会话过程的跟踪。  支持FastCGI。  通过第三方模块可以支持JavaServlets。  如果你准备选择Web服务器,毫无疑问Apache是你的最佳选择。2.3PHP技术Php,是英文超级文本预处理语言HypertextPreprocessor的缩写。PHP是一种HTML内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛的运用。PHP的另一个含义是:菲律宾比索的标准符号。PHP独特的语法混合了C、Java、Perl以及PHP自创新的语法。它可以比CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。PHP具有非常强大的功能,所有的CGI的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。PHP的特性包括:(1)开放的源代码:所有的PHP源代码事实上都可以得到。  (2)php是免费的:和其它技术相比,PHP本身免费。  (3)php的快捷性:程序开发快,运行快,技术本身学习快。嵌入HTML--因为PHP可以嵌入HTML语言,它相对于其他语言,编辑简单,实用性强,更适合初学者。  (4)跨平台性强:由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS下。  (5)效率高:PHP消耗相当少的系统资源。  (6)图像处理:用PHP动态创建图像  (7)面向对象:在php4,php5中,面向对象方面都有了很大的改进,现在php完全可以用来开发大型商业程序。  (8)专业专注:PHP支持脚本语言为主,同为类C语言。47 2.4MYSQL技术MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购.对于Mysql的前途,没有任何人抱乐观的态度.目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。1.自身特性(1)使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。  (2)支持AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多种操作系统。  (3)为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。  (4)支持多线程,充分利用CPU资源。  (5)优化的SQL查询算法,有效地提高查询速度。  (6)既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。  (7)提供TCP/IP、ODBC和JDBC等多种数据库连接途径。  (8)提供用于管理、检查、优化数据库操作的管理工具。  (9)可以处理拥有上千万条记录的大型数据库。2.应用环境与其他的大型数据库例如Oracle、DB2、SQLServer等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQLCluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统。47 3.系统分析与设计3.1需求分析设计并实现一个简单实用的LAMP投票系统,其基本需求包括:·使用简单方便、可以无限添加投票主题;·投票主题可选举多项或者单选;·投票结果能够以图形化方式显示;·管理员能够从后台很方便地修改及删除现有的投票主题;·普通用户能够快速发起投票,参与投票;·能够查看投票主题;·能够防止用户多次投票;3.2系统设计系统设计需要在明确整个系统需求的基础上,确定系统的基本框架、对整个系统有一个整体的考虑,从而进一步确定系统的功能模块和各模块之间的关系,以及系统的主要流程。3.2.1系统整体设计投票系统分为发起投票、参与投票和投票管理三个部门。对于普通用户,系统能够对投票主题进行设置,并选择投票类型,输入投票选项,用户还可以参与投票或者查看结果,投票的结果采用图形方式显示。而系统只包含一个管理账号,管理员登录后,能够很方便地对系统中有的投票主题进行管理,修改及删除现有的投票主题。系统需要数据库支持,采用MYSQL数据库。为方便管理,默认的管理员账号是admin,系统密码是666666。本系统未涉及系统用户管理功能[4]。3.2.2功能模块的划分根据对投票系统的需求分析,将系统分为三大部分,分别是发起投票、参与投票和投票管理。细分系统功能模块如图1所示。·参与投票:该模块包含浏览投票主题、进行投票和查看投票结果。浏览投票主题以列表方式将有关投票的主题名称、发布者、投票类型以及选项等信息显示出来,方便用户选择感兴趣的投票主题进行参与。该模块在系统首页、参与投票、发起投票及投票管理中均有体现。在线投票是用户进行投票的模块,系统根据投票主题类型,设置单选或者复选框,用户选择相应的投票选项后提交投票内容[4]。47 图1功能模块划分用户可以通过查看投票结果模块查看关于投票主题的投票结果图像显示。投票结果模块将给出参与某主题投票的人数,以及不同投票选项的支持率。·发起投票:该模块包含设置投票主题和浏览投票主题。用户通过设置投票主题模块发起投票,在该模块中能够设置投票主题名称、投票类型、投票选项。一旦提交,该投票主题将在浏览投票主题模块中能够看到;同时,其他在线用户能够选择该主题进行投票。·投票管理:该模块包含系统管理员登录模块,以及对投票主题和投票选项的编辑、删除模块,同时包含浏览投票主题模块。系统管理员登录模块包含系统管理员登录页面,管理员输入正确的用户名密码后,系统能够进行管理员身份验证。管理员正确登录后,方能使用投票管理中其他模块的功能。投票主题的编辑、删除通过投票主题管理模块、投票主题删除模块实现。投票选项的编辑和删除,通过投票选项管理模块、投票选项删除模块实现[4]。3.2.3系统流程投票系统的流程如图2所示。47 图2投票系统流程图3.3数据库设计根据系统设计中功能模块分析,数据库设计过程需要确定数据库中所需要的数据表、对系统中涉及的信息进行组织和连接,确定表中的字段类型、含义、主键等内容[4]。3.3.1数据库需求分析投票系统中涉及的数据库表包含三个,分别是用户表(user)、主题表(topic)和选项表(option)。主题表主要存放投票主题的标题、内容、发起人、类型、发布时间等。选项表存放选项的名称、所属主题,以及票数。用户表则用于存放投票用户的E-mail地址,并记录该用户参与了哪个主题的投票[4]。1.用户表的结构定义用户表中id作为主键,创建字段topic_id和E_mail的联合索引,唯一标识用户针对某主题的投票记录。其结构定义如表2所示。47 表2用户表列名数据类型主键必填字段备注Idint是是用户id,唯一标识,自动增长Topic_idint否是投票主题idEmailVarchar否是用户E-mail2.主题表的结构定义主题表中,id作为主键,唯一标识每个投票主题。主题表同时记录投票主题的标题、内容、发起人、类型、发布时间信息。其结构定义如表3所示。表3主题表列名数据类型主键必填字段备注idint是是投票主题id,唯一标识,自动增长UsemameInt否是发起人用户名EmailVarchar否是发起人E-mailTitleVarchar否是主题标题名称TypeTinyint否是投票类型:单选/多选ContentText否是投票选项内容字符串PubtimeDatetime否是发布时间3.选项表的结构定义选项表中,id作为主键,唯一标识各主题的不同选项。其结构定义如表4所示。表4选项表列名数据类型主键必填字段备注idint是是选项id,唯一标识,自动增长topic_idInt否是投票主题idInfoVarchar否是选项内容47 countInt否是支持票数,默认设置为03.3.2数据库表关系投票系统中,数据表间的相互关系如图13所示。图2数据表关系图3.3.3创建数据库根据上述分析,能够很容易地建立相应的数据库和数据库表。1.创建数据库创建数据库,名为vote。CREATADATABASEvote;Usevote;2.创建数据表使用以下SQL语句,或在phpMyadmin等图形工具中操作;表的结构`topic`47 CREATETABLE`topic`(`id`int(6)NOTNULLauto_increment,`username`varchar(20)NOTNULLdefault'',`email`varchar(50)NOTNULLdefault'',`title`varchar(250)NOTNULLdefault'',`type`tinyint(2)NOTNULLdefault'1',`content`text,`pubtime`datetimeNOTNULLdefault'0000-00-0000:00:00',PRIMARYKEY(`id`))TYPE=MyISAMAUTO_INCREMENT=20;表的结构`user`CREATETABLE`user`(`id`int(10)NOTNULLauto_increment,`topic_id`int(10)NOTNULLdefault'0',`email`varchar(50)NOTNULLdefault'',PRIMARYKEY(`id`),UNIQUEKEY`topic_id`(`topic_id`,`email`))TYPE=MyISAMAUTO_INCREMENT=43;表的结构`option`CREATETABLE`option`(`id`int(6)NOTNULLauto_increment,`topic_id`int(6)NOTNULLdefault'0',`info`textNOTNULL,`count`int(4)NOTNULLdefault'0',PRIMARYKEY(`id`))TYPE=MyISAMAUTO_INCREMENT=86;47 4.在线投票系统的基本功能4.1添加投票主题发起投票页面,发起人需要填写一个表单,包括发起人名、发起人E-mail地址,投票的主题,同时设置投票的类型和选项。投票选项的设置应在文本框中输入各选项,并用“#”作为分隔符。例如,若投票选项为“喜欢”,“讨厌”,“没感觉”,则输入的字符串应为“喜欢#讨厌#没感觉”[4]。4.2查看投票主题在投票管理页面中,管理员能够查看全部投票主题,包括投票主题名称、类型、发布时间、发起人名、发起人E-mail以及具体选项。单击投票主题名称链接,能够进入在线投票页面。针对每个主题都有[修改]和[删除]操作链接[4]。4.3修改投票主题单击管理投票主题页面中[修改]链接,进入如图5所示页面。在该页面中,可以修改投票主题名称和各个选项内容,也可以删除选项。4.4删除投票主题单击投票主题页面中的[删除]链接,能够删除投票主题。投票主题一旦被删除,关于该主题所有选项及记录都将被删除,系统会弹出对话框进行删除确认[4]。47 5.主要源代码介绍5.1添加主题的代码Topic.php档主要包括投票主题表单和Javascript代码.Javascript代码的作用是对投票主题表单进行合法性验证。包括投票主题表单中,发起人是否为空,E-mail项是否为空,E-mail地址是否正确,投票主题项是否为空等[4]。Topic.php代码为:functionchecktopic(){if(form1.username.value==""){//如果发起人为空,则显示警告信息alert("发起人不能为空!");form1.username.focus();returnfalse;}if(form1.email.value==""){//如果Email为空,则显示警告信息alert("Email不能为空!");form1.email.focus();returnfalse;}//检查email格式是否正确elseif(form1.email.value.charAt(0)=="."||form1.email.value.charAt(0)=="@"||form1.email.value.indexOf('@',0)==-1||form1.email.value.indexOf('.',0)==-1||form1.email.value.lastIndexOf("@")==form1.email.value.length-1||47 form1.email.value.lastIndexOf(".")==form1.email.value.length-1){alert("Email的格式不正确!");form1.email.select();returnfalse;}if(form1.title.value==""){//如果标题为空,则显示警告信息alert("标题不能为空!");form1.title.focus();returnfalse;}if(form1.content.value==""){//如果投票选项为空,则显示警告信息alert("投票选项不能为空!");form1.content.focus();returnfalse;}//检测投票选项是否用#分隔elseif(form1.content.value.indexOf('#',0)==-1){alert("投票选项没有用#分隔!");form1.content.focus();returnfalse;}returntrue;}47 发起投票发起人Email投票主题投票类型单选多选投票选项
注意:各选项间用#分隔    投票主题表单提交后,通过addtopic.php档进行处理,处理后也就是发起了一次投票。addtopic.php的代码:5.2查看主题的代码浏览投票主题通过browse.php档实现。browse.php档代码为:主题发起人类型47 投票选项$topic[title]";echo"$topic[username]";if($topic[type]==1){echo"单选";}else{echo"多选";}echo"";while($vote=mysql_fetch_array($voteresult)){echo"

  • $vote[info]
    ";}echo"";echo"";}?>5.3修改主题的代码编辑功能不仅能修改投票主题内容,还能修改投票的各个选项内容。投票的编辑页面通过modify.php档实现,编辑修改之后的投票由addmodify.php档进行处理。modify.php档代码为:47 ";echo"";echo"管理员尚未登录,请登录!";echo"";include("footer.php");exit();}?>functioncheckmessage(){if(msgform.title.value==""){//如果主题为空,则显示警告信息alert("主题不能为空!");msgform.title.focus();returnfalse;}returntrue;}47 投票主题maxlength="50">>投票选项";while($select=mysql_fetch_array($result)){echo"
  • ";//echo"";}?>47 addmodify.php档代码:";echo"";echo"管理员尚未登录,请登录!";echo"";include("footer.php");}//取得html页的参数$topic_id=$_POST['topic_id'];$title=$_POST['title'];$select=$_POST['select'];$selectid=$_POST['selectid'];$tselect='';for($i=0;$i5.4删除主题的代码删除投票以投票主题id为参数,通过delete.php档构造SQL语句实现。删除主题应删除选项表、用户表和主题表。删除完成后,页面重定向至投票管理页面。delete.php档代码为:";47 echo"";echo"管理员尚未登录,请登录!";echo"";include("footer.php");}//获得参数$id=$_GET[id];//构造sql语句删除该主题的所有帖子$sql="deletefromtopicwhereid='$id'";mysql_query($sql,$conn);//删除vote表中的该主题内容mysql_query("deletefromvotewheretopic_id='$id'",$conn);//删除vote表中的该主题内容mysql_query("deletefromuserwheretopic_id='$id'",$conn);//删除完成,重定向到管理留言页面header("Location:admin.php");?>47 6.进一步的探讨目前,主要是在LAMP和Java之间有所争论。Java虽然技术很成熟,随着互联网开源潮流的迅速发展,全球IT业正迎来一个新的发展格局成长期。对全球的开源体系——LAMP(Linux、Apache、MYSQL、PHP)而言,其所代表的开源软件及应用,以其开放性、低成本、安全性、适用性以及可靠性能,正对传统软件、硬件和系统集成商产生巨大的冲击,同时,也给创新型IT企业、程序开发者创造了前所未有的机遇。作为软件行业风尖浪口的Java,几多褒贬,几多称赞。LAMP宣称,在Linux系统下开发软件不再需要层的概念了,Java不再是唯一的选择了[9]。LAMP在英语中是“灯”的意思,但是在IT行业当然不是那么简单的一个意思,这个术语在德国十分流行,代表了Linux平台上的Apache网站服务器、MySQL数据库以及Perl、Python或者PHP编程语言的结合。笔者相信,这个术语也会在我们中国的开放源代码界,乃至整个网络界开始流行,LAMP不仅会成为企业上网,政府上网的“明灯”,也应该会在企业内部实施的Intranet大有作为。LAMP开源软件——包括Linux操作系统、Apache网络服务器、MySQL数据库和PHP——正在进军主流计算市场[14]。Java与.Net工具一统商业软件开发领域已数年,但是具有易于开发、更新速度快、成本低的特点,LAMP被许多开发者视为“黄金组合”,在近几年中由LAMP集体开源厂家,或者确切的说LAMP开源自由社区吹响向主流计算市场发起进攻的号角。甚至在2005年的TechEd大会上,微软总裁鲍尔默以“微软有能力抵挡LAMP的进攻”的用词,将LAMP列为Windows和它的.Net开发软件的竞争者。IBM、Intel、HP、SUN等众多厂家提出开源贡献口号,收购开源公司;Intel、SAP投资PHP公司,Zend科技;LAMP的开源和发展潜力可见风头正盛。LAMP所代表的不仅仅是开放源码,它更是开发和实施高性能Web应用的重要平台。如果说Apache能代表LAMP的占有率的话,那么,采用LAMP的站点几乎就已经是占据了主要的市场,看看Netcraft每月的调查就可以知道Apache的流行程度。国外的开放源码站点,例如Apacheweek、MySQL.com、Perl.com等自不必说,现在国内的很多站点也开始扑向LAMP[10]。47 而Java的应用范围更加的宽广。可以开发桌面程序,手机游戏、DVD播放器及应用服务器等。Java与某些软件有着天然的内在联系,如Database,ERP等。其次,Java有大量的开源社区支持,看看Apache的Portfolio或SourceForge就明白这一点,这是Java发展快速的主要原因之一。采用Java作为平台而开发的软件,稳定地运行在各种操作系统上,相对竞争对手其他语言,如C++或C语言,极大的提高了人们的生产力。第三,Java开发平台的多样性。有多种JDK可以供选择,包括Sun、IBM、Bea及开源的JDK.同时,有大量的应用服务器可供选择,如开源阵营的JBoss应用服务器、Apache的Geronimo、Sun的Glassfish等等。除此之外,还有大量的商业服务器平台[11]。第四,和Java相比,PHP更容易学习,它在开发人员当中相当的流行,尤其是那些网页开发者。很多人,包括一些前Java语言的拥护者都认为,脚本语言和所谓的LAMP开源部件正在蓬勃发展,而这种发展减弱了Java的影响。但是,有一点经常被人遗忘,那就是,Java是一种两种层面上的语言:它既是一种虚拟机,同时它也是一种ASCII语言。很多人看不到Java作为虚拟机的神奇之处,因为非常多的脚本语言就是建立在这种虚拟机之上的。LAMP组合正在逐渐获得市场认可,但是它已经具有追上非开源竞争者的实力吗?生活中最好的东西真的是免费的吗?开源支持者们当然愿意让我们相信这一点。多年以来,他们已经将不断改进的LAMP组合作为构建商业系统并使之运转的一条免费之路。但是LAMP组合也有一些潜在的缺点。开源组合和私有软件的一个明显区别在于新特性。私有软件提供商的发展依赖于增长率,也就是说需要不断增加销售额。这就使得他们要不断开发新品。另一方面,开源开发没有这样的环境,就是说创新的步伐经常要慢许多。你很少看到走在前沿的创新是开源产品。例如,当微软在SQLServer中开发XML作为一个本地数据类型的时候,开源MySQL数据库才刚刚将存储程序作为一个新特性,这比它的竞争对手落后了好几代。同时扩展可能是对LAMP用户的一个挑战。使用集群计算机或刀片服务器和诸如RedHatLinux这样的企业级系统扩展到LAMP系统是可能的,但是这并不容易。在许多公司,LAMP仍然没有得到正式认可。但是在开源开发模式中,人人都可以做出贡献,这将推动LAMP比Java或.Net更快的前进。不过,LAMP也不可能把现有的Java和.Net两大阵营消灭,因为大的公司客户都不会只采用一套软件。47 应用促进开源发展,理念走向务实应用。与欧美相比,国内的LAMP架构在企业关键应用中的应用还有待提高。目前我国LAMP应用存在的问题:国内开源数据库的应用已经开始起步了,但是开发还没有和开源技术挂钩。LAMP要发展,能否做出商业软件是关键。LAMP的商业化过程存在严重的问题。例如,PHP的产品给人留下的似乎就是,技术很好,但是客户体验服务没跟上,包括安装提示,升级以及Bug反馈等等服务都很粗糙,客户宁愿去选中商业化更浓的Java或.Net.毫无疑问的是,LAMP组合拥有其自身的价值,但是要小心地使用它。它是为新兴商业系统和概念业务系统的可行性寻找证据的优秀工具,但是它也需要适当的关心和关注以变得更加高效[11]。7.结束语47 LAMP组合以其简单性、开放性、低成本、安全性和适用性,受到越来越多的Web开发人员的欢迎和喜爱。虽然这些开放源代码程序本身并不是专门设计成同另外几个程序一起工作的,但由于它们都是影响较大的开源软件,拥有很多共同特点,这就导致了这些组件经常在一起使用。而且这些组件的兼容性在不断完善,在一起的应用情形变得更加普遍。并且它们为了改善不同组件之间的协作,创建了一些扩展功能。目前,几乎在所有的Linux发布版中都默认包含了这些产品。Linux操作系统、Apache服务器、MySQL数据库和PHP语言,这些产品共同组成了一个强大的Web应用程序平台。LAMP中的成员都是源码开放的,这意味着其代码的核心部分可以被免费使用,所有源码、文档都可以在相应的官方网站上获得,用户都可以自由复制、编译、分发和拷贝。任何一个LAMP项目都属于自己,并且可以自行处理。正是由于这种开源精神,才使得LAMP社区可以聚集众多爱好者,也使得LAMP有如此迅猛的发展,而且更新速度,以及发现和修正错误的速度都是非常快的。现在越来越多的供应商、用户和企业投资者逐渐认识到,使用LAMP单个组件的开源软件组成的平台,用来构建以及运行各种商业应用和协作构建各种网络应用程序,变得更加具有竞争力,更加吸引客户。LAMP无论是性能、质量还是价格都将成为企业、政府信息化所必须考虑的平台,并逐渐开始于面向企业级应用发展。Apache+PHP+MySQL被认为是在Linux平台上最佳组合之一。参考文献47 [1]LAMP从入门到精通[M].浙江:浙江大学出版社,2006.[2]JeffreyD.Ullman,JenniferWidom.AFirstCourseinDatabaseSystems[M].北京:清华大学出版社,1998.[3]JohnW.Satzinger等.系统分析与设计(英文版第4版)[M].北京:机械工业出版社,2008.[4]LAMP网站开发黄金组合LINUX+APACHE+MYSQL+PHP[M].北京:电子工业出版社,2004.[5]麦其.深入PHP4编程技术[M].北京:中国石化出版社,2000.[6]四维科技.PHP网络编程技术与实例[M].北京:人民邮电出版社,2006.[7]LUPA编著.LAMP系统工程师实用教程[M].北京:科学出版社,2008.[8]BillMcCarty.PHP4开发指南[M].北京:清华大学出版社,2002.[9]LAMP开发实践教程[M].北京:中国铁道出版社,2005.[10]LAMP系统工程师实用教程[M].北京:科学出版社,2008.[11]Linux操作系统之奥秘[M].北京:电子工业出版社,2007.[12]PHP+MySQL八大动态Web应用实战[M].北京:电子工业出版社,2005.[13]完美应用Ubuntu[M].北京:机械工业出版社,2006.[14]Linux系统最佳实践工具:命令行技术[M].北京:电子工业出版社,2007.[15]Apache模块开发指南=Theapachemodulesbook:applicationdevelopmentwithapache[M].北京:电子工业出版社,2003.47 文献综述基于LAMP的网络在线投票系统的设计与实现一、前言部分写作目的:介绍了lamp在网站建设中的相关知识,并且介绍了相关的成熟技术及成品,熟悉lamp技术的应用,以加深对lamp在网站建设这方面知识的理解,为此类系统的开发提供一定的启发性和指导性。相关概念:Linux+Apache+Mysql+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案[3]。争论焦点:目前,主要是在LAMP和Java之间有所争论。Java虽然技术很成熟,随着互联网开源潮流的迅速发展,全球IT业正迎来一个新的发展格局成长期。对全球的开源体系——LAMP(Linux、Apache、MYSQL、PHP)而言,其所代表的开源软件及应用,以其开放性、低成本、安全性、适用性以及可靠性能,正对传统软件、硬件和系统集成商产生巨大的冲击,同时,也给创新型IT企业、程序开发者创造了前所未有的机遇。作为软件行业风尖浪口的Java,几多褒贬,几多称赞。LAMP宣称,在Linux系统下开发软件不再需要层的概念了,Java不再是唯一的选择了[9]。LAMP在英语中是“灯”的意思,但是在IT行业当然不是那么简单的一个意思,这个术语在德国十分流行,代表了Linux平台上的Apache网站服务器、MySQL数据库以及Perl、Python或者PHP编程语言的结合。笔者相信,这个术语也会在我们中国的开放源代码界,乃至整个网络界开始流行,LAMP47 不仅会成为企业上网,政府上网的“明灯”,也应该会在企业内部实施的Intranet大有作为。LAMP开源软件——包括Linux操作系统、Apache网络服务器、MySQL数据库和PHP——正在进军主流计算市场[14]。Java与.Net工具一统商业软件开发领域已数年,但是具有易于开发、更新速度快、成本低的特点,LAMP被许多开发者视为“黄金组合”,在近几年中由LAMP集体开源厂家,或者确切的说LAMP开源自由社区吹响向主流计算市场发起进攻的号角。甚至在2005年的TechEd大会上,微软总裁鲍尔默以“微软有能力抵挡LAMP的进攻”的用词,将LAMP列为Windows和它的.Net开发软件的竞争者。IBM、Intel、HP、SUN等众多厂家提出开源贡献口号,收购开源公司;Intel、SAP投资PHP公司,Zend科技;LAMP的开源和发展潜力可见风头正盛。LAMP所代表的不仅仅是开放源码,它更是开发和实施高性能Web应用的重要平台。如果说Apache能代表LAMP的占有率的话,那么,采用LAMP的站点几乎就已经是占据了主要的市场,看看Netcraft每月的调查就可以知道Apache的流行程度。国外的开放源码站点,例如Apacheweek、MySQL.com、Perl.com等自不必说,现在国内的很多站点也开始扑向LAMP[10]。而Java的应用范围更加的宽广。可以开发桌面程序,手机游戏、DVD播放器及应用服务器等。Java与某些软件有着天然的内在联系,如Database,ERP等。其次,Java有大量的开源社区支持,看看Apache的Portfolio或SourceForge就明白这一点,这是Java发展快速的主要原因之一。采用Java作为平台而开发的软件,稳定地运行在各种操作系统上,相对竞争对手其它语言,如C++或C语言,极大的提高了人们的生产力。第三,Java开发平台的多样性。有多种JDK可以供选择,包括Sun、IBM、Bea及开源的JDK.同时,有大量的应用服务器可供选择,如开源阵营的JBoss应用服务器、Apache的Geronimo、Sun的Glassfish等等。除此之外,还有大量的商业服务器平台[11]。第四,和Java相比,PHP和Python等脚本语言更容易学习,它们在开发人员当中相当的流行,尤其是那些网页开发者。很多人,包括一些前Java语言的拥护者都认为,脚本语言和所谓的LAMP开源部件正在蓬勃发展,而这种发展减弱了Java的影响。但是,有一点经常被人遗忘,那就是,Java是一种两种层面上的语言:它既是一种虚拟机,同时它也是一种ASCII语言。很多人看不到Java作为虚拟机的神奇之处,因为非常多的脚本语言就是建立在这种虚拟机之上的。47 LAMP组合正在逐渐获得市场认可,但是它已经具有追上非开源竞争者的实力吗?生活中最好的东西真的是免费的吗?开源支持者们当然愿意让我们相信这一点。多年以来,他们已经将不断改进的LAMP组合作为构建商业系统并使之运转的一条免费之路[5]。但是LAMP组合也有一些潜在的缺点。开源组合和私有软件的一个明显区别在于新特性。私有软件提供商的发展依赖于增长率,也就是说需要不断增加销售额。这就使得他们要不断开发新品。另一方面,开源开发没有这样的环境,就是说创新的步伐经常要慢许多。你很少看到走在前沿的创新是开源产品。例如,当微软在SQLServer中开发XML作为一个本地数据类型的时候,开源MySQL数据库才刚刚将存储程序作为一个新特性,这比它的竞争对手落后了好几代[6]。同时扩展可能是对LAMP用户的一个挑战。使用集群计算机或刀片服务器和诸如RedHatLinux这样的企业级系统扩展到LAMP系统是可能的,但是这并不容易。在许多公司,LAMP仍然没有得到正式认可。但是在开源开发模式中,人人都可以做出贡献,这将推动LAMP比Java或.Net更快的前进。不过,LAMP也不可能把现有的Java和.Net两大阵营消灭,因为大的公司客户都不会只采用一套软件。应用促进开源发展,理念走向务实应用。与欧美相比,国内的LAMP架构在企业关键应用中的应用还有待提高。目前我国LAMP应用存在的问题:国内开源数据库的应用已经开始起步了,但是开发还没有和开源技术挂钩。LAMP要发展,能否做出商业软件是关键。LAMP的商业化过程存在严重的问题。例如,PHP的产品给人留下的似乎就是,技术很好,但是客户体验服务没跟上,包括安装提示,升级以及Bug反馈等等服务都很粗糙,客户宁愿去选中商业化更浓的Java或.Net.毫无疑问的是,LAMP组合拥有其自身的价值,但是要小心地使用它。它是为新兴商业系统和概念业务系统的可行性寻找证据的优秀工具,但是它也需要适当的关心和关注以变得更加高效[11]。二、主题部分1.LAMP的发展简史:Linux+Apache+Mysql+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。随着开源潮流的蓬勃发展,开放源代码的LAMP47 已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案.LAMP这个特定名词最早出现在1998年。当时,MichaelKunze为德国计算机杂志c't写作的一篇关于自由软件如何成为商业软件替代品的文章时,创建了LAMP这个名词,用来指代Linux操作系统、Apache网络服务器、MySQL数据库和PHP(Perl或Python)脚本语言的组合(由四种技术的开头字母组成)。由于IT世界众所周知的对缩写的爱好,Kunze提出的LAMP这一术语很快就被市场接受。O'Reilly和MySQLAB更是在英语人群中推广普及了这个术语。随之LAMP技术成为了开源软件业的一盏真正的明灯[10]。目前,几乎在所有的Linux发布版中都默认包含了“LAMPstack”的产品。这些产品组成了一个强大的Web应用程序平台。“LAMPstack”中的每一个组件都是一个FOSS(免费或者开源软件/FreeorOpenSourceSoftware)的实例。FOSS方法的好处有三个方面。第一,FOSS软件的性质意味着应用程序可以免费下载,能够让更广泛的人们不用付费就可以使用这个应用软件。这种免费的方式对于广大用户特别具有吸引力。这些用户如果不使用免费的软件就需要付费购买“专业”的商用软件工具。这在制作网站方面通常是一种昂贵的步骤。FOSS许可证是开放式的,因此对于基于FOSS技术的应用软件的使用和限制都非常少。不需要为软件的发布支付任何许可证费就可以开发和应用基于LAMP的工程。因此,这对业余爱好者和专业人员都非常有吸引力。FOSS技术(包括LAMP)的增长和使用的主要原因是因为用户能够访问其资源,修复故障和改善应用软件的性能都非常容易。与开源软件许可证结合在一起,这种方法为许多企业简化了开发过程,并且为企业提供了专有软件或者商业软件的限制中所没有的灵活性[14]。LAMP平台由几个组件组成,呈分层结构。每一层都提供了整个软件栈的一个关键部分:Linux和windows:Linux和windows处在最低层,提供操作系统。其他每个组件实际上也在其上运行。但是,并不一定局限于Linux和windows,如有必要,其他组件包括:MacOSX或UNIX。Apache:次低层是Apache,它是一个Web服务器。Apache提供可让用户获得Web页面的机制。Apache是一款稳定的、支持关键任务的服务器,Internet上超过65%的网站都使用它作为Web服务器。PHP组件实际上是在Apache中,动态页面可以通过Apache和PHP创建。MySQL:MySQL提供LAMP系统的数据存储端。有了MySQL,便可以获得一个非常强大的、适合运行大型复杂站点的数据库。在Web47 应用程序中,所有数据、产品、帐户和其他类型的信息都存放在这个数据库中,通过SQL语言可以很容易地查询这些信息[9]。PHP:PHP是一门简单而有效的编程语言,它像是粘合剂,可以将LAMP系统所有其他的组件粘合在一起。您可以使用PHP编写能访问MySQL数据库中的数据和Linux提供的一些特性的动态内容。Perl:Perl是一种脚本语言。这表示它并不编译成可执行程序,而是在运行时进行解释的一组指令(脚本)。Perl是代表“实际抽取和报告语言”(practicalextractionandreportlanguage)的字首组合词。Perl被誉为语言中的“瑞士军刀”。它功能强大且非常灵活。语言学家LarryWall在廿世纪八十年代后期在NASA担任系统管理员时开发了Perl。他创建Perl的目的是使构建报告的任务变得更简单。Perl现在用来执行许多任务。它也许是用于在Web上进行CGI(公共网关接口)编程最流行的语言。其原因就是Perl是一种功能非常强大的文本处理器,而Web编程主要就是文本处理。另外,使用Perl通常比使用C/C++、Java或Tcl更简单,而且它比Python更早出现。Perl被称为是一种“胶水语言”。所谓胶水语言,也就是说它是可以用来将许多元素连接在一起的语言[7]。Python:Python一种交互式面向对象的解释型编程语言。Python使用非常清晰的语法实现非常强大的功能。它具有模块、类、意外处理以及非常高级别的动态数据类型和动态定义。并且,它具有接口和库函数供多种系统调用。内建模块还可以使用C或C++语言方便地编写。对于用户界面的编程,Python同样能够胜任。Python可以运行在Linux、UNIX、Windows、DOS、OS/2、Mac以及Amiga等等多种环境下。Python虽然有版权,但完全可以免费使用和分发,甚至是为了商业用途。早期安装一个LAMP系统是比较负责的,随着Linux的普及现在安装一个LAMP系统变得比较简单另外许多Linux发行版本(Redhat、Debian)安装时可以自动配置Apache、php、mysql等组件[2]。2.国内外研究现状:目前,几乎在所有的Linux发布版中都默认包含了“LAMPstack”的产品。这些产品组成了一个强大的Web应用程序平台。“LAMPstack”中的每一个组件都是一个FOSS(免费或者开源软件/FreeorOpenSourceSoftware)的实例。FOSS方法的好处有三个方面。第一,FOSS软件的性质意味着应用程序可以免费下载,能够让更广泛的人们不用付费就可以使用这个应用软件。这种免费的方式对于广大用户特别具有吸引力。这些用户如果不使用免费的软件就需要付费购买“专业”47 的商用软件工具。这在制作网站方面通常是一种昂贵的步骤。FOSS许可证是开放式的,因此对于基于FOSS技术的应用软件的使用和限制都非常少。不需要为软件的发布支付任何许可证费就可以开发和应用基于LAMP的工程。因此,这对业余爱好者和专业人员都非常有吸引力。FOSS技术(包括LAMP)的增长和使用的主要原因是因为用户能够访问其资源,修复故障和改善应用软件的性能都非常容易。与开源软件许可证结合在一起,这种方法为许多企业简化了开发过程,并且为企业提供了专有软件或者商业软件的限制中所没有的灵活性[1]。3.未来发展趋势:LAMP组合以其简单性、开放性、低成本、安全性和适用性,受到越来越多的Web开发人员的欢迎和喜爱。虽然这些开放源代码程序本身并不是专门设计成同另外几个程序一起工作的,但由于它们都是影响较大的开源软件,拥有很多共同特点,这就导致了这些组件经常在一起使用。而且这些组件的兼容性在不断完善,在一起的应用情形变得更加普遍。并且它们为了改善不同组件之间的协作,创建了一些扩展功能。目前,几乎在所有的Linux发布版中都默认包含了这些产品。Linux操作系统、Apache服务器、MySQL数据库和PHP语言,这些产品共同组成了一个强大的Web应用程序平台。LAMP中的成员都是源码开放的,这意味着其代码的核心部分可以被免费使用,所有源码、文档都可以在相应的官方网站上获得,用户都可以自由复制、编译、分发和拷贝。任何一个LAMP项目都属于自己,并且可以自行处理。正是由于这种开源精神,才使得LAMP社区可以聚集众多爱好者,也使得LAMP有如此迅猛的发展,而且更新速度,以及发现和修正错误的速度都是非常快的[8]。现在越来越多的供应商、用户和企业投资者逐渐认识到,使用LAMP单个组件的开源软件组成的平台,用来构建以及运行各种商业应用和协作构建各种网络应用程序,变得更加具有竞争力,更加吸引客户。LAMP无论是性能、质量还是价格都将成为企业、政府信息化所必须考虑的平台,并逐渐开始于面向企业级应用发展。Apache+PHP+MySQL被认为是在Linux平台上最佳组合之一[2]。.三、总结部分47 本文较为详细地阐述了有关lamp方面的知识,回顾历史,立足现实,展望未来。今后随着信息技术的发展和lamp应用领域的逐步增加,lamp产品的差异化发展将逐步明显。lamp的尖端发展趋势也将包括智能化、一体化、集成化,这将极大地提高lamp在网站开发方面的应用性能及适用性。lamp是实现最简单的网站建设和开发,是网络和开发技术方面的革新与新的思路,我们应注重这方面的研究。四、参考文献[1]LUPA编著.LAMP系统工程师实用教程[M].北京:科学出版社,2008.[2]麦其.深入PHP4编程技术[M].北京:中国石化出版社,2000.[3]四维科技.PHP网络编程技术与实例[M].北京:人民邮电出版社,2006.[4]BillMcCarty.PHP4开发指南[M].北京:清华大学出版社,2002.[5]JeffreyD.Ullman,JenniferWidom.AFirstCourseinDatabaseSystems[M].北京:清华大学出版社,1998.[6]JohnW.Satzinger等.系统分析与设计(英文版第4版)[M].北京:机械工业出版社,2008.[7]LAMP网站开发黄金组合LINUX+APACHE+MYSQL+PHP[M].北京:电子工业出版社,2004.[8]LAMP从入门到精通[M].浙江:浙江大学出版社,2006.[9]LAMP开发实践教程[M].北京:中国铁道出版社,2005.[10]LAMP系统工程师实用教程[M].北京:科学出版社,2008.[11]Linux操作系统之奥秘[M].北京:电子工业出版社,2007.[12]PHP+MySQL八大动态Web应用实战[M].北京:电子工业出版社,2005.[13]完美应用Ubuntu[M].北京:机械工业出版社,2006.[14]Linux系统最佳实践工具:命令行技术[M].北京:电子工业出版社,2007.[15]Apache模块开发指南=Theapachemodulesbook:applicationdevelopmentwithapache[M].北京:电子工业出版社,2003.47 开题报告基于LAMP的网络在线投票系统的设计与实现 一、选题的背景、意义1.LAMP的发展简史:Linux+Apache+Mysql+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案。LAMP这个特定名词最早出现在1998年。当时,MichaelKunze为德国计算机杂志c't写作的一篇关于自由软件如何成为商业软件替代品的文章时,创建了LAMP这个名词,用来指代Linux操作系统、Apache网络服务器、MySQL数据库和PHP(Perl或Python)脚本语言的组合(由四种技术的开头字母组成)。由于IT世界众所周知的对缩写的爱好,Kunze提出的LAMP这一术语很快就被市场接受。O'Reilly和MySQLAB更是在英语人群中推广普及了这个术语。随之LAMP技术成为了开源软件业的一盏真正的明灯。目前,几乎在所有的Linux发布版中都默认包含了“LAMPstack”的产品。这些产品组成了一个强大的Web应用程序平台。“LAMPstack”中的每一个组件都是一个FOSS(免费或者开源软件/FreeorOpenSourceSoftware)的实例。FOSS方法的好处有三个方面。第一,FOSS软件的性质意味着应用程序可以免费下载,能够让更广泛的人们不用付费就可以使用这个应用软件。这种免费的方式对于广大用户特别具有吸引力。这些用户如果不使用免费的软件就需要付费购买“专业”47 的商用软件工具。这在制作网站方面通常是一种昂贵的步骤。FOSS许可证是开放式的,因此对于基于FOSS技术的应用软件的使用和限制都非常少。不需要为软件的发布支付任何许可证费就可以开发和应用基于LAMP的工程。因此,这对业余爱好者和专业人员都非常有吸引力。FOSS技术(包括LAMP)的增长和使用的主要原因是因为用户能够访问其资源,修复故障和改善应用软件的性能都非常容易。与开源软件许可证结合在一起,这种方法为许多企业简化了开发过程,并且为企业提供了专有软件或者商业软件的限制中所没有的灵活性。LAMP平台由几个组件组成,呈分层结构。每一层都提供了整个软件栈的一个关键部分:Linux和windows:Linux和windows处在最低层,提供操作系统。其他每个组件实际上也在其上运行。但是,并不一定局限于Linux和windows,如有必要,其他组件包括:MacOSX或UNIX。Apache:次低层是Apache,它是一个Web服务器。Apache提供可让用户获得Web页面的机制。Apache是一款稳定的、支持关键任务的服务器,Internet上超过65%的网站都使用它作为Web服务器。PHP组件实际上是在Apache中,动态页面可以通过Apache和PHP创建。MySQL:MySQL提供LAMP系统的数据存储端。有了MySQL,便可以获得一个非常强大的、适合运行大型复杂站点的数据库。在Web应用程序中,所有数据、产品、帐户和其他类型的信息都存放在这个数据库中,通过SQL语言可以很容易地查询这些信息。PHP:PHP是一门简单而有效的编程语言,它像是粘合剂,可以将LAMP系统所有其他的组件粘合在一起。您可以使用PHP编写能访问MySQL数据库中的数据和Linux提供的一些特性的动态内容。Perl:Perl是一种脚本语言。这表示它并不编译成可执行程序,而是在运行时进行解释的一组指令(脚本)。Perl是代表“实际抽取和报告语言”(practicalextractionandreportlanguage)的字首组合词。Perl被誉为语言中的“瑞士军刀”。它功能强大且非常灵活。语言学家LarryWall在廿世纪八十年代后期在NASA担任系统管理员时开发了Perl。他创建Perl的目的是使构建报告的任务变得更简单。Perl现在用来执行许多任务。它也许是用于在Web上进行CGI(公共网关接口)编程最流行的语言。其原因就是Perl是一种功能非常强大的文本处理器,而Web编程主要就是文本处理。另外,使用Perl通常比使用C/C++、Java或Tcl更简单,而且它比Python更早出现。Perl被称为是一种“胶水语言”。所谓胶水语言,也就是说它是可以用来将许多元素连接在一起的语言。Python:Python一种交互式面向对象的解释型编程语言。Python使用非常清晰的语法实现非常强大的功能。它具有模块、类、意外处理以及非常高级别的动态数据类型和动态定义。并且,它具有接口和库函数供多种系统调用。内建模块还可以使用C或C++语言方便地编写。对于用户界面的编程,Python同样能够胜任。Python可以运行在Linux、UNIX、Windows、DOS、OS/2、Mac以及Amiga等等多种环境下。47 Python虽然有版权,但完全可以免费使用和分发,甚至是为了商业用途。早期安装一个LAMP系统是比较负责的,随着Linux的普及现在安装一个LAMP系统变得比较简单另外许多Linux发行版本(Redhat、Debian)安装时可以自动配置Apache、php、mysql等组件。2.国内外研究现状:目前,几乎在所有的Linux发布版中都默认包含了“LAMPstack”的产品。这些产品组成了一个强大的Web应用程序平台。“LAMPstack”中的每一个组件都是一个FOSS(免费或者开源软件/FreeorOpenSourceSoftware)的实例。FOSS方法的好处有三个方面。第一,FOSS软件的性质意味着应用程序可以免费下载,能够让更广泛的人们不用付费就可以使用这个应用软件。这种免费的方式对于广大用户特别具有吸引力。这些用户如果不使用免费的软件就需要付费购买“专业”的商用软件工具。这在制作网站方面通常是一种昂贵的步骤。FOSS许可证是开放式的,因此对于基于FOSS技术的应用软件的使用和限制都非常少。不需要为软件的发布支付任何许可证费就可以开发和应用基于LAMP的工程。因此,这对业余爱好者和专业人员都非常有吸引力。FOSS技术(包括LAMP)的增长和使用的主要原因是因为用户能够访问其资源,修复故障和改善应用软件的性能都非常容易。与开源软件许可证结合在一起,这种方法为许多企业简化了开发过程,并且为企业提供了专有软件或者商业软件的限制中所没有的灵活性。3.未来发展趋势:LAMP组合以其简单性、开放性、低成本、安全性和适用性,受到越来越多的Web程度开发人员的欢迎和喜爱。虽然这些开放源代码程序本身并不是专门设计成同另外几个程序一起工作的,但由于它们都是影响较大的开源软件,拥有很多共同特点,这就导致了这些组件经常在一起使用。而且这些组件的兼容性在不断的完善,在一起的应用情形变得更加普遍。并且它们为了改善不同组件之间的协作,创建了一些扩展功能。目前,几乎在所有的Linux发布版中都默认包含了这些产品。Linux操作系统、Apache服务器、MySQL数据库和PHP语言,这些产品共同组成了一个强大的Web应用程序平台。LAMP中的成员都是源码开放的,这意味着其代码的核心部分可以被免费使用,所有源码、文档都可以在相应的官方网站上获得,用户都可以自由复制、编译、分发和拷贝。任何一个LAMP项目都属于自己,并且可以自行处理。正是由于这种开源精神,才使得LAMP社区可以聚集众多爱好者,也使得LAMP有如此迅猛的发展,而且更新速度,以及发现和修正错误的速度都是非常快的。47 现在越来越多的供应商、用户和企业投资者逐渐认识到,使用LAMP单个组件的开源软件组成的平台,用来构建以及运行各种商业应用和协作构建各种网络应用程序,变得更加具有竞争力,更加吸引客户。LAMP无论是性能、质量还是价格都将成为企业、政府信息化所必须考虑的平台,并逐渐开始于面向企业级应用发展。Apache+PHP+MySQL被认为是在Linux平台上最佳组合之一。3.选题的意义:用LAMP(Linux+Apache+Mysql+Php)技术开发一个网络在线投票系统,用户基于在线投票系统可以实现在线投票、查看投票结果,加深对lamp系统的认识,进一步学习网站开发方法,进而更加熟练的掌握并运用Lamp。二、研究的基本内容与拟解决的主要问题用LAMP(Linux+Apache+Mysql+Php)技术开发一个网络在线投票系统,用户基于在线投票系统可以实现在线投票、查看投票结果,管理员则可以进行添加投票,具有添加主题、查看主题、修改主题、删除主题等功能,并要求开发的系统能初步达到实用的水平。拟解决的主要问题:1.addingthetheme添加主题2.checkthetheme查看主题3.revisethetheme修改主题4.Deletethetheme删除主题三、研究的方法与技术路线、研究难点,预期达到的目标1.研究的方法:熟悉LAMP(Linux+Apache+Mysql+PHP)网站架构,该架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架。2.技术路线:47 首先,去对应的网站下载最新版本的源码。为了保持系统目录分布的一致性,建议把他们解开到/usr/local/src目录:#cd/usr/local/src#tarxvfzfilename.tar.gz先介绍MySQL的安装:#cd/usr/locl/src/mysql-3.23.35#./configure--prefix=/usr/local/mysql这样就把MySQL的安装目录设置为/usr/local/mysql,然后运行make来编译源代码,接下来就可以用makeinstall来安装了。安装完毕后,需要把MySQL库加入系统,采用ldconfig命令来实现:#echo"/usr/local/mysql/lib/mysql">>/etc/ld.so.conf#ldconfig-v|greplibmysqlclient然后可以看到系统返回:libmysqlclient.so.10=>libmysqlclient.so.10.0.0让MySQL在启动时自动运行:#echo"/usr/local/mysql/bin/safe_mysqld>/dev/null&">>/etc/rc.d/rc.local接下来初始化数据库(切换到/usr/local/mysql目录):#./scripts/mysql_install_db启动MySQL服务:#bin/safe_mysqld>/dev/null&增加路径:#PATH="$PATH:/usr/local/mysql/bin"测试MySQL:47 #mysqladminversion如果能返回MySQL的所有信息,就表示您的MySQL已经安装成功了。下面为了安全起见,需要给root用户(数据库中的超级用户),设置口令:#mysql-h-uroot-p按照提示输入口令以后,MySQL的设置就算大功告成了。接下来的部分就是Apache和PHP的安装了。如果你的系统已经存在Apache,那么需要首先做好备份。然后进入Apache的源代码目录:#cd/usr/local/src/apache_1.3.19输入配置命令:#./configure--prefix=/usr/local/apache然后改变到PHP的源代码目录:#cd/usr/local/src/php-4.0.4pl1配置PHP的编译命令:#./configure--with-apache=../apache_1.3.19--with-mysql=/usr/local/mysql运行make和makeinstall,PHP就安装成功了。改变目录到Apache源代码所在:#cd../apache_1.3.19因为增加了PHP模块,所以需要重新配置Apache的编译文件。#./configure--prefix=/usr/local/apache--activate-module=src/modules/php4/libphp4.a47 (注意这里的路径,后面的文件确实是不存在的,不要担心。)然后运行make和makeinstall您就可以在/usr/local/apache目录下看到apache的几个目录了。为了让Apache能认识那些以PHP结尾的文件,我们需要修改/usr/local/apache/conf/httpd.conf找到下面的行,把行首用作注释的#号去掉:AddTypeapplication/x-httpd-php.php这样,Web服务器就能认识那些.php结尾的文件,否则当您浏览网站时,浏览器会提示您存盘。为了让Apache自动认识index.php作为首页我们还必须修改DirectoryIndex行,添加index.php:DirectoryIndexindex.htmlindex.php然后,重新启动Apache:#killall-HUPhttpd可以在/usr/local/apache/htdocs目录下,建立一个testphp.php的文件,内容为:?phpphpinfo();?〉然后在浏览器上输入http://localhost/testphp.php就应该看到你当前的PHP设置情况。以上介绍的Apache/PHP安装方法为静态编译的方法。以后每次有新的版本出来或者添加新的模块时,必须重新编译Apache,需要花费较长的时间,我们不推荐这种方法,Apache1.3以后的版本采用了DSO(动态共享对象)技术,实现了模块的动态安装,这种方法不仅适用于PHP,对其他模块,例如mod_perl,mod_python都适用,因此,笔者推荐采用这种方法:编译Apache:47 #./configure--prefix=/usr/local/apache--enable-module=most--enable-shared=max#make#makeinstall然后编译PHP:#./configure--with-apxs=/usr/local/apache/bin/apxs--with-mysql=/usr/local/mysql#make#makeinstall之后的步骤和静态部分一样,主要就是修改httpd.conf。区别两种安装方法最简单的办法就是使用命令:#httpd-l看输出结果,静态编译没有mod_so.c模块3.研究难点:用Lamp设计网站投票系统时候的数据库设计和用PHP设计网站的功能利用上,还有投票系统具有添加主题、查看主题、修改主题、删除主题等功能比较繁琐。4.预期目标:用户基于在线投票系统可以实现在线投票、查看投票结果,管理员则可以进行添加投票,具有添加主题、查看主题、修改主题、删除主题等功能,并要求开发的系统能初步达到实用的水平。四、论文详细工作进度和安排第七学期第10周至第18周(2011年01月06日前):文献检索和资料收集,完成毕业论文(设计)文献综述、开题报告和外文翻译;第八学期第1周 至第3周(2011年03月11日前):47 撰写论文提纲,完成毕业论文(设计)初稿、需求分析和概要设计;第八学期第4周 至第12周(2011年05月13日前):详细设计、系统调试、和毕业论文(设计)完成定稿;第八学期第13周(2011年05月20日前):完成应用软件系统的设计和毕业论文(设计)送指导老师和评阅老师评阅,准备答辩;第八学期第14周:参加毕业论文(设计)答辩。五、主要参考文献:[1]LUPA编著.LAMP系统工程师实用教程[M].北京:科学出版社,2008.[2]麦其.深入PHP4编程技术[M].北京:中国石化出版社,2000.[3]四维科技.PHP网络编程技术与实例[M].北京:人民邮电出版社,2006.[4]BillMcCarty.PHP4开发指南[M].北京:清华大学出版社,2002.[5]JeffreyD.Ullman,JenniferWidom.AFirstCourseinDatabaseSystems[M].北京:清华大学出版社,1998.[6]JohnW.Satzinger等.系统分析与设计(英文版第4版)[M].北京:机械工业出版社,2008.[7]LAMP网站开发黄金组合LINUX+APACHE+MYSQL+PHP[M].北京:电子工业出版社,2004.[8]LAMP从入门到精通[M].浙江:浙江大学出版社,2006.[9]LAMP开发实践教程[M].北京:中国铁道出版社,2005.[10]LAMP系统工程师实用教程[M].北京:科学出版社,2008.[11]Linux操作系统之奥秘[M].北京:电子工业出版社,2007.[12]PHP+MySQL八大动态Web应用实战[M].北京:电子工业出版社,2005.[13]完美应用Ubuntu[M].北京:机械工业出版社,2006.[14]Linux系统最佳实践工具:命令行技术[M].北京:电子工业出版社,2007.[15]Apache模块开发指南=Theapachemodulesbook:applicationdevelopmentwithapache[M].北京:电子工业出版社,2003.47 47

  • 当前文档最多预览五页,下载文档查看全文

    此文档下载收益归作者所有

    当前文档最多预览五页,下载文档查看全文
    温馨提示:
    1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
    2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
    3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
    4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
    关闭