大学生交友平台 APP——YouQu
大学生交友平台 APP——YouQu
- YouQu(友趣)
- 1.软件简介
- 1.1.软件设计理念
- 1.2.软件实现功能
- 1.3.软件运行环境
- 2.外部接口需求
- 2.1.用户界面设计
- (1)APP ICON
- (2)软件安装概念图
- (3)软件操作界面
- 2.2.硬件接口
- 2.3.软件接口
- 2.4.通信接口
- 3.软件代码
- 3.1. 软件前端代码
- 3.2.软件后端代码
- 3.2.1.用户组以及好友推荐算法的实现
- 3.2.2. 聊天文件储存的实现
- 4.对最初设计的一些更改
- 5.最后鸣谢
YouQu(友趣)
1.软件简介
1.1.软件设计理念
面对面交友已经不能满足当代大学生的需求,网络交友品台为他们提供了一个实时的、易操作的交流互动的平台。
本项目致力于为大学生提供一个便捷的交友平台。有利于初入BIT的新同学快速掌握校内新鲜事、过往史。对于高年级同学可以在这里发现更多志同道合的朋友,一起聊理想、谈人生。依托于移动客户端,在本平台的用户可以随时随地分享自己的日常动态,让更多人了解自己,或者去了解更多的人。觉得朋友列表不够长,本平台可以为你推荐不同的圈子,娱乐圈、游戏圈、科技圈、艺术圈,找到和自己有共同兴趣的人。想成为校园达人,每周更新“引流”排行榜,轻松了解谁是BIT最靓的仔。
本平台在扩充交友方式之余,还有利于大学生摆脱“寝室宅”的生活,拒绝不出门,过上更加积极健康的、青春活力的大学生活。
1.2.软件实现功能
实现了实时在线聊天、用户注册、聊天文件本地保存、用户组分类、好友推送算法等功能,旨在提供更好的用户体验。具体功能如下:
- 注册与登录:使用学号进行注册。
- 个人信息查看与修改:可以修改昵称、账号密码等。
- 通用设置:音乐、音效、通知推送、好友推荐等的开启与否。
- 热度排行:依据发言次数、流量贡献率、社区活跃度评选校园热点达人,成为达人可以被优先推荐。
- 聊天室:可以创建房间,并通过网络与他人实时聊天并统计在线人数。
- 聊天记录的保存:可以将聊天记录保存到本地。
- 好友推荐:通过计算好友喜好程度相关值,来获得最接近用户喜好的用户数据,从而进行推送。
1.3.软件运行环境
支持Android 4.0以上Android版本,仅限Android系统。
2.外部接口需求
2.1.用户界面设计
(1)APP ICON
YouQi APP icon 设计理念
蓝色是我们的主题色,使界面看起来较为清爽,也使用户感到放松和沉静。鲸鱼图案的设计与蓝色的主色调相结合,偏卡通简笔的风格使得图标看起来轻松可爱,且鲸鱼又体现了友好善意的交友理念。
鲸鱼的灵感来源于孤独鲸,具有52赫兹频率的鲸鱼终其一生都在寻找自己的同类,但往往无果而终。而这款交友app目的在于帮助朋友们找到自己的同伴,共同交流沟通,让生活积极向上。
(2)软件安装概念图
IOS设备示意图
安卓设备安装示意图
(3)软件操作界面
因为篇幅限制,这里仅仅展示局部的界面。
软件登陆界面,实现了账号的登陆以及注册功能。
含有登录、注册按钮。用户名和密码为空时会提示错误。
程序主界面,可以选择聊天房间加入或者创建
下方四个按钮分别是选择聊天室(当前页面)、好友推荐、排行榜与个人信息。
“加入或创建房间”按钮可以加入当前房间列表中的房间或新建一个房间。
聊天室主界面,该界面可以查看该房间的实时人数以及历史消息记录。
发送按钮可以发送聊天内容。
Back按钮可以返回上一级界面。
2.2.硬件接口
该APP支持一般的安卓模拟器与安卓系统的手机终端。
2.3.软件接口
实现了管理员和用户操作的对接,聊天室提供了信息储存的接口。
2.4.通信接口
利用了开源服务器实现,通过TCP协议传输。
3.软件代码
同样因为篇幅限制,这里仅仅展示部分的代码以及代码文件截图。
3.1. 软件前端代码
前端代码文件截图
其中 Launcher.cs 文件的代码展示:
// An highlighted block
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Realtime;
using Photon.Pun;
using UnityEngine.UI;
public class Launcher : MonoBehaviourPunCallbacks
{public GameObject canvas;//加入键画布public GameObject canvas2;//进入界面画布public GameObject a;//聊天文本框public GameObject b;//任务管理器,负责统计房间人数public Text c;//聊天文本public int current;//当前人数暂存public bool action = false;//是否更新当前人数public Button exit;//退出聊天室,返回到开始界面void Start(){canvas2.SetActive(true);//打开进入界面画布exit.onClick.AddListener(leavecurrent);//为退出按键增加监听}//当进入房间时调用public override void OnJoinedRoom(){base.OnJoinedRoom();}//当退出房间时调用public override void OnLeftRoom(){base.OnLeftRoom();}//加入函数,生成用户,进入聊天室public void join(){addto();//将聊天室人数增加1//放置玩家if (b.GetComponent<Count>().countofperson == 1) Place1();else if (b.GetComponent<Count>().countofperson == 2) Place2();else if (b.GetComponent<Count>().countofperson == 3) Place3();else Place4();}//增加聊天室人数函数[PunRPC]public void add(){b.GetComponent<Count>().countofperson++;current = b.GetComponent<Count>().countofperson;action = true;}public void addto(){PhotonView photonView = PhotonView.Get(this);photonView.RPC("add", RpcTarget.All);}//减少聊天室人数函数[PunRPC]public void cut(){b.GetComponent<Count>().countofperson--;current = b.GetComponent<Count>().countofperson;}public void cutto(){PhotonView photonView = PhotonView.Get(this);photonView.RPC("cut", RpcTarget.All);}//关闭界面画布public void Clean(){canvas.SetActive(false);}//在指定位置生成用户public void Place1(){init();GameObject temp= PhotonNetwork.Instantiate("Player", new Vector3(-7, 4, 0), Quaternion.identity, 0);temp.GetComponent<MyPlayer>().mytext.text = PhotonNetwork.NickName;}public void Place2(){init();GameObject temp = PhotonNetwork.Instantiate("Player", new Vector3(7, 4, 0), Quaternion.identity, 0);temp.GetComponent<MyPlayer>().mytext.text = PhotonNetwork.NickName;}public void Place3(){init();GameObject temp = PhotonNetwork.Instantiate("Player", new Vector3(-7, 0, 0), Quaternion.identity, 0);temp.GetComponent<MyPlayer>().mytext.text = PhotonNetwork.NickName;}public void Place4(){init();GameObject temp = PhotonNetwork.Instantiate("Player", new Vector3(7, 0, 0), Quaternion.identity, 0);temp.GetComponent<MyPlayer>().mytext.text = PhotonNetwork.NickName;}//初始化函数public void init(){// Clean();canvas2.SetActive(false);GameManager t = b.GetComponent<GameManager>();t.target = c;Player1 op = a.GetComponent<Player1>();op.target = t;Instantiate(a, new Vector3(0,(float)-2.7, 0), Quaternion.identity);}//实时更新用户数量[PunRPC]public void refresh(int tempint){b.GetComponent<Count>().countofperson =tempint;}public void reset(int tempint){PhotonView photonView = PhotonView.Get(this);photonView.RPC("refresh", RpcTarget.All,tempint);}//离开函数public void leavecurrent(){PhotonNetwork.LeaveRoom();cutto();reset(current);PhotonNetwork.LoadLevel("Start");}//每帧进行一次用户数更新void Update(){if(action)reset(current);}
};
3.2.软件后端代码
3.2.1.用户组以及好友推荐算法的实现
关于平台管理员这个用户类的功能的定义以及实现
public class Manager_Class extends User_Class{Manager_Class(String name, String key, int Id, int MoblieType) {super(name, key, Id, MoblieType);}//删除用户的信息private void DeleteUserData(String Username) {try{Free(Username);}catch (Exception Username) {System.out.println("删除用户失败");}System.out.println("删除用户成功");}/** 发起活动* 根据当前服务器时间来随机生产活动序号*/private void AddActivity() {try{int ActivityId;ActivityId = random(++seeduniquifier + system.nanotime());CreateActivity(ActivityId);}catch (Exception TimeWrong) {System.out.println("无法获取服务器信息,创建失败");}System.out.println("创建活动成功");}/** 删除活动* 根据当前活动序号来删除*/private void DeleteActivity(int ActivityId) {try{Delecte(ActivityId);}catch (Exception ActivityNotFound) {System.out.println("该活动不存在");}System.out.println("删除活动成功");}//暂时冻结账号private void FreezeUser(int UserId,int day) {try {Freeze(UserId,day);}catch(Exception UserID) {System.out.println("用户不存在");}System.out.println("成功冻结用户"+UserId+" "+day+"天");}//解封账号private void UnsealedUser(int UserId) {try {Unseal(UserId);}catch (Exception UserId) {System.out.println("找不到该用户或该用户未被冻结");}System.out.println("解冻成功");}
关于好友推荐算法的部分代码展示
import java.util.List;
public class FIND {public class Score {//A和B的所有好友数private int Union;//A和B的共同好友数private int Intersection;//A和B的共同好友列表private List<Character> l;//此对象是A和B之间的关系private char A;private char B;//没加权重的得分private float score;//对每个共同好友加权重的得分private double wscore;public double getWscore() {return wscore;}public void setWscore(double wscore) {this.wscore = wscore;}public float getScore() {return score;}public char getA() {return A;}public void setA(char a) {A = a;}public char getB() {return B;}public void setB(char b) {B = b;}public int getUnion() {return Union;}public void setUnion(int union) {Union = union;if(Union!=0){score=(float) Intersection/Union;}}public int getIntersection() {return Intersection;}public void setIntersection(int intersection) {Intersection = intersection;if(Union!=0){score=(float) Intersection/Union;}}public List getL() {return l;}public void setL(List l) {this.l = l;}public String toString() {return "Score{" +"Union=" + Union +", Intersection=" + Intersection +", l=" + l +", A=" + A +", B=" + B +", score=" + score +", wscore="+wscore+'}';}}
3.2.2. 聊天文件储存的实现
其中 record_f.cpp 的代码展示
#include "record.h"
#include <iostream>
using namespace std;Record::Record(string &user, string &cont)
{time_t now = time(0); struct tm *pt = localtime(&now);char t[80]; strftime(t, 80, "%Y-%m-%d %H:%M:%S", pt);all.append(t); all.push_back(' '); all.append("From ");all.append(user); all.append(", "); all.append("Content : ");all.append(cont);
}Record::~Record(){}RList::RList(string &name){ file.open(name.c_str(), ios_base::in | ios_base::app); }RList::~RList() { file.close(); }bool RList::display(vector<string> &content)
{char str[100];while (file.getline(str, 100, '\n')){string line(str);content.push_back(line);}return true;
}bool RList::append(Record &newr)
{file << newr.all << endl;return true;
}
4.对最初设计的一些更改
最初 | 最终 |
---|---|
注册时实现对学号和姓名的双重认证 | 仅实现了对学号合法性的判断 |
朋友圈功能的实现 | 仅完成了对签名的变更 |
较为复杂的排行榜算法 | 仅完成了基础的排行榜算法 |
5.最后鸣谢
该软件属于北京理工大学2018级软件工程专业UML课程第11小组
制作人名单(排名不分先后)
- 李灌桦
- 季旭
- 邢宏波
- 应淞斐
- 姚智棣
大学生交友平台 APP——YouQu相关推荐
- 大学生交友平台——项目启动篇
目录 一. 项目前景及范围 1.1 项目背景 1.2 项目前景 1.3 用户范围 1.4 功能概述 二.问卷结果及硬数据分析 2.1. 问卷制作 2.2. 数据整理.图表分析 2.3. 基于问卷的需求 ...
- 大学生交友平台——结构化需求分析与建模
目录 一. 结构化需求分析概述 1.1 功能分解图 1.2 需求细化与优先级划分 1.2.1 需求细化 1.2.2 优先级划分 二. 过程建模 2.1 DFD图 2.1.1 DFD - 上下文图 2. ...
- java毕业设计大学生学习交友平台Mybatis+系统+数据库+调试部署
java毕业设计大学生学习交友平台Mybatis+系统+数据库+调试部署 java毕业设计大学生学习交友平台Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...
- [附源码]Java计算机毕业设计SSM大学生学习交友平台
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
- (附源码)计算机毕业设计ssm大学生学习交友平台
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
- 计算机毕业设计SSM大学生学习交友平台【附源码数据库】
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
- 安卓AndroidStudio大学生交友聊天社交app设计
开发软件:Eclipse/Idea + AndroidStudio/Eclipse + Mysql 这是一个基于安卓的大学生交友社交论坛app,一共3个身份,包括老师.学生和管理员,其中老师和学生在手 ...
- 计算机毕业设计Java大学生兼职平台(源码+系统+mysql数据库+lw文档
计算机毕业设计Java大学生兼职平台(源码+系统+mysql数据库+lw文档 计算机毕业设计Java大学生兼职平台(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发 ...
- java计算机毕业设计员工婚恋交友平台源码+数据库+系统+lw文档+部署
java计算机毕业设计员工婚恋交友平台源码+数据库+系统+lw文档+部署 java计算机毕业设计员工婚恋交友平台源码+数据库+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...
最新文章
- 深度学习调用TensorFlow、PyTorch等框架
- MIT警告深度学习正在逼近计算极限,网友:放缓不失为一件好事
- ICRA 2020 | 实时语义立体匹配
- VMware Workstation 9下基于Ubuntu 12.10服务器版本的Hadoop集群的配置
- python2018上海脱产_python接口自动化27-urlencode编码%E6%82%A0%E6%82%A0与解码
- 上传图片---SpringMVC学习笔记(十一)
- 【Django】Django web项目部署(Nginx+uwsgi)
- C# WPF图表控件之ChartControl用法指南①
- java break和return的区别_【java】break,continue和return区别
- 推荐几个Vue开发必备插件,要收藏
- jvm原理、启动时间、与编译器操作系统关系
- python ljust函数,Python 字符串左对齐-Python 指定字符串左对齐-python ljust() 函数-python ljust() 函数用法-嗨客网...
- java怎么跳出下列,在JAVA中,如何跳出当前的多重嵌套循环?
- 2017美赛C题论文学习笔记
- 酷狗显示服务器失败怎么回事,酷狗音乐上传音乐失败怎么回事
- 右下角任务栏弹出天猫广告的解决办法,搞了半天原来是搜狗拼音在捣鬼!附搜狗双拼党转投微软拼音怀抱教程
- 【学习记录】SLAM线特征基础:LSD算法、LBD描述子、普朗克坐标、EDLines算法
- 详解OpenStack常见模块
- JavaScript数组forEach方法
- 域名whois查询违规吗_WHOIS域ID隐私保护如何工作? 我需要域名WHOIS隐私吗?