博客系统实训报告剖析.docx
《博客系统实训报告剖析.docx》由会员分享,可在线阅读,更多相关《博客系统实训报告剖析.docx(26页珍藏版)》请在冰点文库上搜索。
博客系统实训报告剖析
郑州轻工业学院
实训报告
课程名称:
博客管理系统
姓名:
褚超
院(系):
软件学院
专业班级:
网络软件开发14-01班
学号:
621413560103
指导教师:
杨华、胡春晖
学期:
2014-2015学年第二学期
郑州轻工业学院软件学院
学生实训任务书
一、题目
博客管理系统
二、学生信息
专业网络软件开发14-01班学号621413560103姓名褚超
三、用户需求及约束条件
1、网站需求:
整个项目的使用分成普通用户和管理员。
普通用户未登录前,可以查看文章信息及发表评论。
如果想要添加文章、图片等信息,需要登录,首先单击“博客注册”按钮,注册用户名和密码。
注册成功后,进入普通用户操作页面。
在该页面中,可以添加及查询文章信息、发表评论;添加及查询图片;添加朋友信息等操作。
管理员,在博客首页登录处输入管理员用户名、密码及验证码,进入管理员操作页面。
登陆后管理员具有普通用户的所有权限,还可以删除文章信息、评论信息、图片及自己的朋友信息,管理普通用户信息及公告信息。
2、网站开发要求:
在Dreamweaver环境下,使用php语言开发,后台数据库使用mySql开发。
四、设计要求、技术参数及设计规格
博客管理系统的实现使用B/S架构模式,Dreamweaver实现前台页面设计,并使用JavaScript和CSS对页面进行设计,后台使用MySQL+phpMyAdmin。
1、数据库设计-涉及到ER图、数据库本身。
2、前台页面设计–HTML+CSS+JavaScript实现静态页面呈现。
3、动态页面设计–php应用程序代码实现动态交互。
五、工作量
天/日期
任务描述
通过标准
6-15
根据系统设计、数据库设计理解项目框架结构并完成数据库设计;
数据表项创建正确
6-16~6-18
实现系统首页
给出首页页面能正确显示运行
6-19~6-23
实现文章管理模块,包括“添加博客文章”、“查找博客文章”、“管理我的博客”、“发表评论”、“删除文章”、“删除评论”
文章管理模块相关页面能运行
6-24~6-26
实现图片上传模块,包括图片的添加、浏览、查询和删除操作
图片上传模块相关页面能运行
6-29~6-30
实现朋友圈模块,主要是添加、查询、删除好友
朋友圈模块相关页面能运行
7-1~7-3
功能完善,检查作品,撰写实训报告
作品可运行,上交报告
六、考核形式、考核时间、考核指标及成绩评定
实训每一天做好实训文档记录,最后一天进行实训成果演示,要求能够独立完成实验,并结合提交的纸质和电子版的实训报告给出实训成绩。
实训成绩=成果演示成绩*40%+实训报告*40%+考勤*20%。
完成期限:
2015.7.3
指导教师签章:
杨华胡春晖
专业负责人签章:
教学院长签章:
2015年6月10日
目录
1需求分析1
2数据库设计2
3功能模块实现5
实训感想21
1、需求分析
信息时代的今天,博客已经成为一种新的生活方式。
在网络中构建一个赋有个性化的个人博客,提供了一种可信任的和实时连通的网络环境,通过网络开放性和交互性的特点,让用户在任何时间、任何地点,通过网络方便地“生活”,不仅是信息传递与获取,还可以进行群体交流和资源共享,展示自我,为个人发展带来新机遇。
通过对多个博客网的调查分析,客户要求本博客管理系统具有以下功能:
☑要求系统采用B/S架构,实现人机交互。
☑要求系统界面个性化,色彩搭配和谐,很强的视觉冲击力,操作简便。
☑要求突出主题,显示最新文章和公告。
☑要求游客可以浏览文章、浏览图片、发表评论。
☑要求具有强大的搜索查询功能,实现精确查询和模糊查询。
☑完善的文章管理功能,包括文章的发表、删除,及对文章的评论与回复。
☑支持图片上传功能,可以上传各种类型的图片。
☑支持好友功能。
☑系统运行稳定,安全可靠。
2、数据库设计
2.1、数据库分析
本系统属于中小型个人网站,毫无争议的,本系统采用的依然是PHP+MySQL这对儿黄金组合,无论是从成本、性能、安全上考虑,还是从易操作性上考虑,MySQL都是最佳选择。
2.2、数据库概念设计
通过需求分析和功能上的设计,本系统规划出用户信息实体、上传图片实体、朋友圈实体、文章实体和留言实体。
用户信息实体包括注册用户的详细个人信息,如果想在本系统中进行发表文章、上传图片等操作,则必须要先进行注。
2.3、数据库物理结构设计
根据本系统的实际情况,需要创建6张数据表,如图1.0所示。
图1.0数据表列表
下面是具体的6张数据表
1.tb_user(用户列表)
用户列表主要存储用户的个人信息。
tb_user表的结构如图1.1所示。
图1.1用户列表结构
2.tb_article(文章列表)
文章列表存储的是用户发表过的文章信息。
tb_article表的结构如图1.2所示。
图1.2文章列表结构
3.tb_filecomment(评论列表)
评论列表存储的是用户对文章的评论,包括注册用户和游客都可以发表评论。
tb_filecomment表的结构如图1.3所示。
图1.3评论列表结构
4.tb_tpsc(图片列表)
图片列表存储的是上传图片的信息,如图片名称、上传用户、上传时间等。
tb_tpsc表的结构如图1.4所示。
图1.4图片列表结构
5.tb_friend(好友列表)
好友列表主要记录了姓名、性别、生日等好友的个人信息。
tb_friend表的结构如图1.5所示。
图1.5好友列表结构
6.tb_public(公告列表)
公告列表主要记录了网站情况、博客系统的版本情况或是网站活动等等。
公告列表的结构如图1.6所示。
图1.6公告列表结构
3、功能模块实现
3.1、首页设计
3.1.1、首页概述
本系统首页页面设计简洁,主要包括以下3部分内容:
☑首部导航栏:
包括首页链接、注册和登录模块。
☑左侧显示区:
包括最新文章、最新图片和系统时间模块。
游客主要通过该区域浏览文章、浏览图片及发表评论。
☑主显示区:
为系统公告栏,显示系统及网站的最新咨询。
以下是该博客网站首页页面:
3.1.2、首页技术分析
在首页的顶部区域,是利用DIV技术做成的一个导航栏,在DIV内,嵌套的两个表格,顶部的表格式是首页、我的博客、博客注册三个链接;第二个表格式用户登录模块,方便用户登录,用来实现各种功能。
在首页的左侧区域,是利用DIV技术做成的一个侧边栏,侧边栏的上半部分是一个利用JavaScript技术做成的日历,用以显示当前日期和时间;下半部分是一个浏览该博客网站最新发表的文章、图片的模块,利用表格做成的两个显示区域,分别显示最新文章和最新图片。
该区域利用PHP功能,实现与后台数据库连接的动态效果。
首页的主显示区域,是利用DIV技术做成的一个主显示界面,用以显示该博客网站最新发布的公告,方便用户浏览。
为了吸引浏览者注意,公告利用了marquee功能,实现了公告动态滚动的效果。
以下是博客首页核心代码:
以下是开启session支持以及数据库连接文件:
php
session_start();
include"Conn/conn.php";
?
>
------------------------------------------------------------------!
>
以下是用户登录模块的登录验证码核心代码:
php
$str=array("大","更","创","天","科","客","博","技","立","新");
$word=strlen($str);
for($i=0;$i<4;$i++){
$num=rand(0,$word*2-1);//$word=$word*2-1
$img=$img."";//显示随机图片
$pic=$pic.$str[$num];//将图片转换成数组中的文字
}
?
>
------------------------------------------------------------------!
>
以下是验证首页用户名以及密码是否正确的核心代码:
php
header("Content-type:
text/html;charset=gb2312");//设置文件编码格式
session_start();
include"Conn/conn.php";
$name=$_POST[txt_user];
$pwd=$_POST[txt_pwd];
$sql=mysql_query("select*fromtb_userwhereregname='".$name."'andregpwd='".$pwd."'");
$result=mysql_fetch_array($sql);
if($result!
=""){
$_SESSION[fig]=$result[fig];
$_SESSION[username]=$name;
?
>
alert("登录成功");window.location.href="file.php";
php
}else{
?
>
alert("对不起,您输入的用户名或密码不正确,请重新输入!
");window.location.href="index.php";
php
}
?
>
------------------------------------------------------------------!
>
3.2、注册界面设计
3.2.1、注册界面概述
初次访问该博客网站的用户,可以通过注册成为该博客网站的普通会员,来实现相关的文章管理功能。
用户只需要简单的填写相关的个人信息,在确认提交之后,就会成为本博客网站的普通用户。
以下是注册页面:
3.2.1、注册界面技术分析
本注册页面所填写的注册信息分为必填内容和选填内容,注册用户如果没有填齐“必填内容”栏各项,则我无法完成注册。
其中,为了使注册的用户名唯一,本博客添加了“检测用户”功能来判断该用户名可不可用,增加了根据用户名来查找用户的准确性,便于网站的管理。
以下是实现注册功能的核心代码:
php
header("Content-type:
text/html;charset=gb2312");//设置文件编码格式
session_start();
include"Conn/conn.php";
$UserName=$_POST[txt_regname];
$sql=mysql_query("select*fromtb_userwhereregname='$UserName'");
$result=mysql_fetch_array($sql);
if($result!
=false){echo("");exit();}
$_SESSION[username]=$_POST[txt_regname];
$regname=$_POST[txt_regname];
$regrealname=$_POST[txt_regrealname];
$regpwd=$_POST[txt_regpwd];
$regbirthday=$_POST[txt_birthday];
$regemail=$_POST[txt_regemail];
$regcity=$_POST[txt_province].$_POST[txt_city];
$regico=$_POST[txt_ico];
$regsex=$_POST[txt_regsex];
$regqq=$_POST[txt_regqq];
$reghomepage=$_POST[txt_reghomepage];
$regsign=$_POST[txt_regsign];
$regintroduce=$_POST[txt_regintroduce];
$ip=getenv(REMOTE_ADDR);
$INS=mysql_query("InsertIntotb_user(regname,regrealname,regpwd,regbirthday,regemail,regcity,regico,regsex,regqq,reghomepage,regsign,regintroduce,ip,fig)Values('$regname','$regrealname','$regpwd','$regbirthday','$regemail','$regcity','$regico','$regsex','$regqq','$reghomepage','$regsign','$regintroduce','$ip',0)");
echo"";
echo"";?
>
3.3、文章管理模块设计
3.2.1文章管理模块概述
文章管理模块的设计,主要实现添加文章、查找文章、管理文章、发表文章、删除文章、删除评论这几大重要功能。
而根据不同的功能,划分出不同的权限用户:
游客、用户、管理员,根据相关的权限实现不同的功能,方便博客网站的管理与维护。
该模块实现技术复杂,功能强大。
3.2.2文章管理模块技术分析
实现文章管理模块的功能,必须是以用户或者管理员的身份进行登录才可以完成,也就是说必须是在该博客网站注册了的用户才可以进行文章管理的部分功能。
其中以管理员的权限最高,可以删除博客网站中注册用户发表的文章和评论,用以维护网站的运行。
而普通用户不具有这些功能。
文章管理模块由添加博客文章、查询博客文章、我的文章三个功能部分组成。
以下是添加博客文章的页面:
以下是实现添加博客文章功能的核心代码:
以下是查询文章页面:
用户直接输入关键字,作者的ID就可查找到其发表的文章。
以下是实现查询文章功能的核心代码:
php
if(isset($_POST[sel_key])){
$tj=$_POST[sel_tj];
$key=$_POST[sel_key];
$sql="select*fromtb_articlewhere$tjlike'%$key%'";
$rst=mysql_query($sql,$link);
$result=mysql_fetch_array($rst);
if(mysql_num_rows($rst)==0){
echo"[对不起,您检索的博客信息不存在!
]";}else{?
>
以下是检索结果页面:
在原本的查询框下面,显示出了检索的结果。
普通用户只可查看该文章,管理员用户可以直接删除这些文章。
以下是实现删除文章功能的核心代码:
php
if($_SESSION[fig]==1){
?
>
file_id=
phpecho$result[id];?
>">
php
}
?
>
php
}while($result=mysql_fetch_array($rst));
?
>
php}}?
>
3.4、图片上传模块设计
3.4.1、图片上传模块概述
图片上传在动态网页开发过程中应用非常广泛。
如果有比较好的图片想和朋友一起分享,就可以通过图片上传功能来实现,已增加网站的核心竞争力。
本系统的图片上传模块主要对图片的添加、浏览和删除操作,而对图片的删除则只有管理员才有权限。
3.4.2、图片上传模块技术分析
通过
需要注意到的是,PHP允许的上传最大图片不得超过2M,否则上传无效。
以下是图片上传页面:
浏览图片。
通过点就浏览按钮,来选择图片的路径。
点击提交,完成图片上传功能。
以下是实现图片上传功能的核心代码:
php
header("Content-type:
text/html;charset=gb2312");//设置文件编码格式
session_start();
include("Conn/conn.php");
if($_POST["btn_tj"]=="提交"){
$tpmc=htmlspecialchars($tpmc);//将图片名称中的特殊字符转换成HTML格式
$tpmc=str_replace("\n","
",$tpmc);//将图片名称中的回车符以自动换行符取代
$tpmc=str_replace(""," ",$tpmc);//将图片名称中的空格以" "取代
$author=$_SESSION[username];
$scsj=date("y;m;d");//设置图片的上传时间
$fp=fopen($file,"r");//以只读方式打开文件
$file=addslashes(fread($fp,filesize($file)));//将文件中的引号部分加上反斜线
$query="insertintotb_tpsc(tpmc,file,author,scsj)values('$tpmc','$file','$author','$scsj')";//创建插入图片数据的sql语句
$result=mysql_query($query);
echo"图片上传成功,请稍等...";?
>
以下是浏览上传图片页面:
可以看到,上面的一张截图上传后,可以查看了。
普通用户只可以查看这些图片,而管理员用户可以删除上传的图片。
查询图片。
通过输入上传的图片的名称来查找到已经上传的图片,方便查看与管理。
以下是已经输入查询条件的查询框页面:
以下是点击检索按钮后返回的结果页面:
可以看到,上传的图片已经可以查找到。
上
3.5、朋友圈模块设计
3.5.1、朋友圈模块概述
在该博客系统中,朋友圈模块的主要功能是添加、查询、删除朋友,为了保证隐私,普通用户添加的朋友,管理员也不可以查看。
如果该用户被删除,则该用户添加的朋友圈信息业会被删除。
3.5.2、朋友圈模块技术分析
朋友圈的添加,是通过表单时功能实现的。
在用户填完信息并提交后,数据会自动写入数据库中,便于查找和删除。
以下是朋友圈添加的页面:
以下是浏览我添加的朋友页面:
可以看到,我添加的信息已经显示出来了。
以下是实现浏览我添加的朋友功能的核心代码:
php
if($page){
$page_size=2;//每页显示2条记录
$query="selectcount(*)astotalfromtb_friendwhereusername='$_SESSION[username]'orderbyiddesc";
$result=mysql_query($query);//查询总的记录条数
$message_count=mysql_result($result,0,"total");//为变量赋值
$page_count=ceil($message_count/$page_size);//根据记录总数除以每页显示的记录数求出所分的页数
$offset=($page-1)*$page_size;//计算下一页从第几条数据开始循环
for($i=1;$i<2;$i++){//计算每页显示几行记录信息
if($i==1){
$sql=mysql_query("select*fromtb_friendwhereusername='$_SESSION[username]'orderbyiddesclimit$offset,$page_size");
$result=mysql_fetch_array($sql);
}
do{
?
>
在查询朋友的功能中,使用到了模糊查询语句,用于模糊查找好友列表。
模糊查询语句使用的是like运算符。
以下是查询我的朋友界面:
以下是实现查询我的朋友功能的核心代码:
php
if($_POST["Submit"]=="检索"){
$tj=$_POST[sel_tj];
$key=$_POST[sel_key];
$sql=mysql_query("select*fromtb_friendwhere$tj='$key'andusername='$_SESSION[username]'");
$result=mysql_fetch_array($sql);
if($result==false){
echo("[Sorry!
没有您要找的朋友!
]");}else{?
>
以下是点击检索后的返回查询结果页面:
3.6、管理员模块设计
3.3.1、管理员模块