close

Вход

Забыли?

вход по аккаунту

?

Курсовая 2 Отчет

код для вставкиСкачать
Московский государственный университет путей сообщения (МИИТ)
Кафедра "Автоматизированные системы управления"
Отчет по курсовой работе №2
по дисциплине
"Объектно-ориентированное программирование"
Вариант 5
Выполнила: ст. гр. УИС-211 Скобцова А.П.
Проверил:
Седов С.
Москва 2012
1. Задание
Разработать объектно-ориентированный каркас приложения "Сайт знакомств". Сайт знакомств предназначен для размещения объявлений с целью личного знакомства пользователей по общим интересам. Каждый пользователь, после регистрации, может создать собственную анкету, содержащую информацию о нескольких его хобби. Также пользователи могут просматривать каталог анкет и осуществлять поиск анкет людей с совпадающими интересами. Администратор сайта может удалять анкеты с не адекватной информацией. Приложение не требует создания пользовательского интерфейса. Тестирование работоспособности каркаса приложения осуществляется путем создания тестирующего программного кода, создающего необходимые объекты, и вызывающего их методы, моделируя все необходимые сценарии использования системы. В данном задании необходимо показать сценарии: а) Первичное заполнение каталога анкет б) Регистрация пользователей А (обычный пользователь) с интересами "бокс", "золотые рыбки" и пользователя Б (администратор) в) Просмотр каталога пользователем А и поиск всех пользователей с совпадающими интересами ("бокс", "золотые рыбки"). г) Удаление анкеты пользователем Б.
2. Исходный код решения
User.java
package org.centersot.miit.site.entity;
public class User extends EntityBase
{
private String name;
private String surname;
private String login;
private String password;
private String email;
private String birthday;
private Anketa anketa;
private boolean admin;
public User(int id, String name, String surname, String login, String password, String email, String birthday, boolean admin)
{
super(id);
if (login==null || "".equals(login))
throw new IllegalArgumentException("Login mustn't be null or empty");
setName(name);
this.surname = surname;
this.login = login;
setPassword(password);
setEmail(email);
this.birthday = birthday;
this.admin = admin;
}
public String getName()
{ return name; }
public void setName(String name)
{
if (name==null || "".equals(name))
throw new IllegalArgumentException("Name mustn't be null or empty");
this.name = name;
}
public String getSurname()
{ return surname; }
public void setSurname(String surname)
{ this.surname = surname; }
public String getLogin()
{ return login; }
public String getPassword()
{ return password; }
public void setPassword(String password)
{
if (password==null || "".equals(password))
throw new IllegalArgumentException("Password mustn't be null or empty");
this.password = password;
}
public String getEmail()
{ return email; }
public void setEmail(String email)
{
if (email==null || "".equals(email))
throw new IllegalArgumentException("E-mail mustn't be null or empty");
this.email = email;
}
public String getBirthday()
{ return birthday; }
public void setBirthday(String birthday)
{ this.birthday = birthday; }
public Anketa getAnketa()
{ return anketa; }
public void setAnketa(Anketa anketa)
{ this.anketa = anketa; }
public boolean isAdmin()
{ return admin; }
public void setAdmin(boolean admin) { this.admin = admin; }
}
Anketa.java
package org.centersot.miit.site.entity;
import java.util.ArrayList;
import java.util.Collection;
public class Anketa extends EntityBase
{
private Collection<String> hobby;
private User user;
public Anketa(int id, Collection<String> hobby, User user)
{
super(id);
this.hobby = new ArrayList<String>(hobby);
if (user == null)
throw new IllegalArgumentException("User mustn't be null!");
this.user = user;
}
public Collection<String> getHobby() {
return hobby;
}
public void setHobby(Collection<String> hobby) {
this.hobby = hobby;
}
public User getUser() {
return user;
}
}
EntityBase.java
package org.centersot.miit.site.entity;
public abstract class EntityBase
{
private int id;
protected EntityBase(int id)
{ this.id = id; }
public int getId()
{ return id; }
}
Manager.java
package org.centersot.miit.site.manager;
import org.centersot.miit.site.entity.Anketa;
import org.centersot.miit.site.entity.User;
import java.util.Collection;
public interface Manager
{
public User registration (String name, String surname, String login, String password, String email, String birthday, boolean admin);
public Anketa anketaRegistration (Collection<String> hobby, User user);
public Collection<Anketa> getAllAnkets ();
public Collection<Anketa> searchHobby (Collection<String> hobby);
public boolean deleteAnketa(Anketa anketa);
}
ManagerImpl.java
package org.centersot.miit.site.manager;
import org.centersot.miit.site.entity.Anketa;
import org.centersot.miit.site.entity.User;
import java.util.*;
public class ManagerImpl implements Manager
{
private final static ManagerImpl INSTANCE = new ManagerImpl();
private Map<Integer, User> userMap = new HashMap<Integer, User>();
private Map<Integer, Anketa> anketaMap = new HashMap<Integer, Anketa>();
private ManagerImpl()
{}
public static ManagerImpl getInstance()
{
return INSTANCE;
}
private boolean existId (int id, Class clazz)
{
if (clazz == User.class)
return userMap.get(id) != null;
else if (clazz == Anketa.class)
return anketaMap.get(id) != null;
throw new IllegalArgumentException("Incorrect class");
}
public User registration(String name, String surname, String login, String password, String email, String birthday, boolean admin)
{
Random random = new Random();
int id;
do
{ id = random.nextInt(); }
while (existId(id, User.class));
User test = new User(id, name, surname, login, password, email, birthday, admin);
userMap.put(id, test);
return test;
}
public Anketa anketaRegistration(Collection<String> hobby, User user)
{
Random random = new Random();
int id;
do
{ id = random.nextInt(); }
while (existId(id, Anketa.class));
Anketa test2 = new Anketa(id, hobby, user);
anketaMap.put(id, test2);
user.setAnketa(test2);
return test2;
}
public Collection<Anketa> getAllAnkets()
{ return anketaMap.values(); }
public Collection<Anketa> searchHobby(Collection<String> hobby)
{
if (hobby == null)
throw new IllegalArgumentException("Hobby mustn't be null!");
Collection<Anketa> collection = new ArrayList<Anketa>(anketaMap.values());
Collection<Anketa> anketsToDelete = new ArrayList<Anketa>();
for (String hobb : hobby)
{
for (Anketa anketa : collection)
{
if (!anketa.getHobby().contains(hobb))
{ anketsToDelete.add(anketa); }
}
}
for (Anketa anketa : anketsToDelete)
{
collection.remove(anketa);
}
if (collection.size() == 0 || hobby.size() == 0)
return null;
return collection;
}
public boolean deleteAnketa(Anketa anketa)
{
if (anketa != null)
anketa.getUser().setAnketa(null);
return anketaMap.remove(anketa.getId()) != null;
}
}
Test.java
import org.centersot.miit.site.entity.Anketa;
import org.centersot.miit.site.entity.User;
import org.centersot.miit.site.manager.Manager;
import org.centersot.miit.site.manager.ManagerImpl;
import java.util.ArrayList;
import java.util.Collection;
public class Test
{
private Manager manager = ManagerImpl.getInstance();
public void test ()
{
//a) первичное заполнение анкет
User user1 = manager.registration("Вася", "Пупкин", "vasya", "vasya12", "pupkin@mail.ru", "02.05.1991", false);
User user2 = manager.registration("Ваня", "Иванов", "ivan", "superman", "ivanivn@mail.ru", "06.12.1993", false);
User user3 = manager.registration("Леша", "Курсачев", "kursach", "46123546", "kursachev@mail.ru", "08.08.1990", false);
User user4 = manager.registration("Сережа", "Армейский", "serega", "574e9fh", "armiya@mail.ru", "04.10.1994", false);
Collection<String> hobby = new ArrayList<String>();
hobby.add("Бокс");
hobby.add("Золотые рыбки");
hobby.add("Хоккей");
manager.anketaRegistration(hobby, user1);
hobby.clear();
hobby.add("Хомячки");
hobby.add("Воздушные шарики");
hobby.add("Футбол");
manager.anketaRegistration(hobby, user2);
hobby.clear();
hobby.add("Золотые рыбки");
hobby.add("Морожение");
hobby.add("Бокс");
manager.anketaRegistration(hobby, user3);
hobby.clear();
hobby.add("Прогулка");
hobby.add("Золотые рыбки");
hobby.add("Стрельба");
manager.anketaRegistration(hobby, user4);
//б)добавление пользователя А и Б
User user5 = manager.registration("Антон", "Лабов", "pin", "4646", "pin34@mail.ru", "07.04.1989", false);
User admin = manager.registration("Админ", "Админский", "admin", "password", "admin@mail.ru", "04.07.1992", true);
hobby.clear();
hobby.add("Бокс");
hobby.add("Золотые рыбки");
hobby.add("Пиво");
manager.anketaRegistration(hobby, user5);
//в)поиск пользователя по хобби
System.out.println("все пользователи-------------------------------------");
for (Anketa anketa : manager.getAllAnkets())
{
System.out.println("User: " + anketa.getUser().getName());
System.out.print("Hobbies: ");
for (String hobb : anketa.getHobby())
{
System.out.println(hobb);
}
}
System.out.println("поиск---------------------------------------");
hobby.clear();
hobby.add("Бокс");
hobby.add("Золотые рыбки");
for (Anketa anketa : manager.searchHobby(hobby))
{
if (!(anketa.getUser().getId() == user5.getId()))
{ System.out.println("User: " + anketa.getUser().getName()); }
}
//г)удаление пользователя
System.out.println("удаление----------------------------------------");
manager.deleteAnketa(user1.getAnketa());
for (Anketa anketa : manager.getAllAnkets())
{
System.out.println("User: " + anketa.getUser().getName());
System.out.print("Hobbies: ");
for (String hobb : anketa.getHobby())
{ System.out.println(hobb); }
}
}
public static void main(String[] args)
{ new Test().test(); }}
3. Пояснительная записка
Спроектированы классы-сущности User и Anketa для последующего оперирования ими в рамках приложения. Класс ManagerImpl, реализующий интерфейс Manager, ответственен за бизнес-логику приложения. Использован шаблон Singleton в классе ManagerImpl для сохранения целостности данных.
4.Тестирование
все пользователи-------------------------------------
User: Вася
Hobbies: Бокс
Золотые рыбки
Хоккей
User: Ваня
Hobbies: Хомячки
Воздушные шарики
Футбол
User: Сережа
Hobbies: Прогулка
Золотые рыбки
Стрельба
User: Леша
Hobbies: Золотые рыбки
Морожение
Бокс
User: Антон
Hobbies: Бокс
Золотые рыбки
Пиво
поиск---------------------------------------
User: Вася
User: Леша
удаление----------------------------------------
User: Ваня
Hobbies: Хомячки
Воздушные шарики
Футбол
User: Сережа
Hobbies: Прогулка
Золотые рыбки
Стрельба
User: Леша
Hobbies: Золотые рыбки
Морожение
Бокс
User: Антон
Hobbies: Бокс
Золотые рыбки
Пиво
5. Заключение
Разработанное мной приложение реализует все требования курсовой работы в полном объеме.
Документ
Категория
Рефераты
Просмотров
28
Размер файла
30 Кб
Теги
отчет, курсовая
1/--страниц
Пожаловаться на содержимое документа