Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
diplom.doc
Скачиваний:
15
Добавлен:
11.02.2016
Размер:
2.02 Mб
Скачать

Література

  1. Павлова, Е.А. Технологии разработки современных информационных систем на платформе .NET – Интернет-университет информационных технологий, [Текст]. – 2009. – 112с.

  2. Пауэлл, Т. Ajax. Настольная книга программиста [Текст] – Эксмо. – 2009. – 720с.

  3. Сандерсон, С. ASP.NET MVC Framework с примерами на C# для профессионалов. [Текст] – Вильямс, 2009. – 608с.

  4. Мак-Дональд, М. Microsoft ASP.NET 3.5 с примерами на C# 2008 и Silverlight 2 для профессионалов, – Вильямс, 2009. – 1408с.

  5. Дэвис С.Р. C# 2005 для "чайников" / Дэвис С.Р., Сфер Ч.; "Вильямс", [Текст] – 2006. – 576 с.

  6. Эндрю Троелсен. Язык программирования C# 2008 и платформа .NET 3.5. – [Текст] "Вильямс" 2009. – 1344 с.

  7. Мот, Д. Microsoft Mobile и .NET Compact Framework. Руководство разработчика [Текст]. – Питер, 2009. – 672с.

  8. Салмре, И. Программирование мобильных устройств на платформе .NET Compact Framework [Текст]. – Вильямс, 2006. – 736с.

  9. Камерон, Р. ASP.NET 3.5, компоненты AJAX и серверные элементы управления для профессионалов [Текст]. – Вильямс, 2009. – 608с.

  10. Шмидт, Б. Основы Windows Workflow Foundation [Текст]. – ДМК Пресс, 2008. – 352с.

  11. Паркер Т. .NET. Сетевое программирование для профессионалов [Текст]. – Лори, 2005. – 400с.

  12. Леве, Д. Создание служб WCF [Текст]. – Питер, 2008. – 592с.

  13. Вульф, Б. Шаблоны интеграции корпоративных приложений [Текст]. – Вильямс, 2007. – 672с.

  14. Шафер, Д.Ф. Управление программными проектами. Достижение оптимального качества при минимуме затрат [Текст]. – Вильямс, 2004. – 1136с.

  15. Ратц, Д LINQ: язык интегрированных запросов в C# 2008 для профессионалов [Текст]. – Вильямс, 2008. – 560с.

  16. Основы проектирования реляционных баз данных: [Электрон. ресурс]. – Режим доступа: http://www.intuit.ru.

  17. Сравнение SQL Server с Oracle Database : [Электрон. ресурс]. – Режим доступа: http://www.microsoft.com/sqlserver/2008.

  18. SQL Server 2008: Безопасность: [Электрон. ресурс]. – Режим доступа: http://sysdba.org.ua.

  19. Википедия, Microsoft SQL Server: [Электрон. ресурс]. – Режим доступа: http://www.ru.wikipedia.org.

  20. Кросс-платформенная разработка – Windows Mobile и Windows: [Электрон. ресурс]. – Режим доступа: http://mobile-developer.ru.

  21. Microsoft Sync Framework: Синхронизация данных: [Электрон. ресурс]. – Режим доступа: http://msdn.microsoft.com.

ДОДАТОК А

Лістинг коду основних компонентів

PollsService.cs

public class PollsService : System.Web.Services.WebService

{

[WebMethod]

public PollsData.PollsDataTable GetPolls(int state)

{

return new PollsAdapter().GetData(state);

}

[WebMethod]

public PollsData.UsersDataTable GetInterviewersByPoll(int pollId)

{

return new UsersAdapter().GetInterviewersByPoll(pollId);

}

[WebMethod]

public PollsData.QuestionsDataTable GetQuestionsByPollId(int pollId)

{

return new QuestionsAdapter().GetQuestionsByPollId(pollId);

}

[WebMethod]

public void AddPoll(string name, int createdById, DateTime activateDate, DateTime? expiredDate)

{

new PollsAdapter().AddPoll(name, createdById, activateDate, expiredDate);

}

[WebMethod]

public void AddQuestion(string question, bool required, bool multiAnswer, int questionTypeId, int pollId)

{

new QuestionsAdapter().AddQuestion(question, required, multiAnswer, questionTypeId, pollId);

}

[WebMethod]

public PollsData.AnswersDataTable GetAnswersByQuestionId(int questionId)

{

return new AnswersAdapter().GetAnswersByQuestionId(questionId);

}

[WebMethod]

public void AddAnswer(string answer, int questionId)

{

new AnswersAdapter().AddAnswer(answer, questionId);

}

}

}

Core.Poll.cs

public class Poll

{

public static void AddPoll(string name, int createdById, DateTime activateDate, DateTime expiredDate)

{

using (PollsService service = new PollsService())

{

service.AddPoll(name, createdById, activateDate, expiredDate);

}

}

public static PollsData.PollsRow GetPoll(int pollId)

{

using (PollsService service = new PollsService())

{

PollsData.PollsDataTable table = service.GetPoll(pollId);

if (table.Rows.Count > 0)

{

return table[0];

}

}

return null;

}

public static PollsData.PollsDataTable GetPolls(int state)

{

using (PollsService service = new PollsService())

{

return service.GetPolls(state);

}

}

public static PollsData.QuestionsDataTable GetQuestionsByPollId(int pollId)

{

using (PollsService service = new PollsService())

{

return service.GetQuestionsByPollId(pollId);

}

}

public static PollsData.AnswersDataTable GetAnswersByQuestionid(int questionId)

{

using (PollsService service = new PollsService())

{

return service.GetAnswersByQuestionId(questionId);

}

}

public static void AddQuestion(string question, bool required, bool multiAnswer, int questionTypeId, int pollId)

{

using (PollsService service = new PollsService())

{

service.AddQuestion(question, required, multiAnswer, questionTypeId, pollId);

}

}

public static void AddAnswer(string answer, int questionId)

{

using (PollsService service = new PollsService())

{

service.AddAnswer(answer, questionId);

}

}

public static PollsData.PollsRow GetPollByQuestionId(int questionId)

{

using (PollsService service = new PollsService())

{

PollsData.PollsDataTable table = service.GetPollByQuestionId(questionId);

if (table.Count > 0)

{

return table[0];

}

}

return null;

}

public static PollsData.PollsRow GetPollByAnswerId(int answerId)

{

using (PollsService service = new PollsService())

{

PollsData.PollsDataTable table = service.GetPollByAnswerId(answerId);

if (table.Count > 0)

{

return table[0];

}

}

return null;

}

}

Core.User.cs

public static PollsData.UsersRow GetUser(int userId)

{

using (PollsService service = new PollsService())

{

PollsData.UsersDataTable table = service.GetUser(userId);

if (table.Count > 0)

{

return table[0];

}

}

return null;

}

public static PollsData.UsersRow GetUserByCredentials(string login, string password)

{

using (PollsService service = new PollsService())

{

PollsData.UsersDataTable table = service.GetUserByCredentials(login, password);

if (table.Count > 0)

{

return table[0];

}

}

return null;

}

public static PollsData.UsersDataTable GetUsersByGroup(int userGroupId)

{

using (PollsService service = new PollsService())

{

return service.GetUsersByGroup(userGroupId);

}

}

public static PollsData.UsersDataTable GetInterviewersByPoll(int pollId)

{

using (PollsService service = new PollsService())

{

return service.GetInterviewersByPoll(pollId);

}

}

public static void SetInterviewerForPoll(int pollId, int interviewerId)

{

using (PollsService service = new PollsService())

{

service.SetInterviewerForPoll(pollId, interviewerId);

}

}

public static void DeleteInterviewerFromPoll(int pollId, int interviewerId)

{

using (PollsService service = new PollsService())

{

service.DeleteInterviewerFromPoll(pollId, interviewerId);

}

}

}

PollDetails.cs

public partial class PollDetails : System.Web.UI.Page

{

public PollsData.PollsRow poll = null;

protected void Page_Load(object sender, EventArgs e)

{

int pollId = 0;

if (!string.IsNullOrEmpty(Request["pollId"]))

{

int.TryParse(Request["pollId"], out pollId);

}

poll = Poll.GetPoll(pollId);

if (poll == null) { return; }

this.PollResultsList1.PollId = poll.Id;

if (!IsPostBack)

{

var ai =

from c in Core.User.GetUsersByGroup(2)

select new { Id = c.Id, FullName = c.FirstName + " " + c.LastName };

InterviewersList.DataSource = ai;

InterviewersList.DataBind();

InterviewersList.SelectedIndexChanged -= new EventHandler(InterviewersList_SelectedIndexChanged);

foreach (var i in Core.User.GetInterviewersByPoll(poll.Id))

{

ListItem item = InterviewersList.Items.FindByValue(i.Id.ToString());

if (item != null)

{

item.Selected = true;

item.Attributes["style"] = "color:Black;";

}

}

InterviewersList.SelectedIndexChanged += new EventHandler(InterviewersList_SelectedIndexChanged);

}

}

protected void InterviewersList_SelectedIndexChanged(object sender, EventArgs e)

{

var ai =

from c in Core.User.GetInterviewersByPoll(poll.Id)

select new { Id = c.Id, FullName = c.FirstName + " " + c.LastName };

foreach(ListItem item in InterviewersList.Items)

{

if (item.Selected && ai.Where(x => x.Id.ToString() == item.Value).Count() == 0)

{

Core.User.SetInterviewerForPoll(poll.Id, int.Parse(item.Value));

}

if (!item.Selected && ai.Where(x => x.Id.ToString() == item.Value).Count() > 0)

{

Core.User.DeleteInterviewerFromPoll(poll.Id, int.Parse(item.Value));

}

}

Response.Redirect(Request.RawUrl);

}

}

PollsCache.SyncContract

public partial class PollsCacheSyncService : object, IPollsCacheSyncContract {

private PollsCacheServerSyncProvider _serverSyncProvider;

public PollsCacheSyncService() {

this._serverSyncProvider = new PollsCacheServerSyncProvider();

}

[System.Diagnostics.DebuggerNonUserCodeAttribute()]

public virtual SyncContext ApplyChanges(SyncGroupMetadata groupMetadata, DataSet dataSet, SyncSession syncSession) {

return this._serverSyncProvider.ApplyChanges(groupMetadata, dataSet, syncSession);

}

[System.Diagnostics.DebuggerNonUserCodeAttribute()]

public virtual SyncContext GetChanges(SyncGroupMetadata groupMetadata, SyncSession syncSession) {

return this._serverSyncProvider.GetChanges(groupMetadata, syncSession);

}

[System.Diagnostics.DebuggerNonUserCodeAttribute()]

public virtual SyncSchema GetSchema(Collection<string> tableNames, SyncSession syncSession) {

return this._serverSyncProvider.GetSchema(tableNames, syncSession);

}

[System.Diagnostics.DebuggerNonUserCodeAttribute()]

public virtual SyncServerInfo GetServerInfo(SyncSession syncSession) {

return this._serverSyncProvider.GetServerInfo(syncSession);

}

}

[ServiceContractAttribute()]

[XmlSerializerFormat()]

public interface IPollsCacheSyncContract {

[OperationContract()]

SyncContext ApplyChanges(SyncGroupMetadata groupMetadata, DataSet dataSet, SyncSession syncSession);

[OperationContract()]

SyncContext GetChanges(SyncGroupMetadata groupMetadata, SyncSession syncSession);

[OperationContract()]

SyncSchema GetSchema(Collection<string> tableNames, SyncSession syncSession);

[OperationContract()]

SyncServerInfo GetServerInfo(SyncSession syncSession);

}

}

PollsCache.Polls.sql

IF @@TRANCOUNT > 0

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

GO

BEGIN TRANSACTION;

IF @@TRANCOUNT > 0

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[Polls_Tombstone]'))

BEGIN

CREATE TABLE [dbo].[Polls_Tombstone](

[Id] Int NOT NULL,

[DeletionDate] DateTime NULL

) ON [PRIMARY]

END

GO

IF @@ERROR <> 0

ROLLBACK TRANSACTION;

IF @@TRANCOUNT > 0

ALTER TABLE [dbo].[Polls_Tombstone] ADD CONSTRAINT [PKDEL_Polls_Tombstone_Id]

PRIMARY KEY CLUSTERED

([Id])

ON [PRIMARY]

GO

IF @@ERROR <> 0

ROLLBACK TRANSACTION;

IF @@TRANCOUNT > 0

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[Polls_DeletionTrigger]') AND type = 'TR')

DROP TRIGGER [dbo].[Polls_DeletionTrigger]

GO

CREATE TRIGGER [dbo].[Polls_DeletionTrigger]

ON [dbo].[Polls]

AFTER DELETE

AS

SET NOCOUNT ON

UPDATE [dbo].[Polls_Tombstone]

SET [DeletionDate] = GETUTCDATE()

FROM deleted

WHERE deleted.[Id] = [dbo].[Polls_Tombstone].[Id]

IF @@ROWCOUNT = 0

BEGIN

INSERT INTO [dbo].[Polls_Tombstone]

([Id], DeletionDate)

SELECT [Id], GETUTCDATE()

FROM deleted

END

GO

IF @@ERROR <> 0

ROLLBACK TRANSACTION;

COMMIT TRANSACTION;

PollsCache.Users.sql

IF @@TRANCOUNT > 0

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

GO

BEGIN TRANSACTION;

IF @@TRANCOUNT > 0

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[Users_Tombstone]'))

BEGIN

CREATE TABLE [dbo].[Users_Tombstone](

[Id] Int NOT NULL,

[DeletionDate] DateTime NULL

) ON [PRIMARY]

END

GO

IF @@ERROR <> 0

ROLLBACK TRANSACTION;

IF @@TRANCOUNT > 0

ALTER TABLE [dbo].[Users_Tombstone] ADD CONSTRAINT [PKDEL_Users_Tombstone_Id]

PRIMARY KEY CLUSTERED

([Id])

ON [PRIMARY]

GO

IF @@ERROR <> 0

ROLLBACK TRANSACTION;

IF @@TRANCOUNT > 0

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[Users_DeletionTrigger]') AND type = 'TR')

DROP TRIGGER [dbo].[Users_DeletionTrigger]

GO

CREATE TRIGGER [dbo].[Users_DeletionTrigger]

ON [dbo].[Users]

AFTER DELETE

AS

SET NOCOUNT ON

UPDATE [dbo].[Users_Tombstone]

SET [DeletionDate] = GETUTCDATE()

FROM deleted

WHERE deleted.[Id] = [dbo].[Users_Tombstone].[Id]

IF @@ROWCOUNT = 0

BEGIN

INSERT INTO [dbo].[Users_Tombstone]

([Id], DeletionDate)

SELECT [Id], GETUTCDATE()

FROM deleted

END

GO

IF @@ERROR <> 0

ROLLBACK TRANSACTION;

COMMIT TRANSACTION;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]