![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Тестирование администраторского приложенияСодержание книги
Поиск на нашем сайте
Администраторская часть приложения предоставляет функционал добавления, редактирования и удаления информации в хранилище. При запуске приложения для изменения информации пользователю предоставляется возможность выбора таблицы для последующего изменения/добавления/удаления, что отображено на рисунке 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; просмотров: 229; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.248.107 (0.009 с.) |