金宝贝早教中心管理系统
一、摘 要
近年来,家长对孩子的教育问题愈加重视,倡导启蒙教育。因此,许多早教机构应运而生,而随着就够人员的增多,机构的管理成为重中之重。因此,本系统就旨在便于管理员对机构用户,课程的管理,同时使家长们更加了解机构。
本系统的设计过程中使用了 MySQL 数据库来对机构中的信息进行增删查改,使用 Python 和 Django 实现后台的相关逻辑,使用 HTML 实现前段页面的显示,使用 xadmin 实现后台管理系系统,以便管理员对数据的操作。本网站包含三类用户:一是家长用户,二是教师,三是管理员。家长用户访问网站查看机构的基本情况;教师向网站添加课程的相关信息;管理员对机构中的所有数据进行维护。通过管理员和教师对网站的维护,是家长能够更加清楚的了解机构,并报名机构。
关键词 :Python,Django,后台管理
二、引言
2.1 项目开发背景
近年来,随着改革开放政策的实施,人们生活水平显著提升。在基本温饱问题得到满足的前提下,人们更加追求精神生活的满足以及孩子的自我创新,自我探索等多元化发展,许多家长希望孩子得到更好的启蒙教育。因此,顺应时代的需求,许多早教机构应运而生。而随着机构的逐渐壮大,机构的成员越来越多,课程更加多元化,机构的管理成为急需解决的问题。
随着第三次工业革命的爆发,计算机进入人们的视野中。而随着近年来的不断发展,计算机技术趋于成熟,在许多领域都得到了广发的应用。例如在航天领域,通过计算机精密快速的计算能力,使得人们更便于探索外太空;在生活中,我们日常乘坐的地铁的调度也离不开计算机的操纵;我们日常使用的手机 app,电脑上的网站等等也都是靠计算机来支撑,以及近年来逐渐兴起的人工智能,共享单车,无人超市,无人餐厅,无人驾驶也无一例外。
所以,可以利用计算机技术对传统教育技术提供更好好的支持。计算机技术拥有计算精密,查找快速,便于大量数据存储,数据共享,不易丢失等特点,它可以替代人们手工存储数据,在大量的数据中缓慢的查找信息,数据信息不易携带等方式。因此使用计算机技术可以对早教机构进行更方便的管理。
2.2 项目开发意义
随着计算机技术在不同领域的不断使用,许多研究人员的不断探索,计算机技术已经不断完善,日趋成熟。利用计算机技术对早教机构进行管理,已经成为一种必然的趋势,因此,以下将利用计算机技术来实现早教机构网站的管理。
对于机构管理者来说,可以更方便的管理学生,家长的基本信息;可以将教师的信息清晰的展示在家长眼前,使家长更加了解本机构拥有的优秀教师;可以将本机构教授的课程信息更加详尽的进行展示,使孩子们能够对本机构的课程更加感兴趣。
对于家长来说,他能够清楚的了解孩子的所知所学,更好的跟孩子做朋友,在日常的教育中也会更加游刃有余。
对于孩子们来说,教育者通过提供更多适龄课程,跨界融合多种学科与能力,使宝贝在自主探索和体验中实现个性情商,体能感知,智能认知的多元发展。使宝贝接受更好的启蒙教育,为日后的正式学习打好坚实的基础,使宝贝将来能够长大成才,为国家做出贡献。
2.3 可行性分析
2.3.1 概述
可行性研究的目的是从项目前期的准备,完成的功能,实现的作用等方面来进行分析。在这些过程中,经济条件是否满足,人力,物力是否得到合理的安排和使用,项目实现的功能是否符合实际,是否有研究的价值,是否会被广泛使用,市场上是否有该需求,资金是否充足,技术上能否实现,即所谓的“花少量的前造福更多的人”,以及该项目在技术成本上是否可行等。即能否实现和值得实现,尽最大可能以最小的代价发挥最大的价值。
2.3.2 技术可行性分析
本系统采用成熟的 B/S(浏览器/服务器)模式[8]。使用 python 和 django 进行编码,python 是一种被广泛使用的计算机程序设计语言,它拥有强大的库,可以使使用者很方便的调用接口去操作,近年来,python 被广泛应用在 Web 前端开发,后台开发等领域。django 是一个开源的 Web 框架,它提供了大量简易的接口来对数据库进行操作以及对前端界面输入输出数据的操作,同时它还可以支持开发者在代码中使用第三方插件来实现相关的功能。pycharm 作为开发环境,它是 python 的集成开发环境,在其中可以进行代码开发,调试,代码规范显示等,非常便于 python 代码的开发,因此,本系统在其上实现相关的逻辑。使用 CSS(层叠样式表)和 HTML 来对页面进行设计和渲染,使界面更加美观,HTML 提供大量的标签使用户更加方便的操作,如按,标签等,而 CSS 则是对 HTML 标签的样式进行设计,如颜色,字体大小等。MySQL 是一个关系型数据库管理系统,它可以存储大量的数据,增删查改速度快等特点,因此,使用 MySQL 进行数据存储,增删查改等。
2.3.3 操作可行性分析
自从第三次工业革命爆发以来,计算机进入大众的视野中。我国自改革开放以来,计算机技术得到迅速发展,计算机使用领域广泛。计算机朝两极化发展,其中一级就是用于个人的笔记本电脑。它体积小,便于携带,更新换代快,价格也可以接受。到目前为止,几乎人手一台计算机。而计算机技术也日渐成熟,运行速度快,操作简单,不需专人使用维护,同时可以快速检索,存储大量数据,代替以往靠人脑记忆的方式,不易丢失。另一方面,近年来,随着软件技术的发展,各种语言,脚本的运用已经趋于完善,各大高校也开始重视学生计算机能力的发展,开设了大量相关的课程,因此,不用再花费大量的时间去涉入一个新的领域进行研究,从而节省了人力,物力,财力等成本,因此,该系统在经济上是可行的。
三、系统开发技术简介
3.1 开发工具简介
3.1.1 Pycharm 介绍
PyCharm 是 python 的集成开发环境,可用于 python 代码的开发编写,调试,运行等。它提供了代码规范,如代码缩进,代码高亮,代码补全,代码折叠,错误提示,代码跳转等快捷方式,使用户能够更方便的进行开发编码。此外,还提供了用于 django 框架下专业 Web 开发的高级功能,它自带 HTML,CSS,JavaScript 编辑器,可以使用户能够更便捷对前端页面进行操作。还有,pycharm 提供完善的快捷键:如换行,查找,补全等,使用户操作更加快捷。可以使用户更高效率的开发编码。
另一方面,它的安装非常简便,直接在官网上下载即可。
3.1.2 MySQL 数据库介绍
MySQL 是一种关系型数据库管理系统[5]。它广泛应用在前后端开发,服务器开发等方面。它建立一个个有关联的数据表,将用户数据存放在这些数据表中,使用户对于数据的增加,删除,查找,修改的操作非常便捷,同时因为符合同一特征的数据存储在一张数据表中,所以数据库的相关操作非常快速,节省了运行时间,非常便于用户开发。
MySQL 与 Oracle,SQL Server 等相同,均使用 SQL 语言对数据库进行增删查改[9]。同时,MySQL 开放源码,这样就大大降低了开发成本,而且它的安装包容量小,运行速度快,非常适合个人企业和中小型项目的开发。
另一方面,MySQL 是由基础的 C 和 C++ 编写而成,而 C 和 C++ 有具有运行速度快,可移植性的优势,因此 MySQL 也具有这些特点;MySQL 还为多种语言提供接口访问数据库,如当下流行的 Java,C,C++,Python 等,操作非常方便;MySQL 支持多线程编程,实现锁机制,这样可以更易于处理并发事件;MySQL 支持多种编码格式,如我们常见的 UTF-8,unicode 编码等,使用户能够更自主的选择自己所需的编码格式;MySQL 使用标准的 SQL 语句对数据库进行增加,删除,查找,修改,大大提高了用户检索的速度[6]。
前面有提及到 MySQL 是一个开源软件,所以安装操作也非常方便,直接在官网上下载源码进行安装即可。
3.1.3 Navicat for MySQL 介绍
Navicat 是一个数据库的管理工具,他提供简化数据库的操作,并且提供可视化的数据库界面,使初学用户能够更加快速的了解和学习数据库的相关操作。它提供了多种数据库语言供用户进行选择,如 MySQL,SQL Server,SQLite,Oracle 等,应用领域广泛,几乎涵盖各种数据库,因此广受用户的青睐。
Navicat 使用户可以连接到本机的主机和任何的远程服务器,对数据库的操作更加方便。同时它还支持数据表的建立,SQL 语言的搜索,数据的备份,导入,导出等,非常便于用户操作。
Navicat for MySQL 则是 Navicat 对 MySQL 支持的体现,它同样具有以上 Navicat 所具有的特点,因此非常适合本项目的开发。
3.1.4 虚拟环境的安装
在本项目中,需要安装许多插件,实现相应的功能,而这些插件只用于本项目,主机的主环境每不需要这些插件。所以,为了不影响主环境,将该项目放在一个独立的虚拟环境中,在该环境中下载安装相关的插件,作用于本项目。所以就需要安装 virtualenv 即可。
virtualenv 有以下优点:一是使不同应用开发环境独立;而是环境的升级不影响其他应用,也不会影响全局的 python 环境;三是它可以防止系统中出现包管理混乱个版本的冲突;
virtualenv 的安装也非常方便,只需在命令提示符中执行命令:pip install virtualenv 即可安装成功,之后就可以创建独立的虚拟环境了。
3.1.5 相关插件的安装
在用户登录注册页面需要使用验证码验证,这里可以使用已经存在的库来实现图片验证码的配置:pip install django-simple-captcha==0.4.6
在前端页面,某一页的数据可能会有很多,所有可能会占用多页,这里就需要实现分页功能:pip install django-pure-pagination
安装 xadmin 实现后台管理系统,使管理者对数据的增删查改的操作更加方便。
使用 djangoUeditor 实现富文本编辑,可以同时插入文字,图片,文件等,而不只是某一指定类型。
以上插件的安装只需在命令提示符中进入该项目所在的虚拟环境,然后使用执行相关的命令进行安装即可。
3.2 开发语言简介
3.2.1 Python 介绍
Python 是目前使用比较广泛的标准程序设计语言之一。它的变量在使用的过程中可以改变类型,而不像 C 和 C++ 之类的变量在一个程序中该变量只能是一种类型,因此,Python 也是一种动态语言。因为他的变量类型可以随意改变。Python 最初是作为一种脚本语言开发而来,它可以用于编写各种自动化测试脚本,是开发代码的运行更加快捷。而随着使用者越来越多,不断的有人开发添加新的功能,使得 Python 的源码更加丰富,功能更加强大。因此,Python 慢慢的也被更多人用于项目的开发。
Python 在设计之初,设计者遵循的理念就是“人生苦短,我用 Python”,从这句话中,也可以体现出 Python 这门语言的特点,就是容易读,容易维护,易于编写。Python 提供了大量的库函数供使用者调用,因此使用者可以更加方便的进行操作。例如在文件,字符串的处理方面,Python 就提供了大量简易的接口供开发者使用,这一点相对于 C 和 C++ 来说,就会更加方便。同时,Python 是一种面向对象的语言,它的整数,字符串,函数等都是一个个的对象,而对象具有封装,继承等的特点,就可以使代码重用,简化代码的编写。
Python 在代码规范方面做了很大的改进,如代码缩进,语句的结束等,使代码看起来更加的美化,可读性更强。
Python 程序运行时会首先将源代码转换为字节码,再由 Python 的虚拟机将字节码转化为相应的可执行程序。
3.2.2 Django 介绍
Django 是一个开源的,应用广泛的,由 Python 编写的 Web 框架[4]。Django 是一种基于 MVC 的模式。除此之外,还有一个模板 T 至关重要。M(Model)指的是模型,它指的是数据如何存储以及数据之间的关系等,比如一个用户包含学号,姓名等字段,而这些字段以什么样的方式进行存储,就是在 Model 中需要体现的部分。C 指的是控制器。控制器用于接收用户的输入,该部分不需要开发者完成,而是由框架自身来进行操作的。V(Views)指的是视图,在该部分主要是开发者对数据如何处理,然后在返回给前端页面中,比如对数据排序之后显示在前端页面中等。T(Template)指的是模板,它是将开发者处理过的数据显示的前段页面中,通过模板继承等可以对代码进行重用,更便捷的进行操作。
Django 允许开发者使用第三方插件以完善自己的项目功能,亦可以自行开发一些所需的插件。例如上述介绍过的图片验证码插件,副文本编辑器插件,都是为了完善相应的功能而安装的第三方插件。
Django 还提供强大的对象关系映射即 ORM。他将上述所说的模型和数据库连接起来,提供非常简便的 API 来对数据库进行增删查改等操作。同时,也可以使用数据库原生的 SQL 语言来对数据库进行操作。
Django 是一个开源的项目,因此对于开发者来说非常友好,直接在命令提示符中使用 pip 进行安装即可。
四、网站需求分析
4.1 网站性能需求分析
本系统是基于 B/S 即浏览器/服务器模式运行的。源代码在服务器上运行起来后,用户通过指定的 url 来访问该网站。在用户访问时,有下面几方面需要注意的:
- 网站的安全性。在本网站中有用户注册和登录模块,所以用户会输入用户名和密码等私人信息,此时就需要对该类敏感信息进行保护,以防不法用户盗取,损失用户的权益。
- 网站的健壮性。当用户错误操作时,不至于使整个系统崩溃,致使所有用户都无法访问。
- 网站的操作简易性和界面美观性。当用户访问该网站时,可以根据页面设计很快的了解网站所提供的功能,并且很容易的找到自己所需的内容。
- 网站的承压能力。当很多用户同时访问本网站时,网站能否给予快速响应。
4.2 网站功能需求分析
4.2.1 概述
设计该网站的目的是便于早教中心管理者的管理,教师便于添加,修改,删除课程,机构教师的介绍,用户能够更加了解该早教机构等。本系统供三类用户使用,一是普通用户,二是教师,三是管理员呢。教师和管理员是机构中的工作人员,它们需要对网站中的一些内容进行增删查改,所以具有一定的权限。而普通用户只能访问前端页面。教师和管理员添加数据时,需要登录后台管理系统。而普通用户没有权限登录后台管理系统。管理员具有本系统的所有权限,所以可以为教师分配一定的权限。这三类用户均可进入前端页面访问网站。所以,从以上几方面对网站进行设计。
4.2.2 用户注册
用户通过指定的 url 访问本网站之后,会进入网站首页。如果用户没有注册,网站中的响应功能就不能使用,此时就要进行注册。根据系统提示进行注册。注册的部分包含邮箱或者姓名字段,还有就是用户需要设置的密码字段,最后就是图片验证码字段。用户通过输入以上字段进行注册,后台服务器会首先检查用户名,密码,验证码字段是否为空,为空则注册失败,不为空是否合法,如果不合法也会注册失败。数据不为空且合法之后,就会注册成功,后台服务器会将用户名和密码保存在数据库中,用户注册的用户名和密码可以使教师和管理员用于前端页面和后台管理系统的登录。
4.2.3 用户登录
用户通过访问指定的 url 会进入网站首页面,如果用户没有注册,则先进行注册,如已经注册,只需直接登录即可。这里的登录分为两种,一种是前端页面的登录,一种是后台管理系统的登录。前端页面所有人都可以访问,而后台管理系统只有管理员和机构的工作人员可以登录。这两种登录使用的都是同一用户名和密码。登录的部分与注册类似。需要使用用户名和密码进行登录,还需要验证码进行验证。用户输入用户名时,后台服务器会首先在数据库中查看该用户名是否注册过,如果未注册,则登录失败;如果用户名注册过,但是密码错误,也会登录失败;如果验证码书写错误;同样也会登录失败,只有用户名,密码,验证码都正确的前提下,用户才会登录成功。
4.2.4 机构课程分析
对于机构的课程,分为两种类型,一是基础课程,也就是概括性的课程,比如音乐课,全明星课程等。另一个是更详尽的课程,就是根据基础课程开设更多相关的详尽课程,比如,对于音乐课来说,会开设“我的音乐课之旅”等类似的课程。
上述课程主要是由授课教师添加进数据库中,并拥有对数据库的修改,删除,查找的权限。并对相关的课程进行描述,使用户能够直观的了解该课程。
在基础课程的描述中,需要包含课程的名称,课程教授的知识,使用户能够更加清楚的了解,孩子在学习了这门课程之后,在哪个方面能够有所提升。
在课程的描述中,需要包含课程的详尽信息。如课程的名称,需要直观的显示在前端页面中;课程的授课教师,也需要使家长和孩子能顾更加清楚;课程的授课时间也是非常重要的信息;课程最大可报名人数;本用户是否报名;收藏信息,收藏人数;课程的基本简介信息,这些都是需要展示在前端页面中的,这样用户才能更好的了解该课程并报名参加。
4.2.5 机构教师分析
对于机构的教师信息,也分为两部分。一是日常课程的授课教师,另一个是本机构拥有的具有名望的专家级教师。通过对不同级别教师的列举,使用户能够了解本机构所拥有的雄厚的师资力量,使家长能够更放心的将自己的孩子送到本机构进行启蒙教育。
授课教师主要由管理员添加进数据库中,并拥有是对数据库中进行增加教师,删除教师,查找教师,修改教师的权限。
对于专家教师来说,需要包含教师的姓名,年龄,从业经历,拥有的光荣事迹,从事的领域等,这些都需要展示在前端页面中,供用户参考,作为用户选择本机构的优势。
对于普通教师来说,与上述相似,也需要包含姓名,年龄,从业年龄,教授的课程等,展示在用户眼前。
4.2.6 用户中心分析
用户中心主要是保存用户自己的信息的。主要包含以下信息:个人资料,我的课程,我的收藏,我的消息,我的课表五个模块。
在个人资料模块,主要是用户的个人信息,包含用户的头像,昵称,生日,性别,地址,联系方式等,在这里,用户修改自己的个人信息。
在我的课程模块,主要显示的是用户已经报名的课程,即用户需要去上课的课程。用户在课程界面点击我要报名之后,后台逻辑会将该课程保存在后台数据库中,然后会将数据库中这部分信息显示在这里,供用户参考。这里的课程是上述机构课程的外键。
在我的收藏模块,包含两部分内容,一部分是用户收藏的授课教师,一部分是用户收藏的课程。在授课教师和机构课程页面,用户点击收藏之后,收藏的相关信息会保存在这里。这里的授课教师是上述机构教师的外键,课程是上述机构课程的外键。
在我的消息模块,显示的是向用户发送的消息。包含系统向用户发送的消息。信息文本包含信息发送的时间和内容。
在我的课表模块,系统管理员会将最近一周的课程发送给所有用户,用户可以根据该课表选择是否为孩子报名该课程。
4.3 用例模型
4.3.1 概述
本系统的使用人群分为三类,一是网站的管理员,拥有该网站的最高权限,即对所有数据的增删查改权限以及对其他两类人群权限的分配;二是机构教师,教师的权限包含对课程信息的描述等,他们的权限有管理员分配而得;三是用户,用户基本上只有查看的权限,它的权限也是由管理员分配而得。
4.3.2 管理员用例模型
系统的管理员拥有对本网站操作的最高权限。一般由早教机构的领导者组成。管理员拥有对所有数据增删查改的权限,还可以为其他用户分配权限等。
首先是本网站的用户信息。管理员通过登录后台管理系统可以增加,删除,查找,修改用户信息。用户信息包含用户名,用户密码,电子邮件,生日,性别,地址,头像,是否会员等,管理员拥有对这些增加,删除,查找,修改的权限。同时可以为该用户分配权限和组,使该用户拥有一定的权限,或者指定该用户为职员状态或超级用户。其中职员用户可以登录到后台管理系统,根据自己所拥有的权限对数据进行增删查改,超级用户与管理员权限相同,拥有所有权限。
本网站是为早教机构服务的,早教机构中包含许多教师。因此教师的增加,删除,修改也是由管理员完成的。教师信息包含教师名称,工作年限,教学特点,教师类别,头像等属性,均可由管理员进行增删查改。
机构内还包含许多课程,这些课程的相关信息也可由管理员来维护。
另外,本网站的一些日志信息,组和成员权限的分配,管理员都可以对其进行操作。
管理员通过用户名和密码登录该网站之后即可进行上述操作。
4.3.3 教师用例模型
本机构的教师的权限有管理员分配而得。教师的权限为职员状态,通过用户名和密码即可以登录后台管理系统对部分数据进行增删查改。教师可以对所教授课程进行增加,删除,查找,修改操作。课程信息包括课程名称,课程描述,教师名称,课程详情,课时数,难度等都是由教师来进行操作维护的。
4.3.4 用户用例模型
本网站的用户对后台管理系统没有访问权限。用户通过用户名和密码只能访问前端页面对信息网站的信息进行查看。另外可以填写自己的相关信息,如头像,报名信息,收藏信息等。
五、网站设计
5.1 系统结构设计
该系统的结构设计如下图所示:
图 4-1 系统机构设计图
本系统包括以下模块:注册模块,登录模块,机构教师管理模块,普通用户模块,注册用户模块,管理员模块。各模块如下:
5.1.1 注册模块
图 4-2 用户注册图
由上图可知,本系统的三类用户:管理员,教师,用户。他们需通过用户名和密码进行注册,才能访问该网站。用户名一般由手机号和邮箱地址组成。密码由用户自己书写。当书写了合法的用户名和密码之后,后台服务器会将用户名和密码放入后台数据库中。用户注册成功,然后就可以访问本系统了。
5.1.2 登陆模块
图 4-3 用户登录图
由上图可知,管理员,教师,用户通过用户名和密码登录本系统。当用户未注册时,会登录失败;当用户已经注册,但是用户输入的密码与保存在数据库中的密码不符时,同样也会登录失败。只有用户名和密码均准确的前提下,用户才能登陆成功。
上述的管理员和教师除了可以和普通用户一样登录该网站页面之外,他们还可以登
录本系统的后台管理系统对数据进行增删查改。后台管理系统也是通过相同的用户名和密码进行登录的。
5.1.3 机构教师管理模块
机构内教师信息由管理员添加。而教师负责的内容是管理机构内课程,对课程信息进行显示,是用户更加了解该课程。
图 4-4 机构教师图
由上图,机构教师通过用户名和密码登录本系统之后,对课程信息进行管理。当有新的课程要教授时,教师就可以进行添加。教师需要将课程的上课时间,授课教师,课时数,课程详情等添加进数据库中,随后就可以显示在前端页面中。同时,教师可以修改课程的相关信息。当课程已经完成后,教师就可以删除该课程了。
5.1.4 管理员模块
图 4-5 管理员图
上图中,管理员通过用户名和密码登录过后,进入本系统。管理员拥有最高权限。主要的任务是:添加用户,修改用户,删除用户;还有当有教师加入本机构时,管理员将其添加进本系统中,同时可以修改教师信息,当某个教师离职时,就可以将其信息删除。管理员可以将不同类型用户分组,如普通用户是一组,教师用户是一组,对不用的组别,分配不同的权限。
5.1.5 注册用户模块
图 4-5 普通用户图
上图中,普通用户通过用户名和密码登录本系统后,进入系统的前段页面,用户可以查看前端页面显示的机构,教师,课程信息。对于喜欢的课程和教师,用户可以进性收藏,对于感兴趣的课程,用户可以报名参加。用户可以进入个人中心编辑个人资料,查看发送给自己的信息,同时查看本周的课表等。
5.1.6 普通用户模块
普通用户与注册用户类似,通过用户名密码登录本系统后,可以查看机构,课程,教师信息;可以编辑个人资料,查看信息,收藏课程,收藏教师;唯一与注册用户不同的是,普通用户不能报名课程。只有成为注册用户后才可以报名课程。
5.2 系统数据模型设计
5.2.1 -R 图
现实世界中,事物之间和事物内部之间是有联系的。事物内部的联系是指事物和属性之间的联系,事物之间联系指事物与事物之间的联系。而 E-R 图就明确的表示了实体型,属性,联系。下面就是用 E-R 图来表示事物的联系,使用户更加明确。
用户实体及属性:
图 4-6 用户实体与属性 E-R 图
教师实体及属性
图 4-7 教师实体与属性 E-R 图
课程实体及属性:
图 4-8 课程实体与属性 E-R 图
实体与联系
图 4-8 实体与联系 E-R 图
5.2.2 关系模型
关系模型,顾名思义,是由一组关系组成。在本系统中,用户登录之后可以对课程进行收藏,这就是一种关系。一个关系可以对应一张表。如下图:
表 4-1 用户收藏表
用户名 | 数据 id | 数据类型 |
---|---|---|
1@1.commailto:1@1.com | 1 | 1 |
2@2.commailto:2@2.com | 2 | 1 |
3@3.commailto:3@3.com | 3 | 3 |
.... | ..... | ..... |
上图中,用户名即表示收藏课程的用户,这里的用户是用户表中用户的外键,数据类型指的是收藏类型,1 表示课程,3 表示教师。数据 id 指的是课程或教师的 id。
下图表示的是用户报名关系。
表 4-2 用户报名表
用户名 | 数据 id |
---|---|
1@1.commailto:1@1.com | 1 |
2@2.commailto:2@2.com | 2 |
3@3.commailto:3@3.com | 3 |
..... | ..... |
上图中,用户名即表示报名课程的用户,这里的用户是用户表中用户的外键,数据 id 指的是课程 id。
5.3 数据库设计
本系统中使用 MySQL 存储数据,具体的数据库设计如下表:
表 4-3 系统数据库表
信息表 | 表描述 |
---|---|
用户信息表 | 描述学生用户信息 |
机构教师表 | 描述机构教师信息 |
机构课程表 | 描述机构课程信息 |
用户收藏表 | 描述用户的收藏信息 |
用户报名表 | 描述用户的报名信息 |
5.3.1 用户信息表
这里的用户指的是普通用户和注册用户,即学生用户。用户字段包括:用户昵称,用户生日,用户性别,用户地址,用户联系方式,用户头像,用户类别,是普通用户还是注册用户,用户名,用户密码,如下表:
表 4-4 用户信息表
字段 | 数据类型 | 长度 | 允许为空 | 说明 |
---|---|---|---|---|
nick_name | CharField | 50 | 允许 | 用户昵称 |
birthday | DateField | 允许 | 用户生日 | |
gender | CharField | 10 | 允许 | 用户性别 |
address | CharField | 100 | 允许 | 用户地址 |
mobile | CharField | 11 | 允许 | 用户电话 |
category | IntegerField | 允许 | 用户类别 | |
username | CharField | 100 | 不允许 | 用户名 |
password | ChaeField | 100 | 不允许 | 用户密码 |
image | ImageField | 100 | 允许 | 用户头像 |
5.3.2 机构教师表
早教机构中的教师字段包括:教师名称,教师的工作年限,教师的教学特点,教师类别,是普通教师还是专家教师,教师的收藏数,教师年龄,教师头像。
表 4-5 机构教师信息表
字段 | 数据类型 | 长度 | 允许为空 | 说明 |
---|---|---|---|---|
name | CharField | 50 | 不允许 | 教师名称 |
work_years | IntegerField | 允许 | 工作年限 | |
points | UEditorField | 允许 | 教学特点 | |
category | IntegerField | 允许 | 教师类别 | |
fav_num | IntegerField | 允许 | 收藏数 | |
age | IntegerField | 允许 | 教师年龄 | |
image | ImageField | 允许 | 教师头像 |
5.3.3 机构课程表
课程字段包含:课程名称,授课教师,这里的教师是上述教师的外键,课程详情,是否是详细课程,课程的难度,有初级,中级,高级,课程的课时数,课程的报名学习人数,课程的报名人数上限,课程的收藏人数,课程的封面图,课程类别,常规课还是主题课,课程的上课时间,如下表。
表 4-6 机构课程信息表
字段 | 数据类型 | 长度 | 允许为空 | 说明 |
---|---|---|---|---|
name | CharField | 50 | 不允许 | 课程名称 |
teacher | ForeignKey | 允许 | 授课教师 |
续表 4-6
字段 | 数据类型 | 长度 | 允许为空 | 说明 |
---|---|---|---|---|
detail | UEditorField | 允许 | 课程详情 | |
Is_detail | BooleanField | 允许 | 详情课程 | |
degree | IntegerField | 允许 | 课程难度 | |
learn_times | IntegerField | 允许 | 课时数 | |
students | IntegerField | 允许 | 学习人数 | |
limit | IntegerField | 允许 | 人数上限 | |
fav_nums | IntegerField | 允许 | 收藏人数 | |
image | ImageField | 100 | 允许 | 课程封面 |
category | IntegerField | 允许 | 课程类别 | |
time | CharField | 300 | 允许 | 上课时间 |
5.3.4 用户收藏表
用户收藏表记录的是每个用户收藏的课程或教师,包含的字段为:用户,这里的用户为上述用户的外键;收藏类型,包含教师和课程,数据 id,如果类型是教师,则指的是教师的 id,如果类型是课程,则指的是课程 id。
表 4-7 用户收藏表
字段 | 数据类型 | 长度 | 允许为空 | 说明 |
---|---|---|---|---|
user | ForeignKey | 不允许 | 收藏用户 | |
fav_id | IntegerField | 允许 | 收藏数据 id | |
fav_type | IntegerField | 允许 | 收藏类型 |
5.3.5 用户报名表
用户报名表记录的是每个用户的课程报名信息,包含的字段为:用户,这里的用户与上述的收藏表中的用户类似,都是用户信息表中用户的外键,数据 id 指的就是课程的 id。
表 4-8 用户报名表
字段 | 数据类型 | 长度 | 允许为空 | 说明 |
---|---|---|---|---|
user | ForeignKey | 不允许 | 报名用户 | |
fav_id | IntegerField | 允许 | 课程 id |
5.4 编码设计
5.4.1 Python 编码规范
Python 的命名规则:变量名,包名等使用小写字母开头,当有对个字母组成时,第一个单词以小写字母开头,其余单词大写字母开头,即驼峰命名法。或者使用下划线将各个单词连接;类名一般使用大写字母开头,多个单词组成时,每个单词都大写;函数名和变量名相同,可以采用驼峰命名法,还可以使用下划线进行连接。对函数,变量,类等进行命名时要做到见名知意,这样才能使代码的可读性更强。
Python 中对代码缩进非常严格,因为 Python 中使用代码缩进来表示作用域,若是不规范,则会出错。
Python 中的语句分隔与 C,Java 等不同,它不使用分号来表示语句的结束,而是直接使用换行符表示语句的结束。当在多行中写一条语句时,使用反斜杠进行分隔。
5.4.2 HTML 编码规范
HTML 中的元素推荐使用小写字母,建议每个元素都要关闭,属性值推荐使用引号,只有属性值包含空格时才使用引号等。
5.5 安全性设计
当用户操作失误时,为防止系统崩溃,影响其他用户,需要配置 404 页面。
SQL 注入指的是通过输入 SQL 语句,非法读取,篡改,删除数据库中的数据。造成该问题的原因是对用户的输入数据没有进行检查,这样就可能造成:盗取用户的各类敏感信息,非法获取利益,通过修改数据库修改前端页面上的内容,注入木马等。为防止这种现象,需要对用户的数据进行严格的检查。
xss 攻击:服务器没有对用户传输的 url 进行校验,造成 xss 攻击。非法用户通过获取受害者浏览器的 session_id,直接向浏览器发送信息。这样可能会造成:非法盗取用户账号,获取企业重要的具有商业价值的资料,非法转账,控制受害者机器向其他网站发送攻击,注入木马等。
六、网站实现
6.1 网站前端页面设计
6.1.1 首页设计
在浏览器中输入指定 url 后进入网站首页,如下图所示:
图 5-1 网站首页图
图 5-2 网站首页图
图 5-3 网站首页图
由上面的图中网站的首页分为三部分。在第一张图中包含机构的联系电话,用户的登录状态,机构名称,以及对课程等的相关搜索,网站的主体标题。下面的图片即为机构的基本介绍;在第二张图中显示的是本机构的课程介绍,当点击相应的图标时,会跳转到课程介绍页面;第三张图中显示的是本机构的教师介绍,当点击相应的图标时,会跳转到相应的教师介绍页面。
6.1.2 注册页面设计
进入网站首页后,如果用户没有注册,点击图 5-1 中的注册按钮跳到注册页面进行注册:
图 5-4 网站注册页面
由上图可以看到注册时需要正确填写邮箱,密码,验证码。注册成功之后点击“注册并登录”即可重新回到首页。点击下方的“立即登录”即可进入登录页面,点击右上方的“回到首页”即可进入网站首页。当邮箱,密码,验证码中任一个出现问题时,页面会提示相应的错误。
6.1.3 登录页面设计
当点击图 5-1 中的“登录”按钮或者上图中的“立即登录”,会进入到登录页面:
图 5-4 网站登录页面
登录页面与注册页面类似,登录时,需输入正确的用户名和密码,否则会登录失败。点击“立即登录之后”,会进入网站首页。当点击下方的“立即注册”时,会进入注册页面。当点击右上方的“回到首页”时,会进入网站首页。当用户名或密码出错时,会显示相应的错误:
图 5-4 网站登录出错页面
当用户登录成功进入首页后,页头部分即为用户的头像和用户名。
6.1.4 教师/专家页面设计
在网站首页中点击“教师/专家”,即进入该页面:
图 5-5 教师/专家页面
图 5-6 教师/专家页面
由上面两张图,教师/专家页面有教师和专家组成。首先页头部分与首页相同,由联系方式和用户名组成,以及下面的搜索框,标题栏均与首页相同。这里就运用了 django 中的模板继承。标题头下面的“首页-> 课程讲师”,通过点击可以直接跳转到相应的页面。再下面就是教师和专家列表,通过点击专家或教师,显示对应的教师或专家列表。同时会统计教师和专家的总人数。最下方有一个分页功能。这里会显示教师的图片,年龄等相关信息。通过点击右侧的“查看详情”,进入教师详情页:
图 5-7 教师详情页面
上图是对某个教师的详细介绍,同时用户可以收藏该教师。用户点击收藏之后,后台的逻辑会将其计算进教师的总收藏数中,将其保存在后台的数据库中。
6.1.5 课程介绍
通过点击标题栏中的“课程介绍”,进入课程介绍页面:
图 5-8 常规课页面
上图是课程中的常规课列表。该页面的页头部分与首页相同。下面是机构中开设的常规课程。这里的课程指的是概括的课程。
图 5-9 主题课页面
上图是课程中的主题课列表。下面是超过多页面的页码显示。通过点击图片,进入课程详情页:
图 5-10 课程详情页面
6.1.6 课程报名
点击标题栏中的“活动报名”进入课程报名页:
图 5-11 课程报名页面
首先,这里的课程是针对上述的课程的详细课程。也分为常规课和主题课部分。页面中显示课程的封面,名称,上课时间,收藏人数等。右侧栏部分显示热门课程推荐。通过点击封面,进入详情页。
图 5-12 课程报名页面
上图是该课程的详细信息以及报名收藏信息。通过点击收藏和报名信息来对课程进行收藏和报名。这里的报名只适用于注册用户。如果是普通用户,则会报名失败。
6.1.7 个人资料页面
通过点击上图页面中顶部部分的用户名或头像,点击“进入个人中心”,左侧栏中是有关用户的一些信息,通过点击“个人资料”,来修改个人资料:
图 5-13 个人资料页面
在上述页面中可以修改用户的相关信息。
6.1.8 我的课程页面
通过上述页面左侧栏的“我的课程”,进入我的课程页面:
图 5-14 我的课程页面
上图中显示的是用户报名的课程信息。
6.1.9 我的收藏页面
通过上述页面左侧栏的“我的收藏”,进入我的收藏页面:
图 5-15 教师收藏页面
图 5-15 课程收藏页面
“我的收藏”页面中分为两部,一是教师收藏,二是课程收藏。都是用户的收藏信息。在这里也可以删除收藏。
6.1.10 本周课表页面
通过点击上图中的“本周课表”,进入本周课表页面。
图 5-16 课表页面
除此之外,如果要退出登录,只需点击用户头像,点击“退出”即可。
6.2 后台管理系统
后台管理系统是使用 xadmin 打造而成。使用 xadmin,用户只需定义数据的字段等信息,xadmin 就可以在数据库中生成对应的数据表。然后创建后台管理系统,方便管理员对数据的增删查改。
6.2.1 后台管理系统登录
定义后数据之后,使用命令创建超级用户,这里的超级用户即为管理员,具有网站的所有权限。然后登录后台管理系统:
图 5-17 后台管理系统登录页面
通过创建超级用户时使用的用户名和密码就可以登录后台管理系统。
图 5-18 后台管理系统首页面
如上图,为后台管理系统登录的首页面。左侧栏为标题栏。其中“管理”和“认证和授权”是系统自动提供。其余的每个目录是 django 中的一个 model。而每个 model 下的目录类似于一张表。管理员对表进行增删查改操作。
6.2.2 后台管理系统表结构
图 5-19 后台管理系统首页面
上图显示的是用户信息,即用户这个表拥有的记录数。通过点击“增加用户信息”来添加用户记录。通过点击用户前方的小方框,对用户进行删除,通过点击用户面来对用户信息进行修改和删除。
6.2.3 用户信息
图 5-20 用户信息页面
通过对上述字段的修改来修改用户信息,或者点击”删除“删除用户信息。
6.2.4 组和权限
一般用户是不能登录后台管理系统的。而机构的职员比如教师,可能要对课程进行编辑,所以管理员一般会为其设置为职员状态,这样他就能登录后台管理系统,管理员为其分配部分的权限。
图 5-21 用户状态信息页面
管理员既是职员,也是超级用户,如果某个用户是职员,就可以登录到后台管理系统,如果某个用户是超级用户,就拥有了所有权限。
- 图 5-22 组和权限页面
- 上图是管理员对组和权限的分配情况。
- 下图是某个用户是职员状态,可以登录到后台管理系统,但是没有任何的权限;
图 5-23 组和权限页面
上述两个页面,教师或管理员通过在后台管理系统中添加数据,然后将数据显示在前端页面中供用户观看。
七、软件测试
7.1 测试目的
软件测试是通过人手工的方式或自动化测试的方式根据然健的需求来检测软件是否出现错误并满足预期要求。软件测试一方面是找出程序中的错误与不符合预测的地方,另一方面更是要找出软件的某些功能是否合理化,是否需要改就等。通过找出错误,然后总结原因,生成报告,吸取经验,避免之后再次发生。测试应该伴随着开发而进行,而不是等开发完成再开始,这样及费时费力,也有可能已经发生不可挽回的错误,需要从头再来。所以测试时,首先要对测试的项目进行分析,制定测试方案,确定好时间,人力,物力的需求,为之后的测试准备好基础。然后根据需求设计测试用例,保证功能能够正常实现。然后开始进行编码,执行测试用例,找出错误。然后对错误进行分析,提交报告等。
7.2 方法
随着计算机技术的不断发展,需要开发的项目越来越大,测试的方法也随之越来越多。下面列举几种常见的[7]:
UI 测试,即用户界面测试,是指软件的界面风格是否满足用户的需求,界面是否美观,简单易懂等方面是否满足。
冒烟测试,指的是测试时间短,只需要一袋烟的时间就可以了。冒烟测试要保证产品的基本功能能够实现,如果实现不了,就交给开发人员重新修改,如果实现了,测试人员才开始进行后续全面的测试。
白盒测试,见名知意,是一个透明的盒子,可以看见内部的结构,就测试人员需要知道内部的结构构成和实现。所以需要对内部的功能进行测试。比如要实现一个函数接口,不仅要测试调用该函数之后,函数的功能是否实现,还需要测试内部该函数内部的实现功能是否合理正常。白盒测试一般由开发人员完成,比如利用 C++ 写的代码,利用 GTest 对代码进行测试,即用代码测试代码,来保证代码的正常实现。
与白盒测试对应的就是黑盒测试,黑盒测试,与之相,不会不能看到内部的结构,不需要明白内部的实现功能,只需要测试接口是否正常,是否能够实现相应的功能。黑盒测试的实现一般由测试人员进行完成。
自动化测试,顾名思义,就是自动实现。针对某项功能编写测试脚本,模仿人的动作,是其根据代码自动执行。一般在对项目进行性能测试或者功能测试时实现,他的使用场景:一是需要频繁重复的测试,这样就不需要人力来一直进行重复的动作,节约人力成本;二是项目的使用周期长,如果项目的使用周期短,不在使用之后就是一种浪费,三是该功能变动小,如果该功能频繁变动,就需要不断的修改测试脚本来适应其变化,所花费人力,物力等也非常大。
- 单元测试,是指对项目的某个功能或某一代码块进行测试,也是以代码测代码的方式,类似于白盒测试,由开发人员完成。
- 集成测试,是在个部分功能已经正常实现的情况下,对各部分功能进行联合测试,测试多个接口在组合使用是否出现问题。这也是由开发人员来完成的。
- 系统测试,是根据测试方案的需求对整个系统进行测试,观察系统实现了相关的功能,系统测试是黑盒测试,只需要测试每个接口是否实现对应的功能。
回归测试是指,在修改了某个错误之后对之前测试过的功能重新进行测试,避免因新的修改影响到之前正常的功能。或者在版本升级,修复是也是需要进行回归测试的。对于之前功能的重新测试是非常繁琐的,此时就需要使用自动化测试来提高效率,所以在回归测试时最好使用自动化测试来进行。
7.3 测试用例及结果分析
7.3.1 用户注册模块的测试
测试用例:通过使用手机号,邮箱,非前两者的内容,空内容填写用户名;通过使用小于 6 位或大于 20 位字符,带有中文字符,6-20 为之间非中文字符,,空内容填写密码,验证码正确填写,错误填写,验证码为空。
结果分析:只有当用户名为手机号或邮箱,密码在 6-20 位非中为字符,验证码填写正确的情况下,才能注册成功。
7.3.2 用户的登录模块的测试
测试用例:使用没有注册过的用户名,已经注册过的用户名但密码不正确,使用空用户名,使用注册过的用户名及空密码,注册过的用户名和对应的密码进行登录。
结果分析:只有使用注册过的用户名和对应的密码才能登录成功。
7.3.3 前端界面显示模块
测试用例:输入正确的或错误的 url 能否访问该网站。进入前端页面,观察前端页面中是否显示信息且显示的信息是否与后台数据库中相同。
结果分析:正确的 url 能访问本网站,前端页面将后台数据库中的数据均正确显示。
7.3.4 搜索功能模块
测试用例:输入包含错误关键字,正确关键字,能否搜索到想要的结果。
结果分析:当输入正确的关键字,结果显示正常。
7.3.5 用户收藏功能模块
测试用例:注册会员和非注册会员点击收藏教师,收藏课程;注册会员和非注册会员再次点击收藏教师,收藏课程。
结果分析:注册会员和非注册会员点击收藏按钮,按钮上显示“已收藏”,总的收藏人数加 1,在我的收藏页面有对应的教师和课程。注册会员和非注册会员再次点击“已收藏”按钮,按钮显示“收藏”,收藏人数减 1,在我的收藏页面对应的教师和课程已经不存在。
7.3.6 用户报名模块
测试用例:非注册会员在人数未达到上限时点击“报名”,非注册会员在人数达到上限时点击“报名”,注册会员在人数未达到上限时点击“报名”,注册会员在人数达到上限时点击“报名”。
结果分析:只有注册会员在人数未达到上限时点击“报名”,才能报名成功,此时,按钮上显示“已报名”,报名人数加 1,在我的课程页面显示对应的报名课程。
7.3.7 用户个人资料模块
测试用例:对基本信息安装正确或错误的格式进行修改保存。
结果分析:格式错误,修改失败,格式正确,修改成功。
八、总结
在本系统的开发过程中,虽然遇到了很多问题,但在最后都顺利解决了。非常值得欣慰。在本次项目中,我将数据库 MySQL,Django 和 Python 结合起来,设计了一个简易的早教中心管理系统。通过对该系统的设计,我在独立思考问题方面,HTML 标记语言的应用方面,Python 语言的编程方面,Django 语言的编程方面,word 文档的编辑方面都有了很大的提升。
首先,在思考问题方面,通过对该系统的市场需求进行分析,我了解到了该系统应该具有的基本功能,再针对每个功能,设计出相应的网页,在网页上运用恰当的控件,完成其相应的功能,然后找出各网页之间的联系,对具体每一步进行思考,找出解决的方案,最后将各网页联系起来,找出最终的解决方案。
其次,通过这次课设,进一步加强了我的 HTML 标记语言的运用能力,通过对各个控件的使用,我了解到了一些基本控件的功能,使用方法及使用场景等,在对网站进行开发时需要与数据库进行远程连接,而使用 Django 可以非常方便将其余数据库连接,并且操纵使用数据库,通过对 Django 的使用,使我在某些基本操作方面都得到了加强与巩固,使我受益良多。
然后,通过使用 Python 语言编写代码,使我进一步了解了他的优势。Python 中首先会提供非常多的库供开发者使用,这样就节省了一定的时间,其次它的编程风格非常简洁,使代码的可读性非常强,最后就是在 Python 的学习上,非常容易上手,因此,通过对 Python 的使用,使我了解到了一门简洁的编程语言。进一步巩固了我的编程能力。
最后,在 word 文档格式的设置方面,我也学会了许多,例如在段落布局,页面设置,页眉页脚,生成目录方面都有了充分的了解,发现自己以往所学知识的不足。
参 考 文 献
- Magnus Lie Hetland. Python 基础教程[M]. 北京: 人民邮电出版社, 2010.
- Eric Matthes. Python 编程:从入门到实践[M]. 北京: 人民邮电出版社, 2016.
- 明日科技. 零基础学 Python [M]. 吉林: 吉林大学出版社, 2018.
- 李健. Django2.0 入门与实践[M]. 北京: 清华大学出版社.2019.
- 施瓦兹. 高性能 Mysql[M]. 北京: 电子工业出版社, 2013.
- 塔皮奥拉赫登迈奇. 数据库索引设计与优化[M]. 北京:电子工业出版社, 2015.
- 曲朝阳, 刘志颖. 软件测试技术[M]. 北京: 中国水利水电出版社, 2006.
- 胡思康. 软件工程[M]. 北京: 清华大学出版社, 2012.
- 萨师煊,王珊编.数据库系统概论(第四版)[M].高等教育出版社.2006
参考文献
- 中小型培训机构管理系统的设计与实现(北京交通大学·刘小芳)
- 基于J2EE的学生信息管理系统(电子科技大学·钟海琴)
- 中小型培训机构管理系统的设计与实现(北京交通大学·刘小芳)
- 基于J2EE的教学辅助管理系统的设计与实现(电子科技大学·耿兴春)
- 基于J2EE的教学辅助管理系统的设计与实现(电子科技大学·耿兴春)
- 彭州成长教育教学交互平台的设计与实现(电子科技大学·曾付华)
- 基于JSP技术动态教学管理系统设计与实现(电子科技大学·董豪)
- 教学管理信息系统的设计与实现(山东大学·马彬)
- 基于SSH框架的幼儿园信息管理系统的设计与实现(大连理工大学·魏钢)
- 基于J2EE的教学辅助管理系统的设计与实现(电子科技大学·耿兴春)
- 彭州成长教育教学交互平台的设计与实现(电子科技大学·曾付华)
- 彭州成长教育教学交互平台的设计与实现(电子科技大学·曾付华)
- 基于J2EE的教学辅助管理系统的设计与实现(电子科技大学·耿兴春)
- 面向早期教育的知识管理服务平台的研究与设计(齐鲁工业大学·许佳)
- 基于J2EE的远程网络教育系统研究与实现(电子科技大学·陈南荪)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码导航 ,原文地址:https://bishedaima.com/yuanma/35771.html