亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Sinatra的選課系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

        2016-05-19 14:09:38劉振源韓笑章偉
        電腦知識(shí)與技術(shù) 2016年8期

        劉振源+韓笑+章偉

        摘要:為了使學(xué)生能夠通過(guò)在線的方式選擇學(xué)校開(kāi)設(shè)的興趣課程,該文設(shè)計(jì)并實(shí)現(xiàn)了基于Sinatra的選課系統(tǒng)。該文詳細(xì)論述了選課系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)的相關(guān)技術(shù),對(duì)關(guān)鍵技術(shù)進(jìn)行剖析,對(duì)重要的業(yè)務(wù)邏輯進(jìn)行分析,并在最后對(duì)該系統(tǒng)提出改進(jìn)意見(jiàn)。

        關(guān)鍵詞:選課系統(tǒng);Sinatra框架;Web開(kāi)發(fā)

        中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)08-0076-03

        1 概述

        隨著“小學(xué)生減負(fù)”教育政策的推廣和實(shí)施,越來(lái)越多的小學(xué)針對(duì)學(xué)生的愛(ài)好開(kāi)設(shè)興趣課程。由于課程資源的有限性,學(xué)校不能保證每個(gè)學(xué)生都能選上自己最想上的課,但學(xué)校必須保證選課的公平性。教育信息化的普及使得越來(lái)越多的學(xué)校領(lǐng)導(dǎo)選擇通過(guò)在線選課的方式解決學(xué)生選課問(wèn)題,不僅保證了學(xué)生選課的公平性,還減輕了相關(guān)負(fù)責(zé)人的工作量。

        學(xué)校針對(duì)小學(xué)一、二年級(jí)的學(xué)生,開(kāi)設(shè)了科技小制作、英語(yǔ)配音等十幾門(mén)興趣課程,想讓學(xué)生和家長(zhǎng)通過(guò)在線的方式進(jìn)行選課。學(xué)?,F(xiàn)有的課程系統(tǒng)還并不支持學(xué)生選課,因此,基于Sinatra設(shè)計(jì)和開(kāi)發(fā)了一個(gè)選課系統(tǒng),幫助學(xué)校解決在線選課問(wèn)題。

        2 系統(tǒng)需求分析及系統(tǒng)技術(shù)選型

        2.1 系統(tǒng)需求分析

        我校針對(duì)一二年級(jí)學(xué)生總共開(kāi)設(shè)了13門(mén)興趣課程,每門(mén)課程限制20人報(bào)名參與;參與選課的學(xué)生共有158人,每人選課數(shù)量沒(méi)有限制,每人只有一次選課機(jī)會(huì)。系統(tǒng)要支持多種終端設(shè)備訪問(wèn),最終生成一份記錄學(xué)生選課結(jié)果信息的Excel文件。

        2.2 系統(tǒng)技術(shù)選型

        由于服務(wù)器限制,系統(tǒng)選擇使用文本來(lái)存儲(chǔ)所有應(yīng)用數(shù)據(jù),使用XML文件存儲(chǔ)課程信息,使用CSV文件存儲(chǔ)參與選課的學(xué)生信息和學(xué)生選課結(jié)果信息;為了支持多種終端設(shè)備訪問(wèn),系統(tǒng)選擇采用移動(dòng)優(yōu)先設(shè)計(jì)思想的Bootstrap前端框架實(shí)現(xiàn)用戶(hù)界面;系統(tǒng)后臺(tái)使用基于Ruby的Sinatra框架實(shí)現(xiàn)。

        XML即可擴(kuò)展標(biāo)記語(yǔ)言(Extensible Markup Language),是一種基于純文本的數(shù)據(jù)交換格式,適用于表現(xiàn)樹(shù)形結(jié)構(gòu)的數(shù)據(jù),其解析工具不依賴(lài)于特定的語(yǔ)言[1];CSV即逗號(hào)分割值文件(Comma Separated value),是一種用來(lái)存儲(chǔ)數(shù)據(jù)的純文本文件格式,可以和Excel文件相互轉(zhuǎn)換[2];Bootstrap 是最受歡迎的 HTML、CSS 和 JS 框架,用于開(kāi)發(fā)響應(yīng)式布局、移動(dòng)設(shè)備優(yōu)先的WEB項(xiàng)目[3];Sinatra是一個(gè)基于Ruby語(yǔ)言的DSL(領(lǐng)域?qū)僬Z(yǔ)言),可以輕松、快速地創(chuàng)建web應(yīng)用[4];Ruby是一種令人快樂(lè)的編程語(yǔ)言。

        3 系統(tǒng)頁(yè)面流程設(shè)計(jì)

        3.1 系統(tǒng)頁(yè)面

        系統(tǒng)選課須知頁(yè)面,顯示選課注意事項(xiàng),是系統(tǒng)的入口;系統(tǒng)登錄頁(yè)面,讓合法的用戶(hù)登錄到選課頁(yè)面;系統(tǒng)選課頁(yè)面,顯示可以供學(xué)生選擇的課程;系統(tǒng)選課結(jié)果頁(yè)面,顯示學(xué)生選擇的課程;其他頁(yè)面,包括告知學(xué)生登錄信息不合法、告知學(xué)生已經(jīng)選課、告知學(xué)生系統(tǒng)出錯(cuò)等頁(yè)面。

        3.2 系統(tǒng)頁(yè)面流程

        用戶(hù)訪問(wèn)網(wǎng)址,進(jìn)入選課須知頁(yè)面,仔細(xì)閱讀選課注意事項(xiàng);單擊“我已知曉須知”按鈕,進(jìn)入登錄頁(yè)面,如圖1所示。

        選擇所在班級(jí),并輸入姓名;單擊“登錄”按鈕,進(jìn)入選課頁(yè)面,如圖2所示,選擇合適自己的課程;單擊“確認(rèn)提交”按鈕,進(jìn)入選課結(jié)果頁(yè)面,保存選課截圖,直接退出瀏覽器即可。

        4系統(tǒng)實(shí)現(xiàn)

        4.1 系統(tǒng)文件結(jié)構(gòu)

        項(xiàng)目目錄下共有15個(gè)文件。config.ru是rack 服務(wù)器配置文件;course.xml 存儲(chǔ)了課程信息;Gemfile是Ruby包依賴(lài)配置文件;index.rb是項(xiàng)目文件,包含了所有接口的處理方法;result.csv中存儲(chǔ)了選課結(jié)果信息;student.csv中存儲(chǔ)了學(xué)生信息,views目錄下都是視圖文件。

        4.2 關(guān)鍵技術(shù)

        4.2.1 XML文檔的處理

        使用XML文件存儲(chǔ)課程信息,course.xml 文件:course表示課程,name表示課程名稱(chēng),limit表示課程限制人數(shù),初始值為20,count表示選擇該課程的人數(shù),初始值為0。

        使用Ruby的REXML模塊來(lái)處理XML文件:使用REXML::Document類(lèi)的new方法來(lái)加載XML文檔;使用REXML::Element類(lèi)的each方法并結(jié)合XPath來(lái)遍歷符合條件的XML元素;使用REXML::Document類(lèi)的write方法更新XML文檔[5]。

        4.2.2 CSV文檔的處理

        使用CSV文件存儲(chǔ)學(xué)生信息和學(xué)生選課結(jié)果信息,使用Excel軟件將包含學(xué)生信息的excel文件打開(kāi),選擇導(dǎo)出格式為CSV,導(dǎo)出student.csv 文件;在項(xiàng)目目錄下,創(chuàng)建result.csv文件,錄入一下文字并保存,用以存儲(chǔ)選課結(jié)果信息:

        班級(jí),姓名,周二所報(bào)課程,周三所報(bào)課程,周四所報(bào)課程

        使用Ruby內(nèi)置的CSV模塊來(lái)處理CSV文件:使用CSV模塊的foreach方法讀取csv文件的每一行數(shù)據(jù);使用CSV的<<方法向csv文件末尾追加一行數(shù)據(jù)。

        4.2.3 Sinatra框架的使用

        路由和視圖是Sinatra框架的兩個(gè)核心構(gòu)件。路由的作用是一個(gè)HTTP請(qǐng)求指定給特定的代碼塊來(lái)處理,視圖的作用是向用戶(hù)呈現(xiàn)界面。

        在Sinatra中,一個(gè)路由分為兩部分:HTTP方法(GET, POST等)和URL匹配范式。 每個(gè)路由都有一個(gè)要執(zhí)行的代碼塊,路由按照它們被定義的順序進(jìn)行匹配。 第一個(gè)與請(qǐng)求匹配的路由會(huì)被調(diào)用。路由范式可以包括具名參數(shù),可通過(guò)params哈希表獲得。

        在Sinatra中使用erb方法在應(yīng)用中引入erb模板。

        4.3 主要應(yīng)用邏輯實(shí)現(xiàn)

        4.3.1 用戶(hù)登錄驗(yàn)證

        從Sinatra的params中獲取用戶(hù)輸入的班級(jí)和姓名,使用Ruby的CSV模塊提供的foreach方法在student.csv中逐行查找,匹配相應(yīng)的學(xué)生信息,如果存在就可以跳轉(zhuǎn)到選課頁(yè)面。

        4.3.2 課程信息顯示

        5 總結(jié)

        基于Sinatra的選課系統(tǒng)上線5分鐘左右的時(shí)間,課程被全部選完。筆者查看生成的CSV文件,發(fā)現(xiàn)有兩條數(shù)據(jù)寫(xiě)錯(cuò),有兩門(mén)課程超出選課人數(shù)限制,總體上解決實(shí)際需求。

        經(jīng)筆者分析,問(wèn)題是由并發(fā)訪問(wèn)造成的,這是系統(tǒng)有待完善的地方,文件應(yīng)該采用異步操作,并要在寫(xiě)入數(shù)據(jù)時(shí)加鎖。如果條件允許,系統(tǒng)應(yīng)該使用數(shù)據(jù)庫(kù),來(lái)提高并發(fā)訪問(wèn)量。

        本文對(duì)于數(shù)據(jù)驅(qū)動(dòng)的小型網(wǎng)站具有一定的參考價(jià)值,同時(shí),也為使用Sinatra建站的Ruby初級(jí)開(kāi)發(fā)者提供借鑒。

        參考文獻(xiàn):

        [1] 松本行弘,松本行弘的程序世界[M].柳德燕,譯. 北京:人民郵電出版社,2011:328-333 .

        [2] 維基百科.逗號(hào)分隔值[EB/OL]. https://zh.wikipedia.org/wiki/%E9%80%97%E5%8F%B7%E5%88%86%E9%9A%94%E5%80%BC.

        [3] Bootstrap. Bootstrap編碼規(guī)范 [EB/OL]. http://www.bootcss.com/.

        [4] Sinatra. Sinatra README[EB/OL]. http://www.sinatrarb.com/intro-zh.html.

        [5] Rexml.Rexml Home[EB/OL]. http://www.germane-software.com/software/rexml/.

        精品国产一区二区三区免费 | 国产艳妇av在线出轨| 男男互吃大丁视频网站| 久久精品久99精品免费| 无码人妻精品一区二区三区9厂| 最新国产乱人伦偷精品免费网站| 国产精品无码一区二区在线观一| 精品亚洲成a人在线观看青青| 亚洲午夜福利精品久久| 青青草视频在线免费观看91| 免费在线观看视频播放| 亚洲精品无码久久久久牙蜜区| 精品人无码一区二区三区 | 91精品国产一区国产二区久久 | 亚洲日本国产一区二区三区| 亚洲成av人片女在线观看| 四虎影视永久地址www成人| 久久AV中文综合一区二区| 国产av精品一区二区三区不卡 | 久草视频在线视频手机在线观看| 日本久久精品中文字幕| 日韩av无码社区一区二区三区| 欧美日韩精品一区二区三区高清视频| 污污污污污污污网站污| 国产精品自在在线午夜出白浆| 亚洲av高清一区二区在线观看| 成人无码网www在线观看| 国产jizzjizz视频免费看| 中文字幕亚洲精品第一页| 日韩亚洲精品国产第二页| 亚洲精品久久久久中文字幕一福利| 久久久精品3d动漫一区二区三区| 国产高跟丝袜在线诱惑| 国产精品一区二区三区免费视频| 亚洲第一页综合图片自拍| 亚洲国产99精品国自产拍| 国产精品自拍视频免费观看| 国产电影无码午夜在线播放| 国产av日韩a∨亚洲av电影 | 一级免费毛片| 一本大道综合久久丝袜精品 |