82183

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

Курсовая

Информатика, кибернетика и программирование

Результат каждого спортсмена определяется разностью между временем финиша и временем старта. Построить итоговую таблицу, расположив участников в порядке занятых мест с помощью метода сортировки Шелла. Составить список тех спортсменов, число промахов при стрельбе которых больше 4.

Русский

2015-02-26

374.5 KB

3 чел.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ  ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ «МИСиС»

ИНСТИТУТ_______________ИТАСУ_______________________________________

КАФЕДРА_________ИНЖЕНЕРНОЙ    КИБЕРНЕТИКИ______________________________ 

НАПРАВЛЕНИЕ_________________Энергосбережение_______________________________

КУРСОВАЯ
РАБОТА

на тему:_«Создание базы данных, содержащей сведения о двадцати сберегательных банках. Расположить список банков в алфавитном порядке с помощью метода сортировкидеревом»_______________________________________________________________________________________________________________________________________________________________

Студент________________________ ___________________________

Группа _______________________________________________________

Руководитель работы____________ _ 

Оценка________________________

Дата ________________________

Москва_________________20__


Содержание:

[0.0.0.1] НАПРАВЛЕНИЕ_________________Энергосбережение_______________________________

[1] Постановка задачи

[1.1] Текст задачи

[1.2]  Создать базу данных, содержащую сведения об участниках соревнований по биатлону для 20 спортсменов:

[1.3] фамилия и инициалы спортсмена,

[1.4]  страна,

[1.5]  время старта,

[1.6]  время финиша,

[1.7]  количество промахов при стрельбе,

[1.8]  дата проведения соревнования.

[1.9]  Результат каждого спортсмена определяется разностью между временем финиша и временем старта. Построить итоговую таблицу, расположив участников в порядке занятых мест с помощью метода сортировки Шелла. Составить список тех спортсменов, число промахов при стрельбе которых больше 4.
Данные задать самостоятельно.

[1.10] Формат данных

[2] Задачи и их реализация.

[2.1] 3) Печать результата

[2.2] История

[2.3] Пример

[3] Результат работы программы


Постановка задачи

Текст задачи

 Создать базу данных, содержащую сведения об участниках соревнований по биатлону для 20 спортсменов:

  •  фамилия и инициалы спортсмена,
  •   страна,
  •   время старта,
  •   время финиша,
  •   количество промахов при стрельбе,
  •   дата проведения соревнования.
  •   Результат каждого спортсмена определяется разностью между временем финиша и временем старта. Построить итоговую таблицу, расположив участников в порядке занятых мест с помощью метода сортировки Шелла. Составить список тех спортсменов, число промахов при стрельбе которых больше 4.
    Данные задать самостоятельно.

Формат данных

Данные считываются с txt файла. Они представлены в форме строк, элементы которых разделены “\t”.

Задачи и их реализация.

1) Создание структуры, поля которой будут содержать всю необходимую информацию о спортсменах.

public struct Biatlonist

   {

       public string surName;

       public string country;

       public TimeSpan startTime;

       public TimeSpan finishTime;

       public DateTime competitionDate;

       public int missesCount;

       

       public Biatlonist(string surName, string country, TimeSpan startTime, TimeSpan finishTime, int missesCount, DateTime competitionDate)

       {

           this.surName = surName;

           this.country = country;

           this.startTime = startTime;

           this.finishTime = finishTime;

           this.missesCount = missesCount;

           this.competitionDate = competitionDate;

       }

       

       // свойства возвращаюший результат каждого спортсмена -

       public TimeSpan Result

       {

           get { return finishTime - startTime; }

       }

   }

Описание переменных:

  1.  surName имя
  2.  country страна
  3.  startTime время старта
  4.  finishTime время финиша
  5.  competitionDate дата соревнования
  6.  missesCount кол.-во промохов

2) Чтение из файла. 

Для ввода из файла вначале открываю поток класса StreamReader, связываю его с файлом. StreamReader sr = new StreamReader(path);

Здесь sr – экземпляр класса StreamReader, а аргумент path передает конструктору строку, содержащую полный путь к файлу. Далее строки из файла по очереди считываются в переменную line, из которой далее, как обычно, извлекаются отдельные значения.

После окончания работы с объявленным  потоком, его следует закрыть методом Close:   sr.Close();

static void LoadFile(ref List<Biatlonist> lst)

       {

           string str;

           string path = "Sportsmen.txt";

           StreamReader sr = new StreamReader(path, Encoding.GetEncoding(1251));

           while ((str = sr.ReadLine()) != null)

           {

               string[] sp = str.Split('\t');

               lst.Add(new Biatlonist(sp[0],

                                       sp[1],

                                       TimeSpan.Parse(sp[2]),

                                       TimeSpan.Parse(sp[3]),

                                       int.Parse(sp[4]),

                                       DateTime.ParseExact(sp[5], "MM/dd/yyyy", provider)));

           }

           sr.Close();

       }

3) Печать результата

Для удобства создаю функцию для печати уже созданной структуры
static void Print(ref List<Biatlonist> lst)

       {

           foreach (var item in lst)

           {

               Console.WriteLine("{0,-17}{1,-10}{2,-10}{3,-10}{4,-5}{5,-15}{6,-3}", item.surName,

                                                                     item.country,

                                                                     item.startTime,

                                                                     item.finishTime,

                                                                     item.missesCount,

                                                                     item.competitionDate.Day.ToString() + "/" + item.competitionDate.Month.ToString() + "/" + item.competitionDate.Year.ToString(),

                                                                     item.Result);

           }        } Теперь можно в любое время обратиться к этой функции и вывести результат. Делать это придется не один раз, потому использование фукции – разумное решение.

Вывод списока спортсменов чьи промохи больше 4

foreach (Biatlonist item in lst)

           {

               if(item.missesCount > 4)

                   Console.WriteLine("{0,-17}{1,-10}{2,-10}{3,-10}{4,-5}{5,-15}{6,-3}", item.surName,

                                                                     item.country,

                                                                     item.startTime,

                                                                     item.finishTime,

                                                                     item.missesCount,

                                                                     item.competitionDate.Day.ToString() + "/" + item.competitionDate.Month.ToString() + "/" + item.competitionDate.Year.ToString(),

                                                                     item.Result);

           }

4)  Создание функции для записи данный в файл

 Выполняю аналогичные действия, как и при вводе данных: открытие потока класса StreamWriter, задаю имя потока и связываю его с файлом, предназначенным для размещения выводимых результатов, вывожу в этот поток необходимые результаты и закрываю поток оператором Close().

{

           StreamWriter sw = new StreamWriter("result.txt", false, Encoding.GetEncoding(1251));

           foreach (var item in lst)

               sw.WriteLine(

                  item.surName + '\t' +

                   item.country + '\t' +

                   Convert.ToString(item.startTime) + '\t' +

                   Convert.ToString(item.finishTime) + '\t' +

                   Convert.ToString(item.missesCount) + '\t' +

                   Convert.ToString(item.competitionDate.Day.ToString() + "/" + item.competitionDate.Month.ToString() + "/" + item.competitionDate.Year.ToString()) + '\t' +

                   Convert.ToString(item.Result));

           sw.Close();

       }

Сортировка

При сортировке Шелла сначала сравниваются и сортируются между собой значения, отстоящие один от другого на некотором расстоянии  (о выборе значения  см. ниже). После этого процедура повторяется для некоторых меньших значений , а завершается сортировка Шелла упорядочиванием элементов при  (то есть обычной сортировкой вставками). Эффективность сортировки Шелла в определённых случаях обеспечивается тем, что элементы «быстрее» встают на свои места (в простых методах сортировки, например, пузырьковой, каждая перестановка двух элементов уменьшает количество инверсий в списке максимум на 1, а при сортировке Шелла это число может быть больше).

История

Сортировка Шелла была названа в честь её изобретателя — Дональда Шелла, который опубликовал этот алгоритм в 1959 году.

Пример


Пусть дан список
  и выполняется его сортировка методом Шелла, а в качестве значений  выбраны .

На первом шаге сортируются подсписки , составленные из всех элементов , различающихся на 5 позиций, то есть подсписки , , , , .

В полученном списке на втором шаге вновь сортируются подсписки из отстоящих на 3 позиции элементов.

Процесс завершается обычной сортировкой вставками получившегося списка.

Программа

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

using System.Globalization;

namespace StructShellSort

{

   class Program

   {

       static List<Biatlonist> lst; // лист биатлонистов для сортировки        

       static CultureInfo provider = CultureInfo.InvariantCulture; // локализатор для даты

       static void Main(string[] args)

       {

           lst = new List<Biatlonist>(); // создание списка

           Console.WriteLine("******************************************************************************");

           Console.WriteLine("{0,-17}{1,-10}{2,-10}{3,-10}{4,-5} {5}   {6}", "И.Ф.", "Страна", "Старт", "Финиш", "Пром.", "Дата сорев.", "Результат");

           Console.WriteLine("******************************************************************************");

           LoadFile(ref lst);  // загружаем данные из файла в список

           Print(ref lst);     // печать списка до сортировки

           Console.WriteLine("\n---------------Сортировка списка методом Шелла---------------\n");

           ShellSort(ref lst); // сортируем список

           Print(ref lst);     // печать списка после сортировки

           

           // вывод тех спортсменов промохи которых больше 4

           Console.WriteLine("\nВывод тех спортсменов промохи которых больше 4\n");

           foreach (Biatlonist item in lst)

           {

               if(item.missesCount > 4)

                   Console.WriteLine("{0,-17}{1,-10}{2,-10}{3,-10}{4,-5}{5,-15}{6,-3}", item.surName,

                                                                     item.country,

                                                                     item.startTime,

                                                                     item.finishTime,

                                                                     item.missesCount,

                                                                     item.competitionDate.Day.ToString() + "/" + item.competitionDate.Month.ToString() + "/" + item.competitionDate.Year.ToString(),

                                                                     item.Result);

           }

           WriteFile(ref lst); // запись в файл

       }

       // сортировка Шелла

       public static void ShellSort(ref List<Biatlonist> lst)

       {

           int step = lst.Count / 2;//инициализируем шаг.

           while (step > 0)//пока шаг не 0

           {

               for (int i = 0; i < (lst.Count - step); i++)

               {

                   int j = i;

                   //будем идти начиная с i-го элемента

                   while (j >= 0 && lst[j].Result > lst[j + step].Result)

                   //пока не пришли к началу массива

                   //и пока рассматриваемый элемент больше

                   //чем элемент находящийся на расстоянии шага

                   {

                       //меняем их местами

                       Biatlonist temp = lst[j];

                       lst[j] = lst[j + step];

                       lst[j + step] = temp;

                       j--;

                   }

               }

               step = step / 2;//уменьшаем шаг

           }

       }

       // функция для добавления списка в файл

       public static void WriteFile(ref List<Biatlonist> lst)

       {

           StreamWriter sw = new StreamWriter("result.txt", false, Encoding.GetEncoding(1251));

           foreach (var item in lst)

               sw.WriteLine(

                  item.surName + '\t' +

                   item.country + '\t' +

                   Convert.ToString(item.startTime) + '\t' +

                   Convert.ToString(item.finishTime) + '\t' +

                   Convert.ToString(item.missesCount) + '\t' +

                   Convert.ToString(item.competitionDate.Day.ToString() + "/" + item.competitionDate.Month.ToString() + "/" + item.competitionDate.Year.ToString()) + '\t' +

                   Convert.ToString(item.Result));

           sw.Close();

       }

       // загрузка данных с текстового файла

       static void LoadFile(ref List<Biatlonist> lst)

       {

           string str;

           string path = "Sportsmen.txt";

           StreamReader sr = new StreamReader(path, Encoding.GetEncoding(1251));

           while ((str = sr.ReadLine()) != null)

           {

               string[] sp = str.Split('\t');

               lst.Add(new Biatlonist(sp[0],

                                       sp[1],

                                       TimeSpan.Parse(sp[2]),

                                       TimeSpan.Parse(sp[3]),

                                       int.Parse(sp[4]),

                                       DateTime.ParseExact(sp[5], "MM/dd/yyyy", provider)));

           }

           sr.Close();

       }

       static void Print(ref List<Biatlonist> lst)

       {

           foreach (var item in lst)

           {

               Console.WriteLine("{0,-17}{1,-10}{2,-10}{3,-10}{4,-5}{5,-15}{6,-3}", item.surName,

                                                                     item.country,

                                                                     item.startTime,

                                                                     item.finishTime,

                                                                     item.missesCount,

                                                                     item.competitionDate.Day.ToString() + "/" + item.competitionDate.Month.ToString() + "/" + item.competitionDate.Year.ToString(),

                                                                     item.Result);

           }

       }

   }

   public struct Biatlonist

   {

       public string surName; // имя

       public string country; // страна

       public TimeSpan startTime; // время старта

       public TimeSpan finishTime; // время финиша

       public DateTime competitionDate; // дата соревнования

       public int missesCount; // кол.-во промохов

       

       public Biatlonist(string surName, string country, TimeSpan startTime, TimeSpan finishTime, int missesCount, DateTime competitionDate)

       {

           this.surName = surName;

           this.country = country;

           this.startTime = startTime;

           this.finishTime = finishTime;

           this.missesCount = missesCount;

           this.competitionDate = competitionDate;

       }

       

       // свойства возвращаюший результат каждого спортсмена -

       public TimeSpan Result

       {

           get { return finishTime - startTime; }

       }

   }

}

Результат работы программы

Результат записанный в файл

Список использованной литературы:

  1.  Керниган, Брайан У., Ритчи, Деннис М. Язык программирования С, 2-е издание.: Пер. с англ. – М.: Издательский дом «Вильямс», 2012. – 304 с.: ил. – Парал. тит. англ.
  2.  Куренкова Т.В. Основы алгоритмизации и объектно-ориентированного программирования : учеб. пособие/ Т.В. Куренкова, Г.И. Светозарова. – М.: Изд. Дом МИСиС, 2011. – 197 с.
  3.  Светозарова Г.И., Козловский А.В., Сигитов Е.В. Современные методы программирования в примерах и задачах. – М.: Наука. Физматлит, 1995. – 427 с.
  4.  Сигитов Е.В. Информатика. Методы программирования и структуры данных: Учеб. пособие. –М.:Изд. Дом МИСиС, 2008. – 105 с.


 

А также другие работы, которые могут Вас заинтересовать

34063. Контроль за использованием и охраной земель: понятие, виды 35.5 KB
  Контроль за использованием и охраной земель: понятие виды Новый Земельный кодекс значительно расширил понятие контроля за использованием и охраной земель и дал классификацию его видов посвятив этому самостоятельную главу главу XII. В Земельном кодексе РСФСР 1991 г. хотя соответствующие отношения в нем и были выделены в отдельный раздел раздел X говорилось лишь о государственном контроле за использованием и охраной земель. В Земельном же кодексе Российской Федерации сказано также об иных его видах и кроме того используется обобщенное...
34064. Государственный земельный контроль: понятие, функции органов 33 KB
  Государственное регулирование земельных отношений является частью государственного управления в целом. Государственное регулирование земельных отношений это целенаправленная деятельность государственных органов по организации рационального использования земель и их охраны путем принятия экономикоправовых мер. Тем более что в настоящее время центр тяжести должен быть перемещен от командноадминистративного управления землей к заново разработанной системе экономического регулирования земельных отношений в России когда субъектами этих...
34065. Сравнение физических свойств и химического состава морской воды 834.27 KB
  Изучение литературных и интернет-источников по данной теме. Освоение методик ведения физических и химических исследований по изучению свойств и химического состава морской воды. Определение физических свойств морской воды: плотности, мутности, электропроводности. Определение химических компонентов воды: гидрокарбонат -ионов, сульфат- ионов, нитрат- ионов, хлорид ионов, бромид-ионов, уровень рН.
34066. Переоформление прав на земельные участки: основания, порядок 101 KB
  Любое из перечисленных прав подлежит государственной регистрации осуществляемой уполномоченным государственным органом в соответствии с Федеральным законом от 21 июля 1997 г. N 122ФЗ О государственной регистрации прав на недвижимое имущество и сделок с ним . Именно с момента государственной регистрации прав на земельный участок можно считать данные права возникшими. 8 ГК РФ права на имущество подлежащие государственной регистрации возникают с момента регистрации соответствующих прав на него если иное не установлено законом.
34067. Оборотоспособность земельных участков 41 KB
  Земельные участки изъятые из оборота не могут предоставляться в частную собственность а также быть объектами сделок предусмотренных гражданским законодательством. К ним относятся земельные участки занятые находящимися в федеральной собственности следующими объектами:1 государственными природными заповедниками и национальными парками;2 зданиями строениями и сооружениями в которых размещены для постоянной деятельности Вооруженные Силы Российской Федерации другие войска воинские формирования и органы;3 зданиями строениями и...
34068. Классификация, основания возникновения и прекращения земельных правоотношений 30 KB
  Классификация основания возникновения и прекращения земельных правоотношений. КЛАССИФИКАЦИЯ ЗЕМЕЛЬНЫХ ПРАВООТНОШЕНИЙ Существенные различия природных свойств земли и неодинаковость хозяйственного ее использования могут обусловливать самые разнообразные земельные отношения. Это позволяет говорить о классификации земельных отношений по основному хозяйственному назначению земель. Классификацию земельных правоотношений можно строить и по другим признакам в зависимости от того какую особенность земельных правоотношений мы намерены выделить...
34069. Управление в сфере использования и охраны земель 39 KB
  Управление в сфере использования и охраны земель. В основе государственного управления лежит право территориального верховенства государства которое позволяет с одной стороны осуществлять защиту земельных прав и оказывать содействие физическим и юридическим лицам в реализации земельных прав напр. любое лицо может получить выписку из земельного кадастра с другой стороны это право позволяет привлекать виновных лиц к ответственности и выявлять в целом нарушения земельного законодательства и предпринимать соответствующие меры....
34070. Система и полномочия органов управления земельными ресурсами 24 KB
  Система и полномочия органов управления земельными ресурсами. Каждый вышестоящий уровень координирует действия нижестоящих а каждый иерархический уровень управления содержит все функции организации субъекта управления. Субъект управления на вышестоящем уровне осуществляет координирование организации субъектов управления на нижестоящих уровнях исходя из принятых для конкретного административнотерриториального образования критериев эффективности рационального использования земель. Система органов государственного управления земельными...
34071. Государственный земельный кадастр: понятие, структура, порядок ведения 38 KB
  Государственный кадастр недвижимости. âО государственном кадастре недвижимостиâ вступил в силу с 01. Государственный кадастровый учёт это действия уполномоченного органа по внесению в Государственный кадастр недвижимости сведений о недвижимом имуществе которые подтверждают существование такой недвижимости как индивидуальноопределённой вещи подтверждают прекращение существования такой недвижимости а также иные сведения предусмотренные ФЗ âОâ государственном кадастре недвижимостиâ. Государственный кадастр недвижимости ...