湖南大学分布式数据库大作业
分布式数据库试题及答案

分布式数据库试题及答案数据库试题目录1. 九八年秋季试题 (5)1.1. 概念题 (5)1.1.1. 比较半连接方法和枚举法的优缺点。
(5)1.1.2. 2PL协议的基本思想。
(5)1.1.3. WAL协议的主要思想。
(5)1.1.4. SSPARC三级模式体系结构。
(5)1.1.5. 设计OID的数据结构时应考虑哪些问题。
(6)1.2. 某个大学中有若干系,且每个系有若干个班级和教研室,每个教研室有若干个教员,其中教授、副教授每个人带若干名研究生。
每个班有若干名学生,每个学生可选修若干门课程,每门课程可由若干学生选修。
完成下列各种要求: (7)1.3. 下面是某学院的一个学生档案数据库的全局模式: (9)1.3.1. 将全局模式进行分片,写出分片定义和分片条件。
(9)1.3.2. 指出各分片的类型,并画出分片树。
(9)1.3.3. 假设要求查询系号为1的所有学生的姓名和成绩,写出在全局模式上的SQL查询语句,并要求转换成相应的关系代数表示,画出全局查询树,请依次进行全局优化和分片优化,画出优化后的查询树。
要求给出优化变换过程。
(10)1.4. 设数据项x,y存放在S1场地,u,v存放在S2场地,有分布式事务T1和T2,T1在S1场地的操作为R1(x)W1(x)R1(y)W1(y),T2在S1场地的操作为R2(x)R2(y)W2(y);T1在S2场地上的操作作为R1(u)R1(v)W1(u),T2在S2场地上的操作作为W2(u)R2(v)W2(v)。
对下述2种情况,各举一种可能的局部历程(H1和H2),并说明理由。
(11)1.4.1. 局部分别是可串行化,而全局是不可串行化的 (11)1.4.2. 局部和全局都是可串行化的。
要求按照严格的2PL协议,加上适当的加锁和解锁命令,(注意,用rl(x)表示加读锁,wl(x)表示加对x加写锁,ul(x)表示解锁)121.5. 试述面向对象的数据库系统中页面服务器和对象服务器两种Client/Server体系结构的主要特点, (12)2. 九九年春季试题 (13)2.1. DBMS解决了信息处理技术中的哪些挑战? (13)2.2. 在关系数据库应用设计中,为什么要对数据库模式进行规范化? (13)2.3. 简述ACID特性。
湖南大学数据库实验四-完整性约束、视图、存储过程和数据安全

湖南大学数据库实验四-完整性约束、视图、存储过程和数据安全实验四完整性约束、视图、存储过程和数据安全实验目的:1、掌握创建各种实体完整性约束的方法。
2、掌握创建和使用视图、存储过程和索引的方法。
3、掌握视图实现数据安全的基本方法。
4、掌握数据库的基本备份和恢复技术。
实验内容:本实验在ORACLE数据库平台上进行操作,ORACLE数据库的基本操作请参考实验二,本实验中的各种数据都来自于实验三中的各个表。
实验主要内容如下:1、学习创建四类完整性约束的方法。
2、学习创建视图、存储过程和索引的方法。
3、学习利用用户管理,角色管理,以及利用视图实现数据安全。
4、学习ORACLE数据库的基本备份和恢复技术。
实验过程:1.实体完整性约束方法一:create table course (cno varchar(10) not null,dno char(8) not null,cname varchar(20) not null,hours number not null,term number not null,credit number not null,constraint pk_course primary key (cno));方法二:alter table course add constraint pk_course primary key(cno) ;2.参照完整性约束alter table COURSEadd constraint FK_COURSE_DEPARTMEN_DEPARTME foreign key (dno)references department (dno);3.域约束前面建表时用的数据类型,NOT NULL等都属于域约束;alter table student add constraint chk_sex check (sex in ('男','女'));alter table student modify sex default '男';alter table student_course_teacher add constraint chk_score check (score>=0 AND score<=100);4.业务规则约束用触发器实现一下:create or replace trigger tri_del_teacherafter delete on teacherfor each rowdeclare-- local variables herebegindelete from teacher_coursewhere tno=:old.tno;delete from student_course_teacherwhere tno=:old.tno;end tri_del_teacher;/备注:最后面的斜杠“/”不能少。
分布式数据库原理与应用题库

分布式数据库原理与应用题库1. 引言随着互联网的快速发展和大数据时代的到来,数据量的爆炸式增长对数据库的存储和处理能力提出了更高的要求。
传统的单节点数据库已经难以满足这一需求,而分布式数据库应运而生。
本文将介绍分布式数据库的原理和应用,并提供一些应用题供读者练习,加深对该主题的理解。
2. 分布式数据库的原理分布式数据库是将数据存储在多个物理节点上的数据库系统,节点之间通过网络进行通信和协作。
它具有以下几个核心原理:2.1 数据分片和副本为了实现数据的分布式存储和高可用性,分布式数据库将数据进行分片处理,并将每个分片的副本存储在不同的节点上。
这样可以提高数据访问的并发性和容错性。
2.2 数据一致性和并发控制在分布式数据库中,多个节点同时操作数据可能会造成数据的不一致。
因此,分布式数据库需要实现一致性协议来保证数据的一致性,并使用并发控制技术来处理并发操作。
2.3 数据通信和数据同步分布式数据库中的节点通过网络进行数据通信和数据同步。
节点之间的通信可以通过消息传递、RPC(Remote Procedure Call)等方式实现。
数据同步可以通过数据复制和数据冗余等方式实现。
3. 分布式数据库的应用分布式数据库广泛应用于互联网、云计算、物联网等领域,它具有高可用性、可扩展性和容错性等优势。
以下是一些分布式数据库的常见应用案例:3.1 电商平台在电商平台中,用户的购物行为产生了大量的交易数据,而这些数据需要快速地进行存储和分析。
分布式数据库可以实现海量数据的存储和查询,并提供高性能的数据处理能力,从而提高用户的购物体验。
3.2 物联网物联网设备产生的数据通常具有大规模、高并发的特点。
分布式数据库可以实现对这些数据的实时监控和存储,同时提供高可靠性和高性能的数据处理能力。
3.3 金融系统金融系统需要处理大量的交易数据,并保证数据的安全和一致性。
分布式数据库可以有效地管理和存储金融数据,并提供高度可靠的事务处理能力。
分布式数据库大作业

分布式数据库大作业Hadoop MapReduce云计算模型研究学院: 软件学院专业: 软件工程2014年01月02日大连理工大学Hadoop MapReduce云计算模型研究1.引言Hadoop[1]就是一个分布式系统基础架构,由Apache基金会开发。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。
充分利用集群的威力高速运算与存储。
简单地说来,Hadoop就是一个可以更容易开发与运行处理大规模数据的软件平台。
其包括两个部分:HDFS[2]与MapReduce[3]。
DFS即HadoopDistributed(Hadoop分布式文件系统),HDFS具有高容错性,并且可以被部署在低价的硬件设备之上。
HDFS很适合那些有大数据集的应用,并且提供了对数据读写的高吞吐率。
HDFS就是一个master/slave的结构,就通常的部署来说,在master上只运行一个Namenode,而在每一个slave上运行一个Datanode。
HDFS支持传统的层次文件组织结构,同现有的一些文件系统在操作上很类似,比如您可以创建与删除一个文件,把一个文件从一个目录移到另一个目录,重命名等等操作。
Namenode管理着整个分布式文件系统,对文件系统的操作(如建立、删除文件与文件夹)都就是通过Namenode来控制[4]。
MapReduce就是由Google提出的一种并行分布式编程模型[5-7]。
用以进行大数据量的计算。
对于大数据量的计算,通常采用的处理手法就就是并行计算。
至少现阶段而言,对许多开发人员来说,并行计算还就是一个比较遥远的东西。
MapReduce就就是一种简化并行计算的编程模型,它让那些没有多少并行计算经验的开发人员也可以开发并行应用。
MapReduce的名字源于这个模型中的两项核心操作:Map与Reduce。
也许熟悉FunctionalProgramming(函数式编程)的人见到这两个词会倍感亲切。
分布式计算、云计算与大数据习题参考解答

《分布式计算、云计算与大数据》习题解答参考第1章分布式计算概述一、选择题1,CD 2,ABC 3,ABCD 4,ACD二、简答题1,参考1.1.1和节2,参考1.1.2节3,分布式计算的核心技术是进程间通信,参考1.3.2节4,单播和组播5,超时和多线程三、实验题1.进程A在进程B发送receive前发起send操作进程A进程B发出非阻塞send操作,进程A继续运行发出阻塞receive操作,进程B被阻塞进程B在进程A发起send前发出receive操作发出非阻塞send 操作,进程A 继续运行发出阻塞receive 操作,进程B被阻塞收到进程A 发送的数据,进程B 被唤醒2. 进程A 在进程B 发送receive 前发起send 操作进程A 进程B发出阻塞send 操作,进程A 被阻塞发出阻塞receive 操作,进程B 被阻塞进程B 在进程A 发起send 前发出receive 操作发出阻塞send操作,进程A被阻塞发出阻塞receive操作,进程B被阻塞收到进程A发送的数据,进程B被唤醒收到进程B返回的数据,进程A被唤醒3.1).在提供阻塞send操作和阻塞receive操作的通信系统中receiveoperationsendoperationt=1在提供非阻塞send操作和阻塞receive操作的通信系统中t=1receiveoperationsendoperation2).P1,P2,P3进程间通信的顺序状态图m1m1m2m2第2章分布式计算范型概述1.消息传递,客户-服务器,P2P,分布式对象,网络服务,移动代理等2.分布式应用最广泛最流行的范型是客户-服务器范型,参考节3.分布式应用最基本的范型是消息传递模型,参考节4.参考节,P2P应用有很多,例如Napster,迅雷,PPS网络电视等5.参考节6.参考节7.略8.消息传递模式是最基本的分布式计算范型,适用于大多数应用;客户-服务器范型是最流行的分布式计算范型,应用最为广泛;P2P范型又称为对等结构范型,使得网络以最有效率的方式运行,适用于各参与者地位平等的网络;分布式对象范型,是抽象化的远程调用,适用于复杂的分布式计算应用等。
分布式数据库参考资料参考答案

1、何为分布式数据库系统?一个分布式数据库系统有哪些特点?P4答案:分布式数据库系统通俗地说,是物理上分散而逻辑上集中的数据库系统。
分布式数据库系统使用计算机网络将地理位置分散而管理和控制又需要不同程度集中的多个逻辑单位连接起来,共同组成一个统一的数据库系统。
因此,分布式数据库系统可以看成是计算机网络与数据库系统的有机结合。
一个分布式数据库系统具有如下特点:物理分布性,即分布式数据库系统中的数据不是存储在一个站点上,而是分散存储在由计算机网络连接起来的多个站点上,而且这种分散存储对用户来说是感觉不到的。
逻辑整体性,分布式数据库系统中的数据物理上是分散在各个站点中,但这些分散的数据逻辑上却构成一个整体,它们被分布式数据库系统的所有用户共享,并由一个分布式数据库管理系统统一管理,它使得“分布”对用户来说是透明的。
站点自治性,也称为场地自治性,各站点上的数据由本地的DBMS管理,具有自治处理能力,完成本站点的应用,这是分布式数据库系统与多处理机系统的区别。
另外,由以上三个分布式数据库系统的基本特点还可以导出它的其它特点,即:数据分布透明性、集中与自治相结合的控制机制、存在适当的数据冗余度、事务管理的分布性。
2、简述分布式数据库系统的模式结构和各层模式的概念。
P12-P13分布式数据库是多层的,国内分为四层:全局外层:全局外模式,是全局应用的用户视图,所以也称全局试图。
它为全局概念模式的子集,表示全局应用所涉及的数据库部分。
全局概念层:全局概念模式、分片模式和分配模式全局概念模式描述分布式数据库中全局数据的逻辑结构和数据特性,与集中式数据库中的概念模式是集中式数据库的概念视图一样,全局概念模式是分布式数据库的全局概念视图。
分片模式用于说明如何放置数据库的分片部分。
分布式数据库可划分为许多逻辑片,定义片段、片段与概念模式之间的映射关系。
分配模式是根据选定的数据分布策略,定义各片段的物理存放站点。
局部概念层:局部概念模式是全局概念模式的子集。
数据库大作业

华南理工大学数据库原理与设计大作业报告专业:计算机科学与技术班级: 2015春学号: 201504742013001学生姓名:陈亮完成时间: 2016.05.08目录目录 (2)1、概述 (3)2、需求分析 (5)2.1零售前台(POS)管理系统 (5)2.2后台管理系统 (5)2.3数据需求 (6)3、数据库逻辑设计 (7)3.1 概念结构设计 (7)4、软件功能设计 (11)4.1逻辑结构设计 (11)4.2物理结构设计 (13)4.3完整性设计 (16)4.4安全性设计 (18)5、界面设计 (20)5.1系统功能结构图 (20)5.2模块设计与实现(部分界面) (20)6、结束语 (31)7、参考文献 (33)1、概述超市管理信息系统是针对超级市场的销售而开发的。
应用超市管理信息系统能够转变超市的工作方式,有效提高销售速度和服务水平,提高客户对超市的信任度和满意度,改善客户关系。
运用超市管理信息系统,在销售商品时实行出口一次性付款,可以实现超市内部现代化管理,能够准确把握每一种商品的销售动态,防止商品断档或过量储备,商品开发方向、进货的适时化都可通过超市管理信息系统来完成。
超市管理信息系统将手工编制好的销售账目或根据原始超市销售记录直接在系统内制作超市销售信息,同时可对输入的超市销售信息进行修改、查询等操作。
这种集约化的销售管理模式既便于对超市销售信息的收集、整理和加工,又便于操作员的需求信息在最短的时间内得到反馈,同时超市管理信息系统可自动分析各种商品销售变化规律,商品销售结构、居民消费变化等,从而为合理进货、经营、加工、库存、销售等提供科学的决策依据。
超市管理信息系统充分运用计算机管理信息技术,建立数据库,对超市的进销存过程进行详细分析,实现了对超市的进货、销售和库存的科学管理。
内部的所有业务,包括销售信息、进货信息、商品信息,具有超级用户的所有权限,对超市实行全面管理。
销售员的要求是查看所有销售信息,查看符合条件的销售信息以及增加销售单。
分布式数据库系统考试

分布式数据库系统考试(答案见尾页)一、选择题1. 分布式数据库系统的定义是什么?A. 一种将数据存储在多个地理位置的数据库系统中,通过分布式计算框架来管理和访问数据的一种技术。
B. 一种单一的集中式数据库系统,所有数据都存储在一个服务器上。
C. 一种将数据分割成多个部分,并分布存储在不同的服务器上的数据库系统。
D. 一种不依赖于单一服务器的数据库系统,数据可以跨多个服务器进行存储和访问。
2. 分布式数据库系统的优点包括哪些?A. 提高数据处理速度和效率。
B. 降低单点故障的风险。
C. 更好的数据冗余和容错能力。
D. 扩展性更强,可以更容易地添加新的数据和节点。
3. 以下哪个不是分布式数据库系统中的常见拓扑结构?A. 星形拓扑B. 环形拓扑C. 网状拓扑D. 树形拓扑4. 在分布式数据库系统中,什么是分片?A. 将整个数据库系统的数据分成多个部分,每个部分存放在一个单独的节点上。
B. 将数据库系统的一个或多个表按照某种规则分成多个部分。
C. 将数据库系统的数据按照某种规则分成多个部分,每个部分存放在一个单独的节点上。
D. 将数据库系统的一个或多个表按照某种规则分成多个部分,并存放在不同的节点上。
5. 在分布式数据库系统中,什么是复制?A. 将数据库系统的数据复制到多个节点上,以确保数据的可靠性和可用性。
B. 将数据库系统的数据存储在多个地理位置,以确保数据的可靠性和可用性。
C. 将数据库系统的数据按照某种规则分成多个部分,并存放在不同的节点上。
D. 将数据库系统的一个或多个表按照某种规则分成多个部分,并存储在不同的节点上。
6. 在分布式数据库系统中,什么是分布式事务?A. 一种需要在多个节点上同步更新数据的事务处理方式。
B. 一种可以在多个节点上并行处理的事务处理方式。
C. 一种需要确保数据的一致性和完整性的事务处理方式。
D. 一种可以在多个节点上同时执行的事务处理方式。
7. 分布式数据库系统中的数据一致性是指什么?A. 数据在多个节点上保持一致的状态。
- 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");// 创建要查询的userBasicDBObject searchQuery = new BasicDBObject();//获取该用户名str = rf.jtf_user_name.getText();searchQuery.put("name", str);// 使用userInfo的find方法查找userDBCursor 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{JOptionPane.showMessageDialog(null, "注册失败,用户名重复");}System.out.println("Done");}else{JOptionPane.showMessageDialog(null, "用户名或者密码不能为空");}juge_null = true;juge_success = true;}}}好友添加代码:public class AddFriendMonitor implements ActionListener{private AddFriendFrame aff; //用于添加好友界面private boolean juge_add = false; //用于判断是否可以添加private boolean juge_simple = false; //用于判断输入的是否跟为当前登陆用户public AddFriendMonitor(AddFriendFrame aff) {this.aff = aff;}public void actionPerformed(ActionEvent e) {if(("添加").equals(e.getActionCommand())){String str = "";//用于获取输入框的内容str = aff.jta_name.getText();//用于判断是否为当前用户if((er_name).equals(str)){juge_simple = true;}//如果是,则添加失败if(juge_simple){JOptionPane.showMessageDialog(null, "不能添加用户自己本身");}//如果不是else{//转而从Mongodb中获得名为userInfo的数据集合,若该数据集合不存在,Mongodb会为其新建立DBCollection userInfo =OpenDatabase.db.getCollection("userInfo");//用于从Mongodb中获得名为userFriend的数据集合,如果该数据集合不存在,Mongodb会为其新建立DBCollection userFriend =OpenDatabase.db.getCollection("userFriend");// 用于创建要查询的userBasicDBObject searchQuery = new BasicDBObject();searchQuery.put("name", str);DBCursor cursor = userInfo.find(searchQuery)while (cursor.hasNext()) {juge_add = true;cursor.next();}// 创建要查询的friendBasicDBObject friendQuery = new BasicDBObject();friendQuery.put("name", er_name);friendQuery.put("friend", str);cursor = userFriend.find(friendQuery);//如果存在,则添加失败while (cursor.hasNext()) {juge_add = false;cursor.next();}//用于判断是否可以添加if(juge_add){JOptionPane.showMessageDialog(null, "添加成功");// 用于创建要添加的好友BasicDBObject friend = new BasicDBObject();friend.put("name", er_name);friend.put("friend",str);//用于将新建立的friend保存到userFriend中去userFriend.insert(friend);aff.dispose();}else{JOptionPane.showMessageDialog(null, "该用户不存在或已经是你好友");}}juge_simple = false;juge_add = false;}}}查看好友代号public class FriendMonitor implements ActionListener{ private FriendFrame ff;public FriendMonitor(FriendFrame ff) {this.ff = ff;}public void actionPerformed(ActionEvent e) {if(("说说").equals(e.getActionCommand())){ff.showSaySay();}else if(("日志").equals(e.getActionCommand())){}else if(("留言板").equals(e.getActionCommand())){ ff.showMessage();}else if(("音乐").equals(e.getActionCommand())){}else if(("相册").equals(e.getActionCommand())){}else if(("发送").equals(e.getActionCommand())){//用于获取要发送的信息String str_msg = ff.jta_message.getText();//用于从Mongodb中获得名为userMessage的数据集合,如果该数据集合不存在,Mongodb会为其新建立DBCollection userMessage =OpenDatabase.db.getCollection("userMessage");// 用于创建要添加的说说BasicDBObject searchQuery = new BasicDBObject();searchQuery.put("sender", er_name);searchQuery.put("recipient",er_name);searchQuery.put("massage", str_msg);//用于添加进数据集合userMessage.insert(searchQuery);//用于刷新说说ff.showMessage();}}}查看主页代码public class MainMonitor implements ActionListener{ private MainFrame mf;/*** 构造方法,用来传入参数* @param mf 主界面*/public MainMonitor(MainFrame mf) {this.mf = mf;}public void actionPerformed(ActionEvent e) {if(("查看好友").equals(e.getActionCommand())){//用于实例化查看好友界面LookFriendFrame lff = new LookFriendFrame();//用于显示界面lff.showFrame();}else if(("添加好友").equals(e.getActionCommand())){ //用于实例化添加好友界面AddFriendFrame aff = new AddFriendFrame();//用于显示界面aff.showFrame();}else if(("说说").equals(e.getActionCommand())){mf.showSaySay();}else if(("日志").equals(e.getActionCommand())){}else if(("留言板").equals(e.getActionCommand())){mf.showMessage();}else if(("发送").equals(e.getActionCommand())){//获取要发送的信息String str_msg = mf.jta_saysay.getText();//从Mongodb中获得名为userSaySay的数据集合,如果该数据集合不存在,Mongodb会为其新建立OpenDatabase.db.getCollection("userSaySay");// 创建要添加的说说BasicDBObject searchQuery = new BasicDBObject();searchQuery.put("name", er_name);searchQuery.put("massage", str_msg);//添加进数据集合userSaySay.insert(searchQuery);//刷新说说mf.showSaySay();}else if(("返回登陆").equals(e.getActionCommand())){//获取点击的是确定还是取消int i = JOptionPane.showConfirmDialog(null,"是否要登出","",JOptionPane.YES_NO_OPTION);//若点击的是确定,则删除该好友if(i == 0){JOptionPane.showMessageDialog(null, "登出成功");//关闭主界面mf.dispose();//从Mongodb中获得名为userInfo的数据集合,如果该数据集合不存在,Mongodb会为其新建立OpenDatabase.db.getCollection("userInfo");//更新用户数据,把用户状态改为登陆状态BasicDBObject newDocument3 =newBasicDBObject().append("$set",new BasicDBObject().append("status",0));userInfo.update(new BasicDBObject().append("name", er_name),newDocument3);//实例化登陆界面LoginFrame lf = new LoginFrame();//显示界面lf.showFrame();}}}}。