局域网交友平台设计与实现

一、项目概述
启动时间:24年12月7日
项目背景:本公司青年上班太忙没有时间交新朋友
项目目标:保护隐私的同时,给予员工一个释放交友信号的平台。
计划上线:2025年2月14日。24年12月开发,25年1月测试,25年2月部署。


二、功能需求
用户端功能
1 交友卡片

1.1卡片展示			
	每次只刷新3张信息卡片,防止信息泄露
1.2随机刷新
	a、刷新按钮、每次随机刷新3张信息卡片。(缘分不够,小概率会刷新到影视作品)
1.3反馈
	a、反馈二维码,扫码进入问卷星填写

2 申请列表

2.1提交申请
	a、点击提交申请按钮,可以输入信息
			申请ID(自动生成)
			是否实名(勾选)
			公司邮箱(若不实名,则不会显示)**必填**
			姓名/昵称(若不实名,则显示为昵称)
			性别(可保密)
			部门(可保密)
			毕业学校(可保密)
			故乡(可保密)
			出生年(保密+1990-至今,90年以前的不算青年)
			星座(保密+十二星座)
			MBTI(保密+16种。不清楚扫二维码跳转16person测)
			爱好(文本,最多100字)
			自我介绍(文本,最多500字)
			照片(可以选择上传照片,也可以选择上传一张你喜欢的图片jpg/png,自动压缩到1M)
			联系方式(文本,可自行选择填或不填,以及填什么)
			IP(自动获取)
			提交时间(自动获取)
		输入信息后,会有弹窗,需要使用公司邮箱发送邮件给管理员验证身份。
		~~提示用户申请成功后,为保护隐私,信息有效时间为90天,若超时,则需要联系管理员添加时间。~~ 
		确认后弹窗会消失。
2.2申请进度列表
	a、可以查看所有正在申请的列表。但是看到的信息只有【申请ID、IP、提交时间、审核进度、备注】
	b、		申请ID为整数。
			IP为自动获取的IP。
			提交时间为YYYY年MM月DD日 HH时MM分SS秒的格式。
			审核进度:待审核、审核通过、审核不通过。
			备注:审核不通过时会在备注写清楚。

3 管理登录

3.1登录
	a、填写账号密码,账号密码验证正确则进入管理员页面,否则提示错误。

管理员端功能
4 审核申请

4.1申请列表
	a、能够查看所有申请列表的详情,待审核的在前面。
4.2审核申请
	a、审核通过将,会变成交友消息,可以被填写。
	b、审核不通过,将会写清楚不通过的原因,保存在备注中。

5 信息管理

5.1信息列表
	a、展示现在所有的信息表格。可以点击预览信息展示它的卡片态。
	b、每条信息可以修改内容(包括该条信息的**有效显示时间**)
5.2条件选择
	a、实现信息筛选功能,更具条件筛选信息
5.3查询
	a、实现信息搜索功能,输入关键字,查找相关信息

6 信息统计

6.1交友数据
	a、能够将交友数据一键导出为execl表格
	b、性别、部门、学校、MBTI、星座、故乡的统计图
6.2网站数据
	a、能够显示网站的登录数据。包括登录IP,登录时间,是否管理员登录。

三、性能需求
响应时间:用户操作的响应时间应在 3 秒内,确保用户体验流畅。

吞吐量:系统应能够支持至少 20个并发用户同时进行浏览、搜索图书等操作,在高峰时期(情人节、520、七夕、圣诞节),系统吞吐量应能满足业务需求,不出现明显卡顿或崩溃现象。

可用性:系统应保证 99% 以上的时间可用,除计划内维护时间外,尽量减少因系统故障导致的服务中断,维护时间应提前通知用户。


四、安全需求
管理员数据安全:管理员密码采用加密存储,保障账号安全。

系统权限管理:对管理员和用户设置不同的权限级别,管理员具有系统管理的最高权限。


五、界面需求
用户界面设计:采用简洁、美观、易用的界面设计风格,色彩搭配协调,布局合理。
管理员界面设计:管理员界面注重功能操作的便捷性和数据展示的清晰性。


开发计划:
前端
12月9日:完成交友信息反转卡片

省略
<el-button type="primary" @click="friendCardRefresh">
    <el-icon><Refresh /></el-icon>刷新
</el-button>
省略
<div id="friendCardRef1" class="grid-content friendCard" @click="friendCardFlip(1)">
<div class="friendCardFront">正面</div>
<div class="friendCardBack">反面</div>
</div>
省略

<script setup>
// 翻转交友信息卡片动画
function friendCardFlip(num){
    let friendCardRef=document.getElementById('friendCardRef'+num);
    friendCardRef.classList.add('flipped')
}
// 刷新交友卡片
function friendCardRefresh(){
    for(let num=1;num<=3;num++){
        let friendCardRef=document.getElementById('friendCardRef'+num);
        friendCardRef.classList.remove('flipped')
    }
}
</script>

<style lang="css">
    .friendCard{
        perspective: 1000px;
        height: 100%;
        width: 200px;

        position: relative;/* 定位,并成为子div可以使用absolute的定位*/
        transition: transform 0.6s;
        transform-style: preserve-3d;
    }
    .friendCardFront,.friendCardBack{
        position: absolute;
        height: 100%;
        width: 100%;
        backface-visibility: hidden;
        align-items: center;
        justify-content: center;

        background-color: aliceblue;
        border-radius: 4px;
        padding: 20px;
        box-sizing: border-box;
    }
    .friendCardFront{
        background-color: #ff95e8;
    }
    .friendCardBack{
        background-color: #c2ffac;
        transform: rotateY(180deg);
    }
    /* 反转动画 */
    .friendCard.flipped{
        transform: rotateY(180deg);
    }
</style>

12月11日完成交友列表

后端
创建链接前要设计数据库为utf8
快速上手
django-admin startproject lingfriend
python manage.py startapp app1
app1的views文件写

def index(req):
    return HttpResponse("欢迎使用")

lingfriend的urls写

from app1 import views
urlpatterns = [
    path("admin/", admin.site.urls),
    path("index/", views.index),
]

setting添加app1 修改数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 使用 MySQL 引擎
        'NAME': 'your_database_name',          # 数据库名
        'USER': 'your_database_user',          # 数据库用户
        'PASSWORD': 'your_database_password',  # 数据库密码
        'HOST': 'localhost',                   # 数据库主机(通常是 localhost 或 127.0.0.1)
        'PORT': '3306',                        # 数据库端口(MySQL 默认是 3306)
    }
}

python manage.py runserver
查看是否能正常运行。
django4.2使用mysql5.7方法

django直接根据数据库生成model
生成的models.py编码是utf-16需要修另存为utf-8的,否则会提示:
source code string cannot contain null bytes
在此处另存为UTF-8

测试数据库链接是否正常的方法
python manage.py makemigrations 将模型类同步到数据库中
python manage.py migrate 同步到数据库中
python manage.py shell 进入shell
from app1.models import *
Login.objects.all()

django链接数据库已经存在的表的方法
django数据库操作

Model查询到的对象转JSON的方法

pip install djangorestframework安装 Django REST Framework:

# settings.py在你的 Django 项目中添加 'rest_framework' 到 INSTALLED_APPS:
INSTALLED_APPS = [
    # ...
    'rest_framework',
]

# serializers.py创建一个序列化器(Serializer):
from rest_framework import serializers
from .models import MyModel
class MyModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = '__all__'  # 或者列出你想要序列化的字段

# urls.py
from django.urls import path
from .views import MyModelListView

urlpatterns = [
    path('mymodels/', MyModelListView.as_view(), name='mymodel-list'),
]
功能表12月16日完成:
1.1卡片展示:查询FriendCard
1.2随机刷新:查询FriendCard,随机选择,返回随机的信息
1.3反馈:设计问卷星
2.1提交申请:增加Application
2.2申请进度列表:查询Application
3.1登录:查询Account
4.1申请列表:查询Application
4.2审核申请:修改Application
5.1信息列表:查询FriendCard
5.2条件选择:条件查询FriendCard
5.3查询:条件查询FriendCard
6.1交友数据:查询FriendCard;分组统计查询FriendCard
6.2网站数据:查询Login

功能实现:

数据库
创建数据库前要设计数据库为utf8
数据库使用MySQL,表单:
数据库:LingFriend
1、登录记录 Login

——系统登录次数 			count
——登录IP  				IP
——登录时间				login_time
——执行操作				operation

2、申请记录 Application

——申请ID					app_id
——是否实名					isrealname
——公司邮箱					email
——姓名/昵称					name
——性别						gender
——毕业学校					school
——部门						department
——故乡						hometown
——出生年						brith
——星座						constellation
——MBTI						MBTI
——爱好						hobby
——自我介绍					introduction
——照片						photo
——联系方式					contact
——申请人IP					IP
——申请时间					submit_time
——申请进度					progress
——备注						notes

3、信息记录 FriendCard

——交友ID					friend_id
——是否实名					isrealname
——公司邮箱					email
——姓名/昵称					name
——性别						gender
——毕业学校					school
——部门						department
——故乡						hometown
——出生年						brith
——星座						constellation
——MBTI						MBTI
——爱好						hobby
——自我介绍					introduction
——照片						photo
——联系方式					contact
——VIP功能					vip
——访问量					show				//12月16日新增
——逻辑删除					isdel				//12月15日新增

4、账号 Account

——账号		id
——密码		pwd
——权限		permission

12月13日完成数据库设计
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值