数据库设计报告微信公众号.docx
《数据库设计报告微信公众号.docx》由会员分享,可在线阅读,更多相关《数据库设计报告微信公众号.docx(55页珍藏版)》请在冰豆网上搜索。
数据库设计报告微信公众号
数据库系统课程设计报告
题目:
天下Movie微信公众号
课程代号:
0686416
课程名称:
数据库系统课程设计
学号:
______________
姓名:
________________
完成日期:
2016年10月29号
第一章引言
1.1设计开发的意义
2016年是社交网络爆发的一年,手机则是社交网络重要的通信工具,而微信是手机成为重要工具中主要的一部分。
我们针对微信平台开发微信公众号的开发是为了让学生的编程技术顺应时代潮流,不拘泥于课本知识,了解现实社会生活中客户需求,更好的提高自己的技术。
同时,也从编程角度深刻感受到了社交网络带给我们的便利。
我们的选题其中主要内容展示是电影。
电影市场在2016年由疯狂趋于理性,大家更注重于电影的质量,所以我们选择了“天下Movie”这样的课题,既能提升我们的编程水平,又能贴近生活,服务大家。
1.2任务及目标
项目的提出者:
天津理工大学计算机与通信工程学院课题开发组。
开发单位:
13级中加6班项目小组。
任务:
建立一个服务电影爱好者的微信公众号,在新浪云建立后台数据库,响应微信公众号的请求。
目标:
微信公众号可以实现电影的搜索,电影查询,留影评。
主要功能:
电影搜索功能;电影排行榜查询功能;留影评。
可用性:
很高,基本满足需求。
安全性:
很高,云端数据库只有我们2个人才能操作。
注册用户只能对自己部分数据进行修改删除等操作。
可维护性:
云端维护,有网即可,比较方便。
可跨平台性:
移植性较强。
可针对不同要求的微信公众号。
1.3开发环境
操作系统:
windows10
编译环境:
使用html,CSS,微信测试号进行UI开发
使用Mysql进行数据库管理
第二章系统分析与设计
2.1系统需求分析
2.1.1处理需求
1用户订阅我们的微信公众号,公众号自动表示感谢;
2用户点击微信公众号菜单栏进行电影搜索和电影排行查询;
3用户点击微信公众号菜单栏登录微网站进行留影评,并对影评经行增删改查等操作;
4用户点击微信公众号菜单栏,公众号自动回复消息:
加入我们的微信群,并提供群二维码;
2.1.1数据流图
2.1.2数据字典
m_movie表
欄位
型態
Null
預設值
註解
movieID
int(11)
否
电影id
movie
varchar(255)
否
电影名
date
date
否
发行日期
country
varchar(255)
否
国家
length
varchar(255)
否
时长
score
float
否
评分
intro
mediumtext
是
NULL
简介
award
mediumtext
是
NULL
所获奖项
moviepic
varchar(255)
是
NULL
电影图片
m_dist表
欄位
型態
Null
預設值
註解
distID
int(11)
否
发行商id
dist
varchar(255)
否
发行商名
m_dist_m表
欄位
型態
Null
預設值
註解
movieID
int(11)
否
电影id
distID
int(11)
否
发行商id
m_dire表
欄位
型態
Null
預設值
註解
direID
int(11)
否
导演id
dire
varchar(255)
否
导演名
m_dire_m表
欄位
型態
Null
預設值
註解
movieID
int(11)
否
电影id
direID
int(11)
否
导演id
m_class表
欄位
型態
Null
預設值
註解
classID
int(11)
否
类型id
class
varchar(255)
否
类型
m_class_m表
欄位
型態
Null
預設值
註解
movieID
int(11)
否
电影id
classID
int(11)
否
类型id
m_actor表
欄位
型態
Null
預設值
註解
actorID
int(11)
否
演员id
actor
varchar(255)
否
演员名
m_act_m表
欄位
型態
Null
預設值
註解
movieID
int(11)
否
电影id
actorID
int(11)
否
演员id
c_user表
欄位
型態
Null
預設值
註解
userID
int(255)
否
用户id
username
varchar(255)
否
用户名
password
varchar(255)
否
密码
email
varchar(255)
是
NULL
邮箱
c_comm表
欄位
型態
Null
預設值
註解
commID
int(11)
否
留言id
userID
int(11)
否
用户id
time
datetime
否
最后更新时间
title
text
否
标题
comm
text
否
留言内容
2.2数据库概念结构设计
E-R图
2.3数据库逻辑结构设计
电影
电影id,电影名,发行日期,国家,时长,评分,简介,所获奖项,相关图片
演员
演员id,演员名
演员对应
演员id,电影id
导演
导演id,导演名
导演对应
导演id,电影id
发行商
发行商id,发行商名
发行商对应
发行商id,电影id
类型
类型id,类型名
类型对应
类型id,电影id
用户信息
用户id,用户名,密码,邮箱
留言信息
留言id,用户id,最后更新时间,标题,留言内容
2.4数据库物理结构设计
m_movie表
m_dist表
m_dist_m表
m_dire表
m_dire_m表
m_actor表
m_act_m表
m_class表
m_class_m表
c_comm表
c_user表
2.5功能图
第三章系统开发及实现
3.1论述设计开发采用的技术及设计效果
3.1.1微信界面
功能:
微信用户关注公众号,公众号向用户发送信息。
以及菜单栏显示。
界面设计效果:
实现方法:
在新浪云(SAE)端上传代码包index.php.zip,代码配置微信接口,实现微信公众号和新浪云数据库的链接。
3.1.2电影区-搜电影
功能:
点击电影去搜电影,进入电影搜索界面
界面设计效果:
实现:
编写search.html,然后上传到新浪云端,在浏览器显示,用query.php链接新浪云的Mysql数据库去查寻具体电影名字。
功能:
展示具体电影的内容
界面设计效果:
实现:
编写concent.html,然后上传到新浪云端,在浏览器显示,用conn.php调用数据库显示出要查找电影的具体内容。
3.1.3电影区-查询排行榜
功能:
实现电影按照排行榜进行查询,可以按类型,可以按评分和年代进行排序。
界面设计效果:
实现:
编写list.php,然后上传到新浪云端,在浏览器显示出要查找电影的具体内容。
3.1.3互动区-评电影
功能:
用户的注册登录
界面设计效果:
实现:
编写login.html和login.php实现用户的注册、登陆。
用户登陆后调用loged.php使用户可以留言。
3.1.4互动区-微信群
功能:
让微信公众号开发人员和用户有良好的互动
界面设计效果:
实现:
在新浪云端的index.php文件中设置返回参数,用户点击查看全文即可看到我们的群二维码。
第四章总结
这次课程设计学校安排了2周时间让我们完成,我们选择了“电影推荐:
微信公众号-天下Movie”的课题,并从图书管借了数据库程序设计、HTML设计、php的资料书,对课程设计中会遇到的问题提前做了些准备,并到网上也找相关的系统的代码看了下,对这个系统有了一定的全局观,完成了初步的需求分析。
稍作细化后,便开始设计数据库。
而后做了界面设计,完成了程序大部分的主要界面。
我们从系统的功能、规模和实用方面考虑,采用HTML+Mysql技术。
在数据库设计阶段:
细致的考虑到了用户的全部需求,并用了大量的时间进行了信息的收集建立了比较完善的信息表;编码阶段:
在设计接近完成的时候,我们对部分代码做了优化,对界面效果进行了调整。
这次课程设计,我更加深入的了解到软件工程的复杂性,以及前期规划分析的重要性。
以及团队协作的重要性,决定在以后的学习中学习一些先进的思想,并多加实践,从写程序和软件架构两个方面都增强自己的能力。
在编程中遇到了很多困难,我们在立项时候因为没有接触过微信开发,并不了解微信平台是需要开发权限的,使我们走了弯路;在UI设计时候,我们的界面功能经过了反复的修改,在一定程度上延缓了设计进程。
网页显示在页面上回进行转码,与我们设想的有差别。
我们没有使用响应式开发设计是我们的一大缺陷,这直接影响了用户体验。
通过这次的数据库课程,我学会了在制作程序时应仔细谨慎,因为细小的错误都会导致程序的失败。
另外老师还教会了我们,在制作一个系统时,要有自己的思想,使自己制作的程序能锦上添花,做出属于自己的东西。
我也会在以后的生活学习中尽量完善自己的工作,使自己做的更好!
第五章参考文献
[1]方倍工作室微信公众平台开发(58)自定义菜单方倍工作室-博客园2013-08-09
[2]菜鸟教程HTML/CSSw3cschool菜鸟教程
[3][美]RobertW.Sebesta著马跃李增民李立新译《Web程序设计(第7版)》清华大学出版社
[4]PHP官方网站
[5]JeffreyD.UllmanJenniferWidom著
《数据库系统基础教程》机械工业出版社
附录1conn.php
php
//连接数据库
header("Content-Type:
text/html;charset=utf-8");
$con=mysqli_connect('','5xmwwlwnkw','zyjwkz4mhly005lm33i3jy010m0wzxky50mjhh5h','app_tianxiamovie');
if(mysqli_connect_errno()){
printf("Connectfailed:
%s\n",mysqli_connect_error());
exit();
}
?
>
附录2index.php
php
/*
数据库设计作业,新浪云连接微信公众号
*/
define("TOKEN","weixin");
$wechatObj=newwechatCallbackapiTest();
if(!
isset($_GET['echostr'])){
$wechatObj->responseMsg();
}else{
$wechatObj->valid();
}
classwechatCallbackapiTest
{
publicfunctionvalid()
{
$echoStr=$_GET["echostr"];
if($this->checkSignature()){
echo$echoStr;
exit;
}
}
privatefunctioncheckSignature()
{
$signature=$_GET["signature"];
$timestamp=$_GET["timestamp"];
$nonce=$_GET["nonce"];
$token=TOKEN;
$tmpArr=array($token,$timestamp,$nonce);
sort($tmpArr);
$tmpStr=implode($tmpArr);
$tmpStr=sha1($tmpStr);
if($tmpStr==$signature){
returntrue;
}else{
returnfalse;
}
}
publicfunctionresponseMsg()
{
$postStr=$GLOBALS["HTTP_RAW_POST_DATA"];
if(!
empty($postStr)){
$postObj=simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);
$RX_TYPE=trim($postObj->MsgType);
switch($RX_TYPE)
{
case"text":
$resultStr=$this->receiveText($postObj);
break;
case"event":
$resultStr=$this->receiveEvent($postObj);
break;
default:
$resultStr="";
break;
}
echo$resultStr;
}else{
echo"";
exit;
}
}
privatefunctionreceiveEvent($object)
{
$contentStr="";
switch($object->Event)
{
case"subscribe":
$contentStr="你好,欢迎订阅天下Movie!
!
点击菜单栏的“电影区可以进行电影搜索和电影排行榜查询”,点击“互动区可以加入微信群和留影评哦!
”/微笑";
case"unsubscribe":
break;
case"CLICK":
switch($object->EventKey)
{
case"微信群":
$contentStr[]=array("Title"=>"微信群",
"Description"=>"爱好电影小伙伴们欢迎你来!
",
"PicUrl"=>"
"Url"=>"
break;
default:
$contentStr[]=array("Title"=>"评电影",
"Description"=>"大胆的发表您的评价吧",
"PicUrl"=>"
"Url"=>"
break;
}
break;
default:
break;
}
if(is_array($contentStr)){
$resultStr=$this->transmitNews($object,$contentStr);
}else{
$resultStr=$this->transmitText($object,$contentStr);
}
return$resultStr;
}
privatefunctiontransmitText($object,$content,$funcFlag=0)
{
$textTpl="
[CDATA[%s]]>
[CDATA[%s]]>
%s
[CDATA[text]]>
[CDATA[%s]]>
%d
";
$resultStr=sprintf($textTpl,$object->FromUserName,$object->ToUserName,time(),$content,$funcFlag);
return$resultStr;
}
privatefunctiontransmitNews($object,$arr_item,$funcFlag=0)
{
//首条标题28字,其他标题39字
if(!
is_array($arr_item))
return;
$itemTpl="
[CDATA[%s]]>
[CDATA[%s]]>
[CDATA[%s]]>
[CDATA[%s]]>
";
$item_str="";
foreach($arr_itemas$item)
$item_str.=sprintf($itemTpl,$item['Title'],$item['Description'],$item['PicUrl'],$item['Url']);
$newsTpl="
[CDATA[%s]]>
[CDATA[%s]]>
%s
[CDATA[news]]>
[CDATA[]]>
%s
$item_str
%s
";
$resultStr=sprintf($newsTpl,$object->FromUserName,$object->ToUserName,time(),count($arr_item),$funcFlag);
return$resultStr;
}
}
?
>
附录3search.html
DOCTYPE>
--查找页面-->
天下Movie
100px;">