导航菜单
首页 >  研究生论文答辩问题及答案解析模板  > 计算机毕业答辩问题汇总【10000血书总结】

计算机毕业答辩问题汇总【10000血书总结】

方面                                       答辩问题类型

系统设计和架构方面问题

系统功能实现方面

技术选型和实现细节方面

系统性能和安全方面

未来展望和改善系统方面

01、你的系统架构是什么?描述一下?

学生:该系统采用了前后端分离的架构,前端使用Vue.js框架,后端使用SpringBoot框架,是一个完全前后端分离的框架,前后端通信采用RESTfulAPI。通过这种前后端分离的架构,可以实现前端和后端的独立开发和部署,提高了系统的可维护性和扩展性,同时也提供了更好的用户体验和系统性能。

02、数据库是如何设计的?数据库的表结构是怎样的?

学生:该系统主要是实现XXXX的展示,XXXX信息的介绍、用户可以购买商品、管理自己的购物车以及订单等功能。所以系统中需要的实体包括用户、特产、订单、购物车、地址、公告、信息介绍等。

数据库表的话,每个表负责存储特定类型的数据,例如:主键可以使用长整型Long表示、价格可以用Double类型、长文本可以用Longtext、文本可以用varchar、时间用datetiem表示 等。并且这些表之间通过外健关系建立连接,可以通过关联表来解决数据冗余问题,通过join关联查询到达数据的联表。

03、你采用了哪些设计模式或者架构模?为什么选择这些模式?

1、XXXX系统是采用完全前后端分离的架构,就是前端和后端是独立开发、独立部署的。这样可以实现前后端的解耦,提高系统的灵活性和可维护性。前端使用Vue.js等现代框架来实现用户界面,后端使用企业级应用SpringBoot等框架来实现业务逻辑和数据处理。

2、MVC(Model-View-Controller)模式:在传统的开发中,一般都会采用这种包的设计模式,在MVC模式 中,Model负责处理业务逻辑和数据操作,View负责展示用户界面,Controller负责接收用户请求并调用Model和View。它是一种软件架构模式,用于将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。这种分离的设计模式有助于提高代码的可维护性、可扩展性和重用性。

模型(Model):负责处理应用程序的数据逻辑,包括数据的获取、存储、处理和验证。模型通常表示应用程序的核心业务逻辑,与数据库或其他数据源交互来获取数据。

视图(View):负责呈现模型的数据给用户,通常是用户界面的展示部分。视图可以是网页、移动应用界面、报表等形式,用于展示数据给用户并接收用户输入。

控制器(Controller):负责处理用户输入和控制应用程序的流程。控制器接收用户的请求,调用相应的模型进行数据处理,然后选择合适的视图来呈现结果给用户。

MVC模式将应用程序分为三个独立的部分,使得各部分之间的耦合度降低,提高了代码的可维护性和可测试性。同时,MVC模式也有助于团队协作开发,因为开发人员可以专注于各自的领域而不会相互干扰。

总的来说,MVC模式是一种有效的软件架构模式,适用于各种规模的应用程序开发,帮助开发人员更好地组织代码并提高开发效率。

3、RESTfulAPI:XXXX系统可能采用RESTfulAPI作为前后端通信的方式。RESTfulAPI是一种基于REST架构风格设计的API。REST(Representational State Transfer)是一种软件架构风格,用于构建分布式系统。RESTful API遵循REST原则,通过HTTP协议定义了一组规范和约束,用于客户端和服务器之间的通信。。最终实现json数据格式的交互。

4、依赖注入(DependencyInjection):在后端代码中采用依赖注入 来管理组件之间的依赖关系。通过依赖注入,可以实现组件的松耦合,提高代码的可测试性和可维护性。

5、单一职责原则(Single Responsibility Principle):在设计系统的各个组件和模块时,可能会遵循单一职责原则,即每个组件或模块应该只负责一项功能。这样可以降低组件之间的耦合度,提高代码的可重用性和可维护性。选择这些设计模式或架构模式的原因是为了提高系统的灵活性、可维护性和可扩展性,降低代码的耦合度,同时也能够更好地满足系统的功能需求和性能要求。

04、讲解一下你的主要功能? 学生:这个系统实现的主要功能有:用户可以浏览XXX商品、浏览景色的介绍、查看特产的详情、搜索商品、特产商品的购买、收藏特产、订单支付、浏览平台公告及参与社区讨论、管理个人信息、修改密码、修改头像等功能 管理员则可以在后台管理注册用户、商品、订单、公告、评论等信息,等等,自行叙说。

05、如何实现用户注册和登录的?

对于注册功能、用户需要输入账号和密码,来最终提交表单。然后对输入的内容进行了正则校验、确保输入合法的信息。同时为了确保密码的正确性、需要用户两次输入密码,防止出现输入密码错误的情况。两次密码输入不一致的情况下、系统给出提示。注册信息提交到后台后、后台首先对注册的账号进行校验、确保该账号未被注册过、如果该账号已经注册、则提示用户。对密码进行加密保存、确保用户数据的安全。

对于登录功能:用户需要输入基本的账号和密码、同时需要输入图片中的验证码、以及选择登录角色。

验证码:主要是通过三方工具接口直接生成随机字符串,通过前端传进来的字符串进行比对,这样可以减少对数据库的查询压力,减少脚本的行为,保护系统安全。

这些登录的基本信息提交到后台后、会进行数据的校验。首优先比对验证码、从数据库拿到生成的验证码、然后和用户输入的验证码比对。如果验证码校验不通过、返回错误信息到前台。前台弹窗展示。如果查询出来的用户信息和选择的登录角色不一致、则提示用户。

06、如何实现信息展示、购买和支付功能?

学生:信息展示功能的实现:后端将商品数据从数据库库中查询出来,然后返回json格式的数据给前端,前端通过html、css、js等技术 将数据具体展示。前台商品进行了模糊查询,分页查询、排序等等。在调用后端接口的时候,将分页数据一块传递到后台、后台在进行slq语句的编写时,将拿到的数据进行拼接。

带有等值查询,模糊查询,分页查询,排序,实际上会通过mybatis来实现对数据库的操纵,也就是orm映射,最终执行的sql,是这样的:

select * from table where username like %xx% limit 0,10 order by id desc;

购买功能的实现:信息详情页面、设置的的有购买按钮,用户点击购买按钮,可以将商品添加到购物车。添加商品到购物车这个过程、前端将用户的主键、商品的主键以及购买商品的数量数据一块发送给后端,后端将这些数据插入到数据库。将插入数据的结果、成功或者失败返回给前端。前端弹窗提示执行的结果。在购物车中,通过查询数据库,展示自己的商品。

支付功能的实现:用户已经填写购买商品的基本信息、例如联系人、联系方式、联系地址。生成一个待支付的订单、在点击订单表中的支付按钮的时候,前端将商品数据提交到后台、后台处理。后台具体的处理过程:1、首先查询用户的账户信息、如果余额不足,则返回提示信息给前端。如果账户余额足够、账户余额在减去购买商品的总价格后,修改用户的信息到数据库,同时需要查询商家的账号、将支付额金额打到商家的账户中。接着、需要扣除商品的库存和销量。扣除和添加销量数据之后,修改商品数据到数据库。将订单数据插入数据库。这个过程需要使用事务管理、确保每个操作都执行成功,如果执行失败、则数据需要回滚。

07、如何搜索和浏览?

学生:搜索功能的实现、用户在前台页面 输入商品的名称,然后点击搜索按钮,将数据发送到后端。后端进行数据的处理、在进行sql语句编写的时候,通过商品名称进行模糊查询。将查询出来的商品列表返回给前端、前端拿到数据后进行展示。如果没有查询到商品、后台也给出提示给前端。前端弹窗提示未查询到商品数据

08、你选择了哪些技术来开发这个系统?为什么选择这些技术?

1、Spring Boot :Spring Boot是一个用于快速开发基于Spring框架的应用程序的开源框架。它简化了Spring应用程序的配置和部署过程,提供了一种快速、简单的方式来构建独立的、生产级别的Spring应用程序。

2、Vue.js:作为前端框架,Vue.js是一个流行的JavaScript框架,用于构建用户界面和单页面应用程序。它是一种轻量级、灵活的框架,主要关注视图层的开发,可以与现有的项目整合,并且易于学习和使用。

3、MyBatis:作为持久层框架,MyBatis是一个开源的持久层框架,用于简化数据库访问操作。它通过将SQL语句与Java代码分离,提供了一种优雅的方式来操作数据库,同时避免了传统的ORM框架中的一些限制。

4、Shiro:作为安全框架,Apache Shiro是一个强大且易于使用的Java安全框架,用于身份验证、授权、加密和会话管理等安全功能。它提供了一套全面的安全解决方案,帮助开发者构建安全可靠的应用程序。

5、Axios:作为前端HTTP库,Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js 环境中发起 HTTP 请求。它是一个流行的 JavaScript 库,常用于前端开发中进行 AJAX 请求和与后端 API 进行通信。

6、MySQL:MySQL是一种流行的关系型数据库管理系统(RDBMS),是由MySQL AB公司开发的,后来被Oracle公司收购。MySQL以其高性能、可靠性和易用性而闻名,被广泛应用于Web应用程序和其他各种类型的软件开发中。

  我选择这些技术的原因主要包括以下几点:成熟稳定:这些技术都是成熟稳定的开源技术,有着广泛的应用和良好的重技术都有着丰富。

Vue js框架: 它的优势:易于上手,可以逐步应用到项目中的不同部分,组件化开发能够将页面拆分成独立的组件,提高了代码的可重用性和可维护性。响应式数据绑定:能够实时更新页面上的数据,提高了用户体验。劣势:缺少官方支持: Vue.js的官 方文档和社区支持相对其他框架较少

MyBatis框架: MyBatis是一个持久层框架,主要用于简化数据库操作和SQL编写。它具有以下优势:

1)灵活性:MyBatis允许开发者使用XML或注解来编写SQL语句,提供了灵活的配置方式,可以根据需求选择适合的方式进行SQL编写。 性能优化:MyBatis提供了一系列性能优化功能,如缓存机制、延迟加载等,可以有效提升数据库操作的性能和效率。 2)简化SQL编写:MyBatis通过SQL映射文件将Java对象和数据库表进行映射,简化了SQL语句的编写和管理,减少了重复代码。 3)易于学习和上手:MyBatis的API设计简洁明了,易于学习和上手,开发者可以快速上手并开始使用MyBatis进行数据库操作。 4)与传统JDBC兼容:MyBatis与传统的JDBC兼容,开发者可以直接使用JDBC的功能,同时又能够享受MyBatis提供的便利和优势。 5)动态SQL支持:MyBatis支持动态SQL,可以根据条件动态生成SQL语句,灵活应对不同的查询需求,减少了冗余代码。 6)可插拔式插件:MyBatis提供了可插拔式插件机制,开发者可以通过插件扩展MyBatis的功能,实现自定义的功能和逻辑。 7)与Spring等框架集成:MyBatis与Spring等主流框架集成良好,可以与其他框架无缝结合,实现更复杂的应用程序开发。 8)开源社区支持:MyBatis拥有活跃的开源社区,提供了丰富的文档、教程和支持资源,开发者可以在社区中获取帮助和交流经验。

总的来说,MyBatis是一个功能强大、灵活性高、易于学习和使用的持久层框架,适用于各种规模和类型的Java应用程序开发。通过使用MyBatis,开发者可以简化数据库操作、提升性能、减少重复代码,提高开发效率。

Shiro优势:强大的安全功能: Shiro提供 了身份验证、授权、加密等强大的安全功能,能够帮助保护系统的安全性。劣势:文档相对较少:相比于SpringSecurity等安全框架,Shiro的官方文档和社区支持相对较少,在使用和学习过程中需要花费

相关推荐: