結對項目第二次做業

結對成員的學號及姓名

031502624 賴志平 博客連接
031502627 王國華html

項目的Github連接

laizhiping/department_studentgit

貼出大家生成的一組最「好」的數據(給出對應連接便可),並詳細說明"數據生成"程序的原理以及大家所考慮的因素。(15')

數據
數據生成原理:這裏數據生成採用了隨機數生成數據,時間:在客觀可行的狀況下來生成合適的時間點,再按照正確的格式輸出到文件中。爲了方便計算只考慮了整點的狀況。tags的生成也是隨機首先要有所有的tags,大概有20個左右。首先要隨機生成tags的數量,在隨機挑選該數量的tags。接着學生報的部門數、部門的名額數量也要依照題目要求隨機生成。github

詳細說明大家數據建模及匹配程序的思路及實現方式。(30')

結構體構成

struct Department{
    string department_no;
    int member_limit;
    string event_schedules[20];
    string tags[20];
    int accept_members[300];
    int accept_members_time[300];
    int member_num = 0;
}department[N];//部門結構體

struct Student{
    string student_no;
    string applications_department[5];
    string free_time[20];
    string tags[20];
    int join_departments = 0;
}student[M];//學生結構體

/*輸出部分存放數據*/
struct Admitted {
    string member[15];
    string department_no;
}admitted[20];

string unlucky_student[300];
string unlucky_department[20];

匹配程序

首先,咱們將匹配分紅兩輪,每次經過不一樣的標準來匹配,每一次匹配都會更加細化和合理。
第一次匹配:按照支援的匹配 第一次匹配依照的是學生的志願。由於部門和學生的匹配中最重要的確定是志願。學生報了志願部門才能將學生錄取。因此咱們採用志願爲條件進行最初的篩選。
遍歷所有學生,根據每一個學生填報的部門志願,即 applications_department,而且在每個部門的accept_members數組裏填入志願加入部門的學生的結構體數組編號。完成按照志願的匹配。
第二次匹配:按照時間的匹配 第二次匹配是依照學生空閒時間和部門活動時間來進行匹配。依次掃描預錄取的學生,經過分析時間的字符串計算出學生的空閒時間和部門活動時間的重複時間,並記錄在數組中。以後進行排序,以此決定錄取的學生優先級。選擇最靠前的學生錄取。決定錄取時將部門序號填入學生結構體中,將學生序號填入部門結構體中,方便輸出。算法

大家在代碼遵循了必定的規範,在博客中描述結對團隊遵循的代碼規範,並截取部分關鍵代碼佐證說明。(5')

代碼規範
部分代碼規範:
代碼佐證:
json

結果評估。對於程序的匹配結果,大家是否滿意?請對大家程序處理結果進行分析。(20')

匹配結果:點擊

數據按照要求的格式生成,其中學生匹配先按照志願分組,再進行時間知足毒的排序,用排序結果來決定學生是否被錄取。空閒時間和部門活動時間徹底不重合的學生將會被淘汰。故學生加入部門必定是合理的。可是仍是有一些不足之處。好比說減去學生空閒時間中已加入部門佔用的時間,以及學生所加的部門數。還有tags,這個興趣標籤能夠做爲學生錄取優先級的參考,可是因爲時間關係,咱們在前面的部分佔用太多時間,並且這些功能過於複雜,最後仍是放棄了,只採起了按照志願和時間爲條件來匹配。原先咱們考慮過一些特殊狀況,好比說學生沒有進入部門的話給學生推薦一些部門,將學生加入符合興趣標籤的部門。可是這樣很明顯是不符合實際的要求的,若是這麼作的話這位同窗可能會罵娘數組

已經嘗試過結對編碼,你必定不少話要說。請發表結對感覺,以及兩我的對彼此結對中的閃光點或建議的分享。(10‘)

本次結對仍是學到了不少東西的。然而本身作的並很差。因爲本身一直搞不懂 json ,因此這部分大多都是對方作的。我主要作的是配對的算法部分。實際上不是很難。可是因爲本身不多練習,很難上手,寫出來的代碼總會有各類各樣的錯誤。我認爲這是本身應當增強的。
在結對中,你們一塊兒完成項目,因此一點都不能懈怠。由於本身而拖累到兩我的時會很內疚。因此我會盡可能的聯繫,讓本身儘快的熟練打代碼,再也不由於本身的一些低級問題拖累到整個項目的進度。
兩我的各自寫代碼必定要提早交流好,咱們由於一些錯誤走了不少彎路,屢次修改代碼。經過此次做業感覺到兩我的必定要溝通好,明確各自的任務,及時溝通進度。能夠大大提升效率,減小走彎路的次數。app

相關文章
相關標籤/搜索