「请教」急需帮助的Nodejs在线考试系统的设计与开发毕设

「请教」急需帮助的Nodejs在线考试系统的设计与开发毕设

是这样的,楼主正在努力自学前端技术,准备找工作。 本科学的电子信息工程,但是相比互联网的话,对电子这块兴趣不大,所以毕设选了这么个奇葩题—— 「XX课程在线考试系统的设计与开发」。 老师的要求:

  1. 设计并开发出一套电路分析基础课程考试系统,要求集练习、测试自动化于一体。
  2. 具有教学题库管理、考题自动生成、在线测试、自动化评分、成绩登记等功能。 感觉很全端的样子。其实是学校那个课程组想更新他们的在线测评,顺便出了这么个题目,我看和我想找的工作挺接近的,可以认真做做增长经验。当然,和四年学的一毛钱关系都没有。 因为那些老师也是搞电子的,自己对这个也不是很懂,所以我只能自己努力,来cnode请教了。

楼主现在只懂HTML&CSS, JavaScript算是熟悉,但是还在努力深入学习中。因为自己搭过网站,算是了解Nginx的服务器端配置。数据库也不太懂,但是老师指明了一定要用数据库,因为要导入他们课程的考试题库。 打算前端就使用 jQuery + Bootstrap,但是后端不太懂。 所以想请教各位大神:

  1. 这个在线考试系统如何架构? 可以把它做成一个Web App吗?
  2. 在网上搜了下「在线考试系统」,一般都是很丑陋的界面,然后用的ASP.NET,或者JSP开发。 因为用的OS X系统,不太想接触.NET和JSP。所以我可以用Node.js写后端吗?或者推荐某些Python框架?对Python的学习还是不排斥的。 实在不行就只能从零开始学PHP了。
  3. 数据库是使用MySQL还是现在有点火的MongoDB Redis?哪个比较好上手?
  4. 比较喜欢现在的新鲜的开源框架。但是最好还是要兼容到IE7。

总之就是不使用ASP.NET、JSP和PHP,只用JS、Python以及数据库来开发这个在线考试系统难度大吗?有可行度吗? 大概有半年的时间做这个东西,还是挺想自己认真把它做出来的。

请各位指点,感激不尽。


3 回复

针对你的问题,我将从架构设计、技术栈选择、数据库选用以及一些示例代码这几个方面进行解答。

1. 架构设计

在线考试系统可以被设计成一个典型的MVC(Model-View-Controller)结构的Web应用。你可以使用Express.js作为Node.js的Web应用框架,它是一个轻量级且灵活的框架,非常适合构建此类应用。

2. 技术栈选择

前端

  • HTML & CSS:用于构建页面布局和样式。
  • Bootstrap:提供响应式设计和预定义样式。
  • jQuery:简化DOM操作和事件处理。

后端

  • Node.js + Express.js:用于构建API接口。
  • Python Flask/Django:如果你愿意学习Python的话,这两个框架也是非常好的选择。

3. 数据库选择

  • MySQL:关系型数据库,适合结构化数据存储,易于理解和上手。
  • MongoDB:非关系型数据库,适合文档存储,灵活性高,但可能需要更多时间去理解其设计理念。

对于初学者来说,MySQL可能是更好的选择,因为它更直观且容易理解。

4. 示例代码

以下是一个简单的Express.js应用示例,展示如何创建一个基本的RESTful API:

// 引入依赖
const express = require('express');
const mysql = require('mysql');

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

// 连接数据库
const db = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'password',
    database: 'exam_system'
});

db.connect((err) => {
    if (err) throw err;
    console.log('Connected to database');
});

// 定义路由
app.get('/questions', (req, res) => {
    let sql = 'SELECT * FROM questions';
    db.query(sql, (err, results) => {
        if (err) throw err;
        res.send(results);
    });
});

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

这段代码创建了一个简单的Express.js应用,并通过MySQL查询所有问题,返回给客户端。

总结

使用Node.js+Express.js和MySQL开发在线考试系统是完全可行的,而且相对简单。你可以利用现有的前端知识(HTML, CSS, jQuery, Bootstrap)快速搭建前端页面,同时学习Node.js和MySQL来完成后端逻辑和数据库操作。希望这些信息对你有所帮助!


  1. 架构的问题,没人会免费帮你想的。你设计一个架构然后画图出来,说不定有人愿意告诉你哪些地方的架构可以改进。
  2. 界面丑陋是 UI 的问题,跟后端语言无关。只是用 asp 和 jsp 的人品味都不行而已。用 osx 不妨碍写 jsp。可以用 node.js 写。python 框架不推荐。 推荐 ruby on rails。
  3. mysql 就好了,mongodb 不要碰。redis 后面再来,你现在应该玩不懂缓存这块。
  4. 开源框架各有各的好玩,但是一说到兼容 IE7,所以的东西就都变得不好玩了。跟老师说,可以兼容最新版本的 360 安全浏览器, 就说你用到了 360 安全浏览器的安全框架,必须用这款浏览器保证考试的保密性。

难度大不大跟语言无关。半年时间的话,看悟性了。

针对你的问题,使用Node.js作为后端,配合一些流行的JavaScript框架来开发这套在线考试系统是一个非常不错的选择。这里我将详细解答你的几个核心问题:

  1. 系统架构:可以将它做成一个Web App。通常的架构包括前端用户界面(使用jQuery + Bootstrap)、后端服务(Node.js + Express)、数据库(MySQL或MongoDB)和API接口。

  2. 后端选择:Node.js非常适合构建快速响应的Web应用,并且有大量的库和框架可以帮助你快速搭建项目。Express是一个流行的Node.js Web应用框架,可以轻松处理路由、中间件等。

    示例代码(Express简单示例):

    const express = require('express');
    const app = express();
    
    app.get('/', (req, res) => {
      res.send('Hello World!');
    });
    
    app.listen(3000, () => console.log('Server running on port 3000'));
    
  3. 数据库选择:如果你希望快速入门,MySQL是一个较好的选择,因为它是一个成熟的关系型数据库。对于更灵活的数据存储需求,MongoDB是不错的选择。Redis适合用来做缓存或消息队列。

    示例代码(连接MySQL):

    const mysql = require('mysql');
    const connection = mysql.createConnection({
      host: 'localhost',
      user: 'root',
      password: 'password',
      database: 'exam_system'
    });
    
    connection.connect((err) => {
      if (err) throw err;
      console.log('Connected to MySQL Database!');
    });
    
  4. 兼容性:为了支持IE7,你需要使用较为老的JavaScript语法,并确保使用的任何库都兼容旧版浏览器。考虑到IE7已非常老旧,建议尽可能支持最新版本的IE和其他现代浏览器。

  5. 开发难度:使用Node.js、Express和MySQL开发这套系统是完全可行的。虽然需要一些学习曲线,但这些技术都非常活跃,有丰富的社区支持。同时,你可以利用现有的开源项目(如试卷管理系统、在线考试平台)作为参考。

总的来说,这个项目对你来说是一个很好的学习机会,既能够加深对Node.js的理解,也能提升你的前后端综合技能。祝你开发顺利!

回到顶部