Автор работы: Пользователь скрыл имя, 29 Января 2013 в 17:29, курсовая работа
Целью курсовой работы является автоматизация рассылки SMS сообщений, для ускорения и облегчения работы по оповещению студентов.
Задачей, для достижения данной цели является создание приложения SmsMessenger, которое будет производить автоматизацию рассылки SMS.
Введение 2
1. Описание предметной области 3
1.1. Предметная область курсового проекта 3
1.2. Информационно-логическая модель предметной области 3
2. Создание приложения SmsMessenger 6
2.1. Логическое проектирование 6
2.2. Модель данных 7
2.3. Описание представлений и представителей 8
3. Тестирование программы 17
Заключение 25
Список литературы 26
Пиложение А. Задание на курсовой проект 27
Приложение Б. Структура исходных файлов 28
Приложение В. XAML код всех представлений и библиотек ресурсов 30
Приложение Г. Код классов программы. 62
}
public string Title
{
get { return _title; }
set
{
_title = value;
OnPropertyChanged("Title");
}
}
public List<SmsTemplate> SmsTemplates
{
get { return _smsTemplates; }
set
{
_smsTemplates = value;
OnPropertyChanged("
OnPropertyChanged("
}
}
public SmsTemplateGroup()
{
SmsTemplates = new List<SmsTemplate>();
}
public override string ToString()
{
return Title;
}
}
}
TargetList.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SmsMessanger.Model
{
public class TargetList:Notifer
{
private Guid _id;
private string _title;
private DateTime _bornDate;
private List<Contact> _contactList;
public Guid Id
{
get { return _id; }
set
{
_id = value;
OnPropertyChanged("Id");
}
}
public string Title
{
get { return _title; }
set
{
_title = value;
OnPropertyChanged("Title");
}
}
public DateTime BornDate
{
get { return _bornDate; }
set
{
_bornDate = value;
OnPropertyChanged("BornDate");
}
}
public List<Contact> ContactList
{
get { return _contactList; }
set
{
_contactList = value;
OnPropertyChanged("
}
}
public override string ToString()
{
return string.Format("{0} ({1})",Title,ContactList.
}
}
}
ApplicationPresenter.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SmsMessanger.Model;
using System.Collections.
using SmsMessanger.Views;
using System.Net;
using System.IO;
using System.Web;
namespace SmsMessanger.Presenters
{
public class ApplicationPresenter:Presenter
{
private readonly ContactRepository _contactRepository;
private ObservableCollection<Contact> _currentContacts;
private readonly GroupRepository _groupRepository;
private ObservableCollection<Group> _currentGroups;
private readonly ObservableCollection<Group> _checkedGroups;
private readonly SmsTemplateGroupRepository _smsTemplateGroupRepository;
private ObservableCollection<SmsTempla
private readonly DistributionListRepository _distributionListRepository;
private ObservableCollection<Distribut
private readonly SendSmsReportRepository _smsReportRepository;
private LogEventRepository _logEventRepository;
private string _statusText;
public ApplicationPresenter(Shell view):base(view)
{
Loger.Write("Приложение запущено", LogImages.Normal);
_groupRepository = new GroupRepository();
_currentGroups = new ObservableCollection<Group>(_
_checkedGroups = new ObservableCollection<Group>();
_contactRepository = new ContactRepository(_
_currentContacts = new ObservableCollection<Contact>(
_smsTemplateGroupRepository = new SmsTemplateGroupRepository();
_currentSmsTemplateGroups = new ObservableCollection<SmsTempla
_distributionListRepository = new DistributionListRepository(_
_currentDistributionLists = new ObservableCollection<Distribut
_logEventRepository = new LogEventRepository();
_smsReportRepository = new SendSmsReportRepository();
List<DistributionList> list =
_distributionListRepository.
ApplyFilters();
}
public string StatusText
{
get
{
return _statusText;
}
set
{
_statusText = value;
OnPropertyChanged("StatusText"
}
}
public ObservableCollection<Group> CheckedGroups
{
get
{
return _checkedGroups;
}
}
public ObservableCollection<Group> CurrentGroups
{
get { return _currentGroups; }
set
{
_currentGroups = value;
OnPropertyChanged("
}
}
public ObservableCollection<Contact> CurrentContacts
{
get { return _currentContacts; }
set
{
_currentContacts = value;
OnPropertyChanged("
}
}
public ObservableCollection<SmsTempla
{
get { return _currentSmsTemplateGroups; }
set
{
_currentSmsTemplateGroups = value;
OnPropertyChanged("
}
}
public ObservableCollection<Distribut
{
get { return _currentDistributionLists; }
set
{
_currentDistributionLists = value;
OnPropertyChanged("
}
}
public void ReloadContactDependencys()
{
_distributionListRepository.
СurrentDistributionLists = new ObservableCollection<Distribut
}
#region Работа с рассылками
public void OpenDistributionList(Distribut
{
_contactRepository.
if (distributionList == null) return;
View.AddTab(
new EditDistributionListPresenter(
this,new EditDistributionListView(),
distributionList,
_groupRepository.FindAll())
);
}
public void SaveDistributionList(Distribut
{
_distributionListRepository.
if (!СurrentDistributionLists.
СurrentDistributionLists.Add(
}
public void DeleteDistributionList(Distrib
{
_distributionListRepository.
СurrentDistributionLists.
}
#endregion
#region работа с настройками
public void OpenSettings()
{
View.AddTab(new EditConfigPresenter(this,new EditConfigView()));
}
public void SaveSettings(EditConfigPresent
{
View.RemoveTab(presenter);
}
#endregion
#region Работа с SMS
public void SaveSmsTemplate(SmsTemplate smsTemplate)
{
_smsTemplateGroupRepository.
CurrentSmsTemplateGroups = new ObservableCollection<SmsTempla
StatusText = string.Format("Шаблон SMS {0} сохранен.", smsTemplate.Title);
}
public void SaveSmsTemplateGroup(SmsTempla
{
_smsTemplateGroupRepository.
CurrentSmsTemplateGroups = new ObservableCollection<SmsTempla
Loger.Write(string.Format("
StatusText = string.Format("Шаблон Группы SMS {0} сохранен.", smsTemplateGroup.Title);
}
public void OpenSmsTemplate(SmsTemplate template)
{
if (template == null) return;
View.AddTab(
new EditSmsTemplatePresenter(
this, new EditSmsView(),
template)
);
}
public void OpenSmsTemplateGroup(SmsTempla
{
if (smsTemplateGroup == null) return;
View.AddTab(
new EditSmsTemplateGroupPresenter(
this, new EditSmsTemplateGroupView(),
smsTemplateGroup)
);
}
public void DeleteSmsTemplate(SmsTemplate template)
{
if (template == null) return;
SmsTemplateGroup group = template.ParentGroup;
SmsTemplateGroup gr = CurrentSmsTemplateGroups.
gr.SmsTemplates.Remove(
CurrentSmsTemplateGroups = new ObservableCollection<SmsTempla
_smsTemplateGroupRepository.
}
public void DeleteSmsTemplateGroup(SmsTemp
{
if (templateGroup == null) return;
CurrentSmsTemplateGroups.
_smsTemplateGroupRepository.
}
public void SendSmsByDistributionList(Dist
{
View.AddTab(new SendSmsByListPresenter(this, new SendSmsByListView(), distributionList,
_smsTemplateGroupRepository.
}
public void SendSmsByContact(Contact contact,SmsTemplate template)
{
View.AddTab(new SendSmsByListPresenter(this, new SendSmsByListView(), new DistributionList(new List<Contact>() { contact }, "Временный список рассылки"),
_smsTemplateGroupRepository.
}
public void SendSmsByList(List<Contact> contacts, string message)
{
SendSmsReport report = new SendSmsReport();
report.Message = message;
foreach (var contact in contacts)
if (!string.IsNullOrEmpty(
{
//Отправляем сообщение
Loger.Write(string.Format("
//Заменяем в сообщении переменные на текст
message = message.Replace("%username%", contact.Fio);
message = message.Replace("%currentDate%
//Если прога в боевом режиме, то отправляем смс
if (Configurator.CombatMode)
{
//Форматируем сообщение в нужную кодировку
string GETMessage = HttpUtility.UrlEncode(message, Encoding.GetEncoding("windows-
WebRequest request = WebRequest.Create(string.
"http://smsc.ru/sys/send.php?
Configurator.SmscLogin, Configurator.SmscPassword, contact.CellPhone, GETMessage
));
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader sr = new StreamReader(stream);
string s = sr.ReadToEnd();
Loger.Write(s, LogImages.Warning);
}
report.AddSuccess(contact);
}
else
{
//Не Отправляем сообщение
Loger.Write(string.Format("Не удалось отправить сообщение [{0}] для {1}. Телефон отсутствует, либо заполнен не верно", message, contact.Fio), LogImages.Normal);
report.AddFail(contact);
}
_smsReportRepository.
OpenSmsReport(report);
}
public void OpenSmsReport(SendSmsReport report)
{
View.AddTab(new SmsSendReportPresenter(this, new SmsSendReportView(), report));
}
#endregion
#region Работа с контактами
public void OpenContact(Contact contact)
{
if (contact == null) return;
View.AddTab(
new EditContactPresenter(
this, new EditContactView(),
contact,
new List<Group>(_groupRepository.
)
);
}
public void SaveContact(Contact contact)
{
_contactRepository.
if (!CurrentContacts.Contains(
CurrentContacts.Add(contact);
contact.Group.Contacts.Add(
ReloadContactDependencys();
StatusText = string.Format("Студент {0} сохранен.",contact.Fio);
}
public void DeleteContact(Contact contact)
{
if (contact != null)
{
_contactRepository.
if (CurrentContacts.Contains(
CurrentContacts.Remove(
}
}
public void ApplyFilters()
{
//if (CheckedGroups.Count != 0)
{
var selected = from c in _contactRepository.FindAll() where _checkedGroups.Contains(c.
CurrentContacts = new ObservableCollection<Contact>(
}
//else
// CurrentContacts = new ObservableCollection<Contact>(
}
public List<Contact> FindContactsById(Guid[] ids)
{
return _contactRepository.FindById(
}
#endregion
#region Работа с группами
public void OpenGroup(Group group)
{
if (group == null) return;
View.AddTab(
new EditGroupPresenter(
this, new EditGroupView(),
group)
);
}
public void SaveGroup(Group group)
{
_groupRepository.SaveGroup(
if (!CurrentGroups.Contains(
CurrentGroups.Add(group);
StatusText = string.Format("{0} сохранена.", group.Title);
}
public void AddCheckedGroup(Group group)
Информация о работе Разработка системы рассылки СМС сообщений