如何使用ssm实现大学生兼职跟踪系统

207 篇文章 0 订阅
153 篇文章 0 订阅

@TOC

10909ssm大学生兼职跟踪系统

系统概述

进过系统的分析后,就开始记性系统的设计,系统设计包含总体设计和详细设计。总体设计只是一个大体的设计,经过了总体设计,我们能够划分出系统的一些东西,例如文件、文档、数据等。而且我们通过总体设计,大致可以划分出了程序的模块,以及功能。但是只是一个初步的分类,并没有真正的实现。

整体设计,只是一个初步设计,而且,对于一个项目,我们可以进行多个整体设计,通过对比,包括性能的对比、成本的对比、效益的对比,来最终确定一个最优的设计方案,选择优秀的整体设计可以降低开发成本,增加公司效益,从这一点来讲,整体设计还是非常重要的。

大学生兼职跟踪系统工作原理图如图4-1所示:

图4-1 系统工作原理图

4.2 系统结构设计

系统架构图属于系统设计阶段,系统架构图只是这个阶段一个产物,系统的总体架构决定了整个系统的模式,是系统的基础。大学生兼职跟踪系统的整体结构设计如图4-2所示。

图4-2 系统结构图

4.3数据库设计

数据库是计算机信息系统的基础。目前,电脑系统的关键与核心部分就是数据库。数据库开发的优劣对整个系统的质量和速度有着直接影响。

4.3.1 数据库设计原则

数据库的概念结构设计采用实体—联系(E-R)模型设计方法。E-R模型法的组成元素有:实体、属性、联系,E-R模型用E-R图表示,是提示学生工作环境中所涉及的事物,属性则是对实体特性的描述。在系统设计当中数据库起着决定性的因素。下面设计出这几个关键实体的实体—关系图。

4.3.2 数据库实体

数据模型中的实体(Entity),也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”。例如,公司中的每个员工,家里中的每个家具。

本系统的E-R图如下图所示:

1、兼职招聘信息实体图如图4-3所示:

图4-3兼职招聘信息实体图

2、商家信息实体图如图4-4所示:

图4-4商家信息实体图

3、学生信息实体图如图4-5所示:

图4-5学生信息实体图 ######### 4、管理员信息管理实体图如图4-6所示:

图4-6管理员信息管理实体图

4.3.3 数据库表设计

数据库的表信息属于设计的一部分,下面介绍数据库中的各个表的详细信息。

表名:token

功能:token表

字段名称类型长度字段说明主键默认值
idbigint`

`主键 || |userid|bigint||用户id||| |username|varchar|100|用户名||| |tablename|varchar|100|表名||| |role|varchar|100|角色||| |token|varchar|200|密码||| |addtime|timestamp||新增时间||CURRENT_TIMESTAMP| |expiratedtime|timestamp||过期时间||CURRENT_TIMESTAMP|

表名:shangjia

功能:商家

字段名称类型长度字段说明主键默认值
idbigint编号`

`主键 || |addtime|timestamp||添加时间||CURRENT_TIMESTAMP| |shangjiazhanghao|varchar|200|商家账号||| |mima|varchar|200|密码||| |shangjiamingcheng|varchar|200|商家名称||| |jingyingfanwei |int||经营范围||| |shangjiaguimo|varchar|200|商家规模||| |farendaibiao|varchar|200|法人代表||| |lianxifangshi|varchar|200|联系方式||| |shangjiadizhi|varchar|200|收件地址||| |yingyezhizhao|varchar|200|营业执照|||

表名: xuesheng

功能:学生

字段名称类型长度字段说明主键默认值
idbigint`

`主键 || |addtime|timestamp||添加时间||CURRENT_TIMESTAMP| |xuehao|varchar|200|学号||| |mima|varchar|200|密码||| |xingming|varchar|200|姓名||| |xingbie|varchar|200|性别||| |nianling|varchar|200|年龄||| |xueyuan|varchar|200|学院||| |zhuanye|varchar|200|专业||| |dianhua|varchar|200|电话||| |youxiang|varchar|200|邮箱||| |shenfenzheng|varchar|200|身份证||| |zhaopian|varchar|200|照片|||

表名:shangjiatousu

功能:商家投诉

字段名称类型长度字段说明主键默认值
idbigint`

`主键 || |addtime|timestamp||添加时间||CURRENT_TIMESTAMP| |xuehao|varchar|200|学号||| |xingming|int||姓名||| |dianhua|date||电话||| |shangjiazhanghao|varchar|200|商家账号||| |shangjiamingcheng|varchar|200|商家名称||| |tousuleixing|varchar|200|投诉类型||| |tousushijian|varchar|200|投诉时间||| |tousushuoming|varchar|200|投诉说明||| |sfsh|varchar|200|是否审核||| |shhf|varchar|200|审核回复|||

表名:tousuchuli

功能:投诉处理

字段名称类型长度字段说明主键默认值
idbigint`

主键 || |addtime|timestamp||添加时间||CURRENT\_TIMESTAMP| |shangjiazhanghao|varchar|200|商家账号||| | `shangjiamingcheng |int||商家名称||| |tousuleixing|varchar|200|投诉类型||| |chufajieguo|date||处罚结果||| |fakuanjine|varchar|200|罚款金额||| |chulishijian|varchar|200|处理时间||| |xiangqingshuoming|varchar|200|详情说明||| #########

#########

5系统界面实现

5.1 登录

管理员输入个人的账号、密码和角色登录系统,这时候系统的数据库就会在进行查找相关的信息,如果我们输入的账号、密码和角色不正确,数据库就会提示出错误的信息提示,同时会提示管理员重新输入输入自己的账号、密码,直到账号密码输入成功后,会提登录成功的信息。网站管理员登录效果图如图5-1所示:


图5-1管理员登录界面

5.2 管理员功能模块

5.2.1 个人中心

管理员对个人中心进行编辑填写原密码、新密码、确认密码并进行添加、删除、修改以及查看、修改密码等操作。程序成效图如下图5-2所示:

图5-2个人中心界面图

5.2.2 商家管理

管理员对商家管理进行编辑商家账号、密码、商家名称、经营范围、商家规模、法人代表、联系方式、商家地址、营业执照等操作并可以进行删除、修改以及查看等操作。程序效果图如下图5-3所示:

图5-3商家管理界面

5.2.3 学生管理

管理员对学生管理进行编辑学号、密码、姓名、性别、年龄、学院、专业、电话、邮箱、身份证、照片等操作并可以进行删除、修改以及查看等操作。程序效果图如下图5-4所示:

图5-4学生管理界面

5.2.4 兼职招聘管理

管理员对兼职招聘管理进行编辑商家账号、商家名称、招聘标题、兼职岗位、招聘人数、岗位薪酬、工作天数、工作时长等等修改以及删除等操作。程序效果图如下图5-5所示:

图5-5兼职招聘管理界面

5.2.5兼职应聘管理

管理员对兼职应聘管理进行填写商家账号、商家名称、兼职岗位、岗位薪酬、工作天数、工作时长、学号、姓名、性别、年龄、专业、电话等等进行删除、修改以及查看等操作。程序效果图如下图5-6所示:

图5-6兼职应聘管理界面

5.2.6论坛管理

管理员对论坛管理进行编辑帖子标题、用户名、状态等等操作并可以进行删除、修改以及查看等操作。程序效果图如下图5-7所示:

图5-7论坛管理界面

5.2.7 轮播图管理

管理员可以在此页面进行首页轮播图的管理,通过新建操作可在轮播图中加入新的图片,还可以对以上传的图片进行修改,以及图片的删除,程序效果图如下图5-8所示:

图5-8轮播图管理界面

5.3 学生前后台功能模块

前台首页详情页面进:首页、兼职招聘、兼职论坛、系统公告、我的、跳转到后台等操作。程序效果图如下图5-9所示:

图5-9前台首页管理功能界面

5.3.1 兼职招聘

学生进入系统可以进行兼职招聘,通过填写商家账号、商家名称、兼职岗位、招聘人数、岗位薪酬、工作天数、工作时长、商家规模、联系方式、商家地址、发布日期进行登陆操作。程序效果图如下图5-10所示:

图5-10兼职招聘界面

5.3.2兼职论坛

学生进入兼职论坛可以标题、类型、内容等等信息,并可以进行查看等操作。程序效果图如下图5-11所示:

图5-11兼职论坛界面

5.3.3我的发布

学生进入我的发布可以对标题、发布时间进行查看等操作。程序效果图如下图5-12所示:

图5-12我的发布界面

5.3.4兼职应聘管理

学生进入兼职应聘管理可以对进行查看商家账号、商家名称、兼职岗位、岗位薪酬、工作天数、工作时长、学号、姓名、性别、年龄、专业、电话等操作。程序效果图如下图5-13所示:

图5-13兼职应聘管理界面

5.3.5商家投诉管理

学生进入商家投诉管理可以对学号、姓名、电话、商家账号、商家名称、投诉类型、投诉时间、投诉说明、审核回复查看、修改,并可以进行删除等操作。程序效果图如下图5-14所示:

图5-14商家投诉管理界面

5.4 商家功能模块

5.4.1兼职招聘管理

商家进入兼职招聘管理可以对商家账号、商家名称、招聘标题、兼职岗位、招聘人数、岗位薪酬、工作天数、工作时长、商家规模、联系方式、商家地址、发布日期查看、修改,并可以进行删除等操作。程序效果图如下图5-15所示:

图5-15兼职招聘管理界面

5.4.2兼职应聘管理

商家进入兼职应聘管理可以对商家账号、商家名称、兼职岗位、岗位薪酬、工作天数、工作时长、学号、姓名、性别、年龄、专业、电话、应聘时间、审核回复,查看、删除、详情等操作。程序效果图如下图5-16所示:

图5-16兼职应聘管理界面

5.4.3投诉处理管理

商家进入投诉处理管理可以对商家账号、商家名称、投诉类型、处理结果、罚款金额、处理时间、详情说明,查看、详情等操作。程序效果图如下图5-17所示:

图5-17投诉处理管理界面

NewsServiceImpl.java
package com.service.impl;

import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.List;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.utils.PageUtils;
import com.utils.Query;


import com.dao.NewsDao;
import com.entity.NewsEntity;
import com.service.NewsService;
import com.entity.vo.NewsVO;
import com.entity.view.NewsView;

@Service("newsService")
public class NewsServiceImpl extends ServiceImpl<NewsDao, NewsEntity> implements NewsService {
	

    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        Page<NewsEntity> page = this.selectPage(
                new Query<NewsEntity>(params).getPage(),
                new EntityWrapper<NewsEntity>()
        );
        return new PageUtils(page);
    }
    
    @Override
	public PageUtils queryPage(Map<String, Object> params, Wrapper<NewsEntity> wrapper) {
		  Page<NewsView> page =new Query<NewsView>(params).getPage();
	        page.setRecords(baseMapper.selectListView(page,wrapper));
	    	PageUtils pageUtil = new PageUtils(page);
	    	return pageUtil;
 	}
    
    @Override
	public List<NewsVO> selectListVO(Wrapper<NewsEntity> wrapper) {
 		return baseMapper.selectListVO(wrapper);
	}
	
	@Override
	public NewsVO selectVO(Wrapper<NewsEntity> wrapper) {
 		return baseMapper.selectVO(wrapper);
	}
	
	@Override
	public List<NewsView> selectListView(Wrapper<NewsEntity> wrapper) {
		return baseMapper.selectListView(wrapper);
	}

	@Override
	public NewsView selectView(Wrapper<NewsEntity> wrapper) {
		return baseMapper.selectView(wrapper);
	}

}

TokenServiceImpl.java

package com.service.impl;


import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.dao.TokenDao;
import com.entity.TokenEntity;
import com.entity.TokenEntity;
import com.service.TokenService;
import com.utils.CommonUtil;
import com.utils.PageUtils;
import com.utils.Query;


/**
 * token
 * @author yangliyuan
 * @date 2019年10月10日 上午9:17:59
 */
@Service("tokenService")
public class TokenServiceImpl extends ServiceImpl<TokenDao, TokenEntity> implements TokenService {

	@Override
	public PageUtils queryPage(Map<String, Object> params) {
		Page<TokenEntity> page = this.selectPage(
                new Query<TokenEntity>(params).getPage(),
                new EntityWrapper<TokenEntity>()
        );
        return new PageUtils(page);
	}

	@Override
	public List<TokenEntity> selectListView(Wrapper<TokenEntity> wrapper) {
		return baseMapper.selectListView(wrapper);
	}

	@Override
	public PageUtils queryPage(Map<String, Object> params,
			Wrapper<TokenEntity> wrapper) {
		 Page<TokenEntity> page =new Query<TokenEntity>(params).getPage();
	        page.setRecords(baseMapper.selectListView(page,wrapper));
	    	PageUtils pageUtil = new PageUtils(page);
	    	return pageUtil;
	}

	@Override
	public String generateToken(Long userid,String username, String tableName, String role) {
		TokenEntity tokenEntity = this.selectOne(new EntityWrapper<TokenEntity>().eq("userid", userid).eq("role", role));
		String token = CommonUtil.getRandomString(32);
		Calendar cal = Calendar.getInstance();   
    	cal.setTime(new Date());   
    	cal.add(Calendar.HOUR_OF_DAY, 1);
		if(tokenEntity!=null) {
			tokenEntity.setToken(token);
			tokenEntity.setExpiratedtime(cal.getTime());
			this.updateById(tokenEntity);
		} else {
			this.insert(new TokenEntity(userid,username, tableName, role, token, cal.getTime()));
		}
		return token;
	}

	@Override
	public TokenEntity getTokenEntity(String token) {
		TokenEntity tokenEntity = this.selectOne(new EntityWrapper<TokenEntity>().eq("token", token));
		if(tokenEntity == null || tokenEntity.getExpiratedtime().getTime()<new Date().getTime()) {
			return null;
		}
		return tokenEntity;
	}
}

TousuchuliServiceImpl.java
package com.service.impl;

import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.List;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.utils.PageUtils;
import com.utils.Query;


import com.dao.TousuchuliDao;
import com.entity.TousuchuliEntity;
import com.service.TousuchuliService;
import com.entity.vo.TousuchuliVO;
import com.entity.view.TousuchuliView;

@Service("tousuchuliService")
public class TousuchuliServiceImpl extends ServiceImpl<TousuchuliDao, TousuchuliEntity> implements TousuchuliService {
	

    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        Page<TousuchuliEntity> page = this.selectPage(
                new Query<TousuchuliEntity>(params).getPage(),
                new EntityWrapper<TousuchuliEntity>()
        );
        return new PageUtils(page);
    }
    
    @Override
	public PageUtils queryPage(Map<String, Object> params, Wrapper<TousuchuliEntity> wrapper) {
		  Page<TousuchuliView> page =new Query<TousuchuliView>(params).getPage();
	        page.setRecords(baseMapper.selectListView(page,wrapper));
	    	PageUtils pageUtil = new PageUtils(page);
	    	return pageUtil;
 	}
    
    @Override
	public List<TousuchuliVO> selectListVO(Wrapper<TousuchuliEntity> wrapper) {
 		return baseMapper.selectListVO(wrapper);
	}
	
	@Override
	public TousuchuliVO selectVO(Wrapper<TousuchuliEntity> wrapper) {
 		return baseMapper.selectVO(wrapper);
	}
	
	@Override
	public List<TousuchuliView> selectListView(Wrapper<TousuchuliEntity> wrapper) {
		return baseMapper.selectListView(wrapper);
	}

	@Override
	public TousuchuliView selectView(Wrapper<TousuchuliEntity> wrapper) {
		return baseMapper.selectView(wrapper);
	}

}

HomeProgress.vue
<template>
  <div class="home-progress">
    <div class="title">月访问量</div>
    <div class="tip">同上期增长</div>
    <el-progress
      class="progress"
      :text-inside="true"
      :stroke-width="24"
      :percentage="20"
      status="success"
    ></el-progress>
    <div class="title">月用户量</div>
    <div class="tip">同上期增长</div>
    <el-progress
      class="progress"
      :text-inside="true"
      :stroke-width="24"
      :percentage="50"
      status="success"
    ></el-progress>
    <div class="title">月收入</div>
    <div class="tip">同上期减少</div>
    <el-progress
      class="progress"
      :text-inside="true"
      :stroke-width="24"
      :percentage="28"
      status="exception"
    ></el-progress>
  </div>
</template>
<script>
export default {};
</script>
<style lang="scss">
.home-progress {
  background: #ffffff;
  height: 400px;
  padding: 20px;
  .title {
    color: #666666;
    font-weight: bold;
    font-size: 20px;
    margin-top: 10px;
  }
  .tip {
    color: #888888;
    font-size: 16px;
    margin-top: 10px;
  }
  .progress {
    margin-top: 10px;
  }
}
</style>

声明

本博客适用于广泛的学术和教育用途,包括但不限于个人学习、开发设计,产品设计。仅供学习参考,旨在为读者提供深入理解和学术研究的材料。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值