1. 引言
作为一个大学生,梦想中的学校应该有着良好的学风,身边陪伴着志同道合的朋友,可以一起学习,一起游玩,一起参加志愿活动;身边充斥着各种有趣的社团,有各种机会让你展示自己的风采。大学生尤其是医学生面对繁忙的学习生活,可能没有更多的时间去完成个人意愿的事情。当你想和身边的同学一起做某件事时,别人又没有时间。何况想和身边的朋友一起约着去游玩等,由于安全问题更是不可行。每次均因缺少有共同爱好和时间的朋友而不得不取消计划。大学生之间缺乏交流的平台,大多数只认识自己所在专业的同学,缺少与其他专业之间的交流,导致自己社交范围窄,朋友圈小。
网络交友对大学生来说已是普遍现象,生活中的一部分,网络的应用确实会对新生的人际交往与朋友关系产生重大影响,从而影响其自我认同的发展 [1] [2] 。所以,一个好的大学生交流平台必不可少,搭瓣,顾名思义就是寻找有共同爱好或需求的人,在活期间结成伙伴关系。搭瓣功能就是利用线上资源帮助大学生快速寻找志同道合的同伴,并打破了线上与线下关系转换的障碍,将线上的交流演变为线下的互动,最后形成具有一定流动性和稳定性的伙伴关系。在利用线上资源的同时,搭瓣也将为线下关系形成的线上熟人社群提供线上互动交流的服务,为需要新鲜血液的团队提供更加便捷的纳新方法 [3] 。
本文主要研究了大学生网络交往系统“搭瓣”的设计与实现,首先给出了需求分析与技术路线,然后通过系统用例、用例规约、鲁棒图、序列图等给出了系统分析,并将分析模型中的实体类、边界类和巴控制类分别映射为对应的设计类,以及实现了原型系统。
2. 需求分析与技术路线
大学生网络交往系统“搭瓣”可以发表个人最近的计划,有效的解决了大学生的交流问题;通过筛选的操作来自动匹配到同一时间去做同一件事的同学,可以使用筛选功能,自动匹配。另外一点,我们可以通过这款软件来进行班级或者部门之间的联谊,增加了班级于班级,院系和院系之间的沟通与联系。从这个软件我们还可以得知其他专业学生的课程情况,根据个人所需去学习其他专业课程,提供了便利,提高了我们学习的积极性。本软件的设计具有良好的扩展能力并且便于维护,使用起来较为简便,因此系统的技术路线如图1所示。
1) 基于用户兴趣和社交信任的聚类推荐实现用户的兴趣点推荐。根据用户行为特点利用泊松分布建模用户在兴趣点上签到行为,然后采用损失函数拟合用户在兴趣点对上的偏序关系,利用包含地域影响力的正则化因子约束泊松矩阵分解的过程 [4] ,最后利用用户的评分为用户构建特征向量,并利用用户间的相似程度来发现具有相似偏好的用户 [5] 。
2) 基于位置社交网络实现地点推荐。常用的地理位置信息建模的方式有三种,基于幕律分布,基于高斯分布,基于时间分析的方法。采用时间窗口的方式时,原始数据会依据时间戳按照一定时间窗口大小(小时或者天等)划分成不同的块,在每一个块中按照传统的方法进行建模与处理 [6] 。
3) 基于双边兴趣的社交网好友推荐。利用用户好友关系网络信息和内容信息分别进行用户聚类,通过基于双边信息的聚类结果进行用户相似度计算和好友推荐 [7] 。
4) 开发工具介绍。Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。J2EE是一套全然不同于传统应用开发的技术架构,包含客户端组件应用程序和applet、服务器端Web组件Java Servlet和Java Server Pages、服务器端的业务组件Enterprise Java Bean,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。Eclipse是一个开放源代码的、基于Java的可扩展开发平台,允许通过插件开发环境构建与Eclipse环境无缝集成的工具。MySQL 是最流行的关系型数据库管理系统之一,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。
3. 系统分析
用户在系统上可以进行活动内容的查看,也可以在留言板进行留言,还可以将用户自己觉得好的地方和活动内容发布在“搭瓣”平台上。
3.1. 系统用例图
系统用例,如图2所示。
3.2. 用例规约
从用例规约中我们可以读出计算机实现业务所需的全部细节,包括人机交互的场景,计算机执行过程及分支、异常情况处理、业务规则的应用、实体信息(表单所填数据)等。一切编程所需要的细节都可以在用例规约文档中显示。表1就是我们的核心业务——兴趣推荐系统用例规约。
3.3. 建立分析模型
利用Actor、边界类、控制类和实体类构建系统分析模型如图3、图4所示。
4. 系统设计与实现
4.1. 分析类映射到设计类
将分析模型中的实体类、边界类和控制类分别映射为对应的设计类,如图5、图6和图7、图8所示。

Figure 3. A system analysis model described in robust graph
图3. 系统分析的鲁棒图

Figure 4. Sequence diagram of friend recommendation
图4. 好友推荐序列图

Figure 5. Entity analysis classes of friend recommended is mapped to design classes
图5. 好友推荐的实体分析类映射到设计类

Figure 6. Boundary analysis class of Daban is mapped to design class
图6. “搭瓣”边界分析类映射到设计类

Figure 7. Control analysis class of recommendation is mapped to design class
图7. 推荐控制分析类映射到设计类
表1. 兴趣推荐系统用例规约

Figure 8. Realization diagram of friend recommended
图8. 好友推荐的实现视图

Figure 9. Brain-machine interfaces of matching friend recommended
图9. 好友推荐匹配界面
4.2. 原型系统
基于相似兴趣的好友推荐示例,用户输入相关信息进行查询,用来匹配具有相似兴趣的用户,如图9所示。好友推荐匹配界面的前端代码如附录1所示。
在图9中,输入信息后会显示匹配到的具有相似兴趣爱的用户,并可以添加成好友,如图10所示。匹配到的好友界面的前端代码如附录2所示。

Figure 10. Brain-machine interfaces of matched friends
图10. 匹配到的好友界面
5. 结束语
为了让大学生能够快速便捷地通过专用网络攻击寻找身边志同道合的朋友,一起学习、一起游玩、一起参加志愿活动,在感兴趣的社团展示自己的风采。大学生网络交往系统“搭瓣”通过好友推荐、地点推荐、兴趣推荐等方式匹配到同一时间去做同一件事的同学,目前实现了简单的原型系统,将来需要优化推荐算法、系统性能和人机界面,以提升用户体验和满意度。
致谢
感谢宁夏回族自治区大学生创新训练项目:大学生网络交往系统“搭瓣”的设计与实现(NXCX2016116)。感谢开源程序https://github.com/lBetterManl/wdhy。
基金项目
宁夏回族自治区大学生创新训练项目:大学生网络交往系统“搭瓣”的设计与实现(NXCX2016116)。
附录
附录1. 好友推荐匹配界面的前端代码如下:
<%@ page language=java import=java.sql.*,java.io.*,java.util.*pageEncoding=UTF-8%>
<%@ taglib prefix=c uri=http://java.sun.com/jsp/jstl/core%>
<%@ taglib prefix=s uri=/struts-tags %>
大学生网络交往系统“搭瓣” 你的姓名:
你的爱好:
附录2. 匹配到的好友界面的前端代码如下:
<%@ page language=java import=java.sql.*,java.io.*,java.util.*%>
<%@ page contentType=text/html;charset=utf-8%>
大学生网络交往系统“搭瓣” <%
String aUserName=request.getParameter(userName).trim();
String aUserInterest=request.getParameter(userInterest).trim();
out.println(
out.println(表单输入userName的值:+ aUserName+
);
out.println(表单输入userInterest的值:+ aUserInterest+
);
out.println(
String driverName = com.mysql.jdbc.Driver//驱动程序名
String userName = root//数据库用户名
String userPasswd = root//密码
String dbName = wdhy//数据库名
String tableName = userinfo//表名
//联结字符串
String url = jdbc:mysql://localhost:3306/ + dbName + ?user=+ userName + &password= + userPasswd;
Class.forName(com.mysql.jdbc.Driver).newInstance();
Connection connection = DriverManager.getConnection(url);
Statement statement = connection.createStatement();
String sql = SELECT * FROM + tableName ;
ResultSet rs = statement.executeQuery(sql);
%>
<%
while (rs.next()) {
if (rs.getString(6).equals(aUserInterest) &&(!( rs.getString(2).equals(aUserName) )))
{out.print(
out.print(
out.print(
out.print(
out.print(
String st =rs.getString(1);
out.print(
out.print(
} else {}
%>
<% } %>
<% rs.close(); statement.close(); connection.close(); %>
期刊投稿者将享受如下服务:
1.投稿前咨询服务 (QQ、微信、邮箱皆可)
2.为您匹配最合适的期刊
3.24小时以内解答您的所有疑问
4.友好的在线投稿界面
5.专业的同行评审
6.知网检索
7.全网络覆盖式推广您的研究
投稿请点击:http://www.hanspub.org/Submission.aspx
期刊邮箱:csa@hanspub.org
NOTES
*共同第一作者。