SpringBoot+Vue项目学生读书笔记共享平台

文末获取源码 

开发语言:Java

框架:springboot

JDK版本:JDK1.8

服务器:tomcat7

数据库:mysql 5.7/8.0

数据库工具:Navicat11

开发软件:eclipse/myeclipse/idea

Maven包:Maven3.3.9

浏览器:谷歌浏览器

一、前言介绍 

本文从管理员、用户的功能要求出发,读书笔记共享平台系统中的功能模块主要是实现管理员;首页、个人中心、用户管理、笔记分享管理、个人笔记管理、管理员管理、交流互动、系统管理。用户:首页、个人中心、笔记分享管理、个人笔记管理、我的收藏管理。前台首页:首页、笔记分享、交流信息、个人中心、后台管理。经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与读书笔记共享平台实现的实际需求相结合,讨论了Java开发读书笔记共享平台的使用。 

二、系统功能设计

软件的用户界面是最直接接触的对象,包括是否允许用户使用简单方便,请求的响应时间,主图像的整体质量,整体布局的质量。

读书笔记共享平台的设计基于现有的网络平台,可以实现用户管理及数据信息管理,方便管理员对后台进行管理有详细的了解及统计分析,随时查看信息状态。

系统功能设计是在系统开发和设计思想的总体任务的基础上完成的。该系统的主要任务是实现读书笔记共享平台管理,使用户可以通过指令完成整个读书笔记共享平台的操作。 

从上面的描述中可以基本可以实现软件的功能:

1、开发实现读书笔记共享平台的整个系统程序;

2、管理员;首页、个人中心、用户管理、笔记分享管理、个人笔记管理、管理员管理、交流互动、系统管理等。 

3、用户:首页、个人中心、笔记分享管理、个人笔记管理、我的收藏管理。

4、前台首页:首页、笔记分享、交流信息、个人中心、后台管理等相应操作;

5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。 

三、前台首页功能模块

3.1前台首页

登录进前台首页信息管理可以查看首页、笔记分享、交流信息、个人中心、后台管理等内容,如图所示。

3.2登录、用户注册

在用户注册页面可以填写用户名、姓名、性别、头像、手机、邮箱、兴趣标签等信息进行注册,如图所示。

登录

3.3笔记分享

在笔记分享页面通过填写笔记名称、笔记类型、笔记标签、笔记图片、分享日期、用户名、邮箱、审核回复、审核状态等信息进行搜索、添加,如图所示。

3.4交流互动

在交流互动页面通过填写帖子标题、用户名、状态、操作等信息进行公开、私人操作,如图所示。

四、管理员功能模块

4.1后台登录

管理员通过点击后台管理,进入页面可以输入用户名、密码、角色进行登录相对应操作,如图所示。 

4.2管理员首页

管理员通过首页进入页面可以查看首页,个人中心、用户管理、笔记分享管理、个人笔记管理、管理员管理、交流互动、系统管理等功能模块,进行相对应操作,如图所示。

4.3用户管理

管理员通过在用户管理进入页面可以查看用户名、姓名、性别、头像、手机、邮箱、兴趣标签等并进行详情、删除、修改操作如图所示。

4.4笔记分享管理

管理员在通过笔记分享管理进入页面可以查看笔记名称、笔记类型、笔记标签、笔记图片、分享日期、用户名、邮箱、审核回复、审核状态等信息,并进行详情、删除、修改操作,如图所示。

4.5管理员管理

管理员在通过管理员管理页面可以查看索引、用户名、密码、角色、操作等信息并进行详情、删除、修改操作如图所示。

4.6个人笔记管理

管理员在通过个人笔记管理页面可以查看笔记名称、笔记类型、笔记标签、笔记图片、发布日期、用户名、邮箱等信息,并进行详情、删除、修改操作,如图所示。 

4.7交流互动

管理员在通过交流互动页面可以查看帖子标题、用户名、状态、操作等信息,并进行详情、删除、修改操作如图所示。

4.8公告信息

管理员通过公告信息页面可以查看索引、标题、简介、图片、操作等信息,并进行详情、删除、修改操作如图所示。

五、用户功能模块

5.1用户首页

在用户首页页面可以查看首页、个人中心、笔记分享管理、个人笔记管理、我的收藏管理等信息,如图所示。

5.2个人信息

用户通过个人信息可以填写用户名、姓名、性别、头像、手机、邮箱、兴趣标签等信息,如图所示。

5.3笔记分享管理

用户通过笔记分享管理可以查看笔记名称、笔记类型、笔记标签、笔记图片、分享日期、用户名、邮箱、审核回复、审核状态等信息,进行详情修改或删除,如图所示。

5.4个人笔记管理

用户通过个人笔记管理可以查看笔记名称、笔记类型、笔记标签、笔记图片、发布日期、用户名、邮箱等信息操作,如图所示。

六、部分核心代码 

/**
 * 上传文件映射表
 */
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{
	@Autowired
    private ConfigService configService;
	/**
	 * 上传文件
	 */
	@RequestMapping("/upload")
	public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
		if (file.isEmpty()) {
			throw new EIException("上传文件不能为空");
		}
		String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
		File path = new File(ResourceUtils.getURL("classpath:static").getPath());
		if(!path.exists()) {
		    path = new File("");
		}
		File upload = new File(path.getAbsolutePath(),"/upload/");
		if(!upload.exists()) {
		    upload.mkdirs();
		}
		String fileName = new Date().getTime()+"."+fileExt;
		File dest = new File(upload.getAbsolutePath()+"/"+fileName);
		file.transferTo(dest);
		/**
  		 * 如果使用idea或者eclipse重启项目,发现之前上传的图片或者文件丢失,将下面一行代码注释打开
   		 * 请将以下的"D:\\springbootq33sd\\src\\main\\resources\\static\\upload"替换成你本地项目的upload路径,
 		 * 并且项目路径不能存在中文、空格等特殊字符
 		 */
//		FileUtils.copyFile(dest, new File("D:\\springbootq33sd\\src\\main\\resources\\static\\upload"+"/"+fileName)); /**修改了路径以后请将该行最前面的//注释去掉**/
		if(StringUtils.isNotBlank(type) && type.equals("1")) {
			ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
			if(configEntity==null) {
				configEntity = new ConfigEntity();
				configEntity.setName("faceFile");
				configEntity.setValue(fileName);
			} else {
				configEntity.setValue(fileName);
			}
			configService.insertOrUpdate(configEntity);
		}
		return R.ok().put("file", fileName);
	}
	
	/**
	 * 下载文件
	 */
	@IgnoreAuth
	@RequestMapping("/download")
	public ResponseEntity<byte[]> download(@RequestParam String fileName) {
		try {
			File path = new File(ResourceUtils.getURL("classpath:static").getPath());
			if(!path.exists()) {
			    path = new File("");
			}
			File upload = new File(path.getAbsolutePath(),"/upload/");
			if(!upload.exists()) {
			    upload.mkdirs();
			}
			File file = new File(upload.getAbsolutePath()+"/"+fileName);
			if(file.exists()){
				/*if(!fileService.canRead(file, SessionManager.getSessionUser())){
					getResponse().sendError(403);
				}*/
				HttpHeaders headers = new HttpHeaders();
			    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    
			    headers.setContentDispositionFormData("attachment", fileName);    
			    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);
	}
	
}

 

RestController
@RequestMapping("/kechengchengji")
public class KechengchengjiController {
    @Autowired
    private KechengchengjiService kechengchengjiService;


    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,KechengchengjiEntity kechengchengji,
		HttpServletRequest request){
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("jiaoshi")) {
			kechengchengji.setJiaoshizhanghao((String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("xuesheng")) {
			kechengchengji.setXuehao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<KechengchengjiEntity> ew = new EntityWrapper<KechengchengjiEntity>();
		PageUtils page = kechengchengjiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, kechengchengji), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,KechengchengjiEntity kechengchengji, 
		HttpServletRequest request){
        EntityWrapper<KechengchengjiEntity> ew = new EntityWrapper<KechengchengjiEntity>();
		PageUtils page = kechengchengjiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, kechengchengji), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( KechengchengjiEntity kechengchengji){
       	EntityWrapper<KechengchengjiEntity> ew = new EntityWrapper<KechengchengjiEntity>();
      	ew.allEq(MPUtil.allEQMapPre( kechengchengji, "kechengchengji")); 
        return R.ok().put("data", kechengchengjiService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(KechengchengjiEntity kechengchengji){
        EntityWrapper< KechengchengjiEntity> ew = new EntityWrapper< KechengchengjiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( kechengchengji, "kechengchengji")); 
		KechengchengjiView kechengchengjiView =  kechengchengjiService.selectView(ew);
		return R.ok("查询课程成绩成功").put("data", kechengchengjiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        KechengchengjiEntity kechengchengji = kechengchengjiService.selectById(id);
        return R.ok().put("data", kechengchengji);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        KechengchengjiEntity kechengchengji = kechengchengjiService.selectById(id);
        return R.ok().put("data", kechengchengji);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody KechengchengjiEntity kechengchengji, HttpServletRequest request){
    	kechengchengji.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(kechengchengji);
        kechengchengjiService.insert(kechengchengji);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody KechengchengjiEntity kechengchengji, HttpServletRequest request){
    	kechengchengji.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(kechengchengji);
        kechengchengjiService.insert(kechengchengji);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody KechengchengjiEntity kechengchengji, HttpServletRequest request){
        //ValidatorUtils.validateEntity(kechengchengji);
        kechengchengjiService.updateById(kechengchengji);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        kechengchengjiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<KechengchengjiEntity> wrapper = new EntityWrapper<KechengchengjiEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("jiaoshi")) {
			wrapper.eq("jiaoshizhanghao", (String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("xuesheng")) {
			wrapper.eq("xuehao", (String)request.getSession().getAttribute("username"));
		}

		int count = kechengchengjiService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	







}

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SpringBoot Vue项目是一种使用Vue.js作为前端框架,SpringBoot作为后端框架的项目开发方式。在这种项目中,前端使用Vue.js来处理用户界面和交互逻辑,后端使用SpringBoot来处理业务逻辑和数据传输。通过这样的方式,前端和后端可以相对独立地进行开发和部署,并通过API进行数据传输。 在具体实现上,可以通过以下步骤来创建一个SpringBoot Vue项目: 1. 创建一个SpringBoot项目:可以使用Spring Initializr来创建一个基本的SpringBoot项目,选择所需的依赖和配置。 2. 创建前端项目:可以使用Vue CLI来创建一个基本的Vue.js项目,配置相关的开发环境和依赖。 3. 配置前后端通信:在前端项目中,可以使用axios等工具来与后端进行数据交互,发送HTTP请求获取数据。在后端项目中,可以通过编写RESTful API来提供数据给前端。 4. 开发前后端功能:根据项目需求,前端可以开发用户界面、表单验证、数据展示等功能,后端可以开发业务逻辑、数据库操作、数据处理等功能。 5. 打包和部署:前端项目可以通过npm run build命令将代码打包成静态文件,然后将这些文件放入后端项目的静态资源目录中。后端项目可以通过打包成可执行的JAR文件或者WAR文件来部署到服务器上。 通过以上步骤,就可以创建一个基于SpringBootVue.js项目,并实现前后端的协同开发和交互。希望这些信息对你有所帮助。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [教你如何制作vue+springboot项目](https://blog.csdn.net/xc9711/article/details/121725216)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一季春秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值