王瑀 张琦 关雅文 孟泽昕 周鑫
引言
本论文主要描述该医考综合模拟平台的设计、开发过程,详细讲述了需求确认、架构选择、基本功能、数据存储结构设计和所使用的关键技术,对该软件程序的制作过程进行总结,客观分析了其设计的成长空间。软件主要能够实现医学生日常考试的选择题部分模拟,统计错题生成报表,乃至错题重练功能。本文亦对系统中所使用的各类技术进行了一定研究。软件使用Microsoft Visual Studio Code开源代码编辑器进行开发与编译,使用Microsoft Office Excel软件导出的*.xlsx文件进行数据保存,便于同学修改题库,Golang编程语言用于图形用户界面与后端算法的开发,软件对医学生具有一定用途。
平台概述
目标描述
以现代化、信息化的方法对医学生进行综合测试,解决易错题的收集和再次练习的难题,达到实时、动态、全面梳理已有知识的目的。为学生的进一步学习提供辅助决策支持。使学生对知识的掌握规范有序,提高了学习效率以及学习兴趣,极大地增强了学生的就业、考研竞争力。
系统的常规开发过程
常规软件的开发过程应包含开发准备、调查、系统分析、系统设计、系统维护等步骤。根据开发系统的大小、时间空间复杂度、各阶段投入、程序编写的方式方法等因素的不同,各步骤的要求和内容也不同,故需要根据实际情况另行规划。
开发准备:主要应包括有具体需求的获取、选择共同成立开发团队的人员、制作开发甘特图等工作。
调查:系统分析应建立在现行调查的基础上,即应调查学生现行的选择题练题方法。
(1)系统分析:即平台正常运行所需的逻辑设计,是软件开发与程序编写时最为重要的环节,要求在开发前调查结果的基础上,对该软件开发需要编写的功能进行细致的分析与规划,并建立一个新的软件模型。
(2)系统设计:是利用系统分析环节生成的报告,从中提取关键信息来建立逻辑模型,使用一切现有的技术成果和手段进行模型的细节设计,确定软件的实施计划。
(3)系统维护:应用软件是一个复杂的实时系统,瞬息万变的系统内部环境与外部交互从始至终地影响着系统的运行,这就需要设计者对该系统的不断完善以提高运行效率与服务水平,从始至终地进行系统的维护开发工作。
开发技术与平台介绍
开发技术
1.Go编程语言
Go 是一种开源编程语言,它具有表现力、简洁、干净和高效。 它的并发机制可以轻松编写程序,充分利用多核和联网主机,而其新颖的类型系统可以实现灵活和模块化的程序构建。 Go 可以快速编译为机器代码,但具有垃圾收集的便利性和运行时反射的能力。 它是一种快速的、静态类型的、编译的语言,但感觉就像一种动态类型的解释型语言。
2.Fyne GUI库
Fyne 工具包是一个易于学习、免费和开源的平台,用于为桌面、移动设备及其他平台构建图形应用程序。 将 Go 编程语言的强大功能和简单性与精心制作的小部件库相结合,现在比以往任何时候都更容易构建应用程序并将其部署到所有平台和商店。
3.*.xlsx文件格式
xlsx是Microsoft Office EXCEL 2007/2010/2013/2016/2019文档的扩展名。其基于Office Open XML标准的压缩文件格式取代了其以前专有的默认文件格式。
平台介绍
1.平台外观
软件采用简洁的白底黑字、蓝色标签的配色,可读性更高的同时不失优雅的外观。
2.平台功能
作为一款选择题练习软件,基础的练习功能必不可少。软件的练习页面提供了“上一题”“下一题”与“提交”三个按钮,最大程度减少练习过程中不必要干扰的同时,也可以方便地查看已作答的题目。而第二个标签页“关于软件与说明”则提供了软件详细的使用说明与版权声明,帮助同学们高效地使用同时辨别盗版软件。该软件使用微软Excel办公软件导出的 *.docx格式的表格文件作为题库,以使毫无开发基础的同学也能方便地对题库进行增、删、改、查等操作。每一次作答完毕后,软件自动生成同为(*.docx)格式的错题本,使同学们无论是使用错题再次测试还是保存文件随时查看都只需要轻点鼠标。软件秉承“高内聚,低耦合”的设计原则,运行稳定占用内存低,保证低端设备的兼容性,并可以自動完成一切基本操作。
测试及错误处理
单元测试
在计算机编程中,单元测试(英语: Unit Testing )又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。
本项目使用Golang内置Testing功能进行单元测试的设计,以达到测试驱动开发的需求。
Golang的单元测试有以下几点规约要求:
·单元测试文件名必须以 xxx_test.go 命名;
·方法必须是 TestXxx 开头,建议风格保持一致(驼峰或者下划线);
·方法参数必须为 t *testing.T;
·测试文件和被测试文件必须在一个包中。
错误处理
错误在Golang中是一个error接口类型,如果函数包含错误,我们就可以在返回值列表的最后一个值中获取该错误信息并逐层向上传递返回,直到错误被处理。
总结
庞大的医学生基数给教育培训类应用程序带来了巨大的商机。随着时间的推移,传统教育模式不断变化的趋势愈演愈烈。而如今通过通用计算机和手机应用程序,线下培训和移动学习更加完全有机地结合了起来。
在这次开发中,本着对现代化、信息化医学教育的学习和研究,我进行了这个选题,而此次研究带来的好处也是显著的。在项目推进过程中,我对使用的框架、语言都有了更深层次的了解,同时对医学的专业课知识形成了一个整体框架,头脑中已有的概念也更加清晰。对作品的每一次改善都是学习中的收获,我也会不忘初心,继续在我热爱的方向上走下去。
参考文献:
[1]The Go Programming Language. Documentation[T/OL].https://golang.google.cn/doc/,2021-7-29.
[2]Fyne.HELPING THE WORLD BUILD BETTER SOFTWARE[T/OL].https://fyne.io/,2021-7-29.
[3]百度. xlsx_百度百科[EB/OL]. https://baike.baidu.com/item/xlsx/3044321,2021-7-29.
[4]知乎.Golang 单元测试指引[EB/OL]. https://zhuanlan.zhihu.com/p/267341653,2021-7-29.
通信作者:李璐