【纯干货分享】计算机毕业设计必看必学(基于H5的大学生创新项目管理系统研建)原创的定制程序,java、PHP、python、C#小程序、文案全套、毕设程序定制/毕设成品等等.
目录
摘 要
本研究开发基于H5的大学生创新项目管理系统,采用Django框架与Python语言实现高效稳定的系统架构。系统面向学生、教师、院级和校级用户设计多层次功能模块,涵盖项目申请、初审、中期评审、结题答辩及最终审核全流程管理。通过创新资讯、点赞收藏评论等互动功能,增强用户体验,同时提供数据统计、导出及评论管理等便捷工具,满足不同角色的个性化需求。系统支持多种终端访问,优化了移动端体验,提升了校园创新项目的管理效率。
后台管理系统整合资源管理、校园公告、轮播图配置等多项功能,便于管理员统一维护。通过项目类型管理、用户权限分配及多级审核机制,确保数据安全与操作规范性。系统实现了从项目申报到结题的全生命周期管理,并通过直观的界面设计与灵活的操作逻辑,降低使用门槛。结合数据库技术与前端动态交互,系统不仅提升了信息处理能力,还为高校创新教育提供了强有力的技术支撑。
关键词:Django框架;大学生创新项目管理系统;Python语言
This research develops the college student innovation project management system based on H5, and adopts the Django framework and Python language to realize the efficient and stable system architecture. The system designs multi-level functional modules for students, teachers, school-level and school-level users, covering the whole process management of project application, preliminary examination, mid-term evaluation, final defense and final review. Through interactive functions such as innovative information and likes, we enhance user experience, and provide convenient tools such as data statistics, export and comment management to meet the personalized needs of different roles. The system supports a variety of terminal access, optimizes the mobile terminal experience, and improves the management efficiency of campus innovation projects.
The background management system integrates resource management, campus announcement, rotation map configuration and other functions to facilitate the unified maintenance of administrators. Ensure data security and operation standardization through project type management, user permission allocation and multi-level audit mechanism. The system realizes the whole life cycle management from the project declaration to the conclusion, and lowers the threshold of use through the intuitive interface design and flexible operation logic. Combined with the database technology and the front-end dynamic interaction, the system not only improves the information processing ability, but also provides a strong technical support for the innovative education in colleges and universities.
Keywords: Django framework; college students innovation project management system; Python language; H5
第一章 绪 论
1.1研究背景及意义
大学生创新项目在提升学生创新能力、促进学术交流方面扮演着关键角色。然而,传统管理模式依赖纸质材料和人工处理,效率低下且容易出错,难以满足现代教育快速发展的需求。通过开发基于H5的大学生创新项目管理系统,可以有效解决这些问题。利用Django框架与Python语言构建系统,能够实现从项目申请到结题答辩全流程的数字化管理,极大提高了工作效率和数据准确性。该系统支持多用户类型操作,涵盖学生、教师、院级和校级管理员等不同角色的具体需求,促进了信息透明共享和高效沟通。
此系统不仅简化了项目管理和评审流程,还增强了用户体验,通过点赞、收藏、评论等功能模块,鼓励学生积极参与讨论,激发创新思维。校园公告和资源管理功能进一步加强了学校与学生之间的联系,确保每位参与者都能及时获取最新资讯。系统的设计注重灵活性和易用性,使得各级用户能够便捷地进行资料修改、项目审核及数据统计等操作。对于高校而言,这样一个全面且高效的管理系统是推动创新教育发展的重要工具,有助于营造积极向上的学术氛围,提高整体教育质量。
1.2国内外研究现状
国内外对于大学生创新项目管理的研究主要集中在提高管理效率和促进学术交流的方法上。研究指出,有效的管理系统能够显著提升项目的透明度与参与度,使得学生、教师及管理者之间的沟通更为顺畅。国外学者强调通过数字化手段改革传统管理模式,以减少人为错误并加快信息流转速度。在国内,相关研究聚焦于构建适应本地教育环境的系统,注重用户体验与功能实用性。这些研究为开发基于H5的大学生创新项目管理系统提供了理论基础和技术支持。
针对大学生创新项目管理系统的具体实施,国内外研究显示了不同的侧重点。国外案例倾向于利用先进的网络技术实现高度定制化的服务,满足不同用户群体的需求。国内研究则更多关注如何将政策导向与实际操作相结合,确保系统符合国家教育方针。研究表明,成功的关键在于整合多方资源,包括资金、技术和人力资源,建立一套完善的评价体系来监控项目进展和成果质量。通过借鉴国际经验,并结合本土实际情况,可以设计出既具国际化视野又贴合国内需求的高效管理系统,从而推动高校创新教育的发展。
1.3论文组织结构
本论文共分为七个主要章节,具体结构如下:
1. 绪论:介绍研究背景与意义,回顾国内外研究现状,并概述论文的组织结构。
2. 相关技术介绍:本章节将对大学生创新项目管理系统的实现关键技术进行简要介绍。
3. 需求分析:对系统的功能需求和非功能需求进行分析,明确用户和管理员的需求,并进行可行性分析,包括技术、操作和经济可行性。
4. 系统设计:涵盖系统架构设计、系统模块设计,并进行数据库的概念设计与表设计。
5. 系统实现:具体描述各个功能模块的实现过程,展示系统如何根据需求进行开发。
6. 系统测试:阐述测试的目的,分析测试结果并得出结论,以验证系统的稳定性和功能完整性。
7. 总结:总结研究的主要成果和贡献,指出存在的不足及未来的研究方向。
第二章 关键技术
2.1B/S体系结构
B/S体系[1],即Browser/Server体系,是一种常见的网络应用程序架构。其工作原理基于客户端与服务器之间的请求-响应模型。用户通过浏览器向服务器发送请求,服务器接收到请求后进行处理,并生成相应的响应结果,最终将响应返回给客户端。浏览器接收到服务器返回的响应后,解析其中的标记语言(如HTML[2]),并根据CSS样式表和PythonScript脚本来渲染页面,呈现给用户。用户可以与页面进行交互,例如点击链接、填写表单等操作,这些操作会触发新的请求,循环执行上述过程。
2.2Django框架
Django是一个使用Python语言开发的Web应用程序框架[3]。它提供了一种简单而强大的方式来构建复杂的网站和应用程序。通过使用Django,开发人员可以更轻松地处理数据库、创建用户界面和处理用户请求。它还提供了一个自动生成管理界面的功能,使得管理后台数据变得更加简单。Django还具有强大的安全功能,可以保护网站免受常见的网络攻击[4]。总之,Django是一个非常实用和易于学习的框架,适用于各种规模的Web项目。无论你是初学者还是经验丰富的开发人员,都可以从Django的便利性和灵活性中受益。
2.3MySQL数据库
MySQL是一种广泛使用的开源关系型数据库管理系统[5](RDBMS),其稳定性、可靠性和卓越性能使其成为众多应用程序的首选数据库。MySQL支持标准SQL语法,并提供丰富的功能和特性,如事务处理、触发器和存储过程等,以满足开发者对数据管理和操作的需求。MySQL具有良好的可扩展性,支持主从复制、分布式架构和集群部署,适用于各种规模和负载的应用场景。作为一个开源项目,MySQL拥有庞大的用户社区和活跃的开发者社区,为用户提供了丰富的文档、教程和支持资源。总之,MySQL是一款可靠、强大且灵活的关系型数据库管理系统[6],通过其卓越性能和可扩展性,帮助开发者高效地管理和操作数据,并得到了广大用户的认可和应用。
2.4Python语言
Python是一种简洁易读、跨平台且功能强大的编程语言[7]。它拥有庞大而活跃的社区,提供了丰富的第三方库和框架,如NumPy、Pandas和Django,使开发人员能够快速构建各种应用程序。Python在数据处理和科学计算方面表现出色,通过相关库和工具,可以进行数据分析、机器学习和科学计算等任务。此外,Python广泛应用于Web开发[8]、自动化脚本、网络爬虫等领域,其多样性使其成为一个全能的编程语言。无论你是初学者还是有经验的开发者,Python的简单语法、跨平台性以及强大的社区支持都能为你提供高效、优雅和可靠的编程体验。总之,Python是一个强大而灵活的编程语言,深受开发人员喜爱,并在各个领域得到广泛应用。
2.5HTML5
HTML5,是超文本标记语言(HTML)的第五次重大修订版本,旨在替代HTML4.01和XHTML1.0标准。HTML5引入了一系列新的元素和API,增强了网页的表现力和交互性。它提供了对多媒体内容(如音频和视频)的原生支持,无需依赖第三方插件。此外,HTML5还引入了新的表单元素和属性,简化了用户数据的输入和验证过程。在移动设备上,HTML5也表现出色,提供了更好的触摸事件支持和响应式设计能力。通过使用HTML5,开发人员可以创建更丰富、更互动且更具吸引力的网页应用,为用户提供更好的浏览体验。
第三章 系统分析
3.1系统可行性分析
3.1.1技术可行性
在技术可行性方面,选择使用Python作为开发语言,结合相应的框架Django,以实现系统的功能需求。Python作为一种简洁而强大的编程语言,具有丰富的库支持和成熟的开发社区,可以满足大学生创新项目管理系统的开发需求。Django作为Python的Web框架,提供了高度可扩展的开发环境,使得系统的设计和实现更加便捷和高效。
3.1.2经济可行性
系统开发采用开源技术栈,降低了软件授权与工具采购成本。Django框架简化了开发流程,缩短了项目周期,减少了人力投入。此外,借助云计算资源部署系统,可根据实际需求灵活调整服务器配置,进一步降低硬件成本。
3.1.3社会可行性
系统开发符合当前社会对信息化、智能化的需求,有助于提高大学生创新项目的管理效率和透明度。通过系统的实施,可以促进大学生之间的创新交流与合作,提升项目管理水平,推动校园创新文化的建设。系统易于操作和使用,能够被广大师生所接受和认可,具有良好的社会可行性。
3.1.4操作可行性
在操作可行性方面,本系统设计注重用户体验,采用了直观易用的界面设计,并提供详细的帮助文档支持,确保用户可以轻松上手使用各项功能。无论是用户还是后台管理员,都能通过简洁明了的操作流程完成信息查询和管理等任务。因此,从用户操作的角度来看,本系统具备良好的操作可行性。
3.2系统功能分析
3.2.1功能性分析
大学生创新项目管理系统划分为了前端模块和后端模块两大部分。
前端学生用户模块:
注册登录:学生用户可以通过注册功能创建个人账户,通过登录功能进入系统进行后续操作。注册时需要填写必要的信息,如学号、姓名、邮箱等,并设置密码。登录时需验证用户名和密码的正确性。
首页:学生用户登录后的首页展示校园公告、创新资讯和项目公式等板块。校园公告包括最新通知、关于我们、联系方式和网站介绍等信息。创新资讯板块允许学生对感兴趣的资讯进行点赞、收藏和评论。项目公式板块同样提供点赞、收藏和评论功能。
校园公告:此板块展示学校发布的最新公告,包括但不限于活动通知、政策更新等。学生可以查看公告详情,并通过提供的链接了解更多信息。
创新资讯:学生可以浏览各类创新相关的新闻和文章,并通过点赞、收藏和评论功能与内容互动,分享自己的观点和意见。
项目申请:学生可以在此板块提交自己的项目申请,填写项目名称、描述、目标、预期成果等信息,并上传相关文件。
项目公式:与创新资讯类似,学生可以对项目公式进行点赞、收藏和评论,以表达对项目的兴趣和支持。
我的账户:学生可以在此板块修改个人密码和资料,确保账户信息的准确性和安全性。
个人中心:提供个人首页、项目申请、院级初审、添加项目中期、院级中期、校级中期、添加项目结题、结题答辩、校级结题等选项,方便学生管理个人项目进度。此外,还有收藏和评论管理功能,帮助学生整理和回顾自己关注的内容。
前端教师用户模块:
注册登录:该模块允许教师用户通过注册功能创建新账户,并通过登录功能进入系统。注册时需要填写必要的个人信息,如姓名、邮箱、密码等,并进行邮箱验证。登录功能提供用户身份验证,确保只有注册用户才能访问其个人账户和相关功能。
首页:首页是教师用户进入系统后首先看到的页面,它集成了校园公告、创新资讯和项目公式三个主要部分。校园公告部分展示最新的学校通知和相关信息,创新资讯部分提供与教师研究和教学相关的最新动态,项目公式部分则用于发布和查看各类项目信息。
校园公告:此部分展示学校发布的最新公告,包括但不限于活动通知、政策更新、重要提醒等。用户可以查看公告详情,并通过“关于我们”和“联系方式”了解学校的基本信息和联系途径。此外,网站介绍部分提供了平台的详细介绍,帮助用户更好地了解和使用系统。
创新资讯:该模块允许教师用户浏览和参与创新相关的资讯内容。用户可以对感兴趣的资讯进行点赞、收藏和评论,从而与他人分享观点和看法。这有助于建立一个活跃的学术交流社区,促进教师之间的信息交流和合作。
项目公式:用户可以对感兴趣的项目进行点赞、收藏和评论,从而参与到项目的讨论和交流中。这为教师提供了一个展示和发现项目机会的场所,有助于推动科研项目的合作与发展。
我的账户:在该模块中,教师用户可以对自己的账户信息进行管理,包括修改密码和修改个人资料。用户可以更新自己的登录密码以确保账户安全,同时也可以更新个人资料,如联系方式、工作单位等,以保持信息的准确性和最新状态。
个人中心:个人中心是教师用户管理个人活动和项目信息的私密空间。用户可以查看个人首页,管理审核项目申请,进行院级初审、审核项目中期、审核院级中期、校级中期和项目结题审核结题答辩等。用户还可以管理收藏和评论,查看自己关注的项目和参与的讨论,从而高效地跟踪和参与项目活动。
前端院级用户模块:
注册登录:该模块允许新用户创建账户,并为已注册用户提供登录功能。用户需要提供必要的信息,如用户名、密码、邮箱等,以完成注册。登录功能则通过验证用户输入的用户名和密码来允许用户访问系统。
首页:首页是用户进入系统后看到的第一个页面,它提供了校园公告、创新资讯和项目公式三个主要部分。用户可以在这里快速浏览最新的校园通知、创新动态和项目信息。
校园公告:校园公告部分展示了学校的最新通知和信息,包括但不限于网站公告、关于我们、联系方式和网站介绍。用户可以在这里获取学校的重要信息和更新。
创新资讯:创新资讯部分允许用户查看和参与创新相关的新闻和文章。用户可以对感兴趣的内容进行点赞、收藏和评论,以表达自己的观点和看法。
项目公式:项目公式部分展示了与项目相关的公式和信息,用户可以对这些内容进行点赞、收藏和评论。这有助于用户更好地了解和参与项目活动。
我的账户:在“我的账户”部分,用户可以对自己的账户信息进行管理,包括修改密码和修改个人资料。这为用户提供了必要的账户安全和个性化设置功能。
个人中心:个人中心是用户管理个人活动和项目的地方。用户可以查看个人首页、项目申请进行院级评审、审核院级初审和中期项目、参与项目中期和结题的评审工作、管理收藏和评论。这个部分为用户提供了一个集中的地方来跟踪和管理他们的个人活动和项目进展。
前端校级用户模块:
注册登录:用户可以通过注册功能创建个人账户,输入必要的信息如学号、姓名、邮箱等,并设置密码。登录功能允许用户输入学号和密码来访问系统,确保只有注册用户才能使用系统功能。
首页:首页是用户进入系统后看到的第一个界面,它提供了快速访问校园公告、创新资讯和项目公示等信息的入口。用户可以在这里了解最新的校园动态、创新项目信息以及正在进行的项目公示情况。
校园公告:该模块允许用户查看网站发布的最新公告,包括但不限于活动通知、系统更新、政策变动等。用户还可以在这里找到关于网站的介绍、联系方式以及关于我们页面,了解网站的背景和运营团队。
创新资讯:用户可以浏览和阅读各类创新资讯文章,并对感兴趣的内容进行点赞、收藏和评论。这个模块旨在提供一个信息共享和交流的平台,鼓励用户参与讨论,分享观点。
项目公示:在项目公示模块,用户可以查看正在进行公示的创新项目,对感兴趣的项目进行点赞、收藏和评论。这有助于提高项目的可见度,同时为项目团队提供反馈和建议。
我的账户:用户可以在此模块中修改个人密码和资料,确保账户信息的准确性和安全性。修改密码功能要求用户输入当前密码和新密码,而修改资料则允许用户更新个人信息如联系方式、邮箱等。
个人中心:个人中心是用户管理个人信息和项目申请的集中地。用户可以查看个人首页,项目申请。院级初审进行校级评审、项目公示、项目中期、院级中期审核结题申请、校级中期、项目结题、结题答辩进行校级审核、校级结题等模块。收藏和评论管理功能让用户可以管理自己对资讯和项目的收藏以及评论,方便用户回顾和整理自己的活动记录。
后端管理员模块:
登录:管理员通过输入用户名和密码进入后台管理系统,确保只有授权的用户可以访问和操作。
后台首页:提供校级、院级和项目相关的中期统计信息,以及项目公示和初审统计概览,方便管理员快速掌握项目进展和审核状态。
系统用户:定义了不同角色的用户,包括管理员、学生用户、教师用户、院级用户和校级用户,各自拥有不同的权限和职责。
项目类型管理:允许管理员添加、删除和查询项目类型,以及查看项目类型的详细信息,方便对项目进行分类管理。
项目申请管理:管理员可以添加、删除、查询项目申请,并查看详细信息,导出数据,进行审核操作,以及管理院级评审流程。
院级初审管理:管理员可以删除、查询项目申请,查看详细信息,导出数据,进行审核操作,以及管理校级评审流程。
项目公示管理:管理员可以删除、查询公示项目,查看详细信息和评论,导出数据,确保项目信息的透明度和公众监督。
项目中期管理:管理员可以添加、删除、查询项目中期信息,查看详细信息,导出数据,进行审核操作,以及管理中期评审流程。
院级中期管理:管理员可以删除、查询项目中期信息,导出数据,处理结题申请,审核项目,确保中期阶段的项目质量。
校级中期管理:管理员可以删除、查询项目中期信息,导出数据,便于校级层面的监控和管理。
项目结题管理:管理员可以删除、查询项目结题信息,查看详细信息,导出数据,进行审核操作,以及管理结题答辩流程。
结题答辩管理:管理员可以删除、查询结题答辩信息,查看详细信息,导出数据,进行校级审核,确保结题流程的规范性。
校级结题管理:管理员可以添加、删除、查询校级结题信息,查看详细信息,导出数据,便于校级层面的结题管理。
系统管理:管理员可以添加、删除、查询轮播图,以及查看轮播图详情,用于网站的视觉展示和信息更新。
校园公告管理:管理员可以添加、删除、查询校园公告,以及查看公告详情,用于向用户传达重要信息和通知。
资源管理:管理员可以管理创新资讯和资讯分类,包括添加、删除、查询和查看评论,确保信息的及时更新和用户互动。
3.2.2非功能性分析
大学生创新项目管理系统的非功能性需求比如大学生创新项目管理系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等,具体可以表示在如下3-1表格中:
表3-1大学生创新项目管理系统非功能需求表
| 安全性 | 主要指大学生创新项目管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
| 可靠性 | 可靠性是指大学生创新项目管理系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
| 性能 | 性能是影响大学生创新项目管理系统占据市场的必要条件,所以性能最好要佳才好。 |
| 可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
| 易用性 | 用户只要跟着大学生创新项目管理系统的页面展示内容进行操作,就可以了。 |
| 可维护性 | 大学生创新项目管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
3.3系统用例分析
大学生创新项目管理系统的完整UML用例图分别是图3-1、3-2、3-3、3-4、3-5。
学生用户角色用例如下图所示。

图3-1大学生创新项目管理系统学生用户角色用例图
教师用户角色用例如下图所示。

图3-2大学生创新项目管理系统教师用户角色用例图
院级用户角色用例如下图所示。

图3-3大学生创新项目管理系统院级用户角色用例图
校级用户角色用例如下图所示。

图3-4大学生创新项目管理系统校级用户角色用例图
管理员角色用例如下图所示。

图3-5大学生创新项目管理系统管理员角色用例图
3.4系统总体流程设计
3.4.1数据开发流程
系统开发流程的主要步骤,从需求分析到系统完成的全过程。流程包括需求分析、总体设计(结构、功能、数据)、详细设计(模块、编码)、模块整合与调用,以及测试、扩展和完善,最终完成系统的开发。本系统的开发流程如下图所示

图3-6系统开发流程图
3.4.2用户登录流程
用户输入用户名和密码后,系统先检查输入是否为空,再验证用户名是否存在,若存在则通过用户名获取密码并校验。若密码正确则登录成功,否则提示密码错误。若用户名不存在或无法登录,提示用户操作无效。如下图所示。

图3-7登录流程图
3.4.3系统操作流程
用户首先进入系统登录界面,输入用户名和密码后,系统验证信息是否正确。若验证失败,返回登录界面重新输入,若验证成功,则进入功能界面,执行相应功能处理后结束操作流程。操作流程如下图所示。

图3-8系统操作流程图
3.4.4添加信息流程
管理员可以添加信息,用户添加可以自己权限内的信息,输入信息后,要想利用这个软件来进行系统的安全管理,首先需要登录到该软件中。添加信息流程如下图所示。

图3-9添加信息流程图
3.4.5修改信息流程
用户首先选择需要修改的记录,输入修改后的数据,系统判断输入数据是否合法。若数据不合法,提示重新输入,若数据合法,则将修改后的数据写入数据库,完成操作后流程结束。修改信息流程图如下图所示。

图3-10修改信息流程图
3.4.6删除信息流程
用户选择需要删除的记录后,系统判断是否确认删除。若未确认,返回选择环节,若确认删除,则更新数据库,删除对应记录,完成操作后流程结束。删除信息流程图如下图所示。

图3-11删除信息流程图
第四章 总体设计
本章主要讨论的内容包括大学生创新项目管理系统的功能模块设计、数据库系统设计。
4.1系统架构设计
本大学生创新项目管理系统从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。

图4-1大学生创新项目管理系统架构设计图
表现层(UI):也称为用户界面层,它负责与用户进行直接的交互。一个优秀的UI设计能够显著提升用户的体验,确保用户在使用大学生创新项目管理系统时感到舒适和便捷。为了确保良好的兼容性,UI界面设计需要适应不同版本的平台和各种屏幕尺寸的分辨率。此外,UI交互功能必须合理设计,确保用户的操作能够得到相应的反馈和结果,这要求表现层与业务逻辑层之间保持良好的通信和协同工作。
业务逻辑层(BLL):这一层主要处理大学生创新项目管理系统的数据和业务逻辑。当用户通过表现层提交数据时,业务逻辑层会接收这些数据,进行处理,并将结果传递给数据层进行存储或查询。同时,当系统需要从数据层读取数据时,业务逻辑层会处理这些数据,并将其传递给表现层进行展示。
数据层(DL):虽然本大学生创新项目管理系统的数据存储在服务端的MySQL数据库中,但数据层仍然作为一个独立的部分存在。它的主要功能是存储和管理大学生创新项目管理系统的数据。数据层与MySQL数据库进行交互,执行数据的增、删、改、查等操作,确保数据的完整性和安全性。
这三个层次相互独立但又紧密协作,共同构成了大学生创新项目管理系统的完整架构。通过合理的分层设计,可以提高系统的可维护性、可扩展性和可重用性,为用户提供更好的服务和体验。
4.2系统模块设计
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本大学生创新项目管理系统中的用例。那么接下来就要开始对本大学生创新项目管理系统的架构、主要功能和数据库开始进行设计。大学生创新项目管理系统根据前面章节的需求分析得出,大学生创新项目管理系统的功能模块图如下图所示。

图4-2大学生创新项目管理系统功能模块图
4.3数据库设计
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
4.3.1数据库概念结构设计
下面是整个大学生创新项目管理系统中主要的数据库表总E-R实体关系图。

图4-3大学生创新项目管理系统总E-R关系图
4.3.2数据库逻辑结构设计
通过上一小节中大学生创新项目管理系统中总E-R关系图上得出一共需要创建多个数据表。在此主要罗列几个主要的数据库表结构设计。
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | token_id | int | 是 | 是 | 临时访问牌ID | |
| 2 | token | varchar | 64 | 否 | 否 | 临时访问牌 |
| 3 | info | text | 65535 | 否 | 否 | 信息 |
| 4 | maxage | int | 是 | 否 | 最大寿命:默认2小时 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | user_id | int | 是 | 否 | 用户编号 |
表 4-2-article(文章)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | article_id | mediumint | 是 | 是 | 文章id | |
| 2 | title | varchar | 125 | 是 | 是 | 标题 |
| 3 | type | varchar | 64 | 是 | 否 | 文章分类 |
| 4 | hits | int | 是 | 否 | 点击数 | |
| 5 | praise_len | int | 是 | 否 | 点赞数 | |
| 6 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 7 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 8 | source | varchar | 255 | 否 | 否 | 来源 |
| 9 | url | varchar | 255 | 否 | 否 | 来源地址 |
| 10 | tag | varchar | 255 | 否 | 否 | 标签 |
| 11 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 12 | img | varchar | 255 | 否 | 否 | 封面图 |
| 13 | description | text | 65535 | 否 | 否 | 文章描述 |
表 4-3-article_type(文章分类)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | type_id | smallint | 是 | 是 | 分类ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 分类名称 |
| 4 | father_id | smallint | 是 | 否 | 上级分类ID | |
| 5 | description | varchar | 255 | 否 | 否 | 描述 |
| 6 | icon | text | 65535 | 否 | 否 | 分类图标 |
| 7 | url | varchar | 255 | 否 | 否 | 外链地址 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-4-auth(用户权限管理)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | auth_id | int | 是 | 是 | 授权ID | |
| 2 | user_group | varchar | 64 | 否 | 否 | 用户组 |
| 3 | mod_name | varchar | 64 | 否 | 否 | 模块名 |
| 4 | table_name | varchar | 64 | 否 | 否 | 表名 |
| 5 | page_title | varchar | 255 | 否 | 否 | 页面标题 |
| 6 | path | varchar | 255 | 否 | 否 | 路由路径 |
| 7 | parent | varchar | 64 | 否 | 否 | 父级菜单 |
| 8 | parent_sort | int | 是 | 否 | 父级菜单排序 | |
| 9 | position | varchar | 32 | 否 | 否 | 位置 |
| 10 | mode | varchar | 32 | 是 | 否 | 跳转方式 |
| 11 | add | tinyint | 是 | 否 | 是否可增加 | |
| 12 | del | tinyint | 是 | 否 | 是否可删除 | |
| 13 | set | tinyint | 是 | 否 | 是否可修改 | |
| 14 | get | tinyint | 是 | 否 | 是否可查看 | |
| 15 | field_add | text | 65535 | 否 | 否 | 添加字段 |
| 16 | field_set | text | 65535 | 否 | 否 | 修改字段 |
| 17 | field_get | text | 65535 | 否 | 否 | 查询字段 |
| 18 | table_nav_name | varchar | 500 | 否 | 否 | 跨表导航名称 |
| 19 | table_nav | varchar | 500 | 否 | 否 | 跨表导航 |
| 20 | option | text | 65535 | 否 | 否 | 配置 |
| 21 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 22 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-5-closing_reply(结题答辩)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | closing_reply_id | int | 是 | 是 | 结题答辩ID | |
| 2 | student_users | int | 否 | 否 | 学生用户 | |
| 3 | student_name | varchar | 64 | 否 | 否 | 学生姓名 |
| 4 | entry_name | varchar | 64 | 否 | 否 | 项目名称 |
| 5 | project_type | varchar | 64 | 否 | 否 | 项目类型 |
| 6 | project_members | varchar | 64 | 否 | 否 | 项目成员 |
| 7 | teacher_user | int | 否 | 否 | 教师用户 | |
| 8 | submission_time | varchar | 64 | 否 | 否 | 提交时间 |
| 9 | list_of_results | varchar | 64 | 否 | 否 | 成果清单 |
| 10 | hospital_level_user | int | 否 | 否 | 院级用户 | |
| 11 | time_of_reply | date | 否 | 否 | 答辩时间 | |
| 12 | group_of_defense_experts | varchar | 64 | 否 | 否 | 答辩专家组 |
| 13 | reply_score | double | 否 | 否 | 答辩评分 | |
| 14 | comments_in_reply | text | 65535 | 否 | 否 | 答辩意见 |
| 15 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 16 | examine_reply | varchar | 16 | 否 | 否 | 审核回复 |
| 17 | school_level_conclusion_limit_times | int | 是 | 否 | 校级审核限制次数 | |
| 18 | create_time | datetime | 是 | 否 | 创建时间 | |
| 19 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 20 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 21 | source_id | int | 否 | 否 | 来源ID | |
| 22 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-6-code_token(验证码)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | code_token_id | int | 是 | 是 | 验证码ID | |
| 2 | token | varchar | 255 | 否 | 否 | 令牌 |
| 3 | code | varchar | 255 | 否 | 否 | 验证码 |
| 4 | expire_time | timestamp | 是 | 否 | 失效时间 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-7-collect(收藏)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | collect_id | int | 是 | 是 | 收藏ID | |
| 2 | user_id | int | 是 | 是 | 收藏人ID | |
| 3 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 4 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 5 | source_id | int | 是 | 否 | 来源ID | |
| 6 | title | varchar | 255 | 否 | 否 | 标题 |
| 7 | img | varchar | 255 | 否 | 否 | 封面 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-8-comment(评论)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | comment_id | int | 是 | 是 | 评论ID | |
| 2 | user_id | int | 是 | 是 | 评论人ID | |
| 3 | reply_to_id | int | 是 | 否 | 回复评论ID | |
| 4 | content | longtext | 4294967295 | 否 | 否 | 内容 |
| 5 | nickname | varchar | 255 | 否 | 否 | 昵称 |
| 6 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 9 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 10 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 11 | source_id | int | 是 | 否 | 来源ID |
表 4-9-hits(用户点击)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | hits_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 否 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID |
表 4-10-hospital_level_preliminary_examination(院级初审)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | hospital_level_preliminary_examination_id | int | 是 | 是 | 院级初审ID | |
| 2 | student_users | int | 否 | 否 | 学生用户 | |
| 3 | student_name | varchar | 64 | 否 | 否 | 学生姓名 |
| 4 | project_number | varchar | 64 | 否 | 否 | 项目编号 |
| 5 | entry_name | varchar | 64 | 否 | 否 | 项目名称 |
| 6 | project_type | varchar | 64 | 否 | 否 | 项目类型 |
| 7 | project_members | varchar | 64 | 否 | 否 | 项目成员 |
| 8 | teacher_user | int | 否 | 否 | 教师用户 | |
| 9 | project_cycle | varchar | 64 | 否 | 否 | 项目周期 |
| 10 | project_amount | double | 否 | 否 | 项目金额 | |
| 11 | project_objectives | varchar | 64 | 否 | 否 | 项目目标 |
| 12 | hospital_level_user | int | 否 | 否 | 院级用户 | |
| 13 | review_time | date | 否 | 否 | 评审时间 | |
| 14 | review_team | varchar | 64 | 否 | 否 | 评审组员 |
| 15 | review_score | double | 否 | 否 | 评审分数 | |
| 16 | review_comments | text | 65535 | 否 | 否 | 评审意见 |
| 17 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 18 | examine_reply | varchar | 16 | 否 | 否 | 审核回复 |
| 19 | project_publicity_limit_times | int | 是 | 否 | 校级评审限制次数 | |
| 20 | create_time | datetime | 是 | 否 | 创建时间 | |
| 21 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 22 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 23 | source_id | int | 否 | 否 | 来源ID | |
| 24 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-11-hospital_level_user(院级用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | hospital_level_user_id | int | 是 | 是 | 院级用户ID | |
| 2 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 3 | user_gender | varchar | 64 | 否 | 否 | 用户性别 |
| 4 | user_phone | varchar | 16 | 否 | 否 | 用户电话 |
| 5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 6 | user_id | int | 是 | 否 | 用户ID | |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-12-middle_school_level(校级中期)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | middle_school_level_id | int | 是 | 是 | 校级中期ID | |
| 2 | student_users | int | 否 | 否 | 学生用户 | |
| 3 | student_name | varchar | 64 | 否 | 否 | 学生姓名 |
| 4 | entry_name | varchar | 64 | 否 | 否 | 项目名称 |
| 5 | project_type | varchar | 64 | 否 | 否 | 项目类型 |
| 6 | project_members | varchar | 64 | 否 | 否 | 项目成员 |
| 7 | teacher_user | int | 否 | 否 | 教师用户 | |
| 8 | submission_time | varchar | 64 | 否 | 否 | 提交时间 |
| 9 | progress_description | varchar | 64 | 否 | 否 | 进展描述 |
| 10 | stage_results | varchar | 64 | 否 | 否 | 阶段成果 |
| 11 | use_of_funds | varchar | 64 | 否 | 否 | 经费使用 |
| 12 | hospital_level_user | int | 否 | 否 | 院级用户 | |
| 13 | review_time | date | 否 | 否 | 评审时间 | |
| 14 | review_team | varchar | 64 | 否 | 否 | 评审组员 |
| 15 | review_score | double | 否 | 否 | 评审分数 | |
| 16 | school_level_users | int | 否 | 否 | 校级用户 | |
| 17 | school_level_team_members | varchar | 64 | 否 | 否 | 校级组员 |
| 18 | review_scoring | double | 否 | 否 | 评审打分 | |
| 19 | conclusion_status | varchar | 64 | 否 | 否 | 结题状态 |
| 20 | other_instructions | text | 65535 | 否 | 否 | 其他说明 |
| 21 | create_time | datetime | 是 | 否 | 创建时间 | |
| 22 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 23 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 24 | source_id | int | 否 | 否 | 来源ID | |
| 25 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-13-mid_hospital_level(院级中期)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | mid_hospital_level_id | int | 是 | 是 | 院级中期ID | |
| 2 | student_users | int | 否 | 否 | 学生用户 | |
| 3 | student_name | varchar | 64 | 否 | 否 | 学生姓名 |
| 4 | entry_name | varchar | 64 | 否 | 否 | 项目名称 |
| 5 | project_type | varchar | 64 | 否 | 否 | 项目类型 |
| 6 | project_members | varchar | 64 | 否 | 否 | 项目成员 |
| 7 | teacher_user | int | 否 | 否 | 教师用户 | |
| 8 | submission_time | varchar | 64 | 否 | 否 | 提交时间 |
| 9 | progress_description | varchar | 64 | 否 | 否 | 进展描述 |
| 10 | stage_results | varchar | 64 | 否 | 否 | 阶段成果 |
| 11 | use_of_funds | varchar | 64 | 否 | 否 | 经费使用 |
| 12 | hospital_level_user | int | 否 | 否 | 院级用户 | |
| 13 | review_time | date | 否 | 否 | 评审时间 | |
| 14 | review_team | varchar | 64 | 否 | 否 | 评审组员 |
| 15 | review_score | double | 否 | 否 | 评审分数 | |
| 16 | review_comments | text | 65535 | 否 | 否 | 评审意见 |
| 17 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 18 | examine_reply | varchar | 16 | 否 | 否 | 审核回复 |
| 19 | middle_school_level_limit_times | int | 是 | 否 | 结题申请限制次数 | |
| 20 | create_time | datetime | 是 | 否 | 创建时间 | |
| 21 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 22 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 23 | source_id | int | 否 | 否 | 来源ID | |
| 24 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-14-notice(公告)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | notice_id | mediumint | 是 | 是 | 公告ID | |
| 2 | title | varchar | 125 | 是 | 否 | 标题 |
| 3 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 4 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 5 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-15-praise(点赞)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | praise_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 是 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | status | tinyint | 是 | 否 | 点赞状态:1为点赞,0已取消 |
表 4-16-project_application(项目申请)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | project_application_id | int | 是 | 是 | 项目申请ID | |
| 2 | student_users | int | 否 | 否 | 学生用户 | |
| 3 | student_name | varchar | 64 | 否 | 否 | 学生姓名 |
| 4 | project_number | varchar | 64 | 否 | 否 | 项目编号 |
| 5 | entry_name | varchar | 64 | 否 | 否 | 项目名称 |
| 6 | project_type | varchar | 64 | 否 | 否 | 项目类型 |
| 7 | project_members | varchar | 64 | 否 | 否 | 项目成员 |
| 8 | teacher_user | int | 否 | 否 | 教师用户 | |
| 9 | teachers_name | varchar | 64 | 否 | 否 | 教师姓名 |
| 10 | project_cycle | varchar | 64 | 否 | 否 | 项目周期 |
| 11 | project_amount | double | 否 | 否 | 项目金额 | |
| 12 | project_objectives | varchar | 64 | 否 | 否 | 项目目标 |
| 13 | expected_results | varchar | 64 | 否 | 否 | 预期成果 |
| 14 | acceptance_criteria | text | 65535 | 否 | 否 | 验收标准 |
| 15 | project_content | text | 65535 | 否 | 否 | 项目内容 |
| 16 | hits | int | 是 | 否 | 点击数 | |
| 17 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 18 | examine_reply | varchar | 16 | 否 | 否 | 审核回复 |
| 19 | hospital_level_preliminary_examination_limit_times | int | 是 | 否 | 院级评审限制次数 | |
| 20 | create_time | datetime | 是 | 否 | 创建时间 | |
| 21 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-17-project_conclusion(项目结题)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | project_conclusion_id | int | 是 | 是 | 项目结题ID | |
| 2 | student_users | int | 否 | 否 | 学生用户 | |
| 3 | student_name | varchar | 64 | 否 | 否 | 学生姓名 |
| 4 | entry_name | varchar | 64 | 否 | 否 | 项目名称 |
| 5 | project_type | varchar | 64 | 否 | 否 | 项目类型 |
| 6 | project_members | varchar | 64 | 否 | 否 | 项目成员 |
| 7 | teacher_user | int | 否 | 否 | 教师用户 | |
| 8 | teachers_name | varchar | 64 | 否 | 否 | 教师姓名 |
| 9 | submission_time | date | 否 | 否 | 提交时间 | |
| 10 | cam_report | varchar | 255 | 否 | 否 | 结题报告 |
| 11 | list_of_results | varchar | 64 | 否 | 否 | 成果清单 |
| 12 | proof_materials | text | 65535 | 否 | 否 | 证明材料 |
| 13 | material_status | varchar | 64 | 否 | 否 | 材料状态 |
| 14 | material_information | longtext | 4294967295 | 否 | 否 | 材料信息 |
| 15 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 16 | examine_reply | varchar | 16 | 否 | 否 | 审核回复 |
| 17 | closing_reply_limit_times | int | 是 | 否 | 结题答辩限制次数 | |
| 18 | create_time | datetime | 是 | 否 | 创建时间 | |
| 19 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-18-project_medium_term(项目中期)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | project_medium_term_id | int | 是 | 是 | 项目中期ID | |
| 2 | student_users | int | 否 | 否 | 学生用户 | |
| 3 | student_name | varchar | 64 | 否 | 否 | 学生姓名 |
| 4 | entry_name | varchar | 64 | 否 | 否 | 项目名称 |
| 5 | project_type | varchar | 64 | 否 | 否 | 项目类型 |
| 6 | project_members | varchar | 64 | 否 | 否 | 项目成员 |
| 7 | teacher_user | int | 否 | 否 | 教师用户 | |
| 8 | teachers_name | varchar | 64 | 否 | 否 | 教师姓名 |
| 9 | submission_time | date | 否 | 否 | 提交时间 | |
| 10 | contract_content | varchar | 255 | 否 | 否 | 合同内容 |
| 11 | progress_description | varchar | 64 | 否 | 否 | 进展描述 |
| 12 | stage_results | varchar | 64 | 否 | 否 | 阶段成果 |
| 13 | use_of_funds | varchar | 64 | 否 | 否 | 经费使用 |
| 14 | medium_term_materials | text | 65535 | 否 | 否 | 中期材料 |
| 15 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 16 | examine_reply | varchar | 16 | 否 | 否 | 审核回复 |
| 17 | mid_hospital_level_limit_times | int | 是 | 否 | 中期评审限制次数 | |
| 18 | create_time | datetime | 是 | 否 | 创建时间 | |
| 19 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-19-project_publicity(项目公示)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | project_publicity_id | int | 是 | 是 | 项目公示ID | |
| 2 | student_users | int | 否 | 否 | 学生用户 | |
| 3 | student_name | varchar | 64 | 否 | 否 | 学生姓名 |
| 4 | project_number | varchar | 64 | 否 | 否 | 项目编号 |
| 5 | entry_name | varchar | 64 | 否 | 否 | 项目名称 |
| 6 | project_type | varchar | 64 | 否 | 否 | 项目类型 |
| 7 | project_members | varchar | 64 | 否 | 否 | 项目成员 |
| 8 | teacher_user | int | 否 | 否 | 教师用户 | |
| 9 | project_cycle | varchar | 64 | 否 | 否 | 项目周期 |
| 10 | project_amount | double | 否 | 否 | 项目金额 | |
| 11 | project_objectives | varchar | 64 | 否 | 否 | 项目目标 |
| 12 | hospital_level_user | int | 否 | 否 | 院级用户 | |
| 13 | review_time | date | 否 | 否 | 评审时间 | |
| 14 | review_team | varchar | 64 | 否 | 否 | 评审组员 |
| 15 | review_score | double | 否 | 否 | 评审分数 | |
| 16 | school_level_users | int | 否 | 否 | 校级用户 | |
| 17 | school_level_team_members | varchar | 64 | 否 | 否 | 校级组员 |
| 18 | review_scoring | double | 否 | 否 | 评审打分 | |
| 19 | project_status | varchar | 64 | 否 | 否 | 立项状态 |
| 20 | project_level | varchar | 64 | 否 | 否 | 项目级别 |
| 21 | project_funds | double | 否 | 否 | 项目经费 | |
| 22 | expected_results | varchar | 255 | 否 | 否 | 预期成果 |
| 23 | publicity_time | date | 否 | 否 | 公示时间 | |
| 24 | other_instructions | text | 65535 | 否 | 否 | 其他说明 |
| 25 | hits | int | 是 | 否 | 点击数 | |
| 26 | praise_len | int | 是 | 否 | 点赞数 | |
| 27 | collect_len | int | 是 | 否 | 收藏数 | |
| 28 | comment_len | int | 是 | 否 | 评论数 | |
| 29 | create_time | datetime | 是 | 否 | 创建时间 | |
| 30 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 31 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 32 | source_id | int | 否 | 否 | 来源ID | |
| 33 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-20-project_type(项目类型)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | project_type_id | int | 是 | 是 | 项目类型ID | |
| 2 | project_type | varchar | 64 | 否 | 否 | 项目类型 |
| 3 | create_time | datetime | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-21-school_level_conclusion(校级结题)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | school_level_conclusion_id | int | 是 | 是 | 校级结题ID | |
| 2 | student_users | int | 否 | 否 | 学生用户 | |
| 3 | student_name | varchar | 64 | 否 | 否 | 学生姓名 |
| 4 | entry_name | varchar | 64 | 否 | 否 | 项目名称 |
| 5 | project_type | varchar | 64 | 否 | 否 | 项目类型 |
| 6 | project_members | varchar | 64 | 否 | 否 | 项目成员 |
| 7 | teacher_user | int | 否 | 否 | 教师用户 | |
| 8 | submission_time | varchar | 64 | 否 | 否 | 提交时间 |
| 9 | list_of_results | varchar | 64 | 否 | 否 | 成果清单 |
| 10 | hospital_level_user | int | 否 | 否 | 院级用户 | |
| 11 | time_of_reply | date | 否 | 否 | 答辩时间 | |
| 12 | group_of_defense_experts | varchar | 64 | 否 | 否 | 答辩专家组 |
| 13 | reply_score | double | 否 | 否 | 答辩评分 | |
| 14 | school_level_users | int | 否 | 否 | 校级用户 | |
| 15 | project_conclusion | varchar | 64 | 否 | 否 | 项目结题 |
| 16 | remarks_description | text | 65535 | 否 | 否 | 备注说明 |
| 17 | create_time | datetime | 是 | 否 | 创建时间 | |
| 18 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 19 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 20 | source_id | int | 否 | 否 | 来源ID | |
| 21 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-22-school_level_users(校级用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | school_level_users_id | int | 是 | 是 | 校级用户ID | |
| 2 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 3 | user_gender | varchar | 64 | 否 | 否 | 用户性别 |
| 4 | user_phone | varchar | 16 | 否 | 否 | 用户电话 |
| 5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 6 | user_id | int | 是 | 否 | 用户ID | |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-23-score(评分)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | score_id | int | 是 | 是 | 评分ID | |
| 2 | user_id | int | 是 | 否 | 评分人 | |
| 3 | nickname | varchar | 64 | 否 | 否 | 昵称 |
| 4 | score_num | double | 是 | 否 | 评分 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 8 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 9 | source_id | int | 是 | 否 | 来源ID |
表 4-24-slides(轮播图)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | slides_id | int | 是 | 是 | 轮播图ID | |
| 2 | title | varchar | 64 | 否 | 否 | 标题 |
| 3 | content | varchar | 255 | 否 | 否 | 内容 |
| 4 | url | varchar | 255 | 否 | 否 | 链接 |
| 5 | img | varchar | 255 | 否 | 否 | 轮播图 |
| 6 | hits | int | 是 | 否 | 点击量 | |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-25-student_users(学生用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | student_users_id | int | 是 | 是 | 学生用户ID | |
| 2 | student_name | varchar | 64 | 否 | 否 | 学生姓名 |
| 3 | student_gender | varchar | 64 | 否 | 否 | 学生性别 |
| 4 | student_phone | varchar | 16 | 是 | 是 | 学生电话 |
| 5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 6 | user_id | int | 是 | 否 | 用户ID | |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-26-teacher_user(教师用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | teacher_user_id | int | 是 | 是 | 教师用户ID | |
| 2 | teachers_name | varchar | 64 | 否 | 否 | 教师姓名 |
| 3 | gender_of_teachers | varchar | 64 | 否 | 否 | 教师性别 |
| 4 | teacher_telephone | varchar | 16 | 否 | 否 | 教师电话 |
| 5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 6 | user_id | int | 是 | 否 | 用户ID | |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-27-upload(文件上传)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | upload_id | int | 是 | 是 | 上传ID | |
| 2 | name | varchar | 64 | 否 | 否 | 文件名 |
| 3 | path | varchar | 255 | 否 | 否 | 访问路径 |
| 4 | file | varchar | 255 | 否 | 否 | 文件路径 |
| 5 | display | varchar | 255 | 否 | 否 | 显示顺序 |
| 6 | father_id | int | 否 | 否 | 父级ID | |
| 7 | dir | varchar | 255 | 否 | 否 | 文件夹 |
| 8 | type | varchar | 32 | 否 | 否 | 文件类型 |
表 4-28-user(用户账户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | user_id | int | 是 | 是 | 用户ID | |
| 2 | state | smallint | 是 | 否 | 账户状态:(1可用|2异常|3已冻结|4已注销) | |
| 3 | user_group | varchar | 32 | 否 | 否 | 所在用户组 |
| 4 | login_time | timestamp | 是 | 否 | 上次登录时间 | |
| 5 | phone | varchar | 11 | 否 | 否 | 手机号码 |
| 6 | phone_state | smallint | 是 | 否 | 手机认证:(0未认证|1审核中|2已认证) | |
| 7 | username | varchar | 16 | 是 | 否 | 用户名 |
| 8 | nickname | varchar | 16 | 否 | 否 | 昵称 |
| 9 | password | varchar | 64 | 是 | 否 | 密码 |
| 10 | | varchar | 64 | 否 | 否 | 邮箱 |
| 11 | email_state | smallint | 是 | 否 | 邮箱认证:(0未认证|1审核中|2已认证) | |
| 12 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 |
| 14 | create_time | timestamp | 是 | 否 | 创建时间 |
表 4-29-user_group(用户组)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | group_id | mediumint | 是 | 是 | 用户组ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 名称 |
| 4 | description | varchar | 255 | 否 | 否 | 描述 |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | register | smallint | 否 | 否 | 注册位置 | |
| 9 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 |
第五章 详细设计与实现
5.1前端首页模块
用户登录后的首页展示校园公告、创新资讯和项目公式等板块。校园公告包括最新通知、关于我们、联系方式和网站介绍等信息。创新资讯板块允许学生对感兴趣的资讯进行点赞、收藏和评论。项目公式板块同样提供点赞、收藏和评论功能。前台首页模块展示如下图所示。

图5-1前台首页模块图
5.2用户注册模块
不是大学生创新项目管理系统中正式用户的是可以在线进行注册的,当填写上自己的账号+设置密码+确认密码+昵称+邮箱+手机号+身份+用户姓名+用户性别等信息后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。其用户注册模块展示如下图所示。

图5-2注册模块图
5.3登录模块
大学生创新项目管理系统中的前台上注册后的用户是可以通过自己的用户名+密码进行登录的,当用户输入完整的自己的用户名+密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的用户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到大学生创新项目管理系统的首页中,否则将会提示相应错误信息,登录模块如下图所示。

图5-3登录模块图
5.4前端学生用户功能模块
5.4.1校园公告模块
此板块展示学校发布的最新公告,包括但不限于活动通知、政策更新等。学生可以查看公告详情,并通过提供的链接了解更多信息。如下图所示

图5-4校园公告模块图
5.4.2创新资讯模块
学生可以浏览各类创新相关的新闻和文章,并通过点赞、收藏和评论功能与内容互动,分享自己的观点和意见。如下图所示。

图5-5创新资讯模块图
5.4.3项目公式模块
与创新资讯类似,学生可以对项目公式进行点赞、收藏和评论,以表达对项目的兴趣和支持。如下图所示。

图5-6项目公式模块图
5.4.4项目申请模块
学生可以在此板块提交自己的项目申请,填写项目名称、描述、目标、预期成果等信息,并上传相关文件。如下图所示。

图5-7项目申请模块图
5.4.5个人中心模块
提供个人首页、项目申请、院级初审、添加项目中期、院级中期、校级中期、添加项目结题、结题答辩、校级结题等选项,方便学生管理个人项目进度。此外,还有收藏和评论管理功能,帮助学生整理和回顾自己关注的内容。如下图所示。

图5-8个人中心项目申请模块图
5.5前端教师用户功能模块
5.5.1个人中心模块
个人中心是教师用户管理个人活动和项目信息的私密空间。用户可以查看个人首页,管理审核项目申请,进行院级初审、审核项目中期、审核院级中期、校级中期和项目结题审核结题答辩等。用户还可以管理收藏和评论,查看自己关注的项目和参与的讨论,从而高效地跟踪和参与项目活动。如下图所示。

图5-9个人中心审核项目申请模块图
5.6前端校级用户功能模块
5.6.1个人中心模块
个人中心是校级用户管理个人信息和项目申请的集中地。用户可以查看个人首页,项目申请。院级初审进行校级评审、项目公示、项目中期、院级中期审核结题申请、校级中期、项目结题、结题答辩进行校级审核、校级结题等模块。收藏和评论管理功能让用户可以管理自己对资讯和项目的收藏以及评论,方便用户回顾和整理自己的活动记录。如下图所示。

图5-10个人中心院级初审模块图

图5-11个人中心院级中期模块图
5.7前端院级用户功能模块
5.7.1个人中心模块
个人中心是院级用户管理个人活动和项目的地方。用户可以查看个人首页、项目申请进行院级评审、审核院级初审和中期项目、参与项目中期和结题的评审工作、管理收藏和评论。这个部分为用户提供了一个集中的地方来跟踪和管理他们的个人活动和项目进展。如下图所示。

图5-12个人中心项目申请模块图

图5-13个人中心项目中期模块图
5.8后端管理员功能模块
5.8.1后台首页模块
提供校级、院级和项目相关的中期统计信息,以及项目公示和初审统计概览,方便管理员快速掌握项目进展和审核状态。如下图所示。

图5-14后台首页模块图
5.8.2系统用户模块
管理员负责管理系统中的各类用户账号,包括管理员、学生用户、教师用户、院级用户和校级用户账号。执行增删改查等操作,确保平台用户的合法性和安全性。流程图如下所示。

图5-15用户管理流程图
系统用户模块如下图所示。

图5-16系统用户模块图
5.8.3项目类型管理模块
允许管理员添加、删除和查询项目类型,以及查看项目类型的详细信息,方便对项目进行分类管理。如下图所示。

图5-17项目类型管理模块图
5.8.4项目公示管理模块
管理员可以删除、查询公示项目,查看详细信息和评论,导出数据,确保项目信息的透明度和公众监督。如下图所示。

图5-18项目公示管理模块图
5.8.5系统管理模块
系统管理模块包括轮播图管理,管理员可以添加、删除或查询轮播图详情,以更新平台的宣传内容。如下图所示。

图5-19轮播图管理模块图
5.8.6资源管理模块
资源管理模块包括创新资讯及其分类的添加、删除、查询和查看评论,管理员可以维护平台上的资讯内容。如下图所示。

图5-20创新资讯管理添加模块图
第六章 系统测试
6.1系统测试的目的
测试的主要目的是确保系统的功能和性能满足预期的需求,同时识别和修复潜在的缺陷。通过系统测试,可以验证各个功能模块的正确性和稳定性,确保系统在不同使用场景下的表现符合设计要求。测试目的包括确认系统功能的完整性、验证数据处理的准确性、评估系统的性能和安全性。测试还可以提高用户满意度,保证用户在使用系统时获得流畅和可靠的体验。通过全面的测试,可以降低后期维护成本,减少系统上线后出现故障的风险,从而保障系统的长期稳定运行。
6.2测试方法
在本系统中,测试方法主要依赖于测试用例的设计与执行。测试用例是根据系统需求文档编写的,覆盖所有功能模块及其边界情况。每个测试用例包含输入数据、预期结果和实际结果的对比,以验证系统的功能是否按预期工作。
常见的测试用例包括功能测试用例、边界测试用例和异常测试用例。功能测试用例针对系统的各项功能进行验证;边界测试用例则侧重于输入数据的边界条件,验证系统在极端情况下是否能够稳定运行;异常测试用例则用于验证系统在处理错误输入或异常情况时的反应。本文选择功能测试用例进行系统测试。
在测试执行过程中,记录每个用例的执行结果,并根据实际结果与预期结果的对比,判断系统是否存在缺陷。通过系统化的测试用例执行,可以有效提高测试的覆盖率和效率,为系统的最终上线提供保障。
6.3测试用例
6.3.1用户登录功能测试
表6-1 用户登录功能测试表
| 用例名称 | 用户登录系统 |
| 目的 | 测试用户通过正确的用户名和密码可否登录功能 |
| 前提 | 未登录的情况下 |
| 测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
| 预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
| 实际结果 | 实际结果与预期结果一致 |
6.3.2创建数据测试
在系统中,创建功能也是基础功能之一,因此创建功能的测试很有代表性。在此章节主要列举在创建时各种情况下系统结果的测试。由于系统涉及创建功能操作过多,因此将多处统称创建功能。
创建数据用例如表6-2 所示。
表6-2 创建数据测试用例
| 测试用例编号 | YL_05 | |
| 测试用例名称 | 系统使用者进行创建数据 | |
| 测试用例描述 | 使用者输入要创建的数据 | |
| 系统入口 | 浏览器 | |
| 步骤 | 预期结果 | 实际结果 |
| 输入完整并且格式正确的数据 | 提示“创建成功”,并显示所有数据 | 预期结果 |
| 核心位置数据但非必要位置不输入数据 | 提示“创建成功”,并显示所有数据 | 预期结果 |
| 核心数据位置不输入数据 | 提示“创建失败” | 预期结果 |
6.3.3修改数据测试
在系统中,修改功能是系统主要实现功能,因此修改功能的测试很有代表性。在此章节主要列举在修改时各种情况下系统结果的测试。由于系统涉及修改功能操作过多,因此将多处数据表记录修改和状态修改统称修改功能。
修改数据用例如表6-3所示。
表6-3 修改数据测试用例
| 测试用例编号 | YL_06 | |
| 测试用例名称 | 系统使用者进行修改数据 | |
| 测试用例描述 | 使用者对可修改的数据项进行修改 | |
| 系统入口 | 浏览器 | |
| 步骤 | 预期结果 | 实际结果 |
| 将现有数据修改成正确的数据 | 提示“修改成功”,并显示所有数据 | 预期结果 |
| 将现有数据修改成错误的数据 | 提示“修改失败” | 预期结果 |
6.3.4查询数据测试
在系统中,查询功能是使用系统使用最多也是最基础的功能,因此查询功能的测试很有代表性。在此章节主要列举在查询时各种情况下系统结果的测试。
查询数据用例如表6-4所示。
表6-4 查询数据测试用例
| 测试用例编号 | YL_05 | |
| 测试用例名称 | 系统使用者进行查询数据 | |
| 测试用例描述 | 全部查询以及输入关键词查询 | |
| 系统入口 | 浏览器 | |
| 步骤 | 预期结果 | 实际结果 |
| 界面自动查询全部 | 显示对应所有记录 | 预期结果 |
| 输入已存在且能匹配成功的关键字 | 显示所查询到的数据 | 预期结果 |
| 输入不存在的关键字 | 显示数据界面为空 | 预期结果 |
6.4测试结果
在本次测试的过程主要针对所有功能下的添加操作,修改操作和删除操作,并以真实数据一一进行相关功能项目的输入,最终能够保证每个项目涉及的功能都能够正常运行,因此能够保证本次设计的,已实现的功能能够正常运行并且相关数据库的信息也同样保证正确。
通过采用Django框架和Python语言,成功实现了大学生创新项目管理系统的开发。系统涵盖了从项目申请到结题答辩的全流程数字化管理,支持多用户类型操作,并提供了点赞、收藏、评论等互动功能,增强了用户体验。整个过程证明了高效的数据处理与直观的界面设计能够极大提升工作效率,简化复杂流程,确保信息透明共享。
在开发过程中,学到了如何结合不同技术优势优化系统性能,以及怎样设计符合用户需求的功能模块。未来期望进一步扩展系统功能,加强数据安全保护措施,探索更多样化的用户交互方式,以适应不断变化的教育环境和技术发展趋势。持续关注用户反馈,将有助于不断迭代升级,保持系统的先进性和实用性。
- 黄维.基于B/S模式的虚拟网络实验室安全管理体系分析[J].信息系统工程,2024,(05):4-7.
- 张宇薇.HTML5在Web前端开发中的应用[J].集成电路应用,2024,41(04):274-276.
- 邱红丽,张舒雅.基于Django框架的web项目开发研究[J].科学技术创新,2021,(27):97-98.
- 段艺,涂伟忠.Django开发从入门到实践[M].机械工业出版社:202211.635.
- 李艳杰.MySQL数据库下存储过程的综合运用研究[J].现代信息科技,2023,7(11):80-82+88.
- 肖睿,李鲲程,范效亮,等.MySQL数据库应用技术及实践[M].人民邮电出版社:202206.228.
- 明日科技.快速上手Python[M].化学工业出版社:202211.337.
- 明日科技.Python Web开发手册[M].化学工业出版社:202201.411.
- 张锦贤,吴晓玲. 基于Django框架技术的网站设计 [J]. 电脑知识与技术, 2024, 20 (10): 71-73.
- 庞敏. MySQL数据库的数据安全应用设计技术研究 [J]. 数字通信世界, 2024, (09): 25-27.
- Stokes D . Update or migrate? Planning for MySQL 5.7 EOL [J]. InfoWorld.com, 2023, 24 (03): 22-30.
- Guo Z ,Wang H ,He J , et al. PSLSA v2.0: An automatic Python package integrating machine learning models for regional landslide susceptibility assessment [J]. Environmental Modelling and Software, 2025, 186 106367-106367.
- Daniel C ,Greg L . Django 5 for the Impatient:Learn the core concepts of Django to develop Python web applications[M]. Packt Publishing Limited: 2024-09-27.
- 支馨悦.大学生创新创业项目管理系统的设计与实现[J].兰州职业技术学院学报,2022,38(06):88-92.
- 王晓东,吴文广,左风云,等.基于全流程管理大学生创新创业项目管理系统[J].内蒙古医科大学学报,2019,41(S2):50-53.DOI:10.16343/j.cnki.issn.2095-512x.2019.s2.022.
- 孙娇.大学生创新项目管理系统的设计与实现[D].大连海事大学,2019.DOI:10.26989/d.cnki.gdlhu.2019.001827.
- 程宁宁,付作立.大学生创新训练项目管理系统的实践分析[J].教育现代化,2019,6(87):321-323.DOI:10.16541/j.cnki.2095-8420.2019.87.118.
- 支馨悦.大学生创新创业项目管理系统的设计与实现[J].电脑知识与技术,2018,14(29):88-89.DOI:10.14004/j.cnki.ckt.2018.3399.
- 陈婧.大学生创新创业项目管理系统的设计与实现[D].厦门大学,2018.
- 解巧芸,黄斌,曹国辉,等.基于Web的大学生创新创业项目管理系统的设计与实现[J].无线互联科技,2018,15(04):125-126.
大学生创新项目管理系统设计与实现工作已结束,虽然过程中充满挑战,但内心充满自豪和满足。感谢大学四年间教导我的所有老师,他们的专业知识与人生智慧让我成长为能独立完成系统的学生。特别感谢指导老师,他耐心解答疑惑,引导我解决问题,提升自主解决能力。室友和同学们的宝贵建议和支持也让我取得长足进步。未来,我将继续努力追求卓越,不辜负所学所悟和老师期望。坚信坚定信念和不懈努力,未来定能取得更辉煌成就。期待更美好未来!
大学生创新项目管理系统设计与实现不仅是技术挑战,挫折和困难是成长的垫脚石,让我更深入理解问题,精确找到解决方案。每次解决问题,都感到满足和自豪。
对于未来,我充满期待和信心。无论道路多崎岖,只要保持坚定信念,持续努力,定能取得更大成就。期待将知识和技能运用到实际中,为社会做出更大贡献。
最后,感谢所有帮助和支持我的人。你们的教诲、鼓励和支持让我有今天的成就。我会继续努力,不辜负期望,为实现更美好的未来而奋斗。
登录代码如下:
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))
注册代码如下:
def Register(self, ctx):
print("===================注册=====================")
userService = service_select("user")
body = ctx.body
if "username" not in body and body["username"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户名不能为空",
}
}, ensure_ascii=False))
if "user_group" not in body and body["user_group"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户组不能为空",
}
}, ensure_ascii=False))
if "password" not in body and body["password"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "密码不能为空",
}
}, ensure_ascii=False))
post_param = body
post_param['nickname'] = body["nickname"] or ""
post_param['password'] = md5hash(body["password"])
obj = userService.Get_obj({"username": post_param['username']}, {"like": False})
if obj:
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户名已存在",
}
}, ensure_ascii=False))
ret = {
"error": {
"code": 70000,
"message": "注册失败",
}
}
bl = userService.Add(post_param)
if bl:
ret = {
"result": {
"bl": True,
"message": "注册成功"
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
找回密码代码如下:
def Forget_password(self, ctx):
print("===================修改密码=====================")
ret = {
"error": {
"code": 70000,
"message": "用户信息不能没有"
}
}
body = ctx.body
if not body["code"]:
return {
"error": {
"code": 70000,
"message": "验证码不存在或者错误"
}
}
obj = service_select("user").Get_obj(
{"username": body["username"]}, {"like": False}
)
if not obj:
return {
"error": {
"code": 70000,
"message": "用户名不存在或者错误"
}
}
password = md5hash(body["password"])
if not password:
return {
"error": {
"code": 70000,
"message": "密码不存在或者错误"
}
}
bl = service_select("user").Set({"user_id": obj["user_id"]}, {"password": password})
if bl:
ret = {"result": {"bl": True, "message": "修改成功"}}
else:
ret = {
"error": {
"code": 70000,
"message": "修改失败",
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
修改密码代码如下:
def Change_password(self, ctx):
print("===================修改密码=====================")
ret = {
"error": {
"code": 70000,
"message": "账号未登录",
}
}
request = ctx.request
headers = request.headers
if ("x-auth-token" in headers) and headers["x-auth-token"]:
token = headers["x-auth-token"]
user_id = tokenGetUserId(token, request)
userService = service_select("user")
body = ctx.body
password = md5hash(body["o_password"])
obj = userService.Get_obj({"user_id": user_id, "password": password}, {"like": False})
if obj:
password = md5hash(body["password"])
bl = userService.Set({"user_id": user_id}, {"password": password})
if bl:
ret = {"result": {"bl": True, "message": "修改成功"}}
else:
ret = {
"error": {
"code": 70000,
"message": "修改失败",
}
}
else:
ret = {
"error": {
"code": 70000,
"message": "密码错误",
}
}
else:
ret = {
"error": {
"code": 70000,
"message": "账户未登录",
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
增删查改代码如下:
增
def Add(self, ctx):
body = ctx.body
unique = self.config.get("unique")
obj = None
if unique:
qy = {}
for i in range(len(unique)):
key = unique[i]
qy[key] = body.get(key)
obj = self.service.Get_obj(qy)
if not obj:
error = self.Add_before(ctx)
if error["code"]:
return {"error": error}
error = self.Events("add_before", ctx, None)
if error["code"]:
return {"error": error}
result = self.service.Add(body, self.config)
if self.service.error:
return {"error": self.service.error}
res = self.Add_after(ctx, result)
if res:
result = res
res = self.Events("add_after", ctx, result)
if res:
result = res
return {"result": result}
else:
return {"error": {"code": 10000, "message": "已存在"}}
删
def Del(self, ctx):
if len(ctx.query) == 0:
errorMsg = {"code": 30000, "message": "删除条件不能为空!"}
return errorMsg
result = self.service.Del(ctx.query, self.config)
if self.service.error:
return {"error": self.service.error}
return {"result": result}
改
def Set(self, ctx):
error = self.Set_before(ctx)
if error["code"]:
return {"error": error}
error = self.Events("set_before", ctx, None)
if error["code"]:
return {"error": error}
query = ctx.query
if 'page' in query.keys():
del ctx.query['page']
if 'size' in query.keys():
del ctx.query['size']
if 'orderby' in query.keys():
del ctx.query['orderby']
result = self.service.Set(ctx.query, ctx.body, self.config)
if self.service.error:
return {"error": self.service.error}
res = self.Set_after(ctx, result)
if res:
result = res
res = self.Events("set_after", ctx, result)
if res:
result = res
return {"result": result}
查多条数据:
def Get_list(self, ctx):
query = dict(ctx.query)
config_plus = {}
if "field" in query:
field = query.pop("field")
config_plus["field"] = field
if "page" in query:
config_plus["page"] = query.pop("page")
if "size" in query:
config_plus["size"] = query.pop("size")
if "orderby" in query:
config_plus["orderby"] = query.pop("orderby")
if "like" in query:
config_plus["like"] = query.pop("like")
if "groupby" in query:
config_plus["groupby"] = query.pop("groupby")
count = self.service.Count(query)
lst = []
if self.service.error:
return {"error": self.service.error}
elif count:
lst = self.service.Get_list(query,
obj_update(self.config, config_plus))
if self.service.error:
return {"error": self.service.error}
self.interact_list(ctx, lst)
return {"result": {"list": lst, "count": count}}
查一条数据:
def Get_obj(self, ctx):
query = dict(ctx.query)
config_plus = {}
if "field" in query:
field = query.pop("field")
config_plus["field"] = field
obj = self.service.Get_obj(query, obj_update(self.config, config_plus))
if self.service.error:
return {"error": self.service.error}
if obj:
self.interact_obj(ctx, obj)
return {"result": {"obj": obj}}
整理归纳不易,点击「分享」和「在看」让更多有需要的人看到,谢谢!
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢
更多推荐


所有评论(0)