Documente Academic
Documente Profesional
Documente Cultură
Main Window:
Males Choice:
Females Choice:
CODE LISTING:
/* Author: Nick Gabel
* This Class calls the Gui class for Stable Matching
*/
import java.io.FileNotFoundException;
public class StableMatchingCaller {
public static void main(String args[]) throws FileNotFoundException{
StableMatchingGui mainGUI = new StableMatchingGui();
}
}
}
return couples;
currIndex = getFemaleIndex(m);
while(!womenArray[currIndex].isEngaged()){
preferenceLoop:
for(int i = 0 ; i < numPeople ; i++){
candidate =
menArray[getMaleIndex(womenArray[currIndex].preferences[i])];
if(!candidate.isEngaged()){
engage(candidate.name,m);
break preferenceLoop;
}
if(currIndex < candidate.getFianceeIndex()){
formerFianceeIndex = candidate.getFianceeIndex();
womenArray[formerFianceeIndex].setEngaged(false);
womenArray[formerFianceeIndex].setFianceeIndex(numPeople+1);
engage(candidate.name,m);
break preferenceLoop;
}else
continue;
}
}
case 'f':
numEngaged=0;
for(int i = 0 ; i < numPeople ; i++){
if(womenArray[i].isEngaged())
numEngaged++;
else
continue;
}
if(numEngaged==numPeople)
return true;
else
return false;
}
}
public static int getMaleIndex(String targetName){
int index;
index = 0;
for(int i = 0; i < numPeople ; i++){
if(menArray[i].getName().equalsIgnoreCase(targetName)){
index = i;
return index;
}
else
continue;
}
return index;
}
public static int getFemaleIndex(String targetName){
int index;
index = 0;
for(int i = 0 ; i < numPeople ; i++){
if(womenArray[i].getName().equalsIgnoreCase(targetName)){
index = i;
return index;
}
else continue;
}
return index;
}
}
}
//South Container
numPeople = new JLabel("There are "
+ StableMatchingEngine.numPeople*2 + " people.");
SContainer.setLayout(new FlowLayout());
SContainer.add(numPeople);
genderBG.add(maleB);
genderBG.add(femaleB);
SContainer.add(maleB);
SContainer.add(femaleB);
SContainer.add(match);
//North Container
NContainer.setLayout(new FlowLayout());
maleNames = StableMatchingEngine.getMaleNames();
femaleNames = StableMatchingEngine.getFemaleNames();
femaleList = new JList(femaleNames);
maleList = new JList(maleNames);
maleList.setLayoutOrientation(JList.VERTICAL);
femaleList.setLayoutOrientation(JList.VERTICAL);
maleList.setVisibleRowCount(-1);
femaleList.setVisibleRowCount(-1);
maleListScroller = new JScrollPane(maleList);
femaleListScroller = new JScrollPane(femaleList);
maleListScroller.setPreferredSize(new Dimension(200,100));
femaleListScroller.setPreferredSize(new Dimension(200,100));
NContainer.add(maleListScroller);
NContainer.add(femaleListScroller);
//Center Container
CContainer.setLayout(new FlowLayout());
malePrefList
= StableMatchingEngine.getMalePrefList();
malePrefJList
= new JList(malePrefList);
malePrefJListScroller = new JScrollPane(malePrefJList);
femalePrefList
= StableMatchingEngine.getFemalePrefList();
femalePrefJList
= new JList(femalePrefList);
femalePrefJListScroller = new JScrollPane(femalePrefJList);
malePrefJList.setLayoutOrientation(JList.VERTICAL);
femalePrefJList.setLayoutOrientation(JList.VERTICAL);
malePrefJList.setVisibleRowCount(-1);
femalePrefJList.setVisibleRowCount(-1);
malePrefJListScroller.setPreferredSize(new Dimension (200,100));
femalePrefJListScroller.setPreferredSize(new Dimension (200,100));
CContainer.add(malePrefJListScroller);
CContainer.add(femalePrefJListScroller);
//Main Frame
mainFrame.setTitle("Engineer's Guide to Choosing a Spouse");
mainFrame.setDefaultCloseOperation(EXIT_ON_CLOSE);
mainFrame.setSize(640,320);
mainFrame.setLocationRelativeTo(null);
mainFrame.setLayout(new BorderLayout());
mainFrame.add(NContainer,BorderLayout.NORTH);
mainFrame.add(EContainer,BorderLayout.EAST);
mainFrame.add(WContainer,BorderLayout.WEST);
mainFrame.add(SContainer, BorderLayout.SOUTH);
mainFrame.add(CContainer, BorderLayout.CENTER);
mainFrame.setVisible(true);
match.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(maleB.isSelected()){
StableMatchingEngine.resetEngagements();
StableMatchingEngine.matchAll('m');
JOptionPane.showMessageDialog(mainFrame,
StableMatchingEngine.getCouples());
}
if(femaleB.isSelected()){
StableMatchingEngine.resetEngagements();
StableMatchingEngine.matchAll('f');
JOptionPane.showMessageDialog(mainFrame,
StableMatchingEngine.getCouples());
}
}
}
});