乙個基於XML的考試系統的設計與實現

2021-04-18 13:49:49 字數 1630 閱讀 4077

這篇文章想寫很久了,只是一直都沒有時間,現在公司忙完了,人也畢業了,時間有了,所以就可以寫寫東西了.

這個系統的基本要求其實很簡單,如下:

1.可以生成試卷(最好提供多種生成方式)

2.提供試題的管理功能(增,刪...)

3.提供一般的系統管理功能(登陸,許可權控制...)

恩,很簡單是吧,但是今天我討論的不是這個系統的實現,而是這個系統的設計.在做這個系統的時候我剛看了一些orm的書,然後我就想,我們可不可以用類圖來指導資料庫的實現了?於是我就先建立了類圖,如下:

很簡單是吧,對就是這麼簡單的乙個類圖.由於這個系統要涉及到生成xml檔案,然後在用xslt解釋為html,所以這個時候我就按照類圖定義了xml檔案的結構,然後在寫了乙個樣式檔案.然後再去實現這個系統.這個時候問題來了.同學說我要可以自定義題目.xml檔案如下:

<?xml version="1.0" encoding="gb2312" standalone="yes"?> <?xml-stylesheet type="text/xsl" href="web.xsl"?> 2023年度數學綜合測試試卷

題目內容ab

cd ab

題目內容ab

cd a

題目內容ab

cd a

計算題body

fjkasjd

計算題詞2答案

xslt檔案如下:

共     題           滿分

很簡單是吧,我們只要用工廠模式,將題目類作為父類,實際題目作為子類,或者按照oo的思想將題目類抽象為乙個介面,多麼完美.......但是不要忘記了,我們要的是自定義題目型別,不是你寫完然後讓客戶選.但是我們能做什麼,對著這樣的乙個類圖?對著按照這個類圖已經實現了一般的系統.但是我也是按照上面的想法來想的,但是後來看了一下,發現如果這樣做整個系統都要重構,基本上等於推倒了重來.所以當時我的回答是工程量太大.

那麼是不是就沒有辦法了?其實不是的,只要我們不用oo的思想以上的類圖完全可以做到自定義題目的這樣乙個功能.我們改變一下資料庫的結構,原來資料庫中存放資料為題目內容為乙個**:t_題目;題目型別為乙個**:t_型別.而t_型別所有的字段為兩個,題目型別名稱和題目型別id.如果我們要做上面的功能新增,我們只要在t_型別表裡面加乙個供xslt解釋用的字段就可以了,這個欄位將會用來標識每一鐘型別的題目,這樣我們就可以用這個型別來度取xml檔案中的資料了.譬如,我們有乙個新建題目型別1,標識為new1,那麼我們可以這樣來表現這個東西:

這樣我們可以使使用者只要掌握一般的xslt檔案編寫就可以了,如果真的不行,找乙個網管,系管,估計也可以完成這項任務.

那麼這樣做有什麼好處了?其實好處很明顯,就是所有型別的題目在系統中都是抽象的題目,所以使用者喜歡怎麼定義就怎麼定義.如果用工廠模式,我們要寫多少類?

讓我們在看一下上面的類圖,我們會發現,這個xml檔案的生成很簡單,只要沒乙個例項解釋自己就行了.oo的威力就在這裡.

好了,以上是我做這個系統的時候的感想,有什麼指正和不足請提出.

乙個簡單的考試系統

做了乙個簡單的系統,其實也就是個小功能。是乙個考試系統,主要試用人群是老師,大致功能與相關 羅列一下 大概涉及到了兩個表,分別是學生表和分數表,暫時不需要太完善的功能,所以只有乙個管理員,沒必要再設計管理員表了。學生表的字段說幾個重要的 名稱,年齡,家長郵箱,年齡在資料庫裡可以給個char型別,長度...

如何設計乙個基於角色的使用者許可權系統?

安聚尼股份 2017 08 25 09 55 基於角色的使用者許可權管理一般在任何專案中都是乙個必不可少的功能。在此設計裡,主要有使用者 角色兩個方面,角色需要有動態,使用者的角色分配,使用者與角色之間是多對多或一對多的關係,資料庫表設計如下 一 資料庫表設計 1 user 使用者表 記錄使用者的基...

xml的乙個示例

function.h cstring openfile cstring cstring getcontext cstring,int,int void str2array cstring struct xmlnode function.cpp include include include incl...