杜瑞庆 姚佰允 黎作鹏

摘要:当前,网络技术迅速发展,在线系统的应用逐渐普及。然而,一些高校在C语言程序设计课后练习方面仍采用传统的人工出题和批改方式,效率较低。为了提高学生的学习效率并减轻教师的批改压力,文章开发了一款基于ASP.NET的C语言练习系统。该系统运用了HTML、Ajax等技术,并采用SQL Server数据库设计了在线练习系统网站。该系统的核心功能在于教师能够通过后台管理学生信息、编辑和添加题目、查看学生成绩及题目练习情况。经过严格的测试,该系统运行稳定,能显着提高学生的学习效率,减轻教师的批改压力。

关键词:ASP.NET;C语言;在线练习系统; 系统设计;自动评分

中图分类号:TP311.1 文献标识码:A

文章编号:1009-3044(2024)10-0068-03

0 引言

提升大学生C语言的编程能力,不仅是教师关心的切实问题之一,也是学生今后学习及提升就业竞争能力的客观需求[1]。在提升学生编程能力的过程中,适量的编程题练习是不可或缺的。然而,当前该课程的常规练习仍采用传统的纸质方式,通常依赖人工命题和批改评分。在互联网技术高度发达的今天,传统的人工纸质批改方式已难以满足现代教育的需求。这种方式的劳动强度大、效率低下,且在大班教学中,由于作业数量众多,容易导致批改延误,影响学生的学习进程。在线练习系统能够有效地弥补传统学习方式的不足。教师可通过系统上传练习题,学生在有网络的情况下,可随时随地进行学习。这最大程度地利用了网络资源,减轻了老师的教学压力,提高了学生的学习效率。此外,系统能够自动对学生的源代码进行测试并给出评分,以便学生参考纠正。因此,开发一款能够高效、准确地评价C语言编程题的在线练习系统显得尤为重要。

1 关键技术简介

1.1 ASP.NET

ASP.NET 是一个以.NET Framework 为基础的Web开发平台,广泛应用于创建交互式的在线Web网站。在开发过程中,ASP.NET相较于其他语言更加简洁,且代码量相对较少。其采用事件驱动和数据绑定的方式进行开发,将程序代码与用户界面完全分离,使得结构更加清晰[2]。此外,ASP.NET在保证用户安全性、执行效率高、易于管理、适应性强的特点上表现出色,因此系统的开发主要基于ASP.NET的开发。

1.2 Javascript

JavaScript是一种解释型、可即时编译型的脚本语言,广泛应用于Web网站开发,可以使网页变得更加有趣、动态,并为用户提供更流畅美观的浏览效果。JSacvraipStc可rip以t能使够得赋整个予系网统页更交加互易行于为操,作合,理更加利友用好Ja,v同a?时有利于网页结构和行为的分离。系统中用到了.JS 文件,这些文件使得系统结构更加清晰,例如选择题中正确答案的隐藏与显示就是使用了JavaScript的异步刷新功能。

1.3 Ajax

Ajax是一种通过JavaScript和XML结合而成的异步刷新技术,它是一种新的方法,而不是一种新的语言。在不加载整个网页界面的情况下,Ajax技术只需要交换少量数据,利用浏览器内部的对象 XML? HttpRequest 来实现发送和接收HTTP请求与响应信息,从而完成对部分网页进行更新[3]。因此,学习Ajax 的基础就是了解XMLHttpRequest对象。

2 C 语言练习系统的分析与设计

2.1 C 语言练习系统业务需求的分析

根据教育部的最新通知,我国高等教育已逐步进入普及化阶段,学生数量的大幅增加使得传统的小班化教学模式面临挑战。为确保每位学生都能得到有效的辅导,减轻教师的作业批改负担,并为学生提供充足的练习机会,本文计划研发一款基于ASP.NET技术的C语言在线练习系统。此系统将为学生提供一个实时的在线练习平台,只要具备网络连接条件,学生即可随时随地进行在线练习。此外,该系统还将具备自动评分功能,能够精准评估学生的练习成果,以减轻教师的工作负担。

1) 开发目的:提升教师工作效率及学生学习效率,实现教师对学生日常练习的集中管理。

2) 应用对象:全国各高校教授及学习基础程序设计语言——C语言的师生。教师可上传习题,学生则可在线练习。

3) 主要功能:实现各班教师于后台添加C语言选择题、编程题并发布,所带学生登录系统后在线练习,提交后教师和学生均可查看学生的练习成绩。

4) 影响范围:全国各高校学习C语言的所有专业学生及授课教师。

5) 顶层数据流图。

2.2 ASP.NET 的C 练习系统功能需求分析

从功能上看,一个完整的C 语言练习系统需要完成管理员、教师和学生3个模块的功能。

首先,管理员模块是整个系统的核心。它负责系统的维护和管理,确保系统的正常运行。管理员可以创建教师、学生账户,设置学生管理权限,监控学生的学习进度等。

其次,教师模块是连接管理员和学生的桥梁。教师可以通过系统发布编程题目,查看学生的答题记录和成绩,为学生提供及时的反馈。此外,教师还需要定期更新题库,添加新的编程题目,以满足学生的学习需求。同时,教师还可以设置作业、考试等学习任务,以及对学生的表现进行评估和统计。这有助于教师全面了解学生的学习情况,为后续的教学提供参考。

最后,学生模块则是为学生提供了一个自主学习的平台。学生可以在系统中答题,查看自己的答题记录和成绩,了解自己的学习进度。此外,学生还可以通过系统进行在线学习,提高自己的编程能力。

系统的具体功能内容如图2所示。

2.3 数据库设计

根据系统的功能需求,设计出主要的 5 个数据库实体,包括:管理员、教师、学生、选择题和编程题实体,如表1所示。

系统主要包含12张表,管理员信息表、教师个人信息表、学生个人信息表、学生与教师信息表、选择题类型信息表、选择题信息表、编程题类型信息表、编程题信息表、班级信息表、学生考试选择题信息表、学生考试编程题信息表、考试成绩表。在这些表中,用户账号和密码都采用Varchar数据类型,该格式可以灵活存储数据,合理利用内存空间。每个用户都包含一个备注栏,用以标注用户的特殊信息。

2.4 系统页面描述

系统主要包含管理员、教师、学生3个模块,每个模块下又包含很多功能页面,表2介绍了各个模块中一些比较重要的网页功能。

3 C 语言练习系统详细设计

3.1 登录模块详细设计与实现

在用户登录系统的过程中,首先要进行角色选择。可供选择的角色包括学生、教师及管理员。一旦用户完成了角色选择,系统将引导他们进入各自相应的登录界面。在登录界面上,用户需要输入自己的用户名、密码以及用户类型等信息。只有当所有这些信息都准确无误时,用户才能成功登录并进入下一个界面。

3.2 管理员模块的详细设计要求与实现

管理员在进入练习系统后,可以执行学生和教师信息的增、删、改、查等维护操作。

学生信息和教师信息的添加。添加成员信息可采用单独插入或批量导入方式。在单独插入时,管理员只需填写教师或学生的个人信息,系统会接收到页面填写的这些信息,并调用SQL语句将信息插入对应的教师表或学生表中。如果批量导入,则须将所有学生或教师的信息存入Excel表中,上传至临时文件夹,再传到服务器上。随后,管理员使用for循环读取表格中每个单元格的信息,确保每条信息都已读取。最后,使用SQL语句将信息插入对应的教师个人信心表或学生个人信息表中。

建立班级与教师的绑定关系。在课程开始之前,管理员需要为每个班级指派特定的教师,并授予他们权限来添加和发布编程题以及查看本班学生的成绩。为了方便操作,管理员可以在添加教师和班级关系时使用下拉菜单来展示和选择教师和班级信息。管理员只需要在下拉菜单中找到相应的教师和班级,点击添加,即可将该教师与所选班级绑定。

3.3 教师模块详细设计与实现

在教师登录系统后,可以对班级学生信息进行一系列的管理操作,包括添加、修改、查看等,同时也可以对不同类型的题目进行导入和更新[4]。对于选择题,可以选择从题库中单独插入或进行批量导入。然而,对于编程题,流程相对复杂一些。首先需要确定编程题的类型,然后根据不同的类型格式,添加相应的编程题以及编程题的测试用例。这样的设计旨在方便查找和管理,使整个编程题库更加条理清晰。如果题目出现错误,可以及时查找并纠正。

学生练习作业布置。受教学计划的安排及现实因素的影响,各班级的学习科目或进度可能存在差异。因此,各班级教师布置的作业也可能有所不同。在系统页面中,用户可选择相应的班级及题号进行作业布置。完成选择后,点击提交,所提交的班级及题号信息将存储于相应的数据库表中。这样,不同班级的学生在进入系统后将看到不同的题目。这是由于系统会先查询数据库中该班级信息及其对应的题号信息,然后才能将不同的题目呈现在页面中。

学生应答信息的查阅。教师可透过选取特定的班级,进而查看该班级中每一位同学在编程题目中的总得分情况。若有必要深入了解特定学生的编程练习情况,教师只需点击“查看详细信息”按钮,系统将自动跳转至新的界面,完整展示该学生的所有编程题目得分情况。点击具体的题目编号,教师还能查看学生提交的源代码。通过观察每个学生在各道编程题目中的得分以及他们提交的源代码,教师能更准确地掌握学生的学习进度,从而及时调整教学策略。此外,在期末考试时,教师可根据系统内各难度题目的得分情况,有针对性地调整期末试卷的难易程度。

3.4 学生模块详细设计与实现

学生登录系统后,主要进行答题和查看分数的操作。题目类型包括选择题和编程题。学生可以选择当日所学的章节或较为薄弱的章节内容进行选择题练习。练习完成后,点击提交按钮,系统会生成本章节的选择题分数。另外,学生也可以选择编程题进行练习。根据题目列表,学生可以挑选需要的题目进行练习。提交源程序后,系统会自动评分。如果提示编译未通过,学生可以重新提交源文件,系统会再次评分。评分完成后,学生可以查看编程题分数。

学生选择题答题。学生登录系统后,需在答题页面选择正确答案。正确答案与题目选项均存储在同一个列表中,并以隐藏状态显示。当学生点击提交按钮后,系统会将正确答案选项及解析显示在界面上。

学生编程题答题。学生登录系统后,可自主选择需要练习的章节和编程题,在编辑框中输入源代码后点击提交。系统接收到学生提交的源文件后,会调用DOS命令将其编译成一个可执行文件。如果编译成功,系统将进入测试环节,自动从数据库中提取测试用例,将学生的输出结果与正确答案进行比对,根据测试用例通过的个数,给予一个公正的分数,并将分数存储到学生编程题得分表中。如果编译失败,系统将提醒学生出现编译错误,并显示相关的错误信息,以便学生自行调试后再次提交。

学生得分信息查询。在系统评分完成后,学生可以在得分统计页面查看每一道编程题的得分和总平均分。这些成绩信息已存储在数据库表中,并且通过GridVeiw控件在页面上展示。

4 总结

当前,各高校教学改革的核心领域之一就是应用计算机技术,对学校各学科题库的管理、试卷组合、测试及评分体系进行全面优化。在当今线上与线下相结合的教学发展大背景下,各高校都已研发出相似的题目练习系统。这款系统的设计不仅符合高校教师线上教学的需求,同时也推动了无纸化教学的普及,极大地减轻了高校教师的教学工作量,并加强了教师与学生之间的联系。因此,该系统能在高校的C语言程序设计课程练习中得以应用。

参考文献:

[1] 何波玲.C/C++程序设计练习系统的开发与设计[J].科技传播,2016,8(10):102-103.

[2] 黄金波,杜晓明,吕剑锋,等.XML数据库技术在IETM中的应用研究[J].科学技术与工程,2006,6(23):4795-4797.

[3] 王双立,谭炜乐,吕钢,等.基于ASP.net的ECharts动态多组曲线图表的实现[J].江苏科技信息,2018,35(32):33-35.

[4] 张晓杰,卢涵宇.基于B/S的学生信息管理系统设计与实现[J].电脑知识与技术,2013,9(29):6552-6554.

【通联编辑:王 力】