web-QQ(腾讯)-EMail-QQMsg(仿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”


本文转自ylbtech博客园博客,原文链接:http://www.cnblogs.com/ylbtech/archive/2012/09/04/2670359.html,如需转载请自行联系原作者

相关文章
|
7月前
|
存储 缓存 NoSQL
在Python Web开发过程中:数据库与缓存,Redis在Web开发中的常见应用场景有哪些?
Redis在Python Web开发中常用于缓存、会话管理、分布式锁、排行榜、消息队列和实时分析。作为内存数据存储,它提供高效的数据结构(如字符串、哈希、列表、集合、有序集合),支持会话存储、互斥操作、计数与排名、队列实现及实时数据处理。其高速性能和丰富功能使其成为多场景下的理想选择。
72 5
|
2月前
|
存储 移动开发 大数据
HTML5 Web IndexedDB 数据库详解
IndexedDB 是一种高效的浏览器存储方案,允许在本地存储大量结构化数据,支持索引和事务,适用于需要离线和大数据处理的应用。它由数据库、对象仓库等组成,通过键值对存储数据,确保数据一致性和完整性。本介绍展示了如何创建、读取、更新和删除数据,以及事务和错误处理的最佳实践。
|
4月前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
62 1
|
23天前
|
SQL 安全 网络安全
Web应用防火墙(WAF)与数据库应用防火墙有什么区别?
Web应用防火墙(WAF)专注于Web应用系统和网站的应用层防护,可有效应对OWASP Top 10等常见攻击,防止SQL注入、CC攻击等。而数据库应用防火墙则位于应用服务器与数据库之间,提供数据库访问控制、攻击阻断、虚拟补丁等高级防护功能,直接保护数据库免受攻击。两者分别针对Web层和数据库层提供不同的安全保护。
36 4
|
2月前
|
存储 移动开发 数据库
HTML5 Web IndexedDB 数据库常用数据存储类型
IndexedDB 支持多种数据存储类型,满足复杂数据结构的存储需求。它包括基本数据类型(如 Number、String、Boolean、Date)、对象(简单和嵌套对象)、数组、Blob(用于二进制数据如图像和视频)、ArrayBuffer 和 Typed Arrays(处理二进制数据)、结构化克隆(支持 Map 和 Set 等复杂对象),以及 JSON 数据。尽管不直接支持非序列化数据(如函数和 DOM 节点),但可以通过转换实现存储。开发者应根据具体需求选择合适的数据类型,以优化性能和使用体验。
|
2月前
|
SQL 存储 移动开发
HTML5 Web SQL 数据库详解
Web SQL 数据库是 HTML5 中的一种本地存储技术,允许在浏览器中使用 SQL 语言操作本地数据,支持离线访问和事务处理,适用于缓存数据和小型应用。然而,其存储容量有限且仅部分现代浏览器支持,标准已不再积极维护,未来可能被 IndexedDB 和 localStorage 等技术取代。使用时需谨慎考虑兼容性和发展前景。
|
4月前
|
缓存 NoSQL 数据库
Web服务器与数据库优化:提升系统性能的最佳实践
【8月更文第28天】在现代的Web应用中,Web服务器与后端数据库之间的交互是至关重要的部分。优化这些组件及其相互作用可以显著提高系统的响应速度、吞吐量和可扩展性。本文将探讨几种常见的优化策略,并提供一些具体的代码示例。
185 1
|
4月前
|
数据采集 数据可视化 关系型数据库
【优秀python web设计】基于Python flask的猫眼电影可视化系统,可视化用echart,前端Layui,数据库用MySQL,包括爬虫
本文介绍了一个基于Python Flask框架、MySQL数据库和Layui前端框架的猫眼电影数据采集分析与可视化系统,该系统通过爬虫技术采集电影数据,利用数据分析库进行处理,并使用Echart进行数据的可视化展示,以提供全面、准确的电影市场分析结果。
151 4
|
3月前
|
关系型数据库 Java MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【9月更文挑战第6天】在Linux环境下安装JDK 1.8、Tomcat和MariaDB是搭建Java Web应用的关键步骤。本文详细介绍了使用apt-get安装OpenJDK 1.8、下载并配置Tomcat,以及安装和安全设置MariaDB(MySQL的开源分支)的方法。通过这些步骤,您可以快速构建一个稳定、高效的开发和部署环境,并验证各组件是否正确安装和运行。这为您的Java Web应用提供了一个坚实的基础。
56 0
|
4月前
|
开发者 前端开发 Java
架构模式的诗与远方:如何在MVC的田野上,用Struts 2编织Web开发的新篇章
【8月更文挑战第31天】架构模式是软件开发的核心概念,MVC(Model-View-Controller)通过清晰的分层和职责分离,成为广泛采用的模式。随着业务需求的复杂化,Struts 2框架应运而生,继承MVC优点并引入更多功能。本文探讨从MVC到Struts 2的演进,强调架构模式的重要性。MVC将应用程序分为模型、视图和控制器三部分,提高模块化和可维护性。
50 0