Создание базы данных экспериментов с плазменным кристаллом

Автор: Пользователь скрыл имя, 16 Июня 2014 в 13:58, магистерская работа

Краткое описание

Несмотря на широкую распространенность в природе и исключительно важную роль в самых различных областях науки и техники: от источников света до термоядерного синтеза и нанотехнологий – плазма, исследования которой продолжаются уже второе столетие, остается до конца не понятым объектом. Даже для простейших случаев газового разряда в инертных газах теоретики не могут предложить четкого алгоритма расчета внутренних параметров плазмы и ее эмиссионных характеристик на основе произвольно устанавливаемых экспериментатором факторов (размер среды, напряжение питания, род и давление газа). Тем не менее, не прекращаются попытки построить модели значительно более сложных экзотических плазменных сред. Так в 70-х и начале 80-х годов прошлого века появляются работы, в которых на основе классической статистической механики с использованием численных методов решения соответствующих уравнений методом Монте-Карло исследуются свойства однокомпонентной полностью ионизованной плазмы гелия при температуре около 108 К и плотности вещества 1029 cм-3.

Файлы: 1 файл

Диплом Соколов АВ.doc

— 1,009.50 Кб (Скачать)

 

Рис. 4. Общий вид раздела «Пользователи».

4.1.3 Добавление статей

Для того, чтобы добавить статью, необходимо выбрать, например, раздел «Эксперимент» (рис. 5).

Рис. 5. Раздел «Эксперимент».

 

На рисунке можно видеть подразделы в выбранном разделе, а ниже – статьи, которые есть в данном разделе.

Перейдем на страницу с формой для добавления статьи (рис. 6).

Рис. 6. Форма для добавления статьи.

 

После нажатия кнопки «Сохранить» файл будет передан на сервер, обработан программой и затем откроется страница, на которой будет отображена данная статья. После добавления статью можно переместить в другой раздел. Хотелось бы обратить внимание на то, что имеется возможность передачи на сервер DOC-файла, заархивированного программой ZIP. Такая возможность предусмотрена для сокращения времени передачи данных на сервер.

4.1.4 База данных

Перейдем в раздел «База данных» (рис. 7). Открывшаяся страница предоставляет пользователям следующие возможности, в зависимости от их прав доступа:

  • Получить список всех записей в базе данных;
  • Создать новую запись;
  • Создать новую запись путем добавления отчета;
  • Редактировать вспомогательные записи;
  • Осуществить поиск (выборку) по имеющимся экспериментальным данным.

Рис. 7. Раздел «База данных».

 

Существует два способа добавления записей:

  1. При помощи пункта «Новая запись»;
  2. При помощи пункта «Загрузка отчета».

Рассмотрим каждый из них более подробно.

 

4.1.5 Новая запись

После того, как откроется страница добавления записи, будет предложено заполнить все поля записи вручную (дата проведения, средний размер частиц, выбрать форму частиц, способ ввода частиц и т.д.). Чтобы можно было выбрать нужную форму частицы, необходимо ее добавить на странице «Вспомогательные записи». Для этого необходимо перейти по ссылке «Вспомогательные записи», а затем выбрать «Добавить…», например, в строке «Форма частиц» и ввести новую форму частиц. После того, как нужная форма частиц добавлена, ее можно выбрать на странице «Новая запись». После того, как поля заполнены, необходимо нажать кнопку «Добавление записи», находящуюся внизу страницы, и запись будет добавлена в базу данных. Любую запись из имеющихся в базе данных можно редактировать, выбрав ее на странице «Все записи» и нажав на ссылку «Редактировать».

 

4.1.6 Загрузка отчета

Для загрузки отчета необходимо указать имя файла, в котором содержатся данные отчета (имя файла можно ввести вручную или выбрать его, нажав на кнопку «Обзор…»). После того, как файл отчета будет загружен на сервер и обработан, будет предложена в точности такая же страница, как и при добавлении с помощью страницы «Новая запись», но уже с частично заполненными полями (будут заполнены те поля, которые указаны в отчете). При этом, если указанной в отчете формы частиц в базе данных нет, то будет предложено ее добавить автоматически. Таким образом, отсутствует необходимость входить на страницу «Вспомогательные записи» и добавлять запись вручную.

 

Заключение

  • Выполнено проектирование базы экспериментальных данных. Анализ поставленных задач привел к выводу о необходимости создания реляционной базы данных. Была разработана структура реляционной БД: все данные отсортированы и объединены по общему признаку в таблицы, затем созданы логические связи между этими таблицами.
  • Осуществлен выбор системы управления базами данных. Сравнение преимуществ и недостатков различных СУБД показал, что СУБД MySQL как нельзя лучше подходит для решения поставленных задач. СУБД MySQL быстрая, проста в освоении и легко интегрируется с веб-технологиями.
  • Выбран язык программирования. Использование языка написания скриптов PHP позволяет легко и гибко модифицировать как внешний вид сайта, так и его внутреннюю структуру, улучшает масштабируемость, упрощает обновление ресурса, а также снижает требования к программному обеспечению, установленному на компьютере пользователя.
  • Создана база данных, реализован пользовательский интерфейс для доступа к экспериментальным данным. В своей работе я постарался свести к минимуму ручную работу оператора: данные об экспериментах берутся из отчетов, которые генерируются автоматически; статьи, относящие к предметной области, добавляются закачкой на сервер файлов Word. Таким образом, с разработанной базой данных может работать пользователь, который не является специалистом в области информационных технологий – необходим лишь краткий курс обучения работе с интерфейсом.

 

Разработанная база данных экспериментов поможет в изучении такого объекта, как плазменный кристалл, и в дальнейшем планируется продолжить работу по наполнению БД экспериментальными данными. Возможно усовершенствование системы для хранения данных других экспериментов с плазмой.

 

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

  1. К. Дж. Дейт. Введение в системы баз данных. Шестое издание. Диалектика. Киев-Москва, 1998. 781 с.
  2. Хьюгс С., Змиевский А. PHP 4. Руководство разработчика. ДиаСофт. 2001. 384 с.
  3. Томсон Л., Веллинг Л. Разработка Web-приложений на PHP и MySQL. ДиаСофт. 2001. 672 с.
  4. Матросов. HTML 4 в подлиннике. BHV. 2001. 672 с.
  5. Луизова Л. А., Хахаев А. Д. Проблемы и перспективы исследования упорядоченных структур в плазме [электронный ресурс], режим доступа к ст. http://plasma.karelia.ru/pub/arc/plasma_crystals.pdf
  6. Корпела Ю. Изучение HTML 3.2 на примерах [электронный ресурс], режим доступа к ст. http://citforum.ru/internet/html3.2ex/index.shtml
  7. Справочное руководство по MySQL [электронный ресурс], режим доступа к ст. http://www.mysql.ru/docs/man/
  8. Вербач К. Краткое руководство по HTML [электронный ресурс], режим доступа к ст. http://citforum.ru/internet/html/refer.shtml

 

Приложение А. Схема базы данных.

 

Приложение Б. Листинг сценариев.

index.php

 

<?

    require_once("include/function.php");

    setlocale(LC_ALL, 'ru_RU.CP1251');

    session_start();

    if (isset($_GET['debugging'])) {

switch ($_GET['debugging']) {

case "on":

    if (!isset($_SESSION['debugging'])) $_SESSION['debugging']=true;

    break;

default:

    unset($_SESSION['debugging']);

    break;

}

    }

    if (isset($_SESSION['debugging']) && $_SESSION['debugging']) {

ini_set('display_errors', 1);

error_reporting(E_ALL);

    } else {

ini_set('display_errors', 0);

error_reporting(0);

    }

 

    $body=$left=$center=$right="";

    $database=parse_ini_file("settings.ini");

    $db=@mysql_connect($database['host'], $database['user'], $database['passwd']) or safe_exit("Не могу установить соединение: ".mysql_error());

    @mysql_select_db($database['name']) or safe_exit("Не могу выбрать базу данных: ".mysql_error());

    // Проверка наличия таблиц  и считывание настроек

    verify_tables();

    // Проверка данных о пользователе

    require_once("module/class/setup.php");

    $setup=new Setup();

    require_once("module/class/user.php");

    $user=new User();

    $logged_uid=isset($_SESSION['logged_uid'])?$_SESSION['logged_uid']:0;

    if ((isset($_COOKIE['logged_uid'])) && (!isset($logged_uid))) $user->AuthUser($_COOKIE['logged_uid'], 1);

    $logged_gid=$user->GetGIDByUID($logged_uid);

    if ($logged_gid==$settings['guest_id']) unset($_SESSION['logged_uid']);

    // Формирование меню для группы logged_gid

    $menu=$setup->ShowMenu($logged_gid);

    require_once("module/class/main.php");

    $main=new Main();

    $right_and_left=$main->ShowMain(false);

    if (isset($right_and_left['right'])) $right=$right_and_left['right'];

    else $right="";

    if (isset($right_and_left['left'])) $left=$right_and_left['left'];

    else $left="";

    // Проверка передаваемых  через адресную строку данных

    if (isset($_GET['t'])) $t=preg_replace("([^a-z])", "", strtolower($_GET['t'])); else $t="";

    if (!$setup->SectionExists($secid=$setup->GetSectionSID($t))) {

$t="main";

$secid=$setup->GetSectionSID($t);

    }

    if (isset($_GET['a'])) $a=preg_replace("([^a-z])", "", strtolower($_GET['a'])); else $a="";

    if (isset($_GET['с'])) $с=preg_replace("([^a-z])", "", strtolower($_GET['с'])); else $с="";

    // Подключаем модуль, который выполняет запрошенную

    // операцию и заносит  результат в переменную $body,

    // в которой находится  тело страницы

    include("module/$t.php");

    // Титульное название

    $title=$GLOBALS['settings']['title']." :: ".$setup->GetSectionName($secid);

    $user_agent=get_user_agent();

    include("theme/index.htm");

   

    if (isset($result)) mysql_free_result($result);

    mysql_close($db);

?>

 

include/function.php

 

<?

    function mquery($query) {

$result=@mysql_query($query) or safe_exit("Не могу  выполнить запрос: \n".$query."\n".mysql_error());

return $result;

    }

   

    function check_mysql() {

if (isset($GLOBALS['result'])) @mysql_free_result($GLOBALS['result']);

if (isset($GLOBALS['db'])) @mysql_close($GLOBALS['db']);

    }   

 

    function safe_header($url) {

check_mysql();

header($url);

exit;

    }

 

    function safe_exit($message="") {

if ($message) {

    // error_log(); - письмо с ошибкой.

    $GLOBALS['body']=parse_file("theme/info.htm", array('info'=>"Произошла ошибка. Письмо с сообщением об ошибке было отправлено администратору."));

    $message=str_replace("\n", "<BR>", $message);

    $GLOBALS['body'].="<BR><BR>$message";

}

$menu=$GLOBALS['menu'];

$body=$GLOBALS['body'];

$left=$right=$about="";

$title=$GLOBALS['settings']['title']." :: Произошла ошибка!";

check_mysql();

$user_agent=get_user_agent();

include("theme/index.htm");

exit;

    }

   

    function parse_file($filename, $array=NULL) {

$file_contents=file_get_contents($filename);

if (count($array)) foreach ($array as $key=>$value) $file_contents=str_replace("<?=\$$key?>", $value, $file_contents);

return $file_contents;

    }

 

    function get_modules() {

$mod=trim(`ls module | grep .php`);

if ($mod) {

    $modules=explode("\n", $mod);

    foreach($modules as $module) {

if (file_exists($file="module/".str_replace(".php", ".txt", $module))) $desc=file_get_contents($file);

else $desc=str_replace(".php", "", $module);

$exist_modules[$module]=trim($desc);

    }

} else $exist_modules=NULL;

return $exist_modules;

    }

   

    function class_exist($check_class) {

if (!$check_class) return false;

$class=trim(`ls module/class | grep .php`);

if ($class) {

    $classes=explode("\n", $class);

    if (in_array("$check_class.php", $classes)) return true;

}

return false;

    }

 

    function format_date(&$date, &$time) {

if (isset($date) && $date) $date=date("d.m.Y", strtotime($date)); else $date="";

if (isset($time) && $time) $time=date("H:i", strtotime($time)); else $time="";

    }

   

    function get_pages_link($onpage, $count, $action, $p) {

$page_count=ceil($count/$onpage);

$links="";

if ($page_count>1) {

    unset($page);

    $disp=5;

    $begin=$p-$disp;

    $end=$p+$disp;

    if ($begin<1) $begin=1;

    if ($end>$page_count) $end=$page_count;

    for ($i=$begin; $i<=$end; $i++) {

if ($p==$i) $links.="$i&nbsp;";

else $links.=parse_file("theme/page/page.htm", array('action'=>$action.($i==1?"":"&p=$i"), 'page'=>$i));

    }

    if ($links) {

if ($p!=1) $links=parse_file("theme/page/page.htm", array('action'=>$action.(($p-1)==1?"":"&p=".($p-1)), 'page'=>"Пред.")).$links;

if ($p!=$page_count) $links.=parse_file("theme/page/page.htm", array('action'=>$action."&p=".($p+1), 'page'=>"След."));

    }

    $links=parse_file("theme/page/pages.htm", array('pages'=>$links));

}

return $links;

    }

 

    function get_short($content, $module="article") {

$count=$GLOBALS['settings'][$module."_short"];

$content=strip_tags($content);

$content=str_replace("\n", " ", $content);

$content=preg_replace("/\s+/", " ", $content);

if (strlen($content)>$count) {

    preg_match("/.{1,$count}\s/", $content, $match);

    return trim($match[0])."...";

} else return $content;

    }

   

    function verify_tables() {

if (@mysql_query("SELECT value FROM setup WHERE setting='setup'")) {

    $result=mquery("SELECT * FROM setup WHERE setting<>'setup'");

    if (mysql_num_rows($result))

while($row=mysql_fetch_assoc($result))

    $GLOBALS['settings'][$row['setting']]=$row['value'];

   

    return true;

}

$result=mquery("SHOW TABLES");

if (mysql_num_rows($result)) while ($row=mysql_fetch_row($result)) $table_exist[]=$row[0];

else $table_exist=array();

mysql_free_result($result);

if (!in_array("setup", $table_exist)) mquery("CREATE TABLE setup (setting varchar(255) default NULL, value varchar(255) default NULL) TYPE=MyISAM");

$modules=get_modules();

$date=date("Y-m-d");

$time=date("H:i:s");

$aliases=array('diagnostics', 'experiment', 'history', 'rule', 'theory', 'use');

 

foreach ($modules as $module=>$title) {

    $module=str_replace(".php", "", $module);

    require_once("module/class/$module.php");

    $class=new $module;

    $tables=$class->GetCreateTable();

    foreach ($tables as $table=>$query) {

if (!in_array($table, $table_exist)) {

    $table_exist[]=$table;

    if ($query['create']) mquery($query['create']);

    foreach ($query['insert'] as $insert_query) if ($insert_query) mquery($insert_query);

}

    }

}

mquery("INSERT INTO setup VALUES ('setup', 'done')");

$result=mquery("SELECT * FROM setup WHERE setting<>'setup'");

if (mysql_num_rows($result))

    while($row=mysql_fetch_assoc($result))

$GLOBALS['settings'][$row['setting']]=$row['value'];

   

return true;

    }

 

    function get_user_agent() {

$user_agent=strtolower($_SERVER['HTTP_USER_AGENT']);

if (strstr($user_agent, "opera")!==false) $user_agent="opera";

elseif (strstr($user_agent, "msie")!==false) $user_agent="ie";

elseif (strstr($user_agent, "netscape")!==false) $user_agent="nc";

else $user_agent="default";

return $user_agent;

    }

   

    function strprep($str) {

if (get_magic_quotes_gpc()) $str=stripslashes($str);

$str=htmlspecialchars($str, ENT_QUOTES);

return $str;

    }

?>

 

module/article.php

 

<?

    require_once("module/class/article.php");

    $article=new Article();

Информация о работе Создание базы данных экспериментов с плазменным кристаллом