• webQQ(腾讯)EMailQQMsg(仿QQ短信)数据库设计


    专题图编号:ylbtechOpenSource

    1,功能描述

     仿QQ短信(QQ邮箱里面的功能),登录,短息主界面,发信息,单个话题对话。

    2,技术与环境

    操作系统:

    windows

    开发语言:

    C#

    开发框架:

     

    数据库:

    SQLServer

    开发软件:

    Microsoft Visual Studio 2010

    开发技术:

     ASP.net

    项目组长:

    yuanbo

    成员:

    null

    个人主页:

    http://www.cnblogs.com/ylbtech/

    科研团队:

    ylbtech

    教研团队:

    ylbtech

    3,数据库设计
    -- =============================================
    -- ylb;仿QQ短信
    -- development time:11:35 2012-04-18
    -- =============================================
    use master
    go
    IF EXISTS (SELECT * 
           FROM   master..sysdatabases 
           WHERE  name = N'QQMessage')
        DROP DATABASE QQMessage
    GO
    
    CREATE DATABASE QQMessage
    GO
    
    use QQMessage
    go
    -- =============================================
    -- ylb;1,Users
    -- remark:用户表
    -- =============================================
    create table Users
    (
    userId int primary key identity(100,1),    --编号[PK]
    nickname varchar(200) not null,        --昵称
    userpass varchar(200) not null,        --密码
    headImage varchar(200),            --头像地址
    username varchar(200),            --备注姓名
    flag int default(0) check(flag in(0,1))    --标识,flag=1,说明此用户已注销,0:正常
    )
    
    go
    -- =============================================
    -- ylb;2,Note
    -- remark:短信表
    -- =============================================
    create table Message
    (
    msgId int primary key identity(200,1),    --编号[PK]
    toUserId varchar(200) not null,        --收信人编号[FK]
    content varchar(500) not null,        --发新内容
    pubdate datetime default(getdate()),    --发送时间
    sendUserId int        --发送用户编号[FK]
    
    )
    -- =============================================
    -- ylb;3,Friend
    -- remark:好友表
    -- =============================================
    create table Friend
    (
    userId int not null,    --用户编号
    friendId int not null    --用户好友编号
    
    )
    
    print '数据创建成功!'
    
    -- =============================================
    -- ylb;仿QQ短信
    -- development time:11:35 2012-04-18
    -- =============================================
    use QQMessage
    
    go
    --InsertData
    insert into Users(nickname,userpass,headImage) values('sunshine','m123','default.jpg')
    insert into Users(nickname,userpass,headImage) values('rain','m123','default.jpg')
    insert into Users(nickname,userpass,headImage) values('lanchong','m123','default.jpg')
    insert into Users(nickname,userpass,headImage) values('sun','m123','default.jpg')
    
    select * from Users
    
    
    go
    --修改备注
    update Users set username='袁博' where userId=102
    go
    --登录
    select count(*) from Users where userId=100 and userpass='m123'
    go
    --删除一组会话
    delete Message where toUserId=100 and sendUserId=101 or toUserId=101 and sendUserId=100
    
    
    go
    --1,发送信息
    --1,outBox
    insert into Message(toUserId,content,sendUserId) values(100,'I is sunshie',101)
    --2,inBox
    insert into Message(toUserId,content,sendUserId) values(101,'Who are you?',100)
    
    insert into Message(toUserId,content,sendUserId) values(100,'sunshie',101)
    
    
    go
    --2,我的收信列表
    --2_1,List
    select userId,nickname,headImage,username from Users
    where userId in(select sendUserId from Message where toUserId=100) 
    or userId in(select toUserId from Message where sendUserId=100)
    
    go
    --2_2,附属最近的一条短信
    select top 1 msgId,toUserId,content,pubdate,sendUserId from Message 
    where toUserId=100 and sendUserId=101 or toUserId=101 and sendUserId=100
    order by msgId desc
    
    
    
    
    
    --最新的回复
    select top 1 content from Message where toUserId=101 and sendUserId=100
    order by msgId desc
    
    go
    select userId,nickname,headImage,username from Users
    where userId in(select sendUserId from Message where toUserId=100)
    
    select userId,nickname,headImage,username,content from Users u left join Message m
    on u.userId=m.toUserId
    
    
    go
    --3,单机看详细
    select * from Users
    select * from Message
    
    go
    --3_1,获取备注
    select nickname from Users where userId=1
    
    go
    --3_2,获取列表
    select * from Users u left join Message m
    on u.userId=m.toUserId
    go
    --结论
    select userId,nickname,headImage,username,msgId,content,pubdate,sendUserId from Users u 
    left join Message m on u.userId=m.toUserId
    where toUserId=100 and sendUserId=101 or toUserId=101 and sendUserId=100
    4,功能截图

     4.1,前台

    4.1.1  /SignIn.aspx

    4.1.2  /Menu.aspx  短息主界面

    4.1.3  /Write.aspx  写短消息

    4.1.4  /Detail.aspx  单个对话组

    5,代码分析

     解决方案属性图

    5.1,前台

    5.1.1  /Handler/SendMsg.ashx

    <%@ WebHandler Language="C#" Class="SendMsg" %>
    
    using System;
    using System.Web;
    
    public class SendMsg : IHttpHandler {
        
        public void ProcessRequest (HttpContext context) {
            context.Response.ContentType = "text/plain";
    
            //发送短信
            int toUserId = Convert.ToInt32(context.Request["toUserId"]);
            int sendUserId = Convert.ToInt32(context.Request["sendUserId"]);
    
            MessageInfo dal = new MessageInfo()
            {
                ToUserId = toUserId,
                SendUserId = sendUserId,
                Content = context.Server.UrlDecode(context.Request["content"])
            };
    
            //Call Fun
            int id= MessageOper.Add(dal);
            context.Response.Write(id+"");
        }
     
        public bool IsReusable {
            get {
                return false;
            }
        }
    
    }

     5.2,后台

    6,示例|讲解案例下载

    博客园讲解:  http://ylbtech.cnblogs.com/

    百度文库开发文档: http://passport.baidu.com/?business&aid=6&un=ylbtech#7

    谷歌开源代码下载: http://code.google.com/p/ylbtechopensource/downloads/list

    请单击“ver1.1 QQMessage”

    warn 作者:ylbtech
    出处:http://ylbtech.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

     

    最终目标

     代码的国际化标准示例 ylb,tech”,最大程度地规范软件编程开发统一,优质, 高效,易学,为建设软件强国(中国)而努力。

     

  • 相关阅读:
    aspjpeg组件安装、使用常见问题
    调用过程sub时不能使用括号
    asp中,使用js打开别的网址注意点
    让文件夹属性出现“安全”选项卡
    C#正则表达式使用<转载备用>
    .NET编程中常用的路径表示方式<转>
    DIVWEB布局
    winform report<收藏>
    Delphi中MessageBox用法
    DW中常用标签
  • 原文地址:https://www.cnblogs.com/ylbtech/p/2670359.html
Copyright © 2020-2023  润新知