一.项目概述
本项目的选课系统以微信小程序为平台,采用线上收集数据,实时收集数据,避免了线下调查收集的弊端,节约了资源。并且客户群体大,市场大既能为广大学生提供一个高质量的受教体验,又能提高教学质量的机会。一方面,小程序完全是免费的一个平台,学生可以在手机上使用,完全不存在任何费用。另一方面,使用小程序存在便捷性,随时随地都已可以查看,不用使用电脑,这一定程度上也节约了我们的时间资源。
二、实现的相关技术
(1)云函数
在微信开发者的云开发平台上,我们不用通过太多的路径,我们只需编写我们的业务逻辑函数。并部署在云端,在云端运行的代码,因为云函数是在云端运行的代码,并且微信私有协议天然鉴权,所以以后开发者无需维护复杂的鉴权机制,并且也无需自己搭建和购买服务器,这样就简化了小程序后台的操作,轻松即可完成小程序后端的搭建,使我们更加便捷的完成微信小程序的开发。当我们要使用这些函数时,只需在对应的js页面进行云函数初始化。这样的功能给开发一些小型项目能带来便利以及实惠。
(2)微信开发者工具数据库
这是微信开发者工具自带的数据库,我们可以通过调用数据库提供的api直接对数据库进行操作,也可以通过后台管理员对数据库的数据进行导入和导出,但格式必须为json。当我们通过前端想对应数据表插入记录时,数据库还会自动帮我们生成一个_id字段,这是这条记录的唯一标识,也会自动生成_openid字段,通过这个字段来唯一标识记录是哪个用户添加的。所以这个数据库是一个既可在小程序前端操作,也能在云函数中读写的 JSON 数据库。
(3)微信开发者工具
微信开发者工作针对进行小程序开发的开发人员的开发工具,与其他开发工具类似,它也具有开发,预览,调试等主要功能,但是还有很多功能不够完善,用户体验一般[12]。在此工具中我们可以通过编辑wxml文件和xcss文件来渲染界面,相当于web开发中的.html文件和.css文件,通过.js文件和.json进行数据的处理。这也类似于web开发中的前端和后台。
(4)微信小程序开发文档
微信小程序开发文档是微信提供的一个学习文档,里面包括了组件,框架,以及相关的API。我们可以通过调用相关的api得到自己想要的功能,例如请求服务器的api,获取用户信息的api。也有一些关于云函数以及数据库操作的教程,这些都可以让开发人员尽快的上手小程序开发,为我们开发带来的便携性。
三、系统架构
本项目的基于MVC框架模式进行开发,即Model(模型)-View(视图)-Controller(控制器):V即View视图是指用户看到并与之交互的界面。比如我们平时上网所见的由WXML和XCSS编写而成的网页界面,或者软件app的用户交互界面。要注意的是,在视图层中其实没有真正的处理发生,这交由其他两层进行处理,它只是作为一种输出数据并允许用户操纵的方式。M即model模型是是应用程序中用于处理应用程序数据逻辑的部分。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,具有复用性,这样使得一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。正是由于它的存在,使得视图层与模型层能够解耦合。
因此我们用一张直观的图来描述其三者之间的关系:
四、系统分析
4.1、系统功能模块分析
该系统主要分为6个功能模块,每个功能模块都相互独立,实现解耦合。
4.2、业务流程分析
(1)为课程添加评论和推荐的流程
(2)学生用户查询自己评论的流程图
4.3、数据流程分析
(1)小程序主要功能的数据流程分析
五、数据库设计
5.1、E-R图设计
(1)课程评论与推荐小程序学生用户主要功能的E-R图设计如图
(2)用户实体,如图
(3)课程实体,如图
(4)院系实体,如图
(5)评论实体,如图
5.2、数据库表设计
(1)学生用户表
字段名 | 数据类型 | 代码 | 主键 | 是否允许为null |
openid | varchar(50) | Openid | 是 | 否 |
用户名 | varchar(50) | Nickname | 否 | 否 |
学号 | char(10) | Sno | 否 | 否 |
院系 | varchar(20) | Sdepartment | 否 | 否 |
电话号码 | varchar(15) | Phonenumber | 否 | 是 |
专业 | varchar(20) | Major | 否 | 否 |
(2)评论表
字段名 | 数据类型 | 代码 | 主键 | 是否允许为null |
openid | varchar(50) | openid | 是 | 否 |
评论内容 | varchar(255) | course_comment | 否 | 是 |
课程名称 | varchar(20) | coursename | 否 | 否 |
(3)课程表
字段名 | 数据类型 | 代码 | 主键 | 是否允许为null |
课程名称 | varchar(20) | Coursename | 是 | 否 |
课程老师 | varchar(10) | Course_teacher | 否 | 否 |
课程学分 | Int(10) | Course_credit | 否 | 否 |
院系 | varchar(20) | Sdepartment | 否 | 否 |
六、系统部分实现图
6.1、用户首页
用户首页包括课程搜索框,课程排行榜,院系选择
6.2、课程评论图
添加课程评论和推荐是此小程序最主要的功能模块,推荐功能主要是一个推荐按钮, 点击即推荐此课程
6.3、个人主页
个人主页主要包括个人信息和历史评论,其主要页面如下图
七、系统设计总结:
课程评价小程序是基于xwml,json,js,语言,利用微信开发者工具来进行系统编写,动态页面视图通过JSP技术和xwml技术来实现。前端采用微信开发者工具的wxml语言,后台则是采用通过js文件中的函数进行数据处理,数据接口采用api技术,利用微信开发者工具自带数据库存取数据
(1)系统的基本功能
用户操作页功能包括授权登录、首页、用户页面、搜索课程评论、查看历史评论、推荐课程、资料设置等。而本小程序主要是面向学生用户,管理员只需执行用户管理和数据管理即可,因此管理员的主要功能有用户管理、课程、评论管理。
(2)详细评论和推荐流程概述
①发布评论:当学生用户想选课时,可以登录小程序,选择自己的院系和学号,或者用搜索框进行课程搜索,会出现自己可选的课程, 点击课程即可以对课程进行评论。
②推荐:与上一个功能相似,点击新建评论时,进入课程评论页面,只需输入课程部分字,后台调用模糊搜索的api进行课程搜索,则出现相应的课程列表,此时即可点击推荐按钮进行推荐