✨作者主页:IT毕设梦工厂✨
个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。
☑文末获取源码☑
精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目
一、前言
在当今信息化的社会,各行各业都在迅速发展和变化。其中,文学领域的发展尤为显著。随着网络和数字技术的普及,越来越多的作家开始使用计算机和互联网来处理和分享他们的作品。同时,读者和粉丝们也对这些作品有着极高的热情和关注。因此,如何有效地管理这些作品,提供全面的信息,以及满足读者的需求,成为了当前文学领域的一个重要问题。这也正是我们提出“知名作家信息管理系统”课题的原因。
该系统旨在为作家提供一个综合的平台,以管理他们的作品、个人信息和读者反馈。同时,也为读者和粉丝提供一个获取作家信息和作品的地方。通过这个系统,我们可以有效地组织和管理大量的信息,使得信息的获取和查询更加方便快捷。这不仅可以帮助作家更好地展示他们的作品和形象,也能满足读者对信息的个性化需求。
尽管市面上已经存在一些文学网站和作家管理系统,但它们往往存在一些问题。首先,很多系统并没有对作家和作品进行有效的分类和管理,导致信息的混乱和重复。其次,它们往往缺乏对读者反馈的及时处理和回应,无法有效地与读者进行沟通和交流。最后,很多系统缺乏统一的数据管理和分析机制,无法有效地利用和挖掘数据中的价值。
因此,我们的“知名作家信息管理系统”旨在解决这些问题,提供一个全面、高效且用户友好的解决方案。
本课题的研究目的在于构建一个能够有效管理知名作家信息和作品的系统。该系统将提供以下功能:
作家管理:支持作家创建和管理自己的个人信息、作品集、写作计划等;
作品管理:支持对作品进行分类、标签化,以及添加评论和评分等;
论坛管理:支持读者和作家在论坛上交流和讨论;
公告管理:支持发布和管理各类公告,及时通知读者和作家相关信息;
基础数据管理:支持对公告类型、获得的奖项、作品类型等基础数据进行管理和维护。
本课题的研究意义在于为文学领域提供一个全面的、高效的、用户友好的信息管理系统。该系统不仅可以提高信息的管理效率,还可以增强读者与作家之间的互动和交流。同时,通过对数据的分析和挖掘,我们可以更好地理解读者的需求和喜好,为作家提供更有针对性的建议和支持。此外,该系统还可以为文学研究和教育提供丰富的数据资源和研究工具,推动文学领域的发展和进步。
二、开发环境
- 开发语言:Java
- 数据库:MySQL
- 系统架构:B/S
- 后端:SpringBoot
- 前端:Vue
三、系统功能模块
- 角色:用户、管理员
- 功能:
用户:
论坛、公告、作家、作品;
管理员:
用户管理、作家管理、作品管理、论坛管理、公告管理、基础数据管理(公告类型、获得的奖项、作品类型)。
四、系统界面展示
- 知名作家信息管理系统-界面展示:
五、代码参考
- Java项目实战-代码参考:
@Log("请求访问主页")
@GetMapping({"","/","/index"})
String index(Model model) {
List<Tree<MenuDO>> menus = menuService.listMenuTree(getUserId());
model.addAttribute("menus", menus);
model.addAttribute("name", getUser().getName());
FileDO fileDO = fileService.get(getUser().getPicId());
if (fileDO != null && fileDO.getUrl() != null) {
if (fileService.isExist(fileDO.getUrl())) {
model.addAttribute("picUrl", fileDO.getUrl());
} else {
model.addAttribute("picUrl", "/img/photo_s.jpg");
}
} else {
model.addAttribute("picUrl", "/img/photo_s.jpg");
}
model.addAttribute("username", getUser().getUsername());
return "index";
}
@GetMapping("/login")
String login(Model model) {
model.addAttribute("username", jnConfig.getUsername());
model.addAttribute("password", jnConfig.getPassword());
return "login";
}
@Log("登录")
@PostMapping("/login")
@ResponseBody
R ajaxLogin(String username, String password,String verify,HttpServletRequest request) {
try {
//从session中获取随机数
String random = (String) request.getSession().getAttribute(RandomValidateCodeUtil.RANDOMCODEKEY);
if (StringUtils.isBlank(verify)) {
return R.error("请输入验证码");
}
if (random.equals(verify)) {
} else {
return R.error("请输入正确的验证码");
}
} catch (Exception e) {
logger.error("验证码校验失败", e);
return R.error("验证码校验失败");
}
password = MD5Utils.encrypt(username, password);
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
Subject subject = SecurityUtils.getSubject();
try {
subject.login(token);
return R.ok();
} catch (AuthenticationException e) {
return R.error("用户或密码错误");
}
}
@GetMapping("/logout")
String logout() {
ShiroUtils.logout();
return "redirect:/login";
}
@GetMapping("/main")
String main() {
return "main";
}
/**
* 生成验证码
*/
@GetMapping(value = "/getVerify")
public void getVerify(HttpServletRequest request, HttpServletResponse response) {
try {
response.setContentType("image/jpeg");//设置相应类型,告诉浏览器输出的内容为图片
response.setHeader("Pragma", "No-cache");//设置响应头信息,告诉浏览器不要缓存此内容
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expire", 0);
RandomValidateCodeUtil randomValidateCode = new RandomValidateCodeUtil();
randomValidateCode.getRandcode(request, response);//输出验证码图片方法
} catch (Exception e) {
logger.error("获取验证码失败>>>> ", e);
}
}
@RequestMapping("/sys/user")
@Controller
public class SysUserController extends BaseController {
private String prefix = "system/user";
@Autowired
SysUserService userService;
@Autowired
RoleService roleService;
@Autowired
DictService dictService;
@RequiresPermissions("sys:user:user")
@GetMapping("")
String user(Model model) {
return prefix + "/user";
}
@GetMapping("/list")
@ResponseBody
PageBean list(@RequestParam Map<String, Object> params) {
// 查询列表数据
Query query = new Query(params);
List<UserDO> sysUserList = userService.list(query);
int total = userService.count(query);
PageBean pageUtil = new PageBean(sysUserList, total);
return pageUtil;
}
@RequiresPermissions("sys:user:add")
@Log("添加用户")
@GetMapping("/add")
String add(Model model) {
List<RoleDO> roles = roleService.list();
model.addAttribute("roles", roles);
return prefix + "/add";
}
@RequiresPermissions("sys:user:edit")
@Log("编辑用户")
@GetMapping("/edit/{id}")
String edit(Model model, @PathVariable("id") Long id) {
UserDO userDO = userService.get(id);
model.addAttribute("user", userDO);
List<RoleDO> roles = roleService.list(id);
model.addAttribute("roles", roles);
return prefix + "/edit";
}
public static void main(String[] args) {
System.out.println(MD5Utils.encrypt("admin", "admin"));
}
@RequiresPermissions("sys:user:add")
@Log("保存用户")
@PostMapping("/save")
@ResponseBody
R save(UserDO user) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
user.setPassword(MD5Utils.encrypt(user.getUsername(), user.getPassword()));
if (userService.save(user) > 0) {
return R.ok();
}
return R.error();
}
@RequiresPermissions("sys:user:edit")
@Log("更新用户")
@PostMapping("/update")
@ResponseBody
R update(UserDO user) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
if (userService.update(user) > 0) {
return R.ok();
}
return R.error();
}
@RequiresPermissions("sys:user:edit")
@Log("更新用户")
@PostMapping("/updatePeronal")
@ResponseBody
R updatePeronal(UserDO user) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
if (userService.updatePersonal(user) > 0) {
return R.ok();
}
return R.error();
}
@RequiresPermissions("sys:user:remove")
@Log("删除用户")
@PostMapping("/remove")
@ResponseBody
R remove(Long id) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
if (userService.remove(id) > 0) {
return R.ok();
}
return R.error();
}
@RequiresPermissions("sys:user:batchRemove")
@Log("批量删除用户")
@PostMapping("/batchRemove")
@ResponseBody
R batchRemove(@RequestParam("ids[]") Long[] userIds) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
int r = userService.batchremove(userIds);
if (r > 0) {
return R.ok();
}
return R.error();
}
@PostMapping("/exit")
@ResponseBody
boolean exit(@RequestParam Map<String, Object> params) {
// 存在,不通过,false
return !userService.exit(params);
}
@RequiresPermissions("sys:user:resetPwd")
@Log("请求更改用户密码")
@GetMapping("/resetPwd/{id}")
String resetPwd(@PathVariable("id") Long userId, Model model) {
UserDO userDO = new UserDO();
userDO.setUserId(userId);
model.addAttribute("user", userDO);
return prefix + "/reset_pwd";
}
@Log("提交更改用户密码")
@PostMapping("/resetPwd")
@ResponseBody
R resetPwd(UserVO userVO) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
try {
userService.resetPwd(userVO, getUser());
return R.ok();
} catch (Exception e) {
return R.error(1, e.getMessage());
}
}
@RequiresPermissions("sys:user:resetPwd")
@Log("admin提交更改用户密码")
@PostMapping("/adminResetPwd")
@ResponseBody
R adminResetPwd(UserVO userVO) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
try {
userService.adminResetPwd(userVO);
return R.ok();
} catch (Exception e) {
return R.error(1, e.getMessage());
}
}
@GetMapping("/tree")
@ResponseBody
public Tree<DeptDO> tree() {
Tree<DeptDO> tree = new Tree<DeptDO>();
tree = userService.getTree();
return tree;
}
@GetMapping("/treeView")
String treeView() {
return prefix + "/userTree";
}
@GetMapping("/personal")
String personal(Model model) {
UserDO userDO = userService.get(getUserId());
model.addAttribute("user", userDO);
model.addAttribute("hobbyList", dictService.getHobbyList(userDO));
model.addAttribute("sexList", dictService.getSexList());
return prefix + "/personal";
}
@ResponseBody
@PostMapping("/uploadImg")
R uploadImg(@RequestParam("avatar_file") MultipartFile file, String avatar_data, HttpServletRequest request) {
if ("test".equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
Map<String, Object> result = new HashMap<>();
try {
result = userService.updatePersonalImg(file, avatar_data, getUserId());
} catch (Exception e) {
return R.error("更新图像失败!");
}
if (result != null && result.size() > 0) {
return R.ok(result);
} else {
return R.error("更新图像失败!");
}
}
}
六、论文参考
- 计算机毕业设计选题推荐-知名作家信息管理系统-论文参考:
七、系统视频
知名作家信息管理系统-项目视频:
基于SpringBoot的知名作家信息管理系统
结语
计算机毕业设计选题推荐-知名作家信息管理系统-Java项目实战
大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:私信我