摘要
在当今这个数字化和信息化的时代,技术和教育正在以前所未有的方式相互融合。微信小程序,作为一种轻量级、易传播、易使用的移动应用解决方案,已经深入到人们生活的各个方面,特别是在教育领域,它提供了一种全新的、互动性强的学习方式。而Django,作为一款成熟、稳定且功能强大的后端Web框架,以其高效、安全和灵活的特性,成为了众多Web应用的首选开发框架。
将Django与微信小程序相结合,为程序设计课程思政案例库平台的建设提供了一个理想的解决方案。这种结合不仅充分发挥了Django在后端数据处理和逻辑控制上的优势,同时也充分利用了微信小程序在用户交互和界面展示上的特点。通过这一平台,我们可以将程序设计课程与思想政治教育紧密结合,让学生在掌握编程技能的同时,也能够深入理解和体验思政教育的内涵和价值。
程序设计课程思政案例库平台的建设,不仅是对传统教育模式的创新和拓展,更是对新时代青年全面发展和综合素质培养的有力探索。通过这一平台,我们可以为学生提供丰富多样的程序设计案例和思政教育资源,让他们在实践中学习、在探索中成长。同时,平台还可以促进学生之间的互动和交流,形成积极的学习氛围和社区,为培养新时代的优秀人才提供有力支持。
因此,基于Django和微信小程序的程序设计课程思政案例库平台的建设,不仅具有重要的技术可行性,更有着深远的社会意义和教育价值。我们期待通过这一平台,能够推动程序设计课程与思政教育的深度融合,为培养既具备编程技能又具有良好道德品质的新时代青年做出积极贡献。
关键词:Web;Django技术;程序设计课程思政案例库平台;微信小程序
A Program Design Course Ideological and Political Case Library Platform Based on WeChat Mini Programs
ABSTRACT
In this era of digitization and informatization, technology and education are integrating in an unprecedented way. WeChat mini programs, as a lightweight, easy to spread, and easy-to-use mobile application solution, have penetrated into various aspects of people's lives, especially in the field of education. They provide a new and highly interactive way of learning. As a mature, stable, and powerful backend web framework, Django has become the preferred development framework for many web applications due to its high efficiency, security, and flexibility.
The combination of Django and WeChat mini programs provides an ideal solution for the construction of the ideological and political case library platform for programming courses. This combination not only fully leverages Django's advantages in backend data processing and logic control, but also fully utilizes the characteristics of WeChat mini programs in user interaction and interface display. Through this platform, we can closely integrate programming courses with ideological and political education, allowing students to not only master programming skills but also deeply understand and experience the connotation and value of ideological and political education.
The construction of the ideological and political case library platform for programming courses is not only an innovation and expansion of traditional education models, but also a powerful exploration of the comprehensive development and comprehensive quality cultivation of young people in the new era. Through this platform, we can provide students with a variety of program design cases and ideological and political education resources, allowing them to learn through practice and grow through exploration. At the same time, the platform can also promote interaction and communication among students, form a positive learning atmosphere and community, and provide strong support for cultivating outstanding talents in the new era.
Therefore, the construction of a program design course ideological and political case library platform based on Django and WeChat mini programs not only has important technical feasibility, but also has profound social significance and educational value. We look forward to promoting the deep integration of programming courses and ideological and political education through this platform, and making positive contributions to cultivating young people in the new era who possess both programming skills and good moral qualities.
Keywords:Web; Django technology; Programming course ideological and political case library platform; WeChat Mini Program
目 录
1 绪论
在当今时代,随着信息技术的迅猛发展和教育改革的不断深化,微信小程序作为一种新兴的移动应用形态,正逐渐在教育领域展现出其独特的优势。同时,程序设计课程作为高等教育和职业教育中的重要组成部分,对于培养学生的逻辑思维、创新能力和实践能力具有重要意义。然而,传统的程序设计课程往往注重技能传授而忽视思政教育的融入,导致学生在技能提升的同时,缺乏对社会责任和道德伦理的深刻理解。
基于微信小程序的程序设计课程思政案例库平台的研究与建设,旨在将程序设计课程与思政教育相结合,通过丰富的案例库资源和实践机会,让学生在掌握编程技能的同时,也能够深入理解思政教育的内涵和价值。这一平台的构建不仅有助于提升学生的编程能力和综合素质,更能够培养学生的社会责任感和道德意识,实现知识与品德的双重培养。
此外,微信小程序作为一种用户基数庞大、使用频率高的移动应用平台,具有广泛的传播性和互动性。通过微信小程序构建程序设计课程思政案例库平台,可以为学生提供更加便捷、高效的学习体验,同时也能够推动思政教育内容的数字化和智能化发展。这对于提升教育教学的质量和效率,促进教育公平和资源共享具有重要意义。
综上所述,基于微信小程序的程序设计课程思政案例库平台的研究与建设,不仅是对传统教育模式的创新和拓展,更是对新时代青年全面发展和综合素质培养的有力探索。通过这一平台,我们可以推动程序设计课程与思政教育的深度融合,为培养既具备编程技能又具有良好道德品质的新时代青年做出积极贡献。
1.2国内外研究现状
基于微信小程序的程序设计课程思政案例库平台在国内外的研究现状呈现出不同的特点和发展趋势。
在国内,随着信息技术的发展和教育改革的深入,越来越多的学者和教育机构开始关注程序设计课程与思政教育的结合。一些高校和研究机构已经开始尝试构建基于微信小程序的程序设计课程思政案例库平台,通过整合丰富的案例资源和实践机会,让学生在编程学习的同时接受思政教育。这些平台通常结合微信小程序的特点,注重用户体验和互动性,提供便捷的学习方式和丰富的学习资源。
然而,国内在基于微信小程序的程序设计课程思政案例库平台的研究和建设方面仍存在一些挑战和问题。一方面,理论研究和实践探索之间存在一定的脱节,缺乏系统的理论框架和指导原则。另一方面,现有的案例库资源可能还不够丰富和多样化,无法满足不同学生的学习需求和兴趣点。此外,如何有效结合微信小程序的技术特点和教育需求,提升平台的互动性和学习效果,也是当前研究的重要方向。
在国际上,一些西方国家也开始关注程序设计课程与思政教育的结合,并从政治社会学、教育学等角度对此进行深入研究。他们试图找到适合本国国情的课程思政路径,并通过国际比较的方式探讨不同国家在课程思政方面的异同。然而,目前国外对基于微信小程序的程序设计课程思政案例库平台的研究仍处于起步阶段,尚未形成系统的理论和实践体系。
综上所述,基于微信小程序的程序设计课程思政案例库平台在国内外的研究现状呈现出不同的发展特点和挑战。未来,随着技术的不断进步和教育的深入改革,这一领域的研究和建设有望取得更多的突破和进展。
1.3论文组成结构
第一章是绪论,本文章的开头部分,对本题目的研究背景和研究意义等一些做文字性的描述。
第二章研究了基于微信小程序的程序设计课程思政案例库平台的所采用的开发技术和开发工具。
第三章是系统分析部分,包括系统总体需求描述、功能性角度分析系统需求、非功能性等各个方面分析系统是否可以实现。
第四章是系统设计部分,本文章的重要部分,提供了系统架构的详细设计和一些主要功能模块的设计说明。
第五章是系统的具体实现,介绍系统的各个模块的具体实现。
第六章在前几章的基础上对系统进行测试和运行。
最后对系统进行了认真的总结,以此对未来有一个新的展望。
微信开发者工具现在已经被小程序开发团队开发运行,目前微信开发者工具任然在不断的完善中,在开发小程序时经常要不断的更新。可以使用微信扫码登陆开发者工具,开发者工具将使用这个微信帐号的信息进行小程序的开发和调试。
机型选择:小程序以智能手机的屏幕尺寸为设计标准,进行切图。
预览界面:写好视图布局后点击编译,用来刷新视图界面。
控制台:方便调试打印输出信息。
上传代码:上传到腾讯服务器,提交审核必经步骤。上传代码时可以填写版本号和备注信息。
资源文件:一般可以在资源文件进行对应项目的文件目录的断点调试。
显示远程调试:手机端和PC端开发工具联调对用户而言是非常实用的。
本地数据存储:显示的是本地存储的数据。
视图调试:标组件以子父层级结构呈现,方便调试。
微信限制在2M 以内的代码体积;开发中一般不校验合法域名信息;小程序后台要做配置服务器域名。
以上就是在开发过程中微信开发者工具常用到的功能,微信开发者工具也在不断的完善。
2.2小程序框架以及目录结构介绍
整个小程序框架系统分为两部分:逻辑层和视图层。小程序开发框架的目标是通过尽可能简单、高效的方式让开发者可以在微信中开发具有原生 小程序 体验的服务。小程序在视图层与逻辑层间提供了数据传输和事件系统,提供了自己的视图层以及逻辑层框架,让开发者能够专注于数据与逻辑。框架的核心是一个响应的数据绑定系统,可以让数据与视图非常简单地保持同步。在逻辑层做数据修改,在视图层就会做相应的更新。框架提供了一套基础的组件,这些组件自带微信风格的样式以及特殊的逻辑,开发者可以通过组合基础组件,创建出强大的微信小程序。
2.3开发技术
2.3.1MVVM模式介绍
MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。
2.3.2Django框架
Django是一个由Python编写的具有完整架站能力的开源Web框架。使用Django,只要很少的代码,Python的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务。
Django本身基于MVC模型,即Model(模型)+View(视图)+ Controller(控制器)设计模式,因此天然具有MVC的出色基因:开发快捷、部署方便、可重用性高、维护成本低等。Python加Django是快速开发、设计、部署网站的最佳组合。
Django具有以下特点:
能完善、要素齐全:该有的、可以没有的都有,常用的、不常用的工具都用。Django提供了大量的特性和工具,无须你自己定义、组合、增删及修改。
完善的文档:经过十多年的发展和完善,Django有广泛的实践经验和完善的在线文档(可惜大多数为英文)。开发者遇到问题时可以搜索在线文档寻求解决方案。
强大的数据库访问组件:Django的Model层自带数据库ORM组件,使得开发者无须学习其他数据库访问技术(SQL、pymysql、SQLALchemy等)。
灵活的URL映射:Django使用正则表达式管理URL映射,灵活性高。
丰富的Template模板语言:类似jinjia模板语言,不但原生功能丰富,还可以自定义模板标签。
Vue.js是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。
Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
Vue.js 自身不是一个全能框架——它只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。另一方面,在与相关工具和支持库一起使用时,Vue.js 也能驱动复杂的单页应用。
3.1 系统可行性分析
3.1.1技术可行性
Django作为一种功能强大且稳定的Web框架,以其高效的数据处理能力和清晰的MVC架构,为构建复杂的后端系统提供了坚实的基础。同时,微信小程序作为一种轻量级、易传播、用户基数庞大的移动应用解决方案,为前端交互提供了便捷且高效的方式。将Django与微信小程序结合,用于构建程序设计课程思政案例库平台,技术上是完全可行的。
Django框架提供了丰富的工具和库,使得开发人员可以高效地进行数据库设计、数据处理和API接口开发,确保后端系统的稳定性和可扩展性。而微信小程序则提供了前端界面的快速开发和用户交互的便捷实现,使得平台能够为用户提供流畅的使用体验。此外,Django与微信小程序之间的数据传输和交互可以通过RESTful API或WebSocket等方式实现,确保数据的实时性和准确性。
综上所述,基于Django和微信小程序的程序设计课程思政案例库平台在技术上具有高度的可行性。通过这一结合,我们可以充分发挥Django在后端处理和微信小程序在前端交互上的优势,为平台提供稳定、高效、用户友好的技术支持。
基于微信小程序的程序设计课程思政案例库平台在经济上同样具备可行性。从开发成本来看,Django作为开源框架,其使用和维护成本相对较低,而微信小程序的开发也相对简单,不需要额外的开发成本。同时,平台的运营成本也相对较低,可以利用云服务提供商的服务器资源进行部署和维护,实现资源的共享和高效利用。此外,平台还可以吸引更多的用户参与,通过提供优质的思政案例库资源和学习体验,吸引更多的学习者使用平台,从而实现商业价值的最大化。最后,平台的建设还有助于推动教育信息化和数字化的发展,提高教育资源的利用率和教学质量,为培养更多的高素质人才做出积极贡献,具有显著的社会效益。因此,从经济角度来看,Django基于微信小程序的程序设计课程思政案例库平台的建设是可行的,并且有望带来良好的经济效益和社会效益。
基于微信小程序的程序设计课程思政案例库平台在操作上也具备高度的可行性。微信小程序的用户界面简洁直观,用户无需复杂的操作即可轻松浏览和使用平台上的资源。同时,Django后端框架的稳定性和高效性确保了平台的稳定运行和快速响应,为用户提供了流畅的使用体验。此外,平台还提供了用户友好的交互界面和清晰的功能模块划分,使得用户能够方便快捷地找到所需的学习资源和工具。对于教育者和管理员而言,平台提供了灵活的管理功能和数据统计分析工具,方便他们进行课程资源的更新、用户管理的维护以及教学效果的评估。综上所述,Django基于微信小程序的程序设计课程思政案例库平台在操作上是完全可行的,能够为用户提供便捷、高效的学习体验和管理功能。
3.2 系统需求分析
在构建基于微信小程序的程序设计课程思政案例库平台时,我们深入进行了需求分析,以确保平台能够全面满足用户在学习、管理和交流等方面的需求。首先,我们明确了平台的核心目标,即为学生提供一个便捷、高效的学习工具,同时为教师和管理员提供强大的教学管理和资源分享功能。
为了满足不同用户群体的需求,我们设计了班级信息管理功能,允许教师和管理员创建、编辑和删除班级信息,方便他们对班级进行统一管理。同时,我们还提供了案例信息管理功能,允许用户上传、编辑和查询思政案例,以便学生能够在学习过程中接触到丰富的思政内容。
在学习进度管理方面,我们设计了学习记录跟踪功能,帮助学生了解自己的学习情况,并为他们提供个性化的学习建议。作业提交管理功能则允许学生在线提交作业,教师可以方便地查看和批改作业,提高教学效率。
数据统计管理功能则能够为教师和管理员提供学生的学习数据报告,帮助他们分析学生的学习情况,以便调整教学策略。此外,我们还提供了提醒信息管理功能,确保学生不会错过任何重要的学习通知。
在系统管理方面,我们重视平台的稳定性和安全性,采用了先进的技术手段确保平台的高性能运行。同时,我们还提供了轮播图管理功能,允许管理员上传和编辑平台的轮播图,增加平台的吸引力和用户粘性。
通知公告管理功能则允许管理员发布重要的通知和公告,确保所有用户都能够及时获取相关信息。资源管理功能包括资讯列表和资讯分类,为学生提供了丰富的课外学习资源。在线考试功能则能够帮助学生进行自我检测,巩固所学知识。
最后,交流管理功能为学生和教师提供了一个互动交流的平台,他们可以在这里提问、回答问题、分享学习心得,形成良好的学习氛围。
综上所述,基于微信小程序的程序设计课程思政案例库平台旨在通过技术手段解决学习和管理中的实际问题,提升学生的学习效率和教师的教学质量。我们期待这一平台能够为程序设计课程思政教学领域带来革命性的变革,让每一位学生都能享受到更加高效、便捷的学习体验。
3.3系统用例分析
系统的用例展示的是系统功能与用户之间的关系,通过用例的方式能够直观的展示出来,本基于微信小程序的程序设计课程思政案例库平台的完整UML用例图分别是图3-1、图3-2和图3-3。
图3-1 基于微信小程序的程序设计课程思政案例库平台学生用户角色用例图
图3-2 基于微信小程序的程序设计课程思政案例库平台教师用户角色用例图
图3-3 基于微信小程序的程序设计课程思政案例库平台管理员角色用
3.4系统流程分析
3.4.1操作流程
图3-4登录流程图
3.4.2添加信息流程
添加信息流程图,如图所示:
图3-5添加信息流程图
3.4.3删除信息流程
删除信息流程图,如图所示:
图3-6删除信息流程图
4.1系统设计的原理
系统设计原理包括:
- 模块化。模块化就是把整个程序划分为多个模块,每个模块有自己的名字并可以被独立访问。所有模块的功能集合起来就可以满足用户需求。
- 抽象。抽象是暂时忽略软件的细节,集中精力将软件的本质特征提取出来。
- 逐步求精。总体设计需要先解决主要问题,再将问题一步步细化。
- 局部化和信息隐藏。不同模块之间,信息相互不能访问,是不能访问的;并且应该在相近的物理地址上放置关系较密切的软件元素。
- 模块独立。模块之间应该遵循高内聚,低耦合的原则。
4.2系统功能设计
一旦您访问了这款应用,您需要完成一项重大的任务:通过认证,获得相应的权限。一旦您完成了认证,您将可以访问到一些关于您的服务,包括:后台首页、系统用户、班级信息管理、案例信息管理、学习进度管理、作业提交管理、数据统计管理、提醒信息管理、系统管理、通知公告管理、资源管理、交流管理等。这个界面非常清晰明了,通过指引您就能轻松地完成各种任务。
系统的功能结构图如下所示。
图4-1系统功能结构图
4.3数据库设计
数据库设计(DatabaseDesign)是指对一个给定的环境,构造良好的数据库模式,建立数据库系统,使之能够最有效地存储数据,满足各类用户的需求即处理要求和信息要求。在数据库应用范围内,经常把使用数据库的系统称为数据库的应用系统。
4.3.1概念模型设计
E-R设计方法是一种通过E-R图来描述现实世界信息结构的DB设计方法。E-R图由实体、属性、联系三部分组成。它有两个优点,即接近于人的思维,容易理解;与计算机无关,用户容易接受。
系统的主要实体间关系E-R图如下图所示:
图4-2系统E-R图
实体间可建立某种联系,大致可分为三种:(1)实体间一对一联系,这种关系可以独立也可与其他合并;(2)实体间是一对多联系,实体与另一个n端实体发生联系;(3)实体间为多对多联系,两个实体间存在某种关系。每个实体上码所具有的属性就是关系属性,实体码的组合就是关系码。
4.3.2逻辑结构设计
根据E-R模型,基于微信小程序的程序设计课程思政案例库平台建立了以下逻辑数据结构,下面是各数据表的详细说明。
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | case_information_id | int | 10 | 0 | N | Y | 案例信息ID | |
2 | teacher_account | int | 10 | 0 | Y | N | 0 | 教师账号 |
3 | teachers_name | varchar | 64 | 0 | Y | N | 教师姓名 | |
4 | teachers_phone_number | varchar | 64 | 0 | Y | N | 教师电话 | |
5 | class_information | varchar | 64 | 0 | Y | N | 班级信息 | |
6 | case_name | varchar | 64 | 0 | Y | N | 案例名称 | |
7 | case_images | varchar | 255 | 0 | Y | N | 案例图片 | |
8 | learning_duration | int | 10 | 0 | Y | N | 0 | 学习时长 |
9 | release_time | date | 10 | 0 | Y | N | 发布时间 | |
10 | homework_after_class | varchar | 255 | 0 | Y | N | 课后作业 | |
11 | case_video | varchar | 255 | 0 | Y | N | 案例视频 | |
12 | case_details | text | 65535 | 0 | Y | N | 案例详情 | |
13 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
14 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
15 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
16 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | class_information_id | int | 10 | 0 | N | Y | 班级信息ID | |
2 | class_information | varchar | 64 | 0 | Y | N | 班级信息 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | data_information_id | int | 10 | 0 | N | Y | 数据信息ID | |
2 | teacher_account | int | 10 | 0 | Y | N | 0 | 教师账号 |
3 | teachers_name | varchar | 64 | 0 | Y | N | 教师姓名 | |
4 | teachers_phone_number | varchar | 64 | 0 | Y | N | 教师电话 | |
5 | class_information | varchar | 64 | 0 | Y | N | 班级信息 | |
6 | teacher_id | varchar | 64 | 0 | Y | N | 教师工号 | |
7 | student_account | int | 10 | 0 | Y | N | 0 | 学生账号 |
8 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
9 | statistical_date | date | 10 | 0 | Y | N | 统计日期 | |
10 | learning_duration | int | 10 | 0 | Y | N | 0 | 学习时长 |
11 | exam_scores | int | 10 | 0 | Y | N | 0 | 考试成绩 |
12 | class_ranking | int | 10 | 0 | Y | N | 0 | 班级排名 |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | exam_id | mediumint | 8 | 0 | N | Y | 考试id | |
2 | name | varchar | 32 | 0 | N | N | 考试名称:[2,32] | |
3 | duration | int | 10 | 0 | Y | N | 答题时长 | |
4 | score | double | 9 | 2 | Y | N | 总分 | |
5 | status | varchar | 10 | 0 | Y | N | 状态:启用、禁用 | |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | exam_question_id | mediumint | 8 | 0 | N | Y | ||
2 | type | varchar | 20 | 0 | Y | N | 类型 | |
3 | title | varchar | 255 | 0 | Y | N | 题目 | |
4 | question_item | varchar | 500 | 0 | Y | N | 选项 | |
5 | answer | varchar | 500 | 0 | Y | N | 参考答案 | |
6 | score | double | 9 | 2 | Y | N | 总分 | |
7 | question_order | int | 10 | 0 | Y | N | 排序 | |
8 | exam_id | mediumint | 7 | 0 | Y | N | 所属试卷 | |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | forum_id | mediumint | 8 | 0 | N | Y | 论坛id | |
2 | display | smallint | 5 | 0 | N | N | 100 | 排序 |
3 | user_id | mediumint | 8 | 0 | N | N | 0 | 用户ID |
4 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
5 | praise_len | int | 10 | 0 | Y | N | 0 | 点赞数 |
6 | hits | int | 10 | 0 | N | N | 0 | 访问数 |
7 | title | varchar | 125 | 0 | N | N | 标题 | |
8 | keywords | varchar | 125 | 0 | Y | N | 关键词 | |
9 | description | varchar | 255 | 0 | Y | N | 描述 | |
10 | url | varchar | 255 | 0 | Y | N | 来源地址 | |
11 | tag | varchar | 255 | 0 | Y | N | 标签 | |
12 | img | text | 65535 | 0 | Y | N | 封面图 | |
13 | content | longtext | 2147483647 | 0 | Y | N | 正文 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
16 | avatar | varchar | 255 | 0 | Y | N | 发帖人头像: | |
17 | type | varchar | 64 | 0 | N | N | 0 | 论坛分类:[0,1000]用来搜索指定类型的论坛帖 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
3 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
4 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
5 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
6 | icon | varchar | 255 | 0 | Y | N | 分类图标: | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | homework_submission_id | int | 10 | 0 | N | Y | 作业提交ID | |
2 | student_account | int | 10 | 0 | Y | N | 0 | 学生账号 |
3 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
4 | student_phone_number | varchar | 64 | 0 | Y | N | 学生电话 | |
5 | class_information | varchar | 64 | 0 | Y | N | 班级信息 | |
6 | teacher_account | int | 10 | 0 | Y | N | 0 | 教师账号 |
7 | teachers_name | varchar | 64 | 0 | Y | N | 教师姓名 | |
8 | case_name | varchar | 64 | 0 | Y | N | 案例名称 | |
9 | submission_time | date | 10 | 0 | Y | N | 提交时间 | |
10 | homework_pictures | varchar | 255 | 0 | Y | N | 作业图片 | |
11 | other_remarks | text | 65535 | 0 | Y | N | 其他备注 | |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | rate_of_learning_id | int | 10 | 0 | N | Y | 学习进度ID | |
2 | student_account | int | 10 | 0 | Y | N | 0 | 学生账号 |
3 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
4 | student_phone_number | varchar | 64 | 0 | Y | N | 学生电话 | |
5 | class_information | varchar | 64 | 0 | Y | N | 班级信息 | |
6 | teacher_account | int | 10 | 0 | Y | N | 0 | 教师账号 |
7 | teachers_name | varchar | 64 | 0 | Y | N | 教师姓名 | |
8 | case_name | varchar | 64 | 0 | Y | N | 案例名称 | |
9 | learning_duration | varchar | 64 | 0 | Y | N | 学习时长 | |
10 | submission_time | date | 10 | 0 | Y | N | 提交时间 | |
11 | completion_status | varchar | 64 | 0 | Y | N | 完成情况 | |
12 | other_remarks | text | 65535 | 0 | Y | N | 其他备注 | |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | reminder_message_id | int | 10 | 0 | N | Y | 提醒信息ID | |
2 | teacher_account | int | 10 | 0 | Y | N | 0 | 教师账号 |
3 | teachers_name | varchar | 64 | 0 | Y | N | 教师姓名 | |
4 | class_information | varchar | 64 | 0 | Y | N | 班级信息 | |
5 | student_account | int | 10 | 0 | Y | N | 0 | 学生账号 |
6 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
7 | reminder_date | date | 10 | 0 | Y | N | 提醒日期 | |
8 | reminder_content | text | 65535 | 0 | Y | N | 提醒内容 | |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | student_users_id | int | 10 | 0 | N | Y | 学生用户ID | |
2 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
3 | student_gender | varchar | 64 | 0 | Y | N | 学生性别 | |
4 | student_age | varchar | 64 | 0 | Y | N | 学生年龄 | |
5 | student_phone_number | varchar | 16 | 0 | Y | N | 学生电话 | |
6 | class_information | varchar | 64 | 0 | Y | N | 班级信息 | |
7 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
8 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | teacher_users_id | int | 10 | 0 | N | Y | 教师用户ID | |
2 | teachers_name | varchar | 64 | 0 | Y | N | 教师姓名 | |
3 | teacher_gender | varchar | 64 | 0 | Y | N | 教师性别 | |
4 | teachers_phone_number | varchar | 16 | 0 | Y | N | 教师电话 | |
5 | class_information | varchar | 64 | 0 | Y | N | 班级信息 | |
6 | teacher_id | varchar | 64 | 0 | N | N | 教师工号 | |
7 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
8 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_answer_id | mediumint | 8 | 0 | N | Y | ||
2 | user_id | mediumint | 7 | 0 | N | N | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
3 | exam_id | mediumint | 7 | 0 | N | N | 0 | 考试id |
4 | score | double | 9 | 2 | Y | N | 0.00 | 分数 |
5 | answers | text | 65535 | 0 | Y | N | 答案 | |
6 | score_detail | text | 65535 | 0 | Y | N | 评分详情 | |
7 | objective_score | double | 9 | 2 | Y | N | 0.00 | 客观题得分 |
8 | subjective_score | double | 9 | 2 | Y | N | 0.00 | 主观题得分 |
9 | score_state | tinyint | 4 | 0 | Y | N | 0 | 评分状态 |
10 | nickname | varchar | 255 | 0 | Y | N | 提交人 | |
11 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5.1学生用户功能模块实现
登录模块,用户、管理员可以通过登录进入该系统,如果输入正确用户名和密码,则可以进入该系统。用户登录界面如下图所示。
图5-1登录模块界面图
登录关键代码如下:
def Login(self, ctx):
print("===================登录=====================")
ret = {
"error": {
"code": 70000,
"message": "账户不存在",
}
}
body = ctx.body
password = md5hash(body["password"]) or ""
obj = service_select("user").Get_obj(
{"username": body["username"]}, {"like": False}
)
if obj:
user_group = service_select("user_group").Get_obj({'name': obj['user_group']}, {"like": False})
if user_group and user_group['source_table'] != '':
user_obj = service_select(user_group['source_table']).Get_obj({"user_id": obj['user_id']}, {"like": False})
if user_obj['examine_state'] == '未通过':
ret = {
"error": {
"code": 70000,
"message": "账户未通过审核",
}
}
return ret
if user_obj['examine_state'] == '未审核':
ret = {
"error": {
"code": 70000,
"message": "账户未审核",
}
}
return ret
if obj["state"] == 1:
if obj["password"] == password:
timeout = timezone.now()
timestamp = int(time.mktime(timeout.timetuple())) * 1000
token = md5hash(str(obj["user_id"]) + "_" + str(timestamp))
ctx.request.session[token] = obj["user_id"]
service_select("access_token").Add(
{"token": token, "user_id": obj["user_id"]}
)
obj["token"] = token
ret = {
"result": {"obj": obj}
}
else:
ret = {
"error": {
"code": 70000,
"message": "密码错误",
}
}
else:
ret = {
"error": {
"code": 70000,
"message": "用户账户不可用,请联系管理员",
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
如果某个人员进入该系统,则注册该用户的信息,如果注册成功,就可以进入该系统,显示的结果如下。注册用户界面如下图所示。
图5-2注册用户界面图
注册关键代码如下:
def Register(self, ctx):
print("===================注册=====================")
userService = service_select("user")
body = ctx.body
if "username" not in body and body["username"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户名不能为空",
}
}, ensure_ascii=False))
if "user_group" not in body and body["user_group"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户组不能为空",
}
}, ensure_ascii=False))
if "password" not in body and body["password"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "密码不能为空",
}
}, ensure_ascii=False))
post_param = body
post_param['nickname'] = body["nickname"] or ""
post_param['password'] = md5hash(body["password"])
obj = userService.Get_obj({"username": post_param['username']}, {"like": False})
if obj:
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户名已存在",
}
}, ensure_ascii=False))
ret = {
"error": {
"code": 70000,
"message": "注册失败",
}
}
bl = userService.Add(post_param)
if bl:
ret = {
"result": {
"bl": True,
"message": "注册成功"
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
用户使用该系统注册完成后,用户对登录密码有修改需求时,系统也可以提供用户修改密码权限。系统中所有的操作者能够变更自己的密码信息,执行该功能首先必须要登入系统,然后选择密码变更选项以后在给定的文本框中填写初始密码和新密码来完成修改密码的操作。在填写的时候,假如两次密码填写存在差异,那么此次密码变更操作失败。密码修改界面如下图所示。
图5-3密码修改界面图
找回密码关健代码如下:
def Forget_password(self, ctx):
print("===================修改密码=====================")
ret = {
"error": {
"code": 70000,
"message": "用户信息不能没有"
}
}
body = ctx.body
if not body["code"]:
return {
"error": {
"code": 70000,
"message": "验证码不存在或者错误"
}
}
obj = service_select("user").Get_obj(
{"username": body["username"]}, {"like": False}
)
if not obj:
return {
"error": {
"code": 70000,
"message": "用户名不存在或者错误"
}
}
password = md5hash(body["password"])
if not password:
return {
"error": {
"code": 70000,
"message": "密码不存在或者错误"
}
}
bl = service_select("user").Set({"user_id": obj["user_id"]}, {"password": password})
if bl:
ret = {"result": {"bl": True, "message": "修改成功"}}
else:
ret = {
"error": {
"code": 70000,
"message": "修改失败",
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
修改密码代码如下:
def Change_password(self, ctx):
print("===================修改密码=====================")
ret = {
"error": {
"code": 70000,
"message": "账号未登录",
}
}
request = ctx.request
headers = request.headers
if ("x-auth-token" in headers) and headers["x-auth-token"]:
token = headers["x-auth-token"]
user_id = tokenGetUserId(token, request)
userService = service_select("user")
body = ctx.body
password = md5hash(body["o_password"])
obj = userService.Get_obj({"user_id": user_id, "password": password}, {"like": False})
if obj:
password = md5hash(body["password"])
bl = userService.Set({"user_id": user_id}, {"password": password})
if bl:
ret = {"result": {"bl": True, "message": "修改成功"}}
else:
ret = {
"error": {
"code": 70000,
"message": "修改失败",
}
}
else:
ret = {
"error": {
"code": 70000,
"message": "密码错误",
}
}
else:
ret = {
"error": {
"code": 70000,
"message": "账户未登录",
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
当用户点击“学习资讯”这一菜单按钮,会显示管理员在后台发布的所有的学习信息,支持通过关键词对资讯进行搜索,选择需要的资讯信息点击可以进入到资讯信息详细的介绍界面,同时可以进行点赞、收藏和评论等操作,学习资讯界面如下图所示。
图5-4学习资讯页面图
用户点击“学习进度”这一菜单按钮,通过输入学生姓名、班级信息、教师姓名、案例名称可以查询和重置。在详情页面学习进度完成情况。学习进度界面如下图所示。
教师用户点击“班级信息”这一菜单按钮,教师用户可以查看班级信息的详情。通过输入班级信息进行查询和重置。还可以添加新的班级信息。班级信息管理界面如下图所示。
图5-6班级信息页面图
教师用户点击“案例信息”这一菜单按钮,通过输入教师姓名、班级信息、案例名称进行查询和重置。还可添加新的案例信息,案例信息管理界面如下图所示。
图5-7案例信息管理页面图
教师用户点击“作业提交”这一菜单按钮,通过输入学生姓名、班级信息、案例名称、教师姓名进行查询和重置。还可以查看学生作业提交情况。作业提交管理界面如下图所示。
图5-8作业提交页面图
管理员输入账号、密码、验证码点击“登录”按钮就会跳转到登录界面。如下图所示。
![](https://i-blog.csdnimg.cn/direct/33fffe283679477eaf84367d5691990d.png)
图5-9管理员登录页面图
管理员可以对系统中所有的用户角色进行管控,包含了管理员、学生用户和教师用户这三种角色,如果需要添加新的用户,点击页面中的“添加”按钮根据提示输入上用户信息,点击“提交”以后在对应的用户界面就可以查看到了,可以点击用户后面的“删除”按钮直接删除某一用户。如下图所示。
![](https://i-blog.csdnimg.cn/direct/f4fbc8cd30204c5bb66356cb4917435c.png)
图5-10系统用户页面图
增删查改关键代码如下:
增
def Add(self, ctx):
body = ctx.body
unique = self.config.get("unique")
obj = None
if unique:
qy = {}
for i in range(len(unique)):
key = unique[i]
qy[key] = body.get(key)
obj = self.service.Get_obj(qy)
if not obj:
error = self.Add_before(ctx)
if error["code"]:
return {"error": error}
error = self.Events("add_before", ctx, None)
if error["code"]:
return {"error": error}
result = self.service.Add(body, self.config)
if self.service.error:
return {"error": self.service.error}
res = self.Add_after(ctx, result)
if res:
result = res
res = self.Events("add_after", ctx, result)
if res:
result = res
return {"result": result}
else:
return {"error": {"code": 10000, "message": "已存在"}}
删
def Del(self, ctx):
if len(ctx.query) == 0:
errorMsg = {"code": 30000, "message": "删除条件不能为空!"}
return errorMsg
result = self.service.Del(ctx.query, self.config)
if self.service.error:
return {"error": self.service.error}
return {"result": result}
改
def Set(self, ctx):
error = self.Set_before(ctx)
if error["code"]:
return {"error": error}
error = self.Events("set_before", ctx, None)
if error["code"]:
return {"error": error}
query = ctx.query
if 'page' in query.keys():
del ctx.query['page']
if 'size' in query.keys():
del ctx.query['size']
if 'orderby' in query.keys():
del ctx.query['orderby']
result = self.service.Set(ctx.query, ctx.body, self.config)
if self.service.error:
return {"error": self.service.error}
res = self.Set_after(ctx, result)
if res:
result = res
res = self.Events("set_after", ctx, result)
if res:
result = res
return {"result": result}
查多条数据:
def Get_list(self, ctx):
query = dict(ctx.query)
config_plus = {}
if "field" in query:
field = query.pop("field")
config_plus["field"] = field
if "page" in query:
config_plus["page"] = query.pop("page")
if "size" in query:
config_plus["size"] = query.pop("size")
if "orderby" in query:
config_plus["orderby"] = query.pop("orderby")
if "like" in query:
config_plus["like"] = query.pop("like")
if "groupby" in query:
config_plus["groupby"] = query.pop("groupby")
count = self.service.Count(query)
lst = []
if self.service.error:
return {"error": self.service.error}
elif count:
lst = self.service.Get_list(query,
obj_update(self.config, config_plus))
if self.service.error:
return {"error": self.service.error}
self.interact_list(ctx, lst)
return {"result": {"list": lst, "count": count}}
查一条数据:
def Get_obj(self, ctx):
query = dict(ctx.query)
config_plus = {}
if "field" in query:
field = query.pop("field")
config_plus["field"] = field
obj = self.service.Get_obj(query, obj_update(self.config, config_plus))
if self.service.error:
return {"error": self.service.error}
if obj:
self.interact_obj(ctx, obj)
return {"result": {"obj": obj}}
管理员点击“提醒信息管理”,管理员可以管理系统的提醒信息,包括发布、编辑、删除系统的提醒信息,确保信息及时传达给用户,包括系统更新、重要通知等。如下图所示。
![](https://i-blog.csdnimg.cn/direct/6a5a07f4949e47c3b85061f6e9786cda.png)
图5-11提醒信息管理页面图
管理员点击“系统管理”管理员可以插入轮播图图片、填写标题进行提交。如下图所示。
![](https://i-blog.csdnimg.cn/direct/dd513cf80c6147b9bda8452cbc3dfc1b.png)
5.3.5 通知公告管理界面
管理员点击“通知公告管理”这个菜单,可以查看到系统中所有添加的系统公告,支持通过标题对系统公告进行查询,添加、删除等操作。通知公告管理界面如下图所示。
![](https://i-blog.csdnimg.cn/direct/796082ad3ef44a22a54cf0e9f2066a35.png)
图5-13通知公告管理界面图
6系统测试
测试存在于软件开发进程中的最后一个阶段,它可以保证一个软件的开发质量是否符合设计者的初衷,也为程序的正式上线做了最后一道质量检测的工序。软件测试主要是控制各种条件、包括软件输出方式,使用模式和运行环境等,来评估一个系统或应用是否符合设计标准。在软件测试过程中,我们一般刻意的去制造错误和极端条件,不能仅依照正常模式允许,而是多去尝试那些意外的情况。
系统测试包括:用户登录功能测试、案例信息查看测试、发布通知公告、学习资讯搜索、密码修改功能测试,如表6-1、6-2、6-3、6-4、6-5所示:
表6-1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
案例信息查看功能测试:
表6-2 案例信息查看功能测试表
用例名称 | 案例信息查看 |
目的 | 测试案例信息查看功能 |
前提 | 用户登录 |
测试流程 | 点击案例信息列表 |
预期结果 | 可以查看到所有案例信息 |
实际结果 | 实际结果与预期结果一致 |
管理员发布通知公告界面测试:
表6-3 管理员发布通知公告界面测试表
用例名称 | 通知公告发布测试用例 |
目的 | 测试通知公告发布功能 |
前提 | 用户正常登录情况下 |
测试流程 | 1)点击通知公告管理,然后点击发布添加后并填写信息。 2)点击进行提交。 |
预期结果 | 提交以后,页面首页会显示新的通知公告 |
实际结果 | 实际结果与预期结果一致 |
学习资讯搜索功能测试:
表6-4学习资讯搜索功能测试表
用例名称 | 学习资讯搜索测试 |
目的 | 测试学习资讯搜索功能 |
前提 | 无 |
测试流程 | 1)在搜索框填入搜索关键字。 2)点击搜索按钮。 |
预期结果 | 页面显示包含有搜索关键字的学习资讯 |
实际结果 | 实际结果与预期结果一致 |
密码修改功能测试:
表6-5 密码修改功能测试表
用例名称 | 密码修改测试用例 |
目的 | 测试管理员密码修改功能 |
前提 | 管理员用户正常登录情况下 |
测试流程 | 1)管理员密码修改并完成填写。 2)点击进行提交。 |
预期结果 | 使用新的密码可以登录 |
实际结果 | 实际结果与预期结果一致 |
经过对基于微信小程序的程序设计课程思政案例库平台的测试,我们已经完成了5大模块的检测,包括用户登录功能测试、案例信息查看测试、发布通知公告、学习资讯搜索、密码修改功能测试,这些功能为后续的推广运营提供了强有力的技术支持。
通过基于微信小程序的程序设计课程思政案例库平台的开发,本人巩固了之前学过的知识,如今将平时所学到的知识融合在设计中,在设计过程中,做了很多的准备,首先,在数据库系统的设计过程中,尤其是在数据库的工作原理、工作特点,对其深刻的讨论,与此同时,对于小型站点来说,最好服务器的选择,其次,利用所学的知识点分析所做的系统,并在此基础上设计。
目前本系统已经上线,正在试运行阶段,用户反馈良好,基本完成用户所需,试运行过程中没有出现阻断性问题,有一些不足和小问题也及时予以修正,系统上线后,为了保证数据的安全性,对系统进行了备份操作,系统备份是每两个月备份一次,数据库备份为每周备份一次,系统部署在云平台服务器中。
本次系统上线成功后,得到了用户的高度认可,但是在功能上和性能上还需做进一步的研究处理,使其有更高的性能和更好的用户体验。
系统在以后的升级过程中,需要解决一系列用户所提出的问题,例如打印过程中如何避免浏览器的兼容性问题,大量用户访问时,如何保持较高的响应速度,在系统今后的升级过程中将着重解决这些安全性问题。
[1]宋厚娟,陈冠光,李帅,等.案例教学法在植被生态学课程思政建设中的实践[J].智慧农业导刊,2024,4(06):110-113+118.DOI:10.20028/j.zhnydk.2024.06.026.
[2]杨丽娜,牛朝霞,侯亚琼,等.高职护理专业生理学课程思政案例库的建设与应用[J].河南医学高等专科学校学报,2024,36(01):143-147.
[3]张小男,陈红岩.默会知识论视域下思政案例库在信息素养教育中的实践探索[J].图书馆界,2024,(01):9-14+27.DOI:10.14072/j.cnki.tsgj.2024.01.004.
[4]Ishan R ,Prakash C ,K. P T , et al.Python-Based Open-Source Tool for Automating Seleno-Referencing of Chandrayaan-2 Hyper-Spectral Data Cubes[J].Journal of the Indian Society of Remote Sensing,2024,52(2):305-313.
[5]Jensen B ,Wang T .The Elusive Hypertrophy of the Python Heart.[J].Physiology (Bethesda, Md.),2024,39(2):0-0.
[6]Werff D V J ,Ravignani A ,Jadoul Y .thebeat: A Python package for working with rhythms and other temporal sequences.[J].Behavior research methods,2024,
[7]Maurer J V ,Siggel M ,Kosinski J .PyTME (Python Template Matching Engine): A fast, flexible, and multi-purpose template matching library for cryogenic electron microscopy data[J].SoftwareX,2024,25101636-.
[8]Vitturi M D M ,Bevilacqua A ,Tadini A , et al.ELICIPY 1.0: A Python online tool for expert elicitation[J].SoftwareX,2024,25101641-.
[9]王新艳,李艺超.课程思政视域下“三智五化”专业课程教学改革探索[J].汽车实用技术,2024,49(02):154-157.DOI:10.16638/j.cnki.1671-7988.2024.002.029.
[10]王超维,陈寒璐.高职院校物流管理课程思政教学改革实践的探索[J].公关世界,2024,(02):22-24.
[11]方惠.“医学文献检索与利用”课程思政教学案例库的构建与应用[J].科学咨询(教育科研),2023,(12):156-159.
[12]廖华丽,李婷菲,郭春香,等.基于课程思政案例库的建立和应用引领的三教改革探索[J].科学咨询(科技·管理),2023,(12):241-243.
[13]罗凌,朱东东,余笑寒.课程思政视角下程序设计类课程教学探索[J].齐齐哈尔高等师范专科学校学报,2023,(06):119-122+125.DOI:10.16322/j.cnki.23-1534/z.2023.06.013.
[14]文楠.课程思政在高校体育课程教学中的实施路径研究[C]//中国体育科学学会.第十三届全国体育科学大会论文摘要集——墙报交流(学校体育分会)(四).伊犁师范大学;,2023:3.DOI:10.26914/c.cnkihy.2023.081832.
[15]徐天意.思政课教学案例库的创新建设与前沿探索[J].思想政治教育研究,2023,39(04):97-101.DOI:10.15938/j.cnki.iper.2023.04.015.
[16]赵书玲,罗潇,陈德海.“电工电子技术”课程思政案例库的建设与实践[J].电气电子教学学报,2023,45(04):114-117.
[17]段好阳,靳皓月,邢靖松,等.高校医学专业课程思政案例库建设的思考[J].高校医学教学研究(电子版),2023,13(04):10-13.
[18]辛凤文,蔡洪涛,屈雯飞,等.基于Access数据库技术的课程思政案例库系统的研发[J].中国信息技术教育,2023,(12):108-112.
[19]刘天森,王佳遇,邢新朋.产学研协同育人平台驱动下高校课程思政案例库建设与自适应研究[J].黑龙江教师发展学院学报,2023,42(05):50-53.
[20]吴敏,陈可佳,许棣华.课程思政视域下《高级语言程序设计》的教学探索[J].电脑知识与技术,2022,18(09):148-150.DOI:10.14004/j.cnki.ckt.2022.0597.
经历了近三个多月的动手实践及老师辛勤的指导和同学朋友热心的帮助下,本人的毕业设计基于微信小程序的程序设计课程思政案例库平台的基本功能也基本完成。
此次设计中,通过不断的探讨与学习使我熟悉、使我初步了解了Django相关技术。我做的是一个B/S结构的基于微信小程序的程序设计课程思政案例库平台,使我对做网站所需要,及运行的环境有了初步的了解,在此次设计中我翻阅了较多的书籍,在有限的时间了丰富了对基于微信小程序的程序设计课程思政案例库平台技术的知识也积累了少许的经验。起初对Python的初步认识,通过这次设计更进一步的了解了其工作原理,懂得了配置服务器环境,连接数据库源,在设计过程中,也学会了用Pycharm设计一个简单的页面,增强了动手的能力,激发了在此方面的兴趣。
但是由于时间、基础及缺乏实践等多方面的问题,还有诸多需要解决的问题依然存在,设计中很多方面考虑不够周全或者考虑不到。
非常感谢我的老师,我的同学,我的朋友并希望在今后的学习生活中不断陪养多方面的兴趣,不断学习进步从而能够实现独立完成。设计中存在的诸多缺点诚肯老师的原谅。
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~