Нидерланды |
Опубликован: 09.09.2008 | Уровень: специалист | Доступ: платный | ВУЗ: Российская международная академия туризма
Лекция 4:
Поиск в текстовых файлах
Шаг 5. Включаем переменные для хранения результатов вычислений в public class Form2 : System.Windows.Forms.Form
string s_new; // переменная для хранения данных нового сотрудника int i_row=0; // число строк в выборке int i_sum=0; // сумма выборки
Шаг 6. Загружаем данные из файла (по умолчанию)
public Form2() { InitializeComponent(); // Тестируем наличие файла с данными и создаем файл для записи значений FileStream fin; Try { fin=new FileStream("Сотрудники.txt",FileMode.Open); } catch(IOException exc) { MessageBox.Show ("Невозможно открыть файл.","Ошибка"); return; } // Считываем значения из файла string s; StreamReader fstr_in=new StreamReader(fin); while((s=fstr_in.ReadLine())!=null) { listBox1.Items.Add(s); // заполняем верхний листбокс } fstr_in.Close(); // закрываем файловый поток }
Шаг 7. Создаем функцию вычисления средней в выборке
void AppListBox2() { // вычисляем длину выбранной строки из листбокса int i_len=s_new.Length; string s_pay=s_new.Substring(25,i_len-25); i_row=i_row+1; // считаем количество строк // преобразуем текст в сумму и считаем сумму выборки i_sum=int.Parse(s_pay)+i_sum; float f_sum=i_sum/i_row; // считаем среднюю textBox2.Text=f_sum.ToString(); // выводим среднюю в текстовое поле }
Шаг 8. Создаем процедуру выборки значения из верхнего листбокса в нижний по щелчку
private void listBox1_SelectedIndexChanged (object sender, System.EventArgs e) { s_new=listBox1.SelectedItem.ToString(); listBox2.Items.Add(s_new); // добавляем запись в листбокс2 AppListBox2(); // вызваем функцию вычисления средней в выборке }
Шаг 9. Создаем процедуру удаления записей из выборки и пересчета средней по оставшимся в выборке записям
private void listBox2_SelectedIndexChanged (object sender, System.EventArgs e) {// если в выборке есть еще записи, которые можно удалить if (listBox2.SelectedItem != null) { // вычисляем длину выбранной строки из листбокса int i_len=listBox2.SelectedItem.ToString().Length; string s_pay=listBox2.SelectedItem.ToString().Substring(25,i_len-25); // считаем количество строк i_row=i_row-1; // преобразуем текст в сумму и считаем сумму выборки i_sum=-int.Parse(s_pay)+i_sum; // считаем среднюю float f_sum; if (i_row = = 0) {f_sum=0;} else {f_sum=i_sum/i_row;} textBox2.Text=f_sum.ToString(); // удаляем строки из listbox2 listBox2.Items.Remove(listBox2.SelectedItem.ToString()); } }
Шаг 10. Создаем процедуру поиска при активизации кнопки
private void button1_Click(object sender, System.EventArgs e) { // вычисляем длину выбранной строки из TEXTбокса int i_len=textBox1.Text.Length; int i_row=listBox1.Items.Count+1; //цикл просмотра списка верхнего листбокса for(int i=0; i<listBox1.Items.Count;i++) { // сравниваем значения текстбокса и листбокса string s_name=listBox1.Items[i].ToString().Substring(0,i_len); if (textBox1.Text==s_name) {i_row=i;} } if (i_row<=listBox1.Items.Count) { s_new=listBox1.Items[i_row].ToString(); listBox2.Items.Add(s_new); AppListBox2(); } else {MessageBox.Show(textBox1.Text,"Не найдено");} }
Шаг 11. Расширяем состав библиотек формы 3
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; // добавляем библиотеку работы с файлами using System.IO;
Шаг 12. Включаем константы размеров полей базы данных в public class Form3 : System.Windows.Forms.Form
const int l_name=18; const int l_year=6;
Шаг 13. Создаем процедуру добавления записи в файл Сотрудники.txt для кнопки button1
private void button1_Click(object sender, System.EventArgs e) { // Проверка значений полей if (textBox1.Text = = "") { MessageBox.Show("Введите фамилию и инициалы сотрудника!","Ошибка"); return; } // год рождения должен вводиться цифрами if (!char.IsDigit(textBox2.Text[0])) { textBox2.Text = "1940"; MessageBox.Show("Введите год рождения в поле 'г.д.'!","Ошибка"); return; } if (!char.IsDigit(textBox3.Text[0])) { textBox3.Text = "0"; MessageBox.Show("Введите цифру в поле 'Оклад'!","Ошибка"); return; } /* Тестируем наличие файла с данными о сотрудниках и создаем файл для записи значений */ FileStream fin; try { fin=new FileStream("Сотрудники.txt",FileMode.OpenOrCreate); fin.Close(); } catch(IOException exc) { MessageBox.Show ("Невозможно открыть файл.","Ошибка"); return;} //форматируем значения string s_field1=textBox1.Text; if (s_field1.Length<l_name) { for (int i=s_field1.Length; i<l_name; i++) s_field1=s_field1+" "; } string s_field2="|"+textBox2.Text; // пользовательский разделитель данных! if (s_field2.Length<l_year) { for (int i=s_field2.Length; i<l_year; i++) s_field2=s_field2+" "; } string s_field3="|"+textBox3.Text; // пользовательский разделитель данных! StreamWriter fin_out; // открываем файл для записи try {fin_out=new StreamWriter("Сотрудники.txt", true);} catch(IOException exc) { MessageBox.Show ("Невозможно открыть файл.","Ошибка"); return;} string s=s_field1+s_field2+s_field3+"\r\n"; fin_out.Write(s); fin_out.Close(); MessageBox.Show(s_field1+"\n"+s_field2+" г.р.\n"+s_field3+ " у.е.- оклад.","Запись добавлена"); // Обнуляем поля textBox1.Text=""; textBox2.Text="1940"; textBox3.Text="0"; }