qq网站php源码分享,qq网站代码

大家好,今天小编来为大家解答qq网站php源码分享这个问题,qq网站代码很多人还不知道,现在让我们一起来看看吧!

本文为php中文网认证作者:“易达”投稿,欢迎加入php中文网有偿投稿计划!

问题:

使用面向对象编程的方式实现以下业务逻辑:

1.张三使用账号a,密码b登录了qq

2.显示出张三最后的登录的时间

3.张三查看了1小时内的行政部门群的信息(这个群里有张三,李四,王五,其中张三是群主)

4.输出张三看到的这些信息

5.突然张三收到好友李四的信息:信息叫:张三,我是李四,你在干嘛(张三创建了一个好友组,里面有好友李四)

6.张三回复李四:我在想你呀

首先我们来分析一下

1、流程分析

1.张三使用账号a,密码b登录了qq

2.显示出张三最后的登录的时间

3.张三查看了1个小时内的行政部门群的信息(这个群里有张三,李四,王五,其中张三是群主)

4.输出张三看到的这些信息

5.李四发送消息给张三,信息为:张三,我是李四,你在干嘛

6.张三发送消息给李四,信息为:我在想你呀

2、功能分析:

1.识别对象

QQ会员,QQ会员登录信息,QQ会员消息,QQ会员群,QQ会员和群的关系(一对多)

2.识别对象的属性

QQ会员:

属性:id,姓名,账号,密码

QQ会员登录信息:(一个会员可以多次登录,有多条登录记录)

属性:id,会员id,登录时间

QQ会员消息:属性:id,内容,发送时间,发送人,接收人,状态(已读,未读),查看时间

QQ会员群:属性:id,创建会员,群名称,群的创建时间

QQ会员和群的关系:(这种关系也是一个类,也可以产生很多的实例)

属性:id,user_id,group_id,create_time

3.识别对象的方法

QQ会员:

方法:

1.登录,

2.查看消息

3.发送消息

QQ会员登录信息:

1.保存会员的登录信息

2.获取用户最后的登录信息

QQ会员消息:

方法:修改状态(可以被修改为已读),获取会员消息,添加会员消息

QQ会员群:

方法:1.获取所有的群2.创建群(张三查看行政部门群,说明这个群肯定是被某个人创建的)

QQ会员和群的关系:

方法:1.根据会员查看她所有的群=获取会员所有的群

2.根据一个群,可以查看这个群里的所有成员

3、数据库分析:

1.QQ会员:其中属性对应的就是表中的字段

2.QQ会员消息:其中属性对应的就是表中的字段

3.QQ会员群:其中属性对应的就是表中的字段

4.QQ会员和群的中间表:因为一个会员可以从属于多个会员群,所以需要有张这个表

字段:id,会员id,群id,入群时间

5.QQ会员登录信息列表

分析完成后,我们来具体的操作

1、创建数据库,初始化数据

创建数据库,名字我们尽量通俗易懂点好,就叫做qq

创建表qq_group表会员组

创建表qq_msg消息表

创建表qq_user会员表

创建表qq_user_group_relation会员和组的关系表

创建表qq_user_login_record会员登录信息记录表

初始化数据,哪些是项目的启动数据呢

1、会员有张三,李四,王五,他们分别有账号密码

2、有2个组行政部门群组,好友组

3、张三创建了行政部门群,张三,李四,王五都在该群里

4、张三还创建了好友组,里面有李四

接下里我们把这些数据填入数据库中

1、会员有张三,李四,王五,他们分别有账号密码(qq_user)

2、有2个组行政部门群组,好友组(qq_group)

3、张三创建了行政部门群,张三,李四,王五都在该群里

4、张三还创建了好友组,里面有李四(qq_user_group_relation)

为了让行政群里能有消息,我们先试着在消息表里添加一条记录

2、创建类,实现类

根据分析,我们应该至少要创建5个类,但是所有的类都需要数据库连接,所以我们可以单独创建一个数据库类,所以有6个类需要创建

为了方便管理,我们把这些类都放到model目录中

model/Mysql.class.php

<?php

//数据库连接类

classMysql{

//属性:id,姓名,账号,密码,登录时间

public$link=&34;;//id

publicfunction__construct(){

//创建连接

$this->init();

}

publicfunction__destruct(){

//销毁数据库连接

if($this->link){

mysqli_close($this->link);

}

}

//创建连接,初始化连接

publicfunctioninit(){

//创建连接

$config=Array(

&34;=>&39;,

&34;=>&34;,

&34;=>&34;,

&34;=>&34;,

&34;=>&34;

);

$this->link=mysqli_connect($config[&39;],$config[&39;],

$config[&39;],$config[&39;]);

}

}

?>

model/Group.class.php

<?php

require_once&34;;

classGroup{

//属性:id,创建会员,群名称,群的创建时间

public$id=&34;;

public$userid=&34;;

public$groupName=&34;;

public$createTime=&34;;

public$mySql=&34;;

public$tableName=&34;;

publicfunction__construct(){

$this->mySql=newMySql();

}

//1.获取所有的群

//如果不指定具体的创建人,可以获取所有的群

publicfunctiongetAll($creatorUserId=&39;){

//创建连接

$conn=$this->Mysql->link;

//写sql,执行sql

$where=&34;;

if(!empty($userid)){

$where.=&34;.$creatorUserId;

}

$sql=&34;;

//执行sql

$result=mysqli_query($conn,$sql);

//获取数据

//$list=mysqli_fetch_all($result);

$list=Array();

while($row=mysqli_fetch_assoc($result)){

$list[]=$row;

}

//end

//返回数据

return$list;

}

//2.创建群留给同学些,课上就不写了,因为目前的最终效果不需要呈现,默认已经是张三创建好了

publicfunctioncreate(){

echo&34;;

}

}

?>

Message.class.php

<?php

require_oncedirname(__FILE__).&34;;

//会员消息类

classMessage{

//属性:id,内容,发送时间,发送人,接收人,状态(已读,未读),查看时间

public$id=&34;;

public$content=&34;;

public$sendTime=&34;;

public$sendUserId=&34;;

public$toUserId=&34;;

public$status=&34;;

public$readTime=&34;;

public$mySql=&34;;

public$tableName=&34;;

publicfunction__construct(){

$this->mySql=newMySql();

}

//方法:修改状态(可以被修改为已读),查看消息,发送消息

publicfunctionupdateStatus($id,$status){

//创建连接

$conn=$this->mySql->link;

//写sql,执行sql

$sql=&34;;

//执行

$result=mysqli_query($conn,$sql);

if($result){

returntrue;

}else{

returnfalse;

}

}

//查看会员消息列表

publicfunctiongetMsgList($userid,$type,$startTime,$endTime,$groupId){

//创建连接

$conn=$this->mySql->link;

//写sql,执行sql

$where=&34;;

if($type!=&34;){//这里特别注意不能直接写!empty,会导致0的情况考虑不进来而0表示未读

$where.=&34;.$type;

}

if(!empty($startTime)&&!empty($endTime)){

//判断时间

$where.=&34;;

}

if($groupId){

$where.=&34;.$groupId;

}

$sql=&34;;

//执行

$result=mysqli_query($conn,$sql);

//获取数据

//returnmysqli_fetch_all($result);

$list=Array();

while($row=mysqli_fetch_assoc($result)){

$list[]=$row;

}

return$list;

}

//添加消息

publicfunctionadd($userid,$content,$toUserId,$groupId){

//创建连接

$conn=$this->mySql->link;

//写sql,执行sql

$sql=&39;{$content}&34;.time().&34;.$groupId.&34;;

//执行

$result=mysqli_query($conn,$sql);

if($result){

returntrue;

}else{

returnfalse;

}

}

}

?>

model/User.class.php

<?php

//引入UserLoginInfo

require_once&34;;

require_once&34;;

require_once&34;;

classUser{

//属性:id,姓名,账号,密码,登录时间

public$id=&34;;//id

public$name=&34;;//姓名

public$username=&34;;//账号

public$password=&34;;//密码

public$mySql=&34;;

public$tableName=&34;;

publicfunction__construct($id,$name,$username,$password){

//初始化对象

$this->id=$id;

$this->name=$name;

$this->username=$username;

$this->password=$password;

$this->mySql=newMySql();

}

publicfunctionlogin($inputUsername,$inputPassword){

//登录逻辑

//判断用户名和密码是否正确

if($inputUsername!=$this->username||

$inputPassword!=$this->password){

returnarray(&34;=>&34;);

}

//登录成功

$logintime=time();

//echo$this->name.&34;.date(&39;,$logintime);

//将登录信息保存到数据库

$logininfo=newUserLoginInfo();

$result=$logininfo->save($this->id);

return$result;

}

//查看消息

publicfunctiongetMessage($startTime,$endTime,$groupId){

//查看消息相当于通过查看这个动作和消息进行了互动

//所以通过方法的调用来执行

$messageModel=newMessage();

return$messageModel->getMsgList($this->id,&39;,$startTime,$endTime,$groupId);

}

//发送消息相当于通过查看这个动作和消息进行了互动

publicfunctionsendMessage($content,$toUserId,$groupId){

//所以通过方法的调用来执行

$messageModel=newMessage();

return$messageModel->add($this->id,$content,$toUserId,$groupId);

}

}

?>

model/UserGroupRelation.class.php

<?php

require_once&34;;

classUserGroupRelation{

//属性:id,创建会员,群名称,群的创建时间

public$id=&34;;

public$userid=&34;;

public$groupName=&34;;

public$createTime=&34;;

public$mySql=&34;;

public$tableName=&34;;

publicfunction__construct(){

$this->mySql=newMySql();

}

//1.获取一个群里所有的会员根据群获取会员

publicfunctiongetUserList($groupid){

//创建连接

$conn=$this->mySql->link;

//写sql,执行sql

$sql=&34;;

//执行

$result=mysqli_query($conn,$sql);

//获取数据

//returnmysqli_fetch_all($result);

$list=Array();

while($row=mysqli_fetch_assoc($result)){

$list[]=$row;

}

return$list;

}

//2.根据某个会员获取他所有的群

publicfunctiongetGroupList($userid){

//创建连接

$conn=$this->mySql->link;

//写sql,执行sql

$sql=&34;;

//执行

$result=mysqli_query($conn,$sql);

//获取数据

//returnmysqli_fetch_all($result);

$list=Array();

while($row=mysqli_fetch_assoc($result)){

$list[]=$row;

}

return$list;

}

}

?>

model/UserLoginInfo.class.php

<?php

require_once&34;;

classUserLoginInfo{

//属性:id,会员id,登录时间

public$id=&34;;//id

public$userid=&34;;//姓名

public$loginTime=&34;;//登录时间

public$mySql=&34;;

public$tableName=&34;;

publicfunction__construct(){

$this->mySql=newMySql();

}

//方法:

publicfunctionsave($userid){

//添加用户登录记录

$logintime=time();

//保存到数据库

//创建连接

$conn=$this->mySql->link;

//写sql执行sql

$sql=&34;.$this->tableName.

&34;;

//执行

$result=mysqli_query($conn,$sql);

//这种增,删,改的动作返回的结果是一个数字1表示成功

if($result){

returntrue;

}else{

returnfalse;

}

}

//获取用户最后登录信息

publicfunctiongetLastLoginInfo($userid){

//创建连接

$conn=$this->mySql->link;

//写sql执行sql

$sql=&34;.$this->tableName.

&34;;

//执行

$result=mysqli_query($conn,$sql);

//获取数据

$lastLoginInfo=mysqli_fetch_assoc($result);

return$lastLoginInfo;

}

}

?>

3、写流程

创建index.php

<?php

//业务代码

require_once&34;;

require_once&34;;

require_once&34;;

require_once&34;;

//张三登录

$zhangsan=newUser(1,&34;,&34;,&34;);

////登录

$zhangsan->login(&34;,&34;);

echo$zhangsan->name.&34;;

//输出最后登录时间

$logininfoModel=newUserLoginInfo();

//获取最后登录信息

$lastLoginInfo=$logininfoModel->getLastLoginInfo($zhangsan->id);

$lastLoginTime=date(&34;,$lastLoginInfo[&39;]);

echo$zhangsan->name.&34;.$lastLoginTime.&34;;

//2.张三查看了1个小时内的行政部门群的信息(这个群里有张三,李四,王五,其中张三是群主)

$startTime=strtotime(&34;);

$endTime=time();

$msglist=$zhangsan->getMessage($startTime,$endTime,1);//查看行为

echo&34;;

echo&34;;

//3.输出张三看到的这些信息

//print_r($msglist);

foreach($msglistas$msg){

echo&34;.$msg[&34;].&34;.$msg[&34;].&34;;

}

echo&34;;

//4.突然张三收到好友李四的信息:信息叫:张三,你在干嘛

//相当于是李四给张三发送了消息

$lisi=newUser(2,&34;,&34;,&34;);

$lisi->sendMessage(&34;,$zhangsan->id,2);

echo&34;;

//5.张三回复李四:我在想你呀

$zhangsan->sendMessage(&34;,$lisi->id,2);

echo&34;;

?>

运行结果如下:

张三使用账号a和密码b登录了张三最后登录时间为2020-06-0112:40:20张三查看了1小时内的行政部门群的信息张三看到的信息是【发送人id】:3【内容】:张三,我是王五李四发了信息给张三,说“张三,我是李四,你在干嘛”张三回复了李四,说“我在想你呀”

我们再来看数据库里的表有哪些变化

登录信息表数据增加了

消息表数据增加了

总结:

1、讲解了一个简单的qq会员登录聊天的场景

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

Published by

风君子

独自遨游何稽首 揭天掀地慰生平