PHP课程设计文档格式.docx
- 文档编号:18163522
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:33
- 大小:371.54KB
PHP课程设计文档格式.docx
《PHP课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《PHP课程设计文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
全部操作都可以基于浏览器进行。
第二章总体设计
2.1系统目标
对于典型的数据库管理系统,尤其是对像论坛这样的数据流量特别大的网络管理系统,必须要满足使用方便、操作灵活等设计需求。
本系统在设计时应满足以下几个目标:
1.采用人机对话的操作方式,界面设计美观友好,信息查看灵活、方便、快捷、准确,数据存储安全可靠。
2.全面展示系统内所有帖子,方便直接查看。
3.为用户提供一个方便、快捷的主题信息查看功能。
4.实现在线发表帖子。
5.提供登录模块,主要用于发表帖子时留下发表者的信息,和对发表的帖子进行管理。
6.用户随时都可以查看自己发表的帖子。
7.对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。
8.系统最大限度地实现了易维护性和易操作性。
9.系统运行稳定安全可靠。
2.2系统功能结构
用户访问论坛首页面后,可进行查看版面下根贴信息、查看自己发表的帖子、查看精华帖子、查看根贴信息、用户注册等功能。
用户在此BBS论坛中通过注册成为该网站的真正用户并成功登录系统后,可进行发表帖子、回复帖子、查看自己发表的帖子,删除自己发表的帖子,以及删除自己发表帖子下回复等操作。
BBSt论坛系统功能结构图如图下图所示。
图2-1系统功能结构图
2.2.1系统功能模块
1.用户注册
在登录页面单击“注册“链接即可进入用户注册页面,此页面提供填写用户注册信息的表单,注册信息包括用户名、密码、确认密码,性别,爱好等等,其中有些信息是必须填的,有些是可以选填的。
用户填写完表中信息后,单击确认按钮,如果通过验证,即可成为BBS系统注册用户,此时用户在前台登录页面中登录进去之后,即可使用前台的全部功能。
2.用户登陆
用户进入论坛首页,即可点击登录按钮,进入用户登录页面,此页面提供用于填写用户名与密码的表单,页面中有一个【登录】按钮和【注册】按钮,分别提供给3中身份的用户使用:
对于已经在论坛注册的用户,在页面输入用户名及密码后,单击登录按钮,如果用户名和密码通过验证,则进入论坛,可以使用前台的全部功能。
对于游客,单击“游客”链接即可进入论坛,游客可以浏览其他用户发表的文章,但不允许在论坛中发表文章。
对于想注册的用户,单击“注册”链接即可进入注册页面,在填写完相关信息后,即成为BBS系统的用户,拥有了普通用户的所有权限。
3.帖子管理
管理员可以对所有帖子进行转移,置顶,删除,加精等操作,版主可以转移本版块帖子,也可以对本板块帖子进行置顶,删除,加精等操作。
4.帖子发表
注册用户进入某一论坛之后,可以单击主题列表页面上的“快速留言“链接,以使用发表文章的功能,系统将转至发表文章页面,其中填写的内容包括文章的标题和内容。
5.帖子回复
在某一话题的帖子列表页面中,注册用户可以单击右上角的“回复主题“链接,发表对该主题的回复内容。
6.帖子浏览
注册用户可以任意浏览权限内的帖子,未注册用户只能浏览,不能回复。
2.2.3系统各模块流程
填写个人信息——信息检验——保存用户信息
图2-2用户注册流程图
2.用户登陆
输入用户名和密码——信息验证---基于角色授权
图2-3用户登录图
3.帖子发表
注册用户——选择版块发表主题——主题持久化
图2-4帖子发表图
用户——针对主题发表回复——回复持久化
6.帖子管理
持有管理员或版主权限——转移,置顶,删除等操作
2.3系统开发环境
2.3.1开发环境
Ø
在开发此论坛的时候,需要具备下面的软件环境:
✓操作系统:
Windows10
✓Web服务器:
Apache2.4
✓PHP:
Version5.5.29
✓数据库:
MysqlVer14.14Distrib5.6.23,forWin64(x86_64)
✓浏览器:
IE10+
✓分辨率:
最佳效果为1024×
768像素
✓开发工具:
Hbuilder,免费开源的移动开发工具
✓开发框架:
ThinkPHP3.2.2
2.3.2系统平台体系结构的选择
在应用开发领域中,目前系统平台的体系结构主要有两种,即C/S(Client/Server)结构和B/S(Brower/Server)结构。
C/S结构,即大家熟知的客户机和服务器结构。
它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
B/S结构,即浏览器和服务器结构。
它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN等)访问和操作共同的数据库;
它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。
特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。
传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。
由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用,而且代价高,效率低。
B/S结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。
在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。
因此本系统采用了B/S结构。
2.3.3PHP语言
PHP的特性包括:
✓PHP独特的语法混合了C、Java、Perl以及PHP自创新的语法。
✓PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;
PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。
✓PHP支持几乎所有流行的数据库以及操作系统。
✓最重要的是PHP可以用C、C++进行程序的扩展!
PHP的优势:
✓开放源代码,所有的PHP源代码事实上都可以得到。
✓免费性,和其它技术相比,PHP本身免费且是开源代码。
✓快捷性,程序开发快,运行快,技术本身学习快。
嵌入于HTML:
因为PHP可以被嵌入于HTML语言,它相对于其他语言。
编辑简单,实用性强,更适合初学者。
✓跨平台性强,由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS、MacOS、Android等平台
✓效率高,PHP消耗相当少的系统资源。
✓图像处理,用PHP动态创建图像,PHP图像处理默认使用GD2。
且也可以配置为使用imagemagick进行图像处理。
✓面向对象,在php4,php5中,面向对象方面都有了很大的改进,php完全可以用来开发大型商业程序。
✓专业专注,PHP支持脚本语言为主,同为类C语言。
2.3.4ThinkPHP
ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。
最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。
ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。
并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。
ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。
ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite以及PDO等多种数据库,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。
作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。
并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注您的业务逻辑。
ThinkPHP的优势:
模型(M):
模型的定义由Model类来完成。
Model类位于项目目录下面的LibModel目录。
控制器(C):
应用控制器(核心控制器)和Action控制器都承担了控制器的角色,区别在于Action控制器完成业务过程,而应用控制器(App类)负责调度控制。
Action控制器位于项目目录下面的LibAction目录。
视图(V):
模板的实现是和框架无关的,做到了100%分离,可以独立预览和制作。
模板目录位于项目目录下面的Tpl目录。
2.3.5MySQL数据库
MySQL数据库的优势:
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,.NET和Tcl等。
4.支持多线程,充分利用CPU资源。
5.优化的SQL查询算法,有效地提高查询速度。
6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
7.提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。
8.提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
9.提供用于管理、检查、优化数据库操作的管理工具。
10.支持大型的数据库。
可以处理拥有上千万条记录的大型数据库。
11.支持多种存储引擎。
12.MySQL是开源的,所以你不需要支付额外的费用。
13.MySQL使用标准的SQL数据语言形式。
14.MySQL对PHP有很好的支持,PHP是目前最流行的Web开发语言。
15.MySQL是可以定制的,采用了GPL协议,你可以修改源码来开发自己的MySQL系统。
16.在线DDL/更改功能,数据架构支持动态应用程序和开发人员灵活性(5.6[3]新增)
17.复制全局事务标识,可支持自我修复式集群(5.6[3]新增)
18.复制无崩溃从机,可提高可用性(5.6[3]新增)
19.复制多线程从机,可提高性能(5.6[3]新增)
第三章数据库设计
3.1数据库分析
通过对实现Web端论坛的基本功能的内容和数据分析,设计如下面的数据项和数据结构。
20.用户信息,包括的数据项有:
用户编号,名字,性别,密码,邮箱,电话,注册时间等。
21.帖子信息,包括的数据项有:
帖子编号,帖子标题,帖子内容,帖子发表时间,发表帖子用户编号,帖子所属父帖编号(用于回复帖),帖子的回复数据。
3.2数据库概念设计
根据上面设计规划出的实体,对各个实体具体的描述E-R图如下:
3.3数据库逻辑设计
用户表
字段名
数据类型
长度
说明
描述
id
int
11
非空,主键
用户编号
username
varchar
50
用户名
password
密码
sex
2
男,女
性别
邮箱
add_time
timestamp
非空
注册时间
帖子表
帖子编号
pid
父帖编号
title
255
帖子标题
content
text
帖子内容
reply
回复数
user_id
非空,外键
post_time
发表时间
3.4数据库物理结构实现
根据以上的逻辑分析所得到表的关系,我们使用T-SQL语言设计得到数据库和数据表。
/*
NavicatMySQLDataTransfer
SourceServer:
localhost_3306
SourceServerVersion:
50623
SourceHost:
127.0.0.1:
3306
SourceDatabase:
thinkphp
TargetServerType:
MYSQL
TargetServerVersion:
FileEncoding:
65001
Date:
2016-01-2116:
05:
30
*/
SETFOREIGN_KEY_CHECKS=0;
------------------------------
--Tablestructureforbbs_article
DROPTABLEIFEXISTS`bbs_article`;
CREATETABLE`bbs_article`(
`id`int(10)unsignedNOTNULLAUTO_INCREMENT,
`title`varchar(255)COLLATEutf8_unicode_ciDEFAULTNULL,
`content`mediumtextCOLLATEutf8_unicode_ci,
`post_time`timestampNULLDEFAULTCURRENT_TIMESTAMP,
`user_id`int(11)DEFAULTNULL,
`pid`int(11)DEFAULT'
0'
`replynum`int(11)DEFAULT'
PRIMARYKEY(`id`)
)ENGINE=InnoDBAUTO_INCREMENT=38DEFAULTCHARSET=utf8COLLATE=utf8_unicode_ci;
--Tablestructureforbbs_user
DROPTABLEIFEXISTS`bbs_user`;
CREATETABLE`bbs_user`(
`user_name`varchar(50)COLLATEutf8_unicode_ciDEFAULTNULL,
`password`varchar(255)COLLATEutf8_unicode_ciDEFAULTNULL,
`sex`varchar
(2)COLLATEutf8_unicode_ciDEFAULT`男`,
`email`varchar(50)COLLATEutf8_unicode_ciDEFAULTNULL,
`add_time`timestampNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP,
)ENGINE=InnoDBAUTO_INCREMENT=6DEFAULTCHARSET=utf8COLLATE=utf8_unicode_ci;
第四章编程实现
4.1首页界面设计与实现
4.1.1首页界面设计
本系统中所有页面都采用了一种页面框架,该页面框架采用垂直分栏结构,分为4个区域:
页头、菜单栏、内容显示区和页尾。
网站前台首页面的运行结果如图所示。
实际前台页面在ThinkPHP开发中是一个静态的模板,然后由Smarty视图引擎,实现前台静态页面和数据的结合生成。
页面是由DIV+CSS实现的,这里不包含CSS代码,实现页面代码如下:
<
!
DOCTYPEhtml>
html>
head>
metacharset="
UTF-8"
>
title>
论坛首页<
/title>
linkrel="
stylesheet"
type="
text/css"
href="
__ROOT__/Public/css/main.css"
/>
__ROOT__/Public/Font-Awesome-3.2.1/css/font-awesome.min.css"
/head>
body>
divclass="
top"
<
brand"
WEB课设论坛<
/div>
brand-sm"
——因为有了论坛,所以我们更出色<
userinfopull-right"
<
ifcondition="
$is_logined['
loginflag'
]eqTRUE"
<
span>
您好!
{$is_logined['
username'
]} <
ahref="
{$logouturl}"
onclick="
returnconfirm('
确定退出'
);
"
退出<
/a>
/span>
else/>
{$loginurl}"
登录<
{$registerurl}"
注册<
/if>
menu"
dl>
dd>
{$index}"
首页<
/dd>
{$personal}"
个人中心<
/dl>
main"
dlclass="
articlelist"
foreachname="
article_list"
item="
article"
<
label>
主题:
/label>
aclass="
title"
{$article['
url'
]}"
title'
]}<
info"
<
iclass="
icon-user"
/i>
发表者:
icon-calendar"
时间:
post_time'
icon-comments-alt"
评论:
replynum'
/foreach>
footer>
Copyright©
2015-2020|SuperLAllrightsreserved|赣ICP备15004209号
/footer>
/body>
/html>
4.1.2前面显示概述
论坛的前台显示主要包括:
首页面的论坛类别显示、某版面下根贴的列表显示、我的帖子的列表显示、精华帖子的列表显示、搜索后根帖的列表显示和根贴与回复贴内容的详细显示。
其中在根贴的列表显示系列中,我的帖子、精华帖子和搜索这3个功能的实现是相似的,最终都是生成一个查询SQL语句,并通过执行该SQL语句获取一个符合条件的信息集合,然后返回页面进行显示。
不同的是它们生成SQL语句的方式,列表显示我的帖子,需要获取当前登录用户的用户名,然后生成查询SQL语句;
列表显示精华贴,要执行的是一个固定、已知的SQL语句
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PHP 课程设计