23基于java教师科研项目管理系统

背景及意义

目前许多人仍将传统的纸质工具作为信息管理的主要工具,而网络技术的应用只是起到辅助作用。在对网络工具的认知程度上,较为传统的office软件等仍是人们使用的主要工具,而相对全面且专业的信息管理软件仍没有得到大多数人的了解或认可。本选题则旨在通过标签分类管理等方式,实现教研的各种功能,从而达到对科研管理系统的管理。

项目环境

> 前端:html, css, js, vue, jquery等; 
> 后端:java, spring,maven,SSM,Springboot等 ; 
> 开发工具:支持eclipse或idea
> 数据库:mysql7
> 更多内容可查看:http://projecthelp.top

设计

以院系申报科技项目为例:科研管理系统的实现主要包括教师、科研管理人员和系统管理员三个用户角色,由于系统用户角色不同所使用的功能模块相应不同,管理员根据需求对系统功能模块进行维护管理操作。

部分核心代码

import org.springframework.stereotype.Service;
import xyz.shiguangliang.mybatis.dao.UserMapper;

import xyz.shiguangliang.mybatis.domain.User;
import xyz.shiguangliang.service.UserService;
import xyz.shiguangliang.util.query.QueryInfo;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Objects;

@Service
public class UserServiceImpl implements UserService {
    @Resource
    private UserMapper userMapper;

    //登录
    @Override
    public User login(String username, String password) {
        User user = userMapper.selectLogin(username,password);
        if (user != null) {
            //登录次数加一
            if (user.getIntimes() !=  null) {
                user.setIntimes(user.getIntimes() + 1);
            }else {
                user.setIntimes(1);
            }
            //更新登录时间
            user.setLastlogin(new Date());
            return user;
        }
        return null;
    }

    //注册
    @Override
    public boolean register(User user) {
        int i = 0;
        //检测用户是否存在
        User user1 = userMapper.selectUsername(user.getUsername());
        if (user1 == null) {
            i = userMapper.insert(user);
        }
        return i > 0;
    }

    //用户列表
    @Override
    public QueryInfo getUserList(String query, Integer pagenum,Integer pagesize) {
        QueryInfo queryInfo = new QueryInfo();
        int start;
        int end;
        if (pagenum == null||pagesize == null){
            pagenum =0;
            pagesize = 3;
        }
        start = (pagenum-1)*pagesize;
        end = pagesize;
        int userSize = userMapper.selectUserListLimitSize(query,start,end);
        List<User> users = userMapper.selectUserListLimit(query,start,end);
        queryInfo.setList(users);
        queryInfo.setTotal(userSize);
        return queryInfo;
    }

    //删除用户
    @Override
    public int deleteUser(Integer tid) {
        return userMapper.deleteByPrimaryKey(tid);
    }

    //通过id查找用户
    @Override
    public User findById(Integer tid) {
        return userMapper.selectByPrimaryKey(tid);
    }



    //更新用户
    @Override
    public int updateUser(User user) {
        if (user.getPassword()==null|| Objects.equals(user.getPassword(), "")){
            user.setPassword(userMapper.selectByPrimaryKey(user.getTid()).getPassword());
        }
        return userMapper.updateByPrimaryKey(user);
    }

    //通过用户名查找用户
    @Override
    public User findByUsername(String username) {
        return userMapper.selectUsername(username);
    }

    //获取用户权限
    @Override
    public int getPower(String username) {
        return userMapper.selectUsername(username).getPower();
    }
}

useMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="xyz.shiguangliang.mybatis.dao.UserMapper">
  <resultMap id="BaseResultMap" type="xyz.shiguangliang.mybatis.domain.User">
    <id column="tid" jdbcType="INTEGER" property="tid" />
    <result column="username" jdbcType="VARCHAR" property="username" />
    <result column="password" jdbcType="VARCHAR" property="password" />
    <result column="teachername" jdbcType="VARCHAR" property="teachername" />
    <result column="dno" jdbcType="INTEGER" property="dno" />
    <result column="power" jdbcType="INTEGER" property="power" />
    <result column="intimes" jdbcType="INTEGER" property="intimes" />
    <result column="lastlogin" jdbcType="TIMESTAMP" property="lastlogin" />
  </resultMap>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
    delete from teacher
    where tid = #{tid,jdbcType=INTEGER}
  </delete>
  <insert id="insert" parameterType="xyz.shiguangliang.mybatis.domain.User">
    insert into teacher (tid, username, password, 
      teachername, dno, power, 
      intimes, lastlogin)
    values (#{tid,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, 
      #{teachername,jdbcType=VARCHAR}, #{dno,jdbcType=INTEGER}, #{power,jdbcType=INTEGER}, 
      #{intimes,jdbcType=INTEGER}, #{lastlogin,jdbcType=TIMESTAMP})
  </insert>
  <update id="updateByPrimaryKey" parameterType="xyz.shiguangliang.mybatis.domain.User">
    update teacher
    set username = #{username,jdbcType=VARCHAR},
      password = #{password,jdbcType=VARCHAR},
      teachername = #{teachername,jdbcType=VARCHAR},
      dno = #{dno,jdbcType=INTEGER},
      power = #{power,jdbcType=INTEGER},
      intimes = #{intimes,jdbcType=INTEGER},
      lastlogin = #{lastlogin,jdbcType=TIMESTAMP}
    where tid = #{tid,jdbcType=INTEGER}
  </update>
  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
    select tid, username, password, teachername, dno, power, intimes, lastlogin
    from teacher
    where tid = #{tid,jdbcType=INTEGER}
  </select>
  <select id="selectAll" resultMap="BaseResultMap">
    select tid, username, password, teachername, dno, power, intimes, lastlogin
    from teacher
  </select>
    <select id="selectLogin" resultType="xyz.shiguangliang.mybatis.domain.User">
        select tid, username, password, teachername, dno, power, intimes, lastlogin
        from teacher
        where username = #{username} and password = #{password}
    </select>
  <select id="selectUsername" resultType="xyz.shiguangliang.mybatis.domain.User">
    select tid, username, password, teachername, dno, power, intimes, lastlogin
        from teacher
        where username = #{username}
  </select>
  <select id="selectUserListLimit" resultType="xyz.shiguangliang.mybatis.domain.User">
    select tid, username, password, teachername, dno, power, intimes, lastlogin
    from teacher
    where
    /*条件判断*/
    <if test="#{query} != null and #{query} != ''">
      /*模糊查询*/
      <bind name="query2" value="'%' + query + '%'"/>
      username like #{query2}
    </if>
    LIMIT #{start},#{end}
  </select>
  <select id="selectUserListLimitSize" resultType="java.lang.Integer">
    select count(*)
    from teacher
    where
    /*条件判断*/
    <if test="#{query} != null and #{query} != ''">
      /*模糊查询*/
      <bind name="query2" value="'%' + query + '%'"/>
      username like #{query2}
    </if>
  </select>
</mapper>

系统模块划分和部分截图

学生角色

  • 首页
    在这里插入图片描述
    展示当前所有项目的信息,还包括当前科技项目的时间阶段,包括项目申报阶段,中期检查阶段和项目结题阶段

  • 学生项目申报
    在这里插入图片描述
    学生根据项目情况,可以进行项目的申报,填写对应的信息和上传对应的文件和附件,提供即可申报一次项目,学生还可以查看自己所有的申报的项目列表:
    在这里插入图片描述

  • 学生项目中期检查
    在这里插入图片描述
    待刚刚申报的项目完成之后,由教师角色进行审核通过之后,等到项目中期阶段,学生就可以登录到项目进行填写中期项目检查申请,同时还可以查看到自己所有项目的中期检查列表:
    在这里插入图片描述

  • 项目结题
    待教师登录系统进行中期检查通过之后,学生完成项目设计,待结题时间阶段,学生可以进行项目结题的申请,学生提交项目结题的材料信息,进行项目结题申报:
    在这里插入图片描述

  • 用户基本设置
    学生可以对自己的个人的基本信息进行修改和密码修改等:
    在这里插入图片描述

教师角色

在这里插入图片描述
教师角色登录到系统中,首页展示项目的所有信息,同时可以对项目的监控,若学生提交项目信息,会有消息提醒代办业务:
在这里插入图片描述

  • 项目审核
    在这里插入图片描述
    教师可以对项目的申报,中期和结题的不同阶段进行审核,不同阶段的项目会在不同的列表中显示进行审核,对不同项目的审核,需要提交不同的审核意见,比如对项目审报的审核,会有下面的审核意见:
    在这里插入图片描述

  • 项目设置
    在这里插入图片描述
    教师可以对此次科研项目时间不同阶段进行设置

  • 管理员模块
    管理员角色就是对教师模块增加用户(包括学生和教师)管理,可以实现增加用户和修改用户

适用场景

在这里插入图片描述

原文链接:https://www.cnblogs.com/projecthelp/p/17374561.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:23基于java教师科研项目管理系统 - Python技术站

(0)
上一篇 2023年5月5日
下一篇 2023年5月5日

相关文章

  • SpringBoot2.0.3打印默认数据源为 HikariDataSource (null)问题

    下面是SpringBoot2.0.3打印默认数据源为HikariDataSource(null)问题的完整攻略。 问题描述 在使用SpringBoot2.0.3版本时,如果使用了默认的数据源,会在启动程序时输出类似于“SpringBoot2.0.3打印默认数据源为 HikariDataSource (null)”的提示信息,其中null在不同的操作系统和环境…

    Java 2023年5月20日
    00
  • 教你怎么用Java操作Redis

    下面为你详细讲解如何使用Java操作Redis: 1. 前置条件 在使用Java操作Redis之前,你需要确保已经完成以下步骤: 在本地或者服务器上安装Redis并启动。 在Java项目中引入Redis的Java客户端依赖包,例如Jedis或Lettuce。 2. 连接Redis 在Java中连接Redis的方式很简单,只需要创建一个Redis客户端对象,设…

    Java 2023年5月26日
    00
  • [Spring MVC] -简单表单提交实例

    在Spring MVC中,表单提交是一个常见的需求。Spring MVC提供了多种方式来处理表单提交,包括使用@RequestParam、@ModelAttribute、@RequestBody等。下面是一个简单的Spring MVC表单提交实例的详细攻略: 1. 创建表单页面 首先,我们需要创建一个表单页面,例如: <!DOCTYPE html&gt…

    Java 2023年5月18日
    00
  • spring boot使用@Async注解解决异步多线程入库的问题

    下面我来详细讲解 spring boot 使用 @Async 注解解决异步多线程入库的问题的完整攻略。 什么是 @Async 注解? @Async 注解是 Spring Boot 中用于实现异步调用的注解,使用 @Async 注解可以很轻松地将任务提交到 Spring 的线程池中,并利用多线程技术来提高处理能力。 如何实现异步多线程入库? 我们可以通过使用 …

    Java 2023年5月26日
    00
  • java实现连接mysql数据库单元测试查询数据的实例代码

    Java是一个广泛使用的编程语言,MySQL是一种流行的开源关系型数据库。在Java应用程序中连接MySQL数据库是一个常见的任务。单元测试是一种测试方法,用于确保代码的正确性。下面是一些步骤和示例代码,用于在Java中连接MySQL数据库并编写单元测试来查询数据。 步骤一:安装并配置MySQL数据库 首先需要安装MySQL数据库,并创建一个或多个数据库和表…

    Java 2023年5月19日
    00
  • Java数组的声明与创建示例详解

    下面我来详细讲解“Java数组的声明与创建示例详解”。 Java数组的声明 Java数组的声明方式有两种: 声明数组类型后再声明数组变量 声明数组时直接初始化 下面分别来看这两种方式的示例。 声明数组类型后再声明数组变量 // 声明一个整型数组 int[] arr; // 声明一个字符串数组 String[] strArr; 在这种方式下,只声明了数组类型并…

    Java 2023年5月26日
    00
  • 什么是递归?用Java写一个简单的递归程序

    什么是递归? 递归是一种解决问题的方法。它将问题分解为子问题,并通过递归调用函数来解决这些子问题。递归函数是一个函数,它调用它本身,直到达到某个终止条件。 Java中的递归 在Java中,递归是通过调用函数本身来实现的。下面是一个递归函数的一般形式: public returnType functionName(parameters) { if (baseC…

    Java 2023年5月24日
    00
  • Java MyBatis可视化代码生成工具使用教程

    下面是详细的Java MyBatis可视化代码生成工具使用教程攻略: 1. 下载安装Java MyBatis可视化代码生成工具 Java MyBatis可视化代码生成工具是基于Java语言实现的代码生成工具,可以生成具有MyBatis框架的Java代码。你可以从官网下载该工具并进行安装。 2. 连接数据库 Java MyBatis可视化代码生成工具需要连接数…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部