成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

論某教育機(jī)構(gòu)考試系統(tǒng)設(shè)計(jì)

陳偉 / 2618人閱讀

摘要:前言近期在做一套答題系統(tǒng),參考了某教育機(jī)構(gòu)的設(shè)計(jì)。題庫名稱如上述表結(jié)構(gòu),題庫即為分類,所以沒有過度設(shè)計(jì)。試題試題應(yīng)該算是整個(gè)系統(tǒng)設(shè)計(jì)過程中比較繁瑣的一部分了。判分到判分這步算是整個(gè)考試完成了,那是不可能的,實(shí)際完成了不到的功能。

前言

近期在做一套答題系統(tǒng),參考了某教育機(jī)構(gòu)的設(shè)計(jì)。本章跟大家聊聊考試系統(tǒng)中的核心 - 如何考試?

簡單點(diǎn)說,所謂考試系統(tǒng)就是答題系統(tǒng),通過答題完成進(jìn)行判分后返回其答題結(jié)果即完成整個(gè)流程。

當(dāng)然過程中有些數(shù)據(jù)需要存儲,有些則可在后期查詢計(jì)算(個(gè)人理解),如有誤導(dǎo)請速噴

如上圖所示,一套試卷有N道試題,每道試題又是由題干與選項(xiàng)、答案組成,這樣才匯聚了完整的一套答題(考試)系統(tǒng)。

試卷

一次考試(問卷)則使用一套試卷,考試(問卷)與考試則為一對一的關(guān)系,而試卷與考試(問卷)則是多對多的關(guān)系

CREATE TABLE `company_paper` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "試卷名稱",
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

這只是一份簡單的設(shè)計(jì),具體要看實(shí)際需求,如果是考試相關(guān)需求需要添加

考試時(shí)間 (time)

考試及格分?jǐn)?shù) (grade)

而類似字段實(shí)際不應(yīng)加在試卷上,上面已經(jīng)說過了試卷與考試是多對多的關(guān)系,所以上述字段應(yīng)加入在考試表中。

CREATE TABLE `company_examine` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `paper_id` int(11) NOT NULL COMMENT "試卷編碼",
  `start_time` int(11) NOT NULL COMMENT "開考時(shí)間",
  `time_limit` int(11) NOT NULL COMMENT "限時(shí)",
  `score` double NOT NULL COMMENT "通過分?jǐn)?shù)",
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

上述為考試表,考試表通過paper_id綁定對應(yīng)試卷。

題庫

題庫與試卷沒有關(guān)系,是以試題為對象的分類管理罷了。將試題歸類后在添加試卷動作時(shí)選擇試題比較方便。


當(dāng)然,他也是一個(gè)多對多的關(guān)系。

CREATE TABLE `company_question_database` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "題庫名稱",
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

如上述表結(jié)構(gòu),題庫即為分類,所以沒有過度設(shè)計(jì)。

試題

試題應(yīng)該算是整個(gè)系統(tǒng)設(shè)計(jì)過程中比較繁瑣的一部分了。先來看下數(shù)據(jù)表

CREATE TABLE `company_question` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `database_id` int(11) NOT NULL COMMENT "所屬題庫",
  `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "題目",
  `option` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "選項(xiàng)",
  `answer` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "答案",
  `type` tinyint(4) NOT NULL DEFAULT "0" COMMENT "類型 0單選 1多選",
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

首先按照傳統(tǒng)考試的試卷將試題分為三大部分

題干(題目)

選項(xiàng)

答案

這三大部分匯總為一道題,這里的option與answer選擇使用序列化方式去存儲

// 選項(xiàng)
>>> serialize (["A"=>"選項(xiàng)A","B"=>"選項(xiàng)B"])
=> "a:2:{s:1:"A";s:7:"選項(xiàng)A";s:1:"B";s:7:"選項(xiàng)B";}"
// 答案
>>> serialize (["A"])
=> "a:1:{i:0;s:1:"A";}"

沒有使用json方式存儲有倆點(diǎn)原因,自認(rèn)為mysql對json的查詢做的不夠完善,sql寫的太復(fù)雜,其后者則是擴(kuò)展性不夠強(qiáng),低版本不兼容。

判分

到判分這步算是整個(gè)考試完成了80%,那是不可能的,實(shí)際完成了不到50%的功能。依舊引用電商相關(guān)文章的那句話

把能存儲的全部存起來

判分這里是這樣做的

CREATE TABLE `company_user_paper` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL COMMENT "用戶編碼",
  `paper_id` int(11) NOT NULL COMMENT "試卷編碼",
  `answer` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT "答案",
  `score` double(8,2) NOT NULL DEFAULT "0.00" COMMENT "得分",
  `correct` double(8,2) NOT NULL DEFAULT "0.00" COMMENT "正確率",
  `date_length` int(11) NOT NULL DEFAULT "0" COMMENT "考試用時(shí)長",
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

見上表,將用戶每次考試的動作細(xì)節(jié)全部記錄,方便查詢,答案這塊依舊使用的序列化的方式。在檢查答案時(shí),直接反序列化計(jì)算數(shù)組差集既完成判分,獲取交集也是沒問題的。

$answerArr = unserialize($answer)
$successAnswerArr = unserialize($successAnswer)
array_diff($answerArr,$successAnswerArr)

考試畢竟不是一道題那么簡單,你可以選擇迭代去完成。如果題目數(shù)量比較大?;蛘哂脩粝鄬校ㄗh還是使用隊(duì)列去異步完成判分操作并通過socket或者其他方式通知到客戶端(web端)更保險(xiǎn)一些。

致謝

本章的內(nèi)容到此結(jié)束,感謝你看到這里,希望本篇可以幫到你。謝謝!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/71910.html

相關(guān)文章

  • 論某教育機(jī)構(gòu)考試系統(tǒng)設(shè)計(jì)

    摘要:前言近期在做一套答題系統(tǒng),參考了某教育機(jī)構(gòu)的設(shè)計(jì)。題庫名稱如上述表結(jié)構(gòu),題庫即為分類,所以沒有過度設(shè)計(jì)。試題試題應(yīng)該算是整個(gè)系統(tǒng)設(shè)計(jì)過程中比較繁瑣的一部分了。判分到判分這步算是整個(gè)考試完成了,那是不可能的,實(shí)際完成了不到的功能。 showImg(https://segmentfault.com/img/bVbiNGI?w=720&h=449); 前言 近期在做一套答題系統(tǒng),參考了某教育...

    AaronYuan 評論0 收藏0
  • 當(dāng)下最有價(jià)值的這18個(gè)云計(jì)算認(rèn)證

    摘要:下面就讓我們來看看你應(yīng)該考慮哪些最受歡迎的云計(jì)算認(rèn)證。是一個(gè)國際機(jī)構(gòu),負(fù)責(zé)推動云計(jì)算專業(yè)人員的標(biāo)準(zhǔn)培訓(xùn)和認(rèn)證。目前,提供一個(gè)認(rèn)證和五個(gè)云認(rèn)證,范圍從專業(yè)云管理員到專業(yè)云解決方案架構(gòu)師。關(guān)于IT,如果說有一點(diǎn)可以肯定的,那就是投資云永遠(yuǎn)也不晚。隨著云對IT和整個(gè)業(yè)務(wù)越來越重要,對云技能的需求也只會越來越大。但是,要證明你在這個(gè)競爭激烈的就業(yè)市場中具有所需的技能和知識,可能是一件很難的事情。如果...

    Bryan 評論0 收藏0
  • 【2022考研最后40天】要注意這4個(gè)時(shí)間節(jié)點(diǎn)和這5件事情

    摘要:請考生務(wù)必妥善保管個(gè)人網(wǎng)報(bào)用戶名密碼及準(zhǔn)考證居民身份證等證件,避免泄露丟失造成損失。自主劃線院校會在月陸續(xù)公布初試成績基本要求。鎖定時(shí)間到達(dá)后,如招生單位未明確受理意見,鎖定解除,考生可繼續(xù)填報(bào)其他志愿。 ...

    jaysun 評論0 收藏0
  • 持續(xù)的合規(guī)性,持續(xù)的迭代:如何成功地通過IT審計(jì)

    摘要:持續(xù)合規(guī),持續(xù)迭代對于大多數(shù)學(xué)生來說,考試日是他們教育生涯中最緊張的經(jīng)歷之一。在您的生態(tài)系統(tǒng)中實(shí)現(xiàn)審計(jì)合規(guī)性可能是一個(gè)反復(fù)的過程,并且不必在審計(jì)到期前的五天內(nèi)進(jìn)行壓縮。迭代的范圍和執(zhí)行是事情容易崩潰的地方。持續(xù)合規(guī),持續(xù)迭代:對于大多數(shù)學(xué)生來說,考試日是他們教育生涯中最緊張的經(jīng)歷之一。考試是對你學(xué)習(xí)、吸收和反芻課程能力的半公開聲明,雖然及格的獎(jiǎng)勵(lì)相當(dāng)平凡,但失敗的后果是巨大的。我的教育經(jīng)驗(yàn)表...

    codercao 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<