软件应用开发基于SSM框架的共享云盘系统设计与实现

Posted CS_木成河

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件应用开发基于SSM框架的共享云盘系统设计与实现相关的知识,希望对你有一定的参考价值。

本文编写目的:描述共享云盘系统的实现功能、运行环境以及系统的使用说明。
共享云盘系统完整代码https://download.csdn.net/download/weixin_47936614/86608898

软件名称:共享云盘系统
软件开发环境/开发工具:操作系统win10、jdk1.8.0、eclipse-jee-oxygen-3a-win32-x86_64
软件的运行平台/操作系统:Windows 7及以上版本
软件架构:Spring + Spring MVC + MyBatis
开发语言:Java、html、CSS、javascript
软件运行支撑环境/支持软件:jdk1.8.0_202 mysql Server 8.0 apache-tomcat-9.0.37

一.总体设计

1.需求概述

随着互联网技术的飞速发展和信息化建设的重视,越来越多的信息都以电子化、网络化的形式而存在。作为日常生活中数据涉及的沟通与存储工作,网络电子文档其价值正在日益提升。对于数据资源的存储很重要,那如何能够存储这些文件成为提高数据存储效率的关键问题,为了解决这一问题,本文设计开发的共享云盘系统可以对数据进行存储、共享,把数据存到云端,减少硬盘的使用,方便快捷地存储数据,共享数据文件。

2.系统结构

系统主要5个模块组成,分别为用户登录注册模块、文件模块、文件夹模块、回收站模块、分享模块。

  • 在用户登录注册模块中,用户可以注册账号,然后登录共享云盘系统,然后可以对自己的个人信息进行管理。
  • 在文件模块中,软件实现了三种功能,分别是文件上传下载、文件管理、文件在线查阅。在文件上传下载中,用户可以将本地的文件上传至自己的云盘,也可以从云盘中下载所需的文件,云盘的存储容量相应的发生变化。在文件管理中,用户可以对文件进行重命名、移动、删除操作,文件的路径以及云盘的容量相应的发生变化。在文件在线查阅中,用户可以在未下载云盘文件的情况下在线查看文件,能够查看文本、office文档、图片、音乐以及视频多种格式的文件。
  • 在文件夹管理模块中,软件实现了四种功能,分别是文件夹的创建、文件夹的重命名、文件夹的删除、文件夹的移动,用户可以对文件夹做相应的所需操作。
  • 在回收站模块中,软件实现了两种功能,分别是文件的删除、文件的还原。在文件的删除中,用户可以将文件删除,此时文件移动到回收站中,回收站会保存15天后自动删除过期的文件。在文件的还原中,用户也可以对所删除的文件进行找回操作,文件将从回收站中还原恢复至原存储路径。
  • 在分享模块中,软件实现了两种功能,分别是外链共享、删除共享。在外链共享中,用户可以将自己的文件生成共享链接分享给其他用户,同时用户可以查看到自己创建的共享外链列表。在删除共享中,用户可以删除自己所分享的文件,此时外链地址也相应地发生失效,其他用户不可访问该用户分享的文件。

系统结构如图1所示:

图1 系统结构图

3.系统功能

  • 注册登录功能:用户通过输入账号、密码注册成为系统用户,并输入个人信息,然后输入账号、密码和验证码可以登录系统。
  • 文件功能:用户进行文件上传下载、文件管理、文件在线查阅。
  • 文件夹功能:用户可以进行文件夹的创建、文件夹的重命名、文件夹的删除、文件夹的移动。
  • 回收站功能:用户可以进行文件的删除、文件的还原。
  • 分享功能:用户可以共享文件和删除共享链接。

二.开发工具软件安装

1)下载并安装eclipse,从http://www.eclipse.org下载并安装eclipse
2)下载并安装MySQL,从https://www.mysql.com下载并安装MySQL。
3)下载并安装Tomcat,从https://tomcat.apache.org下载并安装Tomcat。
4)下载并安装OpenOffice,从http://www.openoffice.org下载并安装OpenOffice;安装OpenOffice成功后,进入安装目录启动OpenOffice服务。

三、系统功能介绍

1.系统主界面

图2 系统主界面

2.注册登录功能

进入登录页面,如果该用户为新用户需要注册,点击注册进入注册页面并录入注册信息进行注册,点击注册将注册信息录入数据库中,注册完成。如果不需要注册,直接输入账号密码进行登录,若账号密码正确,则提示登录成功。如图3和图4所示。

图3 用户注册界面

(1)通过输入账号、密码和验证码来进行登录。
(2)用户输入账号、密码和验证码后,通过后台数据库检验其正确性,如果输入全部正确则进入系统首页,若其中有一个错误,则提示请重新填写用户信息。

图4 用户登录界面

3.文件上传下载功能

如果用户能成功登录,进入个人云盘主页,则其能够进行文件查看、管理、分享等功能,如图5所示。

图5 用户个人云盘主界面

在个人云盘主页面点击上传文件进行文件的上传,弹出文件浏览框,选择用户需要上传的文件,点击上传按钮,检查云盘剩余容量是否充足,若不足则无法上传,并且检查文件是否重复,若重复也无法上传,无法上传则提示上传失败返回主页面。满足条件则提示上传成功。勾选文件框选择需要的文件点击下载,弹出下载地址框,下载完成后提示下载成功。如图6和图7所示。

图6 文件上传界面

图7 文件下载界面

4.文件管理功能

在个人云盘主页面点击上传文件进行文件上传,选择文件,可以对其进行重命名,如果有重复名称文件或者文件名有非法字符,则文件重命名失败。若无重复名称,文件名无非法字符则文件重命名成功。选择文件进行文件移动,选择想要移动到的位置,若无重复文件则移动成功。重复则无法移动。选择想要删除的文件,进行文件删除,确认是否删除,确认后提示删除成功。如图8、图9和图10所示。

图8 文件重命名界面

图9 文件移动界面

图10 文件删除界面

5.文件夹管理功能

新建文件夹时,创建成功时提示文件夹创建成功,选择文件夹对其进项文件夹重命名,重命名后检查文件夹命名是否重复,是否包含违法字符,若无重复且无违法字符,则提示文件夹重命名成功。选择文件夹进行文件夹删除,确认是否删除,确认后提示删除成功。选择文件夹对其进行移动,选择想要移动到的位置,若无重复名文件夹则移动成功。重复则无法移动。如图11、图12和图13所示。

图11 文件夹重命名界面

图12 文件夹移动界面

图13 文件夹删除界面

6.文件共享功能

在个人云盘主页面选中文件,选择分享文件如果分享成功则生成连接并且后台输出提取码供用户使用。分享成功之后有分享记录,可以选择删除分享。若分享不成功则返回主页面。如图14、图15所示。

图14 文件分享界面

图15 文件分享记录界面

其他用户可根据共享链接和提取码提取文件,然后可以下载文件。如图16、图17所示。

图16 输入提取码提取文件界面

图17 文件提取成功界面

7.回收站功能

在个人云盘主页面点击回收站,显示回收站内文件信息,若点击清除回收站,进行确认是否清除,若确认清除则清空回收站并且刷新回收站页面。在回收站中勾选文件按钮,点击还原文件则将文件还原到云盘的原位置,并且提示还原成功。如图18、图19所示。

图18 清空回收站界面

图19 还原文件界面

8.文件在线预览功能

在个人云盘主页面选择文件判断文件的类型,若为图片、文本、音频、视频则直接显示文件内容。若为office文件,则获取百度云id,打开id对应的文档,可以在线查看文件内容。如图20、图21、图22、图23和图24所示。

图20 在线预览文本文件界面

图21 在线预览图片文件界面

图22 在线预览音频文件界面

图23 在线预览视频文件界面

图24 在线预览Office文档文件界面

四.部分代码实现

Doc2HtmlUtil.java

package cn.allene.yun.utils;

import java.io.File;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ConnectException;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;

/**
 * 利用jodconverter(基于OpenOffice服务)将文件(*.doc、*.docx、*.xls、*.ppt)转化为html格式或者pdf格式,
 * 使用前请检查OpenOffice服务是否已经开启, OpenOffice进程名称:soffice.exe | soffice.bin
 */
public class Doc2HtmlUtil 
	private static Doc2HtmlUtil doc2HtmlUtil;

	/** * 获取Doc2HtmlUtil实例 */
	public static synchronized Doc2HtmlUtil getDoc2HtmlUtilInstance() 
		if (doc2HtmlUtil == null) 
			doc2HtmlUtil = new Doc2HtmlUtil();
		
		return doc2HtmlUtil;
	

	/*** 转换文件成pdf */
	public String file2pdf(InputStream fromFileInputStream, String toFilePath, String type) throws IOException 
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
		String timesuffix = sdf.format(date);
		String docFileName = null;
		String htmFileName = null;
		if (".doc".equals(type)) 
			docFileName = "doc_" + timesuffix + ".doc";
			htmFileName = "doc_" + timesuffix + ".pdf";
		 else if (".docx".equals(type)) 
			docFileName = "docx_" + timesuffix + ".docx";
			htmFileName = "docx_" + timesuffix + ".pdf";
		 else if (".xls".equals(type)) 
			docFileName = "xls_" + timesuffix + ".xls";
			htmFileName = "xls_" + timesuffix + ".pdf";
		 else if (".ppt".equals(type)) 
			docFileName = "ppt_" + timesuffix + ".ppt";
			htmFileName = "ppt_" + timesuffix + ".pdf";
		 else 
			return null;
		
		File htmlOutputFile = new File(toFilePath + File.separatorChar + htmFileName);
		File docInputFile = new File(toFilePath + File.separatorChar + docFileName);
		if (htmlOutputFile.exists())
			htmlOutputFile.delete();
		htmlOutputFile.createNewFile();
		if (docInputFile.exists())
			docInputFile.delete();
		docInputFile.createNewFile();
		/*** 由fromFileInputStream构建输入文件 */
		try 
			OutputStream os = new FileOutputStream(docInputFile);
			int bytesRead = 0;
			byte[] buffer = new byte[1024 * 8];
			while ((bytesRead = fromFileInputStream.read(buffer)) != -1) 
				os.write(buffer, 0, bytesRead);
			
			os.close();
			fromFileInputStream.close();
		 catch (IOException e) 
			e.printStackTrace();
		
		// 连接服务(端口号:8100)
		OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
		try 
			connection.connect();
			System.out.println("连接openoffice服务成功");
		 catch (ConnectException e) 
			System.err.println("文件转换出错,请检查OpenOffice服务是否启动。");
		
		// convert 转换
		DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
		converter.convert(docInputFile, htmlOutputFile);
		System.out.println("转换成功");
		connection.disconnect();
		// 转换完之后删除word文件
		docInputFile.delete();
		return htmFileName;
	

FileController.java

package cn.allene.yun.controller;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import cn.allene.yun.pojo.FileCustom;
import cn.allene.yun.pojo.RecycleFile;
import cn.allene.yun.pojo.Result;
import cn.allene.yun.pojo.SummaryFile;
import cn.allene.yun.service.FileService;
import cn.allene.yun.service.UserService;
import net.sf.json.JSONObject;
@Controller
@RequestMapping("/file")
public class FileController 
	@Autowired
	private HttpServletRequest request;
	@Autowired
	private FileService fileService;
	@Autowired
	private UserService userService;
	/**
	 * 文件上传
	 * 
	 * @param files
	 *            文件名(多个)
	 * @param currentPath
	 *            当前路径
	 * @return Json对象
	 */
	@RequestMapping("/upload")
	public @ResponseBody Result<String> upload(
			@RequestParam("files") MultipartFile[] files, String currentPath) 
		try 
			fileService.uploadFilePath(request, files, currentPath);
		 catch (Exception e) 
			return new Result<>(301, false, "上传失败");
		
		return new Result<String>(305, true, "上传成功");
	
	/**
	 * 文件下载
	 * 
	 * @param currentPath
	 *            当前路径
	 * @param downPath
	 *            文件名
	 * @param username
	 *            用户名
	 * @return 文件下载流
	 */
	@RequestMapping("/download")
	public ResponseEntity<byte[]> download(String currentPath,
			String[] downPath, String username) 
		try 
			String down = request.getParameter("downPath");
			File downloadFile = fileService.downPackage(request, currentPath,
					downPath, username);
			HttpHeaders headers = new HttpHeaders();
			headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
			String fileName = new String(downloadFile.getName().getBytes(
					"utf-8"), "iso-8859-1");
			headers.setContentDispositionFormData("attachment", fileName);
			byte[] fileToByteArray = org.apache.commons.io.FileUtils
					.readFileToByteArray(downloadFile);
			fileService.deleteDownPackage(downloadFile);
			return new ResponseEntity<byte[]>(fileToByteArray, headers,
					HttpStatus.CREATED);
		 catch (Exception e) 
			e.printStackTrace();
			return null;
		
	
	/**
	 * 获取文件列表
	 * 
	 * @param path
	 *            路径
	 * @return Json对象
	 */
	@RequestMapping("/getFiles")
	public @ResponseBody Result<List<FileCustom>> getFiles(String path) 
		String realPath = fileService.getFileName(request, path);
		List<FileCustom> listFile = fileService.listFile(realPath);
		Result<List<FileCustom>> result = new Result<List<FileCustom>>(325,
				true, "获取成功");
		result.setData(listFile);
		return result;
	
	/**
	 * 获取分享文件列表
	 * 
	 * @param path
	 *            路径
	 * @param username
	 *            用户名
	 * @return Json对象
	 */
	@RequestMapping("/getShareFiles")
	public @ResponseBody Result<List<FileCustom>> getFiles(String path,
			String username) 
		String realPath = fileService.getFileName(request, path, username);
		List<FileCustom> listFile = fileService.listFile(realPath);
		Result<List<FileCustom>> result = new Result<List<FileCustom>>(326,
				true, "获取成功");
		result.setData(listFile);
		return result;
	
	/**
	 * 新建文件夹
	 * 
	 * @param currentPath
	 *            当前路径
	 * @param directoryName
	 *            文件夹名
	 * @return Json对象
	 */
	@RequestMapping("/addDirectory")
	public @ResponseBody Result<String> addDirectory(String currentPath,
			String directoryName) 
		try 
			fileService.addDirectory(request, currentPath, directoryName);
			return new Result<>(336, true, "添加成功");
		 catch (Exception e) 
			return new Result<>(331, false, "添加失败");
		
	
	/**
	 * 删除文件夹
	 * 
	 * @param currentPath
	 *            当前路径
	 * @param directoryName
	 *            文件夹名
	 * @return Json对象
	 */
	@RequestMapping("/delDirectory")
	public @ResponseBody Result<String> delDirectory(String currentPath,
			String

javaweb基于ssm框架学生信息管理(成绩)系统设计与实现(项目源码+报告设计说明)

1 开发环境及所用知识体系 4
1.1 开发平台、开发工具、应用服务器的介绍 4
2 系统需求 4
2.1 系统总体需求说明 4
2.2 系统流程图 4
2.3 功能结构图 5
3 技术选型 6
3.1 所使用技术的简要介绍 6
4 功能模块 8
4.1 学生信息维护 8
4.1.1 数据库设计 8
4.1.2 模块功能及流程图 8
4.1.3 程序层次结构 9
4.1.4 程序界面截图及说明 12
4.1.5 主要代码及说明 13
4.2 教师信息维护 17
4.2.1 数据库设计 17
4.2.2 模块功能 17
4.2.3 程序界面截图及说明 17
4.2.4 主要代码及说明 19
4.3 院系信息维护 20
4.3.1 数据库设计 20
4.3.2模块功能及流程图 20
4.3.3 程序界面截图及说明 21
4.3.4主要代码及说明 21
4.4 班级信息维护 22
4.4.1 数据库设计 22
4.4.2 模块功能及流程图 22
4.4.3程序界面截图及说明 23
4.4.4主要代码及说明 24
4.5 课程信息维护 24
4.5.1 数据库设计 24
4.5.2 模块功能及流程图 25
4.5.3程序界面截图及说明 25
4.5.4主要代码及说明 26
4.6 选课信息维护 28
4.6.1 数据库设计 28
4.6.2 模块功能 28
4.6.3程序界面截图及说明 28
4.6.4主要代码及说明 29
4.7 成绩信息维护 29
4.7.1 数据库设计 29
4.7.2 模块功能 30
4.7.3程序界面截图及说明 30
4.7.4主要代码及说明 30
4.8 权限信息维护 32
4.8.1 数据库设计 32
4.8.2 模块功能 32
4.8.3程序界面截图及说明 33
4.8.4主要代码及说明 34
5实训总结 37
5.1 总结、自我评价及感想 37

1 开发环境及所用知识体系
1.1开发平台、开发工具、应用服务器的介绍
开发平台:Windows
开发工具:idea+mySql
应用服务器:Apache Tomcat 8.0
2 系统需求
2.1 系统总体需求说明
学生成绩管理系统主要用于学校学生成绩信息管理,能实现学生、老师、院系、班级、课程的增删改查操作,同时学生能进行选课和退课操作,老师能对学生的成绩录入和修改操作。
2.2 系统流程图

2.3 功能结构图

项目部分截图如下:











项目源码及报告:请点击下载》》》

以上是关于软件应用开发基于SSM框架的共享云盘系统设计与实现的主要内容,如果未能解决你的问题,请参考以下文章

基于SSM框架的旅游购票系统的设计与实现

基于javaweb基于ssm框架学生信息管理(选课)系统设计与实现(项目源码)

基于SSM框架的商品实时秒杀系统的设计与实现.rar(论文设计+项目源码) 采用SSM+redis缓存+rabbitMS消息队列

基于ssm框架的文件管理平台的设计与实现.rar(毕业设计论文+项目源码)

基于SSM框架的母婴用品商城系统的设计与实现(附带源码论文)

基于SSM框架的母婴用品商城系统的设计与实现(附带源码论文)