目 录
1 绪论
1.1 选题背景和意义
1.2国内外研究现状
1.3论文结构与章节安排
2 安卓医药个体诊疗平台系统分析
2.1 可行性分析
2.1.1技术可行性分析
2.1.2 操作可行性分析
2.1.3 法律可行性分析
2.2 系统功能分析
2.2.1 功能性分析
2.2.2 非功能性分析
2.3 系统用例分析
2.4 系统流程分析
2.4.1 数据流程
2.4.2 业务流程
2.5本章小结
3 安卓医药个体诊疗平台总体设计
3.1 系统架构设计
3.2 系统功能模块设计
3.3 数据库设计
3.3.1 数据库概念结构设计
3.3.2 数据库逻辑结构设计
3.4本章小结
4 安卓医药个体诊疗平台关键模块详细设计与实现
4.1普通用户功能模块
4.1.1 前台首页界面
4.1.2用户注册界面
4.1.3 用户登录界面
4.1.4我的账户界面
4.1.5挂号信息界面
4.2管理员功能模块
4.2.1系统用户界面
4.2.2科室分类管理管理界面
4.2.3公告信息管理界面
4.2.4药品信息管理界面
4.3医生用户功能模块
4.3.1问诊信息详情界面
4.3.2挂号信息详情界面
5系统测试
5.1 系统测试用例
5.2 系统测试结果
结论
参考文献
致 谢
随着移动互联网和信息技术的快速发展,人们对医疗健康的需求和期望日益增长。然而,传统的医疗系统和服务模式存在诸多问题,如预约挂号不便、医患沟通不畅、药品信息不透明等,导致用户体验不佳。因此,基于安卓平台的医药个体诊疗平台的设计与实现具有重要的现实意义。
本研究基于SpringBoot框架,结合安卓移动应用开发技术,旨在设计并实现一款医药个体诊疗平台。通过整合SpringBoot的后端开发和安卓平台的移动应用开发,实现了医疗服务的信息化和便捷化。同时,采用MySQL数据库进行数据存储,保证了数据的安全性和稳定性。平台功能涵盖了在线挂号、健康药品信息、药品信息、用户个人中心等模块,旨在提升用户的医疗服务体验和便利度。
关键词:SpringBoot, 安卓医药个体诊疗平台, MySQL
Abstract
With the rapid development of mobile Internet and information technology, people's demands and expectations for medical health are growing. However, traditional medical systems and service models have many problems, such as inconvenient appointment registration, poor communication between doctors and patients, and opaque drug information, leading to poor user experience. Therefore, the design and implementation of a medical individual diagnosis and treatment platform based on the Android platform have important practical significance.
This study is based on the SpringBoot framework and combines Android mobile application development technology to design and implement a medical individual diagnosis and treatment platform. By integrating the backend development of SpringBoot and the mobile application development of the Android platform, the informatization and convenience of medical services have been achieved. Meanwhile, using MySQL database for data storage ensures the security and stability of the data. The platform features modules such as online registration, health information, medication information, and user personal center, aiming to enhance the user's medical service experience and convenience.
Keywords: SpringBoot, Android Medical Individual Diagnosis and Treatment Platform, MySQL
1 绪论
随着移动互联网和信息技术的快速发展,人们对医疗健康的需求和期望日益增长。然而,传统的医疗系统和服务模式存在诸多问题,如预约挂号不便、医患沟通不畅、药品信息不透明等,导致用户体验不佳。因此,基于安卓平台的医药个体诊疗平台的设计与实现具有重要的现实意义。
研究意义:
通过平台实现在线挂号、预约就诊、医患交流等功能,提高医疗服务的便捷性和高效性,减少患者排队等待时间,提升就诊效率。构建医生与患者之间的便捷沟通渠道,提供在线问诊、健康药品信息等功能,增进医患沟通,改善患者的就医体验。通过平台推动医院科室分类管理、资源信息共享,优化医疗资源配置,提高医疗资源利用效率,实现资源共享和优化。平台提供药品信息管理和药品查询功能,使患者能够了解药品信息,方便患者做出更加明智的用药选择。通过对医患交流数据、就诊信息、药品信息等数据的分析,为医院管理和医疗决策提供数据支持,促进医疗服务的不断优化和提升。
综上所述,基于安卓的医药个体诊疗平台的设计与实现对于提升医疗服务效率、改善医患互动体验、促进医疗资源共享以及提高药品信息透明度等方面都具有重要的现实意义和社会价值
移动医疗应用发展:国内移动医疗应用市场蓬勃发展,各大医疗机构和第三方医疗平台推出了一系列医疗健康应用,涵盖了预约挂号、在线问诊、健康药品信息等功能,提高了患者的医疗服务体验。国内一些医疗机构和互联网企业致力于研究医患互动平台的设计与实现,借助移动应用提供医生和患者之间的在线交流渠道,为患者提供更便捷的就医途径。国内一些第三方医疗平台关注药品信息的透明度,提供了药品查询功能和药品说明书,使患者能够更全面地了解药品信息,促进用药安全。
国外研究现状:
移动医疗应用创新:在国外,一些发达国家的医疗机构和科研机构致力于开发医疗健康领域的移动应用,涵盖了预约挂号、在线问诊、患者健康管理等功能,为患者提供了更加便捷的医疗服务和信息获取渠道。一些创新性的医疗科技公司在医疗平台的设计和实现上进行了大量的探索和创新,推动了医疗健康领域的信息化和智能化发展。国外的一些研究机构和医疗科技公司致力于医患互动技术的研究和应用,通过在线医疗咨询、远程诊断等方式,提高了医患之间的沟通效率。
综合国内外的研究现状可以发现,移动医疗应用和医疗平台的研究和应用正在迅速发展,为医疗服务的信息化和便捷化提供了丰富的经验和技术支持。这些研究成果为基于安卓的医药个体诊疗平台的设计与实现提供了宝贵的参考和借鉴,为医疗健康领域的信息化和智能化发展提供了重要的理论和实践支持。
本文共分为六章,章节内容安排如下:
第一章为引言,此章节对所设计和实现的系统的背景和状况以及意义进行详细的论述以及说明,同时进行了论文整体框架的结构的简要介绍。
第二章为系统需求分析,章节所做的主要的工作是对系统进行了技术、经济和操作方面可行性的分析;对系统实行了总体功能的需求、用例分析。
第三章为系统的设计,主要是对系统的功能结构进行设计,并对系统数据库的概念结构以及物理结构的设计进行了分析。
第四章就是对系统的实现,根据系统功能的划分,分别的对系统所需要实现的前台客户功能和后台管理员功能进行了分析和说明。
第五章:系统测试。主要对系统的部分界面进行测试并对主要功能进行测试
2 安卓医药个体诊疗平台系统分析
系统可行行分析是对系统对系统可行性进行一个探讨。在探讨系统的可行性上我们主要从技术上的可行性和经济上的可行性以及法律层面的可行性上进行分析,如果三个层面度通过,我们则认为系统是比较可行的。
springboot是一种基于Java的成熟框架,广泛应用于电子商务领域。采用SpringBoot框架开发有助于提高系统的可拓展性和可维护性,MySQL数据库具有强大的数据处理能力,能够有效的存储和管理系统中的各项数据,因此从技术上来说是可行的。
此次项目设计参考了几个该模式下网站的开发案例,对他们的操作界面分析,将众多案例结合在一起,突出以人为本简化操作,所以具有基本计算机知识的人都会操作本项目。
安卓医药个体诊疗平台主要划分为了普通系统用户模块、医生系统用户模块和管理员管理模块这三大部分,具体功能描述如下:
基于安卓医药个体诊疗平台的设计与实现,包括以下功能:
(一)管理员功能:
后台首页:展示系统概况、数据统计、最新动态等信息,方便管理员监控系统运行情况。
登录:管理员通过用户名和密码登录系统,进入管理后台。
我的账户:包括普通用户、医生用户、在线挂号、科室分类、挂号信息、问诊信息、药品信息、健康咨询等管理。
普通系统用户: 管理普通用户的注册信息、权限和基本资料。
医生系统用户: 管理医生用户的注册信息、认证、资质等。
在线挂号: 管理医生的排班信息和用户的挂号预约,确保医疗资源合理分配。
科室分类: 对医生和科室信息进行分类管理,方便用户查找和选择。
挂号信息: 管理挂号信息,包括医生排班、挂号量等。
问诊信息: 管理用户和医生之间的问诊记录,确保信息的安全和隐私。
药品信息: 管理药品的信息,包括药品库存、价格、说明书等。
健康咨询: 提供健康咨询服务的管理,包括发布、审核和下架健康咨询内容。
系统系统用户:管理员对系统用户进行管理,包括添加、编辑、删除用户等操作。
在线挂号管理:管理用户的在线挂号信息,包括挂号记录、号源管理等操作。
科室分类管理:管理医院科室的分类信息,便于用户挂号时进行科室选择和预约。
挂号信息管理:管理用户的挂号记录,包括挂号审核、排班安排等操作。
问诊信息管理:管理用户的问诊记录,包括问诊审核、医生安排等操作。
药品信息管理:管理药品信息,包括药品目录、库存管理、上下架等操作。
系统管理:包括轮播图管理、公告信息管理、点击“轮播图”可以查看到系统中的轮播图信息,如果想要添加新的轮播图,点击“添加”按钮,根据提示输入上轮播图信息,点击“提交”按钮,信息没有错误的话,添加就完成了,如果轮播图信息有误,可以对轮播图更新维护,也可以直接删除某一轮播图。健康药品信息管理等系统设置,保障系统运行的稳定和用户体验。
(二)普通用户功能:
首页:显示系统推荐的健康药品信息、热门药品等内容,提供用户快速导航和信息浏览。
注册登录:用户点击“注册”按钮,输入用户名,密码和邮箱等信息进行注册。用户使用该系统注册完成后,用户对登录密码有修改需求时,系统也可以提供用户修改密码权限。系统中所有的操作者能够变更自己的密码信息,执行该功能首先必须要登入系统,然后选择密码变更选项以后在给定的文本框中填写初始密码和新密码来完成修改密码的操作。在填写的时候,假如两次密码填写存在差异,那么此次密码变更操作失败。
在线挂号:用户可以在线预约挂号,选择医生和科室进行挂号预约。
药品信息:用户可以查看药品信息,包括药品说明、价格、库存等内容。
健康药品信息:提供最新的健康药品信息内容,让用户了解医疗健康信息和疾病知识。
我的账户:在前台点击“我的”下面的“我的账户”可以对个人资料+密码修改+自己收藏的信息进行管控。
个人中心:提供个人信息查看和修改、收藏、挂号记录、问诊记录等个性化功能。
基本信息: 用户个人基本信息管理,包括个人资料、健康档案等。
收藏: 可以收藏感兴趣的医生、药品或健康咨询信息,方便后续查看。显示自己收藏的各种信息,支持对收藏信息的搜索查询,如果你想不再收藏某一信息,点击删除就可以了。
挂号信息: 提供医生排班信息和挂号功能,方便用户进行线上预约挂号。
问诊信息: 用户可以向医生进行图文或语音咨询,获取个性化的健康咨询和建议。
(三)医生用户功能:
后台首页:展示系统概况、数据统计、最新动态等信息,方便医生用户监控系统运行情况。
登录:医生用户通过用户名和密码登录系统,进入管理后台。
挂号信息管理:医生用户可以管理自己的挂号信息,包括接诊、诊断、开药等操作。
问诊信息管理:医生用户可以管理自己的问诊信息,包括问诊记录、诊断报告等操作。
以上功能将构建一个完整的医药个体诊疗平台,为用户提供便捷的医疗健康服务。
安卓医药个体诊疗平台的非功能性需求比如安卓医药个体诊疗平台的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下2-1表格中:
表2-1安卓医药个体诊疗平台非功能需求表
安全性 | 主要指安卓医药个体诊疗平台数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指安卓医药个体诊疗平台能够按照用户提交的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响安卓医药个体诊疗平台占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着安卓医药个体诊疗平台的页面展示内容进行操作,就可以了。 |
可维护性 | 安卓医药个体诊疗平台开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
安卓医药个体诊疗平台的完整UML用例图分别如下图所示。
普通用户角色用例图如下图所示。
图2-2 普通用户角色用例图
管理员角色用例图如下图所示。
图2-3 管理员角色用例图
医生用户角色用例图如下图所示。
图2-4医生用户角色用例图
开发安卓医药个体诊疗平台最主要的一个目的就是实现挂号问诊,系统的数据流图如下所示。
图2-4挂号问诊流程展开图
分析完安卓医药个体诊疗平台的数据流,那么接下来我们来看系统的业务流程,系统业务流程图如下:
本章主要通过对安卓医药个体诊疗平台的可行性分析、功能需求分析、系统用例分析、系统流程分析,确定整个安卓医药个体诊疗平台要实现的功能。同时也为安卓医药个体诊疗平台的代码实现和测试提供了标准。
本章主要讨论的内容包括安卓医药个体诊疗平台的系统架构设计、功能模块设计和数据库系统设计。
本安卓医药个体诊疗平台从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。
图3-1安卓医药个体诊疗平台系统架构设计图
表现层(UI):又称UI层,主要完成本安卓医药个体诊疗平台的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本安卓医药个体诊疗平台时的舒适度。UI的界面设计也要适应不同版本的安卓医药个体诊疗平台以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。
业务逻辑层(BLL):主要完成本安卓医药个体诊疗平台的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。
数据层(DL):由于本安卓医药个体诊疗平台的数据是放在服务端的mysql数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本安卓医药个体诊疗平台的数据存储和管理功能。
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本安卓医药个体诊疗平台中的用例。那么接下来就要开始对本安卓医药个体诊疗平台的架构、主要功能开始进行设计。安卓医药个体诊疗平台根据前面章节的需求分析得出,其总体设计模块图如下图所示。
图3-2 安卓医药个体诊疗平台功能模块图
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
下面是整个安卓医药个体诊疗平台中主要的数据库表总E-R实体关系图。
图3-7 安卓医药个体诊疗平台总E-R关系图
通过上一小节中安卓医药个体诊疗平台中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
表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 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表consultation_information (问诊信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | consultation_information_id | int | 10 | 0 | N | Y | 问诊信息ID | |
2 | outpatient_name | varchar | 64 | 0 | Y | N | 门诊名称 | |
3 | doctor_users | int | 10 | 0 | Y | N | 0 | 医生用户 |
4 | doctors_name | varchar | 64 | 0 | Y | N | 医生姓名 | |
5 | department_type | varchar | 64 | 0 | Y | N | 科室类型 | |
6 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
7 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
8 | disease_details | text | 65535 | 0 | Y | N | 病症详情 | |
9 | consultation_results | text | 65535 | 0 | Y | N | 问诊结果 | |
10 | prescription_dispensing | text | 65535 | 0 | Y | N | 处方配药 | |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表department_classification (科室分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | department_classification_id | int | 10 | 0 | N | Y | 科室分类ID | |
2 | department_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 | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | doctor_users_id | int | 10 | 0 | N | Y | 医生用户ID | |
2 | doctors_name | varchar | 64 | 0 | Y | N | 医生姓名 | |
3 | doctors_gender | varchar | 64 | 0 | Y | N | 医生性别 | |
4 | doctors_medical_experience | varchar | 64 | 0 | Y | N | 医生医龄 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | drug_information_id | int | 10 | 0 | N | Y | 药品信息ID | |
2 | drug_name | varchar | 64 | 0 | Y | N | 药品名称 | |
3 | drug_type | varchar | 64 | 0 | Y | N | 药品类型 | |
4 | cover_photo | varchar | 255 | 0 | Y | N | 封面图片 | |
5 | drug_efficacy | varchar | 64 | 0 | Y | N | 药品功效 | |
6 | drug_specifications | varchar | 64 | 0 | Y | N | 药品规格 | |
7 | drug_prices | int | 10 | 0 | Y | N | 0 | 药品价格 |
8 | instructions_for_use | text | 65535 | 0 | Y | N | 使用说明 | |
9 | drug_introduction | text | 65535 | 0 | Y | N | 药品简介 | |
10 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
11 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | online_registration_id | int | 10 | 0 | N | Y | 在线挂号ID | |
2 | outpatient_name | varchar | 64 | 0 | Y | N | 门诊名称 | |
3 | doctor_users | int | 10 | 0 | Y | N | 0 | 医生用户 |
4 | doctors_name | varchar | 64 | 0 | Y | N | 医生姓名 | |
5 | doctors_gender | varchar | 64 | 0 | Y | N | 医生性别 | |
6 | doctors_medical_experience | varchar | 64 | 0 | Y | N | 医生医龄 | |
7 | cover_photo | varchar | 255 | 0 | Y | N | 封面图片 | |
8 | working_hours | varchar | 64 | 0 | Y | N | 上班时间 | |
9 | department_type | varchar | 64 | 0 | Y | N | 科室类型 | |
10 | registration_fees | int | 10 | 0 | Y | N | 0 | 挂号费用 |
11 | doctor_introduction | text | 65535 | 0 | Y | N | 医生简介 | |
12 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
13 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
表registration_information (挂号信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | registration_information_id | int | 10 | 0 | N | Y | 挂号信息ID | |
2 | outpatient_name | varchar | 64 | 0 | Y | N | 门诊名称 | |
3 | doctor_users | int | 10 | 0 | Y | N | 0 | 医生用户 |
4 | doctors_name | varchar | 64 | 0 | Y | N | 医生姓名 | |
5 | department_type | varchar | 64 | 0 | Y | N | 科室类型 | |
6 | registration_fees | varchar | 64 | 0 | Y | N | 挂号费用 | |
7 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
8 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
9 | registration_time | datetime | 19 | 0 | Y | N | 挂号时间 | |
10 | registration_remarks | text | 65535 | 0 | Y | N | 挂号备注 | |
11 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
12 | pay_state | varchar | 16 | 0 | N | N | 未支付 | 支付状态 |
13 | pay_type | 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 | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_age | varchar | 64 | 0 | Y | N | 用户年龄 | |
4 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表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 | 更新时间: |
表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 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
表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 | 更新时间: |
整个安卓医药个体诊疗平台的需求分析主要对系统总体架构以及功能模块的设计,通过建立E-R模型和数据库逻辑系统设计完成了数据库系统设计。
4 安卓医药个体诊疗平台关键模块详细设计与实现
安卓医药个体诊疗平台的详细设计与实现主要是根据前面的安卓医药个体诊疗平台的需求分析和安卓医药个体诊疗平台的总体设计来设计页面并实现业务逻辑。主要从安卓医药个体诊疗平台界面实现、业务逻辑实现这两部分进行介绍。
当进入安卓医药个体诊疗平台的时候,首先映入眼帘的是互联网在线医疗问诊系统登录画面,其主界面展示如下图所示。
图4-1 前台首页界面图
安卓医药个体诊疗平台的用户可以进行注册登录,当用户右上角“注册”按钮的时候,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。其用户注册界面展示如下图所示。
图4-2注册界面图
安卓医药个体诊疗平台中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到安卓医药个体诊疗平台的首页中;否则将会提示相应错误信息,用户登录界面如下图所示。
图4-3用户登录界面图
在右下角前点击“我的账户”里的基本信息,对个人资料+密码修改+昵称的信息进行管控。我的账户界面如下图所示。
图4-3我的账户界面图
用户可以查看挂号信息,包括医生姓名、科室名等,通过输入关键字进行搜索查询。挂号信息界面如下图所示。
图4-5 挂号信息界面图
管理员可以对系统中所有的用户角色进行管控,包含了管理员、普通用户、医生用户这三种角色,如果需要添加新的用户,点击页面中的“添加”按钮根据提示输入上用户信息,点击“提交”以后在对应的用户界面就可以查看到了,可以点击用户后面的“修改”按钮直接修改某一用户。系统用户管理界面如下图所示。
图4-6系统用户界面图
当点击“科室分类管理”这一菜单的时候,会出现科室分类列表、科室分类添加这两个子菜单,可以对这两个模块进行增删改查操作。科室分类界面如下图所示。
图4-7科室分类界面图
管理员点击“公告信息管理”菜单可以查看到系统中的所有公告信息,对已经存在的公告,管理员可以修改,也可以添加新的公告或者删除公告。界面如下图所示。
当点击“药品信息管理”这一菜单的时候,会出现药品信息列表、药品信息分类这两个子菜单,可以对这两个模块进行增删改查操作。药品信息管理界面如下图所示。
图4-9药品信息管理界面图
医生用户可以对问诊信息详情进行上传,输入问诊结果、处方配药、等信息提交,就可以上传问诊信息详情了。问诊信息详情界面如下图所示。
图4-10问诊信息详情界面图
医生用户可以查看所有的挂号信息详情内容,包括用户姓名、科室类型、挂号费用、审核状态等内容。挂号信息详情界面如下图所示。
图4-12挂号信息详情界面图
5系统测试
系统开发到了最后一个阶段那就是系统测试,系统测试对软件的开发其实是非常有必要的。因为没什么系统一经开发出来就可能会尽善尽美,再厉害的系统开发工程师也会在系统开发的时候出现纰漏,系统测试能够较好的改正一些错误,为后期系统的维护性提供很好的支持。通过系统测试,开发人员也可以建立自己对系统的信心,为后期的系统版本的跟新提供支持。
表5-1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
公告信息管理查看功能测试:
表5-2 公告信息管理查看功能测试表
用例名称 | 公告信息管理查看 |
目的 | 测试公告信息管理查看功能 |
前提 | 用户登录 |
测试流程 | 点击公告信息管理列表 |
预期结果 | 可以查看到所有公告信息管理信息 |
实际结果 | 实际结果与预期结果一致 |
管理员添加药品信息管理界面测试:
表5-3 添加药品信息管理界面测试表
用例名称 | 添加药品信息管理测试用例 |
目的 | 测试药品信息管理添加功能 |
前提 | 管理员正常登录情况下 |
测试流程 | 1)管理员点击药品信息管理,然后点击添加后并填写信息。 2)点击进行提交。 |
预期结果 | 提交以后,页面首页会显示新的药品信息管理 |
实际结果 | 实际结果与预期结果一致 |
问诊信息详情搜索功能测试:
表5-4问诊信息详情搜索功能测试表
用例名称 | 问诊信息详情搜索测试 |
目的 | 测试问诊信息详情搜索功能 |
前提 | 无 |
测试流程 | 1)在搜索框填入搜索关键字。 2)点击搜索按钮。 |
预期结果 | 页面显示包含有搜索关键字的问诊信息详情 |
实际结果 | 实际结果与预期结果一致 |
密码修改搜索功能测试:
表5-5 密码修改功能测试表
用例名称 | 密码修改测试用例 |
目的 | 测试管理员密码修改功能 |
前提 | 管理员用户正常登录情况下 |
测试流程 | 1)管理员密码修改并完成填写。 2)点击进行提交。 |
预期结果 | 使用新的密码可以登录 |
实际结果 | 实际结果与预期结果一致 |
挂号信息详情功能测试:
表5-6挂号信息详情功能测试表
用例名称 | 挂号信息详情测试用例 |
目的 | 测试用户挂号信息详情功能 |
前提 | 用户正常登录情况下 |
测试流程 | 1)搜索查看挂号信息详情,点击挂号信息详情。 2)填写挂号信息详情信息,点击进行提交。 |
预期结果 | 咨询成功 |
实际结果 | 实际结果与预期结果一致 |
通过编写安卓医药个体诊疗平台的测试用例,已经检测完毕用户登录模块、公告信息管理查看模块、添加药品信息管理界面模块、问诊信息详情搜索功能模块、密码修改模块、挂号信息详情模块功能测试,通过这6大模块为安卓医药个体诊疗平台的后期推广运营提供了强力的技术支撑。
至此,安卓医药个体诊疗平台已经结束,在开发前做了许多的准备,在本系统的设计和开发过程中阅览和学习了许多文献资料,从中我也收获了很多宝贵的方法和设计思路,对系统的开发也起到了很重要的作用,系统的开发技术选用的都是自己比较熟悉的,比如Web、Java技术、MYSQL,这些技术都是在以前的学习中学到了,其中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,其实对于我们来说工作量还是比较大的,但是正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。
当然在该系统的设计与实现的过程中也离不开老师以及同学们的帮助,正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时在这个过程当中我也收获了很多东西,此系统也有需要改进的地方,但是由于专业知识的浅薄,并不能做到十分完美,希望以后有机会可以让其真正的投入到使用之中。
[1]王芳.我国医药企业网络营销现状调查[J].现代商贸工业,2024,45(08):29-32.DOI:10.19311/j.cnki.1672-3198.2024.08.010.
[2]Chatterjee C ,Gupta S .Public entry and private prices: New evidence from Indian pharmaceutical markets[J].Journal of Economic Behavior and Organization,2024,219473-489.
[3]韩小龙,司珍,吕晓峰,等.基于面向对象编程的Java语言程序设计方法分析[J].集成电路应用,2024,41(01):228-229.DOI:10.19339/j.issn.1674-2583.2024.01.103.
[4]谭光兴,甘景,戚秋晨.基于Java语言的远程数据采集系统设计与实现[J].科技与创新,2024,(01):19-22.DOI:10.15913/j.cnki.kjycx.2024.01.005.
[5]赵旭东.计算机软件开发与设计中Java语言的应用研究[J].信息与电脑(理论版),2023,35(24):31-33.
[6]Ebeshi U B ,Bunu J S ,Egemba L C , et al.Evaluation of Stability and TLC Fingerprinting of the Artemether Component in Artemether-Lumefantrine Combination Suspension Formulations Available in Nigeria Pharmaceutical Market[J].Asian Journal of Research in Medical and Pharmaceutical Sciences,2023,12(4):183-190.
[7]马庆.计算机软件开发中JAVA编程语言的应用[J].山西电子技术,2023,(06):84-86+98.
[8]朱明睿.医药行业或已进入战略性底部把握结构性机会[J].财富时代,2023,(11):13-14.
[9]宋晓燕,杨芬.Java程序设计语言的分层教学实践[J].电子技术,2023,52(11):182-183.
[10]Susi G ,Théo B .In the Name of Transparency: Organizing European pharmaceutical markets through struggles over transparency devices[J].Organization Studies,2023,44(11):1751-1773.
[11]G V I ,N S Z .[The industrial landscape of Russian pharmaceutical industry in 2010-2018].[J].Problemy sotsial'noi gigieny, zdravookhraneniia i istorii meditsiny,2023,31(6):1444-1450.
[12]尹应荆.JAVA编程语言在计算机软件开发中的应用[J].石河子科技,2023,(05):45-47.
[13]S. D N ,I. R L .Structure and Analysis of the Nasal Pharmaceutical Market in Belarus[J].Recipe,2023,26(4):
[14]孙健,曹丽君.我国医药行业风险管理现状及发展趋势[J].中国新药与临床杂志,2023,42(10):655-658.DOI:10.14109/j.cnki.xyylc.2023.10.09.
[15]方中坚,王彩依,沈晨,等.近10年中国医药行业并购现状和发展态势探析[J].中国新药杂志,2023,32(15):1503-1506.
[16]邓新明,林晓真,毛凤义,等.多市场接触、技术范围与企业绩效——来自全球医药行业的实证研究[J].管理工程学报,2023,37(05):51-64.DOI:10.13587/j.cnki.jieem.2023.05.005.
[17]张小洁.创新生态演进重塑医药行业市场格局[N].经济参考报,2021-12-20(003).DOI:10.28419/n.cnki.njjck.2021.006869.
[18]宋慧欣.数字化,医药行业未来发展驱动力[J].自动化博览,2021,38(11):3.
[19]谢延庆.医药行业寻租行为的影响因素研究[D].云南财经大学,2019.DOI:10.27455/d.cnki.gycmc.2019.000012.
[20]杨心悦,李亦兵,海桑.我国医药行业可竞争性与市场效率研究——兼析带量采购对药品价格的影响分析[J].价格理论与实践,2019,(01):51-55.DOI:10.19851/j.cnki.cn11-1010/f.2019.01.013.
逝者如斯夫,不舍昼夜。转眼间,大学生活便已经接近尾声,人面对着离别与结束,总是充满着不舍与茫然,我亦如此,仍记得那年秋天,我迫不及待的提前一天到了学校,面对学校巍峨的大门,我心里充满了期待:这里,就是我新生活的起点吗?那天,阳光明媚,学校的欢迎仪式很热烈,我面对着一个个对着我微笑的同学,仿佛一缕缕阳光透过胸口照进了我心里,同时,在那天我认识可爱的室友,我们携手共同度过了这难忘的两年。如今,我望着这篇论文的致谢,不禁又要问自己:现在,我们就要说再见了吗?
感慨莫名,不知所言。遥想当初刚来学校的时候,心里总是想着工科学校会过于板正,会缺乏一些柔情,当时心里甚至有一点点排斥,但是随着我对学校的慢慢认识与了解,我才认识到了她的美丽,她的柔情,并且慢慢的喜欢上了这个校园,但是时间太快了,快到我还没有好好体会她的美丽便要离开了,但是她带给我的回忆,永远不会离开我,也许真正离开那天我的眼里会满含泪水,我不是因为难过,我只是想将她的样子映在我的泪水里,刻在我的心里。最后,感谢我的老师们,是你们教授了我们知识与做人的道理;感谢我的室友们,是你们陪伴了我如此之久;感谢每位关心与支持我的人。
少年,追风赶月莫停留,平荒尽处是春山。
点赞+收藏+关注 → 私信领取本源代码、数据库