База даних "Телефонний довідник"

Основи проектування інформаційних реляційних баз даних, надання користувачам необхідної їм інформації на основі збережених даних. Розробка бази даних, що дозволяє зберігати інформацію про абонентів (ім'я, мобільний телефон, адреса, e-mail, реєстрація).

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 13.11.2010
Размер файла 1,9 M

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

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

textBoxSearch.Enabled = listView1.Enabled = true;

buttonNew.Enabled = true;

}

else

{

changeInfoToolStripMenuItem.Enabled = settingsToolStripMenuItem.Enabled = false;

textBoxSearch.Enabled = listView1.Enabled = false;

buttonNew.Enabled = false;

}

}

string ConvertToPersianDate(string stringDate)

{

try

{

DateTime dateTime = DateTime.Parse(stringDate);

PersianCalendar persianCalendar = new PersianCalendar();

var str = persianCalendar.GetYear(dateTime).ToString() + " / " +

persianCalendar.GetMonth(dateTime).ToString() + " / " +

persianCalendar.GetDayOfMonth(dateTime).ToString() + " " +

persianCalendar.GetHour(dateTime).ToString() + ":" +

persianCalendar.GetMinute(dateTime).ToString() + ":" +

persianCalendar.GetSecond(dateTime).ToString();

return str;

}

catch (Exception ex)

{

StackFrame file_info = new StackFrame(true);

Messages.error(ref file_info, ex.Message, this);

return "";

}

}

#region listview

void textBoxSearch_TextChanged(object sender, EventArgs e)

{

try

{

if (textBoxSearch.Text.Trim() == "")

{

LoadPhoneBookItems();

return;

}

listView1.Items.Clear();

var query = from q in Variables.xDocument.Descendants("Item")

where q.Attribute("UserID").Value == Variables.CurrentUserID &&

(q.Attribute("Name").Value.ToLower().Contains(textBoxSearch.Text.Trim().ToLower())

q.Attribute("Phone").Value.ToLower().Contains(textBoxSearch.Text.Trim().ToLower())

q.Attribute("Mobile").Value.ToLower().Contains(textBoxSearch.Text.Trim().ToLower())

q.Attribute("Email").Value.ToLower().Contains(textBoxSearch.Text.Trim().ToLower())

q.Attribute("Address").Value.ToLower().Contains(textBoxSearch.Text.Trim().ToLower()))

select q;

if (query.Count() < 1) return;

foreach (var item in query)

{

ListViewItem listViewItems = new ListViewItem(new string[]

{ item.Attribute("Name").Value,

item.Attribute("Phone").Value,

item.Attribute("Mobile").Value,

item.Attribute("Email").Value,

item.Attribute("Address").Value,

item.Attribute("RegDate").Value});

listViewItems.Name = "Item" + item.Attribute("ID").Value;

listView1.Items.Add(listViewItems);

}

}

catch (Exception ex)

{

StackFrame file_info = new StackFrame(true);

Messages.error(ref file_info, ex.Message, this);

}

}

void listView1_MouseDoubleClick(object sender, MouseEventArgs e)

{

//var item = listView1.GetItemAt(e.X, e.Y);

buttonEdit_Click(null, null);

}

#endregion

}

}

Форма введення запису про абонентів:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Diagnostics;

using Phonebook.Classes;

using System.Xml.Linq;

using System.IO;

using System.Drawing.Imaging;

namespace Phonebook

{

public partial class ItemForm: Form

{

public string ItemID = "";

bool NewItem = false;

bool EditItem = false;

public ItemForm(bool newItem, bool editItem)

{

InitializeComponent();

this.tableLayoutPanel1.CellPaint += new TableLayoutCellPaintEventHandler(tableLayoutPanel1_CellPaint);

//////////////////////

this.NewItem = newItem;

this.EditItem = editItem;

if (NewItem)

this.Text = "Додати новий запис";

else if (EditItem)

this.Text = "Редагувати запис";

}

void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e)

{

try

{

if (e.Row % 2 == 0)

{

Graphics g = e.Graphics;

Rectangle r = e.CellBounds;

g.FillRectangle(new SolidBrush(Color.FromArgb(225, 225, 225)), r);

}

}

catch (Exception ex)

{

StackFrame file_info = new StackFrame(true);

Messages.error(ref file_info, ex.Message, this);

}

}

private void buttonSubmit_Click(object sender, EventArgs e)

{

try

{

errorProvider1.Clear();

#region add new item

if (NewItem)

{

if (textBoxName.Text.Trim() == "")

{

errorProvider1.SetError(textBoxName, "Будь-ласка, введіть ім'я");

return;

}

int maxID = 0;

try

{

maxID = (from q in Variables.xDocument.Descendants("Item")

where q.Attribute("UserID").Value == Variables.CurrentUserID

select (int)q.Attribute("ID")).Max();

}

catch { }

maxID++;

XElement newItem = new XElement("Item", new XAttribute("ID", maxID),

new XAttribute("UserID", Variables.CurrentUserID),

new XAttribute("Name", textBoxName.Text.Trim()),

new XAttribute("Mobile", textBoxMobile.Text.Trim()),

new XAttribute("Phone", textBoxPhone.Text.Trim()),

new XAttribute("Email", textBoxEMail.Text.Trim()),

new XAttribute("Address", textBoxAddress.Text.Trim()),

new XAttribute("RegDate", DateTime.Now.ToString()));

var ItemsElement = (from q in Variables.xDocument.Descendants("Items")

select q).First();

ItemsElement.Add(newItem);

}

#endregion

#region edit item

else if (EditItem)

{

if (textBoxName.Text.Trim() == "")

{

errorProvider1.SetError(textBoxName, "Будь-ласка, введіть ім'я");

return;

}

var theItem = (from q in Variables.xDocument.Descendants("Item")

where q.Attribute("ID").Value == this.ItemID

select q).First();

theItem.Attribute("Name").Value = textBoxName.Text.Trim();

theItem.Attribute("Mobile").Value = textBoxMobile.Text.Trim();

theItem.Attribute("Phone").Value = textBoxPhone.Text.Trim();

theItem.Attribute("Email").Value = textBoxEMail.Text.Trim();

theItem.Attribute("Address").Value = textBoxAddress.Text.Trim();

}

#endregion

TripleDES.EncryptToFile(Variables.xDocument.ToString(SaveOptions.DisableFormatting), Variables.DBFile, TripleDES.ByteKey, TripleDES.IV);

//Variables.xDocument.Save("debug.xml");

this.Close();

}

catch (Exception ex)

{

StackFrame file_info = new StackFrame(true);

Messages.error(ref file_info, ex.Message, this);

}

}

#region

Image ResizeImage(Image FullsizeImage, int NewWidth, int MaxHeight, bool OnlyResizeIfWider)

{

// Prevent using images internal thumbnail

FullsizeImage.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone);

FullsizeImage.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone);

if (OnlyResizeIfWider)

{

if (FullsizeImage.Width <= NewWidth)

{

NewWidth = FullsizeImage.Width;

}

}

int NewHeight = FullsizeImage.Height * NewWidth / FullsizeImage.Width;

if (NewHeight > MaxHeight)

{

// Resize with height instead

NewWidth = FullsizeImage.Width * MaxHeight / FullsizeImage.Height;

NewHeight = MaxHeight;

}

System.Drawing.Image NewImage = FullsizeImage.GetThumbnailImage(NewWidth, NewHeight, null, IntPtr.Zero);

// Clear handle to original file so that we can overwrite it if necessary

FullsizeImage.Dispose();

// Save resized picture

return NewImage;

}

string ImageToBase64String(Image image, ImageFormat format)

{

MemoryStream memory = new MemoryStream();

image.Save(memory, format);

string base64 = Convert.ToBase64String(memory.ToArray());

memory.Close();

return base64;

}

Image ImageFromBase64String(string base64)

{

MemoryStream memory = new MemoryStream(Convert.FromBase64String(base64));

Image result = Image.FromStream(memory);

memory.Close();

return result;

}

#endregion

}

}

Форма користувача:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

using System.Xml.Linq;

using Phonebook.Classes;

using System.Diagnostics;

using System.Net.Mail;

using System.Net;

namespace Phonebook

{

public partial class UserForm: Form

{

bool NewUser = false;

bool ChangeUser = false;

bool ChangeInfo = false;

public UserForm(bool newUser, bool changeUser, bool changeInfo)

{

InitializeComponent();

/////////////////////

this.NewUser = newUser;

this.ChangeInfo = changeInfo;

this.ChangeUser = changeUser;

if (NewUser)

{

this.Text = "Додати нового користувача";

labelPass1.Text = "Пароль:";

labelPass2.Text = "Підтвердити пароль:";

checkBoxForgetPass.Enabled = false;

}

else if (ChangeUser)

{

this.Text = "Обрати користувача";

labelPass1.Text = "Пароль:";

labelPass2.Text = "Новий пароль:";

labelPass2.Enabled = textBoxPassword2.Enabled = false;

labelEmail.Enabled = textBoxEmail.Enabled = false;

}

else if (ChangeInfo)

{

this.Text = "Змінити інформацію користувача";

labelPass1.Text = "Старий пароль:";

labelPass2.Text = "Новий пароль:";

}

}

private void buttonSubmit_Click(object sender, EventArgs e)

{

try

{

errorProvider1.Clear();

#region Forgets the password

if (checkBoxForgetPass.Enabled && checkBoxForgetPass.Checked)

{

if (textBoxUsername.Text.Trim() == "")

{

errorProvider1.SetError(this.textBoxUsername, "Будь-ласка, введіть ім'я користувача");

textBoxUsername.Focus();

return;

}

errorProvider1.Clear();

var user = Variables.xDocument.Descendants("User").Where(q => q.Attribute("UserName").Value.ToLower() == textBoxUsername.Text.Trim().ToLower());

if (user.Count() < 1)

{

errorProvider1.SetError(this.textBoxUsername, "Таке ім'я користувача відсутнє у базі даних!!!!");

return;

}

string password = user.First().Attribute("Password").Value;

try

{

NetworkCredential loginInfo = new NetworkCredential("username", "password");

MailMessage msg = new MailMessage();

msg.From = new MailAddress("CyberkillerPS@gmail.ru");

msg.To.Add(new MailAddress(user.First().Attribute("Email").Value));

msg.Subject = "Phonebook Password";

msg.Body = "Yours Password = " + password;

msg.IsBodyHtml = true;

SmtpClient client = new SmtpClient("smtp.gmail.ru");

client.EnableSsl = true;

client.UseDefaultCredentials = false;

client.Credentials = loginInfo;

client.Send(msg);

MessageBox.Show("Ваш пароль був відісланий вам на email", "Відправка пароля", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "Помилка", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

return;

}

#endregion

#region add new user

else if (this.NewUser)

{

if (textBoxUsername.Text.Trim() == "" && textBoxUsername.Enabled)

{

errorProvider1.SetError(this.textBoxUsername, "Будь-ласка, введіть ім'я користувача");

return;

}

else if (textBoxPassword1.Text.Trim() == "" && textBoxPassword1.Enabled)

{

errorProvider1.SetError(this.textBoxPassword1, "Будь-ласка, введіть пароль");

return;

}

else if (textBoxPassword2.Text.Trim() == "" && textBoxPassword2.Enabled)

{

errorProvider1.SetError(this.textBoxPassword2, "Будь-ласка, введіть підтвердження пароля");

return;

}

else if (textBoxPassword2.Text.Trim()!= textBoxPassword1.Text.Trim())

{

errorProvider1.SetError(this.textBoxPassword1, "Ваші паролі повинні співпадати");

errorProvider1.SetError(this.textBoxPassword2, "Ваші паролі повинні співпадати");

return;

}

else if (textBoxEmail.Text.Trim() == "" && textBoxEmail.Enabled)

{

errorProvider1.SetError(this.textBoxEmail, "Будь-ласка, введіть правельний Email");

return;

}

if (!File.Exists(Variables.DBFile))

{

Variables.xDocument = new XDocument(

new XComment("\n Don't edit manually \n"),

new XElement("PhoneBook",

new XElement("Users",

new XElement("User",

new XAttribute("ID", "01"),

new XAttribute("UserName", textBoxUsername.Text.Trim()),

new XAttribute("Password", textBoxPassword1.Text.Trim()),

new XAttribute("Email", textBoxEmail.Text.Trim()),

new XAttribute("RegDate", DateTime.Now.ToString()))),

new XElement("Settings",

new XElement("Setting",

new XAttribute("UserID", "01"),

new XAttribute("RightToLeft", "NO"),

new XAttribute("Dates", "Persian"),

new XAttribute("FontSize", "10"))),

new XElement("Items")));

Variables.CurrentUserID = "01";

}

else

{

Variables.xDocument = XDocument.Parse(TripleDES.DecryptFromFile(Variables.DBFile, TripleDES.ByteKey, TripleDES.IV));

var SameUserQuery = from q in Variables.xDocument.Descendants("User")

where q.Attribute("UserName").Value.ToLower() == textBoxUsername.Text.Trim().ToLower()

select q;

if (SameUserQuery.Count() >= 1)

{

errorProvider1.SetError(this.textBoxUsername, "Таке ім'я користувача вже існує, Будь-ласка, оберіть інше");

return;

}

int maxID = 0;

try

{

maxID = (from q in Variables.xDocument.Descendants("User")

select (int)q.Attribute("ID")).Max();

}

catch { }

maxID++;

Variables.CurrentUserID = maxID.ToString();

XElement xElement = new XElement("User",

new XAttribute("ID", maxID),

new XAttribute("UserName", textBoxUsername.Text.Trim()),

new XAttribute("Password", textBoxPassword1.Text.Trim()),

new XAttribute("Email", textBoxEmail.Text.Trim()),

new XAttribute("RegDate", DateTime.Now.ToString()));

var usersElement = (from q in Variables.xDocument.Descendants("Users")

select q).First();

usersElement.Add(xElement);

xElement = new XElement("Setting",

new XAttribute("UserID", maxID),

new XAttribute("RightToLeft", "NO"),

new XAttribute("Dates", "Persian"),

new XAttribute("FontSize", "10"));

var settingsElement = (from q in Variables.xDocument.Descendants("Settings")

select q).First();

settingsElement.Add(xElement);

}

Variables.CurrentUserName = textBoxUsername.Text.Trim();

TripleDES.EncryptToFile(Variables.xDocument.ToString(SaveOptions.DisableFormatting), Variables.DBFile, TripleDES.ByteKey, TripleDES.IV);

//Variables.xDocument.Save("debug.xml");

}

#endregion

#region change user

else if (this.ChangeUser)

{

if (Variables.xDocument == null)

{

MessageBox.Show("Ваше ім'я користувача та пароль невірні", "Помилка", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

if (textBoxUsername.Text.Trim() == "")

{

errorProvider1.SetError(this.textBoxUsername, "Будь-ласка, введіть ім'я користувача");

return;

}

else if (textBoxPassword1.Text.Trim() == "" && textBoxPassword1.Enabled)

{

errorProvider1.SetError(this.textBoxPassword1, "Будь-ласка, введіть пароль");

return;

}

var query = from q in Variables.xDocument.Descendants("User")

where textBoxUsername.Text.Trim().ToLower() == q.Attribute("UserName").Value.ToLower()

&& textBoxPassword1.Text.Trim().ToLower() == q.Attribute("Password").Value.ToLower()

select q;

if (query.Count() == 1)

{

Variables.CurrentUserID = query.First().Attribute("ID").Value;

Variables.CurrentUserName = textBoxUsername.Text.Trim();

}

else

{

Variables.CurrentUserID = "";

Variables.CurrentUserName = "";

MessageBox.Show("Ваше ім'я користувача та пароль невірні", "Помилка", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

}

#endregion

#region change info

else if (this.ChangeInfo)

{

bool changePassword = true;

if (textBoxUsername.Text.Trim() == "" && textBoxUsername.Enabled)

{

errorProvider1.SetError(this.textBoxUsername, "Ваше ім'я користувача та пароль невірні");

return;

}

else if (textBoxEmail.Text.Trim() == "" && textBoxEmail.Enabled)

{

errorProvider1.SetError(this.textBoxEmail, "Будь-ласка, введіть вірний Email");

return;

}

else if (textBoxPassword1.Text.Trim() == textBoxPassword2.Text.Trim() && textBoxPassword2.Text.Trim() == "")

{

changePassword = false;

}

else if (textBoxPassword1.Text.Trim() == "" && textBoxPassword1.Enabled)

{

errorProvider1.SetError(this.textBoxPassword1, "Будь-ласка, введіть старий пароль");

return;

}

else if (textBoxPassword2.Text.Trim() == "" && textBoxPassword2.Enabled)

{

errorProvider1.SetError(this.textBoxPassword2, "Будь-ласка, введіть новий пароль");

return;

}

errorProvider1.Clear();

var query = (from q in Variables.xDocument.Descendants("User")

where q.Attribute("ID").Value == Variables.CurrentUserID

select q).First();

string oldPassword = query.Attribute("Password").Value;

if (oldPassword.ToLower()!= textBoxPassword1.Text.Trim().ToLower() && changePassword)

{

errorProvider1.SetError(this.textBoxPassword1, "Старий пароль невірний");

return;

}

else if (oldPassword == textBoxPassword1.Text.Trim() && changePassword)

{

query.Attribute("UserName").Value = textBoxUsername.Text.Trim();

query.Attribute("Password").Value = textBoxPassword2.Text.Trim();

query.Attribute("Email").Value = textBoxEmail.Text.Trim();

}

else if (!changePassword)

{

query.Attribute("UserName").Value = textBoxUsername.Text.Trim();

query.Attribute("Email").Value = textBoxEmail.Text.Trim();

}

Variables.CurrentUserID = query.Attribute("ID").Value;

Variables.CurrentUserName = textBoxUsername.Text.Trim();

TripleDES.EncryptToFile(Variables.xDocument.ToString(SaveOptions.DisableFormatting), Variables.DBFile, TripleDES.ByteKey, TripleDES.IV);

//Variables.xDocument.Save("debug.xml");

}

#endregion

this.Close();

}

catch (Exception ex)

{

Variables.CurrentUserID = Variables.CurrentUserName = "";

StackFrame file_info = new StackFrame(true);

Messages.error(ref file_info, ex.Message, this);

}

}

}

}

Додаток 2: Головне вікно програми

Додаток 3: Форма користувача БД

Додаток 4: Форма створення нового запису в БД


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

  • Розгляд процесу автоматизації бази даних для довідника астронома. Основи реляційних баз даних для проектування інформаційних систем. Застосування тригерів для забезпечення цілісності даних і реалізації складної бізнес–логіки в системних процедурах.

    курсовая работа [22,3 K], добавлен 12.03.2019

  • Розробка бази даних "Автовокзал". Функціональні залежності між атрибутами. Ідентифікація атрибутів, які в реляційної моделі даних використовуються в якості первинних ключів реляційних відносин. Організація вибірки інформації з бази за допомогою запиту.

    курсовая работа [35,6 K], добавлен 19.08.2012

  • Проектування і реалізація реляційної бази даних для централізованого зберігання інформації з метою полегшення і систематизації даних замовлень клієнтів готельного комплексу. Розробка сценаріїв для створення бази даних і базових таблиць проекту.

    курсовая работа [147,2 K], добавлен 02.06.2019

  • Розробка структури бази даних. ER-моделі предметної області. Проектування нормалізованих відношень. Розробка форм, запитів, звітів бази даних "Автосалон". Тестування роботи бази даних. Демонстрація коректної роботи форми "Додавання даних про покупців".

    курсовая работа [4,0 M], добавлен 02.12.2014

  • Проектування бази даних та інтерфейсу програми. Розробка бази даних за допомогою Firebird 2.5. Контроль коректності вхідних та вихідних даних. Додавання та редагування інформації. Вплив електронно-обчислювальних машин на стан здоров'я користувачів.

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

  • Використання баз даних та інформаційних систем. Поняття реляційної моделі даних. Ключові особливості мови SQL. Агрегатні функції і угрупування даних. Загальний опис бази даних. Застосування технології систем управління базами даних в мережі Інтернет.

    курсовая работа [633,3 K], добавлен 11.07.2015

  • База даних як організована структура, призначена для зберігання інформації. Проектування та реалізація в СУБД MS Access інформаційної системи "База даних Internet-ресурсів тестів з психології". Розробка логічної системи даних, інструкції користувача.

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

  • Вибір технологічного інструментарію для реалізації проекту. Розробка сценаріїв для створення бази даних і базових таблиць. Аналіз забезпечення декларативної цілісності реляційних даних. Особливість створення об'єктів для маніпулювання інформацією.

    курсовая работа [275,7 K], добавлен 17.05.2019

  • Основи проектування мобільного додатку для операційної системи Android з використанням хмарної бази даних Cloud Firestore. Аналіз основних труднощів, які виникають під час розробки додатків. Визначення основних переваг та недоліків хмарних баз даних.

    статья [195,3 K], добавлен 07.02.2018

  • Характеристика категорій користувачів баз даних. Проектування інформаційної системи: концептуальне (інфологічне), даталогічне та фізичне. Опис бази даних "Каталог мобільних телефонів": принципи створення таблиць, запитів та форм. Інструкція користувача.

    курсовая работа [63,2 K], добавлен 14.12.2010

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