結隊專案 第二次作業

2022-03-09 01:00:52 字數 4308 閱讀 5373

1、結對資訊:

姓名學號

班級王欽澤

031502232

z吳曉暉

031502235

k專案github請戳

專案**及簡介請戳

2、輸入資料生成:

原始碼及example請戳

輸入資料程式原理簡要:

2、資料建模及匹配程式實現:
資料建模及儲存方式:

首先,通過judgearray矩陣存放某學生是否申請某部門的true or false 標誌,之後利用satisficalarray滿意度匹配矩陣遍歷學生和部門物件,檢查某學生和某部門的匹配程度,轉化成int值存入匹配矩陣中,可根據個人給面試時間匹配或者興趣標籤配對設定乙個權值,來表示兩者重要性強弱,我這裡是綜合考慮,並且如果學生的時間完全包含部門的時間的時候,即在某個部門面試時間段學生完全有空,則時間所加的匹配度更大,如果是部分包含,則相對較小一些,如若兩者交集完全為空,則貢獻度為0。

匹配程式實現思路:

基於以上相關資料儲存和資料處理的準備,下一步就該進行部門和學生的匹配了。這裡我的思路是這樣的,以學生為主導物件,一共有三輪選擇。第一輪遍歷所有學生,並且在其所申請部門中選擇匹配度最大的優先入選,部門不滿則優先預選,如果部門滿了,則與部門中已經預選上的學生的匹配度進行比較,大的替換預選中最小匹配度的學生,這樣子做到學生方面優先進入意向部門裡面匹配度最大的部門,而部門方面則優先選擇匹配度最大的學生。第二輪和第一輪步驟和演算法是一樣的,對於經過第一輪還未被選上的學生進行第二匹配度競選,即選擇所選部門中第二匹配部門預選,以下步驟便和第一輪是一樣的,做到匹配度優先。而所謂的第三輪,則是對經過第一,第二輪還未被選上的學生,對其剩下所選擇部門進行最大能力匹配,即如果該部門還有空位置便直接入選,不進行匹配度配比,盡可能滿足大多數學生都能夠選到部門。

ps: 偶然發現此題和某個數學模型很像,具體參考層次分析模型)

具體流程:
3、**規範:
什麼是**規範?隨著公司的業務發展,專案越來越多,越來越大,複雜性也越來越高。查詢乙個bug變得越發抓狂,因此便需要有一定的**規範,提高**的易讀性,加快程式設計以及查詢bug的效率。

常見的一些**規範,查詢了一些大佬部落格,發現一些常見的開發規範。 ① **規範、如何寫出好** ② 再談開發中的**規範

在本次編碼中,由於我是個新手,程式設計經驗也不夠豐富,因此寫出來的**大多是面向過程式的最樸素的**(這點希望以後可以慢慢改進,能夠用物件導向的四維審視世界),比如我最初寫出來的**全部都是集合到乙個main函式中的,完全的面向過程,難以讀懂,而且**有冗餘,又拖拉又長,當然常見的縮排格式以及注釋是有的,看了隊友的程式**的我才意識到這一點,因此我又著手將main函式中的一些資料處理,匹配程式等獨立分割成乙個個類,通過類物件例項化呼叫方法。

**如下:

for (int i = 0; i < readjson.studentlength; i++) 

} //尋找最大匹配度的部門

}if (!flag0) else //部門預選不滿直接塞進去

else

}if (max > min) //匹配度比最小的大則替換

} //部門預選滿了先比較

}} //第一輪預選,學生方面優先進入意向部門裡面匹配度最大的部門,部門方面優先選擇匹配度最大的學生

其中一些if else沒有注釋,flag沒有注釋,可能比較難懂,陣列變數命名按照英文格式命名,沒有新增_等分割符號。一些希望以後在**程式設計中逐步改進,形成自己的程式設計習慣。

「我無法想象這些連最最基本的程式設計素養都達不到的人,在程式設計方面會很優秀。」

1.這些規範都是官僚制度下產生的浪費大家的程式設計時間、影響人們開發效率, 浪費時間的東西。

2. 我是個藝術家,手藝人,我有自己的規範和原則。

3.規範不能強求一律,應該允許很多例外。

4.我擅長制定編碼規範,你們聽我的就好了。

這裡發表一下個人看法:第一點,前期學習**規範可能會相對比較枯燥和無聊,但是在大的專案開發或者團隊之間,統一**規範是一件非常好的事情,提高**在團隊之間的易讀性,加強團隊之間的交流,在軟體開發過程中常常能達到事半功倍的效果。至於第二點,我覺得藝術家和手藝人可以有自己的特色,但是軟體開發不是個人的事情,涉及到後期的維護和更新,不能只強調自己的規範和原則,否則藝術家和手藝人也僅僅只是活在自己世界中的「藝術人」罷了。第三點,每個公司有每個公司的**規範標準,規範的不一律性有很多例子,可以有例外,但大體要符合團隊**標準。第四點,每個人主張的**規範一般都是不一樣的,同樣的話也適用於團隊,團隊需要與外界交流,也必須遵循外界一些普遍的**規範,而不是只活在自己的團隊中,那樣是沒有多大可發展性的。

4、結果評估:
我們兩個人一共寫了兩種想法的實現,第一種是以上所述的那種,由於第三輪選擇的很大程度上盡最大能力的分配,因此有部分可能不盡如人意,比如匹配度小的學生進入某部門,而匹配度大的學生則只能在門外觀望。過分強調了第一志願和第二志願的重要性。而第二種想法是隊友提出來的:本程式用於分配申請部門學生

分配方案如下:

1輪:分配第一志願,篩選掉第一志願中不能滿足部門活動時間有空的

如果部門人數未超過成員上限:分配第二志願,篩選掉第二志願中不能滿足部門活動時間有空的

以此類推

2輪:如果部門沒有超過成員上限,按個人興趣以及滿足部門活動時間分配學生

3輪:如果部門沒有超過成員上限,按能否滿足部門活動時間分配學生

相對來說更加人性化並且合理,既強調了時間的重要性也強調了第一志願第二志願以及個人興趣的重要性,這樣子得出的資料更加好一些。

注:國慶前討論此題該怎麼做,比如json解析,國慶時,兩個人各自實現了不同的分配方案。

隊友部落格清戳

5、結隊心得以及專案總結:

我的心得及總結:

首先,這次結隊程式設計讓我學會了很多,明白了乙個小團隊的重要性以及**規範的重要性, 又讓我對專案程式設計過程有了一定的體會和理解。不得不說,軟工實踐真是磨礪乙個人的最好的方式了。以上很多任務具和外掛程式的使用,如果不是經歷這次結隊程式設計,我是不可能去了解的,在此非常感謝這次實踐。總結一下在這次結隊程式設計中所得:

對於乙個**經驗不是很豐富的萌新的我,開始嘗試使用eclipse這款強大的軟體進行程式設計,熟悉了其中一些常用快捷鍵的使用,參考自部落格。

由於團隊程式設計中要求一定的**規範,因此在上述中參考了並且學習了一些常見的**規範,對**規範有一定的理解和感受,相信以後會經常和**規範打交道的~。詳情可見上述第三點。

經過**隊友的**,得到隊友的指點,體會了物件導向的重要性,希望能加強自己編碼能力,擺脫樸素的面向過程,更快擁有物件導向的思想和程式設計習慣。

通過相關部落格以及慕課網的學習熟悉了json資料格式(一種輕量級的資料交換格式)以及常見的使用方式(詳情請見),了解了json更為強大的gson,留待以後進一步學習。

學習了生成指定範圍不重複隨機數的一種非常快速的演算法,大開眼界。

在打包jar包的時候,發現用eclipse自帶的打包工具不能將外部依賴包一起上傳,經過網上查閱,最終學習並且使用fat jar 這款打包外掛程式,非常好用而且方便。

在程式設計結束後,利用jar包生成exe可執行檔案。參考自部落格

結隊專案 第二次作業

031502533 熊立強 031502538 俞鋆 作業github 最好的資料及分析 資料 隨機生成的資料分布教均勻,最大差距在20左右。時間隨機生成 for tloop 0 tloop讀取檔案,用cjson解析檔案 string d ifstream infile infile.open in...

結隊專案 第二次作業

資料主要是生成標籤和學生的空閒時間段,學生和部門的編號取值是依次遞增的,所以在定義的時候先自定義10個標籤,部門的活動時間和學生的空閒時間也是自定義一天中的4個時間段,然後搭配上一周七天的時間進行隨機匹配。定義 實現 處理資料 考慮的因素 變數命名 段對齊 加上適當的注釋 寫上一段 後可以利用pri...

第二次結隊作業

這個作業屬於哪個課程 軟體工程 馬駿211706121 林連坤211706187 這個作業要求在 第二次結對作業 這個作業的目標 圍繞福州大學至誠學院 停課不停教 停課不停學 的具體實踐,了解網課的授課情況,同學們的學習 情況等等,並採用資料視覺化的方式進行呈現。作業正文 隨筆我是來自電腦科學與技術...