原创计算机毕业设计—52997 基于python Web的高校毕业论文管理系统(源码免费领)

摘 要

随着信息化技术的迅速发展,人类信息化文明的到来,为人类的日常生活以及日常生产活动提供了非常大的便利,有效地解决了很多曾经无法解决的问题。本次基于python Web的高校毕业论文管理系统的开发是针对我国传统的高校毕业论文管理模式沟通成本高且容易造成管理混乱、导师和管理人员无法及时掌握总体进度、不便于进行过程化记录管理、归档占用空间较大且查找繁琐等现状而提出的,旨在建立过程化管理,大大降低沟通成本,协调各教学管理部门,以此保障导师指导的高成效,大大提高论文内容的完成质量,可以帮助高校更好地管理毕业论文,提高高校毕业论文管理的效率和质量。本次的高校毕业论文管理系统包括了所有的线下过程,比如、创建选题、学生选题、通过选题、指导信息、论文信息、答辩通知、答辩成绩等,完全实现高校毕业论文管理的信息化。

关键词:高校毕业论文管理系统;信息化技术;python Web;flask

Design and Implementation of a python Web-based College Graduation Thesis Management System

Abstract: With the rapid development of information technology and the arrival of human information civilization, it has provided great convenience for human daily life and production activities, effectively solving many previously unsolvable problems. The development of a university graduation thesis management system based on Python Web is aimed at addressing the current situation of high communication costs and easy management confusion in China's traditional university graduation thesis management model, inability of mentors and management personnel to timely grasp the overall progress, inconvenience in process based record management, large space occupation for archiving, and cumbersome searching. The aim is to establish process based management, greatly reduce communication costs, coordinate various teaching management departments, and ensure the high effectiveness of mentor guidance, greatly improve the quality of thesis content completion, and help universities better manage graduation theses, improve the efficiency and quality of university graduation thesis management. The graduation thesis management system of this university includes all offline processes, such as creating topic selection, student topic selection, selecting topic selection, guidance information, thesis information, defense notice, defense score, etc., fully realizing the informatization of graduation thesis management in universities.

 Key words:University graduation thesis management system; Information technology; Python Web; Flask

目  录

第1章 引 言

1.1 系统背景

1.2 国内外研究现状

1.3 系统开发目的与意义

1.4 本章小结

第2章 相关技术介绍

2.1 Python

2.2 Flask

2.3 Mysql

2.4 Django

2.5本章小结

第3章 系统分析

3.1 系统可行性分析

3.2 系统需求分析

3.2.1 系统功能需求分析

3.2.2 系统非功能需求分析

3.3 用例图分析

3.4 本章小结

第4章 系统概要设计

4.1 功能模块设计

4.2 概念模型设计

4.3 物理结构设计

4.4 本章小结

第5章 系统详细设计

5.1 数据库配置与连接

5.2 管理员模块实现

5.2.1系统用户功能的实现

5.2.2权限设置功能的实现

5.2.3创建选题管理功能的实现

5.2.4选题中心管理功能的实现

5.2.5学生选题管理功能的实现

5.2.6答辩成绩管理功能的实现

5.2.7论文信息管理功能的实现

5.2.8系统管理功能的实现

5.2.9系统公告管理功能的实现

5.3 导师用户模块实现

5.3.1个人中心功能的实现

5.4 学生用户模块实现

5.4.1创建选题功能的实现

5.4.2 选题中心功能的实现

5.4.3 个人中心功能的实现

5.5 本章小结

第6章 系统测试

6.1系统测试目的

6.2功能测试

6.2.1用户登录测试

6.2.2创建数据测试 

6.2.3修改数据测试 

6.2.4查询数据测试 

6.3非功能测试

6.3.1兼容性测试

6.3.2性能测试

6.4本章小结

总结与展望

致谢

参考文献

代码附录

第1章 引 言

1.1 系统背景

基于python Web的高校毕业论文管理系统的开发是对传统管理模式的一次创新尝试,是在信息化时代背景下迎合高校教育需要的重要举措。自上世纪90年代以来,信息技术的迅猛发展使得将计算机网络技术与高校教育相结合成为可能,为提高教学效率、提升管理水平提供了巨大潜力。特别是在万维网等技术的推动下,信息获取和共享变得更为便捷,促使社会进入了信息化文明的新阶段。

尽管如此目前大学本科高校毕业论文的监督流程依然面临众多挑战。首先传统的高校毕业论文管理和手工记录的方式存在着信息数据的不精确性和错漏,存档麻烦、检索效率不高、沟通开销大、易于引发管理紊乱等诸多难题。因此,基于python Web的高校毕业论文管理系统的实现与设计为传统高校毕业论文管理问题提供了解决方案,该系统采用了python开发技术,利用Web,结合Flask技术框架和MySQL数据库,具有数据安全,界面友好、操作简单,管理高效的特点,能够更好地管理高校毕业论文信息,简化管理流程,提高管理效率。

1.2 国内外研究现状

在国内,高校毕业论文管理系统的研究和应用已经取得了一定的成果。目前,国内已有许多高校开发了自己的毕业论文管理系统,这些系统在一定程度上解决了传统毕业论文管理模式存在的问题,提高了毕业论文管理的效率和质量。

以湖南商学院为例,基于互联网的大学生高校毕业论文管理平台已经成为了一个标志性的成就范例。该平台不只是涵盖了学术文章的编纂、递交、审核、辩护、成绩记录等多角度的组件而且实施了整个流程的监管,极大地简化了各参与成员的任务执行。该平台显著提升了论文撰写的速度并且同样增进了学术作品的品质。其界面布局设计合理性极高操控上手轻松,显著增强了工作效能。同时该平台拥有出色的信息处理能力,可以自主地对学术文章进行编排和格式设定,显著降低了手动操作所需的时长和劳动强度。在另一侧华南理工大学的结业论文管理系统亦是一套建立在网络基础上的应用程序。该平台不只是涵盖了学术论文的编写、上交、审核、辩护、成绩记录等多角度的组件实施了整个流程的监控,同时也拥有更加强劲的特性,涵盖自动化生成学术论文、智能化建议等先进特性。与江西经济学院的程序对照,华南工业大学的软件在作用范畴上更显完备,赋予使用者更宽广的选项。同理此平台亦拥有出色的资料处理效能,可自动执行文献的版面设计与格式整理,从而缩减了手动操作所需的时数及劳动强度。

除去前面提到的那两个学府,我国亦有众多其他学院投身于毕业论文监管系统的探索与构建之中,比如上海交通大学、浙江大学等等。这套机制在相当的范围内优化了旧有的高校毕业论文处理流程中的弊端增进了高校毕业论文处理的效能与水准。这些平台均拥有独特的属性和益处能够依据各学院的独特要求进行个性化配置。

在国外,高校毕业论文管理系统的研究和应用同样取得了令人瞩目的成果。目前,许多国外高校都积极开发了自己的毕业论文管理系统,这些系统在一定程度上成功地解决了传统毕业论文管理模式存在的问题,进一步提高了毕业论文管理的效率和质量。

以美国的北卡罗来纳大学为例,他们的基于python Web的高校毕业论文管理系统是一个典型的成功案例。该系统提供了论文撰写、提交、评审、答辩、成绩管理等全方位的模块,实现了全程管理。相比于国内的系统,北卡罗来纳大学的系统功能更为强大,具有更多的高级功能,如论文自动生成、智能推荐等。同时,该系统还具有良好的数据处理能力,能够自动对论文进行排版和格式化,有效减少了人工处理的时间和工作量。

另一方面,英国的剑桥大学也成功地开发了自己的毕业论文管理系统。该系统同样提供了论文撰写、提交、评审、答辩、成绩管理等全方位的模块,实现了全程管理。相较于北卡罗来纳大学的系统,剑桥大学的系统用户界面设计更加简洁,操作更为直观,易于使用。同样,该系统还具有良好的数据处理能力,能够自动对论文进行排版和格式化,减少了人工处理的时间和工作量。此外,加拿大的多伦多大学、澳大利亚的悉尼大学等国外高校也都投入了毕业论文管理系统的研究和开发。这些系统在一定程度上改善了传统毕业论文管理模式存在的问题,提高了毕业论文管理的效率和质量。这些系统都有各自的特点和优势,可以根据不同高校的需求进行定制。

总体来说,国内外的毕业论文管理系统通过采用先进的Web技术,成功实现了全程管理,极大地方便了所有参与角色的工作完成。这不仅加快了毕业论文的完成效率,也提高了毕业论文的完成质量。这些系统的功能和性能都相对较为强大,能够满足不同高校的需求,展现了国外在高校教育管理方面的领先水平。然而,仍然存在一些问题,如系统功能和性能的进一步提升、用户界面的优化以及数据安全性和隐私保护等方面需要持续关注和改进。未来的研究方向应该致力于进一步完善和优化毕业论文管理系统,以更好地满足国外高校毕业论文管理的不断升级的需求。

1.3 系统开发目的与意义

基于python Web的高校毕业论文管理系统旨在改进传统的高校毕业论文管理方式。首先该体系采纳了当代的互联网技术,打造出一个全方位、灵敏、优质的基于python Web的高校毕业论文管理平台解决高校毕业论文涉及步骤繁多的问题,简化论文的选题、设计、上交、审核、答辩以及成绩记录等流程降低的人力时间与物质的成本为导师提供包括但不限于通过选题、指导信息、论文信息、答辩通知、答辩成绩等功能,促使导师管理人员能够更好地把握论文项目的整体进展状况。使学生能够借助直观而便捷的高校毕业论文管理系统进行创建选题、查看选题信息、上交选题报告和论文报告、并及时了解导师的指导信息和接收答辩通知,为答辩做好准备。

总而言之,通过构建基于python Web的高校毕业论文管理系统,不只是在技术方面克服了旧有管理方式的难题,也为高等教育的论文管理带来了创新的思维和应用,能够简化传统论文管理的流程,减少管理成本,并且可以提升高校毕业论文的完成效率和完成质量;该系统通过科学合理且实施可行方案能够紧跟数字化时代的趋势,系统的功能和性能都相对较为强大,为高校毕业论文管理带来了新鲜的动力,从而提高了高校毕业论文管理效率和水平。

1.4 本章小结

本章主要介绍了基于python Web高校毕业论文管理系统系统背景国内外研究现状系统开发目的与意义等信息

第2章 相关技术介绍

2.1 Python

Python是一种高级通用编程语言,由Guido van Rossum于1991年开发。它具有简单易学、代码简洁、可读性强等特点,成为广泛应用于软件开发、数据分析、人工智能等领域的热门语言。Python有丰富的标准库和第三方库,可以满足各种编程需求。它支持面向对象、函数式编程等多种编程范式,因此适用于各种项目规模和类型。Python还有一个活跃的社区,提供大量的教程、文档和支持,使得学习和使用Python变得更加便捷和愉快。

2.2 Flask

Flask是目前十分流行的python Web框架,采用Python编程语言来实现相关功能。它被称为微框架(microframework),“微”并不是意味着把整个python Web应用放入到一个Python文件,微框架中的“微”是指Flask旨在保持代码简洁且易于扩展,Flask框架的主要特征是核心构成比较简单,但具有很强的扩展性和兼容性,程序员可以使用Python语言快速实现一个网站或python Web服务。一般情况下,它不会指定数据库和模板引擎等对象,用户可以根据需要自己选择各种数据库。Flask自身不会提供表单验证功能,在项目实施过程中可以自由配置,从而为应用程序开发提供数据库抽象层基础组件,支持进行表单数据合法性验证、文件上传处理、用户身份认证和数据库集成等功能。Flask提供了轻量级的API,使得开发人员可以更加自由地定制自己的python Web应用。Flask还提供了丰富的扩展,如数据库扩展、表单处理扩展、用户认证扩展等,使得开发人员可以更加方便地开发python Web应用。Flask的优点是轻量级、灵活性高、文档完善,可以保障这个系统的开发(详细见图2-1)。

图2-1 Flask框架工作过程图

2.3 Mysql

MySQL是一个开源的关系型数据库管理系统,用于存储和管理大量的数据。MySQL提供了高性能的数据处理能力,可以满足系统的需求。MySQL还提供了丰富的功能,如索引、视图、存储过程等高级功能,可以提高数据处理的效率。MySQL的优点是性能好、功能强大、可靠性高,缺点是安全性较弱、并发处理能力较弱。

2.4 Django

Django是一个高级的框架,用于快速开发复杂的Web应用。Django提供了强大的模型-视图-控制器(MVC)的设计模式,使得开发人员可以更加专注于业务逻辑的实现。Django还提供了丰富的功能,如模板、表单处理、用户认证、数据库迁移等,使得开发人员可以更加方便地开发Web应用。Django的优点是功能强大、开发速度快、可扩展性好,对于本次系统的开发提供很大的帮助。

2.5本章小结

因此,基于python Web的高校毕业论文管理系统的实现与设计采用了python开发技术,利用Web,结合Flask、Django技术框架,使用MySQL数据库进行数据储存和处理所使用的的开发技术和功能,能够更好地开发和构建基于python Web的高校毕业论文管理系统,使系统具有数据安全,界面友好、操作简单,管理高效的特点。

第3章 系统分析

3.1 系统可行性分析 

为了迎合当今社会的现况,便于在市场中打开局面、占有一席之地;在大数据时代下,所有的信息化资源全部都是共享资源、为了长远性考虑,对此需要考虑如何推动整体的系统开发实现标准化。保证系统成功,所以就必须从效益、技术等上面做可行性报告研究。

(1)经济可行性:首先,该系统没有什么硬件要求,也没有什么人力成本,系统维护和更新的费用也不多;其次,各大高校了解本系统的重要性,因此很容易受到各大高校的资助;最后,本系统能够令工作效率提高、毕业论文质量提升、人力资源节省等,这些效益可以通过降低工作流程成本、减少错误和提高论文完成速度等方面体现。

综上所述,本系统在经济上是可行的。

(2)技术可行性:本次基于python Web的高校毕业论文管理系统主要采用Flask作为Web框架和MySQL作为数据库管理系统(详细见3-1)。首先,Python及MySQL数据库的版本和搭建简单易操作,现在的电脑配置一般都在中等偏上水平,完全满足该系统环境的需求;其次,Flask适用于中小型应用程序的快速开发,对于毕业论文管理系统这类中小规模的应用,选择Flask是合理的;然后,Flask与MySQL集成相对简单,可以通过navicat等工具轻松地在Flask应用中使用MySQL数据库;最后,Flask与MySQL之间有良好的互操作性,Flask-SQLAlchemy等扩展使得在Flask中使用MySQL变得更加方便

表3-1系统开发环境及开发工具

操作系统

开发语言

开发框架

数据库

开发工具

Windows10

Python3.8

Flask

Mysql5.7

Pycharm

  综上所述,本系统所采用的Flask和MySQL技术在系统需求分析上的优势,适用于构建稳定、可扩展且易维护的系统,在技术上是可行的

3)操作可行性:该系统的用户界面设计合理,使得用户能够迅速了解系统功能和操作流程,设计直观有助于提高用户的操作效率;其次,该系统也具备良好的导航性,清晰的菜单和操作按钮有助于减少用户的操作迷惑;最后,该系统支持多角色操作,有包括学生用户、导师用户、管理员三种角色。不同角色有不同的权限,以确保信息的安全性和保密性。

综上所述,操作该系统是很容易的,在操作上是可行的。

3.2 系统需求分析

3.2.1 系统功能需求分析

开发基于python Web的高校毕业论文管理系统应从具体的实践出发,以提高管理效率为宗旨,通过对高校毕业论文管理系统的角色进行实际调研,可以分析得出本系统所涉及的角色主要有:学生用户、导师用户、管理员,每个角色都有相对应的功能和权限。下面简要的描述各个角色所应该实现的功能

学生用户模块:

  1. 注册登录:学生可以通过注册成为系统用户,使用账号密码可进行登录,使用系统功能
  2. 首页:经过登录进入系统,映入眼帘的是导航栏,下面是轮播图并可以使用系统其他功能。
  3. 系统公告:可查看管理员发布的所有系统公告,包括关于我们、联系方式、网站介绍等,点击可查看详情。
  4. 创建选题:可进入创建选题界面,填写并提交选题信息(报告标题、题目类型、情况说明、开展目的、附件、提交学生、提交日期)
  5. 选题中心:可查看所有选题中心信息,支持关键字(报告标题、题目类型)搜索和下拉(题目类型、排序)搜索,点击可查看详情(选题编号、报告标题、权限设置、题目类型、情况说明、附件),可进行发表评论,并可点击确认选题(选题原因、报告附件)操作 。
  6. 答辩成绩:可查看管理员发布的所有答辩成绩信息,支持关键字(报告标题、学生学号)搜索和下拉(排序)搜索,点击可查看详情(报告编号、选题编号、报告标题、题目类型、学生用户、学生学号、学生姓名、报告附件、负责导师、论文附件、答辩日期、答辩评分、答辩标准、评分标准),可进行发表评论
  7. 我的账户:对个人资料进行管理,包括修改密码和修改资料(头像、昵称、邮箱、用户姓名、用户性别)
  8. 个人中心:可对个人首页、创建选题、学生选题、通过选题、指导信息、论文信息、答辩通知等信息进行管控。具体如下:
  • 点击“创建选题”,可查看自己的创建选题信息,进行查询和删除操作,支持报告标题、学生学号、学生姓名搜索,可点击查看详情;
  • 点击“学生选题”,可查看自己的学生选题信息,进行查询和删除操作,支持报告标题、学生学号、学生姓名、审核状态搜索,可点击查看详情;
  • 点击“通过选题”,可查看自己的通过选题信息,进行查询操作,支持报告标题、学生学号、学生姓名搜索,可点击查看详情,并可点击提交论文(报告附件、论文附件、备注)操作;
  • 点击“指导信息”,可查看自己的指导信息,进行查询操作,支持报告标题、学生学号、学生姓名搜索,可点击查看详情;
  • 点击“论文信息”,可查看自己的论文信息,进行查询和删除操作,支持报告标题、学生学号、学生姓名搜索,可点击查看详情,并可点击指导(指导内容、指导附件)操作;
  • 点击“答辩通知”,可查看自己的答辩通知信息,进行查询操作,支持报告标题、学生学号搜索,可点击查看详情

导师用户模块:

  1. 登录:导师用户账号信息由管理员添加,使用管理员添加账号密码可进行登录,使用系统功能
  2. 首页:可查看轮播图和使用系统其他功能
  3. 系统公告:可查看包括关于我们、联系方式、网站介绍等管理员发布的所有系统公告,点击可查看详情
  4. 选题中心:可查看所有选题中心信息,支持关键字(报告标题、题目类型)搜索和下拉(题目类型、排序)搜索,点击可查看详情(选题编号、报告标题、权限设置、题目类型、情况说明、附件),可进行发表评论
  5. 答辩成绩:可查看管理员发布的所有答辩成绩信息,支持关键字(报告标题、学生学号)搜索和下拉(排序)搜索,点击可查看详情(报告编号、选题编号、报告标题、题目类型、学生用户、学生学号、学生姓名、报告附件、负责导师、论文附件、答辩日期、答辩评分、答辩标准、评分标准),可进行发表评论
  6. 我的账户:对个人资料进行管理,包括修改密码和修改资料(头像、昵称、邮箱、用户姓名、用户性别)
  7. 个人中心:可对个人首页、通过选题、指导信息、论文信息、答辩通知、答辩成绩等信息进行管控。具体如下:
  • 点击“通过选题”,可查看自己的通过选题信息,进行查询和删除操作,支持报告标题、学生学号、学生姓名搜索,可点击查看详情,并可点击指导(指导内容、指导附件)操作;
  • 点击“指导信息”,可查看自己的指导信息,进行查询和删除操作,支持报告标题、学生学号、学生姓名搜索,可点击查看详情;
  • 点击“论文信息”,可查看自己的论文信息,进行查询和删除操作,支持报告标题、学生学号、学生姓名搜索,可点击查看详情
  • 点击“答辩通知”,可查看自己的答辩通知信息,进行增改删查操作,支持报告标题、学生学号搜索,可点击查看详情,并可点击答辩成绩(评分标准、答辩评分、审核状态)操作
  • 点击“答辩成绩”,可查看自己的答辩成绩信息,进行查询操作,支持报告标题、学生学号搜索,可点击查看详情

管理员模块:

  1. 登录:管理员账号密码由系统生成,可使用账号密码可进行登录,使用系统功能,并对个人信息和密码进行管理
  2. 系统用户:可对学生用户、导师用户和管理员进行管控,包括进行增删改查操作,点击可查看详情。导师用户账号信息由管理员直接添加
  3. 题目类型管理:可查看发布的所有题目类型信息,进行增改删查操作,支持题目类型搜索,点击可查看详情
  4. 权限设置:可对进行权限添加,添加修改权限内容(学生学号、学生姓名、选题权限)
  5. 创建选题管理:可查看所有创建选题信息,进行增改删查操作,支持报告标题、题目类型、提交日期、审核状态搜索,点击可查看详情,并点击通过操作,填写选题信息后会上报显示到选题中心里
  6. 选题中心管理:可查看所有选题中心信息,进行增改删查操作,可以进行下载导入文件,点击导入操作,进行批量导入,支持报告标题、题目类型搜索,点击可查看详情(选题编号、报告标题、权限设置、题目类型、情况说明、开展目的、附件、计时器标题、计时开始时间、计时结束时间)和查看评论,某选题页面倒计时结束后会自动关闭页面,无法进入该页面
  7. 学生选题管理:可查看所有学生选题信息,进行查询和删除操作,支持报告标题、学生学号、学生姓名、审核状态搜索,点击可查看详情(报告编号、选题编号、报告标题、题目类型、学生用户、学生学号、学生姓名、选题原因、报告附件、审核状态、审核回复),进行审核,可查看学生开题报告,并可点击通过(负责导师)操作,指派负责导师
  8. 通过选题管理:可查看所有通过选题信息,进行增改删查操作支持报告标题、学生学号、学生姓名搜索,点击可查看详情(报告编号、选题编号、报告标题、题目类型、学生用户、学生学号、学生姓名、选题原因、报告附件、负责导师)
  9. 指导信息管理:可查看所有指导信息,进行增改删查操作,支持报告标题、学生学号、学生姓名搜索,点击可查看详情
  10. 论文信息管理:可查看所有论文信息,进行增改删查操作,支持报告标题、学生学号、学生姓名、审核状态搜索,点击可查看详情(报告编号、选题编号、报告标题、题目类型、学生用户、学生学号、学生姓名、报告附件、负责导师、论文附件、备注、审核状态、审核回复),进行审核,并可点击答辩通知(答辩日期、答辩地点、准备内容、答辩标准)操作
  11. 答辩通知管理:可查看所有答辩通知信息,进行增改删查操作,支持报告标题、学生学号搜索,点击可查看详情(报告编号、选题编号、报告标题、题目类型、学生用户、学生学号、学生姓名、报告附件、负责导师、论文附件、答辩日期、答辩地点、准备内容、答辩标准),并可点击答辩成绩操作
  12. 答辩成绩管理:可查看所有答辩成绩信息,进行增改删查操作,支持报告标题、学生学号、审核状态搜索,点击可查看详情(报告编号、选题编号、报告标题、题目类型、学生用户、学生学号、学生姓名、报告附件、负责导师、论文附件、答辩日期、答辩地点、准备内容、答辩标准、评分标准、答辩评分、审核状态),进行审核,审核通过后可在页面前端显示,和查看评价
  13. 系统管理:可对首页的轮播图进行管理,进行增删改查操作,支持标题搜索,可点击查看详情
  14. 系统公告管理:可对系统公告进行管理,进行增删改查操作,支持标题搜索,可点击查看详情

3.2.2 系统非功能需求分析

基于python Web的高校毕业论文管理系统的非功能性需求比如平台的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:

3-1基于python Web的高校毕业论文管理系统非功能需求表

安全性

主要指基于python Web的高校毕业论文管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。

可靠性

可靠性是指基于python Web的高校毕业论文管理系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。

性能

性能是影响基于python Web的高校毕业论文管理系统占据市场的必要条件,所以性能最好要佳才好。

可扩展性

比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。

易用性

用户只要跟着基于python Web的高校毕业论文管理系统的页面展示内容进行操作,就可以了。

可维护性

基于python Web的高校毕业论文管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题

3.3 用例图分析

通过3.2的系统功能需求分析,得出了本基于python Web的高校毕业论文管理系统的用例图:

学生用户角色用例图如下图3-1所示。

3-1 学生用户角色用例图

导师用户角色用例图如下图3-2所示。

3-2 导师用户角色用例图

管理员角色用例图如下图3-3所示。

3-3管理员角色用例图

3.4 本章小结

本章主要通过对基于python Web的高校毕业论文管理系统的可行性分析、功能需求分析、非功能分析、用例图分析,确定整个基于python Web的高校毕业论文管理系统要实现的功能。同时也为基于python Web的高校毕业论文管理系统的代码实现和测试提供了标准。

第4章 系统概要设计

4.1 功能模块设计

本系统的目标是建立一套高效、透明、安全的高校毕业论文管理平台,以提升管理效率、优化选题流程、增强信息透明度、提高论文质量为主要目标。管理员在系统中具备对学生和导师信息的便捷查看和编辑权限,能够简化选题管理和流程审核,以及方便的评阅管理,从而全面提高整体管理效率。系统致力于优化选题和论文流程,通过系统化的选题和论文审核,确保选题和论文质量和安全性。管理员能够有效设置选题权限,以此优化选题流程。系统还旨在增进信息透明度,提供清晰的信息展示和沟通平台,使学生、导师和管理员能够直观了解选题、指导、论文答辩、成绩等信息,增进信息透明度,促进更好的沟通合作。同时,促使学生在撰写论文过程中提升论文质量,为导师提供方便的审核和评阅机制,从而提高论文质量。系统边界包括了用户角色、信息流、数据存储、系统接口、安全性和隐私保护、用户界面、报告和通知等多个方面,以确保系统与外部环境的有效连接,并保障数据的完整性和一致性,维护系统的安全性。

在设计基于python Web的高校毕业论文管理系统的结构时,也列入重点,采用模块化的方法来进行设计,即首先将大模块确定下来,再慢慢的将大模块进行补充完善,向下分支出小模块,一起共同组成的系统的结构体系,下图是该基于python Web的高校毕业论文管理系统的总体设计功能模块图,直观明了的可以看出本项目程序的功能(详情见图4-1

4-1 系统功能模块图

4.2 概念模型设计 

下面是整个基于python Web的高校毕业论文管理系统中主要的数据库表总E-R实体关系图。

3-3 系统总E-R关系图

4.3 物理结构设计

所有系统的应用数据相互区分。一旦在相应的系统中实现,它们将与自己相应的网络和服务器通信。所以这个系统可以连接这些数据。当我们选择桥梁截面时,以下将简要介绍如何建立系统。在单击上一个按键的时候,就会自动在对话框中弹出数据源的名字,之后再单击下一个按键时,就在填写相对应的身份验证和登录信息。按照系统功能设计的特点与职能模块的分类,基于大数据分析的基于python Web的高校毕业论文管理系统的总体设计和实施过程一共涉及到了几个资料表格。

以下就介绍了一些根据各类别主要数据库表的设计结构以及基本功能建立数据库表:

表access_token (登陆访问时长)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

用户编号:

表application_for_defense (申请答辩)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

application_for_defense_id

int

10

0

N

Y

申请答辩ID

2

report_number

varchar

64

0

N

N

报告编号

3

topic_number

varchar

64

0

Y

N

选题编号

4

report_title

varchar

64

0

Y

N

报告标题

5

question_type

varchar

64

0

Y

N

题目类型

6

student_users

int

10

0

Y

N

0

学生用户

7

student_id

varchar

64

0

Y

N

学生学号

8

student_name

varchar

64

0

Y

N

学生姓名

9

report_attachment

varchar

255

0

Y

N

报告附件

10

responsible_supervisor

int

10

0

Y

N

0

负责导师

11

paper_attachment

varchar

255

0

Y

N

论文附件

12

application_date

date

10

0

Y

N

申请日期

13

examine_state

varchar

16

0

N

N

未审核

审核状态

14

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

15

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表auth (用户权限管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

更新时间:

表by_selecting_a_topic (通过选题)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

by_selecting_a_topic_id

int

10

0

N

Y

通过选题ID

2

report_number

varchar

64

0

N

N

报告编号

3

topic_number

varchar

64

0

Y

N

选题编号

4

report_title

varchar

64

0

Y

N

报告标题

5

question_type

varchar

64

0

Y

N

题目类型

6

student_users

int

10

0

Y

N

0

学生用户

7

student_id

varchar

64

0

Y

N

学生学号

8

student_name

varchar

64

0

Y

N

学生姓名

9

reason_for_choosing_the_topic

text

65535

0

Y

N

选题原因

10

report_attachment

varchar

255

0

Y

N

报告附件

11

responsible_supervisor

int

10

0

Y

N

0

负责导师

12

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

13

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表comment (评论)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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:

表create_topic_selection (创建选题)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

create_topic_selection_id

int

10

0

N

Y

创建选题ID

2

report_title

varchar

64

0

Y

N

报告标题

3

question_type

varchar

64

0

Y

N

题目类型

4

situation_description

varchar

64

0

Y

N

情况说明

5

purpose_of_implementation

text

65535

0

Y

N

开展目的

6

attachment

varchar

255

0

Y

N

附件

7

submit_to_students

int

10

0

Y

N

0

提交学生

8

submission_date

date

10

0

Y

N

提交日期

9

examine_state

varchar

16

0

N

N

未审核

审核状态

10

examine_reply

varchar

16

0

Y

N

审核回复

11

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

12

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表defense_record (答辩记录)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

defense_record_id

int

10

0

N

Y

答辩记录ID

2

student_users

int

10

0

Y

N

0

学生用户

3

student_id

varchar

64

0

Y

N

学生学号

4

student_name

varchar

64

0

Y

N

学生姓名

5

guidance_teacher

int

10

0

Y

N

0

指导老师

6

paper

varchar

255

0

Y

N

论文

7

examine_state

varchar

16

0

N

N

未审核

审核状态

8

examine_reply

varchar

16

0

Y

N

审核回复

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表defense_score (答辩成绩)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

defense_score_id

int

10

0

N

Y

答辩成绩ID

2

report_number

varchar

64

0

N

N

报告编号

3

topic_number

varchar

64

0

Y

N

选题编号

4

report_title

varchar

64

0

Y

N

报告标题

5

question_type

varchar

64

0

Y

N

题目类型

6

student_users

int

10

0

Y

N

0

学生用户

7

student_id

varchar

64

0

Y

N

学生学号

8

student_name

varchar

64

0

Y

N

学生姓名

9

report_attachment

varchar

255

0

Y

N

报告附件

10

responsible_supervisor

int

10

0

Y

N

0

负责导师

11

paper_attachment

varchar

255

0

Y

N

论文附件

12

defense_date

date

10

0

Y

N

答辩日期

13

defense_standards

text

65535

0

Y

N

答辩标准

14

scoring_criteria

text

65535

0

Y

N

评分标准

15

defense_score

int

10

0

Y

N

0

答辩评分

16

examine_state

varchar

16

0

N

N

未审核

审核状态

17

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

18

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表finalize (定稿)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

finalize_id

int

10

0

N

Y

定稿ID

2

student_users

int

10

0

Y

N

0

学生用户

3

student_id

varchar

64

0

Y

N

学生学号

4

student_name

varchar

64

0

Y

N

学生姓名

5

guidance_teacher

int

10

0

Y

N

0

指导老师

6

finalize

varchar

255

0

Y

N

定稿

7

examine_state

varchar

16

0

N

N

未审核

审核状态

8

examine_reply

varchar

16

0

Y

N

审核回复

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表first_draft (初稿)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

first_draft_id

int

10

0

N

Y

初稿ID

2

student_users

int

10

0

Y

N

0

学生用户

3

student_id

varchar

64

0

Y

N

学生学号

4

student_name

varchar

64

0

Y

N

学生姓名

5

guidance_teacher

int

10

0

Y

N

0

指导老师

6

first_draft

varchar

255

0

Y

N

初稿

7

examine_state

varchar

16

0

N

N

未审核

审核状态

8

examine_reply

varchar

16

0

Y

N

审核回复

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表guidance_information (指导信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

guidance_information_id

int

10

0

N

Y

指导信息ID

2

report_number

varchar

64

0

Y

N

报告编号

3

topic_number

varchar

64

0

Y

N

选题编号

4

report_title

varchar

64

0

Y

N

报告标题

5

question_type

varchar

64

0

Y

N

题目类型

6

student_users

int

10

0

Y

N

0

学生用户

7

student_id

varchar

64

0

Y

N

学生学号

8

student_name

varchar

64

0

Y

N

学生姓名

9

responsible_supervisor

int

10

0

Y

N

0

负责导师

10

guidance_content

text

65535

0

Y

N

指导内容

11

guidance_attachment

varchar

255

0

Y

N

指导附件

12

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

13

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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:

表mentor_users (导师用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

mentor_users_id

int

10

0

N

Y

导师用户ID

2

mentor_id

varchar

64

0

Y

N

导师工号

3

mentor_name

varchar

64

0

Y

N

导师姓名

4

examine_state

varchar

16

0

N

N

已通过

审核状态

5

user_id

int

10

0

N

N

0

用户ID

6

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表mid_term_report (中期报告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

mid_term_report_id

int

10

0

N

Y

中期报告ID

2

student_users

int

10

0

Y

N

0

学生用户

3

student_id

varchar

64

0

Y

N

学生学号

4

student_name

varchar

64

0

Y

N

学生姓名

5

guidance_teacher

int

10

0

Y

N

0

指导老师

6

mid_term_report

varchar

255

0

Y

N

中期报告

7

examine_state

varchar

16

0

N

N

未审核

审核状态

8

examine_reply

varchar

16

0

Y

N

审核回复

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表notice (公告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

更新时间:

表notice_of_defense (答辩通知)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

notice_of_defense_id

int

10

0

N

Y

答辩通知ID

2

report_number

varchar

64

0

N

N

报告编号

3

topic_number

varchar

64

0

Y

N

选题编号

4

report_title

varchar

64

0

Y

N

报告标题

5

question_type

varchar

64

0

Y

N

题目类型

6

student_users

int

10

0

Y

N

0

学生用户

7

student_id

varchar

64

0

Y

N

学生学号

8

student_name

varchar

64

0

Y

N

学生姓名

9

report_attachment

varchar

255

0

Y

N

报告附件

10

responsible_supervisor

int

10

0

Y

N

0

负责导师

11

paper_attachment

varchar

255

0

Y

N

论文附件

12

defense_date

date

10

0

Y

N

答辩日期

13

venue_of_defense

varchar

64

0

Y

N

答辩地点

14

preparation_content

text

65535

0

Y

N

准备内容

15

defense_standards

text

65535

0

Y

N

答辩标准

16

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

17

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表opening_report (开题报告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

opening_report_id

int

10

0

N

Y

开题报告ID

2

student_users

int

10

0

Y

N

0

学生用户

3

student_id

varchar

64

0

Y

N

学生学号

4

student_name

varchar

64

0

Y

N

学生姓名

5

guidance_teacher

int

10

0

Y

N

0

指导老师

6

opening_report

varchar

255

0

Y

N

开题报告

7

examine_state

varchar

16

0

N

N

未审核

审核状态

8

examine_reply

varchar

16

0

Y

N

审核回复

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表paper_information (论文信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

paper_information_id

int

10

0

N

Y

论文信息ID

2

report_number

varchar

64

0

N

N

报告编号

3

topic_number

varchar

64

0

Y

N

选题编号

4

report_title

varchar

64

0

Y

N

报告标题

5

question_type

varchar

64

0

Y

N

题目类型

6

student_users

int

10

0

Y

N

0

学生用户

7

student_id

varchar

64

0

Y

N

学生学号

8

student_name

varchar

64

0

Y

N

学生姓名

9

report_attachment

varchar

255

0

Y

N

报告附件

10

responsible_supervisor

int

10

0

Y

N

0

负责导师

11

paper_attachment

varchar

255

0

Y

N

论文附件

12

remarks

varchar

64

0

Y

N

备注

13

examine_state

varchar

16

0

N

N

未审核

审核状态

14

examine_reply

varchar

16

0

Y

N

审核回复

15

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

16

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表permission_settings (权限设置)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

permission_settings_id

int

10

0

N

Y

权限设置ID

2

student_id

varchar

64

0

N

N

学生学号

3

student_name

varchar

64

0

Y

N

学生姓名

4

topic_selection_authority

varchar

64

0

Y

N

选题权限

5

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表praise (点赞)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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已取消

表question_type (题目类型)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

question_type_id

int

10

0

N

Y

题目类型ID

2

question_type

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

更新时间

表sensitive_vocabulary (敏感词汇)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

sensitive_vocabulary_id

int

10

0

N

Y

敏感词汇ID

2

sensitive_vocabulary

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

更新时间

表slides (轮播图)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

更新时间:

表student_topic_selection (学生选题)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

student_topic_selection_id

int

10

0

N

Y

学生选题ID

2

report_number

varchar

64

0

Y

N

报告编号

3

topic_number

varchar

64

0

Y

N

选题编号

4

report_title

varchar

64

0

Y

N

报告标题

5

permission_settings

varchar

64

0

Y

N

权限设置

6

question_type

varchar

64

0

Y

N

题目类型

7

student_users

int

10

0

Y

N

0

学生用户

8

student_id

varchar

64

0

Y

N

学生学号

9

student_name

varchar

64

0

Y

N

学生姓名

10

reason_for_choosing_the_topic

text

65535

0

Y

N

选题原因

11

report_attachment

varchar

255

0

Y

N

报告附件

12

examine_state

varchar

16

0

N

N

未审核

审核状态

13

examine_reply

varchar

16

0

Y

N

审核回复

14

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

15

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表student_users (学生用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

student_users_id

int

10

0

N

Y

学生用户ID

2

student_id

varchar

64

0

N

N

学生学号

3

student_name

varchar

64

0

Y

N

学生姓名

4

examine_state

varchar

16

0

N

N

已通过

审核状态

5

user_id

int

10

0

N

N

0

用户ID

6

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表task_book (任务书)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

task_book_id

int

10

0

N

Y

任务书ID

2

student_users

int

10

0

Y

N

0

学生用户

3

student_id

varchar

64

0

Y

N

学生学号

4

student_name

varchar

64

0

Y

N

学生姓名

5

guidance_teacher

int

10

0

Y

N

0

指导老师

6

task_book

varchar

255

0

Y

N

任务书

7

examine_state

varchar

16

0

N

N

未审核

审核状态

8

examine_reply

varchar

16

0

Y

N

审核回复

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表topic_center (选题中心)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

topic_center_id

int

10

0

N

Y

选题中心ID

2

topic_number

varchar

64

0

N

N

选题编号

3

report_title

varchar

64

0

Y

N

报告标题

4

permission_settings

varchar

64

0

Y

N

权限设置

5

question_type

varchar

64

0

Y

N

题目类型

6

situation_description

varchar

64

0

Y

N

情况说明

7

purpose_of_implementation

text

65535

0

Y

N

开展目的

8

attachment

varchar

255

0

Y

N

附件

9

hits

int

10

0

N

N

0

点击数

10

timer_title

varchar

64

0

Y

N

计时器标题

11

timing_start_time

datetime

19

0

Y

N

计时开始时间

12

timing_end_time

datetime

19

0

Y

N

计时结束时间

13

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

14

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表upload (文件上传)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

文件类型

表user (用户账户:用于保存用户登录信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

email

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

创建时间:

表user_group (用户组:用于用户前端身份和鉴权)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

更新时间:

4.4 本章小结

整个基于python Web的高校毕业论文管理系统系统概要设计主要对功能模块的设计,通过建立E-R概念模型模型和数据库物理结构设计完成了数据库系统设计。

第5章 系统详细设计

5.1 数据库配置与连接

从Springboot+jsp架构的原理可知,航班信息推荐系统分析系统的各大模块的实现均需要对数据库的数据进行操作,具体包括查询数据、写入数据、更新数据和删除数据。数据库查询流程图(详情见图5-1)。

图5-2 数据库查询流程图页面

5.2 管理员模块实现

5.2.1系统用户功能的实现

可对学生用户、导师用户和管理员进行管控,包括进行增删改查操作,点击可查看详情。导师用户账号信息由管理员直接添加(详情见图5-2)。

图5-2 系统用户页面

5.2.2权限设置功能的实现

可对进行权限添加,添加修改权限内容(学生学号、学生姓名、选题权限)(详情见图5-3)。

图5-3 权限设置页面

5.2.3创建选题管理功能的实现

可查看所有创建选题信息,进行增改删查操作,支持报告标题、题目类型、提交日期、审核状态搜索,点击可查看详情,并点击通过操作,填写选题信息后会上报显示到选题中心里(详情见图5-4)。

图5-4 创建选题管理页面

5.2.4选题中心管理功能的实现

可查看所有选题中心信息,进行增改删查操作,可以进行下载导入文件,点击导入操作,进行批量导入,支持报告标题、题目类型搜索,点击可查看详情(选题编号、报告标题、权限设置、题目类型、情况说明、开展目的、附件、计时器标题、计时开始时间、计时结束时间)和查看评论,某选题页面倒计时结束后会自动关闭页面,无法进入该页面(详情见图5-5)。

图5-5 选题中心管理页面

5.2.5学生选题管理功能的实现

可查看所有学生选题信息,进行查询和删除操作,支持报告标题、学生学号、学生姓名、审核状态搜索,点击可查看详情(报告编号、选题编号、报告标题、题目类型、学生用户、学生学号、学生姓名、选题原因、报告附件、审核状态、审核回复),进行审核,可查看学生开题报告,并可点击通过(负责导师)操作,指派负责导师(详情见图5-6)。

图5-6 学生选题管理页面

5.2.6答辩成绩管理功能的实现

可查看所有答辩成绩信息,进行增改删查操作,支持报告标题、学生学号、审核状态搜索,点击可查看详情(报告编号、选题编号、报告标题、题目类型、学生用户、学生学号、学生姓名、报告附件、负责导师、论文附件、答辩日期、答辩地点、准备内容、答辩标准、评分标准、答辩评分、审核状态),进行审核,审核通过后可在页面前端显示,和查看评价(详情见图5-7)。

图5-7 答辩成绩管理页面

5.2.7论文信息管理功能的实现

可查看所有论文信息,进行增改删查操作,支持报告标题、学生学号、学生姓名、审核状态搜索,点击可查看详情(报告编号、选题编号、报告标题、题目类型、学生用户、学生学号、学生姓名、报告附件、负责导师、论文附件、备注、审核状态、审核回复),进行审核,并可点击答辩通知(答辩日期、答辩地点、准备内容、答辩标准)操作(详情见图5-8)。

图5-8论文信息页面

5.2.8系统管理功能的实现

可对首页的轮播图进行管理,进行增删改查操作,支持标题搜索,可点击查看详情(详情见图5-9)。

图5-9 系统管理页面

5.2.9系统公告管理功能的实现

可对系统公告进行管理,进行增删改查操作,支持标题搜索,可点击查看详情(详情见图5-10)。

图5-10 系统公告管理页面

5.3 导师用户模块实现

5.3.1个人中心功能的实现

可对个人首页、通过选题、指导信息、论文信息、答辩通知、答辩成绩等信息进行管控。

例如,点击“通过选题”,可查看自己的通过选题信息,进行查询和删除操作,支持报告标题、学生学号、学生姓名搜索,可点击查看详情,并可点击指导(指导内容、指导附件)操作(详情见图5-11)。

图5-11 个人中心通过选题列表页面

例如,点击“答辩通知”,可查看自己的答辩通知信息,进行增改删查操作,支持报告标题、学生学号搜索,可点击查看详情,并可点击答辩成绩(评分标准、答辩评分、审核状态)操作息(详情见图5-12)。

图5-12 个人中心答辩通知页面

例如,点击“答辩成绩”,可查看自己的答辩成绩信息,进行查询操作,支持报告标题、学生学号搜索,可点击查看详情等(详情见图5-13)。

图5-13 个人中心答辩成绩详情页面

5.4 学生用户模块实现

5.4.1登录功能的实现

系统的登录界面,旨在为用户提供轻松便捷的登录体验。

界面正中央是一个登录框,这是用户登录过程中最核心的部分。登录框的设计简洁明了,用户只需要在三个文本框中分别输入用户名、密码和验证码即可。

“登录”按钮这个按钮的设计非常醒目,使用户能够轻松地找到并点击它。当用户填写完登录信息后,只需要点击这个“登录”按钮,就可以进行登录操作。总之,这个登录非常适合高校毕业生使用(详情见图5-14)。

图5-14 系统登录页面

5.4.2注册功能的实现

学生可以通过注册填写并提交注册信息成为系统用户,使用账号密码可进行登录,使用系统功能(详情见图5-15)。

图5-15 系统注册页面

5.4.3创建选题功能的实现

可进入创建选题界面,填写并提交选题信息(报告标题、题目类型、情况说明、开展目的、附件、提交学生、提交日期)(详情见图5-16)。

图5-16 创建选题页面

5.4.4 选题中心功能的实现

可查看所有选题中心信息,支持关键字(报告标题、题目类型)搜索和下拉(题目类型、排序)搜索,点击可查看详情(选题编号、报告标题、权限设置、题目类型、情况说明、附件),可进行发表评论,并可点击确认选题(选题原因、报告附件)操作(详情见图5-17)。

图5-17 选题中心详情页面

5.4.5 个人中心功能的实现

可对个人首页、创建选题、学生选题、通过选题、指导信息、论文信息、答辩通知等信息进行管控

例如,点击“学生选题”,可查看自己的学生选题信息,进行查询和删除操作,支持报告标题、学生学号、学生姓名、审核状态搜索,可点击查看详情(详情见图5-18)。

图5-18个人中心学生选题页面

例如,点击“通过选题”,可查看自己的通过选题信息,进行查询操作,支持报告标题、学生学号、学生姓名搜索,可点击查看详情,并可点击提交论文(报告附件、论文附件、备注)操作(详情见图5-17)。

图5-19 个人中心通过选题页面

例如,点击“指导信息”,可查看自己的指导信息,进行查询操作,支持报告标题、学生学号、学生姓名搜索,可点击查看详情(详情见图5-20

图5-20 个人中心指导信息页面

例如,可查看自己的论文信息,进行查询和删除操作,支持报告标题、学生学号、学生姓名搜索,可点击查看详情(详情见图5-21)。

图5-21个人中心论文信息详情页面

例如,点击“答辩通知”,可查看自己的答辩通知信息,进行查询操作,支持报告标题、学生学号搜索,可点击查看详情(详情见图5-22)。

图5-22 个人中心答辩通知详情页面

5.5 本章小结

基于python Web的高校毕业论文管理的详细设计主要从系统管理员、学生用户、导师用户三大模块方面详细论述了该系统如何实现,实现了什么功能

第6章 系统测试

6.1系统测试目的

在这个产品被投入使用前,首先需要进行试用,这是重要的环节。考虑到某个部分的开发没有缺陷情况下,把各种模块拼接,也有一定概率就存在矛盾。这就好比每个人都很独特,但聚在一起就显得杂乱无章,需要保证有默契的配合。对于测试,要看它的各项内容是否契合的原则。若与最初定下的标准有一定程度上的出入,那么就需要做出一些调整,让最终的大方向朝着目标前进。

测试是为了发现在开发的程序中所存在的问题,测试这一工作是非常艰巨的,而又是非常困难的,这一部分在程序的设计中占有很大比例,可以说一个程序的开发工作量要是占据了百分至六十,那么剩下的百分之四十必然是测试这一部分,甚至更高。

6.2功能测试

测试方法采用多种方法来全面评估系统的质量和性能。首先,我们将进行功能测试,使用黑盒测试方法验证系统的各项功能是否按照需求正常工作。其次,性能测试模拟多用户同时访问系统,以监测系统在不同负载下的性能表现。用户权限测试使用黑盒测试方法,验证用户在系统中的权限分配是否正确。

测试内容涵盖管理员、导师和学生三个角色的各项功能。性能测试关注系统在正常负载、峰值负载和极限负载下的响应时间和稳定性。用户权限测试验证各角色在系统中的权限分配是否正确。

 6.2.1用户登录测试

用户登录功能测试用例如下表所示。

6-1 用户登录功能测试表

用例名称

用户登录系统

目的

测试用户通过正确的用户名和密码可否登录功能

前提

未登录的情况下

测试流程

1) 进入登录页面

2) 输入正确的用户名和密码

预期结果

用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入

实际结果

实际结果与预期结果一致

 6.2.2创建数据测试 

在系统中,创建功能也是基础功能之一,因此创建功能的测试很有代表性。在此章节主要列举在创建时各种情况下系统结果的测试。由于系统涉及创建功能操作过多,因此将多处统称创建功能。

创建数据用例如下表所示。

表6-2 创建数据测试用例

测试用例编号

YL_05

测试用例名称

系统使用者进行创建数据

测试用例描述

使用者输入要创建的数据

系统入口

浏览器

步骤

预期结果

实际结果

输入完整并且格式正确的数据

提示“创建成功”,并显示所有数据

预期结果

核心位置数据但非必要位置不输入数据

提示“创建成功”,并显示所有数据

预期结果

核心数据位置不输入数据

提示“创建失败”

预期结果

 6.2.3修改数据测试 

在系统中,修改功能是系统主要实现功能,因此修改功能的测试很有代表性。在此章节主要列举在修改时各种情况下系统结果的测试。由于系统涉及修改功能操作过多,因此将多处数据表记录修改和状态修改统称修改功能。

修改数据用例如下表所示。

表6-3 修改数据测试用例

测试用例编号

YL_06

测试用例名称

系统使用者进行修改数据

测试用例描述

使用者对可修改的数据项进行修改

系统入口

浏览器

步骤

预期结果

实际结果

将现有数据修改成正确的数据

提示“修改成功”,并显示所有数据

预期结果

将现有数据修改成错误的数据

提示“修改失败”

预期结果

 6.2.4查询数据测试 

在系统中,查询功能是使用系统使用最多也是最基础的功能,因此查询功能的测试很有代表性。在此章节主要列举在查询时各种情况下系统结果的测试。

查询数据用例如下表所示。

表6-4 查询数据测试用例

测试用例编号

YL_05

测试用例名称

系统使用者进行查询数据

测试用例描述

全部查询以及输入关键词查询

系统入口

浏览器

步骤

预期结果

实际结果

界面自动查询全部

显示对应所有记录

预期结果

输入已存在且能匹配成功的关键字

显示所查询到的数据

预期结果

输入不存在的关键字

显示数据界面为空

预期结果

6.3非功能测试

6.3.1兼容性测试

浏览器兼容性问题:随着ES6标准的制定,目前主流的浏览器都是符合ES6标准的,尤其是以谷歌为核心的内核,然后IE浏览器的相对于早期的版本是使用的微软人家自己的内容,对信息的兼容性产生影响。测试结果表明,目前的主要浏览器包括谷歌,IE,360,火狐浏览器最近的版本的运行都是没有问题的,状态良好,就是使用IE的早期版本有会有图片展示问题,通过对代码的修改,进行了改善,所以总的来说浏览器兼容性是没有问题的。

JDK、tomcat等兼容性问题。JDK这里使用的1.8的版本,tomcat是spark自动搭配的9.0版本,mysql是5.5版本,自己尝试了使用1.7以上的版本的JDK,是可以的,1.7以下的版本不兼容。Mysql版本如果出现冲突,需要更改配置文件中的类信息,tomcat兼容性较好,8版本以上都兼容。

6.3.2性能测试

对系统的响应时间、吞吐量等性能指标进行测试,确保在多用户同时访问的情况下系统能够保持稳定性。

该系统操作系统是Windows10,CPU是2.0GHz及以上,内存是8GB及以上,硬盘是100MB以上,显卡是图像及显卡以上,对GPU没有什么要求;并且,使用谷歌浏览器以及QQ浏览器进行测试;最后,如果产生业务错误的情况下通过debug一行行代码调试

6.4本章小结

本章主要对系统进行测试,包括功能测试和非功能测试两方面。基于以上测试结果,系统在功能、非功能方面表现出色,各项功能流程正常,系统能够承受一定的负载。测试结果表明系统达到了预期的设计要求,可以顺利投入使用。

总结与展望

随着信息化时代的到来,高校毕业论文管理工作也需要进行信息化管理,以提高效率和减少工作量。基于此,本次高校毕业论文能够解决一系列传统论文管理的问题,包括沟通成本高、管理混乱、撰写过程缺乏总体进度的掌握、答辩和评阅过程的人工方法记录管理不便利、归档占用空间大、检索查找效率低等问题。该系统将大大降低沟通成本,能够协调各教学管理部门,这样能在导师有限的精力下保障指导的高成效,大大提高论文内容的完成质量。系统也将建立过程化管理,使得导师能够实时掌握学生们的高校毕业论文整体完成情况,并针对有困难且进度落后的学生们重点关注,也方便后期整合各项评分数据,使得各项数据符合要求,更加规范。

基于python Web的高校毕业论文管理系统有选题管理、过程管理、评阅管理这三大功能模块。论文第一章阐述了传统高校毕业论文管理的弊端,进而引出信息化时代基于python Web的高校毕业论文管理系统的优势,以此说明基于python Web的高校毕业论文管理系统的功能和性能都比较强大,能够满足不同高校的需求,阐明本次系统开发的必要性。论文第二章阐述了基于python Web的高校毕业论文管理系统需要的主要技术。论文第三章阐述了本次高校毕业论文管理系统的可行性,通过对技术、经济等因素进行分析,确保开发这个系统是具有重要的意义,也是一定能成功的,也能确保开发过程中不会出现无法控制的风险。论文第四章阐述了本次高校毕业论文管理系统的需求分析,通过对系统需要实现的各个功能进行详细的需求分析。论文第五章阐述了本次系统概要设计,设计系统的整体架构和各个模块的设计,运用模块化、抽象化、封装化等设计模式和原则,确保系统的可维护性和可扩展性。论文第六章阐述了本次系统详细设计,编写出各个模块的程序代码。论文第七章阐述了本次高校毕业论文管理系统的测试,通过一般的功能测试得出的结果进行非功能测试,进行测试来确保系统的功能和性能满足需求。根据测试结果得知,本次高校毕业论文管理系统满足所有需求。

致谢

本科阶段的学习生活随着毕业论文撰写完全完成而即将落下帷幕,回首西南科技大学本科学习的这几年,我不仅学到了很多有用的专业知识,也结交了很多志同道合一心学习的朋友。这几年的本科学习的路程,并不是平平坦坦一路顺风的,而是荆棘丛生一路坎坷,哪怕如此,我还是坚持了过来,这都是源于西南科技大学浓厚的学习氛围以及老师们严谨治学的态度,正是如此,我才能具备扎实的专业基础知识,也能系统地掌握相关理论,还能通过课余时间广泛地涉猎了大量书籍,充实了自己,同样也培养了多方面的技能。

首先,我要感谢我的导师,感谢您不辞辛苦指导我的高校毕业论文,初期也为我搜集了一些选题相关的参考文献资料,让我更有方向去研究,帮助我完全确定选题,从开始到现在,在高校毕业论文的过程实施中,时时刻刻指导我,鼓励我,帮助我,说实话,由于之前接触过高年级的高校毕业论文,我深有体会,原以为自己不会有很多问题,是您不分日夜一字一句地找到我高校毕业论文存在的问题,哪怕修改一次两次甚至三次,您也没有怨言,依旧对我很有耐心,我能够顺利完成本次优秀的高校毕业论文和论文写作,完全要感谢导师的严谨耐心的指导,我感到十分幸运能有您这样的导师。

然后,我要感谢我志同道合的同学们,本次高校毕业论文的实施过程中,也离不开大家互帮互助,让原本枯燥无味的文献学习和论文变得有趣,感谢大家的一路陪伴,在此对同学们表达由衷的感谢。

最后,我还要感谢一直为我提供学习平台和资源的母校——西南科技大学,还让我认识了那么有耐心的老师们与志同道合的朋友们,希望西南科技大学能够发展的越来越好,越来越辉煌。

    

参考文献

  1. 孙振刚,闫国琦,孔莲芳等.本科毕业论文(设计)管理系统研究[J].中国现代教育装备,2018(11):60-63.
  2. 张泽平. 本科毕业论文管理系统的设计与实现[D].山东师范大学,2019.
  3. 王凌斐.本科生毕业论文管理系统的设计与分析——以上海电力大学经济与管理学院为例[J].经济师,2021(10):206-207+209.
  4. 孙超.高校毕业论文管理系统的设计与实现研究[J].信息记录材料,2021,22(11):175-176..
  5. 刘英晖.高职院校高校毕业论文(论文)智能管理系统分析与设计[J].电脑知识与技术,2022,18(31):39-42+45.
  6. 王益斌. 基于ASP的高校毕业论文管理系统的设计与开发[D].西南科技大学,2019.
  7. 边超.基于B/S架构高校毕业论文管理系统的设计——以中国矿业大学银川学院为例[J].企业科技与发展,2020(12):64-67.
  8. 屈晓,郑哲豪,陈焕培等.基于JSP高校毕业论文管理系统设计与实现[J].科技创新与应用,2018(30):42-43.
  9. 胡明,文翠,黄川.基于SpringBoot的毕业论文管理系统设计和开发[J].电脑编程技巧与维护,2020(07):92-93+104.
  10. 王宇,夏丽丽,何颖刚.基于SSM框架的高校毕业论文管理系统的设计与实现[J].电子技术与软件工程,2021(22):26-29.
  11. 彭淑燕,刘思聪.职业院校毕业论文在线编辑与管理系统[J].中国新通信,2021,23(22):61-63.
  12. 刘欣婷.毕业论文管理系统的设计与实现[J].信息与电脑(理论版),2023,35(13):74-76+80.
  13. Weici L . Design of Graduation Thesis Management System Based on School Enterprise Cooperation Mode by B/S Architecture[C]//..Atlantis Press,2022.
  14. 于泳海.毕业论文管理系统的开发与应用——以兰州工商学院为例[J].梧州学院学报,2022,32(03):1-9.
  15. 袁学林. 四川理工学院成教毕业论文管理系统设计与实现[D].西南科技大学,2019.
  16. 李迪. 毕业论文管理系统的设计与实现[D].江西财经大学,2018.
  17. 马英明,马慧彬.一种毕业论文管理系统设计[J].中国科技信息,2018(05):45-46.
  18. 马常友. 内江师范学院毕业论文管理系统的设计与实现[D].电子科技大学,2019.
  19. 张露娟,陈建,李紫嫣.基于PHP的毕业论文管理系统的设计与实现[J].现代信息科技,2019,3(01):67-69.

代码附录

登录代码如下:

  def Login(self, ctx):

        """

        登录API

        @param {Object} ctx http请求上下文

        """

        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:

                    # 生成Token

                    timeout = datetime.now(tz=timezone.utc)

                    timestamp = int(time.mktime(timeout.timetuple())) * 1000

                    token = md5hash(str(obj["user_id"]) + "_" + str(timestamp))

                    # 存储Token

                    # session[token] = obj["user_id"]

                    session.setdefault(token, obj["user_id"])

                    session.permanent = True

                    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 ret

注册代码如下:

# 用户类

class User(controllerClass):

    def __init__(self, config={}):

        """

        构造函数

        @param {Object} config 配置参数

        """

        config_init = {

            # 选择的模板那路径模板

            "tpl": "./user/",

            # 选择的服务

            "services": "user",

            # 注册API

            "get_api": ["state", "quit"],

            "post_api": ["login", "register", "change_password", "forget_password"],

            # 唯一判断

            "unique": ["username"]

        }

        config_temp = config

        config_temp.update(config_init)

        super(User, self).__init__(config_temp)

    def Register(self, ctx):

        """

        注册API

        @param {Object} config 配置参数

        """

        print("===================注册=====================")

        userService = service_select("user")

        body = ctx.body

        # 判断必须信息

        if "username" not in body and body["username"] == '':

            return {"error": {

                "code": 70000,

                "message": "用户名不能为空",

            }}

        if "user_group" not in body and body["user_group"] == '':

            return {

                "error": {

                    "code": 70000,

                    "message": "用户组不能为空",

                }

            }

        if "password" not in body and body["password"] == '':

            return {

                "error": {

                    "code": 70000,

                    "message": "密码不能为空",

                }

            }

        # 取出表单

        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 {

                "error": {

                    "code": 70000,

                    "message": "用户名已存在",

                }

            }

        ret = {

            "error": {

                "code": 70000,

                "message": "注册失败",

            }

        }

        # 添加

        bl = userService.Add(post_param)

        if bl:

            ret = {

                "result": {

                    "bl": True,

                    "message": "注册成功"

                }

            }

        return ret

找回密码代码如下:

def Forget_password(self, ctx):

        """

        找回密码API

        @param {Object} config 配置参数

        """

        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": "密码不存在或者错误"

                }

            }

修改代码如下:

 def Change_password(self, ctx):

        """

        修改密码API

        @param {Object} config 配置参数

        """

        print("===================修改密码=====================")

        ret = {

            "error": {

                "code": 70000,

                "message": "账号未登录",

            }

        }

        request = ctx.request

        headers = request.headers

        # 判断Token

        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 ret

增删查改代码如下:

 增

    def Add(self, ctx):

        """

        增

        @param {Object} ctx http请求上下文

        @return {Object} 返回json-rpc格式结果

        """

        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):

        """

        删

        @param {Object} ctx http请求上下文

        @return {Object} 返回json-rpc格式结果

        """

        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):

        """

        改

        @param {Object} ctx http请求上下文

        @return {Object} 返回json-rpc格式结果

        """

        # 修改数据前

        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):

        """

        查多条

        @param {Object} ctx http请求上下文

        @return {Object} 返回json-rpc格式结果

        """

        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):

        """

        查一条

        @param {Object} ctx http请求上下文

        @return {Object} 返回json-rpc格式结果

        """

        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}}

免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值