python和php做网站,网站建设属于销售费用,山西seo网站设计,私密浏览器直播项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑#xff01;
软件开发环境及开发工具#xff1a;
操作系统#xff1a;Windows 10、Windows 7、Windows 8
开发语言#xff1a;java
前端技术#xff1a;JavaScript、VUE.j… 项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑
软件开发环境及开发工具
操作系统Windows 10、Windows 7、Windows 8
开发语言java
前端技术JavaScript、VUE.js2.X、css3、vue-element-admin
后端技术springboot 2.7.7
开发工具IDEA
数据库MySQL 5.7.26版本号
数据库管理工具Navicat
jdkjava 8及以上
缓存redis 4.0.1 注每个学校每个老师对论文的格式要求不一样故本论文只供参考本论文页数达到60页以上字数在6000及以上。 基于JavaSpringMvcVue技术的慈善捐赠平台设计与实现 目录 第一章 绪论
1.1 研究背景
1.2 研究现状
1.3 研究内容
第二章 相关技术介绍
2.1 Java语言
2.2 HTML网页技术
2.3 MySQL数据库
2.4 Springboot 框架介绍
2.5 VueJS介绍
2.6 ElementUI介绍
第三章 系统分析
3.1 可行性分析
3.2 系统性能分析
3.3 系统功能分析
3.4 系统流程分析
第四章 系统设计
4.1 系统概要设计
4.2 系统结构设计
4.3 系统顺序图设计
4.4 系统关系图设计
4.5 数据库设计
第五章 系统详细设计
5.1 用户模板系统
5.1 登录
5.2 注册
5.3 首页
5.4 自愿活动
编辑
5.5 新闻
5.6 流言管理
5.7 个人中心
5.2 后台管理员管理
5.2.1 登录
5.2.2 自愿者用户管理
5.2.3 活动管理
5.2.4 留言板管理
5.2.5 站内新闻管理
第六章 部分代码实现
6.1 Spring boot 配置代码
6.2 用户管理及登录登出代码
6.3 Md5 加密算法代码
6.4 部分数据库代码
第七章 系统测试
7.1 测试定义
7.2 测试目的
7.3 测试方案
7.4 测试结论
第八章 结 论
致谢
附一、论文参考
附二、其他案例 附三、源码获取 第四章 系统设计 4.1 系统概要设计 系统采用B/S架构通过Web浏览器进行访问和操作。系统包括前台和后台两个主要部分
1、用户模块包括登陆与注册个人中心留言板志愿活动评论收藏表站内新闻活动类型报名活动。
2、管理员功能模块包括管理员的登录首页个人中心站内新闻管理志愿活动评论管理留言管理志愿活动管理收藏管理。
。
4.2 系统结构设计 整个系统是由多个功能模块组合而成的要将所有的功能模块都一一列举出来然后进行逐个的功能设计使得每一个模块都有相对应的功能设计然后进行系统整体的设计。
本系统结构图如图4-2所示。 4.3 系统顺序图设计
4.3.1 登录模块顺序图 登录模块主要满足了管理员以及用户的权限登录登录模块顺序图如图4-3所示。 4.3.2 添加信息模块顺序图 管理员以及用户登录后均可进行添加信息操作添加信息模块顺序图如图4-4所示。 4.4 系统关系图设计
本系统各类之间关系图如图4-2所示。 4.5 数据库设计 一个好的数据库可以关系到程序开发的优劣数据库设计离不开表结构的设计还有表与表之间的联系以及系统开发需要设计的数据表内容等信息。在进行数据库设计期间要结合实际情况来对数据库进行针对性的开发设计[12]。
4.4.1 数据库E-R图设计 本系统采用的是mysql数据库数据存储快因为个人博客管理系统主要的就是对信息的管理信息内容比较多这就需要好好的设计一个好的数据库分类要清楚不能添加信息的时候造成信息太过混乱设计好的数据库首先就需要先把各个实体之间的关系表达明确系统的E-R图如下图所示 4.4.2 逻辑结构设计 逻辑结构设计是把概念结构设计阶段画好的数据库ER图转换为关系模型。该系统的关系模型的逻辑结构是由主要一下关系模式组成具体的关系模式如下
1用户信息主键id、用户id、用户姓名、表名、角色id、角色名、密码、新增时间、过期时间
2角色信息主键id、角色名称、角色描述、新增时间、过期时间
3角色权限信息主键id、角色id、角色名称、关联的菜单id、关联的菜单名、新增时间、过期时间
4菜单信息主键id、菜单名称、菜单访问路径、菜单描述、上级菜单id、新增时间、过期时间
5文章信息主键id、创建日期、文章名称、文章内容描述、文章类型、文章标签、文章点赞数、文章访问数、父节点id、上传用户id、上传用户姓名、状态、文章审核状态、审核人id、审核人
6评论信息主键id、创建日期、文章id、文章名、评论人id、评论人姓名、评论内容、是否审核、评论时间等 第五章 系统详细设计
本系统包括
1、用户模块包括登陆与注册个人中心留言板志愿活动评论收藏表站内新闻活动类型报名活动。
2、管理员功能模块包括管理员的登录首页个人中心站内新闻管理志愿活动评论管理留言管理志愿活动管理收藏管理。
5.1 用户模板系统
5.1 登录 5.2 注册 5.3 首页 5.4 自愿活动 5.5 新闻 5.6 流言管理 5.7 个人中心 5.2 后台管理员管理
5.2.1 登录 5.2.2 自愿者用户管理 5.2.3 活动管理 5.2.4 留言板管理 5.2.5 活动报名管理 5.2.5 站内新闻管理 第六章 部分代码实现
6.1 Spring boot 配置代码
# Tomcat
server:tomcat:uri-encoding: UTF-8port: 8080servlet:context-path: /springboot0t8qlspring:datasource:driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/springboot0t8ql?useUnicodetruecharacterEncodingutf-8useJDBCCompliantTimezoneShifttrueuseLegacyDatetimeCodefalseserverTimezoneGMT%2B8username: rootpassword: 123456# driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseNamespringboot0t8ql
# username: sa
# password: 123456servlet:multipart:max-file-size: 10MBmax-request-size: 10MBresources:static-locations: classpath:/testStatic/,classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/#mybatis
mybatis-plus:mapper-locations: classpath*:mapper/*.xml#实体扫描多个package用逗号或者分号分隔typeAliasesPackage: com.entityglobal-config:#主键类型 0:数据库ID自增, 1:用户输入ID,2:全局唯一ID (数字类型唯一ID), 3:全局唯一ID UUID;id-type: 1#字段策略 0:忽略判断,1:非 NULL 判断),2:非空判断field-strategy: 2#驼峰下划线转换db-column-underline: true#刷新mapper 调试神器refresh-mapper: true#逻辑删除配置logic-delete-value: -1logic-not-delete-value: 0#自定义SQL注入器sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjectorconfiguration:map-underscore-to-camel-case: truecache-enabled: falsecall-setters-on-nulls: true#springboot 项目mybatis plus 设置 jdbcTypeForNull (oracle数据库需配置JdbcType.NULL, 默认是Other)
jdbc-type-for-null: null
6.2 用户管理及登录登出代码
/*** 用户账户用于保存用户登录信息(User)表控制层*/
Slf4j
RestController
RequestMapping(user)
public class UserController extends BaseControllerUser, UserService {/*** 服务对象*/Autowiredpublic UserController(UserService service) {setService(service);}/*** Token服务*/Autowiredprivate AccessTokenService tokenService;Autowiredprivate UserGroupService userGroupService;/*** 注册* param user* return*/PostMapping(register)public MapString, Object signUp(RequestBody User user) {// 查询用户MapString, String query new HashMap();query.put(username,user.getUsername());List list service.select(query, new HashMap()).getResultList();if (list.size()0){return error(30000, 用户已存在);}user.setUserId(null);user.setPassword(service.encryption(user.getPassword()));service.save(user);return success(1);}/*** 找回密码* param form* return*/PostMapping(forget_password)public MapString, Object forgetPassword(RequestBody User form,HttpServletRequest request) {JSONObject ret new JSONObject();String username form.getUsername();String code form.getCode();String password form.getPassword();// 判断条件if(code null || code.length() 0){return error(30000, 验证码不能为空);}if(username null || username.length() 0){return error(30000, 用户名不能为空);}if(password null || password.length() 0){return error(30000, 密码不能为空);}// 查询用户MapString, String query new HashMap();query.put(username,username);Query select service.select(query, service.readConfig(request));List list select.getResultList();if (list.size() 0) {User o (User) list.get(0);JSONObject query2 new JSONObject();JSONObject form2 new JSONObject();// 修改用户密码query2.put(user_id,o.getUserId());form2.put(password,service.encryption(password));service.update(query, service.readConfig(request), form2);return success(1);}return error(70000,用户不存在);}/*** 登录* param data* param httpServletRequest* return*/PostMapping(login)public MapString, Object login(RequestBody MapString, String data, HttpServletRequest httpServletRequest) {log.info([执行登录接口]);String username data.get(username);String email data.get(email);String phone data.get(phone);String password data.get(password);List resultList null;MapString, String map new HashMap();if(username ! null .equals(username) false){map.put(username, username);resultList service.select(map, new HashMap()).getResultList();}else if(email ! null .equals(email) false){map.put(email, email);resultList service.select(map, new HashMap()).getResultList();}else if(phone ! null .equals(phone) false){map.put(phone, phone);resultList service.select(map, new HashMap()).getResultList();}else{return error(30000, 账号或密码不能为空);}if (resultList null || password null) {return error(30000, 账号或密码不能为空);}//判断是否有这个用户if (resultList.size()0){return error(30000,用户不存在);}User byUsername (User) resultList.get(0);MapString, String groupMap new HashMap();groupMap.put(name,byUsername.getUserGroup());List groupList userGroupService.select(groupMap, new HashMap()).getResultList();if (groupList.size()1){return error(30000,用户组不存在);}UserGroup userGroup (UserGroup) groupList.get(0);//查询用户审核状态if (!StringUtils.isEmpty(userGroup.getSourceTable())){String sql select examine_state from userGroup.getSourceTable() WHERE user_id byUsername.getUserId();String res String.valueOf(service.runCountSql(sql).getSingleResult());if (resnull){return error(30000,用户不存在);}if (!res.equals(已通过)){return error(30000,该用户审核未通过);}}//查询用户状态if (byUsername.getState()!1){return error(30000,用户非可用状态不能登录);}String md5password service.encryption(password);if (byUsername.getPassword().equals(md5password)) {// 存储Token到数据库AccessToken accessToken new AccessToken();accessToken.setToken(UUID.randomUUID().toString().replaceAll(-, ));accessToken.setUser_id(byUsername.getUserId());tokenService.save(accessToken);// 返回用户信息JSONObject user JSONObject.parseObject(JSONObject.toJSONString(byUsername));user.put(token, accessToken.getToken());JSONObject ret new JSONObject();ret.put(obj,user);return success(ret);} else {return error(30000, 账号或密码不正确);}}/*** 修改密码* param data* param request* return*/PostMapping(change_password)public MapString, Object change_password(RequestBody MapString, String data, HttpServletRequest request){// 根据Token获取UserIdString token request.getHeader(x-auth-token);Integer userId tokenGetUserId(token);// 根据UserId和旧密码获取用户MapString, String query new HashMap();String o_password data.get(o_password);query.put(user_id ,String.valueOf(userId));query.put(password ,service.encryption(o_password));Query ret service.count(query, service.readConfig(request));List list ret.getResultList();Object s list.get(0);int count Integer.parseInt(list.get(0).toString());if(count 0){// 修改密码MapString,Object form new HashMap();form.put(password,service.encryption(data.get(password)));service.update(query,service.readConfig(request),form);return success(1);}return error(10000,密码修改失败);}/*** 登录态* param request* return*/GetMapping(state)public MapString, Object state(HttpServletRequest request) {JSONObject ret new JSONObject();// 获取状态String token request.getHeader(x-auth-token);// 根据登录态获取用户IDInteger userId tokenGetUserId(token);log.info([返回userId] {},userId);if(userId null || userId 0){return error(10000,用户未登录!);}// 根据用户ID获取用户MapString,String query new HashMap();query.put(user_id ,String.valueOf(userId));// 根据用户ID获取Query select service.select(query,service.readConfig(request));List resultList select.getResultList();if (resultList.size() 0) {JSONObject user JSONObject.parseObject(JSONObject.toJSONString(resultList.get(0)));user.put(token,token);ret.put(obj,user);return success(ret);} else {return error(10000,用户未登录!);}}/*** 登录态* param request* return*/GetMapping(quit)public MapString, Object quit(HttpServletRequest request) {String token request.getHeader(x-auth-token);JSONObject ret new JSONObject();MapString, String query new HashMap(16);query.put(token, token);try{tokenService.delete(query,service.readConfig(request));}catch (Exception e){e.printStackTrace();}return success(退出登录成功);}/*** 获取登录用户ID* param token* return*/public Integer tokenGetUserId(String token) {log.info([获取的token] {},token);// 根据登录态获取用户IDif(token null || .equals(token)){return 0;}MapString, String query new HashMap(16);query.put(token, token);AccessToken byToken tokenService.findOne(query);if(byToken null){return 0;}return byToken.getUser_id();}/*** 重写add* return*/PostMapping(/add)Transactionalpublic MapString, Object add(HttpServletRequest request) throws IOException {MapString,Object map service.readBody(request.getReader());map.put(password,service.encryption(String.valueOf(map.get(password))));service.insert(map);return success(1);}}
6.3 Md5 加密算法代码
public class MD5Utils {private static final Logger logger LoggerFactory.getLogger(MD5Utils.class);// 全局数组private final static String[] strDigits {0, 1, 2, 3, 4, 5,6, 7, 8, 9, a, b, c, d, e, f};/*** 16进制字符*/private final static char hexdigits[] {0, 1, 2, 3, 4, 5, 6, 7, 8,9, a, b, c, d, e, f};/*** 对文件全文生成MD5摘要** param file 要加密的文件* return MD5摘要码*/public static String getMD5ForFile(String filePath) {FileInputStream fis null;MessageDigest md null;try {md MessageDigest.getInstance(MD5);File file new File(filePath);if (!file.exists()) {return ;}fis new FileInputStream(file);byte[] buffer new byte[4096];int length -1;while ((length fis.read(buffer)) ! -1) {md.update(buffer, 0, length);}byte[] b md.digest();return byteToHexString(b);} catch (Exception ex) {logger.error(获取MD5信息发生异常 ex.toString());return null;} finally {try {if (null ! fis) {fis.close();}} catch (IOException e) {logger.error(获取MD5信息发生异常 e.toString());}}}/*** 把byte[]数组转换成十六进制字符串表示形式** param tmp 要转换的byte[]* return 十六进制字符串表示形式*/private static String byteToHexString(byte[] tmp) {String s;char str[] new char[16 * 2];int k 0;for (int i 0; i 16; i) {byte byte0 tmp[i];str[k] hexdigits[byte0 4 0xf];str[k] hexdigits[byte0 0xf];}s new String(str);return s;}// 返回形式为数字跟字符串private static String byteToArrayString(byte bByte) {int iRet bByte;// System.out.println(iRetiRet);if (iRet 0) {iRet 256;}int iD1 iRet / 16;int iD2 iRet % 16;return strDigits[iD1] strDigits[iD2];}// 返回形式只为数字private static String byteToNum(byte bByte) {int iRet bByte;System.out.println(iRet1 iRet);if (iRet 0) {iRet 256;}return String.valueOf(iRet);}// 转换字节数组为16进制字串private static String byteToString(byte[] bByte) {StringBuffer sBuffer new StringBuffer();for (int i 0; i bByte.length; i) {sBuffer.append(byteToArrayString(bByte[i]));}return sBuffer.toString();}public static String GetMD5Code(String strObj) {if (StringUtils.isEmpty(strObj)) {return ;}String resultString null;try {resultString new String(strObj);MessageDigest md MessageDigest.getInstance(MD5);// md.digest() 该函数返回值为存放哈希值结果的byte数组resultString byteToString(md.digest(strObj.getBytes()));} catch (NoSuchAlgorithmException ex) {ex.printStackTrace();}return resultString;}}
6.4 部分数据库代码 第七章 系统测试 一个系统设计好后就会进入测试阶段测试的目标是检验设计好的网站是否可以正常无误的运行尽可能的发现网站的问题已使后期网站投入使用后网站尽少出错。
7.1 测试定义 系统测试主要是判断系统是否可以正常运行功能模块是否可以实现操作。程序代码中是否有错误出现。测试程序是开发过程中的一个主要问题。就算系统完成的再好再进行程序测试时也会也会发现一个重来没有被发现的错误信息。
测试不仅是系统开发的开始而且应该贯穿整个系统的整个生命周期。评估系统质量的方法不局限于系统编码和过程应该与软件设计工作和历史需求分析密切相关。系统错误不一定是代码错误可能是阶段的设计摘要和设计细节存在问题问题也可能出现在需求分析阶段[13]。从实际情况来看最初的问题很可能是一个小错误根据按钮的原理按钮后的按钮位错将是所有位错。该系统的原因也同样适用随着后续的开发工作误差将越来越严重。因此就应该对系统进行测试在一开始就发现系统中存在的问题就能保证以后系统能够正常稳定的运行。在测试系统中开发人员应该站在用户的角度来处理测试工作而现在主要的测试方法是黑盒测试。测试的目的可以概括为以下几点:首先用户界面和用户需求是一致的设置界面和设计风格统一;第二创新设计接口规范设计标准具有独特的审美特征;最后人类传统的接口以满足审美需求不能盲目地追求一种独特的合理的规划布局符合审美标准。
7.2 测试目的 测试的目的在于要对系统的稳定和可操作性能进行对照检查。对于软件的开发利用最终的目的在最后的测试和试用这是一个不可缺少的重要环节。对于软件开发者而言在对每一个单独的功能进行编排时候都要有单独的测试并通过测试阶段才可以研发多个功能性软件这样既缩短了研发时间也可以在的单个的早期测试中发现问题以免融合后的软件在查找问题时就很难快速解决或者急速定位问题。
本系统开发设计完成后需要对其进行系统测试测试的主要目的就是发现并找出系统中存在的问题并及时的进行解决确保系统可以正常稳定的运行下去在进行系统测试的时候在一定要非常的认真、仔细切记不能粗心不能放过一个漏洞测试时候一定不要着急要按照之前指定好的测试步骤一步一步进行并且将测试的结果进行详细的记录我们在进行测试的时候做好选择自动化的测试这样既可以节省时间而且也能确保测试的准确性如果采用人工测试的方法就不会这么的方便由于人工测试有很多不确定的因素在测试过程中很可能会出现一些问题用机器测试就不会出现任何的问题而且机器不会疲惫会一直二等工作下去。在测试的时候一定要非常专注时刻关注着测试的结果一但发现异常及时进行修改最后测试完之后的文档应该保存下来方便以后测试时用到。系统测试的方法有很多对于本个人博客管理系统的测试我们使用了测试用得最多的黑盒测试方法来对该系统进行测试。
7.3 测试方案 对测试计划的把握是测试方案的重中之重。所有的技术难点应该都被包含在这个测试计划之中。而且我们要保证能与目标形成一致性以至于能够测试出一些主要存在的错误和一些错误的漏洞。可以完美解决这些问题就只有白盒测试或者黑盒测试[14]。
构造测试是白盒测试的另一个名字了解与分析程序的结构以及性能功用的从而我们可以得到最终想要的结果并且观察出是不是每一条程序都能得到。
性能测试是黑盒测试别称程序本身的运作通过程序的进程来观察主要是看一下程序是不是能够像我们预期的目标那样发展看一看我们的程序最终能不能完整的得到我们最后想要的功能和储存想得到的数据到最后看一下我们的这个程序完整性能不能达到要求。
1模块测试
单元测试就是模块测试顾名思义就是测试每个模块所承担的功能是否能够实现这个测试就是为了找出代码在实际的设计运转中某一些小的程序所出现的偏差很好地改正这些错误就说明我们模块测试进行很成功过。
2集成测试
集成测试就是对系统的测试以及对他子系统的一些性能测试他检查的事系统的包装程序信息。找出其中的问题。他的优势主要有以下这几点
软件耗费较少。
可以提前发现端口的错误。
更好的地位系统中错误的位置。
从底部往上面进行的方案针对于偏下层的结构而中间的结构就采用折中的方法。
3验收测试
终于到了结尾性的工作了。就是为了给用户看一下我们的系统功能是否达到了预期的效果。我采用了性能测试也就是黑盒测试对系统进行测试。
其结果是分别是
有一定的差异在用户的需求。
再者就是结果与之差不了多少。
到了最后了我们发现的问题都是与用户的需求存在一定的关联。
1、登录测试
测试点登录
测试的目标输入账号密码以及验证码后系统会自动进行验证是否正确。
所用的环境Windows10和IE浏览器。
输入信息用户名、密码。
步骤
1首先我们打来浏览器进入该系统的登录界面。
2在进入页面登录部分以后可以进行对用户名、密码进行测试具体测试输入情况如下表6.1所示。
表6.1 登录测试
序号用户名输入密码输入期望结果1155462192251244566提示“用户名或者密码错误或账号未经审核”2aaaaa123456提示“用户名或密码错误或者账号未经审核”315546219225hangguowei登陆成功
7.4 测试结论 在线学习交流平台按设计要求基本都可以达到此系统具有完整的软件功能良好的用户界面能够正确的处理错误信息而且能够准确的提出错误的种类。但是系统测试时也出现了一些系统的不足和缺陷所以在今后的日子里我会对其视觉上的不足作出修改其次系统的代码和数据库出现了非常多的冗余现象都是因为对编程技术的应用不够熟练在日后我会加强自己的自身学习和能力减少这样的冗余现象。
经过对上述的测试结果分析本系统无论是在技术方面还是操作方面还是经济方面都是完全可以实行的并且经过测试该系统操作简单所有的功能都可以实现因此该系统可以满足人们的使用需求值得被推广。
总体说来软件通过测试。
第八章 结 论
本文研究了在线学习交流平台系统的设计与实现在文章开端首先对个研究背景、研究现状和研究内容作了简单的介绍然后通过系统分析引申出本系统研究的主要内容。
通过对java语言、springboot框架和mysql数据库的简介系统的说明了在线学习交流平台的设计与实现的可行性本文结论及研究成果如下实现了java与mysql相结合构建的在线学习交流平台通过本次对在线学习交流平台的设计与实现的研究与实现我感触到学习一门新技术最重要的是实践只有多动手才能尽快掌握它一个系统的开发经验是最重要的经验不足就难免会有许多考虑不周之处。要想吸引更多的用户系统的界面必须要美观、有特色、友好功能要健全。
由于在此之前对于java知识并不了解所以从一开始就碰到许多困难例如一开始的页面显示不规范、数据库连接有问题已经无法实现参数的传递等等不过通过我不断的查阅相关的资料以及向老师同学请教最后出现的所有的问题都得到了解决通过这次的系统开发我学到了很多的知识也明白了自己在哪些方面有不足的地方尤其是学会如何从大量的信息中筛选出所需有用的信息同时我更加深刻的体会到了虽然书本上的大部分知识都是有价值正确的但实际上每个人编程的思路和对数据处理的方法、思想都是不同的这就要求我们一定要通过实践才能找到解决问题的方案。在此次毕业设计活动中我不断的提高了自己也得到了宝贵的经验我相信这些对我以后的发展都会有很大帮助。
通过这次对在线学习交流平台的开发让我学到了更多的知识同时通过这次系统的设计也让我明白了自己在哪方面有不足以后加以学习争取可以开发住更多有用的适用的系统软件本次系统的设计提高了我的编程水平为了我今后系统的开发打下了结实的基础。
参考文献 [1] 高永强.基于深度学习的个性化推荐研究[J].工业控制计算机,2021,34(10):90-92. [2] 张安淇,李元旭.互联网知识共享平台信息过载效应与弱化机制——基于知乎的案例研究[J]. 情报科学,2020,38(01):24-2941.DOI:10.13833/j.issn.1007-7634.2020.01.004. [3] Xiaoqin Shelley Zhang,Xiaojie Zhang,Pavan Kaparthi. Combat Information Overload Problem in Social Networks With Intelligent Information-Sharing and Response Mechanisms[J]. IEEE Transactions on Computational Social Systems,2020. [4] 刘馨蔚.“它经济”升温 宠物吸金强劲[J].中国对外贸易,2021(04):54-55. [5] 狗民网.2020 年中国宠物行业白皮书. [6] Lou Feng,Ning Xin. E-Commerce Recommendation Technology Based on Collaborative Filtering Algorithm and Mobile Cloud Computing[J]. Wireless Communications and Mobile Computing,2022,2022. [7] Goldberg D, Nichols D.A, Oki B.M, et al. Using collaborative filtering to weave an information tapestry[J]. Communications of The ACM, 1992, 35(12): 61-70. [8] Konstan J.A, Miller B.N, Maltz D.A, et al. GroupLens: Applying collaborative filtering to Usenet news[J]. Communications of The ACM, 1997, 40(3): 77-87. [9] Venture Beat [EB/OB]. htp:/venturebeat.comn/ [2009-04]. [10] He X, Deng K, Wang X, et al. LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation[C]. In ACM 2020. [11] Wang Hulong,Shen Zesheng,Jiang Shuzhen,Sun Guang,Zhang Ren Jie. User-based Collaborative Filtering Algorithm Design and Implementation[J]. Journal of Physics: Conference Series,2021,1757(1).0 [12] 邓园园吴美香,潘家辉.基于物品的改进协同过滤算法及应用[].计算机系统应用 2019,28(01):184-189. [13] Jena, Kalyan Kumar,Bhoi, Sourav Kumar,Mallick, Chittaranjan,Jena, Soumya Ranjan,Kumar, Raghvendra,Long, Hoang Viet,Son, Nguyen Thi Kim. Neural model based collaborative filtering for movie recommendation system[J]. International Journal of Information Technology,2022(prepublish). [14] Zhang Kaihan,Wang Zhiqiang,Liang Jiye,Zhao Xingwang. A Bayesian matrix factorization model for dynamic user embedding in recommender system[J]. Frontiers of Computer Science,2022,16(5). [15] 吴青洋,程旭,邓程鹏,丁浩轩,张宏,林胜海.基于聚类和奖惩用户模型的协同过滤算法[J].计 算机系统应用,2020,29(08):135-143.DOI:10.15888/j.cnki.csa.007491. [16] 陆文超,崔海朋.一种基于融合自编码与神经网络的协同过滤算法[J].中国水运(下半 月),2022,22(03):18-20. [17] 王宁,沈正一,崔德龙,刘晴瑞.结合协同过滤与隐语义模型的视频推荐策略[J].湖南工程学院 学报(自然科学版),2021,31(04):40-43.DOI:10.15987/j.cnki.hgbjbz.2021.04.007. [18] Thomas N. Kipf and Max Welling. Semi-Supervised Classification with Graph Convolutional Networks. In ICLR.2017 [19] 张术梅.MVC架构下网站的设计与实现思考[J].信息记录材 料,2022,23(01):92-94.DOI:10.16009/j.cnki.cn13-1295/tq.2022.01.036. [20] R.Karthik,T.S.Sridhar,R.Sriram. Digital Food ordering system based on Spring Framework[J]. International Journal of Recent Technology and Engineering (IJRTE),2020,8(6). [21] 曹华山.SSM 框架在 Web 应用开发中的设计与实现[J].无线互联科技,2021,18(11):108-109. [22] 胡世洋,赖森林.浅论SSM框架在构建“微农”信息服务中的应用[J].电脑知识与技 术,2021,17(34):4-6.DOI:10.14004/j.cnki.ckt.2021.3589. [23] Di Lu,Yuping Qiu,Chun Qian,Xi Wang,Wei Tan. Design of Campus Resource Sharing Platform based on SSM Framework[J]. IOP Conference Series: Materials Science and Engineering,2019,490(6). [24] Xiaojie Guo,Tingmei Wang*. Design and Implementation of Graduate Information Management System Based on SSM Framework[J]. Journal of Simulation,2020,8(2). [25] Feng Leijie,Mu Zehui. Research on Mobile Point Exchange System Based on Collaborative Filtering Recommendation Algorithm[J]. International Journal of Advanced Network, Monitoring and Controls,2021,6(2). [26] 赖佳星.基于Bootstrap和JavaScript技术设计与实现简易Web计算器[J].科技资 讯,2022,20(01):13-16.DOI:10.16661/j.cnki.1672-3791.2110-5042-2874. [27] Haokun Qi, Qingyang Feng , Junyan Zhang. Technology and analysis of JSP-based merchandising system[J]. Scientific Journal of Intelligent Systems Research,2022,4(2). [28] 周公平.基于jQuery框架的Web前端开发设计方法研究[J].信息与电脑(理论 版),2022,34(05):128-130. [29] Liu Hongqing,Liu Yan. Research on Personalized Blog Customization System Based on AJAX[C]//.Proceedings of 2018 5th International Conference on Electrical Electronics Engineering and Computer Science(ICEEECS 2018).,2018:136-139. [30] 朱克武.Ajax技术在就业网站用户信息管理中的应用[J].电脑知识与技 术,2021,17(33):9-11.DOI:10.14004/j.cnki.ckt.2021.3303.
致谢 在毕业设计的过程中通过对在线学习交流平台的设计我受益匪浅。在这段时间里大学四年所学的知识得到了综合的运用掌握了软件开发的基本方法了解了当今软件开发的一些新技术。
本设计是在A老师的悉心指导和热情帮助下完成的。无论在理论上还是在实践中老师都给予我很大的帮助每当遇到困难时老师总是耐心的给我讲解老师认真负责的工作态度让我敬佩。值此论文完成之际特别向指导老师表示衷心的感谢和崇高的敬意谢谢他细心而又耐心地辅导使得我得以顺利的完成毕业设计开发工作同时也要感谢其他帮助过我的老师和同学他们在我完成设计过程中给予我很大的帮助在此一并表示感谢。
在论文编写过程中虽然反复推敲核证但由于本人水平有限加上时间紧促本文一定有不少缺点和不足恳请各位老师给予帮助和指正。
------------------------------------------------------------------ 附一、论文参考 附二、其他案例 附三、源码获取
大家点赞、收藏、关注、评论啦 、查看获取联系方式w908925859 打卡 文章 更新 308/ 365天 精彩专栏推荐订阅在下方专栏
Java项目精品实战案例《100套》
Java微信小程序项目实战《100套》