摘 要
在当今信息时代,问答网站作为一种高效、便捷的知识分享与获取平台,受到了广大用户的青睐。问答网站不仅为用户提供了一个提问和解答的空间,更通过用户间的互动和分享,形成了丰富的知识库。而Django作为一款成熟、稳定且高度可扩展的Python Web框架,其强大的数据库操作能力、灵活的URL路由机制以及丰富的第三方库支持,使得它成为构建问答网站的理想选择。
基于Django的问答网站的设计与实现,旨在构建一个功能完善、交互友好、安全稳定的在线问答平台。通过整合Django框架的优势,实现用户注册登录、提问回答、评论互动、知识分类检索等核心功能,同时注重网站的可扩展性、可维护性以及用户体验的优化。
本系统采用了Django 框架进行开发,采用Python语言,使用了MySQL这一数据库,能够更好地满足消费者的需求,同时还能够提高数据的安全性、稳健性,从而更好地满足消费者的需求。
关键词:问答网站;Python语言;Django框架
Design and Implementation of a Q&A Website Based on Django
Abstract
In today's information age, question and answer websites, as an efficient and convenient platform for knowledge sharing and acquisition, have been favored by a large number of users. Q&A websites not only provide users with a space for questioning and answering, but also form a rich knowledge base through interaction and sharing among users. As a mature, stable, and highly scalable Python web framework, Django's powerful database operation capabilities, flexible URL routing mechanisms, and rich third-party library support make it an ideal choice for building question answering websites.
The design and implementation of a Q&A website based on Django aims to build an online Q&A platform that is fully functional, interactive, friendly, secure, and stable. By integrating the advantages of the Django framework, core functions such as user registration and login, question answering, comment interaction, and knowledge classification retrieval are achieved, while emphasizing the website's scalability, maintainability, and optimization of user experience.
This system is developed using the Django framework, Python language, and MySQL database, which can better meet the needs of consumers and improve the security and robustness of data, thus better meeting their needs.
Keywords:Q&A website; Python language; Django Framework
目录
1绪论
1.1 研究背景和意义
在当今社会,随着信息技术的飞速发展和知识获取的便捷性需求增加,问答网站作为一种高效、互动的知识分享与获取平台,受到了广泛关注和应用。Django作为一款功能强大、稳定可靠的Web开发框架,为构建功能完善、用户友好的问答网站提供了有力支持。基于Django的问答网站的设计与实现,旨在通过整合先进的Web技术和用户友好的交互设计,打造一个能够满足用户多样化知识需求、促进知识共享与传播的在线平台。这一研究不仅有助于提升用户的知识获取效率,推动知识的交流与传播,还能为知识生产者提供展示才华、交流思想的舞台,同时促进知识的持续优化和更新。因此,该项目具有重要的研究背景和实践意义,对于推动知识管理领域的创新与发展具有重要意义。
1.2 国内外研究现状
国外研究现状:
在国外,基于Django的问答网站设计与实现已经得到了广泛的研究和应用。Django框架的成熟性和稳定性使得它在Web开发领域具有很高的认可度。许多知名的问答网站,如Stack Overflow、Quora等,都采用了类似Django这样的高级Web框架进行构建。这些网站通过整合Django的强大功能,实现了高效的用户交互、数据管理和安全保障,为用户提供了丰富多样的知识分享与获取体验。
国内研究现状:
在国内,基于Django的问答网站设计与实现也取得了显著进展。随着国内互联网技术的快速发展和用户对知识分享的需求增加,越来越多的开发者开始关注并使用Django框架来构建问答网站。这些网站不仅在技术上追求创新和突破,还注重用户体验和交互设计,为用户提供了更加便捷、高效的知识获取渠道。同时,国内的研究者和开发者还积极探索将Django与其他先进技术相结合,如人工智能、大数据分析等,以进一步提升问答网站的功能和性能。
总体而言,无论是国外还是国内,基于Django的问答网站设计与实现都呈现出蓬勃发展的态势。随着技术的不断进步和用户需求的不断变化,这一领域的研究和应用将会更加深入和广泛。
1.3 论文组成结构
第一章是绪论,本文章的开头部分,对本题目的研究背景意义等一些做文字性的描述。
第二章研究了问答网站的所采用的开发技术和开发工具。
第三章是系统分析部分,包括系统总体需求描述、功能性角度分析系统需求、非功能性等各个方面分析系统是否可以实现。
第四章是系统设计部分,本文章的重要部分,提供了系统架构的详细设计和一些主要功能模块的设计说明。
第五章是系统的具体实现,介绍系统的各个模块的具体实现。
第六章在前几章的基础上对系统进行测试和运行。
最后对系统进行了认真的总结,以此对未来有一个新的展望。
2.1 B/S体系工作原理
B/S架构采取浏览器请求,服务器响应的工作模式。
用户可以通过浏览器去访问Internet上由Web服务器产生的文本、数据、图片、动画、视频点播和声音等信息;
而每一个Web服务器又可以通过各种方式与数据库服务器连接,大量的数据实际存放在数据库服务器中;
从Web服务器上下载程序到本地来执行,在下载过程中若遇到与数据库有关的指令,由Web服务器交给数据库服务器来解释执行,并返回给Web服务器,Web服务器又返回给用户。在这种结构中,将许许多多的网连接到一块,形成一个巨大的网,即全球网。而各个企业可以在此结构的基础上建立自己的Internet。
在 B/S 模式中,用户是通过浏览器针对许多分布于网络上的服务器进行请求访问的,浏览器的请求通过服务器进行处理,并将处理结果以及相应的信息返回给浏览器,其他的数据加工、请求全部都是由Web Server完成的。通过该框架结构以及植入于操作系统内部的浏览器,该结构已经成为了当今软件应用的主流结构模式。

。
2.2 Django框架介绍
Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的Horizon组件采用这种架构进行设计的主要原因。另外,在Django框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性。Django 项目源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有:
2.3.1 用于创建模型的对象关系映射;
2.3.2 为最终用户设计较好的管理界面;
2.3.3 URL 设计;
2.3.4 设计者友好的模板语言;
2.3.5 缓存系统。
Django(发音:[`dʒæŋɡəʊ]) 是用python语言写的开源web开发框架(open source web framework),它鼓励快速开发,并遵循MVC设计。Django遵守BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0 。
Django 根据比利时的爵士音乐家Django Reinhardt命名,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。
由于Django在近年来的迅速发展,应用越来越广泛,被著名IT开发杂志SD Times评选为2013 SD Times 100,位列“API、库和框架”分类第6位,被认为是该领域的佼佼者。
JSP可以放在在html里使用,也可以独自使用,它同时也具备有很多种优点,可以讲,Web脚本技术的先驱是JSP。现代编程语言(像C,python和Perl等)的一些最好的特点都融合在JSP里,Web服务器里的一些配置标准是由JSP、Tomcat和数据库等的组合在一起的。
2.3 MySQL数据库
MySQL经过多次的更新,功能层面已经非常的丰富和完善了,从MySQL4版本到5版本进行了比较大的更新,在商业的实际使用中取得了很好的实际应用效果。最新版本的MySQL支持对信息的压缩,同时还能进行加密能更好的满足对信息安全性的需求。同时经过系统的多次更新,数据库自身的镜像功能也得到了很大的增强,运行的流畅度和易用性方面有了不小的进步,驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化,能更加方便的在应用地图上进行坐标的标注和运算。强大的备份功能也保证了用户使用的过程会更加安心,同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新,增加了两个非常使用的显示区,一个是信息区,对表格和文字进行了分类处理,界面的显示更加清爽和具体。第二是仪表的信息控件,能在仪表信息区进行信息的显示,同时还能进行多个信息的比对,为用户的实际使用带来了很大的便捷。
针对本文中设计的问答网站在实际的实现过程中,最终选择MySQL数据库的主要原因在于在企业的应用系统应用及开发的过程中会存在大量的数据库比较频繁的操作,而且数据的安全性要求也是非常的高。综合这些因素,最终选择安全性系数比较高的MySQL来对问答网站后台数据进行存储操作。
数据库管理系统的总体结构图如下图所示。

图2-1 数据库组成结构
3系统分析
3.1 可行性分析
在软件开发的过程中,可行性分析是至关重要的,它旨在评估问题的可行性,以便尽可能快地解决,同时也要考虑到不同的解决方案的优势和劣势,以及实施这些方案所带来的经济效益。通过对问答网站的可行性分析,我们可以从技术、操作和经济三个方面来评估其可行性,从而为其提供有效的支持和保障。
3.1.1 技术可行性
基于Django的问答网站设计与实现具有高度的技术可行性。Django框架以其成熟的ORM映射、强大的模板系统、完善的用户认证与权限管理,以及出色的扩展性,为快速构建功能丰富、性能稳定的问答网站提供了坚实的技术基础,能够满足现代Web应用对于高效开发、灵活扩展和优质用户体验的需求。
3.1.2 经济可行性
问答网站采用Python和MySQL技术,这样可以有效地降低软硬件的开发与维护费用,同时又能够让用户更加轻松地访问系统,从而提高服务质量。此外,该网站的推出,可以有效地降低运营者的劳动强度,为企业带来更多的经济效益。虽然问答网站的构建并非特别困难,但由于它的投入相比较少,而且能够带来更高的效率,因此,我们认为这个系统的建立具有很强的可持续性,而且能够带来更高的经济效益,而且比起日常的维护与管理更具有价值。
3.1.3 操作可行性
基于Django的问答网站的设计与实现操作是非常可行的。Django框架提供了丰富的功能模块和强大的扩展性,能够快速构建问答网站所需的用户认证、问题管理、回答发布等功能,并通过Django的模型-视图-模板架构,实现灵活的业务逻辑和用户交互界面。同时,Django还提供了丰富的第三方库和插件,为问答网站的功能扩展和定制提供了便利,因此操作可行性极高。
3.2 需求分析
为了满足用户的需求,问答网站将系统划分为两个部分:注册用户和管理员,每个部分都有独特的功能,以便更加便捷地管理信息。此外,系统还具有简单易操作的特点,可以更加精确、全面地实现用户的需求。以下是关于该功能的详细描述:
普通用户模块:
首页:注册用户登录后,可以在首页浏览问答网站的热门问题、热门文章、热门动态等内容,方便用户快速了解最新的问答和讨论话题。
网站公告:用户可以在网站公告模块查看问答网站发布的公告信息,包括关于网站更
新、活动通知、重要公告等内容,方便用户及时获取相关信息。
文章信息:用户可以在文章信息模块浏览和搜索发布的文章,包括技术分享、经验总
结、学术论文等内容,方便用户学习和获取知识。
动态信息:用户可以在动态信息模块查看其他用户的动态,包括提问、回答、评论等,方便用户了解其他用户的讨论和互动。
提问信息:用户可以在提问信息模块发布自己的问题,得到其他用户的回答和解答,
促进知识的分享和交流。
回答信息:用户可以在回答信息模块回答其他用户的问题,分享自己的知识和经验,
帮助其他用户解决问题。
我的账户:用户可以在我的账户模块查看和管理自己的个人信息、账户余额、积分等,
方便管理自己的账户信息。
个人中心:个人中心包括个人首页、消息通知、文章草稿、文章信息、动态信息、提
问信息、回答信息、发送私信、收藏等功能。用户可以在个人首页查看自己的个人信息、上传头像等;消息通知功能可以让用户收到系统和其他用户的消息通知;文章草稿功能可以让用户保存和管理自己的文章草稿;文章信息功能可以让用户发布、修改和删除自己的文章;动态信息功能可以让用户查看自己和其他用户的动态;提问信息功能可以让用户查看和管理自己的提问信息;回答信息功能可以让用户查看和管理自己的回答信息;发送私信功能可以让用户与其他用户进行私密的消息交流;收藏功能可以让用户收藏自己喜欢的文章、问题等内容,方便用户随时查看和管理。
管理员模块
后台首页:管理员登录后可以访问后台首页,以查看问答网站的整体运行情况,包括用户数量、文章数量、问题数量等数据统计信息。
系统用户:管理员可以在系统用户模块进行系统用户的管理,包括添加新用户、修改用户信息、删除用户等操作,以保证系统的安全和正常运行。
标签类型管理:管理员可以在标签类型管理模块对问题和文章的标签进行管理,包括添加新标签、修改标签信息、删除标签等操作,方便进行内容的分类和管理。
消息通知管理:管理员可以在消息通知管理模块发布、修改、删除网站的消息通知,包括系统通知、活动通知等内容,方便向用户发送重要信息。
文章草稿管理:管理员可以在文章草稿管理模块查看和管理用户的文章草稿,包括修改草稿、删除草稿等操作,方便用户进行编辑和发布文章。
文章信息管理:管理员可以在文章信息管理模块查看和管理用户发布的文章,包括审核文章、修改文章信息、删除文章等操作,以确保文章内容的质量和合规。
动态信息管理:管理员可以在动态信息管理模块查看和管理用户的动态信息,包括审核动态、修改动态信息、删除动态等操作,以确保动态内容的质量和合规。
提问信息管理:管理员可以在提问信息管理模块查看和管理用户的提问信息,包括审核问题、修改问题信息、删除问题等操作,方便用户提问与回答的交流。
回答信息管理:管理员可以在回答信息管理模块查看和管理用户的回答信息,包括审核回答、修改回答信息、删除回答等操作,方便用户提问与回答的交流。
发送私信管理:管理员可以在发送私信管理模块查看和管理用户之间的私信,包括查看私信内容、回复私信、删除私信等操作,方便用户之间的私密交流。
根本以上功能需求得出以下用例图:
注册用户用例图如下所示。

图3-1 注册用户用例图
管理员用例图如下所示。
图3-2管理员用例图
根据用例图,对一些重要的用例进行描述。
登录用例描述如下表所示。
表3-3登录用例描述

个人信息管理用例描述如下表所示。
表3-4 个人信息管理用例描述

3.3 系统操作流程
3.3.1信息添加流程
问答网站可以实现快速、准确地收集和处理各种信息,而且在使用过程中,只有在按照指定的界面和指定的参考文献,才能够正确地获取和处理信息,而若信息未能满足预期,就会被退出第一步,并且在第二步中,还会继续检查信息的准确性,以确保最终的结果能够满足预期的目标。
图3-5信息添加流程图
3.3.2信息删除流程
无论是何种用户角色,只要进入了不正常的系统操作界面,就可以使用不同的信息内容来进行操作。当用户尝试删除系统中的数据时,必须先ACK这些数据是否已经被删除,如果没有,就应该按照图3-6的指示进行操作,以免影响系统的正常运行。
图3-6信息删除流程图
3.4本章小结
本章主要通过对问答网站的可行性分析、功能需求分析、系统用例分析,确定整个问答网站要实现的功能。同时也为问答网站的代码实现和测试提供了标准。
4系统设计
4.1 系统架构设计
当前,B/S架构的数据访问模式已经大大改善:用户只需要打开网站,就能够获取系统的信息,而且,系统会根据用户的需要,自动响应并解决所有的问题。此外,用户还能够查阅服务器的处理结果,从而更好地了解数据的流转情况。红桥社区的智能管理系统采用三层结构,即视觉-模拟-决策层。其中,视觉层负责接收来自用户的信息并将其呈现给用户;而模拟层则负责完成与用户有关的任务,包括组织信息、进行流程优化、提升用户体验。决策层则负责协商决策,并确保两层结果的一致性。
系统架构图如下图所示。
图4-1 系统架构图
4.2 系统功能结构
一旦您访问了这款应用,您需要完成一项重大的任务:通过认证,获得相应的权限。一旦您完成了认证,您将可以访问到一些关于您的服务,包括:系统用户、标签类型管理、消息通知管理、文章草稿管理、文章信息管理、动态信息管理、提问信息管理、回答信息管理、发送私信管理、系统管理、网站公告管理等。这个界面非常清晰明了,通过指引您就能轻松地完成各种任务。
系统的功能结构图如下所示。
图4-2 系统功能结构图
4.3 数据库设计
一个优秀的系统必须具备完善的后台数据库,就像建筑物一样,它不是一蹴而就的,而是需要经过精心设计,以确保其稳固可靠。只有将数据库设计得完善,并且考虑到各个方面,才能保证系统的可靠性,避免出现任何问题。
4.3.1 概念模型设计
下面是整个系统中主要的数据库表总E-R实体关系图。
图4-3 系统E-R图
4.4.2 逻辑结构设计
在这一步中,我们将概念转换为实际的数据。由于数据库中包含了大量的信息,我们只展示了一些表格。
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | answer_information_id | int | 10 | 0 | N | Y | 回答信息ID | |
2 | ask_users | int | 10 | 0 | Y | N | 0 | 提问用户 |
3 | question_topic | varchar | 64 | 0 | Y | N | 提问主题 | |
4 | question_time | datetime | 19 | 0 | Y | N | 提问时间 | |
5 | question_content | longtext | 2147483647 | 0 | Y | N | 提问内容 | |
6 | answer_number | varchar | 64 | 0 | Y | N | 回答编号 | |
7 | answer_users | int | 10 | 0 | Y | N | 0 | 回答用户 |
8 | answer_time | datetime | 19 | 0 | Y | N | 回答时间 | |
9 | answer_content | longtext | 2147483647 | 0 | Y | N | 回答内容 | |
10 | number_of_answers | int | 10 | 0 | Y | N | 0 | 回答数量 |
11 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
12 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_information_id | int | 10 | 0 | N | Y | 文章信息ID | |
2 | publish_users | int | 10 | 0 | Y | N | 0 | 发布用户 |
3 | article_title | varchar | 64 | 0 | Y | N | 文章标题 | |
4 | article_cover | varchar | 255 | 0 | Y | N | 文章封面 | |
5 | article_tags | varchar | 64 | 0 | Y | N | 文章标签 | |
6 | release_time | datetime | 19 | 0 | Y | N | 发布时间 | |
7 | article_content | longtext | 2147483647 | 0 | Y | N | 文章内容 | |
8 | number_of_articles | int | 10 | 0 | Y | N | 0 | 文章数量 |
9 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
10 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
11 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | 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 | 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 | draft_article_id | int | 10 | 0 | N | Y | 文章草稿ID | |
2 | publish_users | int | 10 | 0 | Y | N | 0 | 发布用户 |
3 | article_title | varchar | 64 | 0 | Y | N | 文章标题 | |
4 | article_cover | varchar | 255 | 0 | Y | N | 文章封面 | |
5 | article_content | longtext | 2147483647 | 0 | Y | N | 文章内容 | |
6 | record_time | datetime | 19 | 0 | Y | N | 记录时间 | |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | dynamic_information_id | int | 10 | 0 | N | Y | 动态信息ID | |
2 | publish_users | int | 10 | 0 | Y | N | 0 | 发布用户 |
3 | dynamic_title | varchar | 64 | 0 | Y | N | 动态标题 | |
4 | dynamic_display | varchar | 255 | 0 | Y | N | 动态展示 | |
5 | release_time | datetime | 19 | 0 | Y | N | 发布时间 | |
6 | dynamic_content | longtext | 2147483647 | 0 | Y | N | 动态内容 | |
7 | dynamic_quantity | int | 10 | 0 | Y | N | 0 | 动态数量 |
8 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
9 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | 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 | label_type_id | int | 10 | 0 | N | Y | 标签类型ID | |
2 | type_name | 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 | message_notification_id | int | 10 | 0 | N | Y | 消息通知ID | |
2 | registered_users | int | 10 | 0 | Y | N | 0 | 注册用户 |
3 | reminder_date | datetime | 19 | 0 | Y | N | 提醒日期 | |
4 | reminder_title | varchar | 64 | 0 | Y | N | 提醒标题 | |
5 | reminder_content | text | 65535 | 0 | Y | N | 提醒内容 | |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | 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已取消 |
表questioning_information (提问信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | questioning_information_id | int | 10 | 0 | N | Y | 提问信息ID | |
2 | ask_users | int | 10 | 0 | Y | N | 0 | 提问用户 |
3 | question_topic | varchar | 64 | 0 | Y | N | 提问主题 | |
4 | question_time | datetime | 19 | 0 | Y | N | 提问时间 | |
5 | question_content | longtext | 2147483647 | 0 | Y | N | 提问内容 | |
6 | number_of_questions_asked | int | 10 | 0 | Y | N | 0 | 提问数量 |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | registered_users_id | int | 10 | 0 | N | Y | 注册用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | interest_tags | varchar | 64 | 0 | Y | N | 兴趣标签 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | send_private_message_id | int | 10 | 0 | N | Y | 发送私信ID | |
2 | sending_users | int | 10 | 0 | Y | N | 0 | 发送用户 |
3 | receiving_users | int | 10 | 0 | Y | N | 0 | 接收用户 |
4 | sending_time | datetime | 19 | 0 | Y | N | 发送时间 | |
5 | subject_matter_of_text | varchar | 64 | 0 | Y | N | 内容主题 | |
6 | content_details | text | 65535 | 0 | Y | N | 内容详情 | |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | 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 | 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 | 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系统实现
5.1 登录模块的实现
在登录界面中输入用户名+密码,然后选择相应的角色,点击“登录”按钮,系统会在用户数据库表中匹配食堂
用户的帐户,如果用户名+密码正确,则会登录到系统中每个用户的主管理界面,否则会提示相应的信息,如果是忘记了密码,请返回登录界面。
用户登录流程图如下所示。
图5-1 用户登录流程
想要进入系统用户输入准确的姓名和密码,系统才会自动启动,并且会对用户的身份进行检查,若发现身份信息不符合要求,则会自动返回主界面,以便用户可以安全的登录使用。
系统登录界面如下图所示。

图5-2 系统登录界面
登录关键代码如下:
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 注册用户子系统模块的实现
5.2.1 用户首页模块
通过输入地址,用户可以轻松访问问答网站的首页,该首页由top、left、down和center四个部分组成,用户可以通过@ include来进一步了解该网站的内容。
首页载入流程图如下所示。
图5-3 首页载入流程
首页载入流程:系统首先连接数据库,调整显示界面参数,从中提取出数据表,使用html格式创建显示模板,根据添加时间顺序排列数据,并以模板指定的位置显示出来,然后重新调整显示界面,最后断开数据库的连接。
首页如下图所示。

图5-4 首页界面
5.2.2 用户资料修改模块
当您完成/注册操作,您就能够更新您的个人资料。您需要确保您的inputname值能够和您所属的实体类型的参数完全对应。当您更新您的个人资料时,您的账号密码应当保持完整,不能出现任何错误。您需要确保您的账号密码是唯一的,才能继续使用。
用户资料修改流程图如下所示。
图5-5 用户资料修改

图5-6 用户个人资料界面
用户资料修改代码如下:
增
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}
5.2.3 文章信息模块
管理员管理文章信息,用户点击想要查看的文章信息进入文章信息界面,浏览器自动弹出文章信息,文章信息通过调用Vue的<video>分类,将文章信息文件路径参数传入,完成文章信息,实现的文章信息的展示。
文章信息添加流程图如下所示。
图5-7 文章信息添加流程图
文章信息界面如下图所示。

图5-8文章信息界面
文章信息关键代码如下:
WSGI_APPLICATION = "app.wsgi.application"
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "project93355",
"USER": "root",
"PASSWORD": "root",
"HOST": "127.0.0.1",
"PORT": "3306",
}
}
5.2.4动态信息模块
管理员管理动态信息,用户点击想要查看的动态信息进入动态信息界面,浏览器自动弹出动态信息,动态信息通过调用Vue的<video>分类,将动态信息文件路径参数传入,完成动态信息,实现的动态信息的展示。
动态信息添加流程图如下所示。
图5-9 动态信息添加流程图
动态信息界面如下图所示。
图5-10动态信息界面
动态信息关键代码如下:
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}
5.3 管理员子系统模块的实现
5.3.1 管理员主页模块
当您注册并使用该账号时,您将会进入一个新的网站。该网站的首部分为top、left、center三个部分,其中@ include部分提供了一个详细的概述。该部分将会提供您的个人资料,例如您的账号、当前时间、当前使用的浏览器版本、服务器的端口数、您的授权、您的ip地址、您的操作系统类型、您的编程语言、您的编程人员、您的编程老师以及您的编程时间。left区域被设计成一个完整的系统菜单,它由1级、2级两个层次组成,通过jquery将1级的功能扩充到2级。
管理员功能界面如下图所示。

图5-11 管理员功能界面
5.3.2 系统用户管理模块
通过使用sql语句,用户可以访问yhzhgl中的用户信息,并且可以通过PageManager.getPages (url, 4, sql, request)获取一个ArrayList对象,以便更好地管理和分析用户表。通过for循环,我们可以从ArrayList中提取出所有数据,然后将其转换为键值对,从而在Python页面上进行解析。
用户管理流程图如下所示。
图5-12 用户管理流程图
系统用户管理界面如下图所示。

图5-13 系统用户管理界面
系统用户管理关键代码如下:
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": "已存在"}}
5.3.3 标签类型管理模块
在添加、删除或修改标签类型时,系统会根据标签类型的状态来决定是否允许使用。如果允许,系统会提供相应的链接,以便用户访问。如果不允许,系统将会在后台查询标签类型的状态,并决定是否允许使用。当您点击更改链接按钮时,您将会进入一个更改信息的页面。在完成数据填写之后,您将会将其提交到后台,并对数据库中的记录进行更新。
当添加标签类型时,系统将会弹出一个页面,用户可以根据自己填写的标签类型来查询编号是否已经存在。一旦填写完成,系统将会将其提交至后台,并调用相应的服务,将其插入到数据库中。
标签类型流程图如下图所示。
图5-14标签类型添加流程图
标签类型的界面如所示。

图5-15标签类型列表界面

图5-16标签类型添加界面
标签类型管理关键代码如下:
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}}
5.3.4轮播图模块
轮播图模块是网站中常见的一个功能,用于在首页等关键位置展示重要的图片信息,如广告、推荐内容或最新动态。在本系统中,轮播图模块提供了直观且高效的管理方式,确保用户能够轻松地添加、编辑和删除轮播图。在添加轮播图之前,系统会检查用户是否有相应的权限。只有当用户具有更新内容的权限,并且文章内容处于可更新状态时,才允许进行编辑操作。这一机制确保了网站内容的完整性和安全性。当用户点击添加轮播图的按钮时,系统会弹出一个友好的界面,引导用户填写轮播图的相关信息,如标题、图片链接、描述等。在填写过程中,系统还提供了实时验证功能,确保用户输入的数据符合要求。
为了避免重复添加相同的轮播图,系统在用户填写标题后会进行实时查询,检查该标题是否已存在于数据库中。如果存在相同的标题,系统会给出提示,让用户选择是否继续操作或进行修改。一旦用户完成数据填写并通过验证,系统会调用相应的服务将轮播图信息插入到数据库中。在插入过程中,系统还会对数据进行进一步的处理和优化,以确保数据的准确性和一致性。通过这一模块的设计和实现,用户可以方便地管理网站的轮播图内容,提高网站的吸引力和用户体验。同时,系统还提供了完善的数据验证和处理机制,确保网站内容的稳定性和可靠性。
轮播图流程图如下图所示。
图5-17轮播图流程图
轮播图的界面如所示。
图5-18轮播图界面
轮播图关键代码如下:
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}
6系统测试
6.1 系统测试用例
系统测试包括:用户登录功能、文章信息查看功能、标签类型添加功能、密码修改功能测试,如表6-1、6-2、6-3、6-4所示:
表6-1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
文章信息查看功能测试:
表6-2 文章信息查看功能测试表
用例名称 | 文章信息查看 |
目的 | 测试文章信息查看功能 |
前提 | 用户登录 |
测试流程 | 点击文章信息 |
预期结果 | 可以查看到所有文章信息 |
实际结果 | 实际结果与预期结果一致 |
标签类型添加界面测试:
表6-3 标签类型添加界面测试表
用例名称 | 标签类型添加测试用例 | ||
目的 | 测试标签类型添加功能 | ||
前提 | 管理员正常登录情况下 | ||
测试流程 | 1)管理员点击标签类型,然后点击添加后并填写相关信息。 2)点击进行提交。 | ||
预期结果 | 提交以后,页面首页会显示新的标签类型信息 | ||
实际结果 | 实际结果与预期结果一致 | ||
实际结果 | 实际结果与预期结果一致 |
密码修改搜索功能测试:
表6-4 密码修改功能测试表
用例名称 | 密码修改测试用例 |
目的 | 测试普通用户密码修改功能 |
前提 | 普通用户正常登录情况下 |
测试流程 | 1)普通用户点击密码修改并完成填写。 2)点击进行提交。 |
预期结果 | 使用新的密码可以登录 |
实际结果 | 实际结果与预期结果一致 |
6.2 系统测试结果
通过编写问答网站的测试用例,已经检测完毕用户登录功能、文章信息查看功能、标签类型添加功能、密码修改功能测试,通过这四大模块为问答网站的后期推广运营提供了强力的技术支撑。
结论
问答网站的设计,通过互联网来解决实现信息化的网站系统,通过我四年所学的所有专业知识整合一起,进行对问答网站进行开发设计,当然在真正着手来做的时候遇到了很多问题,一个是网站的技术问题,一个是自己之前没有单独开发过程序,动手实践比较少,面对问题的同时,自己的自信心也受到了一些打击,不过我也是快速的调整自己的状态,老师与同学讨论的方法解决了所有的困难。
毕业设计是我们所学知识应用的最佳体现,也是在考核我们四年中所学的所有的专业知识及技术应用情况,通过这样毕业设计可以更好的得到锻炼及对所学知识的复习及运用,也是一种训练和实践。问答网站的实现,不仅巩固了我以前的知识,还对学到的知识通过结合技术进行详细了解,还结合了对跨学科效果的深入理解。
在以后我的工作中,我仍然会继续努力我的计算机方面的技术,让我在后期的平台开发中可以更好更快的实现需求功能。我相信自己可以胜任更多的好工作并在工作领域做出更大的贡献。
回顾毕业设计的整个过程,既付出了努力与汗水也收获了很多难以忘怀的美好经历。虽然在系统开发过程中经历了各种各样的困难,自己也在不断研究与探索,可是系统的实现仍有许多不足之处。但是经过系统编程工作让我有了更多的信心,我相信在未来的路上,我会走的更好。
参考文献
[1]陈太沁.基于Python的视频数据爬虫系统设计与实现[J].广播电视网络,2024,31(01):110-112.DOI:10.16045/j.cnki.catvtec.2024.01.012.
[2]Piccoli C ,Mérida M A ,Crottini A .PARSID: a Python script for automatic analysis of local BLAST results for a rapid molecular taxonomic identification.[J].BMC research notes,2024,17(1):35-35.
[3]Chen C H ,Wang J ,Shyr Y , et al.FindAdapt: A python package for fast and accurate adapter detection in small RNA sequencing.[J].PLoS computational biology,2024,20(1):e1011786-e1011786.
[4]Qiu J ,Nie W ,Ding H , et al.PB-LKS: a python package for predicting phage-bacteria interaction through local K-mer strategy.[J].Briefings in bioinformatics,2024,25(2):
[5]陈丽.基于Python编程语言的数字化教育平台设计[J].电子技术,2024,53(01):202-203.
[6]周洋.Python软件在金融课程实验教学中的应用[J].电子技术,2024,53(01):81-83.
[7]Vught V L ,HaasjesC ,BeenakkerJ .ZOSPy, a python package for ray tracing simulations[J].Acta Ophthalmologica,2024,102(S279):
[8]Luan Y ,Zhu X .Research on the Application of Intelligent Tourism Data Analysis Based on Python[J].Advances in Computer and Communication,2024,4(6):
[9]李春亭,王宜怀,施连敏等.编译型嵌入式Python的设计与实现[J].计算机工程与设计,2024,45(01):79-87.DOI:10.16208/j.issn1000-7024.2024.01.011.
[10]李津.基于知识图谱的个性化音乐推荐系统设计与实现[J].科学技术创新,2024,(02):127-130.
[11]孔杞越,李晶,鲁子洋等.基于Scratch的Python编程系统设计研究[J].内江科技,2023,44(12):24-25.
[12]张曰花,陈红娟,刘婷婷.基于HTML5+PHP技术的化妆品网站设计与实现[J].现代信息科技,2023,7(24):33-36+40.DOI:10.19850/j.cnki.2096-4706.2023.24.008.
[13]卢亚辉,赵雷贺,蒋宇等.基于JupyterHub的Python教学平台的建设[J].工业和信息化教育,2023,(12):80-84.
[14]刘洋,李伟,张扬帆等.Python在财务数据挖掘和分析中的应用[J].电子技术,2023,52(11):274-275.
[15]田玉昆.基于Java Web技术的手机销售网站的设计与实现[J].电脑知识与技术,2023,19(32):47-49.DOI:10.14004/j.cnki.ckt.2023.1766.
[16]李海强,黄芬梅,黎宇等.基于网站可视化开发技术的建筑风险评估系统的设计与实现[J].科技资讯,2023,21(20):234-237.DOI:10.16661/j.cnki.1672-3791.2303-5042-1296.
[17]张金波,张景虹.基于JSP技术交互式动态教学网站的设计与实现[J].电子技术,2023,52(10):50-51.
[18]施峰,张瑾.基于SSM的编译原理精品课程网站设计与实现[J].中国新通信,2023,25(20):44-46+49.
[19]闫开轩,王黎光.基于JSP的“走进故宫”网站的设计与实现[J].山西电子技术,2023,(05):58-61.
[20]谢文凯,彭鑫,赵文耘.软件开发问答网站代码片段自动分类方法研究[J].计算机应用与软件,2021,38(08):1-6.
致谢
眨眼之间,大学生活就要结束了。在本文的最后,我要感谢我和蔼可亲的导师、团结有爱的同学的帮助和鼓励。此刻,我找不到感谢之词可以用来表达我最深切的感激之情。尤其感谢我的指导老师,在选题的过程中与我进行了深入的交流,在毕业设计期间给我提供了一些指导。四年的学习生活让我受益良多,老师们的丰富的学术知识、认真负责的学习态度让我受益匪浅。在此,我深深地感谢那些曾经给予我帮助和指导的老师!
我们的论文得益于许多学者的贡献,他们的研究成果为我们提供了宝贵的指导,使我们能够更好地完成这篇文章。感谢我的同学和朋友在我的写作以及排版过程中给予热情的帮助,才使得我比较顺利的完成了这篇论文。
感谢大学里遇见的朋友,你们在我这四年里留下无数的温暖和快乐,让我对这个校园多了一份留念。最后,感谢我的父母、辅导员张老师、班长白海鹏,以及室友们对我大学生活上的关心和理解,让我能保持乐观和追求我所热爱的。尽管我的能力有限,但我仍然尽力去完善这篇论文,并且诚挚地希望各位老师和学友能够给予宝贵的指导与意见!