发布时间:2022-09-12 21:19:45 点击数:422
目录
第一章 开发背景和意义
1.1. 开发背景
1.2. 开发的目的与意义
第二章 关键技术研究
2.1. PHP技术
2.2. MYSQL数据库
2.3. B/S 架构
第三章 可行性分析
3.1. 技术可行性
3.2. 经济可行性
第四章 系统总体设计分析
4.1. 文件组织
4.2. 资源管理
4.3. 前台模块设计
4.4. 后台模块设计
4.5. 数据库结构分析
第五章 功能的实现与代码
5.1. 首页的设计
5.2. 极限运动
5.3. 留言列表
5.4. 投票页
5.5. 相册列表
5.6. 注册页面
5.7. 其他代码讲解
5.8. 管理员登录
5.9. 留言管理
5.10. 留言查看
5.11. 投票记录
5.12. 资源管理
5.13. 资源编辑
第六章 总结
参考文献
开发背景和意义
开发背景
极限运动于19世界起源于欧美国家,并于上世纪八九十年代传入我国就得到了迅速发展。甚至有一部分运动还进入了奥运比赛项目。自2014年冬奥会的举办极限运动迎来了更繁荣的发展受到了广泛年轻人的欢迎。极限运动所倡导的追求自我,挑战自我的理念更是符合当下年轻人的个性。
极限运动不仅在追求超越生理极限,更高更快更强。也更强调了,人们如何勇敢的面对自己跨越心理障碍所产生的成就感,极限运动所具有的独特的文化和精神属性,让它成为一种具有创意性的运动项目,并引领着现代体育运动发展。
开发的目的与意义
极限运动虽然是上世纪末引入我国,但由于其运动所具有的危险,性与特殊性,并不被广泛国人熟悉和知晓。人们对极限运动的不了解。甚至对于极限运动的恐惧心理严重影响了极限运动在我国的发展。
介于此,创建一个极限运动主题的网站为广大极限运动爱好者提供一个信息交流平台就具有独特的意义。
关键技术研究
PHP技术
PHP服务器端语言,PHP语言的风格类似于C语言。具有可嵌入式让其可以在HTML文档中执行的特点,又因为其易于学习和开源特点,得到了广泛的应用。
PHP具有以下特点
开源,面向对象,跨平台,执行效率高,易学习。
MYSQL数据库
MYSQL是Oracle旗下的一款关系型数据库,它具有拥有体积小,又因为其将不同的数据存储在不同的表,进行分区存储达到了访问速度快,更加灵活等优势。同时其具有:支持多处理器和多线程;相对其他数据库体积小,速度快、成本低;性能强;是与PHP搭配的良好的开发环境;多平台支持。使其成为PHP开发的绝佳搭档。
B/S 架构
B/S架构是一种浏览器与服务器的架构模式,B就是浏览器,S就是服务器,使用B/S的架构模式,把代码等核心模块放到了服务器,用户通过浏览器访问,浏览器进行访问服务器并返回相应的数据信息并展示在表现层,这样的模式让界面层,业务逻辑层,数据访问层分开。大大的简化了系统的开发维护和使用成本。当然B/S在跨浏览器也有不尽如人意的时候特别是在安全上。
可行性分析
技术可行性
网站采用哪些有较为成熟的PHP加MY]SQL数据库的开发方案,目前全世界大部分的商业网站信息管理系统都应用了这套方案。 同时PHP所具有的学习成本低,代码效率高等优点让整个系统的开发门槛更低,同时PHP具有一定的跨平台可重用性。在windows编写的代码可以在Linux中运行降低了复用的成本。
经济可行性
极限运动作为一个朝阳产业,在我国盛行时间短。相信随着人们的生活水平的提高,机械运动能源的不断拓展,人们对极限运动的了解不断增加人们可以更好的认识到极限运动的好处,建立一个极限运动网站,从长远来看投资是可以得到相应回报的。通过通过推广极限运动,招募极限运动会员推广极限运动装备,推广极限运动协会等形式都可以产生盈利。极限运动爱好者通过粉丝效应可以产生更好的社会效益和经济效益。
本系统满足了极限运行网站的基础功能,前期只需要比较低配置的电脑就运行起来,后期也可以随着服务器用户访问量的增加进行服务器的扩容升级。
系统总体设计分析
设计遵循动静分明、资源分类、模块分离的原则。所谓的动静分明,就是要分析网页的结构,弄明白哪些是静态不变的内容,哪些是会改变的内容,静态的网页部分采用html代码编写,动态的内容采用PHP来实现。特别是动态部分,并采用了MYSQL数据库,要涉及哪几个页面,用到哪些数据,定义哪些变量,实现哪些功能,如何实现等等。
所谓资源分类,是对网站资源的合理管理,不同类型的资源分门别类,不致引起混乱,更易于后期维护。所谓模块分离则是指对于一些复杂的功能或者重复性的工作,要采用模块化的设计,定义特定功能的函数,以方便调试和维护并提高代码的利用率。
文件组织
通过网页结构的分析,我们发现网页的总体布局是不变的,特别的顶部和左部区块不变,变化的是内容区。而内容区又有四个页面,一个是首页,一个是用户列表页,还有一个注册页面的展示。
初次载入页面及所需要的参数或变量初始化由config.inc.php,其中配置了数据库的地址,数据库表,连接的帐号和密码。页面之间的包含或调用关系如下图所示:
资源管理
为了方便对网站资源的管理和维护,需要合理的对资源进行分类。本网站中大部分php文件直接存放于根目录下,而对于html文件、网页素材图文件分别建了文件夹进行保存。在实际的网站建设中,还涉及一类数据库文件,最好也要单独建文件夹保存。
前台模块设计
后台模块设计
数据库结构分析
管理员表 admin:
名字
类型
空
默认
注释
主键
id
mediumint(3)
否
无
是
username
varchar(40)
否
无
用户名
否
password
varchar(40)
否
无
密码
否
投票表 case:
名字
类型
空
默认
注释
主键
id
mediumint(3)
否
无
是
title
varchar(40)
否
无
主题名
否
ip
varchar(20)
否
无
否
date
date
否
无
否
留言表 note:
名字
类型
空
默认
注释
主键
id
mediumint(3)
否
无
是
title
varchar(40)
否
无
标题
否
content
text
否
无
内容
否
type
varchar(8)
是
NULL
否
uid
int(5)
是
NULL
用户ID
否
date
date
是
NULL
时间
否
相册表 photos:
名字
类型
空
默认
注释
主键
id
mediumint(3)
否
无
是
title
varchar(255)
否
无
标题
否
img
varchar(80)
否
无
图片
否
uid
int(6)
否
无
用户ID
否
date
datetime
否
无
否
用户表 user:
名字
类型
空
默认
注释
主键
id
mediumint(6)
否
无
是
username
varchar(20)
否
无
用户名
否
password
varchar(40)
否
无
密码
否
sex
char(2)
否
无
性别
否
age
int(3)
是
NULL
否
datetime
datetime
否
无
否
功能的实现与代码
首页的设计
页面分为三块区域,顶部标题、左部模块列表和内容区。用户的功能是以列表的方式展示注册用户信息。
首页默认进入包含有一个导航,登录框,还有一些景点图片展示。点击“用户列表”可进入注册用户的列表。网页居中处可以进行用户注册。注册成功后可以返回首页进行登录,登录状态通过COOKIE可以被保存。
首页登录后:
用户登录后显示当前用户的登录用户名以及退出按钮,并显示网站的访问次数。
代码如下:
<?php
error_reporting(0);
function displayCounter()
{
$counterFile = "num.txt";
if (!file_exists($counterFile)) {
exec("echo 0 > $counterFile");
}
$fp = fopen($counterFile, "rw");
$num = fgets($fp, 10);
$num += 1;
print "您是<b>" . " $num" . "</b>访客!";
exec("rm -rf $counterFile");
exec("echo $num > $counterFile");
}
displayCounter();
?>
极限运动
本页面展示了5种极限运动以及5种极限运动的简单介绍,采用了图文混排的方式,使页面看起来更加生动。
留言列表
本页面展示了所有用户的留言,用户可以在该页面查看其他用户的留言记录。实现信息的透明化,公开化。
添加留言代码:
<?php
require_once 'conn.php';
if (isset($_GET['action'])) {
if (empty($_POST['content']) || empty($_POST['title'])) {
echo "<script type='text/javascript'>alert('请将留言信息填写完整!');history.back();</script>";
} else {
$query = mysqli_query($_conn, "insert into note (title,content,type,uid,date) values ('{$_POST['title']}','{$_POST['content']}','{$_POST['type']}','{$_SESSION['user']['id']}',now())");
echo "<script type='text/javascript'>alert('留言成功!');history.back();</script>";
}
}
?>
投票页
用户可以在上页面为自己喜欢的极限运动投票。
投票代码:
<?php
require_once 'conn.php';
if (isset($_GET['action'])) {
if (empty($_POST['content']) || empty($_POST['title'])) {
echo "<script type='text/javascript'>alert('请将留言信息填写完整!');history.back();</script>";
} else {
$query = mysqli_query($_conn, "insert into note (title,content,type,uid,date) values ('{$_POST['title']}','{$_POST['content']}','{$_POST['type']}','{$_SESSION['user']['id']}',now())");
echo "<script type='text/javascript'>alert('留言成功!');history.back();</script>";
}
}
?>
相册列表
用户可以在此页面进行上传图片和资源,也可以删除自己上传的资源和图片。需要注意的是用户只有在登录的情况下才可以上传删除。用户还可以在这个页面下载其他用户上传的图片和资料,实现数据信息的共享。
图片上传:
<?php
require_once 'conn.php';
if ($_POST) {
$file = $_FILES["img"];
if ($file['error'] <= 0) {
//获取文件名
$filename = $_FILES["img"]["name"];
//获取文件扩展名
$ext = pathinfo($filename, PATHINFO_EXTENSION);
//随机生成新的文件名
$filepath = md5(uniqid(mt_rand())) . "." . $ext;
//上传
move_uploaded_file($_FILES["img"]["tmp_name"], "uploads/" . $filepath);
}
$query = mysqli_query($_conn, "insert into photos (img,uid,date) values ('{$filepath}','{$_SESSION['user']['id']}',now())");
echo "<script type='text/javascript'>alert('上传成功!');window.location.href='index.php';</script>";
}
?>
注册页面
重要代码:
<?php
include "conn.php";
if ($_POST) {
if (empty($_POST['username'])) {
echo '<script type="text/javascript">alert("name can be empty!");history.back();</script>';
return;
}
if (!is_numeric($_POST['age'])) {
echo '<script type="text/javascript">alert("age is error!");history.back();</script>';
return;
}
$query = mysqli_query($_conn, "select username from user where username = '{$_POST['username']}'");
if (mysqli_fetch_array($query, MYSQLI_ASSOC)) {
echo "<script type='text/javascript'>alert('username is error');history.back();</script>";
return;
};
mysqli_query($_conn, "insert into user (username,password,sex,age,datetime) values ('{$_POST['username']}','{$_POST['password']}','{$_POST['sex']}','{$_POST['age']}',now())");
echo "<script type='text/javascript'>alert('success');window.location.href='index.php';</script>";
};
?>
其他代码讲解
基本信息列表显示用到的“$servername ”,“$sqlservername”,“$sqlserverpass ”,“$conn”,“$rows”,以及进行循环控制时的“$start_index”,“$end_index”。
用来记录数据库连接地址的“$servername ”(数组),保存数据库连接的“$conn”,以及保存$_rows数据库查询出来的信息的,$num是用来记录访客数量的,$counterFile来记录访客数据文件名的。
将用到的变量列表如下:
变量名
含义
类型
$servername
当前页编号
字符串
$sqlservername
当前记录条编号
字符串
$sqlserverpass
每页显示记录条数
字符串
$sqlname
总页数
字符串
$conn
总记录条数
数组
$_query
起始记录条标号
数组
$_rows
结束记录条编号
数组
$num
记录全部信息的数组
数值
$counterFile
记录全部学生信息的数组
字符串
函数模块
页面中三个地方涉及到运算,或者功能比较复杂,分别为读取文件文本,计算,显示:我们定义了displayCounter来进行处理中。
实现代码
数据库连接代码:
config.inc.php:
<?php
$servername = 'localhost';
$sqlservername = 'root';
$sqlserverpass = '';
$sqlname = 'lvyou';
$conn = @mysqli_connect($servername,$sqlservername,$sqlserverpass,$sqlname);
mysqli_query($conn,'SET NAMES UTF8');
?>
显示访客数量代码
error_reporting(0);
function displayCounter() {
$counterFile = "num.txt";
if (!file_exists($counterFile)) {
exec( "echo 0 > $counterFile");
}
$fp = fopen($counterFile,"rw");
$num = fgets($fp,10);
$num += 1;
print "您是<b>"." $num"."</b>访客!";
exec( "rm -rf $counterFile");
exec( "echo $num > $counterFile");
}
displayCounter();
管理员登录
管理员登录页面展示的一个表单内容,包括用户名跟密码,用户只有输入正确的用户名和密码才进入管理员页面默认帐号admin密码admin。
登录验证代码:
<?php
session_start();
include 'conn.php';
if ($_GET['action'] == 'denglu') {
$query = mysqli_query($_conn, "select * from admin where username='{$_POST['username']}' && password='{$_POST['password']}'");
if ($rows = !mysqli_fetch_array($query, MYSQLI_ASSOC)) {
echo "<script type='text/javascript'>alert('对不起!您的密码或者帐号不正确!');history.back();</script>";
} else {
setcookie("admin", $_POST['username']);
echo "<script type='text/javascript'>alert('恭喜你!登陆成功');window.location.href='adminman.php';</script>";
}
}
?>
留言管理
管理员登录之后可以在本页面查看用户的留言记录。可以删除,不需要展示的留言。
留言列表代码:
<?php $_query = mysqli_query($_conn, "select * from note");
while ($_rows = mysqli_fetch_array($_query, MYSQLI_ASSOC)) { ?>
<tr>
<td><?php echo $_rows['title'] ?></td>
<td><a href="?action=del&id=<?php echo $_rows['id'] ?>">删除</a>|<a href="adminnote.php?id=<?php echo $_rows['id'] ?>">查看</a></td>
</tr>
<?php } ?>
留言查看
点击查看按钮,可以进入该留言的留言详情,用户可以在该页面删除留言。
留言查看极删除:
<?php
include 'conn.php';
if ($_GET['action'] == "del") {
$_query = mysqli_query($_conn, "delete from note where id = " . $_GET['id']);
}
$query = mysqli_query($_conn, "select * from note where id = " . $_GET['id']);
$content = mysqli_fetch_array($query, MYSQLI_ASSOC);
?>
投票记录
管理员可以在此页面查看所有的投票记录。
投票记录代码:
<?php $_query = mysqli_query($_conn, "select * from cast");
while ($_rows = mysqli_fetch_array($_query, MYSQLI_ASSOC)) { ?>
<tr>
<td><?php echo $_rows['title'] ?></td>
<td><?php echo $_rows['ip'] ?></td>
<td><a href="?action=del&id=<?php echo $_rows['id'] ?>">删除</a></td>
</tr>
<?php } ?>
资源管理
资源页面可以查看用户上传了的所有资源,也可以编辑和删除不需要的资源。
资源编辑
资源编辑页面是管理员对用户上传的资源进行一个编辑和修改,可以编辑标题跟图片内容。
资源编辑:
<?php
include 'conn.php';
if ($_POST) {
$file = $_FILES["img"];
$filepath = $_POST['imged'];
if ($file['error'] <= 0) {
$filename = $_FILES["img"]["name"];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$filepath = md5(uniqid(mt_rand())) . "." . $ext;
move_uploaded_file($_FILES["img"]["tmp_name"], "Updir/" . $filepath);
}
$query = mysqli_query($_conn, "update photos set title = '{$_POST['title']}',img = '{$filepath}' where id = '{$_GET['id']}'");
echo "<script type='text/javascript'>alert('操作成功');history.back();</script>";
}
$query = mysqli_query($_conn, "select * from photos where id = " . $_GET['id']);
$_rows = mysqli_fetch_array($query, MYSQLI_ASSOC);
?>
总结
因为以前有过使用PHP语言设计完整的网站管理软件的经验,但并不算精通。PHP作为一款相对简单易学的编程语言,拥有敏捷的开发优势,同时他是一个开源程序所以网上可以轻易查到相关的源码学习资料,以及整站系统这对本次毕业论文以及系统的开发提供了非常大的便利。同时目前网络学习资源较为丰富,腾讯课堂,网易云课堂,百度网课甚至于B站上都可以提供良好完整的技术教学,本次论文及系统的开发参考了B站上的一些教学视频,让本次作品的技术有了一定的技术支撑,也尝试了多种软件工具来提高效率和优化体验,如本次毕业设计中数据库的创建和管理的工作,每个表的设计都非常讲究,表里面的字段设计,字符串的长度,主键设计,字符类型的设计,是否必填等内容都需要进行的统筹规划。幸好navicat提供了可视化的数据库管理界面,让整个流程变得更为顺利。
通过本次毕业设计对网站后台网站系统的开发,让我对软件开发的整个过程有了更深刻地实践操作。我在系统开发的过程中遇到困难的地方认真学习了相关知识,也把以前的很多知识重新捡起来完善了自己薄弱的地方,受益匪浅。最后我要感谢指导老师的细心指导,认真地审阅我的毕业论文,逐条逐项地提出指导意见,让我完成毕业论文的过程增加了效率,事半功倍,谢谢。
参考文献
石正喜.《MYSQL数据库实用教程》、北京师范大学出版集团、2014
张益珲. 微信小程序开发实战[M]. 北京: 电子工业出版 社,2019,12.
刘秋菊、刘书伦.《PHP+MYSQL动态网页设计》,北京师范大学出版社、2011
李吉梅、祁瑞华、刘彩虹.《网站开发与网页设计实用教程》、清华大学出版社、2008
李春、李罡.《LINUX初步》、北京师范大学出版社、2010
高洛峰.《细说PHP》、电子工业出版社、2009