湖南大学分布式数据库大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分布式数据库课程设计
题目基于MongoDB的QQ空间模拟实现
学生姓名刘家宇
学生学号***********
专业班级计科一班
指导老师王永恒
完成日期 2015年1月15日
一、设计目的
QQ空间是现在大家经常使用的社交平台。在QQ空间上可以自己发表说说,查看其他人的说说,也可以给其他人的留言板上留言。这些功能都丰富了我们的社交生活,因此本次用JAVA连接Mongodb来实现一个简单的QQ空间模拟实现。
二、编写环境
Eclipse+Mongodb
三、环境配置
首先要运行MongoDB服务器,然后通过在eclipse里添加MongoDB的jar包来获取关于MongoDB的java方法,然后用这些方法来启动和操作MongoDB服务器。
在MongoDB官网“/downloads”下载MongoDB服务器应用包,将里面的exe文件放到一个自己设置的MongoDB文件夹中,如“F:
\MongoDB”
打开CMD,在刚刚的创建文件夹的目录下,输入指令
“mongod–dbpath “F:\MongoDB\data””如下图所示MongoDB服务器连接设置成功:
四、设计实现
1、数据库设计
Mongo数据库的设计
创建一个名为:soial的Mongo数据库,然后创建一些数据集合
①用户数据集合(userInfo):含有用户名(name)、用户密码(pwd)、用户地址(address)、用
户出生年月日(year、month、day)、用户证件号(id)和是否处于登陆状态(status)这些属性
②个人好友数据集合(userFriend):含有好友名(friend)和个人用户名(name)属性。
③留言板数据集合(userMassage):含有留言内容(massage)、留言人名(recipient)和对谁留
言(sender)的属性
④说说数据集合(userSaySay):说说内容(massage)和个人用户名(name)属性。
等等
2、功能设计
用户登录
代码
public class RegisterMonitor implements ActionListener{ private RegisterFrame rf; //用于注册界面
private boolean juge_success = true; //用于判断登录是否成功private boolean juge_null = true; //用来判断用户名和密码是否为空
public RegisterMonitor(RegisterFrame rf){
this.rf = rf;
}
public void actionPerformed(ActionEvent e) {
if(("返回").equals(e.getActionCommand())){
//用于关闭注册界面
rf.dispose();
//用于实例化登陆界面
LoginFrame lf = new LoginFrame();
//用于显示登陆界面
lf.showFrame();
}else if(("完成注册").equals(e.getActionCommand())){ String str = "";
//用于判断用户名是否为空
if(("").equals(rf.jtf_user_name.getText())){
juge_null = false;
}//如果不为空
else{
//进而判断密码是否为空
if(("").equals(rf.jtf_user_pwd.getText())){
juge_null = false;
}
}
//如果都不为空,再判断是否有重复用户名
if(juge_null){
//从Mongodb中获得名为userInfo的数据集合,如果该数据集合不存在,Mongodb会为其新建立
DBCollection userInfo =
OpenDatabase.db.getCollection("userInfo");
// 创建要查询的user
BasicDBObject searchQuery = new BasicDBObject();
//获取该用户名
str = rf.jtf_user_name.getText();
searchQuery.put("name", str);
// 使用userInfo的find方法查找user
DBCursor cursor = userInfo.find(searchQuery);
//若存在,则不能创建
while (cursor.hasNext()) {
juge_success = false;
cursor.next();
}
//判断该用户名是否存在
if(juge_success){
// 使用BasicDBObject对象创建一个mongodb的user,并给予赋值。
BasicDBObject user = new BasicDBObject();
str = rf.jtf_user_name.getText();
user.put("name", str);
str = rf.jtf_user_pwd.getText();
user.put("pwd", str);
str = rf.jtf_user_address.getText();
user.put("address", str);
str = rf.jtf_user_id.getText();
user.put("id", str);
str = rf.jtf_user_year.getText();
user.put("year", str);
str = rf.jtf_user_month.getText();
user.put("month", str);
str = rf.jtf_user_day.getText();
user.put("day", str);
//用于添加一个状态值,判断是否是当前用户登陆
user.put("status",0);
//用于将新建立的user保存到userInfo中去
userInfo.insert(user);
JOptionPane.showMessageDialog(null, "注册成功");
//用于关闭注册界面
rf.dispose();
//用于实例化登陆界面
LoginFrame lf = new LoginFrame();
//用于显示登陆界面
lf.showFrame();
}else{