Разработка программной системы управления контентом портала с архивом конструкторской документации
Описание системы управления контентом портала с архивом конструкторской документации. Разработка программного модуля-редактора и модуля-вебсайта для редактирования и работы с контентом системы. Расчет технико-экономической эффективности проекта.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 01.02.2016 |
Размер файла | 2,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
$this->form_validation->set_rules('ret_pass','Пароль','trim|required|xss_clean|matches[password]');
if($this->form_validation->run() == FALSE)
{
$error = validation_errors();
$this->session->set_flashdata('error_registration',$error);
$this->session->set_flashdata('data',$data);
redirect('/start','refresh');
}
else
{
array_pop($data);
if($this->User_model->addUser($data))
{
$message = 'Вы успешно зарегистрировались.Ответ прийдет по электронной почте.';
$this->session->set_flashdata('message',$message);
redirect('/start/index','refresh');
}
$error = 'Попробуйте повторить регистрацию';
$this->session->set_flashdata('error_registration',$error);
redirect('/start','refresh');
}
}
public function checkpass()
{
$data = $this->input->post(NULL,TRUE);
$password = $data['password'];
//Проверяем, есть ли пробелы в пароле
if(preg_match("/([\s])/", $password))
{
$html = '<div style="background:#ff0000; width:100%; height:10px;"></div>';
$html .= "Недопустимые символы в пароле";
}
else
{
if(strlen($password) < 6)
{
$html = '<div style="background:#ff0000; width:100%; height:10px;"></div>';
$html .= "*Не менее 6 (Lat&цифры&символы)";
}
else
{
$strong = 0;
//Проверяем, есть ли в пароле числа
if(preg_match("/([0-9]+)/", $password))
{
$strong++;
}
//Проверяем, есть ли в пароле буквы в нижнем регистре
if(preg_match("/([a-z]+)/", $password))
{
$strong++;
}
//Проверяем, есть ли в пароле буквы в верхнем регистре
if(preg_match("/([A-Z]+)/", $password))
{
$strong++;
}
//Проверяем, есть ли в пароле спецсимволы
if(preg_match("/\W/", $password))
{
$strong++;
}
//В зависимости от сложности пароля выводим полоски
if($strong == 1)
{
$html = '<div style="background:#ff0000; width:25%; height:10px;"></div>';
$html .= "Очень слабый";
}
if($strong == 2)
{
$html = '<div style="background:#edc431; width:50%; height:10px;"></div>';
$html .= "Слабый";
}
if($strong == 3)
{
$html = '<div style="background:#edc431; width:50%; height:10px;"></div>';
$html .= "Простой";
}
if($strong == 4)
{
$html = '<div style="background:#2dda2f; width:100%; height:10px;"></div>';
$html .= "Надежный";
}
}
}
echo $html;
}
public function info()
{
echo phpinfo();
}
}
Файл Admin.php
<?php
class Admin extends CI_Controller
{
public $viewData = array();
public function __construct() {
parent::__construct();
$this->load->model('User_model');
$this->viewData = array();
if(!$this->User_model->isAuthorize() || !$this->User_model->isAdmin())
{
redirect('start/index');
}
}
public function Staff()
{
$referer_page = site_url('public_html/1081.html');
if(isset($_SERVER['HTTP_REFERER']))
{
$referer_page = $_SERVER['HTTP_REFERER'];
}
$this->db->order_by("level", "ASC");
$all_user_object = $this->db->get('user');
$users = array();
$i = 0;
foreach($all_user_object->result() as $all_user)
{
$users[$i]['id'] = $all_user->iduser;
$users[$i]['name'] = $all_user->name;
$users[$i]['job'] = $all_user->job;
$users[$i]['subdivision'] = $all_user->subdivision;
$users[$i]['position'] = $all_user->position;
$users[$i]['email'] = $all_user->email;
$users[$i]['password'] = $all_user->password;
$users[$i]['level'] = $all_user->level;
$i++;
}
$this->viewData['jobs'] = $this->User_model->GetJobsArray();
$this->viewData['jobs_string'] = $this->User_model->GetJobs();
$this->viewData['users'] = $users;
$this->viewData['referer'] = $referer_page;
$this->load->view('Admin/staff',$this->viewData);
}
public function ChangeUser()
{
$data = $this->input->post(NULL,TRUE);
$result = array();
$error = '';
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('<div class="alert alert-danger fade in">', '</div>');
// $this->form_validation->set_rules('staffNumber','Номер','trim|required|xss_clean|is_natural_no_zero');
$this->form_validation->set_rules('staffName','ФИО','trim|required|xss_clean');
$this->form_validation->set_rules('staffPosition','Место работы','trim|required|xss_clean');
$this->form_validation->set_rules('staffSubdivision','Подразделение','Работа','trim|required|xss_clean');
$this->form_validation->set_rules('staffJob','Должность','trim|required|xss_clean');
if($data['newUser'])
{
$this->form_validation->set_rules('staffEmail','Email','trim|required|xss_clean|valid_email|is_unique[user.email]');
$this->form_validation->set_rules('staffPass','Пароль','trim|required|xss_clean|min_length[3]|is_unique[user.password]');
}
else
{
$this->form_validation->set_rules('staffEmail','Email','trim|required|xss_clean|valid_email');
$this->form_validation->set_rules('staffPass','Пароль','trim|required|xss_clean|min_length[3]');
}
$this->form_validation->set_rules('staffNote','Уровень','trim|required|xss_clean|is_natural');
if($this->form_validation->run() == FALSE)
{
$success = FALSE;
$error = validation_errors();
}
else
{
$email = $data['staffEmail'];
$data_update['name'] = $data['staffName'];
$data_update['job'] = $this->User_model->identifiedJob($data['staffJob']);
$data_update['subdivision'] = $data['staffSubdivision'];
$data_update['position'] = $data['staffPosition'];
$data_update['password'] = $data['staffPass'];
$data_update['level'] = $data['staffNote'];
$data_update['email'] = $email;
$this->db->where('email',$email);
$this->db->from('user');
$count = $this->db->count_all_results();
if($count)
{
$changePass = $this->User_model->strPass($data['staffPass'],$data['staffEmail']);
if($changePass && $data['staffNote'] == 0)
{
$data_update['level'] = 1;
}
$this->db->where('email',$email);
$success = $this->db->update('user', $data_update);
$result['type'] = 'update';
$result['changePass'] = $changePass;
}
else
{
$success = $this->User_model->addUser($data_update);
$result['type'] = 'insert';
}
$result['data'] = $data_update;
// echo $success
}
$result['success'] = $success;
$result['error'] = $error;
print(json_encode($result));
}
public function ChangeJob()
{
$data = $this->input->post(NULL,TRUE);
$result = array();
$this->load->library('form_validation');
$this->form_validation->set_rules('addJob','Работа','trim|required|xss_clean');
$this->form_validation->set_rules('id','ID','trim|required|xss_clean');
if($this->form_validation->run() == FALSE)
{
$result['success'] = FALSE;
}
else
{
$data['id'] = preg_replace('/[^0-9]/', '', $data['id']);
if($data['id'] && $data['id'] == 1)
{
$result['id'] = $this->User_model->InsertAndUpdateJob($data,1);
if($result['id'])
{
$result['success'] = TRUE;
}
else
{
$result['success'] = FALSE;
}
$result['type'] = 'insert';
}
else
{
$result['success'] = $this->User_model->InsertAndUpdateJob($data);
$result['id'] = $data['id'];
$result['type'] = 'update';
}
$result['newJob'] = $data['addJob'];
$result['jobs_string'] = $this->User_model->GetJobs();
print json_encode($result);
}
}
public function SortUser()
{
$data = $this->input->post(NULL,TRUE);
switch ($data['type'])
{
case 'fname':
$famyli = 1;
break;
case 'level':
$famyli = 0;
break;
default :
$famyli = -1;
break;
}
if($famyli != -1)
{
$result['success'] = TRUE;
$result['sort'] = $this->User_model->Sort_User($famyli);
}
else
{
$result['success'] = FALSE;
}
print(json_encode($result));
}
}
?>
Файл Dashboard.php
<?php
class Dashboard extends CI_Controller
{
public $viewData = array();
public function __construct() {
parent::__construct();
$this->viewData = array();
if(!$this->User_model->isAuthorize())
{
redirect('start/index');
}
}
public function index()
{
//echo 'hello';
//redirect(site_url('public_html/1081.html'));
$this->viewData['num'] = 2;
//$this->load->view('public_html/1081.html');
session_start();
$_SESSION['user_id'] = $this->session->userdata('user_id');
redirect('public_html/1081.html');
}
public function logout()
{
session_start();
session_unset();
$this->session->unset_userdata('user_id');
redirect('start/');
}
public function Search()
{
$data = $this->input->post(NULL,TRUE);
$error = '';
$success = TRUE;
$querys = array();
$flag = 1;
$this->load->library('form_validation');
$this->form_validation->set_rules('query','Запрос','trim|required|xss_clean|min_length[3]');
if($this->form_validation->run() == FALSE)
{
$error = validation_errors();
$success = FALSE;
}
else
{
if($data['station'] == 'Главная')
{
$this->db->like('name',$data['query']);
$this->db->order_by('aes','ASC');
$query_result = $this->db->get('shemas');
$this->db->like('name',$data['query']);
$this->db->from('shemas');
$count = $this->db->count_all_results();
$this->db->like('name',$data['query']);
$this->db->from('rig');
$count_rig = $this->db->count_all_results();
}
else
{
$this->db->like('name',$data['query']);
$this->db->like('aes',$data['station']);
$query_result = $this->db->get('shemas');
$this->db->like('name',$data['query']);
$this->db->like('aes',$data['station']);
$this->db->from('shemas');
$count = $this->db->count_all_results();
$count_query_rig = $this->db->query("SELECT COUNT(*) as cnt FROM rig INNER JOIN shemas ON rig.idshemas = shemas.idshemas WHERE rig.name LIKE '%".$data['query']."%' AND shemas.aes = '$data[station]'");
foreach ($count_query_rig->result() as $cnt)
{
$count_rig = $cnt->cnt;
}
}
if($count_rig)
{
/*$rigs_id_array = array();
$this->db->like('name',$data['query']);
$resulr_id_rig = $this->db->get('rig');
foreach($resulr_id_rig->result() as $id_rig)
{
$rigs_id_array[] = $id_rig;
}
$this->db->select('rig.picture as picture,shemas.aes as aes,shemas.block as block,shemas.link as link');
$this->db->from('rig');
$this->db->join('shemas','rig.idshemas = shemas.idshemas');
$query_rig = $this->db->get();*/
$query_rig = $this->db->query("SELECT rig.picture as picture,rig.name as name,shemas.aes as aes,shemas.block as block,shemas.link as link FROM rig INNER JOIN shemas ON rig.idshemas = shemas.idshemas
WHERE rig.name LIKE '%".$data['query']."%'");
}
$i = 1;
if($count)
{
foreach($query_result->result() as $query)
{
$querys[$i]['idshemas'] = $query->idshemas;
$querys[$i]['picture'] = $query->picture;
$querys[$i]['name'] = $query->name;
$querys[$i]['aes'] = $query->aes;
$querys[$i]['block'] = $query->block;
$querys[$i]['link'] = $query->link;
$querys[$i]['rigname'] = '';
$i++;
}
}
else
{
$flag = 0;
}
if($count_rig)
{
$flag = 1;
foreach($query_rig->result() as $rigs)
{
$querys[$i]['picture'] = $rigs->picture;
$querys[$i]['aes'] = $rigs->aes;
$querys[$i]['block'] = $rigs->block;
$querys[$i]['name'] = $rigs->link;
$querys[$i]['rigname'] = $rigs->name;
$i++;
}
}
}
if(!$flag)
{
$error = 'Нет результатов';
$success = FALSE;
}
$result = array('success' => $success,'error'=>$error,'querys'=>$querys,'count' => $count,'query' => $data['query']);
print(json_encode($result));
}
}
Файл user_model.php
<?php
class User_model extends CI_Model
{
private $user_id = 0;
public function __construct()
{
parent::__construct();
if($this->session->userdata('user_id'))
{
$this->user_id = $this->session->userdata('user_id');
}
}
public function hello()
{
return 'hello';
}
public function isAuthorize()
{
return (($this->user_id)?(true):(false));
}
public function addUser($data = array())
{
$this->db->select_max('iduser');
$query = $this->db->get('user');
$id = 0;
foreach($query->result() as $idusr)
{
$id = $idusr->iduser;
break;
}
$id++;
// $this->user_id = $id;
// $this->session->set_userdata('user_id',$id);
$data['iduser'] = $id;
return $this->db->insert('user',$data);
}
public function checkPass($password = '')
{
$id = 0;
$this->db->select('iduser');
$this->db->where('password',$password);
$this->db->where('level >',0);
$query = $this->db->get('user');
foreach($query->result() as $iduser)
{
$id = $iduser->iduser;
break;
}
if($id)
{
$this->user_id = $id;
$this->session->set_userdata('user_id',$id);
return TRUE;
}
return FALSE;
}
}
Приложение Б. Исходный код модуля редактор
using System.Collections.Generic;
using System.Windows.Forms;
using System.IO;
using System.Threading;
namespace StationGuide.Browser
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//check,if there are some .SPG files in the folder with application
FileInfo[] files = (new DirectoryInfo(Directory.GetCurrentDirectory())).GetFiles();
List<FileInfo> spgList = new List<FileInfo>();
foreach (FileInfo fi in files)
{
if (fi.Extension.ToLower() == ".spg")
{
spgList.Add(fi);
}
}
//if file with this extension is only one...
String packName = String.Empty;
if (spgList.Count == 1)
{
// ... we take this file as secured package for application;
packName = spgList[0].Name;
}
else
{
String message = spgList.Count == 0 ? "Файл пакета библиотеки не найден. В следующем окне выберите необходимый файл" : "Найдено несколько файлов пакетов библиотек. В следующем окне выберите необходимый файл";
MessageBox.Show(message, "Ошибка открытия файла пакета библиотеки");
// ottherwise (if there are no files or more then one) - we ask user where and which package file is
OpenPackageForm opf = new OpenPackageForm();
opf.ShowDialog();
if (opf.IsAppClosing)
{
return;
}
packName = opf.PackageName;
}
// if we haven't name of package file we stop application's work
if (String.IsNullOrEmpty(packName))
{
return;
}
SecurePackaging.ISecuredPackageReader package = new StationGuide.SecurePackaging.DesSecuredPackageReader(packName);
//try to open package in sdpec password checking window
Application.Run(new PasswordForm(package));
//if package was opend we start server and browser, otherwise - app would be closed
if (package.IsOpened)
{
Server.StationGuideServer server = new Server.StationGuideServer(package);
server.Start();
Application.Run(new BrowserForm());
server.Stop();
}
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
namespace StationGuide.Browser.GraphicsResources
{
/// <summary>
/// Brushes, using in Browser application
/// </summary>
public static class AppBrushes
{
/// <summary>
/// Gets brush for border
/// </summary>
public static Brush Border { get { return Brushes.Gray; } }
/// <summary>
/// Gets brush for active tab
/// </summary>
public static Brush ActiveTab { get { return new System.Drawing.Drawing2D.LinearGradientBrush(new Point(0, 30), new Point(0, 0), Color.White, SystemColors.ControlLight); } }
/// <summary>
/// Gets brush for unactive tab
/// </summary>
public static Brush UnactiveTab { get { return new System.Drawing.Drawing2D.LinearGradientBrush(new Point(0, 30), new Point(0, 0), SystemColors.Control, Color.Silver); } }
/// <summary>
/// Gets brush for panels
/// </summary>
public static Brush Panel { get { return Brushes.White; } }
/// <summary>
/// Gets brush for text
/// </summary>
public static Brush Text { get { return Brushes.Black; } }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
namespace StationGuide.Browser.GraphicsResources
{
/// <summary>
/// Pens' collection, using in Browser application
/// </summary>
public static class AppPens
{
/// <summary>
/// Gets pen for border
/// </summary>
public static Pen Border { get { return new Pen(AppBrushes.Border); } }
/// <summary>
/// Gets pen for erase border by drawing another line
/// </summary>
public static Pen NoBorder { get { return new Pen(AppBrushes.Panel); } }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using StationGuide.SecurePackaging;
using System.Windows.Forms;
namespace StationGuide.Browser.Server
{
/// <summary>
/// Handler of http-request for secured package with StationGuide library
/// </summary>
public class GuideRequestHandler : HybridDSP.Net.HTTP.IHTTPRequestHandler
{
/// <summary>
/// main constructor
/// </summary>
/// <param name="package"></param>
public GuideRequestHandler(SecurePackaging.ISecuredPackageReader package)
{
_package = package;
}
/// <summary>
/// Handles request
/// </summary>
/// <param name="request">request-object</param>
/// <param name="response">responce-object</param>
public void HandleRequest(HybridDSP.Net.HTTP.HTTPServerRequest request, HybridDSP.Net.HTTP.HTTPServerResponse response)
{
System.IO.FileInfo fi = new System.IO.FileInfo(System.Web.HttpUtility.UrlDecode(request.URI, Encoding.UTF8));
Byte[] buffer = null;
try
{
try
{
buffer = _package.Read(fi.Name);
}
catch
{
response.StatusAndReason = HybridDSP.Net.HTTP.HTTPServerResponse.HTTPStatus.HTTP_NOT_FOUND;
response.Send();
}
String type = String.Empty;
Encoding enc = null;
switch (fi.Extension.ToLower())
{
case ".html":
type = "text/html";
enc = Encoding.UTF8;
//Form1 f = new Form1();
//f.Text = Encoding.Default.GetString(buffer);
//f.ShowDialog();
break;
case ".htm":
type = "text/html";
enc = Encoding.UTF8;
break;
case ".css":
type = "text/css";
enc = Encoding.UTF8;
break;
case ".js":
type = "text/javascript";
enc = Encoding.UTF8;
break;
case ".png":
type = "image/png";
break;
case ".jpg":
type = "image/jpeg";
break;
case ".gif":
type = "image/gif";
break;
}
response.SendBuffer(buffer, type);
}
catch
{
response.StatusAndReason = HybridDSP.Net.HTTP.HTTPServerResponse.HTTPStatus.HTTP_NOT_FOUND;
response.Send();
}
}
SecurePackaging.ISecuredPackageReader _package;
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace StationGuide.Browser.Server
{
/// <summary>
/// Factory of requests' handlers for StationGuide's server
/// </summary>
public class HttpRequestHandlerFactory : HybridDSP.Net.HTTP.IHTTPRequestHandlerFactory
{
/// <summary>
/// Main caonstructor
/// </summary>
/// <param name="package">secured package</param>
public HttpRequestHandlerFactory(SecurePackaging.ISecuredPackageReader package)
{
_package = package;
}
/// <summary>
/// Creates handler
/// </summary>
/// <param name="request">object of http-request</param>
/// <returns>handler for current request</returns>
public HybridDSP.Net.HTTP.IHTTPRequestHandler CreateRequestHandler(HybridDSP.Net.HTTP.HTTPServerRequest request)
{
return new GuideRequestHandler(_package);
}
/// <summary>
/// secured package of StationGuide's library
/// </summary>
SecurePackaging.ISecuredPackageReader _package;
}
}
using System;
using System.Collections.Generic;
using System.Text;
using HttpServer;
using System.Net.Sockets;
namespace StationGuide.Browser.Server
{
/// <summary>
/// Web Server, resources of which are in the secured package
/// </summary>
public class StationGuideServer
{
#region constants
/// <summary>
/// Number of first server's port on LocalHost, maybe another port if this is busy
/// </summary>
protected const Int32 StartPortNumber = 50000;
#endregion
#region public static members
/// <summary>
/// Gets or privately sets Home page's name
/// </summary>
public static String HomePage { get; private set; }
public static Int32 PortNumber { get; private set; }
#endregion
#region public constructors
/// <summary>
/// Main constructor
/// </summary>
/// <param name="package">package with all server's resources</param>
public StationGuideServer(StationGuide.SecurePackaging.ISecuredPackageReader package)
{
PortNumber = StartPortNumber;
_listener = HttpListener.Create(new System.Net.IPAddress(new Byte[] { 127, 0, 0, 1 }), PortNumber);
_listener.RequestReceived += OnRequest;
_package = package;
HomePage = _package.HomePage;
}
#endregion
#region public methods
/// <summary>
/// Starts the server
/// </summary>
public void Start()
{
PortNumber = _listener.Start(1);
}
/// <summary>
/// Stops the server (not is nesessary at the end of app's work)
/// </summary>
public void Stop()
{
_listener.Stop();
}
#endregion
#region protected methods
/// <summary>
/// Handler of http-request
/// </summary>
protected void OnRequest(object sender, HttpServer.RequestEventArgs e)
{
e.Response.Connection.Type = HttpServer.Headers.ConnectionType.Close;
System.IO.FileInfo fi = new System.IO.FileInfo(e.Request.Uri.LocalPath);
Byte[] buffer = null;
try
{
buffer = _package.Read(fi.Name);
}
catch
{
e.Response.Status = System.Net.HttpStatusCode.NotFound;
}
if (buffer != null)
{
String type = String.Empty;
Encoding enc = null;
type = ContentTypeHelper.GetType(fi.Extension);
if (type.StartsWith("text"))
{
enc = Encoding.UTF8;
}
e.Response.ContentType = new HttpServer.Headers.ContentTypeHeader(type);
if (enc != null)
{
e.Response.Encoding = enc;
}
if (type.StartsWith("application") && type!="application/x-shockwave-flash")
{
e.Response.Add(new HttpServer.Headers.StringHeader("Content-Disposition", String.Format("attachment; filename=\"{0}\"", fi.FullName)));
}
e.Response.Body.Write(buffer, 0, buffer.Length);
}
}
#endregion
#region private fields
/// <summary>
/// http-listener
/// </summary>
private HttpListener _listener;
/// <summary>
/// secured package - main source of all server resources
/// </summary>
private StationGuide.SecurePackaging.ISecuredPackageReader _package;
#endregion
}
}
Размещено на Allbest.ru
Подобные документы
Краткая характеристика функционала Solid Works Enterprise PDM. Методы и средства разработки системы управления контентом портала с архивом конструкторской документации. Логическая и компонентная архитектура. Решения по пользовательскому интерфейсу.
дипломная работа [2,1 M], добавлен 10.02.2017Понятие и основные функции систем управления web-контентом. Система управления web-контентом как программный комплекс, предоставляющий функции создания, редактирования, контроля и организации web-страниц. Обзор и анализ существующих систем WCMS.
курсовая работа [419,4 K], добавлен 29.12.2014Разработка и практическое внедрение контента "Joomla!", порядок установки и настройки системы управления им. Выбор дизайна, цветовой гаммы и анимации сайта, методика его добавления. Создание информационной структуры в системе управления контентом.
дипломная работа [3,4 M], добавлен 22.06.2009Разработка концептуальной модели базы данных. Реализация алгоритмов и разработка управляющей программы. Разработка структуры системы управления данными. Методика проведения и результаты тестирования. Функционирование разработанного программного модуля.
курсовая работа [550,5 K], добавлен 08.06.2023Описания системы управления контентом сайта, предназначенной для создания, внедрения и управления коммерческими или некоммерческими веб-сайтами и порталами. Возможности системы DotNetNuke. Анализ функций управления контентом. Установка сайта на сервер.
курсовая работа [2,9 M], добавлен 11.01.2015Процесс создания и развития динамических веб-страниц с использованием систем управления контентом. Последовательность установки и настройки движка и плагинов CMS E-107 на хостинге. Разграничение ролей администратора и пользователей интернет-портала.
курсовая работа [2,3 M], добавлен 29.06.2014Наиболее распространенные программы. Внешний вид и программирование сайта. Система управления контентом и веб-контентом. Хранение и публикация большого количества документов, изображений, музыки или видео. Инструменты хранения и публикации информации.
презентация [481,3 K], добавлен 19.08.2013Организация совместного процесса создания, редактирования и управления контентом. Достоинства разработанной CMS. Добавление, редактирование и удаление страниц, файлов, новостей. Программный продукт для создания и легкого управления контентом страницы.
дипломная работа [2,1 M], добавлен 15.10.2013Проект программного продукта, представляющего собой веб-приложение в виде системы управления веб-контентом и предназначенного для быстрого создания простых сайтов. Функциональные требования в рамках языка UML. Разработка визуальных интерфейсов системы.
дипломная работа [5,0 M], добавлен 11.07.2012Компьютерные обучающие системы. Основные принципы новых информационных технологий обучения. Развитие глобальной сети Интернет, понятие web-сайта. Процессор гипертекста, СУБД MySQL. Система управления контентом "Joomla". Установка локального сервера.
дипломная работа [4,4 M], добавлен 19.04.2011