170327078 張合勝
170320075 解哲
部門資料
部門資料根據需求主要包括了部門編號,部門納新人數,部門喜好標籤和部門活動時間。而學生資料根據需求主要包括了學號,績點,部門志願,個人愛好,空閒時間等。主要考慮的因素是學生的唯一性和部門唯一性還有時間與標籤的表達方式。
20個部門:這部分的工作說簡單不簡單,說難不難,我們小組在之前沒有想過使用json來建立txt檔案,於是我們在一番討論之後確定了資料的生成格式。
part022ping-pang
opera
116b
3i5k
6h7f
2d3c
4c3d
3b6f
6245919本團隊的資料格式看上去很是醜陋,且意義不直觀。但我們為了處理方便,只能犧牲可讀性來完成資料輸出。其中學生格式中第一行為學號,第二行為績點,第三行為志願數,第四行為志願部門編號,第五行為愛好標籤數,第六行為愛好標籤,第七行為空閒時間數,第八行為空閒時間標籤。其中空閒時間標籤為字串,其中字母表示星期數,數字表示第幾節課。1.42857
2part19
part2
4football
basketball
opera
ping-pang
106b
3h2e
4a7b
3a6c
6e1a
3k
資料集的建立:
對於資料的建立,我們採用了完全隨機的方式,讓每次的資料都不相同。且讀取採用按行讀取的方式,依據資料順序提取對應的變數,最後用這些資料初始化學生類和部門類。完成資料的生成和讀入。
在這一過程中,最讓我們頭疼的是如何讀入資料,在嘗試了逐詞讀入,逐字元讀入和逐行讀入後,我們選擇了逐行讀入並利用賦值給變數實現了資料的提取。在這部分的問題解決之後,才到本次作業的重頭戲,即學生物件和部門物件的匹配。
匹配過程:
由於時間緊迫,我們先實現了績點匹配這種匹配方式。
變數的命名:字段之間用_連線,如name_part,num_sdt_dpt,類方法的命名和成員變數命名保持統一。
//學生類
class student
student(string id,float grade,vectorinterest,vectorsdt_dpt,vectorfree_time)
//student(id,grade,interest,sdt_dpt,free_time);
vector::iterator iter_dep;
for(iter_dep = sdt_dpt.begin();iter_dep != sdt_dpt.end();iter_dep++)
for(iter_str = free_time.begin();iter_str != free_time.end();iter_str++)
}vector* getsdtdpt()
int getnumfreetime()
int getnumsdtdpt()
void adddepart()
int numdepart()
vectorgetfreetime()
float getgrade()
string getid()
private:
float grade;//績點
int num_depart = 0;//////////////////////////////////
int num_free_time,num_sdt_dpt = 0;
vectorinterest;
vectorsdt_dpt;//學生選擇部門
vectorfree_time;//空餘時間段
string id;
};
注釋明確,便於求改,以下是自動生成學生資訊的函式:
oid studentrandom()
; string free_class[11] = ;
string label_interest[5] = ;
string will_part[20]=;
ofstream out;
out.open("student_input.txt");
for(j = 0;j < n_student;j++)
//生成績點
grade = (rand() % 12) / 2.8;
num_will_part = rand() % 5;//隨機5個以內志願部門
for(i = 0;i < num_will_part;i++)
else vec_will_part.push_back(will_part[random]);
} } num_interest = rand() % 5;//隨機5個興趣標籤
for(i = 0;i < num_interest;i++)
else vec_interest.push_back(label_interest[random]);}}
num_free = rand() % 12;//0~11個空餘時間
for(i = 0;i < num_free;i++)
else vec_free.push_back(route);}}
out << id << '\n';
out << grade << '\n';
out << num_will_part << '\n';
for(itr = vec_will_part.begin();itr != vec_will_part.end();itr++)
out << num_interest<< '\n';
for(itr = vec_interest.begin();itr != vec_interest.end();itr++)
out << num_free << '\n';
for(itr = vec_free.begin();itr != vec_free.end();itr++)
vec_free.clear();
vec_interest.clear();
vec_will_part.clear();
} out.close();
}
我們的匹配方式相對比較好的完成了使用者的需求,每個部門都可以獲得足夠的部員,而使得未能進入部門的學生數量相對較少。這個結果大致符合我們的預期,但是如果用另外的匹配方式,可能獲得更好的結果,但是由於時間的關係,我們沒有對其進行對比實驗。結論就是總體滿足,細節還有改善空間。
這次的作業與上次的結對作業有很大的聯絡,但是在我們進行第二次作業時,並沒有大量使用第一次作業的成果來加速我們的工作進度。這是我們的一大失誤,主要原因是對設計沒有細化,沒有做深入的推敲。在設計工作上的不足,加上在編碼過程中的配合缺乏統一的標準,導致在**分工上有些許的混亂。在之後的作業中,我們需要對這次作業中存在的**風格不一致,編碼進度慢等問題進行解決。
這次的作業工作量大,時間緊迫,在有限的時間裡我們絞勁腦汁也很難完全滿足使用者需求,在檔案可讀性上,我們做了犧牲,用以快速讀入資料。在花了一上午用來生成資料之後,我們又花了大半天來讀入資料。讀入資料又牽扯到檔案的讀入方式與字元處理。導致我們在讀入資料時花費的時間還是比較多的,這也是沒法避免的。
這次的作業給我的感受就是難,時間短,工作量大。而對於結對成員張合勝同學,我的看法是他的程式設計能力強,執行力高,這次作業的核心--------匹配就是由他編碼完成的。我們通過討論明確了資料的結構,合作完成了資訊的讀入。但是,我們隊伍之間的配合還是有一定的改善空間的,尤其是在設計上,我們的想法可以更加成熟,更加具有創新性。我很高興我能通過這次的機會認識張合勝同學,在今後的學習生活中,我也希望能和他有更多的交流和更多向他學習的機會。
第二次結對作業
這個作業屬於哪個課程 王永樂211706201 洪萬真211714312 這個作業要求在 homework 10417 這個作業的目標 作業正文 如下其他參考文獻 我是計算機工程系計科二班王永樂,我的隊友是來自計科一班的洪萬真 從圖中可以看出,直播的方式更讓學生們感到適合,當然,兩種方式各有利弊 因...
第二次結對作業
這個作業屬於哪個課程 軟體工程 福州大學至誠學院 計算機工程系 隊員1211706164 陳德渠 隊員2211706162 蔡澤華 這個作業要求在 第二次結對作業 這個作業的目標 資料視覺化與原型設計 作業正文 正文其他參考文獻 無由於第一次結對時,我們都是第一次開展問卷調查,導致問題的關聯性與實用...
第二次結對作業
這個作業屬於哪個課程 班級的鏈結 馬駿211706121 林連坤211706187 這個作業要求在 第二次結對作業 這個作業的目標 圍繞福州大學至誠學院 停課不停教 停課不停學 的具體實踐,了解網課的授課情況,同學們的學習 情況等等,並採用資料視覺化的方式進行呈現 作業正文 連坤 第二次結隊作業。我...