Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка (Пыж) 6.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
159.65 Кб
Скачать
  1. Описание предметной области

Письменность сыграла ключевую роль в развитии культуры человечества. В настоящий момент письменность – это основа материальной культуры. Не будет преувеличением сказать, что смыслы сейчас создаются, хранятся и передаются в виде письменных символов. Подсчет количества символов является количественной оценкой текста.

В настоящей работе мы исходим из того что символом является печатный знак, включающий пробелы между словами, знаки препинания, цифры и пробелы до конца строк.

Подсчет количества символов может использоваться для оценки выполненной работы в переводах, написании статей, романов и так далее. В связи с этим вводится понятие авторского листа количественно равного 40000 печатных знаков (символов).

  1. Описание прототипа программного продукта (экранные формы)

Программа состоит из основной формы:

Рисунок 1 – Основная форма программы

Имеющей следующие элементы:

Рисунок 2 – Область подсказок и вывода информации

Рисунок 3 – Кнопка выбора текстового файла для подсчета символов

Рисунок 4 – Кнопка выхода из программы (закрытия основной формы)

А также диалога для выбора текстового файла:

Рисунок 5 – Диалог выбора текстового файла

  1. Математическая модель работы программы

Определение символа:

Подсчет количества символов:

Авторский лист:

  1. Алгоритм работы программы

Рисунок 6 – Алгоритм работы программы

  1. Алгоритм работы пользователя с программой

Рисунок 7 – Алгоритм работы пользователя с программой

  1. Зоны ответственности разработчиков

100644 | 83 lines (70 sloc) | 3.542 kb

RawNormal ViewHistory

389bb40c»Dmitry Pyzh

1

import javax.swing.*;

2013-03-05 Initial

2

import java.awt.event.*;

9cbc6840»elenaosipova

3

import java.io.*;

2013-03-05 Update MainForm.java

4

import javax.swing.filechooser.*;

389bb40c»Dmitry Pyzh

5

2013-03-05 Initial

6

/**

7

* Created with IntelliJ IDEA.

8

*/

9

10

public class MainForm {

11

12

// Элементы пользовательского интефейса

13

private JPanel mainPanel;

14

private JTextArea statusTextArea;

15

private JButton openButton;

16

private JButton closeButton;

17

18

public MainForm() {

19

20

statusTextArea.setText("Выберите файл...");

21

22

// Анонимный класс с переопределенным actionPerformed

23

// для обработки Выбрать файл

24

openButton.addActionListener(new ActionListener() {

25

public void actionPerformed(ActionEvent ae) {

9cbc6840»elenaosipova

26

// Диалог выбора текстового файла

2013-03-05 Update MainForm.java

27

final JFileChooser fc = new JFileChooser();

28

fc.setCurrentDirectory(new File(System.getProperty("user.dir")));

29

fc.setFileSelectionMode(JFileChooser.FILES_ONLY);

30

fc.setAcceptAllFileFilterUsed(false);

31

fc.setMultiSelectionEnabled(false);

32

fc.addChoosableFileFilter(new FileNameExtensionFilter("Текстовый файл (*.txt)", "txt"));

98818a8e»elvirahamitova

33

int r = fc.showOpenDialog(mainPanel);

2013-03-05 Update MainForm.java

34

if (r == JFileChooser.APPROVE_OPTION) {

35

try {

36

// Потоки для чтения файла

37

FileInputStream stream = new FileInputStream(fc.getSelectedFile().getPath());

38

InputStreamReader reader = new InputStreamReader(stream);

7412cc25»julianikitina

39

int ch = reader.read();

2013-03-05 Update MainForm.java

40

int count = 0;

41

while (ch != -1) {

42

// Проверка на возврат коретки и перенос строки (не считаем)

43

if (ch != 13 && ch != 10)

44

count++;

45

ch = reader.read();

46

}

98818a8e»elvirahamitova

47

reader.close();

2013-03-05 Update MainForm.java

48

stream.close();

7412cc25»julianikitina

49

// Вывод отчета

2013-03-05 Update MainForm.java

50

statusTextArea.setText(String.format("Файл: %s%n%nПечатных знаков (символов): %,d%n%nАвторских листов: %.2f", fc.getSelectedFile().getPath(), count, (double) count / 40000));

51

98818a8e»elvirahamitova

52

} catch (Exception e) {

2013-03-05 Update MainForm.java

53

statusTextArea.setText(String.format("Ошибка: %s", e.getMessage()));

54

}

55

} else {

56

statusTextArea.setText("Выберите файл...");

57

}

389bb40c»Dmitry Pyzh

58

}

2013-03-05 Initial

59

});

60

61

// Анонимный класс с переопределенным actionPerformed

62

// для выхода из программы

63

closeButton.addActionListener(new ActionListener() {

64

public void actionPerformed(ActionEvent e) {

65

System.exit(0);

66

}

67

});

68

69

}

70

71

public static void main(String[] args) {

72

73

// Создание основного окна программы

74

JFrame frame = new JFrame("Подсчет количества символов");

75

frame.setResizable(false);

76

frame.setContentPane(new MainForm().mainPanel);

77

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

78

frame.pack();

79

frame.setVisible(true);

80

81

}

82

}