web-163(网易)-EMail(邮箱)-通讯录-数据库设计

简介:

专题图编号:ylbtechOpenSource

1,功能描述

 

2,技术与环境

操作系统:

windows

开发语言:

C#

开发框架:

 

数据库:

SQLServer

开发软件:

Microsoft Visual Studio 2010

开发技术:

 ASP.net

项目组长:

yuanbo

成员:

null

个人主页:

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

科研团队:

ylbtech

教研团队:

ylbtech

3,数据库设计
复制代码
use master
go
-- =============================================
-- 网易-同学录
-- development time:2011-7-11
-- =============================================
IF EXISTS (SELECT * 
       FROM   master..sysdatabases 
       WHERE  name = N'MsgBook')
    DROP DATABASE MsgBook
GO

CREATE DATABASE MsgBook
GO
use MsgBook
go
-- =============================================
-- 分组
-- =============================================
create table [Group]
(
GroupID int identity(1,1) primary key,    --编号
GroupName varchar(20) not null,        --组名
--[Count] int default(0)            --本组的人数
UserID int    --用户编号
)
--select * from [Group]
insert into [Group](GroupName,UserID) values('朋友',1000)
insert into [Group](GroupName,UserID) values('亲人',1000)
insert into [Group](GroupName,UserID) values('同事',1000)
insert into [Group](GroupName,UserID) values('网友',1000)
insert into [Group](GroupName,UserID) values('常用联系人',1000)

go
-- =============================================
-- 联系人
-- =============================================
create table Contact
(
ContactID int identity(1,1) primary key,--编号
ContactName varchar(20) not null,    --姓名
Email varchar(50),            --电子邮箱
Tel varchar(20),            --手机号码
[Year] char(4),                --生日_年    
[Month] char(2),                --生日_月
[Day] char(2),                --生日_日
GroupList varchar(20),            --所属组
Remark varchar(100),            --备注
--GroupID int foreign key references [Group](GroupID),--分组编号
UserID int                --用户编号
)
--select * from Contact
go
-- =============================================
-- 分组联系人
-- =============================================
--create table GroupContact
--(
--GroupID int not null references [Group](GroupID),    --分组编号
--ContactID int not null references Contact(ContactID),--联系人编号
--primary key(GroupID,ContactID)
--)
create table GroupContact
(
GroupID int not null,    --分组编号 GroupID=-1;即没分组
ContactID int not null,--联系人编号
UserID int not null    --用户账号
--primary key(UserID,ContactID)
)
select * from GroupContact;
go
insert into Contact(ContactName,UserID) values('yuanBo',1000);
insert into [GroupContact](GroupID,ContactID,UserID) values(1,1,1000);
insert into [GroupContact](GroupID,ContactID,UserID) values(2,1,1000);
insert into [GroupContact](GroupID,ContactID,UserID) values(4,1,1000);

go
insert into Contact(ContactName,UserID) values('xiaoYu',1000);
insert into [GroupContact](GroupID,ContactID,UserID) values(1,2,1000);
insert into [GroupContact](GroupID,ContactID,UserID) values(2,2,1000);
insert into [GroupContact](GroupID,ContactID,UserID) values(5,2,1000);
go
insert into Contact(ContactName,UserID) values('Tong',1000);
insert into [GroupContact](GroupID,ContactID,UserID) values(-1,3,1000);

select * from [Group] g
inner join GroupContact gc
on g.GroupID=gc.GroupID;



select g.GroupID,count(*) from [Group] g
inner join GroupContact gc
on g.GroupID=gc.GroupID
group by g.GroupID;

select count(*) from GroupContact where GroupID=1 and UserID=1

select * from Contact where ContactID in(select ContactID from GroupContact where UserID=1000)
复制代码
4,功能截图

 4.1,前台

  4.1.1

   4.1.2

  4.1.3

  4.1.4

  4.1.5

5,代码分析

 解决方案属性图

5.1,前台

复选框提取

复制代码
//已选的分组集合
        IList<int> arrayList = new List<int>();

        
        for (int i = 0; i < cblGroupList.Items.Count; i++)
        {
            if (cblGroupList.Items[i].Selected)
            {
                if (cblGroupList.Items[i].Value != "0" || cblGroupList.Items[i].Value != "-1")
                {
                    arrayList.Add(Convert.ToInt32(cblGroupList.Items[i].Value));
                }
            }
        }
        if (arrayList.Count==0)
        {
            //如果没选分组,则默认为‘未分组’
            arrayList.Add(-1);
        }
复制代码

复选框数据回填

复制代码
 private bool GetExistsGroupID(IList<int> Array,int GroupID)
    {
        for (int i = 0; i < Array.Count; i++)
        {
            if (Array[i].Equals(GroupID))
            {
                return true;
            }
        }
        return false;
    }
    private void BindGroupList()
    {
        int userID = 1000;
        cblGroupList.DataSource = GroupOper.GetList(userID);
        cblGroupList.DataTextField = "GroupName";
        cblGroupList.DataValueField = "GroupID";
        cblGroupList.DataBind();

        //设默认
        //获取已选列表
        int contactID = Convert.ToInt32(Request["ContactID"]);
        IList<int> ContactIDSelectedList = GroupContactOper.GetNum(contactID);

        for (int i = 0; i < cblGroupList.Items.Count; i++)
        {
            int GroupID=Convert.ToInt32( cblGroupList.Items[i].Value);
            if (GetExistsGroupID(ContactIDSelectedList, GroupID))
            {
                cblGroupList.Items[i].Selected = true;
            }
        }

    }
复制代码

 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

请单击“ver_1.3网易-通信录”


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

相关文章
|
存储 移动开发 大数据
HTML5 Web IndexedDB 数据库详解
IndexedDB 是一种高效的浏览器存储方案,允许在本地存储大量结构化数据,支持索引和事务,适用于需要离线和大数据处理的应用。它由数据库、对象仓库等组成,通过键值对存储数据,确保数据一致性和完整性。本介绍展示了如何创建、读取、更新和删除数据,以及事务和错误处理的最佳实践。
1529 10
|
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应用打下基础。
382 1
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
454 19
|
SQL 安全 网络安全
Web应用防火墙(WAF)与数据库应用防火墙有什么区别?
Web应用防火墙(WAF)专注于Web应用系统和网站的应用层防护,可有效应对OWASP Top 10等常见攻击,防止SQL注入、CC攻击等。而数据库应用防火墙则位于应用服务器与数据库之间,提供数据库访问控制、攻击阻断、虚拟补丁等高级防护功能,直接保护数据库免受攻击。两者分别针对Web层和数据库层提供不同的安全保护。
532 4
|
存储 移动开发 数据库
HTML5 Web IndexedDB 数据库常用数据存储类型
IndexedDB 支持多种数据存储类型,满足复杂数据结构的存储需求。它包括基本数据类型(如 Number、String、Boolean、Date)、对象(简单和嵌套对象)、数组、Blob(用于二进制数据如图像和视频)、ArrayBuffer 和 Typed Arrays(处理二进制数据)、结构化克隆(支持 Map 和 Set 等复杂对象),以及 JSON 数据。尽管不直接支持非序列化数据(如函数和 DOM 节点),但可以通过转换实现存储。开发者应根据具体需求选择合适的数据类型,以优化性能和使用体验。
1156 10
|
SQL 存储 移动开发
HTML5 Web SQL 数据库详解
Web SQL 数据库是 HTML5 中的一种本地存储技术,允许在浏览器中使用 SQL 语言操作本地数据,支持离线访问和事务处理,适用于缓存数据和小型应用。然而,其存储容量有限且仅部分现代浏览器支持,标准已不再积极维护,未来可能被 IndexedDB 和 localStorage 等技术取代。使用时需谨慎考虑兼容性和发展前景。
|
安全 关系型数据库 数据库
FastAPI数据库操作秘籍:如何通过高效且安全的数据库访问策略,使你的Web应用飞速运转并保持数据完整性?
【8月更文挑战第31天】在构建现代Web应用时,数据库操作至关重要。FastAPI不仅简化了API创建,还提供了高效数据库交互的方法。本文探讨如何在FastAPI中实现快速、安全的数据处理。FastAPI支持多种数据库,如SQLite、PostgreSQL和MySQL;选择合适的数据库可显著提升性能。通过安装相应驱动并配置连接参数,结合ORM库(如Tortoise-ORM或SQLAlchemy),可以简化数据库操作。使用索引、批量操作及异步处理等最佳实践可进一步提高效率。同时,确保使用参数化查询防止SQL注入,并从环境变量中读取敏感信息以增强安全性。
1190 1
|
缓存 NoSQL 数据库
Web服务器与数据库优化:提升系统性能的最佳实践
【8月更文第28天】在现代的Web应用中,Web服务器与后端数据库之间的交互是至关重要的部分。优化这些组件及其相互作用可以显著提高系统的响应速度、吞吐量和可扩展性。本文将探讨几种常见的优化策略,并提供一些具体的代码示例。
496 1
|
数据采集 数据可视化 关系型数据库
【优秀python web设计】基于Python flask的猫眼电影可视化系统,可视化用echart,前端Layui,数据库用MySQL,包括爬虫
本文介绍了一个基于Python Flask框架、MySQL数据库和Layui前端框架的猫眼电影数据采集分析与可视化系统,该系统通过爬虫技术采集电影数据,利用数据分析库进行处理,并使用Echart进行数据的可视化展示,以提供全面、准确的电影市场分析结果。
910 4
|
关系型数据库 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应用提供了一个坚实的基础。
338 0

热门文章

最新文章