Система психолингвистического анализа текстов

Разработка программного продукта для психолингвистического анализа текстов. Предметная область, основные требования. Анализ рабочих процессов отдела рекламно-выставочной и издательской деятельности. Оценка эффективности проекта и стоимости владения.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 12.10.2015
Размер файла 3,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Object passwordTemplate = Type. Missing;

Object revert = false;

Object writePasswordDocument = Type. Missing;

Object writePasswordTemplate = Type. Missing;

Object format = Type. Missing;

Object encoding = Type. Missing;;

Object oVisible = Type. Missing;

Object openConflictDocument = Type. Missing;

Object openAndRepair = Type. Missing;

Object documentDirection = Type. Missing;

Object noEncodingDialog = false;

Object xmlTransform = Type. Missing;

string extention = path. Split ('. ') [1];

string result="";

switch (extention)

{

case "txt": result = File. ReadAllText (path); break;

case "doc":

case "docx": Word. Document wordDoc = wordapp. Documents. Open (ref filename,

ref confirmConversions, ref readOnly, ref addToRecentFiles,

ref passwordDocument, ref passwordTemplate, ref revert,

ref writePasswordDocument, ref writePasswordTemplate,

ref format, ref encoding, ref oVisible,

ref openAndRepair, ref documentDirection, ref noEncodingDialog, ref xmlTransform);

result = wordDoc. Range (). Text;

wordapp. Quit (); break;

}

return result;

}

private void словоToolStripMenuItem_Click (object sender, EventArgs e)

{

WordAnalitic wordForm = new WordAnalitic ();

wordForm. ShowDialog ();

}

private void открытьToolStripMenuItem_Click (object sender, EventArgs e)

{

if (openFileDialog1. ShowDialog () == DialogResult. OK)

txtText. Text=openWordDoc (openFileDialog1. FileName);

}

private void выйтиToolStripMenuItem_Click (object sender, EventArgs e)

{

this. Close ();

}

private void Form1_FormClosing (object sender, FormClosingEventArgs e)

{

if (MessageBox. Show ("Вы точно хотите выйти из программы?", "Вы покидаете программу.", MessageBoxButtons. YesNo)! = DialogResult. Yes)

e. Cancel = true;

}

private void btnStart_Click (object sender, EventArgs e)

{

if ( (chbOutput. Checked) && (saveFileDialog1. ShowDialog ()! = DialogResult. OK))

return;

txtResult. Text = "";

List<string> bgData = new List<string> ();

bgData. Add (txtText. Text);

bgData. Add (saveFileDialog1. FileName);

btnStart. Enabled = false;

bgWorker.runWorkerAsync (bgData);

pbProgress. Visible = true;

pbProgress. Value = 25;

}

List<string> res;

private void bgWorker_DoWork (object sender, DoWorkEventArgs e)

{

List<string> data = (List<string>) e. Argument;

if (chbOutput. Checked)

res = Analyzer. GetTextWeight (data [0], new ExcelWorker (data [1], data [1]));

else

res = Analyzer. GetTextWeight (data [0]);

}

private void bgWorker_RunWorkerCompleted (object sender, RunWorkerCompletedEventArgs e)

{

if (res! = null)

foreach (string result in res)

if (! result. Contains ("--"))

txtResult. Text = txtResult. Text + result + "\n";

if (String. IsNullOrEmpty (txtResult. Text))

txtResult. Text = "Текст не имеет сильной эмоциональной окрашенности. ";

pbProgress. Visible = false;

btnStart. Enabled = true;

pbProgress. Value = 0;

}

private void пакетнаяОбработкаТекстаToolStripMenuItem_Click (object sender, EventArgs e)

{

if ( (folderBrowserDialog1. ShowDialog () == DialogResult. OK) && (saveFileDialog1. ShowDialog () ==DialogResult. OK))

{

txtResult. Text = "";

List<string> bgData = new List<string> ();

bgData. Add (folderBrowserDialog1. SelectedPath);

bgData. Add (saveFileDialog1. FileName);

btnStart. Enabled = false;

bgwPackage.runWorkerAsync (bgData);

pbProgress. Visible = true;

}

}

private void bgwPackage_DoWork (object sender, DoWorkEventArgs e)

{

List<string> data = (List<string>) e. Argument;

PackageAnalyzer (sender as BackgroundWorker, data [0], data [1]);

}

private void bgwPackage_RunWorkerCompleted (object sender, RunWorkerCompletedEventArgs e)

{

MessageBox. Show ("Пакетная обработка файлов успешно завершена!");

btnStart. Enabled = true;

pbProgress. Value = 0;

pbProgress. Visible = false;

}

private void PackageAnalyzer (BackgroundWorker bg, string OpenPath, string SavePath)

{

List<string> files = Directory. GetFiles (OpenPath + "\\", "*. txt"). ToList ();

files. AddRange (Directory. GetFiles (OpenPath + "\\", "*. doc?"). ToList ());

int step = 100/files. Count;

ExcelWorker ew = new ExcelWorker (SavePath, "", true);

ew. OutputPackage ("Шкала \\ Текст", Analyzer. OutPutScales. ToList ());

foreach (string file in files)

{

List<string> result = Analyzer. GetTextWeight (openWordDoc (file));

bg. ReportProgress (step);

ew. OutputPackage (file, result);

}

ew. Close ();

}

private void bgwPackage_ProgressChanged (object sender, ProgressChangedEventArgs e)

{

pbProgress. Value += e. ProgressPercentage;

}

using System;

using System. Collections. Generic;

using System. Linq;

using System. Text;

using System. Data;

using System. Data. OleDb;

using System. Data. SqlClient;

using System. Windows;

using System. Windows. Forms;

namespace Diplom

{

class MSAccess

{

private static OleDbDataAdapter dataAdapter = new OleDbDataAdapter ();

static string file = "MyDB. mdb";

private static OleDbConnection SqlConnection ()

{

// string file = "DBTeis. db";

OleDbConnection con = new OleDbConnection ();

// SqlConnectionStringBuilder conString = new SqlConnectionStringBuilder ();

string conString = "Provider=Microsoft. Jet. OLEDB. 4. 0; Data Source=" + file + "; User Id=admin; Password=; ";

con. ConnectionString = conString. ToString ();

return con;

}

public static DataTable GetData (string selectCommand)

{

OleDbConnection con = SqlConnection ();

DataTable table = new DataTable ();

try

{

con. Open ();

OleDbCommand comm = new OleDbCommand (selectCommand, con);

dataAdapter = new OleDbDataAdapter (comm);

OleDbCommandBuilder commandBuilder = new OleDbCommandBuilder (dataAdapter);

table. Locale = System. Globalization. CultureInfo. InvariantCulture;

dataAdapter. Fill (table);

con. Close ();

}

catch (Exception e)

{

MessageBox. Show ("При выполнении запроса к базе данных произошла ошибка: " + e. Message);

}

return table;

}

}

}

using System;

using System. Collections. Generic;

using System.componentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System. Windows. Forms;

using System. Text. RegularExpressions;

namespace Diplom

{

public partial class WordAnalitic: Form

{

public WordAnalitic ()

{

InitializeComponent ();

}

private void btnGo_Click (object sender, EventArgs e)

{

MatchCollection matches = Regex. Matches (txtWord. Text, " [^\\*а-яА-Я]", RegexOptions. IgnoreCase);

if (matches. Count! = 0)

{

MessageBox. Show ("Некорректно введено слово!!!!");

return;

}

if ( (chbOutput. Checked) && (saveFileDialog1. ShowDialog ()! = DialogResult. OK))

return;

txtResult. Text = "";

List<string> bgData = new List<string> ();

bgData. Add (txtWord. Text);

bgData. Add (saveFileDialog1. FileName);

btnGo. Enabled = false;

bgWorker.runWorkerAsync (bgData);

pbProgress. Visible = true;

pbProgress. Value = 45;

}

List<string> res;

private void backgroundWorker1_DoWork (object sender, DoWorkEventArgs e)

{

List<string> data = (List<string>) e. Argument;

if (chbOutput. Checked)

res = Analyzer. GetWordWeight (data [0], new ExcelWorker (data [1], data [1]));

else

res = Analyzer. GetWordWeight (data [0]);

}

private void backgroundWorker1_ProgressChanged (object sender, ProgressChangedEventArgs e)

{

}

private void backgroundWorker1_RunWorkerCompleted (object sender, RunWorkerCompletedEventArgs e)

{

if (res! = null)

foreach (string result in res)

txtResult. Text = txtResult. Text + result + "\n";

if (String. IsNullOrEmpty (txtResult. Text))

txtResult. Text = "Текст не имеет сильной эмоциональной окрашенности. ";

pbProgress. Visible = false;

btnGo. Enabled = true;

pbProgress. Value = 0;

}

private void WordAnalitic_Load (object sender, EventArgs e)

{

}

}

}

using System;

using System. Collections. Generic;

using System. Linq;

using System. Text;

using System. Text. RegularExpressions;

using System. Data;

using System. Windows. Forms;

namespace Diplom

{

class Analyzer

{

private static string [] scales = { "1. Хороший-плохой", "2. Большой-маленький", "3. Нежный-грубый", "4. Женственный-мужественный","5. Светлый-темный", "6. Активный-пассивный", "7. Простой-сложный", "8. Сильный-слабый","9. Горячий-холодный", "10. Быстрый-медленный", "11. Красивый-отталкивающий", "12. Гладкий-шероховатый","13. Легкий-тяжелый", "14. Веселый-грустный", "15. Безопасный - страшный", "16. Величественный-низменный","17. Яркий-тусклый", "18. Округлый-угловатый","19. Радостный - печальный", "20. Громкий-тихий","21. Длинный-короткий", "22. Храбрый-трусливый", "23. Добрый-злой", "24. Могучий-хилый", "25. Подвижный-медленный"};

public static string [] OutPutScales = { "Хороший-Плохой", "Большой-Маленький", "Нежный-Грубый", "Женственный-Мужественный","Светлый-Темный", "Активный-Пассивный", "Простой-Сложный", "Сильный-Слабый","Горячий-Холодный", "Быстрый-Медленный", "Красивый-Отталкивающий", "Гладкий-Шероховатый","Легкий-Тяжелый", "Веселый-Грустный", "Безопасный-Страшный", "Величественный-Низменный","Яркий-Тусклый", "Округлый-Угловатый","Радостный-Печальный", "Громкий-Тихий","Длинный-Короткий", "Храбрый-Трусливый", "Добрый-Злой", "Могучий-Хилый", "Подвижный-Медленный"};

internal MSAccess MSAccess

{

get

{

throw new System. NotImplementedException ();

}

set

{

}

}

internal ExcelWorker ExcelWorker

{

get

{

throw new System. NotImplementedException ();

}

set

{

}

}

public static List<string> GetWordWeight (string word, ExcelWorker output = null)

{

try

{

word = word + " ";

List<string> Result = new List<string> ();

Dictionary<string, double> frequency = new Dictionary<string, double> ();

Dictionary<string, double> weights = new Dictionary<string, double> ();

DataTable letters = MSAccess. GetData ("Select * from Частототность where звук not like '_ ['юёяие] '");

foreach (DataRow letter in letters. Rows)

{

MatchCollection matches;

string goodletter = letter [1]. ToString (). Replace ("*", @"\*");

string teststring = "АаОоЁёЕеИиУуЭэЯяЫыЮюЙйЧчЩщЖжШшЦц";

if ( (letter [1]. ToString (). Length == 1) && (! teststring. Contains (letter [1]. ToString ())))

matches = Regex. Matches (word, goodletter. ToString () + " [^\\*ьюёяие]", RegexOptions. IgnoreCase); // Ищет в указанной входной строке все вхождения заданного регулярного выражения.

else

{

string pattern = goodletter. Replace ("Ь", " ['ьюёяие] ");

matches = Regex. Matches (word, pattern, RegexOptions. IgnoreCase); // Ищет в указанной входной строке все вхождения заданного регулярного выражения, используя указанные параметры сопоставления.

}

foreach (Match match in matches)

{

if (frequency. ContainsKey (letter [1]. ToString ()))

{

weights [letter [1]. ToString ()] += 1;

continue;

}

frequency. Add (letter [1]. ToString (), double. Parse (letter [2]. ToString ()));

if (match. Index == 0)

{

weights. Add (letter [1]. ToString (), 4);

continue;

}

if (match. Value. Contains ('*'))

weights. Add (letter [1]. ToString (), 2);

else

weights. Add (letter [1]. ToString (), 1);

}

}

double Pmax = frequency. Values. Max ();

double summKi = 0;

foreach (string sound in frequency. Keys)

{

weights [sound] = weights [sound] * Pmax / frequency [sound];

summKi += weights [sound];

}

if (output! = null)

{

output. weights = weights;

output. Pmax = Pmax;

output. frequency = frequency;

}

for (int i = 0; i < scales. Length; i++)

{

string scaleRes = getScaleSignificance (i, weights, summKi, output);

if (! String. IsNullOrEmpty (scaleRes))

Result. Add (scaleRes);

}

if (output! = null)

output. Close ();

return Result;

}

catch (Exception e)

{

MessageBox. Show ("При выполнении расчетов произошла ошибка, проверьте введенные данные. ");

return null;

}

}

private static string getScaleSignificance (int scale, Dictionary<string, double> frequency, double summ, ExcelWorker output = null) // значение шкал

{

double F = 0;

DataTable significance = MSAccess. GetData ("Select Буква, Значение from Значимость where Признак = '"+ scales [scale] +"'");

Dictionary<string, double> fk = new Dictionary<string, double> ();

foreach (KeyValuePair<string, double> sound in frequency)

{

DataRow [] sign = significance. Select ("Буква = '"+sound. Key. Replace ("*","") +"'");

fk. Add (sound. Key, double. Parse (sign [0] [1]. ToString ()) * sound. Value);

}

if (output! = null)

output. OutputWordScale (OutPutScales [scale], fk);

F = fk. Values. Sum () /summ;

if (F <= 2. 5)

return OutPutScales [scale]. Split ('-') [0];

if (F >= 3. 5)

return OutPutScales [scale]. Split ('-') [1];

return "";

}

public static List<string> GetTextWeight (string text, ExcelWorker output = null) // анализ текста

{

try

{

Dictionary<string, double> frequency = new Dictionary<string, double> ();

Dictionary<string, double> realFrequency = GetFrequency (text, ref frequency);

Dictionary<string, double> sigma = new Dictionary<string, double> ();

List<string> result = new List<string> ();

char [] separator = { ' ', '\n', '\r' };

List<string> words = text. Split (separator, StringSplitOptions. RemoveEmptyEntries). ToList ();

int blockLength = words. Count / 5;

if (blockLength! = 0)

{

List<Dictionary<string, double>> realFreq = new List<Dictionary<string, double>> ();

realFreq. Add (realFrequency);

for (int i = 4; i >= 0; i--)

{

Dictionary<string, double> partFreq = new Dictionary<string, double> ();

string [] tmp = new string [words. Count - blockLength * i];

words. CopyTo (blockLength * i, tmp, 0, words. Count - blockLength * i);

realFreq. Add (GetFrequency (String. Concat (tmp), ref partFreq));

words. RemoveRange (words. Count - tmp. Length, tmp. Length);

}

sigma = GetSigma (realFreq);

}

else

{

MessageBox. Show ("В выбранном документе менее 5 слов. Корректно провести анализ невозможно. ");

return null;

}

Dictionary<string, double> midDeviation = new Dictionary<string, double> ();

foreach (string sound in frequency. Keys)

midDeviation. Add (sound, (realFrequency [sound] - frequency [sound]) / sigma [sound]);

for (int i = 0; i < scales. Length; i++)

{

Dictionary<string, double> signDeviation = new Dictionary<string, double> ();

Dictionary<string, double> contribution = new Dictionary<string, double> ();

DataTable significance = MSAccess. GetData ("Select Буква, Значение from Значимость where Признак = '" + scales [i] +

"' and Буква not like '_ [юёяие] '");

foreach (string sound in frequency. Keys)

{

if ( (midDeviation [sound] < - 1) || (midDeviation [sound] > 1))

{

DataRow [] sign = significance. Select ("Буква = '" + sound + "'");

signDeviation. Add (sound, 3. 0 - double. Parse (sign [0] [1]. ToString ()));

contribution. Add (sound, midDeviation [sound] * signDeviation [sound]);

}

else

{

signDeviation. Add (sound, 0);

contribution. Add (sound, 0);

}

}

if (output! = null)

{

output. frequency = frequency;

output. weights = realFrequency;

output. OutputTextScale (OutPutScales [i], midDeviation, signDeviation, contribution);

}

double sum = contribution. Values. Sum ();

int fringe = 5;

if (text. Length > 1000)

fringe += text. Length / 1000;

if (sum > fringe)

result. Add (OutPutScales [i]. Split ('-') [0] + " (" + sum. ToString () + ")");

else

{

if (sum < 0-fringe)

result. Add (OutPutScales [i]. Split ('-') [1] + " (" + sum. ToString () + ")");

else

result. Add (" - (" + sum. ToString () + ")");

}

}

if (output! = null)

output. Close ();

return result;

}

catch (Exception e)

{

MessageBox. Show ("При выполнении расчетов произошла ошибка, проверьте введенные данные. ");

return null;

}

}

private static Dictionary<string, double> GetSigma (List<Dictionary<string, double>> realFreq) // вычисление сигмы для статистики

{

Dictionary<string, double> sigma = new Dictionary<string, double> ();

foreach (string sound in realFreq [0]. Keys)

{

double midSound = 0;

for (int i = 1; i < 6; i++)

if (realFreq [i]. ContainsKey (sound))

midSound += realFreq [i] [sound];

midSound /= 5;

sigma. Add (sound, 0);

for (int i = 1; i < 6; i++)

{

if (realFreq [i]. ContainsKey (sound))

sigma [sound] += Math. Pow ( (realFreq [i] [sound] - midSound), 2);

else

sigma [sound] += Math. Pow (midSound, 2);

}

sigma [sound] = Math. Pow (sigma [sound] * 0. 2, 0. 5);

}

return sigma;

}

private static Dictionary<string, double> GetFrequency (string text, ref Dictionary<string, double> frequency) // вычисление частотности

{

int soundcount = 0;

text = text + " ";

Dictionary<string, double> realFrequency = new Dictionary<string, double> ();

DataTable letters = MSAccess. GetData ("Select * from Частототность where звук not like '_ [*'юёяие] '");

string teststring = "АаОоЁёЕеИиУуЭэЯяЫыЮюЙйЧчЩщЖжШшЦц";

foreach (DataRow letter in letters. Rows)

{

MatchCollection matches;

if ( (letter [1]. ToString (). Length == 1) && (! teststring. Contains (letter [1]. ToString ())))

matches = Regex. Matches (text, " (" + letter [1] + @" [^ьюёяие])", RegexOptions. IgnoreCase);

else

{

string pattern = letter [1]. ToString (). Replace ("Ь", " [ьюёяие] ");

matches = Regex. Matches (text, pattern, RegexOptions. IgnoreCase);

}

foreach (Match match in matches)

{

if (frequency. ContainsKey (letter [1]. ToString ()))

{

realFrequency [letter [1]. ToString ()] += 1;

soundcount++;

continue;

}

frequency. Add (letter [1]. ToString (), double. Parse (letter [2]. ToString ()));

realFrequency. Add (letter [1]. ToString (), 1);

soundcount++;

}

}

foreach (string sound in frequency. Keys)

realFrequency [sound] /= soundcount;

return realFrequency;

}

}

}

using System;

using System. Collections. Generic;

using System. Linq;

using System. Text;

using System. Windows. Forms;

using Excel = Microsoft. Office. Interop. Excel;

namespace Diplom

{

class ExcelWorker

{

string path;

private Excel. Application excel;

int currentSheet;

Excel. Workbook workbook;

public Dictionary<string, double> frequency;

public Dictionary<string, double> weights;

public double Pmax;

string name;

public ExcelWorker (string path, string name, bool package=false)

{

this. path = path;

this. name = name;

excel = new Excel. Application ();

if (! package)

excel. SheetsInNewWorkbook = 25; // количество листов в книге

else

excel. SheetsInNewWorkbook = 1;

excel. Workbooks. Add (Type. Missing); // добавляем книгу

workbook = excel. Workbooks [excel. Workbooks. Count]; // получам ссылку на первую открытую книгу

currentSheet = 1;

}

public void OutputPackage (string fileName, List<string> scales)

{

string columns = "ABCDEFGHIJKLMNOPQRSRUVWXY";

Excel. Worksheet sheet = workbook. Worksheets. get_Item (1);

sheet. Cells [1, currentSheet] = fileName;

for (int i=0; i<scales. Count; i++)

sheet. Cells [i+2, currentSheet] = scales [i];

Excel. Range rng = (Excel. Range) sheet. Cells. get_Range (columns [currentSheet-1]. ToString () + 1. ToString (), columns [currentSheet-1]. ToString () + (scales. Count+1). ToString ());

rng. Borders. LineStyle = Excel. XlLineStyle. xlContinuous;

rng. Borders. Weight = Excel. XlBorderWeight. xlMedium;

rng. ColumnWidth = rng. ColumnWidth * 2;

rng. WrapText = true;

currentSheet++;

}

public void OutputTextScale (string scale, Dictionary<string, double> midDeviation, Dictionary<string, double> signDeviation, Dictionary<string, double> contribution) // вывод отчета по тексту

{

try

{

Excel. Worksheet sheet = workbook. Worksheets. get_Item (currentSheet); // получаем ссылку на лист

Excel. Range header = (Excel. Range) sheet. get_Range ("A1", "F2"). Cells;

header. Merge (Type. Missing);

header. Value = "Выбор признака " + scale + " для текста \"" + name + "\"";

sheet. Cells [3, 1] = "Звукобуквы";

sheet. Cells [3, 2] = "Нормальная частотность звукобуквы";

sheet. Cells [3, 3] = "Частотность звукобукв в тексте";

sheet. Cells [3, 4] = "Отклонения частотностей от нормы";

sheet. Cells [3, 5] = "Отклонения значимости от нейтральной точки";

sheet. Cells [3, 6] = "Вклад каждой звукобуквы в общий тон текста";

for (int i = 1; i < 7; i++)

sheet. Cells [4, i] = i;

int row = 5;

foreach (string sound in frequency. Keys)

{

sheet. Cells [row, 1] = sound;

sheet. Cells [row, 2] = frequency [sound];

sheet. Cells [row, 3] = weights [sound];

sheet. Cells [row, 4] = midDeviation [sound];

sheet. Cells [row, 5] = signDeviation [sound];

sheet. Cells [row, 6] = contribution [sound];

row++;

}

Excel. Range end = (Excel. Range) sheet. get_Range ("A" + row, "E" + row). Cells;

end. Merge (Type. Missing);

end. Value = "Суммарный показатель данного признака в создании общей фонетической значимости текста";

sheet. Cells [row, 6] = contribution. Values. Sum ();

sheet. Cells. get_Range ("A1", "F" + row). Borders. LineStyle = Excel. XlLineStyle. xlContinuous;

sheet. Cells. get_Range ("A1", "F" + row). Borders. Weight = Excel. XlBorderWeight. xlMedium;

sheet. Cells. get_Range ("A1", "F" + (row + 1)). WrapText = true;

currentSheet++;

}

catch (Exception e)

{

MessageBox. Show ("При формировании отчета произошла ошибка");

return;

}

}

public void OutputWordScale (string scale, Dictionary<string, double> fk) // отчет по слову

{

try

{

Excel. Worksheet sheet = workbook. Worksheets. get_Item (currentSheet); // получаем ссылку на лист

Excel. Range header = (Excel. Range) sheet. get_Range ("A1", "F2"). Cells;

header. Merge (Type. Missing);

header. WrapText = true;

header. Value = "Вычисление фонетической значимости слова " + name + " по шкале \"" + scale + "\"";

Excel. Range thletter = (Excel. Range) sheet. get_Range ("A3", "A4"). Cells;

thletter. Merge (Type. Missing);

thletter. Value = "Звукобуквы";

Excel. Range thstart = (Excel. Range) sheet. get_Range ("B3", "C3"). Cells;

thstart. Merge (Type. Missing);

thstart. Value = "Исходные данные";

Excel. Range thmid = (Excel. Range) sheet. get_Range ("D3", "F3"). Cells;

thmid. Merge (Type. Missing);

thmid. Value = "Промежуточные данные";

sheet. Cells [4, 2] = "fi";

sheet. Cells [4, 3] = "pi";

sheet. Cells [4, 4] = "pmax/pi";

sheet. Cells [4, 5] = "ki";

sheet. Cells [4, 6] = "fi*ki";

int row = 5;

foreach (string sound in fk. Keys)

{

sheet. Cells [row, 1] = sound;

sheet. Cells [row, 2] = fk [sound] / weights [sound];

sheet. Cells [row, 3] = frequency [sound];

sheet. Cells [row, 4] = Pmax / frequency [sound];

sheet. Cells [row, 5] = weights [sound];

sheet. Cells [row, 6] = fk [sound];

row++;

}

sheet. Cells [row, 1] = "Сумма: ";

sheet. Cells [row, 5] = weights. Values. Sum ();

sheet. Cells [row, 6] = fk. Values. Sum ();

row++;

Excel. Range res = (Excel. Range) sheet. get_Range ("A" + row, "F" + row). Cells;

res. Merge (Type. Missing);

res. Value = "F = " + fk. Values. Sum () + " / " + weights. Values. Sum () + " = " + fk. Values. Sum () / weights. Values. Sum ();

sheet. Cells. get_Range ("A1", "F" + row). Borders. LineStyle = Excel. XlLineStyle. xlContinuous;

sheet. Cells. get_Range ("A1", "F" + row). Borders. Weight = Excel. XlBorderWeight. xlMedium;

sheet. Cells. get_Range ("A1", "F" + (row + 1)). WrapText = true;

currentSheet++;

}

catch (Exception e)

{

MessageBox. Show ("При формировании отчета произошла ошибка");

return;

}

}

public void Close ()

{

try

{

workbook. SaveAs (path);

excel. Quit ();

}

catch (Exception e)

{

MessageBox. Show ("При сохранении отчета произошла ошибка");

return;

}

}

}

Размещено на Allbest.ru


Подобные документы

  • Морфологические анализаторы (морфологизаторы) на различных языках программирования. Анализ методов и технологий автоматической обработки ЕЯ-текстов. Разработка модуля графематического анализа и создания таблицы лексем. Программная реализация классов.

    дипломная работа [3,0 M], добавлен 06.03.2012

  • Автоматизация деятельности по проведению анализа деловой активности предприятия. Реализация предложенной методики в виде программного обеспечения, основные требования к нему. Структура и состав комплекса программных модулей, руководство пользователя.

    курсовая работа [634,0 K], добавлен 28.05.2013

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

    курсовая работа [1,9 M], добавлен 03.01.2011

  • Требования к функциям и задачам, выполняемым системой "Подбор кредита ОАО "Россельхозбанк". Проектирование архитектуры программного продукта. Структурная схема программного продукта. Описание компонент программного обеспечения. План менеджмента проекта.

    курсовая работа [684,0 K], добавлен 03.05.2015

  • Предметная область объекта автоматизации информационных процессов. Основные этапы автоматизации работы метрологического отдела Воронежского вагоноремонтного завода. Расчет надежности аппаратной части и программного обеспечения. Руководство пользователя.

    дипломная работа [5,7 M], добавлен 01.02.2014

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

    дипломная работа [1,7 M], добавлен 18.03.2012

  • Архитектура программного продукта и требования к платформе, обоснование выбора разработки. Закономерности и основные этапы алгоритмизации и программирования, а также отладка и тестирование продукта. Разработка и содержание руководства пользователя.

    дипломная работа [2,3 M], добавлен 19.01.2017

  • Описание исходных текстов программного продукта. Системные требования и установка программного продукта. Тестирование пользователя по двадцати вопросам указанной темы и сохранение результатов тестирования. Форма отображения результатов тестирования.

    курсовая работа [2,8 M], добавлен 09.07.2013

  • Порядок контроля и приемки программного продукта, предназначенного для автоматизации процесса анализа эффективности инвестиций и капитальных вложений. Состав входной и выходной информации. Описание функций программного комплекса. Руководство пользователя.

    курсовая работа [436,8 K], добавлен 28.05.2013

  • Обзор и анализ существующих методик управления проектами и оценки трудоемкости. Разработка алгоритма задания параметров и вычисления трудоемкости и стоимости программного продукта. Отладка и тестирование продукта. Разработка руководства пользователя.

    дипломная работа [2,5 M], добавлен 18.11.2017

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.