20基于java的科研管理系统设计与实现

打印 上一主题 下一主题

主题 960|帖子 960|积分 2880

背景及意义

目前许多人仍将传统的纸质工具作为信息管理的主要工具,而网络技术的应用只是起到辅助作用。在对网络工具的认知程度上,较为传统的office软件等仍是人们使用的主要工具,而相对全面且专业的信息管理软件仍没有得到大多数人的了解或认可。本选题则旨在通过标签分类管理等方式,实现教研的各种功能,从而达到对科研管理系统的管理。
科研项目管理系统,以项目化管理为思想,以现实中管理制度为核心,对科研项目申报、项目开题、项目合同、实施进度、项目风险分析及控制计划、项目经费、项目质量、项目文档、科研成果等科研活动全面管理,实现科研项目“管理标准的沉淀优化、组织流程的优化、管理水平的提升、内外部资源整合的延伸”,保障科研项目完成与落实,出人才、出成果、出效益,提高竞争力。
主要功能

项目主要分为3个角色,分别是超级管理员,教师和学生,超级管理员具有项目所有的权限,包括有用户管理,角色管理,权限管理,项目管理,申报管理,变更管理,结题管理,数据字典等功能;学生学生负责对项目的申报,变更,结题申请等,教师负责对学生提交的项目进行审核。
项目搭建环境
  1. > java jdk版本:1.8及以上
  2. > 后台框架:java spring springmvc mybatis springbotoot等
  3. > 前端框架:html css javascript vue等
  4. > 开发工具: idea或者eclipse都可
  5. > 数据库: mysql 5.7及以上
  6. > 服务器: tomcat
  7. > 更多内容可查看:http://projecthelp.top
复制代码
部分核心代码
  1. import org.springframework.stereotype.Service;
  2. import xyz.shiguangliang.mybatis.dao.UserMapper;
  3. import xyz.shiguangliang.mybatis.domain.User;
  4. import xyz.shiguangliang.service.UserService;
  5. import xyz.shiguangliang.util.query.QueryInfo;
  6. import javax.annotation.Resource;
  7. import java.util.Date;
  8. import java.util.List;
  9. import java.util.Objects;
  10. @Service
  11. public class UserServiceImpl implements UserService {
  12.     @Resource
  13.     private UserMapper userMapper;
  14.     //登录
  15.     @Override
  16.     public User login(String username, String password) {
  17.         User user = userMapper.selectLogin(username,password);
  18.         if (user != null) {
  19.             //登录次数加一
  20.             if (user.getIntimes() !=  null) {
  21.                 user.setIntimes(user.getIntimes() + 1);
  22.             }else {
  23.                 user.setIntimes(1);
  24.             }
  25.             //更新登录时间
  26.             user.setLastlogin(new Date());
  27.             return user;
  28.         }
  29.         return null;
  30.     }
  31.     //注册
  32.     @Override
  33.     public boolean register(User user) {
  34.         int i = 0;
  35.         //检测用户是否存在
  36.         User user1 = userMapper.selectUsername(user.getUsername());
  37.         if (user1 == null) {
  38.             i = userMapper.insert(user);
  39.         }
  40.         return i > 0;
  41.     }
  42.     //用户列表
  43.     @Override
  44.     public QueryInfo getUserList(String query, Integer pagenum,Integer pagesize) {
  45.         QueryInfo queryInfo = new QueryInfo();
  46.         int start;
  47.         int end;
  48.         if (pagenum == null||pagesize == null){
  49.             pagenum =0;
  50.             pagesize = 3;
  51.         }
  52.         start = (pagenum-1)*pagesize;
  53.         end = pagesize;
  54.         int userSize = userMapper.selectUserListLimitSize(query,start,end);
  55.         List<User> users = userMapper.selectUserListLimit(query,start,end);
  56.         queryInfo.setList(users);
  57.         queryInfo.setTotal(userSize);
  58.         return queryInfo;
  59.     }
  60.     //删除用户
  61.     @Override
  62.     public int deleteUser(Integer tid) {
  63.         return userMapper.deleteByPrimaryKey(tid);
  64.     }
  65.     //通过id查找用户
  66.     @Override
  67.     public User findById(Integer tid) {
  68.         return userMapper.selectByPrimaryKey(tid);
  69.     }
  70.     //更新用户
  71.     @Override
  72.     public int updateUser(User user) {
  73.         if (user.getPassword()==null|| Objects.equals(user.getPassword(), "")){
  74.             user.setPassword(userMapper.selectByPrimaryKey(user.getTid()).getPassword());
  75.         }
  76.         return userMapper.updateByPrimaryKey(user);
  77.     }
  78.     //通过用户名查找用户
  79.     @Override
  80.     public User findByUsername(String username) {
  81.         return userMapper.selectUsername(username);
  82.     }
  83.     //获取用户权限
  84.     @Override
  85.     public int getPower(String username) {
  86.         return userMapper.selectUsername(username).getPower();
  87.     }
  88. }
复制代码
useMapper.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="xyz.shiguangliang.mybatis.dao.UserMapper">
  4.   <resultMap id="BaseResultMap" type="xyz.shiguangliang.mybatis.domain.User">
  5.     <id column="tid" jdbcType="INTEGER" property="tid" />
  6.     <result column="username" jdbcType="VARCHAR" property="username" />
  7.     <result column="password" jdbcType="VARCHAR" property="password" />
  8.     <result column="teachername" jdbcType="VARCHAR" property="teachername" />
  9.     <result column="dno" jdbcType="INTEGER" property="dno" />
  10.     <result column="power" jdbcType="INTEGER" property="power" />
  11.     <result column="intimes" jdbcType="INTEGER" property="intimes" />
  12.     <result column="lastlogin" jdbcType="TIMESTAMP" property="lastlogin" />
  13.   </resultMap>
  14.   <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
  15.     delete from teacher
  16.     where tid = #{tid,jdbcType=INTEGER}
  17.   </delete>
  18.   <insert id="insert" parameterType="xyz.shiguangliang.mybatis.domain.User">
  19.     insert into teacher (tid, username, password,
  20.       teachername, dno, power,
  21.       intimes, lastlogin)
  22.     values (#{tid,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR},
  23.       #{teachername,jdbcType=VARCHAR}, #{dno,jdbcType=INTEGER}, #{power,jdbcType=INTEGER},
  24.       #{intimes,jdbcType=INTEGER}, #{lastlogin,jdbcType=TIMESTAMP})
  25.   </insert>
  26.   <update id="updateByPrimaryKey" parameterType="xyz.shiguangliang.mybatis.domain.User">
  27.     update teacher
  28.     set username = #{username,jdbcType=VARCHAR},
  29.       password = #{password,jdbcType=VARCHAR},
  30.       teachername = #{teachername,jdbcType=VARCHAR},
  31.       dno = #{dno,jdbcType=INTEGER},
  32.       power = #{power,jdbcType=INTEGER},
  33.       intimes = #{intimes,jdbcType=INTEGER},
  34.       lastlogin = #{lastlogin,jdbcType=TIMESTAMP}
  35.     where tid = #{tid,jdbcType=INTEGER}
  36.   </update>
  37.   <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
  38.     select tid, username, password, teachername, dno, power, intimes, lastlogin
  39.     from teacher
  40.     where tid = #{tid,jdbcType=INTEGER}
  41.   </select>
  42.   <select id="selectAll" resultMap="BaseResultMap">
  43.     select tid, username, password, teachername, dno, power, intimes, lastlogin
  44.     from teacher
  45.   </select>
  46.     <select id="selectLogin" resultType="xyz.shiguangliang.mybatis.domain.User">
  47.         select tid, username, password, teachername, dno, power, intimes, lastlogin
  48.         from teacher
  49.         where username = #{username} and password = #{password}
  50.     </select>
  51.   <select id="selectUsername" resultType="xyz.shiguangliang.mybatis.domain.User">
  52.     select tid, username, password, teachername, dno, power, intimes, lastlogin
  53.         from teacher
  54.         where username = #{username}
  55.   </select>
  56.   <select id="selectUserListLimit" resultType="xyz.shiguangliang.mybatis.domain.User">
  57.     select tid, username, password, teachername, dno, power, intimes, lastlogin
  58.     from teacher
  59.     where
  60.     /*条件判断*/
  61.     <if test="#{query} != null and #{query} != ''">
  62.       /*模糊查询*/
  63.       <bind name="query2" value="'%' + query + '%'"/>
  64.       username like #{query2}
  65.     </if>
  66.     LIMIT #{start},#{end}
  67.   </select>
  68.   <select id="selectUserListLimitSize" resultType="java.lang.Integer">
  69.     select count(*)
  70.     from teacher
  71.     where
  72.     /*条件判断*/
  73.     <if test="#{query} != null and #{query} != ''">
  74.       /*模糊查询*/
  75.       <bind name="query2" value="'%' + query + '%'"/>
  76.       username like #{query2}
  77.     </if>
  78.   </select>
  79. </mapper>
复制代码

  • Project实体类
  1. @Entity
  2. @Table(name = BaseEntity.TABLE_PREFIX + "PROJECT")
  3. public class Project extends BaseEntity{
  4.     //项目名
  5.     @Column(name = "name",nullable = false)
  6.     private String name;
  7.     //项目级别
  8.     @Column(name = "level",nullable = false)
  9.     private String level;
  10.     //负责人
  11.     @Column(name = "user_name",nullable = false)
  12.     private String userName;
  13.     //成员
  14.     @Column(name = "memberJsons",nullable = false)
  15.     private String memberJsons;
  16.     //资金
  17.     @Fetch(FetchMode.SUBSELECT)
  18.     @OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY,targetEntity = Fund.class,mappedBy = "projectId")
  19.     private List<Fund> funds;
  20.     //项目结果类型
  21.     @Column(name = "achievement_type",nullable = false)
  22.     private String achievementType;
  23.     //开始时间
  24.     @Column(name = "begin_time",nullable = false)
  25.     private Date beginTime;
  26.     //学科
  27.     @Column(name = "subject",nullable = false)
  28.     private String subject;
  29.     //预期结果
  30.     @Column(name = "expected_result",nullable = false)
  31.     private String expectedResult;
  32.     //立项目的
  33.     @Column(name = "purpose",nullable = false)
  34.     private String purpose;
  35.     //研究方案可行性分析
  36.     @Column(name = "viable_analysis",nullable = false)
  37.     private String viableAnalysis;
  38.     //社会效益分析
  39.     @Column(name = "economic_analysis",nullable = false)
  40.     private String economicAnalysis;
  41.     //现有条件
  42.     @Column(name = "existing_conditions",nullable = false)
  43.     private String existingConditions;
  44.     //所属学院
  45.     @Column(name = "college" , nullable = false)
  46.     private String college;
  47.     //项目状态
  48.     @Column(name = "status",nullable = false)
  49.     private int status;
  50.     //是否可以修改
  51.     @Column(name = "can_update" )
  52.     private boolean canUpdate;
  53.     //是否可以申报
  54.     @Column(name = "can_application")
  55.     private boolean canApplication;
  56.     //是否可以结题
  57.     @Column(name = "can_conclude")
  58.     private boolean canConclude;
  59.     //创建人
  60.     @Column(name = "created_user",nullable = false)
  61.     private String createdUser;
  62. }
复制代码
项目实现类
  1. @Service
  2. public class ProjectApplicationServiceImpl extends BaseServiceImpl<ProjectApplication> implements IProjectApplicationService {
  3.     public ProjectApplicationServiceImpl(BaseRepository<ProjectApplication> repository) {
  4.         super(repository);
  5.     }
  6.     @Autowired
  7.     private ProjectApplicationRepository projectApplicationRepository;
  8.     @Autowired
  9.     private IProjectService projectService;
  10.     @Override
  11.     @Transactional
  12.     public ProjectApplication toApplication(ProjectApplication projectApplication) {
  13.         projectApplication.setStatus(ApplicationStatus.ON_APPLIACTION.getName());
  14.         projectApplication.setApplicant(CurrentUserUtils.getCurrentUser().getSecurityUserDto().getUserName());
  15.         projectApplication.setApplicateTime(new Date());
  16.         ProjectApplication savedPorjectAppication = projectApplicationRepository.save(projectApplication);
  17.         //项目申报中  项目申报 不可修改 不可申报 不可以申请变更 不可结题
  18.         projectService.changeStatus(projectApplication.getProjectId(), ProjectStatus.PROJECT_AUDIT);
  19.         return savedPorjectAppication;
  20.     }
  21.     @Override
  22.     @Transactional
  23.     public ProjectApplication applicationPass(ProjectApplication projectApplication) {
  24.         projectApplication.setStatus(ApplicationStatus.SUCCESS_APPLICATION.getName());
  25.         ProjectApplication updatedProjectApplication = projectApplicationRepository.save(projectApplication);
  26.         //未结题 结题之前的状态 不可修改 不可以申报 可以申请变更 可以申请结题
  27.         projectService.changeStatus(projectApplication.getProjectId(),ProjectStatus.NOT_CONCLUSION);
  28.         return updatedProjectApplication;
  29.     }
  30.     @Override
  31.     public ProjectApplication applicationNotPass(ProjectApplication projectApplication) {
  32.         projectApplication.setStatus(ApplicationStatus.FAIL_APPLICATION.getName());
  33.         ProjectApplication updatedProjectApplication = projectApplicationRepository.save(projectApplication);
  34.         //申报失败 等同草稿 可以修改 可以申报 不可以申请变更 不可以结题
  35.         projectService.changeStatus(projectApplication.getProjectId(),ProjectStatus.FAIL_PROJECT_AUDIT);
  36.         return updatedProjectApplication;
  37.     }
  38. }
复制代码
数据库的设计


项目部分功能展示


  • 登录页面

  • 管理员功能


  • 教师角色

  • 学生角色


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

光之使者

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表