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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” / Кафедра ЕОМ Звіт З лабораторних роботи №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:01-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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