(以下很多都是举例,具体根据自己的毕设进行修改)
1、系统设计和架构方面的问题
1.1你的系统的架构是什么样的?可以描述一下吗?
学生答:该系统采用了前后端分离的架构,前端使用Vue.js框架,后端使用SpringBoot框架,前后端通信采用RESTfulAPI。通过这种前后端分离的架构,可以实现前端和后端的独立开发和部署,提高了系统的可维护性和扩展性,同时也提供了更好的用户体验和系统性能。
1.2你是如何设计数据库的?数据库的表结构是怎样的?
1.3你的系统采用了哪些设计模式或者架构模式?为什么选择这些模式?
学生答:1、家乡特产系统可能采用前后端分离的架构模式,即前端和后端是独立开发、独立部署的。这样可以实现前后端的解耦,提高系统的灵活性和可维护性。前端使用Vue.js等现代框架来实现用户界面,后端使用SpringBoot等框架来实现业务逻辑和数据处理。
2、MVC(Model-View-Controller)模式:在MVC模式中,Model负责处理业务逻辑和数据操作,View负责展示用户界面,Controller负责接收用户请求并调用Model和View。这样可以实现前后端的分离,降低代码耦合度,提高代码的可读性和可维护性。
3、RESTfulAPI:家乡特产系统可能采用RESTfulAPI作为前后端通信的方式。RESTfulAPI是一种基于HTTP协议的轻量级、灵活的通信方式,可以实现前后端的解耦,支持多种客户端,提高系统的可扩展性和可维护性。
4、依赖注入(DependencyInjection):在后端代码中采用依赖注入来管理组件之间的依赖关系。通过依赖注入,可以实现组件的松耦合,提高代码的可测试性和可维护性。
5、单一职责原则(SingleResponsibilityPrinciple):在设计系统的各个组件和模块时,可能会遵循单一职责原则,即每个组件或模块应该只负责一项功能。这样可以降低组件之间的耦合度,提高代码的可重用性和可维护性。选择这些设计模式或架构模式的原因是为了提高系统的灵活性、可维护性和可扩展性,降低代码的耦合度,同时也能够更好地满足系统的功能需求和性能要求。
2.1你的系统有哪些主要功能?可以简要描述一下吗?
学生答:对于注册功能、用户需要输入账号和密码。对输入的内容进行了正则校验、确保输入合法的信息。同时为了确保密码的正确性、需要用户两次输入密码,防止出现输入密码错误的情况。两次密码输入不一致的情况下、系统给出提示。注册信息提交到后台后、后台首先对注册的账号进行校验、确保该账号未被注册过、如果该账号已经注册、则提示用户。对密码进行加密保存、确保用户数据的安全。
2.3你的系统如何实现特产的展示、购买和支付功能?
学生答:特产展示功能的实现:后端将商品数据从数据库库中查询出来,然后返回json格式的数据给前端,前端通过html、css、js等技术将数据具体展示。前台商品进行了分页查询、在调用后端接口的时候,将分页数据一块传递到后台、后台在进行slq语句的编写时,将拿到的数据进行拼接。
购买功能的实现:商品详情页面、设置的的有购买按钮,用户点击购买按钮,可以将商品添加到购物车。添加商品到购物车这个过程、前端将用户的主键、商品的主键以及购买商品的数量数据一块发送给后端,后端将这些数据插入到数据库。将插入数据的结果、成功或者失败返回给前端。前端弹窗提示执行的结果。在购物车中,通过查询数据库,展示自己的商品。
支付功能的实现:用户已经填写购买商品的基本信息、例如联系人、联系方式、联系地址。生成一个待支付的订单、在点击订单表中的支付按钮的时候,前端将商品数据提交到后台、后台处理。后台具体的处理过程:1、首先查询用户的账户信息、如果余额不足,则返回提示信息给前端。如果账户余额足够、账户余额在减去购买商品的总价格后,修改用户的信息到数据库,同时需要查询商家的账号、将支付额金额打到商家的账户中。接着、需要扣除商品的库存和销量。扣除和添加销量数据之后,修改商品数据到数据库。将订单数据插入数据库。这个过程需要使用事务管理、确保每个操作都执行成功,如果执行失败、则数据需要回滚。
2.4用户如何搜索和浏览特产?
学生答:搜索功能的实现、用户在前台页面输入商品的名称,然后点击搜索按钮,将数据发送到后端。后端进行数据的处理、在进行sql语句编写的时候,通过商品名称进行模糊查询。将查询出来的商品列表返回给前端、前端拿到数据后进行展示。如果没有查询到商品、后台也给出提示给前端。前端弹窗提示未查询到商品数据
3.1你选择了哪些技术来开发这个系统?为什么选择这些技术?
学生答:1、SpringBoot:作为后端框架,SpringBoot提供了快速开发和简化配置的特性,能够快速搭建基于Spring的应用程序,同时提供了丰富的生态系统和良好的文档支持。
2、Vue.js:作为前端框架,Vue.js是一个流行的JavaScript框架,具有轻量级、易学易用的特点,能够快速构建交互式的用户界面,并且支持组件化开发,有助于提高代码的可重用性和可维护性。3、MyBatis:作为持久层框架,MyBatis提供了灵活的SQL映射和强大的查询功能,能够方便地与各种数据库进行交互,并且能够有效地避免SQL注入等安全问题。
5、Axios:作为前端HTTP库,Axios能够在浏览器中发起异步HTTP请求,与后端进行通信,并处理请求和响应数据。它是基于Promise的,使用起来简单方便。
6、MySQL:作为关系型数据库,MySQL是一个开源的、稳定的、成熟的数据库系统,能够满足家乡特产系统对数据存储和管理的需求。
选择这些技术的原因主要包括以下几点:成熟稳定:这些技术都是成熟稳定的开源技术,有着广泛的应用和良好的社区支持。生态丰富:这些技术都有着丰富的生态系统和文档资源,能够满足系统开发和维护的需求。易用性:这些技术都具有良好的易用性和学习曲线,能够帮助开发团队快速上手并高效开发。可扩展性:这些技术都具有良好的可扩展性,能够满足系统未来的需求变化和扩展。通过选择这些技术,可以有效地提高系统的开发效率、稳定性和安全性,同时也能够更好地满足家乡特产系统的功能需求和性能要求。
3.2使用了哪些框架和库?它们的优劣势是什么?
Vue.js框架:优势:易于上手,可以逐步应用到项目中的不同部分,组件化开发能够将页面拆分成独立的组件,提高了代码的可重用性和可维护性。响应式数据绑定:能够实时更新页面上的数据,提高了用户体验。劣势:缺少官方支持:Vue.js的官方文档和社区支持相对其他框架较少
MyBatis框架:优势、MyBatis提供了灵活的SQL映射和强大的查询功能,能够方便地与各种数据库进行交互、MyBatis可以通过手动编写SQL来控制数据库操作,灵活性高,能够满足复杂的查询需求、MyBatis提供了多种性能优化手段,如缓存、批量操作等,能够提高数据库操作的效率。劣势:XML配置繁琐:MyBatis的XML配置文件相对繁琐,可能会增加开发和维护的复杂性
3.3如何处理用户之间的交互和数据传输?
学生答:前端交互:前端负责与用户进行交互,收集用户的输入信息,展示数据,并将用户的请求发送给后端。后端处理:后端接收前端发送的请求,处理用户的请求并返回响应数据。使用SpringBoot等后端框架编写控制器(Controller)来处理请求,实现业务逻辑和数据处理。通过MyBatis等持久层框架与数据库进行交互,进行数据的增删改查等操作。
数据传输:前后端之间通过RESTfulAPI或者其他通信协议进行数据传输。前端发送HTTP请求给后端,请求中包含了用户的操作信息或者查询条件。后端处理请求,根据请求的内容进行相应的业务处理,将处理结果封装成JSON格式的数据返回给前端
状态管理:使用Vuex等状态管理工具在前端进行状态管理,统一管理前端应用的状态,实现数据共享和状态持久化。在后端使用Session或者Token等方式进行用户身份认证和状态管理,确保用户的安全访问和数据隔离。
异常处理:在前后端都要进行异常处理,捕获可能发生的异常情况,返回合适的错误信息给用户。在后端可以通过异常处理器统一处理异常,返回统一的错误响应给前端,以提高系统的容错性和用户体验。
3.4如何处理特产的图片和描述信息?
学生答:特产图片通过资源映射的方式,将图片的访问路径存放到数据图、避免将整个图片放到数据库,减少数据库的访问压力。特产的描述信息在数据库中使用长文本的形式,实现数据的存储。
4、毕设选题推荐
以上是一些答辩技巧及话术,下面给大家推荐一些比较新颖也比较实用的毕设选题。