Проблема с поиском
От: JenyaSafronov  
Дата: 26.04.13 18:13
Оценка:
проблема заключается в том, что программа не хочет искать. Подскажите в чем косяк?
Программа не доделана, но пока не разберусь с писком делать дальше смысла нету(


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace ConsoleApplication1
{
    struct writer1
    {
        public string kklient;//клиент
        public string name;//Имя
        public string fam;//Фамилия
        public string othes;//Отчество
        public string pass;//Номер паспорта
        public string serpass;//Серия паспорта
        public string datapass;//Дата выдачи




        public string kattovar;//Категория товара
        public string tname;//Название товара
        public string prim;//Примечание для товара
        public string kattov;//Категория товара(сдача)
        public string klient;//клиент(сдача)
        public string optov;//описание товара
        public string datasdach;//дата сдачи
        public string datavozvr;//дата возврата
        public string sum;//Сумма
        public string kom;//Комиссионные
 
    }
    class Program
    {
        static void Main()
        {
            int w = 1;
            string s3;
            while (w == 1)
            {
                writer1[] kas = new writer1[100];
                string s = "";// поиска
                int i = 0;//счётчик
                char n;//переменная для выбора
                Console.Clear();
                Console.Title = "Ломбард";
                Console.WriteLine("Список действий");
                Console.WriteLine("1-Добавление нового клиента");
                Console.WriteLine("2-Категории товаров");
                Console.WriteLine("3-Сдача в ломбард");
                Console.WriteLine("4-Поиск");
                Console.WriteLine("5-Выход");
 
                n = Convert.ToChar(Console.ReadLine());
                switch (n)
                {
                    case '1':
                        {
                            Console.Title = "Новый клиент ";
                            Console.Clear();
                            StreamWriter fs = new StreamWriter("1.txt", true);//открываем файл для записи
                            Console.Write("Номер клиента");
                            fs.WriteLine(Console.ReadLine());
                            Console.Write("Фамилия: ");
                            fs.WriteLine(Console.ReadLine());
                            Console.Write("Имя: ");
                            fs.WriteLine(Console.ReadLine());
                            Console.Write("Отчество: ");
                            fs.WriteLine(Console.ReadLine());
                            Console.Write("Номер паспорта ");
                            fs.WriteLine(Console.ReadLine());
                            Console.Write("Серия ");
                            fs.WriteLine(Console.ReadLine());
                            Console.Write("дата выдачи ");
                            fs.WriteLine(Console.ReadLine());
                            fs.WriteLine("____________________________");
                            fs.Close();
 
 
                        } break;
 
                    case '2':
                        {
                            Console.Title = "Категории товаров";
                            Console.Clear();
                            StreamWriter fs = new StreamWriter("2.txt", true);//открываем файл для записи
 
                            Console.Write("Номер клиента");
                            fs.WriteLine(Console.ReadLine());
                            Console.Write("Категория товара ");
                            fs.WriteLine(Console.ReadLine());
 
                            Console.Write("Название ");
                            fs.WriteLine(Console.ReadLine());
 
                            Console.Write("Примичание ");
                            fs.WriteLine(Console.ReadLine());
 
                            fs.WriteLine("____________________________");
 
                            fs.Close();
 
 
                        } break;
 
                    case '3':
                        {
                            Console.Title = "Сдача в ломбард ";
                            Console.Clear();
                            StreamWriter fs = new StreamWriter("3.txt", true);//открываем файл для записи
 
                            Console.Write("Категория товара ");
                            fs.WriteLine(Console.ReadLine());
 
                            Console.Write("клиент ");
                            fs.WriteLine(Console.ReadLine());
 
                            Console.Write("Описание товара ");
                            fs.WriteLine(Console.ReadLine());
 
                            Console.Write("Дата сдачи ");
                            fs.WriteLine(Console.ReadLine());
 
                            Console.Write("Дата возврата ");
                            fs.WriteLine(Console.ReadLine());
                            Console.Write("сумма ");
                            fs.WriteLine(Console.ReadLine());
                            Console.Write("Комиссионные ");
                            fs.WriteLine(Console.ReadLine());
 
                            fs.WriteLine("____________________________");
 
                            fs.Close();
 
 
                        } break;
 
 
                    case '4': //поиск
                        {
                            char pn;
 
                            Console.Clear();
                            Console.Title = "ПОИСК: ";
                            Console.WriteLine("1-поиск по номеру клиента");
                            Console.WriteLine("2-поиск по фамилии клиента:");
                            Console.Write("3-поиск по названию товара ");
                            Console.WriteLine();
 
                            pn = Convert.ToChar(Console.ReadLine());
                            if (pn == '1')
                            {
                                Console.Title = "поиск по номеру клиента: ";
                                Console.Clear();
                                Console.Write("введите номер клиента: ");
                                s = Console.ReadLine();
                                string s1; 
 
                                Console.WriteLine("-----------------------------");
                                StreamReader fr = new StreamReader("1.txt");//открываем файл для чтения
 
                                i = 0;
                                while (fr.Peek() != -1)
                                // while (( s1 = fr.ReadLine() ) != null)
                                // for (i = 1; i < kas.Length; i++)
                                {
                                    kas[i].kklient = fr.ReadLine();
                                    kas[i].name = fr.ReadLine();
                                    kas[i].fam = fr.ReadLine();
                                    kas[i].othes = fr.ReadLine();
                                    kas[i].pass = fr.ReadLine();
                                    kas[i].serpass = fr.ReadLine();
                                    kas[i].datapass = fr.ReadLine();
                                    s3 = fr.ReadLine();
                                    if (s == kas[i].kklient)
                                    {
                                        Console.WriteLine("Номер клиента " + kas[i].kklient);
                                        Console.WriteLine("Имя клиента: " + kas[i].name);
                                        Console.WriteLine("Фамилия клиента: " + kas[i].fam);
                                        Console.WriteLine("отчество " + kas[i].othes);
                                        Console.WriteLine("Номер паспорта " + kas[i].pass);
                                        Console.WriteLine("Серия паспорта " + kas[i].serpass);
                                        Console.WriteLine("Дата выдачи" + kas[i].datapass);
 
                                    }
                                    i++;
                                }
 
                                Console.WriteLine();
                                //Console.Clear();
                                fr.Close();
 
                            }
 
                            if (pn == '2')
                            {
                                StreamReader fr = new StreamReader("1.txt");//открываем файл для чтения
                                while (fr.Peek() != -1)
                                {
                                    i++;
                                    kas[i].kklient = fr.ReadLine();
                                    kas[i].name = fr.ReadLine();
                                    kas[i].fam = fr.ReadLine();
                                    kas[i].othes = fr.ReadLine();
                                    kas[i].pass = fr.ReadLine();
                                    kas[i].serpass = fr.ReadLine();
                                    kas[i].datapass = fr.ReadLine();
 
                                }
                                fr.Close();
 
                                Console.Title = "поиск по фамилии клиента: ";
                                string ss = "";
                                Console.Write("введите клиента врача: ");
                                s = Console.ReadLine();
 
 
                                for (i = 0; i < kas.Length; i++)
                                {
                                    if (s == kas[i].fam)
                                    {
                                        ss = ss + '\n' + "Клиент №: " + kas[i].kklient + '\n' + "Имя: " + kas[i].name + '\n' + "Фамилия: " + kas[i].fam + '\n' + "Отчество: " + kas[i].othes + "Номер паспорта: " + kas[i].pass + "Серия " + kas[i].serpass + '\n' + "Дата выдачи" + kas[i].datapass; 
                                    }
                                } Console.WriteLine(ss);
 
                            }
                            if (pn == '3')
                            {
                                StreamReader fr = new StreamReader("2.txt");//открываем файл для чтения
                                while (fr.Peek() != -1)
                                {
                                    i++;
                                    kas[i].kklient = fr.ReadLine();
                                    kas[i].kattovar = fr.ReadLine();
                                    kas[i].tname = fr.ReadLine();
                                    kas[i].prim = fr.ReadLine();
 
                                }
                                fr.Close();
 
                                Console.Title = "поиск по названию товара ";
                                string ss = "";
                                Console.Write("введите название товара ");
                                s = Console.ReadLine();
 
 
                                for (i = 0; i < kas.Length; i++)
                                {
                                    if (s == kas[i].tname)
                                    {
                                        ss = ss + '\n' + "Клиент № " + kas[i].kklient + '\n' + "Категория товара " + kas[i].kattovar + '\n' + "Название товара: " + kas[i].tname + '\n' + "Примечание" + kas[i].prim + '\n' + "---------------------------------";
                                    }
                                } Console.WriteLine(ss);
 
                            }
 
 
                        } break;
 
 
                    case '5': { w = 2; } break;
                    default:
                        { } break;
 
                }
 
            }
        }
    }
}
Re: Проблема с поиском
От: Vaako Украина  
Дата: 26.04.13 22:39
Оценка:
Здравствуйте, JenyaSafronov, Вы писали:

JS>проблема заключается в том, что программа не хочет искать. Подскажите в чем косяк?

JS>Программа не доделана, но пока не разберусь с писком делать дальше смысла нету(

Когда вы записываете файл у вас в 1 case записывается 8 строк.
Во втором — 4 строки. В третьем опять 8 строк.

В первом поиске вы считываете по 8 строк, во втором — по 7 строк.

Короче у вас формат записи сбивается окончательно и бесповоротно.
Проверить это просто. Выводите в первом или втором поиске все считанные строки для kas[i].kklient.
Вы удивитесь увидев там совсем не то содержимое что нужно. И вообще, кто так сохраняет данные?
Продолжать делать программу с таким форматом данных однозначно не следут даже если бы поиск вдруг заработал.
Re[2]: Проблема с поиском
От: JenyaSafronov  
Дата: 27.04.13 05:20
Оценка:
Здравствуйте, Vaako, Вы писали:

V>Здравствуйте, JenyaSafronov, Вы писали:


JS>>проблема заключается в том, что программа не хочет искать. Подскажите в чем косяк?

JS>>Программа не доделана, но пока не разберусь с писком делать дальше смысла нету(

V>Когда вы записываете файл у вас в 1 case записывается 8 строк.

V>Во втором — 4 строки. В третьем опять 8 строк.

V>В первом поиске вы считываете по 8 строк, во втором — по 7 строк.


V>Короче у вас формат записи сбивается окончательно и бесповоротно.

V>Проверить это просто. Выводите в первом или втором поиске все считанные строки для kas[i].kklient.
V>Вы удивитесь увидев там совсем не то содержимое что нужно. И вообще, кто так сохраняет данные?
V>Продолжать делать программу с таким форматом данных однозначно не следут даже если бы поиск вдруг заработал.
Так помогите довести до ум
Re[3]: Проблема с поиском
От: Vaako Украина  
Дата: 27.04.13 18:27
Оценка:
Здравствуйте, JenyaSafronov, Вы писали:

JS>Так помогите довести до ум :)


Ну смотря сколько будет записей в файле, если мого то лучше базу данных использовать.
Если записей мало то можно сериализовать и десериализовать весь список, а поиск производить уже над самим списком.

Иначе придется писать и читать сразу все поля из вашей структуры

struct writer1
{
public string kklient;//клиент
public string name;//Имя
public string fam;//Фамилия
public string othes;//Отчество
public string pass;//Номер паспорта
public string serpass;//Серия паспорта
public string datapass;//Дата выдачи




public string kattovar;//Категория товара
public string tname;//Название товара
public string prim;//Примечание для товара
public string kattov;//Категория товара(сдача)
public string klient;//клиент(сдача)
public string optov;//описание товара
public string datasdach;//дата сдачи
public string datavozvr;//дата возврата
public string sum;//Сумма
public string kom;//Комиссионные

}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.