\n文末获取源码联系

感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询

系统介绍:

在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对问答信息管理的提升,也为了对问答信息进行更好的维护,付费问答系统的出现就变得水到渠成不可缺少。通过对付费问答系统的开发,不仅仅可以学以致用,让学到的知识变成成果出现,也强化了知识记忆,扩大了知识储备,是提升自我的一种很好的方法。通过具体的开发,对整个软件开发的过程熟练掌握,不论是前期的设计,还是后续的编码测试,都有了很深刻的认知。

付费问答系统通过MySQL数据库与Spring
Boot框架进行开发,付费问答系统能够实现新闻类型管理,问题帖子管理,付费记录管理,新闻信息管理,用户管理,轮播图管理等功能。

通过付费问答系统对相关信息的处理,让信息处理变的更加的系统,更加的规范,这是一个必然的结果。已经处理好的信息,不管是用来查找,还是分析,在效率上都会成倍的提高,让计算机变得更加符合生产需要,变成人们不可缺少的一种信息处理工具,实现了绿色办公,节省社会资源,为环境保护也做了力所能及的贡献。

本系统主要是基于数据的增加,修改,删除等操作,使用者能够通过提前设定的登录功能进入指定的操作区,这里对使用者设计的功能进行结构展示。

管理员功能结构图的绘制结果见图4-1。管理员登录进入本系统操作的功能包括增删改查新闻类型,新闻信息,用户信息,轮播图信息等,可以管理问题帖子,管理用户付费记录信息等。

图4-1 管理员功能结构图

用户功能结构图的绘制结果见图4-2。用户登录进入本系统操作的功能包括查看新闻信息,发布问题帖子信息,查看帖子内容,发布帖子回答信息,付费查看所有的帖子回答信息,查看付费记录信息等。

图4-2 用户功能结构图

程序上交给用户进行使用时,需要提供程序的操作流程图,这样便于用户容易理解程序的具体工作步骤,现如今程序的操作流程都有一个大致的标准,即先通过登录页面提交登录数据,通过程序验证正确之后,用户才能在程序功能操作区页面操作对应的功能。

程序操作流程图

功能截图:

这里主要是对系统设计实现进行描述,通过系统的设计和数据库的设计,通过编码后变成了可以进行操作的界面,让一切想法变成了结果,通过文字和具体程序操作界面的截图之间的配合,可以把功能更直观的描述起来。

5.1管理员功能实现

5.1.1 问题帖子管理

管理员进入如图5-1所示的问题帖子管理界面之后,管理员点击信息显示栏中最右侧的修改,删除帖子,查看问题帖子回复按钮可依次完成问题帖子信息的修改,删除,对问题帖子的回复内容进行查看等操作,问题帖子信息包括帖子标题,发帖时间,帖子内容等信息。

图5-1 问题帖子管理界面

5.1.2 付费记录管理

管理员进入如图5-2所示的付费记录管理界面之后,管理员点击信息显示栏中最右侧的详情,删除按钮可依次完成付费记录信息的详情查看,删除等操作,付费记录信息包括付费时间,帖子标题,用户姓名等信息。管理员查询付费记录可以根据用户姓名来查询,也能根据帖子标题来查询付费记录信息等。

图5-2 付费记录管理界面

5.1.3 新闻信息管理

管理员进入如图5-3所示的新闻信息管理界面之后,管理员点击信息显示栏中最右侧的详情,修改,删除按钮可依次完成新闻信息的详情查看,修改,删除等操作。新闻信息包括新闻图片,新闻类型,新闻标题等信息。管理员查询新闻需要根据新闻类型来查询,也能在新闻标题的查询编辑框中登记新闻标题,然后查询新闻。

图5-3 新闻信息管理界面

5.1.4 用户管理

管理员进入如图5-4所示的用户管理界面之后,管理员点击信息显示栏中最右侧的详情,修改,删除,重置密码按钮可依次完成用户信息的详情查看,修改,删除,用户账号密码重置等操作,管理员查询用户需要在用户姓名的查询编辑框中登记用户姓名,然后查询用户,也能在性别旁边的查询编辑框中登记性别,然后查询用户。用户信息包括联系方式,头像,用户姓名等信息。

图5-4 用户管理界面

5.1.5 轮播图管理

管理员进入如图5-5所示的轮播图管理界面之后,管理员点击信息显示栏中最右侧的修改,删除按钮可依次完成轮播图信息的修改,删除操作,管理员也能在轮播图管理界面点击新增按钮新增轮播图信息。

图5-5 轮播图管理界面

5.2 用户功能实现

5.2.1 新闻信息

用户进入如图5-6所示的新闻信息界面之后,用户可以通过新闻类型字段来筛选新闻信息,可以在新闻信息界面右上角的查询编辑框中登记新闻标题查询新闻信息。新闻信息界面显示的新闻内容都允许用户进行查看。

图5-6 新闻信息界面

5.2.2 发布帖子

用户进入如图5-7所示的发布帖子界面之后,用户需要在标题旁边的文本输入框中登记帖子标题,在帖子内容旁边的文本框中输入帖子内容信息,最后点击确定按钮就可以把用户编辑的帖子进行发布。

图5-7 发布帖子界面

5.2.3 回答帖子

用户进入如图5-8所示的回答帖子界面之后,用户只有处于已登录状态才可以查看帖子的内容,也能对正在查看的帖子发布回答信息。用户只需要在回答内容旁边的文本框中编辑回答内容,然后点击确定按钮就能发布回答信息。

图5-8 回答帖子界面

5.2.4 查看帖子

用户进入如图5-9所示的查看帖子界面之后,用户只能查看帖子的内容,还有自己回答的帖子信息,当用户想要查看其他用户发布的帖子回答信息的时候,就需要用户付费,才能够查看该帖子内容的所有回答信息。

图5-9 查看帖子界面

5.2.5 付费记录查看

用户进入如图5-10所示的付费记录查看界面之后,用户点击信息显示栏中最右侧的详情按钮可以查看用户付费查看的帖子信息,用户查询付费记录信息可以根据帖子标题进行查询。

图5-10 付费记录查看界面

代码实现:



/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
    
    @Autowired
    private UserService userService;
    
    @Autowired
    private TokenService tokenService;

    /**
     * 登录
     */
    @IgnoreAuth
    @PostMapping(value = "/login")
    public R login(String username, String password, String role, HttpServletRequest request) {
        UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
        if(user != null){
            if(!user.getRole().equals(role)){
                return R.error("权限不正常");
            }
            if(user==null || !user.getPassword().equals(password)) {
                return R.error("账号或密码不正确");
            }
            String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
            return R.ok().put("token", token);
        }else{
            return R.error("账号或密码或权限不对");
        }

    }
    
    /**
     * 注册
     */
    @IgnoreAuth
    @PostMapping(value = "/register")
    public R register(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
            return R.error("用户已存在");
        }
        userService.insert(user);
        return R.ok();
    }

    /**
     * 退出
     */
    @GetMapping(value = "logout")
    public R logout(HttpServletRequest request) {
        request.getSession().invalidate();
        return R.ok("退出成功");
    }
    
    /**
     * 密码重置
     */
    @IgnoreAuth
    @RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
        UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
        if(user==null) {
            return R.error("账号不存在");
        }
        user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
    
    /**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
        PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
        Integer id = (Integer)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
            return R.error("用户已存在");
        }
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

论文参考:

开源地址:可以——【戳一戳】即可免费获取!


hunter_code
1 声望2 粉丝

weChat:jh_gzs_everthing,请备注:sf ,承接各种业务