日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

结对项目第二次作业

發(fā)布時間:2024/4/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 结对项目第二次作业 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.結(jié)對成員的學(xué)號及姓名: 031502641-鄭珍發(fā) 031502513-黃逸飛

2.首頁給出項目的Github鏈接https://github.com/emperor-fa/matching

3.貼出你們生成的一組最“好”的數(shù)據(jù)(給出對應(yīng)鏈接即可),并詳細說明"數(shù)據(jù)生成"程序的原理以及你們所考慮的因素。

  • 最“好”的數(shù)據(jù)鏈接
  • 數(shù)據(jù)生成"程序的原理:以學(xué)生(300)數(shù)據(jù)為例:先生成學(xué)生的空閑時間的開始時間點(我參照例子設(shè)置個數(shù)為8,時長為2小時);還有星期數(shù)組,部門號碼數(shù)組(20)和標(biāo)簽數(shù)組(10)。生成空閑時間:首先生成一個7-18的隨機數(shù),代表學(xué)生freetime的個數(shù),定義一個星期7*開始時間8的數(shù)組,代表空閑時間,為了不重復(fù),定義一個數(shù)組的0-55數(shù)組,表示空閑時間的序號,然后隨機選取0-55數(shù)組的序號,確定星期和時間,選定則在0-55數(shù)組中刪去;生成學(xué)號:固定前幾個數(shù)字加上學(xué)生序號加1;生成志愿部門:先隨機生成一個1-5的數(shù)組,代表志愿部門的個數(shù),然后隨機生成0-19的序號,確定部門號碼,選定則刪去該序號;生成學(xué)生標(biāo)簽:先生成一個2-4的隨機數(shù),代表學(xué)生標(biāo)簽個數(shù),然后隨機生成0-9的序號,確定標(biāo)簽,選定則刪去該序號。 部門數(shù)據(jù)的生成與學(xué)生類似。
  • 我們所考慮的因素主要有數(shù)據(jù)隨機性與不重復(fù)性和實現(xiàn)難度。

4.詳細說明你們數(shù)據(jù)建模及匹配程序的思路及實現(xiàn)方式。

  • 首先得先讀數(shù)據(jù):我并未用到j(luò)son格式的讀取,因為剛開始并未去深究json,只注意到例子。所以按照自己的想法按行讀取,以“”"students": [“”作為學(xué)生數(shù)據(jù)讀取標(biāo)志,以“{”作為一個學(xué)生數(shù)據(jù)的開始標(biāo)志,以“"free_time": [”為學(xué)生空閑時間讀取標(biāo)志,以“"applications_department": [”作為學(xué)生志愿部門的讀取標(biāo)志,以 “"tags": [”作為學(xué)生標(biāo)簽讀取標(biāo)志,以“],”或“]”為以上的讀取結(jié)束標(biāo)志,在這些開始標(biāo)志和結(jié)束標(biāo)志之間就是要讀的數(shù)據(jù);以“"student_no":”為學(xué)號讀取標(biāo)志,以“},”作為一個學(xué)生數(shù)據(jù)讀取結(jié)束標(biāo)志,以上數(shù)據(jù)都存進一個學(xué)生類的實例中。部門數(shù)據(jù)的讀取與學(xué)生類似。
  • 接下來就是匹配:我的想法是按照學(xué)生順序,把每個學(xué)生的志愿從高級到低級依次加入志愿部門,若低級志愿部門的活動時間與高級志愿部門的活動時間沖突,則低級志愿部門不加入(事先比較各部門的活動時間,得到一個沖突二維數(shù)組),每加入一個部門則join+1。待300個學(xué)生都加入部門后,對部門進行掃描,若加入人數(shù)多于限制人數(shù),則按照興趣,活動時間的優(yōu)先順序進行排序(為興趣標(biāo)簽相同個數(shù)和活動時間與空閑時間相同個數(shù),時間的比較分為提取星期的比較和提取時間并轉(zhuǎn)為數(shù)字的比較),刪除后面的人,刪除的人join-1。
  • 最后是輸出:先掃描學(xué)生,把學(xué)生的join為0的學(xué)號輸出。再掃描部門,輸出member中的學(xué)號。

5.你們在代碼遵循了一定的規(guī)范,在博客中描述結(jié)對團隊遵循的代碼規(guī)范,并截取部分關(guān)鍵代碼佐證說明。

  • 代碼規(guī)范:我們將頭文件與源文件分開,頭文件定義類和聲明函數(shù)和全局變量,源文件又以功能的不同分成幾個,在main中定義全局變量,其他相關(guān)函數(shù)定義在用到該函數(shù)的源文件中。
  • 部分關(guān)鍵代碼
#ifndef HEAD_HPP #define HEAD_HPP #include<string> #include<vector> using namespace std; void read(); void time_conflict(); void match(); void output(); class Student { public://Student();vector<string> free_time; //空閑時間string student_no; //學(xué)號vector<string> application_department; //志愿部門vector<string> tags; //學(xué)生標(biāo)簽int join; //加入部門數(shù) }; class Department { public:vector<string> event_schedules; //常規(guī)活動int member_limit; //限制人數(shù)string department_no; //部門編號vector<string>tags; //部門標(biāo)簽vector<int>member; }; extern Student stu[300]; extern Department depart[20]; extern int conflict[20][20]; #endif

6.結(jié)果評估。對于程序的匹配結(jié)果,你們是否滿意?請對你們程序處理結(jié)果進行分析。

  • 程序的匹配結(jié)果,我們還算滿意。
  • 以發(fā)布例子為例,按照我的程序,處理結(jié)果是,未加入部門的學(xué)生為十幾個,未收到人數(shù)的部門為0,部門招收人數(shù)不定但未超過限制人數(shù)。結(jié)果分析:我認為是因為招收沒有規(guī)則,只要有報就可以加入,所以未收到人數(shù)的部門為0,但是要求該部門不與更高級志愿活動沖突,這樣學(xué)生報部門較少的學(xué)生可能只加入一個部門或部門招收的人數(shù)不滿限制人數(shù);根據(jù)興趣,活動時間的優(yōu)先級排序,一些所加入部門較少的學(xué)生被刪除的話該學(xué)生加入部門人數(shù)就為0。該程序并未進行二次遍歷,即比如一個學(xué)生先加入第一個志愿,本可以加入第二個志愿但與第一個志愿沖突不加入,然后由于條件差被第一志愿剔除,本可加入第二志愿,導(dǎo)致第一志愿第二志愿都沒加入,但是我想如果再遍歷一遍,那么可能每個部門都是近滿的,這樣也不是很好。

7.已經(jīng)嘗試過結(jié)對編碼,你一定很多話要說。請發(fā)表結(jié)對感受,以及兩個人對彼此結(jié)對中的閃光點或建議的分享。

  • 這是第二次結(jié)對作業(yè),感受良多。由于遇到國慶,并無法按照老師說的那樣一人在前面敲代碼,一人在后面看。但是我們還是利用現(xiàn)代通信工具QQ進行實時交流和討論。先說一下優(yōu)點吧,優(yōu)點在于,結(jié)對在編碼遇到問題時可以互幫互助,比如遇到困難時可以一起思考討論提出解決方案,而且在交流過程中可以找出對方的想法或方案中不足的地方并進行完善,在編碼過程中也可以找到對方忽略的地方和未發(fā)現(xiàn)的錯誤。再說說缺點,在交流過程中對方不明白自己的想法時很難去描述清楚,即想法交流困難,還有就是在方案觀點不同等發(fā)生的矛盾,還有就是編碼習(xí)慣和方式的不同很難改變和融合。
  • 閃光點和建議的分享:比如原本時間的比較是直接進行字符串的比較,后來發(fā)現(xiàn)時間有個位數(shù)如8,所以無法進行字符串比較,最后的建議結(jié)果是逐個字符提取,根據(jù).和~判斷開始時間和結(jié)束時間并轉(zhuǎn)化為數(shù)字,如8:00變成800;還有在如何判斷學(xué)生的志愿之間的活動產(chǎn)生沖突,若每個學(xué)生的志愿部門比較一下活動時間進行判斷那非常麻煩,最后的建議結(jié)果是先判斷各個部門之間的沖突關(guān)系,并將其存入二維數(shù)組,這樣節(jié)省了很多時間。

轉(zhuǎn)載于:https://www.cnblogs.com/emperor-fa/p/7642124.html

總結(jié)

以上是生活随笔為你收集整理的结对项目第二次作业的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。