Розробка елементів гнучкої інтегрованої системи віддаленого доступу до каталогу відеофайлів

Розробка гнучкої інтегрованої автоматизованої системи доступу до каталогу навчальних відеофільмів в мультимедійних класах металургійного факультету Національної металургійної академії. Теоретичні аспекти проектування додатків на базі платформи dotNET.

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

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

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

9. Жарков В,А. Самоучитель Жаркова по анимации и мультипликации в Visual С++. - М /. Жарков Пресс, 2003.

10. Кариев Ч.А. Разработка Windows-приложений на основе Visual C# . БИНОМ. Лаборатория знаний, Интернет-университет информационных технологий - ИНТУИТ.ру, 2007

11. Кент Бек. Экстремальное программировнаие. - Питер, 2002

12. Мартин Ф. Архитектура корпоративных программных приложений. - М.: Издательский дом "Вильямс", 2004

13. Нейлгел К., Ивьен Б., Глинн Дж. С# 2008 для профессионалов. -М.: Издательский дом "Вильямс", 2008

14. Прайс Дж., Гандерлой М. Visual C# .NET : Пер. с англ. - К.: ВЕК+, 2005

15. Рихтер Дж.. Программирование на платформе Microsoft .Net Framework. - М: Русская Редакция, 2007

16. Робинсон С., Корнес О., Глинн Дж. С# для профессионалов. - М: Лори, 2008

17. Троелсен Э. Язык программирования С# 2005 и платформа .Net 2.0. - М.: Издательский дом "Вильямс", 2007

18. Чакработи А., Кранти Ю., Сандху Р. Microsoft .NET Framework: разработка профессиональных проектов: Пер. с англ. СПб.: БХВ-Петербург, 2006

19. Zharkov V.A. Theory and Practice of Deep Drawing. - London, Mechanical Engineering Publications Limited, 1995.

20. j@alba.ua - адрес автора

21. http://algolist.manual.ru // Исходные коды и книги по алгоритмам

22. http://www.intuit.ru // Интернет-университет информационных технологий

23. http://ru.wikipedia.org // Свободная Интернет-энциклопедия

24. http://www.rsdn.ru

25. http://www. citforum.ru

26. http://www.msdn.microsoft.com

27. http://www.opennet.ru

28. http://www.gotdotnet.ru

ДОДАТОК А

Лістинг 1

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using catalog;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

catalog.catalog cat = new catalog.catalog();

Folders folders;

public Form1()

{

InitializeComponent();

load();

}

private int _cur_disc = 0;

private void load()

{

List<Dictionary<string, string>> discs = cat.GetRootFolders();

listView2.Items.Clear();

treeView1.Nodes.Clear();

listView1.Items.Clear();

for (int i = 0; i < discs.Count; i++ )

{

listView2.Items.Add(discs[i]["name"]).Tag = discs[i]["id"];

listView2.Items[i].ImageIndex = 0;

listView2.Items[i].SubItems.Add((Math.Round ((float) (Convert.ToInt32(discs[i]["size"]))/1024, 2) ).ToString() + " Mb");

listView2.Items[i].SubItems.Add(discs[i]["files"]);

listView2.Items[i].SubItems.Add(discs[i]["folders"]);

listView2.Items[i].SubItems.Add(discs[i]["comment"]);

}

}

private void splitContainer1_Panel2_Paint(object sender, PaintEventArgs e)

{

}

private void CreateTreeView()

{

TreeNode node = new TreeNode();

node.Text = folders.name;

node.Tag = folders.id.ToString();

_CreateTreeView(folders.Childs, node);

treeView1.Nodes.Add(node);

}

private void _CreateTreeView(List<Folders> f, TreeNode node)

{

foreach (Folders el in f)

{

TreeNode new_node = new TreeNode();

new_node.Text = el.name;

new_node.Tag = el.id.ToString();

_CreateTreeView(el.Childs, new_node);

node.Nodes.Add(new_node);

}

}

private void listView2_ItemActivate(object sender, EventArgs e)

{

ListView lv = (ListView)sender;

_cur_disc = Convert.ToInt32(lv.SelectedItems[0].Tag);

folder_tree_prepare();

}

private void folder_tree_prepare()

{

List<Dictionary<string, string>> file_list = cat.getFileList(_cur_disc);

treeView1.Nodes.Clear();

folders = cat.getFoldersStruct(_cur_disc);

CreateTreeView();

treeView1.Nodes[0].ImageIndex = 3;

treeView1.Nodes[0].Expand();

treeView1.SelectedNode = treeView1.Nodes[0];

}

private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)

{

}

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)

{

if (treeView1.SelectedNode == treeView1.Nodes[0])

{

treeView1.SelectedImageIndex = 3;

treeView1.Nodes[0].Expand();

}

else

{

treeView1.SelectedImageIndex = 0;

}

ubdFiles();

}

private void ubdFiles()

{

List<Dictionary<string, string>> file_list = cat.getFileList(Convert.ToInt32(treeView1.SelectedNode.Tag));

listView1.Items.Clear();

for (int i = 0; i < file_list.Count; i++)

{

listView1.Items.Add(file_list[i]["name"]).Tag = file_list[i]["id"];

listView1.Items[i].ImageIndex = 1;

listView1.Items[i].SubItems.Add((Math.Round((float)(Convert.ToInt32(file_list[i]["size"])) / 1024, 2)).ToString() + " Kb");

listView1.Items[i].SubItems.Add(file_list[i]["comment"]);

}

}

private void eDITToolStripMenuItem_Click(object sender, EventArgs e)

{

listView2.FocusedItem.BeginEdit();

}

private void aDDCOMMENTToolStripMenuItem_Click(object sender, EventArgs e)

{

Form ed = new Form2(Convert.ToInt32(listView2.FocusedItem.Tag), 1, listView2.FocusedItem.SubItems[4].Text);

ed.ShowDialog();

load();

}

private void listView2_AfterLabelEdit(object sender, LabelEditEventArgs e)

{

int id = Convert.ToInt32(listView2.Items[e.Item].Tag.ToString());

string name = e.Label;

if (name != null)

{

cat.nameChange(id, name);

}

if (id == _cur_disc)

{

folder_tree_prepare();

}

}

private void aDDCommentToolStripMenuItem1_Click(object sender, EventArgs e)

{

Form ed = new Form2(Convert.ToInt32(listView1.FocusedItem.Tag), 0, listView1.FocusedItem.SubItems[2].Text);

ed.ShowDialog();

ubdFiles();

}

private void dELETEToolStripMenuItem_Click(object sender, EventArgs e)

{

MessageBox.Show("Вы действительно хотите удалить выбранную запись?", "Внимание!", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

cat.delete(Convert.ToInt32(listView2.FocusedItem.Tag));

load();

}

private void aDDToolStripMenuItem_Click(object sender, EventArgs e)

{

Form add = new Form3();

add.ShowDialog();

load();

}

private void toolStripButton1_Click(object sender, EventArgs e)

{

if(toolStripTextBox1.Text.Length > 0)

{

Form search = new Form4(toolStripTextBox1.Text);

search.Show();

}

}

}

}

Лістинг 2

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

using System.Data;

using System.Data.SQLite;

namespace catalog

{

public class catalog

{

string connectionString;

public catalog() { connectionString = "Data Source=catalog.db;Version=3;"; }

private int folders_count = 0;

private int files_count = 0;

private double size = 0;

private int root_id = 0;

private string _disc_name = "";

public void scan_disc(string path,string name, string comment)

{

_disc_name = name;

using (SQLiteConnection cn = new SQLiteConnection(connectionString))

{

using (SQLiteCommand cmd = cn.CreateCommand())

{

cmd.CommandText = "INSERT INTO catalog (name, path, size, folders, files,parrent_id,comment) VALUES ('" + name + "', '" + path + "', '0', '0', '0','0',\""+comment+"\")";

cmd.CommandType = CommandType.Text;

cn.Open();

cmd.ExecuteNonQuery();

cn.Close();

}

}

int cur_id = get_last_cat_id();

root_id = cur_id;

getDiscDir(path, cur_id);

using (SQLiteConnection cn = new SQLiteConnection(connectionString))

{

using (SQLiteCommand cmd = cn.CreateCommand())

{

cmd.CommandText = "UPDATE catalog SET folders='" + folders_count + "', files='"+files_count+"', size='"+size+"' WHERE id='"+root_id+"'";

cmd.CommandType = CommandType.Text;

cn.Open();

cmd.ExecuteNonQuery();

cn.Close();

}

}

}

private void getDiscDir(string path, int parrent_id)

{

try

{

string[] childs_dirs = Directory.GetDirectories(path);

folders_count += childs_dirs.Length;

string[] files = Directory.GetFiles(path);

files_count += files.Length;

for (int i = 0; i < files.Length; i++)

{

System.IO.FileInfo fi = new FileInfo(files[i]);

int f_size = (int)fi.Length;

size += (f_size / 1024);

string f_name = Path.GetFileName(files[i]);

using (SQLiteConnection cn = new SQLiteConnection(connectionString))

{

using (SQLiteCommand cmd = cn.CreateCommand())

{

string new_path = files[i].Substring(1, (files[i].Length - 1));

cmd.CommandText = "INSERT INTO files (path, name, size, catalog_id, disc_name) VALUES ('" + new_path + "', '" + f_name + "', '" + f_size + "', '" + parrent_id + "', '"+_disc_name+"')";

cmd.CommandType = CommandType.Text;

cn.Open();

cmd.ExecuteNonQuery();

cn.Close();

}

}

}

for (int i = 0; i < childs_dirs.Length; i++)

{

string ch_name = Path.GetFileName(childs_dirs[i]);

using (SQLiteConnection cn = new SQLiteConnection(connectionString))

{

using (SQLiteCommand cmd = cn.CreateCommand())

{

cmd.CommandText = "INSERT INTO catalog (name, path, size, folders, files, parrent_id) VALUES ('" + ch_name + "', '" + childs_dirs[i] + "', '0', '0', '0','" + parrent_id + "')";

cmd.CommandType = CommandType.Text;

cn.Open();

cmd.ExecuteNonQuery();

cn.Close();

}

}

int ch_id = get_last_cat_id();

getDiscDir(childs_dirs[i], ch_id);

}

}

catch (Exception x)

{

int t = 0;

}

}

private int get_last_cat_id()

{

int id = 0;

using (SQLiteConnection cn = new SQLiteConnection(connectionString))

{

using (SQLiteCommand cmd = cn.CreateCommand())

{

cmd.CommandText = "SELECT MAX(id) from catalog";

cmd.CommandType = CommandType.Text;

cn.Open();

id = Convert.ToInt32(cmd.ExecuteScalar().ToString());

}

}

return id;

}

public List<Dictionary<string, string>> GetRootFolders()

{

List<Dictionary<string, string>> root_folder_list = new List<Dictionary<string, string>>();

using (SQLiteConnection cn = new SQLiteConnection(connectionString))

{

using (SQLiteCommand cmd = cn.CreateCommand())

{

cmd.CommandText = "SELECT * from catalog where parrent_id='0' and deleted='0'";

cmd.CommandType = CommandType.Text;

cn.Open();

SQLiteDataReader dr = (SQLiteDataReader)cmd.ExecuteReader();

while (dr.Read())

{

Dictionary<string, string> folder = new Dictionary<string, string>();

folder.Add("id", dr["id"].ToString());

folder.Add("name", dr["name"].ToString());

folder.Add("path", dr["path"].ToString());

folder.Add("folders", dr["folders"].ToString());

folder.Add("files", dr["files"].ToString());

folder.Add("size", dr["size"].ToString());

folder.Add("comment", dr["comment"].ToString());

root_folder_list.Add(folder);

}

cn.Close();

}

}

return root_folder_list;

}

private List<Folders> _getFoldersStruct(int id)

{

List<Folders> folder_struct = new List<Folders>();

using (SQLiteConnection cn = new SQLiteConnection(connectionString))

{

using (SQLiteCommand cmd = cn.CreateCommand())

{

cmd.CommandText = "SELECT * from catalog where parrent_id='" + id + "'";

cmd.CommandType = CommandType.Text;

cn.Open();

SQLiteDataReader dr = (SQLiteDataReader)cmd.ExecuteReader();

while (dr.Read())

{

Folders folder = new Folders();

folder.name = dr["name"].ToString();

int new_id = Convert.ToInt32(dr["id"].ToString());

folder.id = new_id;

folder.Childs = _getFoldersStruct(new_id);

folder_struct.Add(folder);

}

cn.Close();

}

}

return folder_struct;

}

public Folders getFoldersStruct(int disc_id)

{

Folders folder_struct = new Folders();

using (SQLiteConnection cn = new SQLiteConnection(connectionString))

{

using (SQLiteCommand cmd = cn.CreateCommand())

{

cmd.CommandText = "SELECT * from catalog where id='"+disc_id+"'";

cmd.CommandType = CommandType.Text;

cn.Open();

SQLiteDataReader dr = (SQLiteDataReader)cmd.ExecuteReader();

while (dr.Read())

{

folder_struct.name = dr["name"].ToString();

int new_id = Convert.ToInt32(dr["id"].ToString());

folder_struct.id = new_id;

folder_struct.Childs = _getFoldersStruct(new_id);

}

cn.Close();

}

}

return folder_struct;

}

public List<Dictionary<string, string>> getFileList(int catalog_id)

{

List<Dictionary<string, string>> file_list = new List<Dictionary<string, string>>();

using (SQLiteConnection cn = new SQLiteConnection(connectionString))

{

using (SQLiteCommand cmd = cn.CreateCommand())

{

cmd.CommandText = "SELECT * from files where catalog_id='" + catalog_id + "'";

cmd.CommandType = CommandType.Text;

cn.Open();

SQLiteDataReader dr = (SQLiteDataReader)cmd.ExecuteReader();

while (dr.Read())

{

Dictionary<string, string> file = new Dictionary<string, string>();

file.Add("id", dr["id"].ToString());

file.Add("path", dr["path"].ToString());

file.Add("name", dr["name"].ToString());

file.Add("comment", dr["comment"].ToString());

file.Add("size", dr["size"].ToString());

file_list.Add(file);

}

cn.Close();

}

}

return file_list;

}

public void nameChange(int id, string name)

{

using (SQLiteConnection cn = new SQLiteConnection(connectionString))

{

using (SQLiteCommand cmd = cn.CreateCommand())

{

cmd.CommandText = "Select name FROM catalog where id='" + id + "'";

cmd.CommandType = CommandType.Text;

cn.Open();

string old_name = (string)cmd.ExecuteScalar();

SQLiteCommand cmd2 = cn.CreateCommand();

cmd2.CommandText = "UPDATE catalog set name='"+name+"' where id='" + id + "'";

cmd2.CommandType = CommandType.Text;

cmd2.ExecuteNonQuery();

SQLiteCommand cmd3 = cn.CreateCommand();

cmd3.CommandText = "UPDATE files set disc_name='"+name+"' where disc_name='" + old_name + "'";

cmd3.CommandType = CommandType.Text;

cmd.ExecuteNonQuery();

}

cn.Close();

}

}

public void commentDiscChange(int id, string comment)

{

using (SQLiteConnection cn = new SQLiteConnection(connectionString))

{

using (SQLiteCommand cmd = cn.CreateCommand())

{

cmd.CommandText = "UPDATE catalog set comment='" + comment + "' where id='" + id + "'";

cmd.CommandType = CommandType.Text;

cn.Open();

cmd.ExecuteNonQuery();

}

cn.Close();

}

}

public void commentFileChange(int id, string comment)

{

using (SQLiteConnection cn = new SQLiteConnection(connectionString))

{

using (SQLiteCommand cmd = cn.CreateCommand())

{

cmd.CommandText = "UPDATE files set comment='" + comment + "' where id='" + id + "'";

cmd.CommandType = CommandType.Text;

cn.Open();

cmd.ExecuteNonQuery();

}

cn.Close();

}

}

public void delete(int id)

{

using (SQLiteConnection cn = new SQLiteConnection(connectionString))

{

using (SQLiteCommand cmd = cn.CreateCommand())

{

cmd.CommandText = "update catalog set deleted='1' where id='" + id + "'";

cmd.CommandType = CommandType.Text;

cn.Open();

cmd.ExecuteNonQuery();

}

cn.Close();

}

}

public List<Dictionary<string, string>> do_search(string search_str)

{

List<Dictionary<string, string>> result= new List<Dictionary<string, string>>();

search_str = clean_words(search_str);

string[] search_text;

string[] separator = { " " };

string tag = search_str;

search_text = tag.Split(separator, StringSplitOptions.RemoveEmptyEntries);

string select = "SELECT * FROM files WHERE ";

string added_q = "";

for (int i = 0; i < search_text.Length; i++)

{

if (search_text[i].Length > 2)

{

if (added_q.Length == 0)

{

added_q += " (name like '%" + search_text[i] + "%' OR comment like '%" + search_text[i] + "%')";

}

else

{

added_q += " OR (name like '%" + search_text[i] + "%' OR comment like '%" + search_text[i] + "%')";

}

}

}

select += added_q + " ORDER by id ASC;";

using (SQLiteConnection cn = new SQLiteConnection(connectionString))

{

using (SQLiteCommand cmd = cn.CreateCommand())

{

cmd.CommandText = select;

cmd.CommandType = CommandType.Text;

cn.Open();

SQLiteDataReader dr = (SQLiteDataReader)cmd.ExecuteReader();

while (dr.Read())

{

Dictionary<string, string> file = new Dictionary<string, string>();

file.Add("name", dr["name"].ToString());

file.Add("id", dr["id"].ToString());

file.Add("catalog_id", dr["catalog_id"].ToString());

file.Add("path", dr["path"].ToString());

file.Add("comment", dr["comment"].ToString());

file.Add("size", dr["size"].ToString());

file.Add("disc_name", dr["disc_name"].ToString());

result.Add(file);

}

}

}

return result;

}

private string clean_words(string value)

{

string[] drop_char = { "^", "$", "&", "(", ")", "<", ">", "`", "\\", "\"", "|", ",", "@", "_", "?", "%", "-", "~", "+", ".", "[", "]", "{", "}", ":", "\\", "/", "=", "#", "\"", ";", "!" };

string[] drop_words = { "a", "the", "of", "and", "or", "for", "this" };

for (int i = 0; i < drop_char.Length; i++)

{

value = value.Replace(drop_char[i], "");

}

return value;

}

}

public struct Folders

{

public string name;

public int id;

public List<Folders> Childs;

}

}

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


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

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