So fügen Sie Code- und Programmierfragen zu Online-Tests hinzu

王林
Freigeben: 2023-09-28 06:00:01
Original
1395 Leute haben es durchsucht

So fügen Sie Code- und Programmierfragen zu Online-Tests hinzu

Um den Code und die Programmierfragen der Frage in die Online-Antwort einzufügen, benötigen Sie spezifische Codebeispiele

Mit der Entwicklung des Internets sind Online-Lernen und Online-Prüfungen zu einem Trend geworden. In Online-Prüfungen sind Programmierfragen ein häufiger Fragetyp. Das Hinzufügen von Fragecodes und das Programmieren von Fragen zur Online-Frage-Antwort-Plattform ist zu einem wichtigen Thema geworden. In diesem Artikel wird anhand spezifischer Codebeispiele beschrieben, wie diese Funktionalität implementiert wird.

Um den Code der Frage in die Online-Frage-Antwort-Plattform einfügen zu können, benötigen wir zunächst ein Framework, das die Codebearbeitung und -ausführung unterstützt. Derzeit ist die Verwendung eines Open-Source-Code-Editors wie Ace Editor oder CodeMirror die beliebteste Wahl. Diese Editoren bieten Funktionen wie Code-Hervorhebung, automatische Vervollständigung und Code-Formatierung und eignen sich hervorragend zum Bearbeiten und Anzeigen von Code in Online-Quiz.

Als nächstes müssen wir das Problem lösen, wie der vom Benutzer eingegebene Code zur Ausführung an den Server übermittelt wird. Eine übliche Methode besteht darin, den vom Benutzer eingegebenen Code zur Verarbeitung über die Backend-Serverschnittstelle an das Backend zu übergeben und die laufenden Ergebnisse zu erhalten. Dies kann durch den Einsatz einer serverseitigen Skriptsprache wie PHP, Python oder Node.js erreicht werden. Hier ist ein Beispielcode mit Node.js:

// 引入依赖库
const express = require('express');
const bodyParser = require('body-parser');
const { spawn } = require('child_process');

// 创建Express应用
const app = express();

// 配置body-parser中间件
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

// 处理POST请求
app.post('/run', (req, res) => {
  // 获取用户输入的代码
  const code = req.body.code;

  // 创建子进程来执行代码
  const childProcess = spawn('python', ['-c', code]);

  // 监听子进程的输出
  childProcess.stdout.on('data', (data) => {
    // 将输出返回给客户端
    res.send(data.toString());
  });

  // 监听子进程的错误输出
  childProcess.stderr.on('data', (data) => {
    // 将错误信息返回给客户端
    res.status(500).send(data.toString());
  });
});

// 启动服务器
app.listen(3000, () => {
  console.log('Server is running on port 3000');
});
Nach dem Login kopieren

Der obige Code verwendet das Express-Framework, um einen einfachen HTTP-Server zu erstellen, akzeptiert Benutzercode-Übermittlungen über die Route /run und verwendet den child_process Das Modul erstellt untergeordnete Prozesse zum Ausführen von Code. Die Ausführungsergebnisse werden per HTTP-Antwort an den Client zurückgegeben. /run路由接受用户的代码提交,并使用child_process模块创建子进程来执行代码。执行结果通过HTTP响应返回给客户端。

最后,我们需要在在线答题平台中展示题目的代码和程序设计题。这可以通过在网页中嵌入代码编辑器和题目描述的方式实现。下面是一个使用Ace Editor和HTML的示例代码:

<!DOCTYPE html>
<html>
<head>
  <title>在线答题</title>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.12/ace.js"></script>
</head>
<body>
  <div>
    <h2>程序设计题</h2>
    <p>请编写一个程序,输出从1到n之间所有的素数。</p>
    <div id="editor" style="width: 500px; height: 300px;"></div>
    <button onclick="runCode()">运行代码</button>
    <pre id="output">
Nach dem Login kopieren
<script> // 创建编辑器实例 const editor = ace.edit('editor'); editor.setTheme('ace/theme/twilight'); editor.getSession().setMode('ace/mode/python'); // 运行代码 function runCode() { const code = editor.getValue(); // 发送请求 fetch('/run', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ code }), }) .then(response => response.text()) .then(output => { // 显示运行结果 document.getElementById('output').textContent = output; }) .catch(error => { console.error(error); alert('运行出错'); }); } </script>

上述代码通过嵌入的JavaScript代码创建了一个Ace Editor实例,用于编辑代码。点击“运行代码”按钮后,通过fetch函数发送HTTP POST请求到服务器,并将代码作为JSON数据体发送。服务器返回的运行结果通过修改页面上的<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"></pre><div class="contentsignin">Nach dem Login kopieren</div></div><div class="contentsignin">Nach dem Login kopieren</div></div>

Abschließend müssen wir den Code und die Programmierfragen der Frage auf der Online-Antwortplattform anzeigen. Dies kann durch die Einbettung des Code-Editors und der Themenbeschreibung in die Webseite erreicht werden. Hier ist ein Beispielcode mit Ace Editor und HTML:

rrreee

Der obige Code erstellt eine Ace Editor-Instanz durch eingebetteten JavaScript-Code zum Bearbeiten von Code. Nachdem Sie auf die Schaltfläche „Code ausführen“ geklickt haben, senden Sie über die Funktion fetch eine HTTP-POST-Anfrage an den Server und senden Sie den Code als JSON-Datenkörper. Die vom Server zurückgegebenen Laufergebnisse werden durch Ändern des <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"></pre><div class="contentsignin">Nach dem Login kopieren</div></div><div class="contentsignin">Nach dem Login kopieren</div></div>-Elements auf der Seite angezeigt. 🎜🎜Das Obige ist die relevante Implementierungsmethode zum Hinzufügen von Code- und Programmierfragen zu Online-Antwortfragen. Entwickler müssen nur entsprechend den spezifischen Anforderungen entsprechende Open-Source-Bibliotheken und -Technologien verwenden, um eine voll funktionsfähige Online-Frage-Antwort-Plattform zu implementieren. Ich hoffe, dieser Artikel hilft Ihnen! 🎜

Das obige ist der detaillierte Inhalt vonSo fügen Sie Code- und Programmierfragen zu Online-Tests hinzu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!