Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
САПИС, расчетка, вар 4.doc
Скачиваний:
36
Добавлен:
01.04.2014
Размер:
133.63 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ «БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ»

КАФЕДРА: Экономической информатики

ФАКУЛЬТЕТ: Инженерно-экономический

Контрольная работа

по предмету

«Системный анализ и проектирование информационных систем»

Вариант 4

ВЫПОЛНИЛА: Козлова Е. С. группа 872302

ПРОВЕРИЛА: Живицкая Е. Н.

МИНСК 2011

Содержание

Описание задачи…………………………………………………………………..3

Решение задачи (ручной способ)………………………………………………...4

Программа по решению задачи (листинг кода)…………………………………5

Руководство пользователя………………………………………………………11

Выводы…………………………………………………………………………...14

Описание задачи

Городское правление выделило средства на благоустройство города. 3-м экспертам были предложены следующие альтернативы:

1) озеленение территории города;

2) постройка и ремонт детских площадок;

3) ремонт дорог и тротуаров;

Матрица оценок экспертов:

Решить методом последовательных сравнений.

Решение задачи (ручной способ)

Дана матрица оценок экспертами 3-х альтернатив:

  1. Расположим уели в виде массива в порядке убывания их важности:

Z1Z3Z2.

Назначим предварительные оценки цели:

p1=100, p3=60, p2=30.

  1. Выполним сравнение целей и корректировку их оценок:

Z1↔(Z3&Z2)

Z1 лучше, чем Z3 и Z2. (Z3 + Z2 = 90) < (Z1 = 100).

Следовательно, корректировка не нужна.

  1. Вычислим веса целей:

W1 = 100/(100+60+30) = 0,526

W3 = 60/(100+60+30) = 0,316

W2 = 30/(100+60+30) = 0,158

Следовательно, самой предпочтительной является 1-я альтернатива «озеленение территории города». Затем следует 3-я альтернатива «ремонт дорог и тротуаров». Наименьшее предпочтение отдаётся 2-й альтернативе «постройка и ремонт детских площадок».

Программа по решению задачи (листинг кода)

MetodPosledSravn.java

package sapis_kr;

import java.text.DecimalFormat;

import javax.swing.JOptionPane;

public class MetodPosledSravn extends javax.swing.JFrame {

public MetodPosledSravn() {

initComponents();

}

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jLabel1 = new javax.swing.JLabel();

jLabel2 = new javax.swing.JLabel();

jLabel3 = new javax.swing.JLabel();

jTextField1 = new javax.swing.JTextField();

jLabel4 = new javax.swing.JLabel();

jTextField2 = new javax.swing.JTextField();

jLabel5 = new javax.swing.JLabel();

jTextField3 = new javax.swing.JTextField();

jLabel6 = new javax.swing.JLabel();

jLabel7 = new javax.swing.JLabel();

jLabel8 = new javax.swing.JLabel();

jLabel9 = new javax.swing.JLabel();

jLabel10 = new javax.swing.JLabel();

jLabel11 = new javax.swing.JLabel();

jLabel12 = new javax.swing.JLabel();

jLabel13 = new javax.swing.JLabel();

jLabel14 = new javax.swing.JLabel();

jLabel15 = new javax.swing.JLabel();

jButton1 = new javax.swing.JButton();

jLabel16 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jLabel1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

jLabel1.setText("Метод последовательных сравнений");

jLabel2.setFont(new java.awt.Font("Tahoma", 2, 11)); // NOI18N

jLabel2.setText("Предварительные оценки:");

jLabel3.setText("Цель 1:");

jLabel4.setText("Цель 2:");

jLabel5.setText("Цель 3:");

jLabel6.setFont(new java.awt.Font("Tahoma", 2, 11)); // NOI18N

jLabel6.setText("Скорректированные оценки:");

jLabel7.setText("Цель 1:");

jLabel8.setText("Цель 2:");

jLabel9.setText("Цель 3:");

jLabel10.setFont(new java.awt.Font("Tahoma", 2, 11)); // NOI18N

jLabel10.setText("Веса целей:");

jLabel11.setFont(new java.awt.Font("Tahoma", 2, 12)); // NOI18N

jLabel11.setText("______________________________________________________");

jLabel12.setText("Цель 1: W1=");

jLabel13.setText("Цель 2: W2=");

jLabel14.setText("Цель 3: W3=");

jLabel15.setFont(new java.awt.Font("Tahoma", 3, 11)); // NOI18N

jLabel15.setText("Предпочтение:");

jButton1.setText("Рассчитать");

jButton1.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(java.awt.event.MouseEvent evt) {

jButton1MouseClicked(evt);

}

});

jLabel16.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(80, 80, 80)

.addComponent(jLabel1)

.addContainerGap(83, Short.MAX_VALUE))

.addGroup(layout.createSequentialGroup()

.addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)

.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)

.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()

.addComponent(jLabel5)

.addGap(18, 18, 18)

.addComponent(jTextField3))

.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()

.addComponent(jLabel4)

.addGap(18, 18, 18)

.addComponent(jTextField2))

.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()

.addComponent(jLabel3)

.addGap(18, 18, 18)

.addComponent(jTextField1))

.addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING)))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 58, Short.MAX_VALUE)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jLabel6)

.addComponent(jLabel7)

.addComponent(jLabel8)

.addComponent(jLabel9))

.addGap(47, 47, 47))

.addGroup(layout.createSequentialGroup()

.addContainerGap()

.addComponent(jLabel11)

.addContainerGap(12, Short.MAX_VALUE))

.addGroup(layout.createSequentialGroup()

.addContainerGap()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jLabel13)

.addComponent(jLabel10)

.addComponent(jLabel14)

.addComponent(jLabel12)

.addGroup(layout.createSequentialGroup()

.addComponent(jLabel15)

.addGap(18, 18, 18)

.addComponent(jLabel16, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE)))

.addContainerGap(155, Short.MAX_VALUE))

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addContainerGap()

.addComponent(jLabel1)

.addGap(18, 18, 18)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel2)

.addComponent(jLabel6))

.addGap(18, 18, 18)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel3)

.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jLabel7))

.addGap(18, 18, 18)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel4)

.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jLabel8))

.addGap(18, 18, 18)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel5)

.addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jLabel9))

.addGap(18, 18, 18)

.addComponent(jButton1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jLabel11)

.addGap(13, 13, 13)

.addComponent(jLabel10)

.addGap(18, 18, 18)

.addComponent(jLabel12)

.addGap(18, 18, 18)

.addComponent(jLabel13)

.addGap(18, 18, 18)

.addComponent(jLabel14)

.addGap(18, 18, 18)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)

.addComponent(jLabel16, javax.swing.GroupLayout.DEFAULT_SIZE, 14, Short.MAX_VALUE)

.addComponent(jLabel15, javax.swing.GroupLayout.Alignment.LEADING))

.addContainerGap(20, Short.MAX_VALUE))

);

pack();

}// </editor-fold>

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {

int p1 = 0, p2 = 0, p3 = 0;

try

{

if(jTextField1.getText().equalsIgnoreCase("") || jTextField2.getText().equalsIgnoreCase("") ||

jTextField3.getText().equalsIgnoreCase(""))

{

JOptionPane.showMessageDialog(this, "Нужно заполнить все поля предварительных оценок!");

return;

}

p1 = Integer.parseInt(jTextField1.getText());

p2 = Integer.parseInt(jTextField2.getText());

p3 = Integer.parseInt(jTextField3.getText());

if(p1<0 || p2<0 || p3<0)

{

JOptionPane.showMessageDialog(this, "Предварительные оценки не могут быть отрицательными!");

return;

}

Logic res = new Logic();

int correctMarks[][] = res.correctMarks(p1, p2, p3);

jLabel7.setText("Цель " + correctMarks[0][1] + ": " + correctMarks[0][0]);

jLabel8.setText("Цель " + correctMarks[1][1] + ": " + correctMarks[1][0]);

jLabel9.setText("Цель " + correctMarks[2][1] + ": " + correctMarks[2][0]);

double calculatedResult[][] = res.calculate(correctMarks);

DecimalFormat df = new DecimalFormat("###");

jLabel12.setText("Цель " + df.format(calculatedResult[0][1]) + ": W"

+ df.format(calculatedResult[0][1]) + "=" + calculatedResult[0][0]);

jLabel13.setText("Цель " + df.format(calculatedResult[1][1]) + ": W"

+ df.format(calculatedResult[1][1]) + "=" + calculatedResult[1][0]);

jLabel14.setText("Цель " + df.format(calculatedResult[2][1]) + ": W"

+ df.format(calculatedResult[2][1]) + "=" + calculatedResult[2][0]);

jLabel16.setText(df.format(calculatedResult[0][1]) + ", " +

df.format(calculatedResult[1][1]) + ", " + df.format(calculatedResult[2][1]));

}

catch(NullPointerException e)

{

}

catch (RuntimeException e) {

JOptionPane.showMessageDialog(this, "Неверный формат предварительных оценок!");

}

}

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new MetodPosledSravn().setVisible(true);

}

});

}

// Variables declaration - do not modify

private javax.swing.JButton jButton1;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel10;

private javax.swing.JLabel jLabel11;

private javax.swing.JLabel jLabel12;

private javax.swing.JLabel jLabel13;

private javax.swing.JLabel jLabel14;

private javax.swing.JLabel jLabel15;

private javax.swing.JLabel jLabel16;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLabel5;

private javax.swing.JLabel jLabel6;

private javax.swing.JLabel jLabel7;

private javax.swing.JLabel jLabel8;

private javax.swing.JLabel jLabel9;

private javax.swing.JTextField jTextField1;

private javax.swing.JTextField jTextField2;

private javax.swing.JTextField jTextField3;

// End of variables declaration

}

Logic.java

package sapis_kr;

public class Logic {

public int[][] correctMarks(int p1, int p2, int p3)

{

int v[][]= new int[3][2];

v[0][0] = p1;

v[1][0] = p2;

v[2][0] = p3;

for(int i=0; i<3; i++)

{

v[i][1] = i+1; }

for(int i=0; i<3; i++)

{

for(int j=1; j<3; j++)

{

if(v[i][0] < v[j][0] && i<j)

{

int temp = v[i][0];

v[i][0] = v[j][0];

v[j][0] = temp;

temp = v[i][1];

v[i][1] = v[j][1];

v[j][1] = temp; } } }

for(int i=0; i<3; i++)

{

for(int j=1; j<3; j++)

{

for(int k=2; k<3; k++)

{

while(v[i][0] <= (v[j][0]+v[k][0]) && (i<j) && (k>j))

{

v[i][0] += 30; } } } }

return v;

}

public double[][] calculate(int[][] marks) {

int v[][]= marks;

double sum = 0;

for(int i=0; i<3; i++)

{

sum += v[i][0]; }

double res[][] = new double[3][2];

for(int i=0; i<3; i++)

{

res[i][0] = (double) ((v[i][0]) / sum);

res[i][1] = v[i][1];

}

return res; } } }