Российская международная академия туризма
Опубликован: 09.09.2008 | Доступ: свободный | Студентов: 807 / 36 | Оценка: 4.33 / 4.33 | Длительность: 13:07:00
Лекция 9:

Добавление-удаление записей

< Лекция 8 || Лекция 9: 123 || Лекция 10 >

Шаг 3. Добавляем библиотеки в оба класса форм

using System;
using System.Drawing;
using System.Collections;
using System.Windows.Forms;
using System.Data;
//добавляем библиотеку
using System.IO;

Шаг 4. Объявляем общие переменные в public class Form1 : System.Windows.Forms.Form

// объявляем глобальную переменную для использования в форме 2
public static string ss;
float i_sum=0; // стоимость товара в корзине
int L_goods=10; // длина поля "Товар"
int L_firma=10; // длина поля "Фирма"
int L_unit=4; // Длина поля "Количество"
string s_new; // строка обозначения товара

Шаг 5. Для public Form1() , загружаемой первой по умолчанию

Тестируем наличие файла базы данных - дописываем:

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(); // и закрываем поток
// вызываем функцию для заполняем листбокса поиска товара
appe_listbox3(); // вообще-то функции пока нет

Шаг 6. Создаем функцию алфавита appe_listbox3 из имеющихся названий товара

private void appe_listbox3() {
listBox3.Items.Clear(); // для вывода 
результата используем listBox3
const string s_alfa="АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЭЮЯ";
string s,s_name,s_sym;
// вычисляем длину выбранной строки из алфавита
for (int it=0;it<s_alfa.Length; it++) {
s_sym=s_alfa.Substring(it,1);
// Тестируем наличие файла с данными о ценах
FileStream fin;
try {	
fin=new FileStream("Товары.txt",FileMode.Open);
	}
catch(IOException exc) {	
MessageBox.Show ("Невозможно открыть файл.","Ошибка");
return;}
// бежим по файлу
StreamReader fstr_in=new StreamReader(fin);
while	((s=fstr_in.ReadLine())!=null ) {
s_name=s.Substring(0,1);
	if (s_name==s_sym) {
	listBox3.Items.Add(s_name);
	s_sym=""; // обнуляем, чтобы избежать повторов
		}
}
fstr_in.Close();
}

Шаг 7. Добавляем запись в базу данных

Для кнопки "Добавить" в закладке "Редактор" создаем процедуру:

private void button1_Click
 (object sender, System.EventArgs e) {
// Проверка значений полей
if (textBox2.Text=="") {
MessageBox.Show("Введите товар!","Ошибка");
return;}
if (textBox3.Text=="") {
MessageBox.Show("Введите фирму!","Ошибка");
return;}
if (textBox4.Text=="") {
MessageBox.Show("Введите количество!","Ошибка");
return;}
if (!char.IsDigit(textBox5.Text[0])) {
textBox5.Text = "0,00";
MessageBox.Show("Введите цену!","Ошибка");
return;}
// Тестируем наличие файла с данными
FileStream fin;
try {	
fin=new FileStream("Товары.txt",FileMode.OpenOrCreate);
fin.Close();	}
catch(IOException exc) {	
MessageBox.Show ("Невозможно открыть файл.","Ошибка");
return; }
//форматируем значения
string s_field1=textBox2.Text;
if (s_field1.Length<L_goods) {
	for (int i=s_field1.Length; i<L_goods; i++)
	s_field1=s_field1+" ";
	}
else { //обрезаем строку
	int L=s_field1.Length;
	s_field1=s_field1.Remove(L_goods,L-L_goods);
	}
string s_field2="|"+textBox3.Text; 
 // вставляем разделитель полей
if (s_field2.Length<L_firma) {
	for (int i=s_field2.Length; i<L_firma; i++)
	s_field2=s_field2+" ";
	}
else { //обрезаем строку
	int L=s_field2.Length;
	s_field2=s_field2.Remove(L_firma,L-L_firma);
	}
string s_field3="|"+textBox4.Text;
	if (s_field3.Length<L_unit) {
	for (int i=s_field3.Length; i<L_unit; i++)
	s_field3=s_field3+" ";
	}
else { //обрезаем строку
	int L=s_field3.Length;
	s_field3=s_field3.Remove(L_unit,L-L_unit);
	}
string s_field4="|"+textBox5.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+s_field4+"\r\n";
fin_out.Write(s);
fin_out.Close();
MessageBox.Show(s_field1+"\n"+s_field2+"\n"+s_field3+"\n"+
	s_field4,"Запись добавлена");
// Обнуляем поля
textBox2.Text="";
textBox3.Text="";
textBox4.Text="";
textBox5.Text="0,00";
// заполняем листбокс3
appe_listbox3();
}

Шаг 8. Теперь можно программировать процедуру листбокс на закладке "Редактор" для выборки товара из базы

private void listBox3_SelectedIndexChanged
 (object sender, System.EventArgs e) 
  {//выборка групп товаров из файла
listBox1.Items.Clear();
s_new=listBox3.SelectedItem.ToString();
string s;
FileStream fin;
try {
fin=new FileStream("Товары.txt",FileMode.Open);
}
catch(IOException exc) {
MessageBox.Show ("Невозможно открыть файл.","Ошибка");
return;}
// бежим по файлу
StreamReader fstr_in=new StreamReader(fin);
while	((s=fstr_in.ReadLine())!=null ) {
if (s_new.Substring(0,1)==s.Substring(0,1)) {
	listBox1.Items.Add(s); // если нашли, то добавляем в листбокс
		}
}
fstr_in.Close();
//переключаемся на закладку "База данных" для просмотра выборки
this.tabControl1.SelectedIndex=1;		
}
< Лекция 8 || Лекция 9: 123 || Лекция 10 >