您的位置:首页 > 数据库

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

2012-09-04 16:37 405 查看
专题图

编号: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://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
最终目标
代码的国际化标准示例 ylb,tech”,最大程度地规范软件编程开发统一,优质, 高效,易学,为建设软件强国(中国)而努力。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: