예제 #1
0
        private void openBT_Click(object sender, EventArgs e)
        {
            DialogResult dr = new DialogResult();

            if (!Directory.Exists(Form1.supermarketXmlPath))
            {
                //если папка XML не сущестует, то создать ее
                Directory.CreateDirectory(Form1.supermarketXmlPath);
            }

            openFileDialog.InitialDirectory = Form1.supermarketXmlPath;
            openFileDialog.Filter           = "Файлы XML (*.xml)|*.xml";
            dr = openFileDialog.ShowDialog();
            if (dr == DialogResult.OK)
            {
                openTextBox.Text = openFileDialog.FileName;
                SectionGoods tmpSection = new SectionGoods();
                if (tmpSection.Deserialize(openFileDialog.FileName))
                {
                    openResultLabel.ForeColor = Color.Green;
                    openResultLabel.Text      = "Выгрузка секции \"" + tmpSection.Name + "\" прошла успешно";
                    NewSectionName            = tmpSection.Name;
                    addBT.Enabled             = true;
                }
                else
                {
                    openResultLabel.ForeColor = Color.Red;
                    openResultLabel.Text      = "Выгрузка прошла неуспешно";
                }
            }
        }
        public bool Deserialize(string path)
        {
            /*if (path == "")
             *  path = defaultPath + "section.xml";*/

            //XmlSerializer ser = new XmlSerializer(typeof(SectionGoods));

            var dcss = new DataContractSerializerSettings {
                PreserveObjectReferences = true
            };
            var dcs = new DataContractSerializer(typeof(SectionGoods), dcss);

            try
            {
                if (File.Exists(path))
                {
                    using (FileStream st = new FileStream(path, FileMode.Open))
                    {
                        SectionGoods goods = new SectionGoods();
                        //goods = (SectionGoods)ser.Deserialize(st);
                        goods = (SectionGoods)dcs.ReadObject(st);

                        this.Clear();

                        this.Count = goods.Count;
                        this.Name  = goods.Name;
                        this.head  = goods.head;
                    }
                    return(true);
                }
                else
                {
                    Console.WriteLine("Файла не существует.");
                    return(false);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return(false);
            }
        }
 public int AddNewSection(SectionGoods section)
 {
     if (GetSection(section.Name) != null) //проверка на существование секции с именем sectionName
     {                                     //если данное название используется в другой секции, не добавлять новую секцию
         return(NAME_ERROR);
     }
     else
     {
         if (IsQueueFull())
         {   //список заполнен
             return(QUEUE_FULL_EMPTY_ERROR);
         }
         else
         {
             if (IsQueueEmpty())     //список пуст => создается первый элемент с указателями...
             {
                 front = rear = 0;   //на первый и крайний элементы очереди равными 0
             }
             else
             {   //если список не пуст, указатель на первый элемент очереди front не трогаем
                 if (rear == size - 1 && front != 0)
                 {
                     //если указатель на крайний элемент очереди указывает на последний элемент массива
                     //и указатель на первый элемент очереди не указывает на первый элемент массива
                     //то есть очередь не заполнена... повторная проверка
                     rear = 0;   //то установить указатель на крайний элемент очереди на первый элемент массива
                 }
                 else
                 {
                     rear++;     //ИНАЧЕ просто увеличиваем на один только указатель на крайний элемент очереди
                 }
             }
             //занесение секции в массив с индексом rear
             sectionsQueue[rear] = section;
             sectionAmount++;    //увеличение количества элементов в очереди
             return(rear);       //вернуть указатель на добавленный новый элемент
         }
     }
 }