Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menambah soalan kod dan pengaturcaraan pada kuiz dalam talian

Cara menambah soalan kod dan pengaturcaraan pada kuiz dalam talian

王林
王林asal
2023-09-27 23:03:151432semak imbas

Cara menambah soalan kod dan pengaturcaraan pada kuiz dalam talian

Bagaimana untuk menambah kod dan soalan pengaturcaraan soalan dalam jawapan dalam talian, anda memerlukan contoh kod khusus

Dengan perkembangan Internet, pembelajaran dalam talian dan peperiksaan dalam talian telah menjadi trend. Dalam peperiksaan dalam talian, soalan pengaturcaraan adalah jenis soalan biasa. Cara menambah kod soalan dan soalan pengaturcaraan ke platform menjawab soalan dalam talian telah menjadi isu penting. Artikel ini akan menerangkan cara melaksanakan fungsi ini melalui contoh kod tertentu.

Pertama sekali, untuk dapat menambah kod soalan dalam platform menjawab soalan dalam talian, kami memerlukan rangka kerja yang menyokong penyuntingan dan berjalan kod. Pada masa ini, pilihan yang lebih popular ialah menggunakan editor kod sumber terbuka, seperti Editor Ace atau CodeMirror. Editor ini menyediakan fungsi seperti penyerlahan kod, pelengkapan automatik dan pemformatan kod, dan sangat sesuai untuk mengedit dan memaparkan kod dalam kuiz dalam talian.

Seterusnya, kita perlu menyelesaikan masalah bagaimana untuk menghantar kod yang dimasukkan oleh pengguna kepada pelayan untuk dijalankan. Kaedah biasa ialah menghantar kod yang dimasukkan oleh pengguna ke bahagian belakang untuk diproses melalui antara muka pelayan bahagian belakang dan mendapatkan hasil yang sedang berjalan. Ini boleh dicapai dengan menggunakan bahasa skrip sebelah pelayan seperti PHP, Python atau Node.js. Berikut ialah contoh kod menggunakan 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');
});

Kod di atas menggunakan rangka kerja Express untuk mencipta pelayan HTTP mudah, menerima penyerahan kod pengguna melalui laluan /run dan menggunakan child_process Modul mencipta proses anak untuk melaksanakan kod. Keputusan pelaksanaan dikembalikan kepada klien melalui respons HTTP. /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">
<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>

Atas ialah kandungan terperinci Cara menambah soalan kod dan pengaturcaraan pada kuiz dalam talian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn