Разработка web-приложения сайта с помощью технологий ado.net и asp.net

Описание логической структуры таблиц базы данных для разработки web-приложения с помощью технологий ado.net и asp.net. Система меню, программы и модули, используемые в работе сайта. Класс, выполняющий операции и связующий информацию сайта с базой данной.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 26.09.2012
Размер файла 104,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

ALTER PROCEDURE [dbo].[tbh_Newsletters_UpdateNewsletterSend]

(@NewsletterID int)

AS

UPDATE tbh_Newsletters

SET NewsletterSend = 1

WHERE NewsletterID = @NewsletterID

2.2 Класс связующий информацию сайта с базой данной

Для облегчения перемещения информации в базу данных AppliedMathematicsBase и обратно имеет смысл создать класс NewsletterDetails, который представит все поля в виде открытых свойств. Вот его полный код:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

namespace MB.AppliedMathematics.DAL.Details

{public class NewsletterDetails

{

public NewsletterDetails() { }

public NewsletterDetails(int id, DateTime addedDate, string addedBy, string subject, string htmlBody, bool newsletterSend)

{this.ID = id;

this.AddedDate = addedDate;

this.AddedBy = addedBy;

this.Subject = subject;

this.HtmlBody = htmlBody;

this.NewsletterSend = newsletterSend;}

private int _id = 0;

public int ID

{get { return _id; }

set { _id = value; }}

private DateTime _addedDate = DateTime.Now;

public DateTime AddedDate

{get { return _addedDate; }

set { _addedDate = value; }}

private string _addedBy = "";

public string AddedBy

{get { return _addedBy; }

set { _addedBy = value; }}

private string _subject = "";

public string Subject

{get { return _subject; }

set { _subject = value; }}

private string _htmlBody = "";

public string HtmlBody

{get { return _htmlBody; }

set { _htmlBody = value; }}

private bool _newsletterSend = false;

public bool NewsletterSend

{get { return _newsletterSend; }

set { _newsletterSend = value; }}}}

2.3 Класс, выполняющий операции над данными в базе

Также необходимо разработать служебный класс, выполняющий операции над данными в базе. Этот класс использует хранимые процедуры, показанные выше. Он инкапсулирует весь код доступа к данным и специфичные для конкретной базы детали. Вот его структура:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

using System.Collections.Generic;

using System.Web.Caching;

using System.ComponentModel;

using System.Drawing;

using System.Collections;

using System.Web.Configuration;

using System.Text;

using MB.AppliedMathematics.DAL.Details;

namespace MB.AppliedMathematics.DAL.SqlClient

{

public class SQLNewsletterProvider

{private string connectionString;

public SQLNewsletterProvider()

{

// Получить строку соединения по умолчанию

connectionString = WebConfigurationManager.ConnectionStrings["LocalSqlServerConnection"].ConnectionString;

}

public SQLNewsletterProvider(string connectionStringName)

{

// получить конкретную строку соединения

connectionString = WebConfigurationManager.ConnectionStrings["connectionStringName"].ConnectionString;

}

// добавление новости

public int InsertNewsletter(DateTime AddedDate, string AddedBy, string Subject, string HtmlBody)

{ if (AddedBy == null) { AddedBy = ""; }

if (Subject == null) { Subject = ""; }

if (HtmlBody == null) { HtmlBody = ""; }

if (AddedDate == null) { AddedDate = DateTime.Now; }

SqlConnection cn = new SqlConnection(connectionString);

SqlCommand cmd = new SqlCommand("tbh_Newsletters_InsertNewsletter", cn);

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("@AddedDate", SqlDbType.DateTime).Value = AddedDate;

cmd.Parameters.Add("@AddedBy", SqlDbType.NVarChar).Value = AddedBy;

cmd.Parameters.Add("@Subject", SqlDbType.NVarChar).Value = Subject;

cmd.Parameters.Add("@HtmlBody", SqlDbType.NText).Value = HtmlBody;

cmd.Parameters.Add("@NewsletterID", SqlDbType.Int).Direction = ParameterDirection.Output;

try

{cn.Open();

cmd.ExecuteNonQuery();

return (int)cmd.Parameters["@NewsletterID"].Value;}

finally

{cn.Close();}}

// получение новости по ее идентификатору (ID)

public NewsletterDetails GetNewsletterByID(int id)

{using (SqlConnection con = new SqlConnection(connectionString))

{

SqlCommand cmd = new SqlCommand("tbh_Newsletters_GetNewsletterByID", con);

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("@NewsletterID", SqlDbType.Int).Value = id;

try

{con.Open();

SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow);

// получить первую строку

reader.Read();

NewsletterDetails newslett = new NewsletterDetails(Convert.ToInt32(reader["NewsletterID"]), Convert.ToDateTime(reader["AddedDate"]), Convert.ToString(reader["AddedBy"]), Convert.ToString(reader["Subject"]), Convert.ToString(reader["HtmlBody"]), Convert.ToBoolean(reader["NewsletterSend"]));

reader.Close();

return newslett;}

catch (SqlException err)

{throw new ApplicationException("Ошибка данных");}

finally

{con.Close();

}}}

// получить все новости с частичным поиском по полям:Subject, HtmlBody, AddedBy, AddedDate

public List<NewsletterDetails> GetNewsletters( string param)

{SqlConnection con = new SqlConnection(connectionString);

SqlCommand cmd = new SqlCommand("tbh_Newsletters_GetNewsletters", con);

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("@param", SqlDbType.NVarChar).Value = "%"+param+"%";

// Создать коллекцию для всех записей

List<NewsletterDetails> newsletter = new List<NewsletterDetails>();

try

{con.Open();

SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())

{NewsletterDetails newslet = new NewsletterDetails(Convert.ToInt32(reader["NewsletterID"]), Convert.ToDateTime(reader["AddedDate"]), Convert.ToString(reader["AddedBy"]), Convert.ToString(reader["Subject"]), Convert.ToString(reader["HtmlBody"]), Convert.ToBoolean(reader["NewsletterSend"]));

newsletter.Add(newslet);}

reader.Close();

return newsletter;}

catch (SqlException err)

{throw new ApplicationException("Ошибка данных");}

finally

{con.Close();}

}

// получить последние 3 новости

public List<NewsletterDetails> GetNewsletters3()

{SqlConnection con = new SqlConnection(connectionString);

SqlCommand cmd = new SqlCommand("tbh_Newsletters_GetNewsletters3", con);

cmd.CommandType = CommandType.StoredProcedure;

// Создать коллекцию для всех записей

List<NewsletterDetails> newsletter = new List<NewsletterDetails>();

try

{con.Open();

SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())

{NewsletterDetails newslet = new NewsletterDetails(Convert.ToInt32(reader["NewsletterID"]), Convert.ToDateTime(reader["AddedDate"]), Convert.ToString(reader["AddedBy"]), Convert.ToString(reader["Subject"]), Convert.ToString(reader["HtmlBody"]), Convert.ToBoolean(reader["NewsletterSend"]));

newsletter.Add(newslet);}

reader.Close();

return newsletter;}

catch (SqlException err)

{throw new ApplicationException("Ошибка данных");}

finally

{con.Close();}

}

// новость отослана подписчикам

public void UpdateNewsletterSend( int id)

{SqlConnection cn = new SqlConnection(connectionString);

SqlCommand cmd = new SqlCommand("tbh_Newsletters_UpdateNewsletterSend", cn);

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("@NewsletterID", SqlDbType.Int).Value = id;

try

{cn.Open();

cmd.ExecuteNonQuery();

}

finally

{cn.Close();}}

// обновить новость

public void UpdateNewsletter(string Subject, string HtmlBody, int id)

{if (Subject == null) { Subject = ""; }

if (HtmlBody == null) { HtmlBody = ""; }

SqlConnection cn = new SqlConnection(connectionString);

SqlCommand cmd = new SqlCommand("tbh_Newsletters_UpdateNewsletter", cn);

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("@Subject", SqlDbType.NVarChar).Value = Subject;

cmd.Parameters.Add("@HtmlBody", SqlDbType.NText).Value = HtmlBody;

cmd.Parameters.Add("@NewsletterID", SqlDbType.Int).Value = id;

try

{cn.Open();

cmd.ExecuteNonQuery();}

finally

{cn.Close();}}

//удалить новость

public void DeleteNewsletter(int id)

{{

SqlConnection con = new SqlConnection(connectionString);

SqlCommand cmd = new SqlCommand("tbh_Newsletters_DeleteNewsletter", con);

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add(new SqlParameter("@NewsletterID", SqlDbType.Int));

cmd.Parameters["@NewsletterID"].Value = id;

try

{con.Open();

cmd.ExecuteNonQuery();}

finally

{con.Close();

}}}}}

2.4 Страница сайта, отображающая информацию с базы данных Newsletters.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Newsletters.aspx.cs" Inherits="MB.AppliedMathematics.UI.Newsletters" %>

// MainContent расположен на мастер странице

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="Server">

//Подключаем Ajax элементы

<asp:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeout="86400">

</asp:ScriptManager>

// На событии таймара Timer1_Tick происходит отправка новостей подписчикам

<asp:Timer ID="Timer1" runat="server" Enabled="False" Interval="1" OnTick="Timer1_Tick">

</asp:Timer>

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">

<Triggers>

<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />

</Triggers>

<ContentTemplate>

<table border="0" width="100%">

<tr>

<td align="left">

<div class="sectiontitle">

Новости</div>

</td>

// Поиск по новостям

<td width="285px" align="right" valign="top">

<asp:Label ID="Label1" runat="server" Text="Поиск..."></asp:Label>

<asp:TextBox ID="TextBoxSearch" runat="server"></asp:TextBox><asp:ImageButton ID=" ImageButtonSearch "

runat="server" ImageUrl="~/Images/search.png" OnClick=" ImageButtonSearch _Click" />

</td>

</tr>

</table>

<asp:Label ID="Label3" runat="server" Text="Количество записей:"></asp:Label>

<asp:Label ID="LabelCount" runat="server" ForeColor="#CC6600" Font-Bold="true"></asp:Label>

// Панель с ссылкой на добавление новости, видна только администраторам и редакторам

<asp:Panel runat="server" ID="panAdd" Visible="false" Direction="RightToLeft" Enabled="True">

<div id="Div1" class="cl_link" runat="server">

<asp:HyperLink ID="AddNews" Visible="false" runat="server" NavigateUrl="~/Admin/AddEditNewsletters.aspx">Добавить новость</asp:HyperLink>

</div>

</asp:Panel>

//Панель с визуализацией состояния отправки новостей на е-mail

<asp:Panel ID="PanelSendEmail" runat="server" Visible="False">

<table width="100%" border="0">

<tr>

<td align="left">

<asp:Label runat="server" ID="Label2" Text="Количество адресатов:" />

<asp:Label ID="LabelCountAddress" runat="server" ForeColor="#CC6600" Font-Bold="true"></asp:Label>

</td>

</tr>

<tr>

<td align="left">

<asp:Label ID="LabelLetterSendL" runat="server" Text="Количество успешно отправленных: "

Visible="False"></asp:Label>

<asp:Label ID="LabelLetterSend" runat="server" ForeColor="#CC6600" Text=""></asp:Label>

</td>

</tr>

<tr>

<td align="left">

<asp:Label ID="LabelLetterNoSendL" runat="server" Text="Количество не оправленных:"

Visible="False"></asp:Label>

<asp:Label ID="LabelLetterNoSend" runat="server" ForeColor="#CC6600" Text=""></asp:Label>

</td>

</tr>

</table>

<asp:Panel ID="PanelAnim" runat="server" Visible="false">

<asp:Label ID="Label14" runat="server" Text="Подождите. Идет отправка писем...Обработано"></asp:Label>

&nbsp

<asp:Label ID="LabelSendCurrent" runat="server" Text="0"></asp:Label>

&nbsp

<asp:Label ID="Label15" runat="server" Text="писем." SkinID="LabelIUD"></asp:Label>

<asp:Image ID="Image1" runat="server" Width="40px" ImageUrl="~/Images/ClockAnim.gif" />

</asp:Panel>

<asp:Button ID="ButtonOK" runat="server" Text="Ok" Visible="false" OnClick="ButtonOK_Click" />

</asp:Panel>

<br />

//подключение к объекту с данными

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"

SelectMethod="GetNewsletters"

TypeName="MB.AppliedMathematics.DAL.SqlClient.SQLNewsletterProvider">

<SelectParameters>

<asp:Parameter DefaultValue="" Name="param" Type="String" />

</SelectParameters>

</asp:ObjectDataSource>

<div align="center">

//отображение новостей в ListView

<asp:ListView ID="ListView1" runat="server" DataSourceID="ObjectDataSource1"

GroupItemCount="2" onitemcommand="ListView1_ItemCommand" >

<LayoutTemplate>

<table runat="server" width="100%">

<tr runat="server">

<td runat="server">

<table ID="groupPlaceholderContainer" runat="server" border="0"

cellpadding="10" style="font-family: Verdana, Arial, Helvetica, sans-serif;" width="100%">

<tr ID="groupPlaceholder" runat="server">

</tr>

</table>

</td>

</tr>

<tr runat="server">

<td runat="server"

style="text-align: center; font-family: Verdana, Arial, Helvetica, sans-serif;color: #333333;" >

</td>

</tr>

</table>

</LayoutTemplate>

<EmptyItemTemplate>

<td runat="server" />

</EmptyItemTemplate>

<GroupTemplate>

<tr ID="itemPlaceholderContainer" runat="server">

<td ID="itemPlaceholder" runat="server">

</td>

</tr>

</GroupTemplate>

<EmptyDataTemplate>

<table runat="server">

<tr>

<td>

Таких новостей не найдено.</td>

</tr>

</table>

</EmptyDataTemplate>

<ItemTemplate>

<td runat="server" >

<a ID='<%# Eval("ID") %>'></a>

<div class="posttitle">

<asp:Literal ID="lblAddedDate" runat="server"

Text='<%# Eval("AddedDate", "{0:D}") %>' />

<asp:Literal ID="lblTitle" runat="server" Text='<%# Eval("Subject") %>' />

<div ID="Div2" runat="server" class="111"

style="font-size: x-small; font-style: italic;">

Добавлено

<asp:Literal ID="lblAddedBy" runat="server" Text='<%# Eval("AddedBy") %>' />

</div>

</div>

<div class="postbodyNewsText">

<asp:Literal ID="lblBody" runat="server" Text='<%# Eval("HtmlBody") %>' />

<br />

//панель редактирования новости видна только администраторам и редакторам

<asp:Panel ID="panEdit" runat="server" HorizontalAlign="Right"

Visible="<%# UserCanEdit %>">

<asp:Label ID="LabelNewsletter" runat="server"

Text='<%#Eval("NewsletterSend") %>' Visible="false"></asp:Label>

<asp:Image ID="ImageNewsletter" runat="server" />

&nbsp;

<asp:ImageButton ID="ImageSendNewsletter" runat="server"

CommandArgument='<%# Eval("ID") %>' CommandName="Send"

ImageUrl="~/Images/SendNews.png"

OnClientClick="if (confirm('Разослать новость по подписке?') == false) return false;"

ToolTip="Разослать новость по подписке" />

&nbsp;

<asp:HyperLink ID="lnkEdit" runat="server" ImageUrl="~/Images/Edit.gif"

NavigateUrl='<%# "~/Admin/AddEditNewsletters.aspx?ID=" + Eval("ID") %>'

ToolTip="Изменить новость" />

&nbsp;&nbsp;

<asp:ImageButton ID="btnDelete" runat="server" AlternateText="Удаление новости"

CommandArgument='<%# Eval("ID") %>' CommandName="Del"

ImageUrl="~/Images/Delete.gif"

OnClientClick="if (confirm('Вы действительно хотите удалить эту новость?') == false) return false;"

ToolTip="Удалить" />

</asp:Panel>

</div>

</td>

</ItemTemplate>

</asp:ListView>

<br />

//компонент DataPager для перелистывания страниц с новостями

<asp:DataPager ID="DataPager1" runat="server" PagedControlID="ListView1"

PageSize="10" QueryStringField="page">

<Fields>

<asp:NextPreviousPagerField ButtonType="Button" FirstPageText="В начало"

LastPageText="В конец" NextPageText="Далее" PreviousPageText="Назад"

ShowFirstPageButton="True" ShowLastPageButton="True" />

</Fields>

</asp:DataPager>

</div>

<br />

</ContentTemplate>

</asp:UpdatePanel>

</asp:Content>

2.5 Страница сайта, отображающая информацию с базы данных Newsletters.cs

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.Profile;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

using MB.AppliedMathematics.DAL.Details;

using MB.AppliedMathematics.DAL.SqlClient;

using System.IO;

using System.Net.Mail;

using System.Net;

using System.Text;

using System.Net.Mime;

using System.Web.Configuration;

using System.Net.Configuration;

using System.Collections.Generic;

namespace MB.AppliedMathematics.UI

{

public partial class Newsletters : BasePage

{

private bool _userCanEdit = false;

protected bool UserCanEdit

{

get { return _userCanEdit; }

set { _userCanEdit = value; }

}

protected void Page_Init(object sender, EventArgs e)

{

UserCanEdit = (this.User.Identity.IsAuthenticated &&

(this.User.IsInRole("Administrators") || this.User.IsInRole("Editors")));

}

protected void Page_Load(object sender, EventArgs e)

{

// панели для редактирования новости видны только администраторам и редакторам

if (!this.IsPostBack)

{ if (this.User.Identity.IsAuthenticated &&

(this.User.IsInRole("Administrators") || this.User.IsInRole("Editors")))

{ panAdd.Visible = true;

AddNews.Visible = true; }

Data(TextBoxSearch.Text); }

ImageSendGreed();

}

// показываем в виде картинки состояние новости, разослана она или нет подписчикам

protected void ImageSendGreed()

{ for (int i = 0; i < ListView1.Items.Count; i++)

{ Image ImageNewsletter = (Image)ListView1.Items[i].FindControl("ImageNewsletter");

Label LabelNewsletter = (Label)ListView1.Items[i].FindControl("LabelNewsletter");

if (LabelNewsletter.Text == "False")

{ImageNewsletter.ToolTip = "Новость еще не разослана";

ImageNewsletter.ImageUrl = "~/Images/Envelope.png";}

else

{ImageNewsletter.ToolTip = "Новость разослана";

ImageNewsletter.ImageUrl = "~/Images/OpenEnvelope.png";}

} }

// формируем DataSet с именами и e-mail подписчиков

protected DataSet Addresset()

{

DataSet Address = new DataSet();

Address.Tables.Add("Table");

Address.Tables["Table"].Columns.Add("User");

Address.Tables["Table"].Columns.Add("eMail");

MembershipUserCollection allUsers = Membership.GetAllUsers();

foreach (MembershipUser user in allUsers)

{ProfileCommon profile = new ProfileCommon();

profile = Profile.GetProfile(user.UserName);

if (profile.Preferences.Newsletter == "Да")

{DataRow dr = Address.Tables["Table"].NewRow();

dr["User"] = user.UserName;

dr["eMail"] = user.Email;

Address.Tables["Table"].Rows.Add(dr);

}}

return Address;

}

// процедура отправки письма с новостью

protected int SendMail(string user, string email, string subject, string bodyText)

{try

{Configuration config = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);

MailSettingsSectionGroup settings = (MailSettingsSectionGroup)config.GetSectionGroup("system.net/mailSettings");

SmtpClient Smtp = new SmtpClient(settings.Smtp.Network.Host, settings.Smtp.Network.Port);

Smtp.Credentials = new NetworkCredential(settings.Smtp.From, settings.Smtp.Network.Password);

// оправляем сообщение

MailMessage msg = new MailMessage();

msg.IsBodyHtml = false;

msg.From = new MailAddress(settings.Smtp.From);

msg.To.Add(new MailAddress(email, ""));

msg.IsBodyHtml = true;

msg.Subject = string.Format(Globals.Settings.ContactForm.MailSubject, subject);

string body = "Здравствуйте " + user + "!"+"\n";

body = body + bodyText;

msg.Body = body;

Smtp.Send(msg);

return 1;

}

catch (Exception ex)

{ return 0; }

}

// отправка писем происходит в событии таймера

protected void Timer1_Tick(object sender, EventArgs e)

{DataSet Addres = (DataSet)Application["Address"];

int index = (int)Application["index"];

NewsletterDetails zap = (NewsletterDetails)Application["Newsletter"];

if (index < Addres.Tables[0].Rows.Count)

{DataRow dr = Addres.Tables[0].Rows[index];

LabelSendCurrent.Text = (index + 1).ToString();

Application["LetterSend"] = (int)Application["LetterSend"] + SendMail(dr["User"].ToString(), dr["eMail"].ToString(), "Новости", "\n"+"Тема новости: "+zap.Subject+"\n"+zap.HtmlBody);

Application["index"] = (int)Application["index"] + 1;

}

else

{SQLNewsletterProvider MyDb = new SQLNewsletterProvider();

MyDb.UpdateNewsletterSend(zap.ID);

Timer1.Enabled = false;

int LetterSend = (int)Application["LetterSend"];

int LetterNoSend = Addres.Tables[0].Rows.Count - LetterSend;

LabelLetterSendL.Visible = true;

LabelLetterNoSendL.Visible = true;

LabelLetterSend.Text = LetterSend.ToString();

LabelLetterNoSend.Text = LetterNoSend.ToString();

PanelAnim.Visible = false;

ButtonOK.Visible = true;

Data(TextBoxSearch.Text);

ImageSendGreed();

}}

protected void clear()

{LabelLetterSendL.Visible = false;

LabelLetterNoSendL.Visible = false;

LabelLetterSend.Text = "";

LabelLetterNoSend.Text = "";

LabelSendCurrent.Text = "0"; }

protected void ButtonOK_Click(object sender, EventArgs e)

{PanelSendEmail.Visible = false;}

//кнопка поиска

protected void ImageButtonSearch_Click(object sender, ImageClickEventArgs e)

{Data(TextBoxSearch.Text);}

//заполнение данными ListView с новостями

protected void Data(string param)

{SQLNewsletterProvider myDB = new SQLNewsletterProvider();

List<NewsletterDetails> zaps = new List<NewsletterDetails>();

zaps = myDB.GetNewsletters(param);

ObjectDataSource1.SelectParameters["param"] = new Parameter("param", TypeCode.String, TextBoxSearch.Text);

ListView1.DataBind();

LabelCount.Text = zaps.Count.ToString();

TextBoxSearch.Text = "";

}

// команды в записях ListView

protected void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e)

{ if (e.CommandName == "Send")

{

clear();

SQLNewsletterProvider MyDb = new SQLNewsletterProvider();

NewsletterDetails zap = new NewsletterDetails();

int id = Convert.ToInt32(e.CommandArgument.ToString());

zap = MyDb.GetNewsletterByID(id);

Application["Newsletter"] = zap;

DataSet Address = new DataSet();

Address = Addresset();

Application["Address"] = Address;

Application["index"] = 0;

Application["LetterSend"] = 0;

Application["LetternoSend"] = 0;

LabelCountAddress.Text = Address.Tables["Table"].Rows.Count.ToString();

PanelSendEmail.Visible = true;

Timer1.Enabled = true;

PanelAnim.Visible = true;

}

if (e.CommandName == "Del")

{

SQLNewsletterProvider MyDb = new SQLNewsletterProvider();

MyDb.DeleteNewsletter(Convert.ToInt32(e.CommandArgument.ToString()));

Data(TextBoxSearch.Text);

ImageSendGreed();

}}}}

2.6 Страница добавления (изменения) информации из базы данных AddEditNewsletters.cs

namespace MB.AppliedMathematics.UI.Admin

{

public partial class AddEditNewsletters : BasePage

{

private int id = 0;

private bool isNewNewsLetter = false;

private bool isEditingNewsletter = false;

String connectionString = WebConfigurationManager.ConnectionStrings["LocalSqlServerConnection"].ConnectionString;

SQLNewsletterProvider sqlNewsletterProvider = new SQLNewsletterProvider();

protected void Page_Load(object sender, EventArgs e)

{

// если страница была загружена в первый раз, то

if (!this.IsPostBack)

{

id = 0;

if ((!string.IsNullOrEmpty(this.Request.QueryString["ID"])))

{

id = int.Parse(this.Request.QueryString["ID"]);

}

//определяем, будем добавлять, или изменять новость

isNewNewsLetter = (id == 0 || id == null);

isEditingNewsletter = (id != 0);

txtBody.BasePath = this.BaseUrl + "FCKeditor/";

// если новость изменяем, то

if (isEditingNewsletter)

{

// загружаем новость по ее идентификатору

NewsletterDetails newslet = sqlNewsletterProvider.GetNewsletterByID(id);

lblEditNews.Visible = true;

lblNewNews.Visible = false;

btnSubmit.Text = "Обновить";

txtTitle.Text = newslet.Subject;

txtBody.Value = newslet.HtmlBody;

}

// если новость будет добавляться, то

else if (isNewNewsLetter)

{

lblNewNews.Visible = true;

lblEditNews.Visible = false;

btnSubmit.Text = "Добавить";

} } }

// процедура кнопки на изменении (добавлении) новости

protected void btnSubmit_Click1(object sender, EventArgs e)

{if (btnSubmit.Text == "Обновить")

{

id = int.Parse(this.Request.QueryString["ID"]);

string body = txtBody.Value;

sqlNewsletterProvider.UpdateNewsletter(txtTitle.Text, body, id);

panInput.Visible = false;

lblConfirmationEdit.Text = " Ваша новость успешно изменена!";

HyperLink2.Visible = true;

}

else

{DateTime AddedDate = DateTime.Now;

string AddedBy = this.User.Identity.Name;

sqlNewsletterProvider.InsertNewsletter(AddedDate, AddedBy, txtTitle.Text, txtBody.Value);

panInput.Visible = false;

lblConfirmationEdit.Text = " Ваша новость успешно добавлена!";

HyperLink2.Visible = true;

} }

protected void ButtonCanсel_Click(object sender, EventArgs e)

{

Response.Redirect("~/Newsletters.aspx");

} }}

Заключение

Разработанный сайт отвечает всем требованиям, которые необходимы для сайта с подобным содержанием. В нем представлена информация о:

общей информацией о кафедре; научной работе кафедры; истории кафедры; членах кафедры, которые могут подразделяться на сотрудников (преподавателей, лаборантов), студентов, аспирантов и магистрантов;

чтением лекций по дисциплинам или проведением практических и семинарских занятий сотрудниками, курсовых и дипломных работ студентов с их научными руководителями;

магистерских диссертаций магистрантов с их научными руководителями;

кандидатских диссертаций аспирантов с их научными руководителями;

публикациях членов кафедры;

дисциплинах кафедры, с выложенными по ним документами; документах кафедры.

Также разработаны для сайта модули: форумов, статей, голосования и новостей. Новости могут отправляться на e-mail подписчика.

В web-приложении используется каркас Membership API, который предоставляет полный набор готовых функций для управления пользователями. С помощью его и специально разработанных элементов управления происходит регистрация новых пользователей. При этом у администраторов есть возможность извлечь подробную информацию о каждом их них, редактировать их профиль, добавить им роль.

В случае утраты пользователем пароля, последний будет выслан ему на e-mail.

Для облегчения перемещения информации в базу данных и обратно созданы специальные классы, которые представляют все поля из таблиц базы данных в виде открытых свойств. Также разработаны служебные классы, выполняющие операции над данными в базе. Эти классы используют как хранимые процедуры, так и запросы SQL. Они инкапсулирует весь код доступа к данным и специфичные для конкретной базы детали.

Разработанное web- приложение является удобным в использовании, как обычным пользователям, так и администраторам.

На большинстве страниц сайта, там, где необходимо, предусмотрен частично-поисковый поиск, с помощью которого можно быстро найти необходимую информацию по данным расположенным на странице.

Также на страницах используются элементы Ajax (ScriptManager, UpdatePanel), которые позволяют выполнить частичное обновление страницы, избавляя её от «моргания».

Web-приложение предоставляет возможность просмотреть на одной странице всю информацию о выбранном сотруднике. А именно: его биографию, дисциплины, которые он читает, публикации, у каких студентов, магистрантов и аспирантов по каким работам, является научным руководителям. Также у выбранного студента можно посмотреть его курсовые, дипломные работы и его публикации. Аналогично и у магистрантов, аспирантов.

Кроме этого предусмотрены страницы с поиском со всеми:

· публикациями сотрудников, студентов, магистрантов и аспирантов;

· курсовыми, дипломными работами студентов;

· научными работами магистрантов и аспирантов;

· преподавательской деятельности сотрудников.

По выбранной дисциплине можно скачать предоставленные по ней документы. Кроме этого эти же документы и общие документы кафедры можно найти на одноименной странице.

Разработана консоль администрирования с защитой от несанкционированного доступа для удобного изменения данных, добавления или удаления. Также администратор может отредактировать необходимые данные с любой станицы web-приложения, перейдя по ссылкам видимым только ему.

Были разработаны и пользовательские элементы управления необходимые для работы web-приложения, его визуализации.

Также были созданы несколько тем дизайна сайта, с возможностью добавления новых.

Список использованных источников

1. Беллиньясо М. Разработка Web-приложений в среде ASP.NET 2.0: задача-проект-решение/ М. Беллиньясо. - пер. с англ. - Москва-Санкт-Петербург-Киев:- ООО «И.Д. Вильямс», 2007. - 640с.

2. Мак-Дональд М. Microsoft ASP.NET 2.0 с примерами на C# 2005 для профессионалов/ М. Мак-Дональд, М. Шпушта. - пер. с англ. - Москва-Санкт-Петербург-Киев:- ООО «И.Д. Вильямс», 2006. - 1408с.

3. Сеппа Д. Microsoft ADO.NET/ Д. Сеппа. - Москва: «И.Д. Русская Редакция», 2003. - 640с

4. Сеппа Д. Программирование на Microsoft ADO.NET 2.0. Мастер-класс/ Д. Сеппа. - Москва: «И.Д. Русская Редакция», 2007. -784с

5. Пауэрс Л. Microsoft Visual Studio 2008 / Л. Пауэрс, М.Снелл. - пер. с англ. - Санкт-Петербург: «БХВ-Петербург», 2009.-1200

6. Библиотека MSDN (по-русски) [Электронный ресурс]. - 1999. - Режим доступа: http://msdn.microsoft.com/ru-ru/library/.

7. DotSite [Электронный ресурс]. - 2000. - Режим доступа http://www.dotsite.ru/Publications/Publication1.aspx.

8. Microsoft TechNet [Электронный ресурс]. - 2012. - Режим доступа http://technet.microsoft.com/ru-ru/library/cc775831.aspx.

9. Википедия [Электронный ресурс]. - 2001. - Режим доступа http://ru.wikipedia.org/wiki/Microsoft_Visual_Studio.

10. Википедия [Электронный ресурс]. - 2001. - Режим доступа http://ru.wikipedia.org/wiki/C_Sharp.

Размещено на Allbest.ru


Подобные документы

  • Проектирование макета сайта магазина детской одежды: функции каждого элемента страницы, меню, каталог, авторизация, поиск. Классы и модули, их использование в созданном WEB-приложении. Структура базы данных и описание таблиц с существующими полями.

    курсовая работа [3,8 M], добавлен 11.05.2015

  • Процесс разработки Web-сайта. Состав и содержание работ по созданию подсистемы. Требования к Web-сайту. Определение сущностей модели базы данных. Разработка логической модели базы данных. Реализация PHP-скриптов и заполнение базы данных Web-сайта.

    дипломная работа [8,2 M], добавлен 29.06.2011

  • Рассмотрение средств создания web-страниц: HTML, CSS и РНР. Разработка приложения в PhpMyAdmin, работающего с базой данных "Спортивные организации города". Соединение с сервером и базой данных. Создание сайта "Институт" в Macromedia Dreamweaver 8.

    курсовая работа [461,8 K], добавлен 10.07.2015

  • Технологии создания web-страниц. Появление Active Server Pages. Разработка динамического web-сайта на asp.net. Создание дизайна и каркаса сайта с использованием стандартных HTML таблиц. Проектирование базы данных на основе ado.net и подключение к ней.

    контрольная работа [2,4 M], добавлен 24.05.2019

  • Понятие web-сайта и их типы. Программы для создания web-сайта. Описание структуры проекта. Алгоритм создания сайта. Описание конструктора Jimdo. Языки программирования серверного выполнения. Создание полнофункционального веб-сайта для ОАО "КУЛЗ".

    курсовая работа [3,5 M], добавлен 05.06.2015

  • Понятие сайта и их классификация - корпоративные, презентационные, тематические, интернет-магазины. Язык гипертекстовой разметки HTML и его средства разработки. Виртуальный web-сервер Denver и MySQL базы. Этапы разработки сайта и структура навигации.

    дипломная работа [2,4 M], добавлен 13.01.2015

  • Обзор используемых веб-технологий: языка HTML и PHP, таблиц CSS, базы данных MySQL. Написание веб-приложения для продвижения и распространения информации об ученом, а так же создания диалога с людьми, не имеющими возможности связаться с ученым в живую.

    курсовая работа [504,5 K], добавлен 02.06.2015

  • Анализ систем для создания сайта "Интеллектика". Архитектура и структура сайта; технические требования. Выбор базы данных. Процесс разработки приложения авторизации для просмотра закрытых научных проектов. Техническая документация для администратора.

    дипломная работа [2,0 M], добавлен 19.01.2017

  • Анализ предметной области и функций сайта. Разработка структуры базы данных, структуры и дизайна web-сайта. Описание установки CMS "Joomla!" и программной оболочки Denwer, создание гостевой книги, галереи и карты Google, результаты их тестирования.

    дипломная работа [2,3 M], добавлен 19.01.2017

  • Проектирование базы данных, содержащей информацию о школах художественной гимнастики. Разработка рабочего места администратора для ввода и корректирования содержания сайта. Создание каркаса сайта для пользователей. Информационная структура web-приложения.

    дипломная работа [6,2 M], добавлен 15.03.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.