DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Створення проекту в Visual Studio 2010 та командного проекту в TFS. Розробка архітектури програмної системи та створення діаграм

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2014
Тип роботи:
Звіт
Предмет:
Інженерія програмного забеспечення

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” / Кафедра ЕОМ Звіт З лабораторних роботи №1, 2, 3, 4 з дисципліни: «Інженерія програмного забезпечення ч.2» на тему: «Створення проекту в Visual Studio 2010 та командного проекту в TFS. Розробка архітектури програмної системи та створення діаграм» Виконали: Прийняв: Цигилик Л,О Львів 2013р. Індивідуальне завдання: Створення клієнт-серверної системи згідно теми “ Програмне забезпечення обліку,видачі та нарахування стипендії”. Мета: Розробити ПЗ згідно обраної теми для коректної роботи системи, розробити діаграми, які описуватимуть систему та комплекс тестів. Розподіл повноважень: Хомік Володимир— розробник серверної частини Михалевич Максим — розробник клієнтної частини Лабораторна робота №1 Тема: Створення проекту в Visual Studio 2010 та командного проекту в TFS / Рис .1 головне вікно створеного проекта в TFS На даному рисунку (рис.1) зображено головне вікно проекту в TFS, з якого ми здійсьнюєм навігацію по функціях керування проектом (перегляд\додавання\видалення учасників, перегляд\відміна змін проекту, задання завдань учасникам і т.д.) / Рис.2 Відображення файлової структури проекту На рис.2 відображено файловий вміст проекту. За допомогою даного вікна ми можем переглянути «історію» будь-якого файла (дату створення\змінення, яким учасником був створений\змінений певний файл…), здійснити настройки безпеки, а також скачати копію на жорсткий диск. / Рис.3 Відображення змін проекту В даному вікні (рис.3) ми можем здійснювати перегляд змін проекту, дату коли відбулась зміна, коментар та яким учасником було здійснено відповідні зміни. Лабораторна Робота №2 Тема:Розробка програмної системи та створення діаграм / Рис 1 . Діаграма Випадків Створення UML – діаграм з поясненням.Перша діаграма – це діаграма випадків. Діаграма на рис 1. Включає в себе 2 актори (Бухгалтерія-банк(север), та студент (клієнт)), та 8 дій.(Увійти в систему, рейтинг студентів,нарахування стипендії,перевірка балансу,знаття коштів,додавання отримувача,видалення отримувача,вихід з системи). Бухгалтерія при умові якщо студент витягнув на стипендію , нараховує гроші. Після нарахування студент має можливість перевірити баланс ,якщо кошти прийшли , студент може зняти гроші , і вийти із системи. Лабораторна робота №3 Розробка коду програми на мові C# та підтримки в TeamFoundationServer Дане програмнезабезпеченнярозроблене на мовіпрограмуванняC# в середовищіVisualStudio 2010. Входірозробки, за допомогоюMicrosoftSQLServer 2008буларозробленабаза даних. / В данійформі ми заносимо в нашу базу студентів, які отримують стипендію з тієї чи іншої групи. / Заносимо в базу даних інститути, до яких входять групи, які в наявності мають студентів, та додаєм дату отримання стипендії, і її розмір. / Форма для входу адміністратора, який виконує основні дії над визначенням хто отримує стипендію в якому розмірі. / Наша отримана база даних. / Вікно роботи сервера, показує які дії виконуються адміністратором / Форма для входу адміністратора. Загальний вид програми Сервера / Ввійшли в середовище. Вікно виконання дій сервера показує, що було виконано. Загальний вигляд вікна Сервера / Вказали Інститут, Групу, вибрали студентів, які будуть отримувати стипендію, та зазначили дату видач та розмір стипендії. / На етапі розробки програми Сервера. Конструктор форми / Вікно сервера показує виконані адміністратором дії в середовищі адміністрування. / Вибір групи в якій будем проводити визначення та розмір нарахування стипендії / Список студентів які будуть отримувати стипендію / Amout – розмір стипендії. Setnew – задали новий розмір стипендії / Визначення дати нарахування стипендії. / Зміна дати нарахування стипендії / Параметри таблиці Студенти. / Параметри таблиці входу. / Параметри таблиці Інститути. Висновок:В результаті виконання даного проекту(лабораторних робіт). Ми розробила та створили концептуальну модель середовища Обліку та Нарахування стипендії для студентів. В ході роботи, була розроблена форма, для адміністрування, за допомогою цієї форми ми маємо можливість визначати яким студентам буде нарахована стипендія, в якому розмірі, та в який час(дата). Було створено базу даних студентів, які входять до тих чи інших груп, того чи іншого інституту. В результаті виконання ми отримали досить просту форму адміністрування, та управління щодо нарахування та виплати стипендії, це забезпечує нам надто простий і зрозумілий інтерфейс програми. Додаток Лістинг програми Сервера usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; using System.IO; using System.Net; usingSystem.Net.Sockets; usingSystem.Threading; usingSystem.Data; usingSystem.Data.SqlClient; usingSystem.Data.SqlServerCe; namespaceExampleTcpListener_Console { classExampleTcpListener { staticStringTranscent; staticvoid Main(string[] args) { TcpListener server = null; //Connection to database try { intMaxThreadsCount = Environment.ProcessorCount * 4; Console.WriteLine(MaxThreadsCount.ToString()); // Установим максимальное количество рабочих потоков ThreadPool.SetMaxThreads(MaxThreadsCount, MaxThreadsCount); // Установим минимальное количество рабочих потоков ThreadPool.SetMinThreads(2, 2); // Устанавливаем порт для TcpListener = 9595. Int32 port = 9595; IPAddresslocalAddr = IPAddress.Parse("127.0.0.1"); int counter = 0; server = newTcpListener(localAddr, port); // Запускаем TcpListener и начинаем слушать клиентов. server.Start(); // Принимаем клиентов в бесконечном цикле. while (true) { Console.WriteLine(counter.ToString()+"\tWaiting for a connection... "); // Припоявленииклиентадобавляемвочередьпотоковегообработку. ThreadPool.QueueUserWorkItem(ObrabotkaZaprosa, server.AcceptTcpClient()); counter++; // Выводим информацию о подключении. } } catch (SocketException e) { //В случае ошибки, выводим что это за ошибка. Console.WriteLine("SocketException: {0}", e); } finally { // ОстанавливаемTcpListener. server.Stop(); } Console.WriteLine("\nHit enter to continue..."); Console.Read(); } staticvoidObrabotkaZaprosa(objectclient_obj) { AuthA_obj = newAuth(); MydateD_obj = newMydate(); AmountM_obj = newAmount(); mListL_obj = newmList(); // Буфер для принимаемых данных.* Byte[] bytes = newByte[256]; //Можно раскомментироватьThread.Sleep(1000); //Запустить несколько клиентов //и наглядно увидеть как они обрабатываются в очереди. //Thread.Sleep(1000); TcpClient client = client_objasTcpClient; Transcent = null; // Получаем информацию от клиента NetworkStream stream = client.GetStream(); DataTableBufferTable = newDataTable(); int i; // Принимаем данные от клиента в цикле пока не дойдём до конца. while ((i = stream.Read(bytes, 0, bytes.Length)) != 0) { // Преобразуем данные в ASCII string. Transcent = System.Text.Encoding.ASCII.GetString(bytes, 0, i); String[] bar = Transcent.Split(newchar[] { '|' }); if (bar[0]=="ID0") { Console.WriteLine("ID0\tAuthorization request"); Transcent = null; Transcent ="ID0|"+ A_obj.m_check(bar[1],bar[2]).ToString(); } if (bar[0]=="ID1") { Console.WriteLine("ID1\tLogin/Password modification"); Transcent = null; A_obj.Set_new_LP(bar[1], bar[2]); Transcent = "ID1|"; } if (bar[0]=="ID2") { Console.WriteLine("ID2\tDate request"); Transcent = null; Transcent = "ID2|" + D_obj.Get_ac_d(); } if (bar[0]=="ID3") { Console.WriteLine("ID3\t Set new Date"); D_obj.Set_ac_d(Int32.Parse(bar[1])); Transcent = "ID3|"; } if (bar[0]=="ID4") { Console.WriteLine("ID4\tAmount Request"); Transcent = "ID4|"+ M_obj.Get_amount_val().ToString(); } if (bar[0]=="ID5") { Console.WriteLine("ID5\tSet new amount"); M_obj.Set_amount_val(bar[1]); Transcent = "ID5"; } if (bar[0]=="ID6") { Console.WriteLine("ID6\tRequest for institutes list"); L_obj.mGet_institutes(); Transcent = null; Transcent = "ID6"; foreach (stringstinL_obj.institute) { if(st!=null) Transcent += "|" + st; } } if (bar[0]=="ID7") { Console.WriteLine("ID7\tRequest for groups (having inst)"); Transcent = null; Transcent = "ID7"; L_obj.mGet_group(bar[1]); foreach (stringstinL_obj.group) { if (st != null) Transcent += "|" + st; } } if (bar[0]=="ID8") { Console.WriteLine("ID8\t Request for List"); Transcent = null; Transcent = "ID8"; L_obj.mList_Open(bar[1], bar[2]); foreach (stringstinL_obj.list_all) { if (st != null) Transcent += "|" + st; } } if(bar[0]=="ID9") { Console.WriteLine("ID9\t Conitnue..."); Transcent = null; Transcent = "ID9"; L_obj.mList_Open(bar[1],bar[2]); Int32 j = 0; for (; j <L_obj.list_all.Length - 1;j++) { if (L_obj.list_g[j] != null) { Transcent += "|" + L_obj.list_g[j].ToString(); } else j = L_obj.list_g.Length + 1; } } if (bar[0]=="ST1") { Console.WriteLine("ST1\tUpdating list text"); L_obj.mList_Modification(bar); } //if (bar[0]=="ST2") //{ // Console.WriteLine("ST2\tUpdating list bool"); // L_obj.mList_Modification1(bar); //} // Преобразуем полученную строку в массив Байт. byte[] msg = System.Text.Encoding.ASCII.GetBytes(Transcent); // Отправляем данные обратно клиенту (ответ). stream.Write(msg, 0, msg.Length); } // Закрываемсоединение. client.Close(); } classAuth { string password; string login; DataTable table; myDatabaseStudentDB = newmyDatabase(); publicboolm_check(string l, string p) { StudentDB.Open(); table = StudentDB.SendSqlCommand("SELECT * FROM LogInfo WHERE (Login='"+l+"') AND (Password = '"+p+"')"); password = p; login = l; if( table.Rows.Count>0) returntrue; StudentDB.Close(); returnfalse; } publicvoidSet_new_LP(string l, string p) { StudentDB.Open(); StudentDB.ModifyDatabase("UPDATE LogInfo SET Password="+"'"+p+"' WHERE Login ='"+l+"'"); StudentDB.Close(); } } classMydate { publicintac_d=0; myDatabaseStudentDB = newmyDatabase(); publicintGet_ac_d() { string buffer= StudentDB.SendSqlCommandToString("SELECT Date FROM INSTITUTES"); ac_d = Int32.Parse(buffer); StudentDB.Close(); returnac_d; } publicvoidSet_ac_d(intn_d) { StudentDB.Open(); ac_d = Int32.Parse(StudentDB.SendSqlCommandToString("SELECT Date FROM INSTITUTES")); StudentDB.ModifyDatabase("UPDATE INSTITUTES SET Date= '" + n_d.ToString() + "' WHERE Date ='"+ac_d.ToString()+"'"); StudentDB.Close(); // to DB } } classAmount { publicfloatm_val = 650.38F; myDatabaseStudentDB = newmyDatabase(); publicfloatGet_amount_val() { m_val = Convert.ToSingle(StudentDB.SendSqlCommandToString("SELECT Sum FROM INSTITUTES")); // sent request for value returnm_val; } publicvoidSet_amount_val(stringn_val) { stringbuf = StudentDB.SendSqlCommandToString("SELECT Sum FROM INSTITUTES"); StudentDB.ModifyDatabase("UPDATE INSTITUTES SET Sum = '"+n_val+"'WHERE Sum='"+buf.ToString()+"'"); // sent new val to server } } classmList { publicstringstr_INST; publicstringstr_GR; publicstring[] institute; publicstring[] group; publicstring[] list_all; publicbool[] list_g; myDatabaseStudentDB = newmyDatabase(); publicvoidmList_Open(stringstr, string str1) { str_INST = str; str_GR = str1; //sent request to DB for list using str_INST and str_GR list_all = StudentDB.SendSqlStringArray("SELECT Name FROM Student WHERE Faculty='"+str1+"'"); //just for example list_g = StudentDB.SendSqlBoolArray("SELECT MoneyForBeer FROM Student WHERE Faculty='" + str1 + "'"); // just for example } publicvoidmList_Modification(string[] arr) { //str_INST = arr[1]; //str_GR = arr[2]; Int32 x = Convert.ToInt32(arr[1]); Int32 y = x + 2; list_all = newstring[x]; for (Int32 j = 2; j < y; j++) { list_all[j - 2] = arr[j]; } list_g = newbool[x]; for (Int32 j=0; j < x; j++) { //list_g[j] = Convert.ToBoolean(arr[y+j]); StudentDB.ModifyDatabase("UPDATE Student SET MoneyForBeer = '"+arr[y+j]+"' WHERE Name= '"+list_all[j]+"'"); } // sending list_g to db } publicstring[] mGet_institutes() { //sent request for institutes //institute = response; //get list of institutes institute = StudentDB.SendSqlStringArray("SELECT DISTINCT institutes FROM INSTITUTES"); return institute; } publicvoidmGet_group(stringstr) { str_INST = str; //sent request for list of groups with str_INST group = StudentDB.SendSqlStringArray("SELECT Faculty FROM INSTITUTES WHERE institutes='" + str + "'"); // this just for example } } classmyDatabase { conststringDatabasePath = @"C:\Users\aaa\Desktop\Стипендія\TcpServer\TcpServer\Student.sdf"; SqlCeConnection connection = newSqlCeConnection(@"Data Source=|DataDirectory|"+DatabasePath); bool opened=false; publicmyDatabase() { this.Open(); opened = true; } ~myDatabase(){ this.Close(); } ///<summary> /// Function to generate simple Sql requests ///</summary> ///<param name="mySqlCommand"></param> ///<returns></returns> publicDataTableSendSqlCommand(stringmySqlCommand) { if (opened) { try { DataTable table = newDataTable(); SqlCeCommand command = newSqlCeCommand(mySqlCommand, connection); SqlCeDataReader reader = command.ExecuteReader(); table.Load(reader); return table; } catch { returnnewDataTable(); } } returnnewDataTable(); } publicstringSendSqlCommandToString(stringmySqlCommand) { if (opened) { try { SqlCeCommand command = newSqlCeCommand(mySqlCommand, connection); SqlCeDataReader reader = command.ExecuteReader(); reader.Read(); returnreader.GetString(0); } catch { return""; } } return""; } publicintSendSqlCommandToInt(stringmySqlCommand) { if (opened) { try { SqlCeCommand command = newSqlCeCommand(mySqlCommand, connection); SqlCeDataReader reader = command.ExecuteReader(); reader.Read(); return reader.GetInt32(0); } catch { return 0; } } return 0; } publicstring[] SendSqlStringArray(stringmySqlCommand) { if (opened) { try { string[] myArray = newstring[15]; inti = 0; SqlCeCommand command = newSqlCeCommand(mySqlCommand, connection); SqlCeDataReader reader = command.ExecuteReader(); while (reader.Read()) { myArray[i] = reader.GetString(0); i++; } returnmyArray; } catch { returnnull; } } returnnull; } publicbool[] SendSqlBoolArray(stringmySqlCommand) { if (opened) { try { bool[] myArray = newbool[15]; inti = 0; SqlCeCommand command = newSqlCeCommand(mySqlCommand, connection); SqlCeDataReader reader = command.ExecuteReader(); while (reader.Read()) { myArray[i] = reader.GetBoolean(0); i++; } returnmyArray; } catch { returnnull; } } returnnull; } ///<summary> /// ///</summary> ///<returns></returns> publicboolModifyDatabase(stringSqlRequest) { if(opened) try{ //string mySqlCommand = "UPDATE " + Table + "SET " + ColumnToModify + "=" +"'"+newValue+"'"+" WHERE " + ParamColumn + "='"+oldValue+"'"; SqlCeCommand command = newSqlCeCommand(SqlRequest, connection); command.ExecuteNonQuery(); returntrue; } catch{ returnfalse; } returnfalse; } ///<summary> /// Function to open connection with Database ///</summary> publicvoid Open() { if (!opened) connection.Open(); } ///<summary> /// Function to close connection with Database ///</summary> publicvoid Close() { if (opened) connection.Close(); } } } }
Антиботан аватар за замовчуванням

06.01.2014 03:41

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!