Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Тестирование администраторского приложения↑ ⇐ ПредыдущаяСтр 2 из 2 Содержание книги
Поиск на нашем сайте
Администраторская часть приложения предоставляет функционал добавления, редактирования и удаления информации в хранилище. При запуске приложения для изменения информации пользователю предоставляется возможность выбора таблицы для последующего изменения/добавления/удаления, что отображено на рисунке 8.1.
Рисунок 8.1.1 – Главная страница администраторского приложения
Работа с информацией во всех таблицах осуществляется по схожим принципам, следовательно, достаточно будет описать процесс и основные моменты по работе только с одной из них. Правильная последовательность действий и ознакомление с интерфейсом будет описана на примере таблицы «Stations». На рисунке 8.2 отображен вид страницы с информацией по станциям.
Рисунок 8.1.2 – Вид страницы «Stations» для работы с информацией
Далее детально будет описана работа с каждой кнопкой данной страницы. Для добавления новой записи необходимо воспользоваться кнопкой «Добавить новую запись». После ее нажатия необходимо заполнить информацией выпавшие поля. Далее кнопкой «Вставить» фиксируем занесение данных в хранилище. Пример заполнения формы предоставлен на рисунке 8.3.
Рисунок 8.1.3 – Пример заполнения данных Кнопка «Изменить» имеет такой же интерфейс как и кнопка «Добавить новую запись», с одним лишь отличием: поля уже заполнены исходной информацией. Кнопка «Удалить» соответственно предназначена для удаления текущей записи из хранилища. Дополнительные возможности представлены кнопками: - «Информация» – полная информация о городе, - «ViewTransits» – просмотр фактов, связанных с выбранным городом. Работа с остальными элементами хранилища выполняется по тем же принципам и имеет понятный интерфейс.
Тестирование клиентского приложения
Надстройка в программе выглядит следующим образом:
Рисунок 8.2.1
Анализ содержимого хранилища данных будет представлен в виде круговых диаграмм. Рассмотрим представлении на следующих примерах: 1) определение количества проданных билетов в зависимости от года (рисунок 8.2.2); 2) определение количества маршрутов по областям (рисунок 8.2.3).
Рисунок 8.2.2
Рисунок 8.2.3
При выборе анализа самых прибыльных рейсов, мы можем увидеть первых 7 по величине прибыли рейсов и их численное значение прибыли за весь наблюдаемый период: Прогноз позволяет посмотреть количества продаваемых билетов по данному маршруту с учётом сезонности в будущем на основании данных нескольких предыдущих лет. Используется линия тренда:
Рисунок 8.2.3 ЗАКЛЮЧЕНИЕ
Система «Анализ и прогнозирование потребности в железнодорожном транспорте на основе данных о перевозках» реализована довольно качественно. Поставленная цель достигнута – оптимизировали учёт перевозок, а также ввели контроль потребности в железнодорожном транспорте с возможностью построения прогноза. Весь функционал, определенный на этапе спецификации системы выполнен: - Определение самых убыточных и прибыльных рейсов; - Анализ проданных билетов по конкретному рейсу осуществляется на основе выбранного времени отправления в заданном направлении и купленных билетов по каждому из типов вагонов; - Анализ потребности в рейсах за границу осуществляется на основе выбранной страны либо города прибытия; - Анализ потребности в ж/д транспорте на основе выбранного пункта отправления и прибытия по всем рейсам за день; - Анализ потребности в транспорте в зависимости от времени года; - Прогнозирование потребности в ж/д транспорте на основе осуществлённых перевозок. В результате тестирования разработанной системы явных недочетов не выявлено. Но не исключается возможность усовершенствования данного проекта, например, добавление новых параметров для анализа, а также прогнозирование более конкретных параметров. СПИСОК ЛИТЕРАТУРЫ
[1] Чарльз Петцольд. Программирование в тональности С#. 2-е изд. – Русская Редакция, 2004г. – 512с. [2] http://hubpages.com/hub/How-To-Program-with-Excel-and-C-using-a-Ribbon - Программирование в MSExcel. [3] Мартин Фаулер. UML основы. Четвертое издание. – “Вильямс”, 2007г. – 162 с. [4] Буч Г., Якобсон А., Рамбо Дж. UML. Классика CS. 2-е изд. / Пер. с англ.; Под общей редакцией проф. С. Орлова — СПб.: Питер, 2006. — 736 с [5] ГрейдиБуч, Джеймс Рамбо, Айвар Джекобсон Язык UML. Руководство пользователя = TheUnifiedModelingLanguageuserguide. — 2. — М., СПб.: «ДМК Пресс», «Питер», 2004. — 432 с. [6] http://softru.ru/down/o-849.html - компьютерная программа «Автотранспорт: учет и анализ 4.70» [7] http://www.programmon.ru/VBA/28.html - Линия тренда. ПРИЛОЖЕНИЕ А (обязательное) Рисунок А.1 - Контекстная диаграмма Рисунок А.2 - Декомпозиция контекстной диаграммы Рисунок А.3 - Декомпозиция блока «Собрать данные» Рисунок А.4 – Декомпозиция блока «Выбрать параметры для анализа/прогнозирования» Рисунок А.5 – Декомпозиция блока «Обработать данные» Рисунок А.6 – Декомпозиция блока «Сделать выборку по заданным параметрам» Рисунок А.7 – декомпозиция блока «Сформировать результат» ПРИЛОЖЕНИЕ Б (обязательное)
Рисунок Б.1 – Общая блок-схема работы системы Рисунок Б.2Блок-схема функции анализа потребности в транспорте в зависимости от времени ПРИЛОЖЕНИЕ В (обязательное) Листинг скрипта генерации базы данных
USE[D:\ÊÏ\RAIL\RAIL_TRANSPORT.MDF] GO /****** Object: Table [dbo].[Wagon] Script Date: 05/17/2011 02:30:50 ******/ SETANSI_NULLSON GO SETQUOTED_IDENTIFIERON GO CREATETABLE[dbo].[Wagon]( [id_wagon][int]NOTNULL, [type_wagon][nchar](30)NOTNULL, CONSTRAINT[PK_wagon]PRIMARYKEYCLUSTERED ( [id_wagon]ASC )WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY] )ON[PRIMARY] GO /****** Object: Table [dbo].[Type_train] Script Date: 05/17/2011 02:30:50 ******/ SETANSI_NULLSON GO SETQUOTED_IDENTIFIERON GO CREATETABLE[dbo].[Type_train]( [id_type][int]NOTNULL, [type_train][nchar](20)NOTNULL, CONSTRAINT[PK_Type_train]PRIMARYKEYCLUSTERED ( [id_type]ASC )WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY] )ON[PRIMARY] GO /****** Object: Table [dbo].[Period] Script Date: 05/17/2011 02:30:50 ******/ SETANSI_NULLSON GO SETQUOTED_IDENTIFIERON GO CREATETABLE[dbo].[Period]( [id_period][int]NOTNULL, [daily][int]NOTNULL, [even][int]NOTNULL, [uneven][int]NOTNULL, CONSTRAINT[PK_Period]PRIMARYKEYCLUSTERED ( [id_period]ASC )WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY] )ON[PRIMARY] GO /****** Object: Table [dbo].[Date_trans] Script Date: 05/17/2011 02:30:50 ******/ SETANSI_NULLSON GO SETQUOTED_IDENTIFIERON GO CREATETABLE[dbo].[Date_trans]( [id_date][int]NOTNULL, [day_trans][int]NOTNULL, [month_trans][int]NOTNULL, [year_trans][int]NOTNULL, CONSTRAINT[PK_Date_trans]PRIMARYKEYCLUSTERED ( [id_date]ASC )WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY] )ON[PRIMARY] GO /****** Object: Table [dbo].[Country] Script Date: 05/17/2011 02:30:50 ******/ SETANSI_NULLSON GO SETQUOTED_IDENTIFIERON GO CREATETABLE[dbo].[Country]( [id_country][int]NOTNULL, [name_country][nchar](20)NOTNULL, CONSTRAINT[PK_Country]PRIMARYKEYCLUSTERED ( [id_country]ASC )WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY] )ON[PRIMARY] GO /****** Object: Table [dbo].[City] Script Date: 05/17/2011 02:30:50 ******/ SETANSI_NULLSON GO SETQUOTED_IDENTIFIERON GO CREATETABLE[dbo].[City]( [id_city][int]NOTNULL, [id_country][int]NOTNULL, [name_city][nchar](20)NOTNULL, CONSTRAINT[PK_City_1]PRIMARYKEYCLUSTERED ( [id_city]ASC, [id_country]ASC )WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY] )ON[PRIMARY] GO /****** Object: Table [dbo].[Train] Script Date: 05/17/2011 02:30:50 ******/ SETANSI_NULLSON GO SETQUOTED_IDENTIFIERON GO CREATETABLE[dbo].[Train]( [id_train][int]NOTNULL, [id_type][int]NOTNULL, CONSTRAINT[PK_Train]PRIMARYKEYCLUSTERED ( [id_train]ASC, [id_type]ASC )WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY] )ON[PRIMARY] GO /****** Object: Table [dbo].[Transit] Script Date: 05/17/2011 02:30:50 ******/ SETANSI_NULLSON GO SETQUOTED_IDENTIFIERON GO CREATETABLE[dbo].[Transit]( [amount_places][int]NOTNULL, [amount_tickets][int]NOTNULL, [price_ticket][int]NOTNULL, [time_dep][time](0)NOTNULL, [costs][int]NOTNULL, [id_train][int]NOTNULL, [id_wagon][int]NOTNULL, [id_type][int]NOTNULL, [id_date][int]NOTNULL, [id_city_dep][int]NOTNULL, [id_city_dest][int]NOTNULL, [id_country_dep][int]NOTNULL, [id_contry_dest][int]NOTNULL, [id_period][int]NOTNULL, CONSTRAINT[PK_Transit]PRIMARYKEYCLUSTERED ( [id_train]ASC, [id_wagon]ASC, [id_type]ASC, [id_date]ASC, [id_city_dep]ASC, [id_city_dest]ASC, [id_country_dep]ASC, [id_contry_dest]ASC, [id_period]ASC )WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY] )ON[PRIMARY] GO /****** Object: ForeignKey [FK_City_Country] Script Date: 05/17/2011 02:30:50 ******/ ALTERTABLE[dbo].[City]WITHCHECKADDCONSTRAINT[FK_City_Country]FOREIGNKEY([id_country]) REFERENCES[dbo].[Country]([id_country]) GO ALTERTABLE[dbo].[City]CHECKCONSTRAINT[FK_City_Country] GO /****** Object: ForeignKey [FK_Train_Type_train] Script Date: 05/17/2011 02:30:50 ******/ ALTERTABLE[dbo].[Train]WITHCHECKADDCONSTRAINT[FK_Train_Type_train]FOREIGNKEY([id_type]) REFERENCES[dbo].[Type_train]([id_type]) GO ALTERTABLE[dbo].[Train]CHECKCONSTRAINT[FK_Train_Type_train] GO /****** Object: ForeignKey [FK_Transit_CityDep] Script Date: 05/17/2011 02:30:50 ******/ ALTERTABLE[dbo].[Transit]WITHCHECKADDCONSTRAINT[FK_Transit_CityDep]FOREIGNKEY([id_city_dep],[id_country_dep]) REFERENCES[dbo].[City]([id_city],[id_country]) GO ALTERTABLE[dbo].[Transit]CHECKCONSTRAINT[FK_Transit_CityDep] GO /****** Object: ForeignKey [FK_Transit_CityDest] Script Date: 05/17/2011 02:30:50 ******/ ALTERTABLE[dbo].[Transit]WITHCHECKADDCONSTRAINT[FK_Transit_CityDest]FOREIGNKEY([id_city_dest],[id_contry_dest]) REFERENCES[dbo].[City]([id_city],[id_country]) GO ALTERTABLE[dbo].[Transit]CHECKCONSTRAINT[FK_Transit_CityDest] GO /****** Object: ForeignKey [FK_Transit_Date_trans] Script Date: 05/17/2011 02:30:50 ******/ ALTERTABLE[dbo].[Transit]WITHCHECKADDCONSTRAINT[FK_Transit_Date_trans]FOREIGNKEY([id_date]) REFERENCES[dbo].[Date_trans]([id_date]) GO ALTERTABLE[dbo].[Transit]CHECKCONSTRAINT[FK_Transit_Date_trans] GO /****** Object: ForeignKey [FK_Transit_Period] Script Date: 05/17/2011 02:30:50 ******/ ALTERTABLE[dbo].[Transit]WITHCHECKADDCONSTRAINT[FK_Transit_Period]FOREIGNKEY([id_period]) REFERENCES[dbo].[Period]([id_period]) GO ALTERTABLE[dbo].[Transit]CHECKCONSTRAINT[FK_Transit_Period] GO /****** Object: ForeignKey [FK_Transit_Train] Script Date: 05/17/2011 02:30:50 ******/ ALTERTABLE[dbo].[Transit]WITHCHECKADDCONSTRAINT[FK_Transit_Train]FOREIGNKEY([id_train],[id_type]) REFERENCES[dbo].[Train]([id_train],[id_type]) GO ALTERTABLE[dbo].[Transit]CHECKCONSTRAINT[FK_Transit_Train] GO /****** Object: ForeignKey [FK_Transit_Wagon] Script Date: 05/17/2011 02:30:50 ******/ ALTERTABLE[dbo].[Transit]WITHCHECKADDCONSTRAINT[FK_Transit_Wagon]FOREIGNKEY([id_wagon]) REFERENCES[dbo].[Wagon]([id_wagon]) GO ALTERTABLE[dbo].[Transit]CHECKCONSTRAINT[FK_Transit_Wagon] GO ПРИЛОЖЕНИЕ Г (обязательное) Листинг алгоритмов реализующих бизнес-логику
Функция подключения к базе данных: publicstaticSqlConnection Connect() { myConnection = newSqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=D:\\КП\\rail\\rail_transport.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"); myConnection.Open(); returnmyConnection;
}
Функция анализа занятости рейсов за вчерашний день по заданному направлению: publicstaticintanalysByTime(Microsoft.Office.Interop.Excel.WorksheetactiveWorksheet) { clearDiagram(); clearRows(); transL = newList<Transit>(); SqlDataReadermyReader = null; DateTimemyDate = DateTime.Now; stringstrDate = myDate.Year.ToString() + '.' + myDate.Month.ToString() + '.' + myDate.Day.ToString();
myDate = myDate.AddDays(-1); intcurDay = myDate.Day; intcurMonth = myDate.Month; intcurYear = myDate.Year; int number = 0; introwCount = 1; double tick = 0; doublepl = 0; double[] per; double[] tickets; double[] places;
myCommand = newSqlCommand("select * from Transit inner join Date_trans on Transit.id_date=Date_trans.id_date where id_city_dep=" + transit.getIdCityDep() + " and id_city_dest=" + transit.getIdCityDest() + " and day_trans = " + curDay + " and month_trans = " + curMonth + " and year_trans = " + curYear, myConnection); myReader = myCommand.ExecuteReader(); int i = 0; while (myReader.Read()) { number++; } myReader.Close();
String[] id_w = newString[number]; for (int m = 0; m < number; m++) { id_w[m] = ""; }
myReader = myCommand.ExecuteReader(); while (myReader.Read()) {
rowCount++; Transit trans = newTransit(); trans.setAmountTickets(Convert.ToInt32(myReader["amount_tickets"].ToString())); trans.setAmountPlaces(Convert.ToInt32(myReader["amount_places"].ToString())); trans.setTimeDep(TimeSpan.Parse(myReader["time_dep"].ToString())); trans.setIdWagon(Convert.ToInt32(myReader["id_wagon"].ToString()));
if (!id_w.Contains(myReader["time_dep"].ToString())) { id_w[i] = myReader["time_dep"].ToString(); }
transL.Add(trans);
i++; } myReader.Close();
intcount_type = 0; int j = 2; for (int m = 0; m <id_w.Length; m++) {
if (!id_w[m].Equals("")) { activeWorksheet.Cells[j, 1] = id_w[m]; j++; count_type++; } } intnn = transL.Count; tickets = newdouble[count_type]; places = newdouble[count_type]; count_type = 0;
for (i = 0; i <tickets.Length; i++) { tickets[i] = 0.0; places[i] = 0.0; } for (i = 0; i <id_w.Length; i++) { if (!id_w[i].Equals("")) { for (j = 0; j <transL.Count; j++) { if (transL[j].getTimeDep().Equals(TimeSpan.Parse(id_w[i]))) { tickets[count_type] += transL[j].getAmountTickets(); places[count_type] += transL[j].getAmountPlaces();
} } count_type++; }
} rowCount = countPercent(count_type, tickets, places, activeWorksheet); if (rowCount!= 2) { if (activeWorksheet!= null) { activeWorksheet.Cells[1, 1] = "Времяотправления"; activeWorksheet.Cells[1, 2] = "% ";
} } int f;
returnrowCount; }
Функцияпостроениядиаграммы:
privatestaticvoiddrawDiargamm(introwCount, Microsoft.Office.Interop.Excel.WorksheetactiveWorksheet) { objectmisValue = System.Reflection.Missing.Value;
// объектыграфиков ChartObjectsxlCharts; ChartObjectchartObj; Microsoft.Office.Interop.Excel.Chart chart; bool graph = false;
xlCharts = (Microsoft.Office.Interop.Excel.ChartObjects)activeWorksheet.ChartObjects(Type.Missing); chartObj = (Microsoft.Office.Interop.Excel.ChartObject)xlCharts.Add(10, 80, 450, 300);
chart = chartObj.Chart; String n = chart.Name; StringnL = chart.Legend.Name;
graph = true; Excel.Axis axis = (Excel.Axis)chart.Axes(Excel.XlAxisType.xlValue, Excel.XlAxisGroup.xlPrimary); axis.HasTitle = true; axis.AxisTitle.Text = "% занятости";
chart.HasTitle = true; chart.ChartTitle.Text = "Диаграммаанализа";
// выбираемдиапазон Microsoft.Office.Interop.Excel.RangechartRange = activeWorksheet.get_Range("A2", "B" + (rowCount - 1));
chart.SetSourceData(chartRange, misValue);
// типграфика chart.Type = 3;
}
|
||||
Последнее изменение этой страницы: 2016-04-07; просмотров: 223; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.43.244 (0.012 с.) |