專案---考評系統排課演算法分析

weixin_33912246發表於2017-05-22

         第一次參加專案。跟著師姐做考評系統需求分析,將考評分為:教務、後臺、教師、學生四個角色。我們做教務,做需求和做開發的差別在於。搞開發寫程式會越來越上癮。做需求就是一直在給大腦做思維體操,常常要推翻自己之前的想法,再換角度去分析。看是否這個想法流程是否有漏洞,非常有意思。也是這個過程讓我對於“演算法”這個東西產生了興趣。

    言歸正傳,這次教務方面我們花了非常大的精力在給學生安排考場上,雖然最後決定不把這個功能加到ITOO考評系統中。拿出來分享一起做做思維體操也是非常有意思的。

 

前提:

   ITOO系統有一個功能是要給高校在考試周分配考場,參考廊坊師範學院,做出下面前提:

   1、考試分為專業課(類似於電子專業的通訊原理、訊號與系統)和公共課(類似於VB、馬克思、大學英語等)

   2、兩種型別的考試不在同一個時間段內考。

   3、參與分配考場的角色有大院教務處和二級學院的教祕。

   4、分配完考場之後要把監場老師分配好。

   5、考場分配好之後會以郵件或者ITOO 移動端公告的形式發給學生。

 

    因為這是個新的功能,在30.和3.1版本號中都沒有,並且這個時間段內,學校的教務處和各個學院老師都沒有在。我們僅僅能自己去想這個情況。先想好方案,詳細用哪個最後來決定。

    暫定為兩套方案:

    No1、各個專業的考場都由教務處來進行分配

    No2、教務處負責分配教室給二級學院,二級學院來為詳細科目分配教室。

 

   假設拋開實現只從需求來分析:

   方案一教務處的職責過於仔細,詳細到每一個專業每門課程的考試都須要考慮,這樣有點第一版機房收費系統依照視窗進行程式設計的意思。耦合性太強了。相對來說另外一種方案。將職責細分,自己做自己職責範圍內的工作,就像是我們機房重構時候一樣,分層的思想就用到了現實其中。思考我們電子專業的考試三年來基本上考試的時候教室所有打亂。我認為廊坊師範學院的考場是由大院統一安排的,這樣子從物件導向的角度來分析的話。有些不合理。職責沒有分配下去。

可能他們有自己的辦法,這個過程我想在開學後去瞭解一下,便於以後ITOO強大了把這個分考場的功能增加進去。

 

    以下針對另外一種分配方法進行分析:

   (1)大院依據學院人數分配教室給二級學院。比方考試周物電學院佔用十教一層和二層。文學院佔用十教其它教室。數信學院佔用11教2樓3樓北側機房等。

    至此,教務處的任務已經完畢。

   (2)到了二級學院,將教室用作考場,第一個劃分標準是什麼?比方依照年級劃分,也能夠依照專業劃分當然能夠依照科目劃分。綜合比較之後,依照科目劃分是最標準的劃分方法,why?依照科目劃分,和考試科目同步,劃分思路清晰;其次,假設依照專業劃分,可能出現兩個相似專業上同一門課,這樣會有一種情況:同一門考試會出現兩個專業先後進行考試。當然依照年級劃分也會出現此種狀況,就像電子專業大二專科的學生會和大三本科的同學同一時候學習“訊號與系統”、“電子測量”、“通訊原理”等科目。因此。依照專業或者年級來劃分,非常大可能會出現漏題現象。因此,依照考試科目劃分是最好的辦法。


    詳細樣例,比方:文學院只分到了三個教室A、B、C。

但是四個年級N個專業一共同擁有5門課程,怎麼辦?

 

    情況例如以下:教室A、B、C分別坐80人,100人,120人

    古代文學有77人考試

    現代文學有90人考試

    當代小說有118人考試

    高等數學有140考試

    大學語文60人考試


    此處須要用到的一個演算法即:運籌學中的“尋找最優解”演算法。

                

            這個演算法是這個過程的關鍵所在,將詳細的科目分配到“死”的教室中。怎樣最優(考試人數要少於教室容納人數,儘量讓每一個教室裡分配的科目數量平均等),這步操作的物件不過教室和課程,將其分配到最合理之後,就把分配考試的範圍縮小到了最小程度。(這個過程做到程式裡,就是自己主動分配的過程,監場教室也會自己主動進行分配,假設沒有演算法的轉化,是須要人工來做的。

    如圖:

            

  (相當於在接下來的操作中,分析問題的核心就要放到每一個詳細的教室中)

           

          最後的一個步驟就是為每一個教室裡的科目安排考試時間,從需求角度來說。避免一個人在同一個時間段內出現多門考試的情況;避免一個人的幾場考試時間過於密集就OK了。這個過程能夠自己主動也能夠手動,便於老師調整監考時間或者暫時事件的處理。至此,整個過程結束,教祕能夠通過單擊button將考場資訊傳送到監場教室和同學的郵件或者手機端。


   注意:一、找最優解的演算法要運用靈活

         二、出現類似“高等數學”這樣須要將人拆分到兩個考場的情況。確保同一時候考試。

         三、避免一個人在同一個時間段內出現多門考試的情況。

         四、這樣子就能將四個年級之間的考試同一時候進行,而不是先是一個年級考。再是還有一個年級考這樣了。

相當於考試之間的空餘時間可以確保非常充分。讓大家準備好考試。

 

    總體來說:

        1、大院分配固定教室給二級學院

        2、二級學院為教室分配考試科目

        3、為考試科目分配時間、避免衝突(同一時候為科目分配監考教師)

    也就是說範圍從二級學院到教室到該教室內的科目,層次性非常強,之前理的思路非常多方面都存在或多或少的弊端,這樣子每一層都只須要考慮該層所辦的事情。然而能做到這點。是由於準確的將該層的主要物件進行了非常好的抽象。

 

    通過這個分配考場的小練習。做需求更要有全域性觀,也通過這個樣例,我找到了我畢業設計的課題,也在或多或少的搜尋資料,希望我的表達可以更加流暢、思路可以更加清晰。

相關文章