Теми на курсовите проекти за летен семестър на 2003 г.
Версия на документа: 0.8
Автор на текста: Светлин Наков
Последна промяна: 9 май, 2003
Курсовите проекти по “Програмиране за платформа .NET” имат за цел да развият практически умения за справяне с реални проблеми при създаването на приложения, базирани на .NET Framework. Схемата на изпитване, възприета от преподавателския колектив предвижда студентите, показали високи резултати на първия тест да бъдат изпитани чрез курсов проект вместо втори тест. Проектите съвсем не са тривиални и затова се възлагат само на студенти, които се борят за отлична оценка. Следват условията на задачите:
1. CHAT
Да се реализира система за комуникация между различни потребители, базирана на размяна на кратки текстови съобщения. Системата трябва да съчетава в себе си възможност за комуникация в реално време (чат) и възможност за off-line комуникация чрез оставяне на съобщения. Трябва да се използва архитектура клиент/сървър. Необходимо е да се разработят две отделни приложения: сървър и Windows Forms клиент. Сървърът трябва да пази информация за потребителите на системата (име и парола), както и всички съобщения, обменяни между тях. За съхранение на данните трябва да се използват ADO.NET и база данни MS Access или MS SQL Server 2000. Сървърът трябва да предоставя възможности чрез Web-услуги да се регистрират потребители и да се изпращат съобщения между тях. Трябва да има възможност за изпращане на съобщения от един потребител към друг и от един потребител към всички останали, независимо дали са on-line или off-line. Когато един потребител е on-line, той трябва да получава веднага всички изпратени до него съобщения. Когато потребителят се регистрира в системата, трябва да получава всички съобщения, които са били изпратени до него докато е бил off-line. При пристигане на ново съобщение в on-line режим, сървърът трябва да уведоми за това клиента по TCP сокет. Клиентското Windows Forms приложение трябва да предлага възможности за регистрация на нов потребител, login на потребител, изпращане на съобщение до друг потребител или до всички останали и logout. Трябва да се поддържа и справка за показване на всички съобщения за периода между две зададени от потребителя дати.
2. BUG-TRACKING-SYSTEM
Да се реализира система за управление и проследяване на грешки (bug tracking system). Системата трябва да подържа вътрешно таблица със списък от грешки и да дава възможност за достъп до тази таблица. Всяка грешка се състои от дата на постъпване, заглавие, текстово описание, потребител, създал записа за грешката, потребител направил последната промяна, приоритет (ASAP, high, low, medium), статус (new, in progress, resolved) и дата на последна промяна. Системата трябва да има ASP.NET Web базиран потребителски интерфейс. Потребителят трябва да може през този интерфейс да добавя нова грешка, да изтрива грешка и да променя данните за грешка (статус, приоритет и др.). Потребителят с име admin трябва да може да предефинира (променя) номенклатурите на възможните статуси и приоритети. Входът в системата трябва да е с потребителско име и парола. Системата трябва да дава възможност за регистриране на нов потребител. За съхранение на данните трябва да се използват ADO.NET и база данни MS Access или MS SQL Server 2000. Системата трябва да поддържа повече от един проект, като с кой проект се работи трябва да се избира по време на login-а. Потребителят admin трябва да може да създава и изтрива проекти.
3. TICK-TACK-TOE
Да се реализира система, която представлява мрежов вариант на играта "морски шах". Системата трябва да се състои от сървър, който чрез Web-услуги да дава възможност за регистрация на потребители, създаване на нова игра и изпълнение на ход. Трябва да се реализират още Windows Forms клиент и ASP.NET Web-клиент. Клиентите трябва да могат да се свързват със сървъра, като преди това си напишат името (което трябва да е уникално в рамките на един сървър), да създават маса и да чакат някой да седне на нея или да сядат на вече създадена маса с 1 чакащ играч. Когато на масата седнат 2-ма играчи, започва играта. Правилата на играта са добре известни. На всяка секунда игралните маси, на които играчът е седнал трябва да се обновяват, ако са се променили междувременно. Всеки играч, когато е на ход, е длъжен да играе до 30 секунди и ако не спази това ограничение се счита за победен служебно. При Windows Forms клиента избирането на ход трябва да става с мишката, а при ASP.NET клиента – чрез задаване на идентификатор на поле от игралната дъска. Трябва да е възможно потребител, работещ през Web да играе срещу потребител, работещ през Windows Forms приложението.
4. DATING-SITE
Да се направи малък сайт за запознанства, базиран на ASP.NET. Сайтът трябва да дава възможност за регистрация на нов потребител, въвеждане на различни негови данни (пол, възраст, зодия, снимка, хоби и друга информация), за login на потребител и за logout на потребител. След успешен login в системата потребителите трябва да могат да публикуват обяви в публично достъпен форум и да отговарят на вече публикувани обяви. Всеки потребител трябва да може да отговаря на всяка обява, като отговорът е или публичен, или видим само за автора на обявата. На отговорите също трябва да може да се отговаря, както в класическите форуми. Авторът на всяка обява трябва да може да изтрива съобщения, написани като отговор на нея, които не са му угодни. В допълнение към сайта трябва да има и Windows Forms административно приложение, от което да могат да се изтриват потребители и да се променят данните за тях. За съхранение и управление на данните трябва да се използват ADO.NET и база данни MS Access или MS SQL Server 2000.
5. GREETING-CARDS
Да се направи ASP.NET базиран Web-сайт за изпращане на поздравителни картички, подобен на http://cards.dir.bg/, http://cards.kefche.com/, http://kartichki.abv.bg/ и т.н. Потребителите трябва да могат да избират различни картинки измежду различни категории, да добавят текст вътре в тях и да генерират картичка по свое желание със собствени пожелания за получателя. Една картичка представлява динамично генерирано растерно изображение, получено от поставянето на поздравителния текст и друга информация върху картинката-подложка, т.е. текстът е част от растерното изображение. Картичките трябва да могат да се изпращат на посочен от потребителя e-mail адрес във вид на писмо с прикрепен към него JPEG или GIF файл. Трябва да се напише и административно приложение, базирано на Windows Forms. Това приложение трябва да дава възможност за добавяне/изтриване на категории с картички, както и добавяне/изтриване на картинки от отделните категории. За съхранение и управление на данните трябва да се използват ADO.NET dataset-и и XML файлове, а за картинките – файловата система.
6. PHOTO-ALBUM
Да се реализира система за публикуване и разглеждане на снимки, състояща се от ASP.NET базирано Web-приложение (динамичен сайт) и Windows Forms административна част. Web-приложението трябва да позволява създаване на нови потребители, login, logout и публикуване на снимки. Снимките трябва да могат да се разпределят в категории. Всеки log-нат в системата потребител трябва да може да създава, изтрива и преименува категории и да добавя и изтрива снимки в своите категории. Към всяка снимка се допуска да има и коментар. Посетителите на сайта трябва да могат да разглеждат снимките на всички потребители и да четат коментарите към тях. Трябва да е възможна навигация по потребители, категории и снимки. Всяка снимка трябва да може да се разглежда в два варианта - в истински размер и в умален размер, като при разглеждане в умален размер на една страница трябва да се показват няколко снимки, а не само една. Административната част (Windows Forms приложението) трябва да позволява изтриване на потребители заедно с техните фотоалбуми, търсене на снимки по име на файл или коментарите към тях, както и изтриване на снимки и категории. За съхранение и управление на данните може да се използва файловата система.
7. CD-ORGANIZER
Да се реализира софтуерна система за съхранение, търсене и организиране на дискови каталози. Системата трябва да се състои от 3 части: сървър, Windows Forms клиент и ASP.NET клиент. Сървърът трябва да поддържа база от данни с дискови каталози и да предлага Web-услуги за достъп и управление на тази база. Windows Forms приложението трябва да предлага следната функционалност: добавяне на каталог, търсене на файл по зададена ключова дума, съдържаща се в името му, или регулярен израз, изтриване на каталог, промяна на името на каталог, обновяване на съдържанието на каталог. Каталогът може да представлява прост списък от файлове, записани заедно с пълния път до тях. При добавяне и обновяване на съдържанието на каталог трябва да се дава възможност за сканиране на дисково устройство, например CD носител, намиращ се в CD-ROM устройството. Сканирането на CD представлява извличане на имената на всички файлове от всички негови директории и техните поддиректории рекурсивно. ASP.NET клиентът трябва да може само да търси файлове в каталога по име, част от името или регулярен израз. За съхранение и управление на данните трябва да се използват ADO.NET dataset-и и XML файлове.
8. PUZZLE
Да се реализира "играта подреждане на пъзел". При започване на играта играчът вижда картинка, която представлява подредения пъзел. След това той задава на колко части по хоризонтал и на колко по вертикал да се разреже картинката (примерно 6 на 5). След това разрязаните части се разместват по случаен начин и играта за подреждане на пъзела започва. Играчът има право на всеки ход да разменя две от парчетата, получени при разрязването на оригиналната картинка. Всяко парче има уникален идентификатор изграден от номер на колона (записана като латинска буква) и номер на ред (записан като число). Например колона 4, ред 3 се означава с D3. Един ход на играча се задава с двойка идентификатори на парчета от пъзела, които трябва да се разменят. Играта свършва при нареждане на пъзела. Трябва да се поддържа отделна класация на играчите постигнали минимален брой ходове за всеки възможен размер на дъската. Пример за подобна игра има на адрес http://www.skandi-bg.com/games/. Играта трябва да се реализира в два варианта: Windows Forms приложение и ASP.NET приложение, като класацията за двете приложения е една и съща и не се губи при спиране на приложенията. За съхранение и управление на данните трябва да се използват ADO.NET и база данни MS Access или MS SQL Server 2000. Класациите трябва да се управляват през специално разработена за целта Web-услуга.
9. POLL-SYSTEM
Да се разработи ASP.NET Web-базирана система за гласуване. Системата трябва да може да задава въпрос на посетителите на сайта, където е инсталирана, да дава възможност за избор измежду няколко възможни отговора на този въпрос и да дава възможност за гласуване, като отброява гласовете за всеки от отговорите. Трябва да има страничка, от която да се показват резултатите от гласуването. Трябва да се поддържа повече от един въпрос и при всяко посещение да изисква гласуване за един от наличните въпроси, избран случайно. Възможните въпроси и възможните отговори трябва да могат да се конфигурират от специално разработено за целта Windows Forms приложение. Системата трябва да поддържа и т.нар. "сигурно гласуване", при което за да се гласува, се изисква валиден email адрес, на който се изпраща link за потвърждаване на гласуването и едва след такова потвърждаване гласът се счита за валиден. За един въпрос от един email адрес трябва да може да се гласува най-много веднъж. За всеки въпрос трябва да може да се задава степента на сигурност, с която той работи - с email потвърждение или без. За съхранение на данните трябва да се използва база данни MS Access или MS SQL Server 2000, до която достъпът да се осъществява през ADO.NET.
10. WAREZ-SERVER
Да се разработи ASP.NET Web-базирана система за управление на файлове. Системата трябва да дава възможност за регистрация на нов потребител, при което му заделя начално дисково пространство с размер 10 MB. Регистрираните и влезли в системата потребители трябва да могат да създават, изтриват и преименуват директории и поддиректории в своето дисково пространство, както и да upload-ват, изтриват и променят имената на файлове в своите директории. Нерегистрираните потребители трябва да могат да търсят файл по ключова дума или регулярен израз и да download-ват файлове. Възможност за обхождане на директориите и файловете на всички потребители с възможност за download също трябва да бъде реализирана. В допълнение към системата трябва да се разработи Windows Forms административно приложение, което да може да изтрива потребители заедно с техните директории и файловете в тях, както и да променя размера на дисковото пространство, отпуснато на отделните потребители. За съхранение на данните може да се използва файловата система на сървъра.
11. WEB-ORGANIZER
Да се разработи ASP.NET Web-базирана система, достъпна само за регистрирани потребители след автентикация (чрез login и парола), която предоставя Web-календар, в който всеки ден и час може да се асоциира с някакво събитие, например бизнес среща. Потребителите трябва да могат да добавят, изтриват и променят събития за всеки ден от своя календар. Едно събитие се състои от тема и допълнително текстово описание. Допълнително да се реализира и server-side функционалност, която да следи за настъпващи събития и да нотифицира съответните потребители по e-mail 1 час (или друг указан от потребителя времеви интервал) преди настъпване на събитието. Към системата да се реализира и Windows Form административно приложение, чрез което да могат да се създават и изтриват потребители, както и да се променят данните за тях (login, парола, e-mail и т.н.). За съхранение на данните трябва да се използва база данни MS Access или MS SQL Server 2000, до която достъпът да се осъществява през ADO.NET.
12. FORUM
Да се разработи ASP.NET Web-базиран дискусионен форум, организиран по теми, подобен на този от http://www.nakov.com/phorum/. Трябва да се поддържа регистрация на потребители, login, logout, четене на съобщения, отговаряне на съобщения и създаване на нова тема. Трябва да се поддържат няколко режима на четене на съобщенията – дървовиден (състоящ се само от заглавията или включващ и самите съобщения) и плосък (само със заглавията или включващ и съобщенията). Всеки потребител при регистрацията си трябва да може да задава e-mail адрес и да указва дали желае да получава на този адрес всички съобщения от форума, само тези, които са в тема, на която той е автор или да не получава никакви съобщения по e-mail. Сървърът има грижата да изпраща новопостъпилите във форума съобщения до всички, които желаят да ги получават. За съхранение на данните трябва да се използва база данни MS Access или MS SQL Server 2000, до която достъпът да се осъществява през ADO.NET.
Забележки:
Както се вижда от текстовете на отделните задачи, условията не са зададени стриктно и позволяват различни интерпретации. Предвижда се всички детайли, които не са указани ясно в условията на задачите, да се реализират по преценка на студента, като единственото изискване е да се покрива функционалността, предвидена в текста на задачите. Допуска при желание на студента, като допълнение да се реализира функционалност, която не е предвидена в условието, стига да не е в противоречие с него.
Всички изпратени решения ще се публикуват на сайта на курса. Изпращането на решение на някоя от задачите се счита за неявно съгласие за публикуване. Моля използвайте само лицензно чисти материали (сорс код, документация, мултимедийни файлове и т.н.) в решенията си. Ако не желаете решението ви да бъде публикувано на сайта, можете да се явите вместо него на тест 2. Ако все пак имате сериозна причина да не желаете да публикувате решението си, моля изпратете e-mail, който обяснява причината.
Проекти имат право да правят всички студенти, които имат оценка не по-ниска от 20 точки на тест 1. При отделни случаи може да се разреши работа върху проект и при по-малко точки (18-19), но само при съгласие на преподавателите.
Явяването на тест 2 се счита за автоматичен отказ от разработка на курсов проект. Не се допуска разработка на проект и същевременно явяване на тест. Възможно е само едното от двете. Явяването на тест 2 анулира оценката от проекта, дори ако е много висока.
Предвижда се по един проект да работи само един студент, като номерът на проекта, по който всеки работи се определя от преподавателския колектив и не може да се променя по желание на студента.
За въпроси и коментари използвайте форума на курса: http://www.nakov.com/phorum/list.php?f=1
Относно оценяването:
Оценяването на решенията ще се извършва пред комисия в предварително определени дата и час в компютърните зали на ФМИ, където всеки студент трябва да защити разработката си. Всеки проект се оценява с оценка между 0 и 30 точки. Определящ фактор за оценката на решенията е защитата. Тя включва следните стъпки:
- представяне на решението;
- обяснение на сорс-кода и използваните технологии;
- отговаряне на въпроси засягащи отделни фрагменти от кода и архитектурата на системата;
- решаване на проста допълнителна задача, свързана с проекта, на място, в компютърните зали, където се провежда защитата;
- допълнителни въпроси по проекта.
Защитата има за цел да установи доколко решението на поставената курсова задача е дело на студента, който твърди, че е автор на това решение. Студенти, хванати в явно преписване от свой колега или неразбиращи добре разработката си, ще бъдат оценени с 0 точки.
Проекти, изпълняващи коректно функционалните изисквания, зададени в условията за съответната задача, макар и при някаква конкретна интерпретация на неясно дефинираните детайли, ще бъдат оценявани с максималния брой 30 точки, но само при успешно представяне на защитата. Проекти, реализиращи коректно само част от функционалните изисквания ще получат само част от максималния брой точки. За дребни и незначителни дефекти няма да се отнемат точки.
Изисквания към решенията на задачите:
Всички решения трябва да се компилират успешно и да работят нормално с Visual Studio .NET Enterprise Architect, .NET Framework 1.0, MS Access 2000 и MS SQL Server 2000. Не се очаква в компютърните зали, където ще се провежда защитата, да има инсталиран друг софтуер или други версии на посочения софтуер.
За улесняване на защитата се допуска използване на предварително приготвена техническа документация като UML клас диаграми, Entity-Relationship диаграми и др., но наличието на такава документация не е нито задължително, нито може да повлияе на оценката. Целта е да се ускори проверката при добро желание на студента.
Всяко решение трябва да включва:
- пълния изходен код на всички компоненти на системата, която решава поставената задача;
- кратка техническа документация, която описва архитектурата на системата и основни ключови моменти от нейната реализация (максимум до 2-3 страници);
- всички файлове с данни, необходими за правилната работа на решението (XML файлове, примерни тестови данни, MS Access 2000 .mdb файл с релационната схема на базата и примерни данни, ако е използвана Access база данни или SQL скрипт, който създава базата данни, ако е използван MS SQL Server 2000);
- информация за решената задача (номерът и заглавието й от списъка по-горе);
- информация за автора на решението – трите имена, курс, специалност, факултетен номер и при желание друга допълнителна информация (email, web-site, месторабота и т.н.)
Всичките изброени по-горе компоненти на решението трябва да бъдат пакетирани в един единствен .ZIP или .RAR файл и изпратени по e-mail на адрес не по-късно от 30 юни, 2003 г. Файловете с решенията не трябва да превишават 1 MB. Ако ви се налага да изпращате по-обемни решения, вероятно сте приготвили за изпращане прекалено много или прекалено обемни излишни примерни тестови данни и трябва да ги намалите. Решения с размер превишаващи значително ограничението от 1 MB няма да бъдат разглеждани.