国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

論某教育機構考試系統(tǒng)設計

陳偉 / 2615人閱讀

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

前言

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

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

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

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

試卷

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

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;

這只是一份簡單的設計,具體要看實際需求,如果是考試相關需求需要添加

考試時間 (time)

考試及格分數(shù) (grade)

而類似字段實際不應加在試卷上,上面已經(jī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 "開考時間",
  `time_limit` int(11) NOT NULL COMMENT "限時",
  `score` double NOT NULL 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;

上述為考試表,考試表通過paper_id綁定對應試卷。

題庫

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


當然,他也是一個多對多的關系。

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;

如上述表結構,題庫即為分類,所以沒有過度設計。

試題

試題應該算是整個系統(tǒng)設計過程中比較繁瑣的一部分了。先來看下數(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 "選項",
  `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)考試的試卷將試題分為三大部分

題干(題目)

選項

答案

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

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

沒有使用json方式存儲有倆點原因,自認為mysql對json的查詢做的不夠完善,sql寫的太復雜,其后者則是擴展性不夠強,低版本不兼容。

判分

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

把能存儲的全部存起來

判分這里是這樣做的

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 "考試用時長",
  `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é)全部記錄,方便查詢,答案這塊依舊使用的序列化的方式。在檢查答案時,直接反序列化計算數(shù)組差集既完成判分,獲取交集也是沒問題的。

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

考試畢竟不是一道題那么簡單,你可以選擇迭代去完成。如果題目數(shù)量比較大。或者用戶相對集中,建議還是使用隊列去異步完成判分操作并通過socket或者其他方式通知到客戶端(web端)更保險一些。

致謝

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

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

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71910.html

相關文章

  • 論某教育機構考試系統(tǒng)設計

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

    AaronYuan 評論0 收藏0
  • 當下最有價值的這18個云計算認證

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

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

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

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

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

    codercao 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<