【纯干货分享】(基于C#的患者病历信息管理软件设计)原创的定制程序,java、PHP、python、C#小程序、文案全套、毕设程序定制/毕设成品等等.
目录
摘 要
随着医疗信息化的发展,患者病历信息的管理在医疗系统中扮演着至关重要的角色。本文设计并实现了一种基于C#的患者病历信息管理软件,旨在提高病历管理的效率、安全性和可访问性。该软件采用C#编程语言和SQL Server数据库技术,实现了患者信息的录入、存储、查询、修改和删除等功能。系统设计遵循模块化原则,包括用户管理模块、病历管理模块、数据统计模块等,确保系统的可扩展性和易维护性。通过使用加密技术和权限管理机制,系统有效保护了患者的隐私和数据安全。测试结果表明,该软件能够满足医疗机构对病历信息管理的需求,提升了医疗服务的质量和效率。本文的研究为医疗信息化提供了实用的解决方案,具有一定的推广应用价值。
关键词:C#;病历信息管理;SQL Server;医疗信息化;数据安全;模块化设计;权限管理
With the development of medical informatization, the management of patient medical record information plays a vital role in the medical system. In this paper, a C#-based patient medical record information management software is designed and implemented, which aims to improve the efficiency, security, and accessibility of medical record management. The software adopts C# programming language and SQL Server database technology to realize the functions of patient information entry, storage, query, modification and deletion. The system design follows the principle of modularity, including user management module, medical record management module, data statistics module, etc., to ensure the scalability and easy maintenance of the system. Through the use of encryption technology and permission management mechanism, the system effectively protects the privacy and data security of patients. The test results show that the software can meet the needs of medical institutions for medical record information management and improve the quality and efficiency of medical services. The research in this paper provides a practical solution for medical informatization, which has certain promotion and application value.
Keyword:C#; medical record information management; SQL Server; medical informatization; data security; Modular design; Permissions management
第一章 绪论
1.1研究背景与意义
1.1.1研究背景
随着医疗行业对信息化管理需求的增长,开发基于C#的患者病历信息管理软件显得尤为重要。许多医疗机构在病历管理方面仍然面临诸多挑战,包括信息记录效率低下、数据安全风险、信息共享困难等问题。C#作为一种成熟、稳定的编程语言,提供了开发高效、安全的病历信息管理系统的技术基础。本选题旨在利用C#开发一套患者病历信息管理软件,以应对现有系统缺陷,满足医疗行业对信息化管理的迫切需求。传统的纸质病历管理方式已经无法满足现代医疗机构对于高效、准确、安全的病历信息管理需求。开发一款基于C#的患者病历信息管理软件具有重要的现实意义。这款软件可以实现病历信息的数字化存储和管理,提高医疗机构的工作效率。通过软件,医生可以快速录入、查询和修改患者的病历信息,避免了传统纸质病历管理中可能出现的错误和遗漏。软件还可以实现病历信息的共享和传输,方便医生之间进行交流和协作,提高诊疗水平。基于C#的患者病历信息管理软件可以提高病历信息的安全性和保密性。软件可以设置严格的权限管理机制,确保只有授权人员才能访问和修改病历信息。软件还可以对病历信息进行加密处理,防止病历信息被非法获取和泄露。基于C#的患者病历信息管理软件可以为医疗机构提供丰富的数据分析和统计功能。软件可以对病历信息进行汇总和分析,帮助医疗机构了解患者的疾病分布、诊疗效果等信息,为医疗机构的决策提供有力支持。
1.1.2研究意义
提升医疗服务质量:通过快速检索和完整的历史记录,医生可以更全面地了解患者的健康状况,做出更精准的诊断和治疗方案。支持多科室协作,促进医疗资源的合理利用,提升整体医疗服务质量。提高医疗机构的管理效率:电子化病历管理减少了纸质文档的使用,降低了文档丢失或损坏的风险。自动化的流程和高效的检索功能,缩短了医护人员的工作时间,提高了工作效率。
保障患者隐私和数据安全:通过权限控制、数据加密和审计日志等功能,确保患者病历信息的安全性和隐私性,增强患者对医疗机构的信任。支持数据统计与分析:通过对病历数据的统计分析,医疗机构可以更好地了解患者群体的健康状况和疾病分布,为医疗决策提供数据支持。长期跟踪病历数据,分析疾病发展趋势,帮助医疗机构提前做好预防和应对措施。推动医疗信息化发展:该软件的设计与实现,符合医疗信息化的发展趋势,为医疗机构的数字化转型提供技术支持。支持与第三方系统(如实验室系统、药房系统等)的集成,推动医疗信息化的整体发展。
降低医疗成本:通过减少纸质文档的使用和存储,降低了医疗机构的存储成本。
自动化和电子化管理减少了人力成本,提升了医疗机构的经济效益。
1.2国内外研究现状
1.2.1国外研究现状
国外在患者病历信息管理软件设计方面,注重技术创新和跨领域融合,尤其在云计算、数据加密和智能医疗方面取得了显著进展。
云计算与大数据应用
国外学者在云计算和大数据技术的应用方面进行了深入研究。如Bouabana- Tebibel等人[14][15]研究了基于属性加密的云计算数据搜索技术,为病历信息的安全存储和高效检索提供了解决方案。
数据加密与隐私保护
数据加密技术在国外研究中得到了广泛应用。Lohman等人[11]在社区心理健康中心患者的研究中,强调了数据加密在病历信息管理中的重要性。Ren等人[12]在低分子量肝素诱导的血小板减少症研究中,采用了加密技术保护患者数据,为病历信息管理系统的安全性提供了参考。
智能医疗与辅助诊断
国外研究在智能医疗领域取得了显著进展。如Wei等人[13]开发的TriDB平台,整合了知识库和报告系统,为癌症精准医疗提供了数据支持。此外,人工智能技术在病历信息分析和辅助诊断中的应用也逐渐普及,为医疗决策提供了科学依据。
1.2.2国内研究现状
国内在基于C#的患者病历信息管理软件设计方面,主要集中在电子病历标准化、数据安全、移动医疗和云计算等领域,并结合实际需求开发了多种系统。
电子病历标准化与系统设计
国内学者在电子病历标准化方面进行了大量研究,如王惠品[4]探讨了基于云计算的区域医疗信息系统的构建,提出了统一的数据标准和信息共享机制,为病历信息管理系统的设计提供了理论支持。此外,刘钰鑫[9]设计了个人诊所管理系统,实现了病历信息的数字化管理,为小型医疗机构提供了实用工具。
数据安全与隐私保护
数据安全是病历信息管理系统的核心问题。国内研究普遍采用数据加密、用户权限控制等技术手段,如冉润浓[7]在基于无线局域网技术的移动医疗系统中,设计了多层次的安全机制,保障了患者隐私。同时,云计算技术的应用进一步提升了数据存储和传输的安全性,如陈敬志[2]在基于云计算的移动医疗系统中,实现了病历信息的高效管理和安全共享。
移动医疗与远程医疗
随着移动互联网的发展,移动医疗成为研究热点。(2014)[5] 设计了基于Android平台的移动医疗系统,实现了患者病历信息的移动化管理。罗治伟[6]研究了基于移动互联的远程医疗监护系统,为慢性病患者的远程管理提供了技术支持。张胜[3]结合ZigBee和GPRS网络,设计了远程医疗系统,进一步拓展了病历信息管理的应用场景。
人工智能与知识库构建
人工智能技术在病历信息管理中的应用逐渐深入。郑鑫[1]研究了辅助医疗系统中的知识库构建,为病历信息的智能分析和辅助诊断提供了技术支持。此外,刘耀东[8]研发了基于智能终端的远程数字医疗系统,结合人工智能技术实现了病历信息的智能管理
1.3论文组织结构
本论文共分为七个主要章节,具体结构如下:
1.绪论:介绍研究背景与意义,回顾国内外研究现状,并概述论文的组织结构。
2.相关技术介绍:详细介绍与本研究相关的技术,包括C#开发语言、ASP.NET技术、SQLServer数据库、Visual Studio 简介。
3.需求分析:对系统的功能需求和非功能需求进行分析,明确用户和管理员的需求,并进行可行性分析,包括技术、操作和经济可行性。
4.系统设计:涵盖系统架构设计、系统模块设计,并进行数据库的概念设计与表设计。
5.系统实现:具体描述各个功能模块的实现过程,展示系统如何根据需求进行开发。
6.系统测试:阐述测试的目的,分析测试结果并得出结论,以验证系统的稳定性和功能完整性。
7.总结:总结研究的主要成果和贡献,指出存在的不足及未来的研究方向。
第二章 关键技术
2.1C#简介
C#是一种由微软公司开发的面向对象的编程语言,主要用于.NET框架。 C#最初是为了与Java竞争而设计的,因此在语法和设计原则上有许多相似之处。C#结合了C和C++的强大功能,同时去掉了它们的复杂特性,如宏和多重继承。C#在2000年6月首次发布,首个版本于2002年发布。最新的版本是C# 12,于2023年11月发布。C#在编译时进行类型检查,减少了运行时错误。支持封装、继承和多态,适合构建复杂应用程序。随着.NET Core的引入,C#可以在Windows、Linux和macOS等多个平台上运行。支持lambda表达式、LINQ查询、异步编程等现代编程范式。
.NET是一个由微软公司开发的开源开发平台,用于构建各种类型的应用程序,包括Web应用、云应用、移动应用、桌面应用、游戏、机器学习、微服务和物联网应用等。.NET提供了一组丰富的类库和运行时环境,使开发人员可以更轻松地创建和管理应用程序。.NET包括多个关键组件,如运行时、类库、编译器、SDK和工具,以及用于构建各类应用的堆栈(例如ASP.NET Core和Windows窗体)。运行时为代码执行提供支持,类库提供丰富的功能模块,编译器则负责将代码转换为可执行形式。而SDK和工具则帮助开发者更高效地管理开发流程。.NET采用先进的垃圾回收器(GC)进行自动内存管理,通过async/await实现一流的异步编程支持,并通过严格的类型系统和语言编译器确保代码的内存安全和类型安全。这种设计不仅提升了应用性能,还大大减少了因内存错误引起的问题。.NET提供了多平台支持,从Windows到macOS、Linux,从x86到Arm64,开发者可以选择最适合自己需求的变体。此外,.NET还支持多种编程语言,包括C#、F#和Visual Basic等,语言是与社区协作设计的。.NET生态系统包括数十万个库和组件,可以帮助开发者更加高效地开发应用程序,并且提供了丰富的组件和类库来简化开发流程。同时,.NET还支持跨平台开发,例如使用.NET Core来开发跨平台的Web应用程序和微服务。总的来说,.NET是一种强大、灵活、跨平台的技术,提供了丰富的功能和工具,使开发人员可以更轻松地创建和管理各种类型的应用程序。
2.2Visual Studio 简介
Visual Studio是由微软公司开发的一款功能强大的集成开发环境(IDE),适用于软件开发的全生命周期,包括编写、编辑、调试和生成代码,并支持部署应用。Visual Studio是一个全面的开发工具集,支持多种编程语言,如C#、C++、VB.NET、F#和TypeScript等。它提供了代码编辑器、调试器、编译器等功能,特别适合开发大型的桌面应用程序、Web应用程序、移动应用程序以及云服务等。此外,Visual Studio还集成了版本控制系统(如Git)、自动化测试工具、性能剖析器等,为开发者提供了一站式的开发环境。Visual Studio最初于1995年发布,经历了多次更新和改进。随着.NET框架的推出,Visual Studio .NET(内部版本号为7.0)在2002年发布,引入了C#语言和CLR(公共语言运行时)机制。后续版本中,Visual Studio不断扩展其功能,支持更多的开发场景和语言。Visual Studio因其强大的功能和广泛的编程语言支持,成为企业级应用、游戏开发等大规模项目的首选开发工具之一。尽管其性能和启动速度在某些情况下可能不如预期,但其丰富的插件和扩展生态系统使得开发者可以根据需求自定义开发环境,进一步提高开发效率
2.3SQLServer数据库
SQLServer是一种开放源代码的关系型数据库管理系统(RDBMS)。关系型数据库将数据保存在不同的表中,提高了数据处理的灵活性,其管理主要依赖于广泛使用的结构化查询语言(SQL)。由于SQLServer具备速度快、体积小、总体拥有成本低以及开放源码等优势,它受到了广泛关注。其主要特点包括:
(1)兼容多种操作系统。
(2)为多种编程语言提供了应用程序接口(API)。
(3)支持多线程操作,以充分利用CPU资源。
(4)SQLServer展现出卓越的性能和稳定性,极少发生异常宕机现象。
(5)原生支持JSON格式。
(6)对SQL查询算法进行了优化,有效提升了查询效率[6]。
(7)提供了丰富的安全特性,包括数据加密、访问控制等,以保护数据的完整性和机密性。
(8)SQLServer支持高级的数据分析和报告功能,通过集成的商业智能(BI)工具,用户可以进行数据可视化等操作,从而获取更有价值的业务洞察。
(9)SQLServer提供了高可用性解决方案,如数据库镜像、日志传送和AlwaysOn可用性组等,确保在发生故障时能够快速恢复服务,保障业务的连续性。
在构建基于C#(ASP.NET)的患者病历信息管理软件设计时,选择SQLServer作为数据库管理系统,不仅可以满足数据存储和检索的需求,还能利用SQLServer的高级功能,如安全性、数据分析和高可用性等,进一步提升系统的整体性能和可靠性。通过合理的数据库设计和优化,可以确保系统在面对大量用户并发访问时依然能够保持高效稳定的运行,为用户提供优质的服务体验。
2.4ASP.NET技术框架
ASP.NET技术:ASP.NET,作为微软公司力推的先进技术,运行于Windows平台下的.net框架,是一种功能强大的新型WEB编程语言。经过数年的改进与优化,ASP.NET逐渐发展成为一种成熟且稳定的WEB编程语言,足以与JSP技术相抗衡。相较于传统ASP受限于弱类型脚本语言的局限性,难以适用于中大型系统,ASP.NET凭借其卓越的功能、高效的安全性以及快速的处理速度等优势,赢得了广大程序员的青睐。
ASP.NET基于通用语言的编译运行机制,赋予了其卓越的性能和广泛的适应性,使其能够在WEB应用软件开发者的众多平台上无缝运行。通用语言的基本库、消息机制以及数据接口的处理,均能与ASP.NET的WEB应用实现无缝整合。
ASP.NET框架还提供了丰富的控件和服务,使得开发者能够快速构建用户界面,简化开发流程。例如,ASP.NET中的GridView控件允许开发者以表格形式展示数据,无需手动编写大量HTML代码。同时,ASP.NET的Model-View-Controller(MVC)架构模式支持将应用程序的业务逻辑、数据访问和表示层分离,提高了代码的可维护性和可扩展性。这种架构模式使得开发者能够更专注于各自的领域,促进了代码复用等。此外,ASP.NET还支持与多种数据库的无缝连接,包括SQLServer、MySQL等,为数据交互提供了极大的便利。在安全性方面,ASP.NET框架内置了多种安全机制,如身份验证、授权、数据加密等,有效保护了应用程序和用户数据的安全。开发者可以利用这些安全特性,构建出既高效又安全的WEB应用程序。通过采用ASP.NET技术,患者病历信息管理软件设计能够实现更强大的功能和更高的安全性,为用户提供更加优质的体验。
2.5B/S结构
B/S结构模式与互联网的发展密切相关,是对C/S结构的改进。传统的C/S结构要求在电脑上安装特定的软件,如QQ、杀毒软件和办公软件等。然而,随着互联网的普及和用户需求的变化,C/S结构逐渐无法满足人们对信息数据共享的需求。基于此,B/S结构应运而生,解决了传统模式中必须直接访问服务器的问题,用户只需通过浏览器即可轻松访问服务器。该结构不仅使得程序访问更加便捷,还降低了更新和维护成本,同时提升了交互性。
第三章 系统分析
3.1系统可行性分析
C#是一种成熟且广泛使用的面向对象编程语言,它拥有强大的开发框架.NET,非常适合开发复杂的管理系统。Visual Studio等IDE为C#提供了强大的开发环境,支持快速应用开发(RAD)和多种先进编程实践。C#可以轻松地与多种数据库系统集成,如SQL Server、MySQL等,这些数据库系统都能够满足病历信息管理对数据存储和检索的需求。C#支持开发网络应用,能够确保数据的传输安全,同时支持多种加密和认证机制。C#开发成本相对较低,且长期维护成本也较为合理,对于医疗机构来说具有较高的成本效益。C#可以设计出直观、友好的用户界面,使得医护人员能够快速上手,降低培训成本。
3.1.1技术可行性
技术可行性分析主要关注系统开发所需的技术资源是否可用,以及现有技术是否能够满足系统的功能需求。ASP.NET作为系统的开发平台,提供了丰富的类库和工具,使得开发者能够高效地实现系统的各项功能。ASP.NET的安全性和稳定性已经得到了广泛的认可,能够满足系统对安全性和稳定性的高要求。ASP.NET框架的兼容性也非常强,可以与多种数据库和第三方服务进行无缝集成,为系统的开发和维护提供了极大的便利。综上所述,从技术可行性的角度来看,采用ASP.NET开发该系统是完全可行的。
3.1.2经济可行性
系统的开发成本相对较低,可以利用开源框架和工具,降低开发成本。其次,系统的运行和维护成本也相对较低,可以采用ASP.NET等技术,实现系统的自动化部署和维护。因此,从经济层面来看,开发患者病历信息管理软件设计也是可行的。
3.1.3操作可行性
系统的操作界面设计简洁明了,易于用户理解和操作。系统提供了详尽的操作指南和帮助文档,使得用户能够快速上手并熟练使用系统。系统还具备良好的容错性和错误提示功能,当用户操作失误时,能够及时给出提示信息,引导用户进行正确的操作。因此,从操作层面来看,患者病历信息管理软件设计同样具备可行性。
3.2系统功能分析
3.2.1功能性分析
普通用户模块:
注册登录:用户首先需要在系统中进行注册,填写必要的个人信息,如姓名、联系方式、邮箱等,并设置一个安全的密码。注册成功后,用户可以使用注册的邮箱或手机号码以及密码登录系统。登录后,用户可以访问个人病历信息管理等模块。
后台首页:登录成功后,用户将进入后台首页,在这里用户可以点击头像查看和修改个人信息,包括但不限于姓名、联系方式、注册邮箱等。用户还可以在这里修改自己的密码,以确保账户安全。
病历信息管理:在病历信息管理模块中,用户可以查询自己的病历记录。用户可以按照就诊时间进行筛选,查看不同时间点的病历详情。用户可以详细查看这些信息,以便更好地了解自己的健康状况和治疗进展。
管理员模块:
登录:管理员通过输入预设的用户名和密码进入系统管理界面,确保只有授权的人员可以访问管理功能。
后台首页:登录后,管理员将看到后台首页,点击头像可以显示个人信息以及提供修改密码的选项,确保管理员可以更新自己的登录凭证。
系统用户:在系统用户管理界面,管理员可以区分不同级别的用户,包括其他管理员和普通用户,进行权限分配和账号管理。
科室名称管理:管理员可以在此模块添加新的科室名称,删除不再存在的科室,以及查询和查看科室的详细信息,保证病历信息的科室分类准确无误。
病历信息管理:管理员可以添加新的病历信息,删除过时或错误的记录,查询特定病历,并查看病历的详细内容。此外,还可以将病历信息导出为电子文档,便于数据备份或传输。
3.2.2非功能性分析
患者病历信息管理软件设计的非功能性需求比如患者病历信息管理软件设计的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等,具体可以表示在如下3-1表格中:
表3-1患者病历信息管理软件设计非功能需求表
|
安全性 |
主要指患者病历信息管理软件设计数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
|
可靠性 |
可靠性是指患者病历信息管理软件设计能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
|
性能 |
性能是影响患者病历信息管理软件设计占据市场的必要条件,所以性能最好要佳才好。 |
|
可扩展性 |
比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
|
易用性 |
用户只要跟着患者病历信息管理软件设计的页面展示内容进行操作,就可以了。 |
|
可维护性 |
患者病历信息管理软件设计开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
3.3系统用例分析
患者病历信息管理软件设计的完整UML用例图分别是图3-1、3-2。
普通用户角色用例如下图所示。

图3-1患者病历信息管理软件设计普通用户角色用例图
管理员角色用例如下图所示。

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

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

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

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

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

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

图3-8删除信息流程图
第四章 总体设计
本章主要讨论的内容包括患者病历信息管理软件设计的功能模块设计、数据库系统设计。
4.1系统架构设计
在系统架构设计中,我将确定系统的整体结构和组件之间的关系。这包括选择适当的架构风格,划分系统的层次结构,并定义各个模块的职责和交互方式。架构图如下图所示。

图4-1系统架构设计图
表示层(PresentationLayer):负责与用户进行交互,将系统的功能和数据以易于理解和操作的方式展示给用户。通常包括用户界面、页面设计和用户输入验证等。
业务逻辑层(BusinessLogicLayer):处理系统的核心业务逻辑,包括对用户请求的处理、业务规则的执行以及数据的处理和转换。它独立于表现层和数据层,实现了业务逻辑的封装和复用。
数据层(DataLayer):负责数据的存储、访问和管理,包括数据库和持久化机制。数据层提供了对数据的增删改查操作,并与业务逻辑层进行交互,使系统能够有效地存储和检索数据。
这三个层次相互独立,通过明确的接口和协议进行通信,实现了系统的模块化和可扩展性。表现层负责将用户的请求传递给业务逻辑层,业务逻辑层处理请求并返回结果,最后数据层负责与数据库交互并提供数据支持。这种分层架构有助于实现系统的可维护性、灵活性和可测试性。
4.2系统模块设计
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本患者病历信息管理软件设计中的用例。那么接下来就要开始对本患者病历信息管理软件设计的架构、主要功能和数据库开始进行设计。患者病历信息管理软件设计根据前面章节的需求分析得出,患者病历信息管理软件设计的功能模块图如下图所示。

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

图4-3普通用户E-R关系图

图4-4病历信息E-R关系图

图4-5科室名称E-R关系图

图4-6文件上传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-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-3-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-4-department_name(科室名称)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
department_name_id |
int |
是 |
是 |
科室名称ID |
|
|
2 |
department_name |
varchar |
64 |
否 |
否 |
科室名称 |
|
3 |
create_time |
datetime |
是 |
否 |
创建时间 |
|
|
4 |
update_time |
timestamp |
是 |
否 |
更新时间 |
表 4-5-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-6-medical_record_information(病历信息)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
medical_record_information_id |
int |
是 |
是 |
病历信息ID |
|
|
2 |
user_account |
int |
否 |
否 |
用户账号 |
|
|
3 |
user_name |
varchar |
64 |
否 |
否 |
用户姓名 |
|
4 |
user_gender |
varchar |
64 |
否 |
否 |
用户性别 |
|
5 |
user_age |
varchar |
64 |
否 |
否 |
用户年龄 |
|
6 |
user_phone |
varchar |
64 |
否 |
否 |
用户电话 |
|
7 |
id_number |
varchar |
64 |
否 |
否 |
身份证号 |
|
8 |
date_of_birth |
varchar |
64 |
否 |
否 |
出生日期 |
|
9 |
department_name |
varchar |
64 |
否 |
否 |
科室名称 |
|
10 |
visit_time |
datetime |
否 |
否 |
就诊时间 |
|
|
11 |
medical_record_details |
text |
65535 |
否 |
否 |
病历详情 |
|
12 |
create_time |
datetime |
是 |
否 |
创建时间 |
|
|
13 |
update_time |
timestamp |
是 |
否 |
更新时间 |
表 4-7-ordinary_user(普通用户)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
ordinary_user_id |
int |
是 |
是 |
普通用户ID |
|
|
2 |
user_name |
varchar |
64 |
否 |
否 |
用户姓名 |
|
3 |
user_gender |
varchar |
64 |
否 |
否 |
用户性别 |
|
4 |
user_age |
double |
否 |
否 |
用户年龄 |
|
|
5 |
user_phone |
varchar |
16 |
否 |
否 |
用户电话 |
|
6 |
id_number |
varchar |
255 |
否 |
否 |
身份证号 |
|
7 |
date_of_birth |
varchar |
64 |
否 |
否 |
出生日期 |
|
8 |
examine_state |
varchar |
16 |
是 |
否 |
审核状态 |
|
9 |
user_id |
int |
是 |
否 |
用户ID |
|
|
10 |
create_time |
datetime |
是 |
否 |
创建时间 |
|
|
11 |
update_time |
timestamp |
是 |
否 |
更新时间 |
表 4-8-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-9-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-10-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-11-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注册模块图
注册代码如下:
public object Register(JObject obj)
{
var username = obj["username"].ToString();
if (DapHelper.Exists(TableName, "and username=@username", new Dictionary<string, object>
{
{ "username" , username}
}, DBName.Db))
{
return ReturnData.Error("该账号已存在");
}
var pwd = obj["password"];
var password = EncryptHelper.MD5(obj["password"].ToString());
Dictionary<string, object> dics = GetDics();
dics["password"] = password;
dics["user_group"] = obj["user_group"].ToString();
DapHelper.Add(TableName, dics, DBName.Db);
return ReturnData.Success();
}
5.3登录模块
患者病历信息管理软件设计注册后的用户是可以通过自己的用户名+密码进行登录的,当用户输入完整的自己的用户名+密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的用户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到患者病历信息管理软件设计的首页中,否则将会提示相应错误信息,登录模块如下图所示。

图5-3登录模块图
登录代码如下:
public class ValidateAuthorizeAttribute : ValidateAuthorityBase
{
protected override ReturnData ValidateTicket(string encryptTicket, System.Web.Http.Controllers.HttpActionContext actionContext)
{
ReturnData returnData = LoginHelper.Decrypt(encryptTicket);
if (returnData.code != 200)
{
return returnData;
}
UserLoginInfo userInfo = returnData.result as UserLoginInfo;
#region 验证登录状态
bool loginStatus = false;
if (CommonHelper.IsLoged())
{
UserLoginInfo userInfoFromSession = CommonHelper.GetUserLoginInfoFromSession();
if (userInfo.user_id == userInfoFromSession.user_id)
{
loginStatus = true;
}
}
else
{
loginStatus = LoginHelper.ValidateUserInfo(userInfo.user_id,
userInfo.username, userInfo.password);
if (loginStatus)
{
CommonHelper.SetUserSession(userInfo);
}
}
if (loginStatus == false)
{
return ReturnData.Error(30000, "登录失效,请重新登录!");
}
#endregion
return ReturnData.Success();
}
}
5.4普通用户功能模块
5.4.1病历信息管理模块
在病历信息管理模块中,用户可以查询自己的病历记录。用户可以按照就诊时间进行筛选,查看不同时间点的病历详情。用户可以详细查看这些信息,以便更好地了解自己的健康状况和治疗进展。模块如下图所示。

图5-4病历信息管理详情模块图

图5-5病历信息管理模块图
5.5管理员功能模块
5.5.1科室名称管理模块
管理员可以在此模块添加新的科室名称,删除不再存在的科室,以及查询和查看科室的详细信息,保证病历信息的科室分类准确无误。模块如下图所示。

图5-6科室名称管理模块图
科室名称管理查询代码如下:
[HttpGet]
[HttpPost]
public object get_obj()
{
return baseService.GetObj();
}
[HttpGet]
[HttpPost]
[AllowAnonymous]
public virtual object get_list()
{
return baseService.GetList();
}
5.5.2系统用户模块
管理员可以查看和管理系统中的所有用户,包括普通用户和其他管理员。管理员可以对用户进行增、删、改、查等操作,并可以根据需要查询用户的详细信息,确保平台的用户管理井井有条。流程图如下所示。

图5-7系统用户模块图
系统用户模块如下图所示。

系统用户删除代码如下:
[HttpGet]
[HttpPost]
public object del()
{
return baseService.DeleteData();
}
图5-8系统用户模块图
5.5.3病历信息管理模块
管理员可以添加新的病历信息,删除过时或错误的记录,查询特定病历,并查看病历的详细内容。此外,还可以将病历信息导出为电子文档,便于数据备份或传输。模块如下图所示。

图5-9病历信息管理添加模块图
病历信息管理添加代码如下:
[HttpGet]
[HttpPost]
public virtual ReturnData add()
{
return baseService.Add();
}

图5-10病历信息管理模块图
第六章 系统测试
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测试结果
在本次测试的过程主要针对所有功能下的添加操作,修改操作和删除操作,并以真实数据一一进行相关功能项目的输入,最终能够保证每个项目涉及的功能都能够正常运行,因此能够保证本次设计的,已实现的功能能够正常运行并且相关数据库的信息也同样保证正确。
结 论
本论文通过采用C#语言,结合ASP.NET技术,实现了患者病历信息管理软件的设计与开发。使用Visual编译器进行编写,并利用SQL Server关系型数据库作为数据存储媒介。
软件实现了用户管理和模块管理两大核心功能模块。系统通过浏览器与服务器进行通信,实现了数据的交互与变更,从而极大地提高了工作效率,并减少了数据存储上的错误和遗漏。
在设计过程中,收获了丰富的实践经验。对C#语言和ASP.NET技术有了更深入的理解和应用。掌握了SQL Server数据库的操作和管理,学会了如何高效地存储和检索数据。通过软件的设计和实现,对软件开发流程有了更清晰的认识,包括需求分析、系统设计、代码实现、测试等环节。
对未来而言,患者病历信息管理软件仍有巨大的发展空间。随着医疗信息化进程的加速,软件需要不断更新和完善,以适应医疗机构对病历信息管理的更高要求。可以进一步优化软件界面和操作流程,提升用户体验。还可以加强软件的安全性和稳定性,保护患者隐私和数据安全。
参考文献
- 辅助医疗系统中的知识库构建及应用研究[D]. 郑鑫.东南大学,2017
- 基于云计算的移动医疗系统的设计和实现[D]. 陈敬志.中国矿业大学,2016
- 基于远程医疗系统的ZigBee和GPRS网络设计[D]. 张胜.北京邮电大学,2015
- 基于云计算的区域医疗信息系统的构建研究[D]. 王惠品.合肥工业大学,2014
- 基于Android平台的移动医疗系统的研究与设计[D]. 黎阳子.武汉科技大学,2014
- 基于移动互联的远程医疗监护系统关键技术研究[D]. 罗治伟.华南理工大学,2013
- 基于无线局域网技术的移动医疗系统设计与实现[D]. 冉润浓.厦门大学,2013
- 基于智能终端的远程数字医疗系统的研发[D]. 刘耀东.北京交通大学,2012
- 个人诊所管理系统[D]. 刘钰鑫.山东大学,2010
- 西门子医疗系统集团CT产品战略研究[D]. 赵红波.首都经济贸易大学,2009
- Lohman C M ,Scott V ,Verma M , et al. Distribution and correlates of long-acting injectable antipsychotic use among community mental health center patients [J]. Psychiatry Research, 2025, 345 116378-116378.
- Ren H ,Liang W ,Wang A , et al. Low Molecular Weight Heparin-Induced Thrombocytopenia: A Case Series Study of Newly Admitted Hemodialysis Patients. [J]. Hemodialysis international. International Symposium on Home Hemodialysis, 2025,
- Wei J ,PengYing W ,Qi Z , et al. Tri©DB: an integrated platform of knowledgebase and reporting system for cancer precision medicine. [J]. Journal of translational medicine, 2023, 21 (1): 885-885.
- Data Encryption; New Data Encryption Study Findings Reported from T. Bouabana-Tebibel and Co-Authors (Parallel search over encrypted data under attribute based encryption on the Cloud Computing) [J]. Information Technology Newsweekly, 2016,
- DataEncryption;NewDataEncryption Study Findings Reported from T. Bouabana-Tebibel and Co-Authors (Parallel search over encrypted data under attribute based encryption on the Cloud Computing) [J]. Information Technology Newsweekly, 2016,
- 王强.计算机C语言编译系统前后端的设计与实现[J].科学技术创新,2024,(24):128-131.
- 屈晓,周挺,郑艳松.一种实现C语言程序的在线编译系统设计[J].电脑知识与技术,2024,20(25):51-54.
- 王娟,李敏.高职C语言程序设计混合式教学研究与实践[J].现代商贸工业,2024,45(08):267-268.
- 李晓峰,郭伊,闫衍.基于C/S架构的SQL数据库技术研究[J].网络安全和信息化,2024,(02):83-85.
- 马艳艳,吴晓光.计算机软件与数据库的设计策略分析[J].电子技术,2024,53(05):104-105.
致 谢
患者病历信息管理软件设计设计与实现工作已结束,虽然过程中充满挑战,但内心充满自豪和满足。感谢大学四年间教导我的所有老师,他们的专业知识与人生智慧让我成长为能独立完成系统的学生。特别感谢指导老师,他耐心解答疑惑,引导我解决问题,提升自主解决能力。室友和同学们的宝贵建议和支持也让我取得长足进步。未来,我将继续努力追求卓越,不辜负所学所悟和老师期望。坚信坚定信念和不懈努力,未来定能取得更辉煌成就。期待更美好未来!
此外,患者病历信息管理软件设计设计与实现不仅是技术挑战,挫折和困难是成长的垫脚石,让我更深入理解问题,精确找到解决方案。每次解决问题,都感到满足和自豪。
对于未来,我充满期待和信心。无论道路多崎岖,只要保持坚定信念,持续努力,定能取得更大成就。期待将知识和技能运用到实际中,为社会做出更大贡献。
最后,感谢所有帮助和支持我的人。你们的教诲、鼓励和支持让我有今天的成就。我会继续努力,不辜负期望,为实现更美好的未来而奋斗。
整理归纳不易,点击「分享」和「在看」让更多有需要的人看到,谢谢!
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢
更多推荐
所有评论(0)