Социальная сеть

Разработка модели системы. Оценка методологии моделирования предметной области. Анализ диаграмм декомпозиции функции. Определение дополнительных ограничений целостности. Описание групп пользователей и прав доступа. Разработка алгоритмов работы системы.

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

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

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

<tr class="${(i % 2) == 0 ? 'odd' : 'even'}">

<td>${authority.id}</td>

<td>${authority.authority?.encodeAsHTML()}</td>

<td>${authority.description?.encodeAsHTML()}</td>

<td class="actionButtons">

<span class="actionButton">

<g:link action="show" id="${authority.id}">Show</g:link>

</span>

</td>

</tr>

</g:each>

</tbody>

</table>

</div>

<div class="paginateButtons">

<g:paginate total="${Role.count()}" />

</div>

</div>

</body>

<head>

<meta name="layout" content="old_main"/>

<title>Show Role</title>

</head>

<body>

<div class="nav">

<span class="menuButton"><a class="home" href="${createLinkTo(dir: '/secret')}">Home</a></span>

<span class="menuButton"><g:link class="list" action="list">Role List</g:link></span>

<span class="menuButton"><g:link class="create" action="create">New Role</g:link></span>

</div>

<div class="body">

<h1>Show Role</h1>

<g:if test="${flash.message}">

<div class="message">${flash.message}</div>

</g:if>

<div class="dialog">

<table>

<tbody>

<tr class="prop">

<td valign="top" class="name">ID:</td>

<td valign="top" class="value">${authority.id}</td>

</tr>

<tr class="prop">

<td valign="top" class="name">soc.Role Name:</td>

<td valign="top" class="value">${authority.authority}</td>

</tr>

<tr class="prop">

<td valign="top" class="name">Description:</td>

<td valign="top" class="value">${authority.description}</td>

</tr>

<tr class="prop">

<td valign="top" class="name">People:</td>

<td valign="top" class="value">${authority.people}</td>

</tr>

</tbody>

</table>

</div>

<div class="buttons">

<g:form>

<input type="hidden" name="id" value="${authority?.id}"/>

<span class="button"><g:actionSubmit class="edit" value="Edit"/></span>

<span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');"

value="Delete"/></span>

</g:form>

</div>

</div>

</body>

<!doctype html>

<html>

<head>

<meta name="layout" content="basic">

<title>Администраторская</title>

</head>

<body>

<article>

<div class="title">

<h1>Ресурсы для управления</h1>

</div>

<div class="wrapper">

<div class="main_block">

<h2><g:link controller="user" action="list">Пользователи</g:link></h2><br>

<h2><g:link controller="role" action="list">Роли</g:link></h2><br>

<h2><g:link controller="user" action="changeRole">Сменить роль</g:link></h2><br>

<h2><g:link controller="community" action="list">Сообщества</g:link></h2><br>

</div>

</div>

<div class="clear"></div>

</article>

</body>

</html>

<!doctype html>

<html>

<head>

<title>Grails Runtime Exception</title>

<meta name="layout" content="main">

<link rel="stylesheet" href="${resource(dir: 'css', file: 'errors.css')}" type="text/css">

</head>

<body>

<g:renderException exception="${exception}" />

</body>

</html>

<!doctype html>

<html>

<head>

<meta name="layout" content="main"/>

</head>

<%@ page contentType="text/html;charset=UTF-8" %>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Успешная регистрация!</title>

<link rel="stylesheet" href="${resource(dir: 'css', file: 'style.css')}" type="text/css">

<g:javascript library='application'/>

<g:javascript library='scriptaculous'/>

</head>

<body>

<div id="success">

<h1>${flash.message}</h1><br>

<a href="<g:createLink controller="basic" action="index"/>">На главную страницу</a>

</div>

</body>

</html>

Службы

import javax.mail.MessagingException

import org.springframework.mail.MailException

import org.springframework.mail.SimpleMailMessage

/**

* Simple service for sending emails.

*

* Work is planned in the Grails roadmap to implement first-class email

* support, so there's no point in making this code any more sophisticated.

*

* @author Haotian Sun

*/

class EmailerService {

boolean transactional = false

def mailSender

def mailMessage // a "prototype" email instance

/**

* Send a allComm of emails.

*

* @param mails a allComm of maps

*/

def sendEmails(mails) {

// Build the mail messages

def messages = []

for (mail in mails) {

// newComm a copy of the default message

def message = new SimpleMailMessage(mailMessage)

message.to = mail.to

message.text = mail.text

message.subject = mail.subject

messages << message

}

// Send them all together

try {

mailSender.send(messages as SimpleMailMessage[])

}

catch (MailException e) {

log.error "Failed to send emails: $e.message", e

}

catch (MessagingException e) {

log.error "Failed to send emails: $e.message", e

}

}

}

package soc

class CommunityService {

private long communityID

public void setCommunity(def num) {

communityID = num as long

}

public Community getCommunity() {

return Community.get(communityID)

}

}

package soc

class QuoteService {

boolean transactional = false

def getRandomQuote() {

null

/*

def allQuotes = Quote.list()

def randomQuote = null

if (allQuotes.size() > 0) {

def randomIdx = new Random().nextInt(allQuotes.size())

randomQuote = allQuotes[randomIdx]

} else {

randomQuote = getStaticQuote()

}

return randomQuote

*/

}

def getStaticQuote() {

/*

return new Quote(author: "Anonymous",

content: "Real Programmers Don't eat quiche")

*/

null

}

def serviceMethod() {}

}

package soc

class RolesService {

def authenticateService

private static final String ROLE_ADMIN = "ROLE_ADMIN"

private static final String ROLE_RECTOR = "ROLE_RECTOR"

private static final String ROLE_TEACHER = "ROLE_TEACHER"

private static final String ROLE_STUDENT = "ROLE_STUDENT"

private static final String ROLE_USER = "ROLE_USER"

private static final String ADMIN_NAME = "Администратор"

private static final String RECTOR_NAME = "Управляющий"

private static final String TEACHER_NAME = "Преподаватель"

private static final String STUDENT_NAME = "Студент"

private static final String USER_NAME = "Пользователь"

String getAdminName() {

return ADMIN_NAME

}

String getRectorName() {

return RECTOR_NAME

}

String getTeacherName() {

return TEACHER_NAME

}

String getStudentName() {

return STUDENT_NAME

}

String getUserName() {

return USER_NAME

}

String getAdmin() {

return ROLE_ADMIN

}

String getRector() {

return ROLE_RECTOR

}

String getTeacher() {

return ROLE_TEACHER

}

String getStudent() {

return ROLE_STUDENT

}

String getUser() {

return ROLE_USER

}

boolean isMember(User user) { // исправить

if (!user) return false

User findUser = Member.findByUser(user) as User

return findUser as boolean

}

Role getRole(String name) {

return Role.findByAuthority(name)

}

}

package soc

import java.security.SecureRandom

class SecureService {

private char[] dictionary = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'l', 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p',

'z', 'x', 'c', 'v', 'b', 'n', 'm', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', '+']

String generateKey(int size) {

int length = dictionary.length

String key = ""

for (int i = 0; i < size; i++) {

int index = new SecureRandom().nextInt(length)

char newSymbol = dictionary[index]

boolean upCase = new SecureRandom().nextBoolean()

if (upCase) newSymbol = newSymbol.toUpperCase()

key += newSymbol

}

return key

}

ArrayList<String> getGeneratedKeys(int count, int keyLength) {

ArrayList<String> keys = new ArrayList<String>();

while (count != 0) {

String currentKey = generateKey(keyLength);

if (keys.indexOf(currentKey) == -1) {

keys.add(currentKey);

count--;

}

}

return keys;

}

}

package soc

class UserService {

def deleteSecretFields(User user) {

if (!user) return null

user.password = ""

return user

}

}

Конфигурации

import soc.*

class BootStrap {

def authenticateService

def rolesService

def init = { servletContext ->

createAdminUserIfRequired()

}

def createAdminUserIfRequired() {

if (!User.findByLogin("admin")) {

def userRole = Role.findByAuthority(rolesService.user) ?: new Role(authority: rolesService.user, name: rolesService.userName).save() // failOnError: true

def studentRole = Role.findByAuthority(rolesService.student) ?: new Role(authority: rolesService.student, name: rolesService.studentName).save()

def teacherRole = Role.findByAuthority(rolesService.teacher) ?: new Role(authority: rolesService.teacher, name: rolesService.teacherName).save()

def rectorRole = Role.findByAuthority(rolesService.rector) ?: new Role(authority: rolesService.rector, name: rolesService.rectorName).save()

def adminRole = Role.findByAuthority(rolesService.admin) ?: new Role(authority: rolesService.admin, name: rolesService.adminName).save()

println "Fresh Database. Creating ADMIN user."

String pass = authenticateService.passwordEncoder("password")

UserRating _rating = new UserRating(value: 1000000).save()

UserProfile prof = new UserProfile(aboutMe: "Smart admin", birthday: new Date(3000, 10, 23),

name: "Fox", surname: "Smart", middle_name: "Server", rating: _rating,

work: "Full Master", state: "I will kill you!").save()

UserContact _contacts = new UserContact(content: "public@miem.edu.ru").save()

User superAdmin = new User(login: "admin", password: pass, email: "gotowhitesnow@gmail.com",

profile: prof, contacts: _contacts).save()

Role role = Role.findByAuthority(rolesService.admin)

// now add the User to the role

role.addToPeople(superAdmin)

// Записываем всё в базу

role.save()

addDepartments()

} else {

println "Existing admin user, skipping creation"

}

}

def addDepartments() {

Contact contact = new Contact(info: "Москва, ул. Пионерская Малая, 12\nМосква, Большой Трехсвятительский пер., 3").save()

TrainingDepartment department = new TrainingDepartment(shortName: "Миэм", contacts: contact,

name: "Московский государсвтенный университет электроники и математики", c_describe: "Чудесный технический университет").save()

}

def destroy = {

}

}

class UrlMappings {

static mappings = {

"/$controller/$action?/$id?" {

constraints {

}

}

"/comm/edit/$id?"(controller: "community", action: "edit")

"/comm/show/$id?"(controller: "community", action: "show")

"/comm/delete/$id?"(controller: "community", action: "delete")

"/comm/list"(controller: "community", action: "list")

"/communities"(controller: "community", action: "allComm")

"/community/create_community"(controller: "community", action: "newComm")

"/community/save_new"(controller: "community", action: "saveComm")

"/community/comm$id?"(controller: "community", action: "showComm")

"/"(controller: "basic")

"/institution"(controller: "basic", action: "aboutInstitute")

"/department"(controller: "basic", action: "aboutCathedra")

"/contacts"(controller: "basic", action: "contacts")

"/secret"(controller: "secret")

"/success"(view: "success")

"500"(view: '/error')

}

}

package soc

class SecurityFilters {

def authenticateService

def rolesService

def filters = {

commChanges(controller: "community", action: "edit") {

before = {

}

}

enterSecret(controller: "secret", action: "*") {

before = {

User user = authenticateService.userDomain() as User

}

}

}

}

modules = {

application {

resource url:'js/application.js'

}

}

grails.servlet.version = "2.5" // Change depending on target container compliance (2.5 or 3.0)

grails.project.class.dir = "target/classes"

grails.project.test.class.dir = "target/test-classes"

grails.project.test.reports.dir = "target/test-reports"

grails.project.target.level = 1.6

grails.project.source.level = 1.6

//grails.project.war.file = "target/${appName}-${appVersion}.war"

grails.server.port.http = 9090

grails.project.dependency.resolution = {

// inherit Grails' default dependencies

inherits("global") {

// uncomment to disable ehcache

// excludes 'ehcache'

}

log "error" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose'

checksums true // Whether to verify checksums on resolve

repositories {

inherits true // Whether to inherit repository definitions from plugins

grailsPlugins()

grailsHome()

grailsCentral()

mavenCentral()

// uncomment these to enable remote dependency resolution from public Maven repositories

//mavenCentral()

//mavenLocal()

//mavenRepo "http://snapshots.repository.codehaus.org"

//mavenRepo "http://repository.codehaus.org"

//mavenRepo "http://download.java.net/maven/2/"

//mavenRepo "http://repository.jboss.com/maven2/"

}

dependencies {

// specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.

runtime 'mysql:mysql-connector-java:5.1.16'

}

plugins {

runtime ":hibernate:$grailsVersion"

runtime ":jquery:1.7.1"

runtime ":resources:1.1.6"

// Uncomment these (or add new ones) to enable additional resources capabilities

//runtime ":zipped-resources:1.0"

//runtime ":cached-resources:1.0"

//runtime ":yui-minify-resources:0.1.4"

build ":tomcat:$grailsVersion"

}

}

// locations to search for config files that get merged into the main config

// config files can either be Java properties files or ConfigSlurper scripts

// grails.config.locations = [ "classpath:${appName}-config.properties",

// "classpath:${appName}-config.groovy",

// "file:${userHome}/.grails/${appName}-config.properties",

// "file:${userHome}/.grails/${appName}-config.groovy"]

// if (System.properties["${appName}.config.location"]) {

// grails.config.locations << "file:" + System.properties["${appName}.config.location"]

// }

grails.project.groupId = appName // change this to alter the default package name and Maven publishing destination

grails.mime.file.extensions = true // enables the parsing of file extensions from URLs into the request format

grails.mime.use.accept.header = false

grails.mime.types = [ html: ['text/html','application/xhtml+xml'],

xml: ['text/xml', 'application/xml'],

text: 'text/plain',

js: 'text/javascript',

rss: 'application/rss+xml',

atom: 'application/atom+xml',

css: 'text/css',

csv: 'text/csv',

all: '*/*',

json: ['application/json','text/json'],

form: 'application/x-www-form-urlencoded',

multipartForm: 'multipart/form-data'

]

// URL Mapping Cache Max Size, defaults to 5000

//grails.urlmapping.cache.maxsize = 1000

// What URL patterns should be processed by the resources plugin

grails.resources.adhoc.patterns = ['/images/*', '/css/*', '/js/*', '/plugins/*']

// The default codec used to encode data with ${}

grails.views.default.codec = "html" // none, html, base64

grails.views.gsp.encoding = "UTF-8"

grails.converters.encoding = "UTF-8"

// enable Sitemesh preprocessing of GSP pages

grails.views.gsp.sitemesh.preprocess = true

// scaffolding templates configuration

grails.scaffolding.templates.domainSuffix = 'Instance'

//enable jquery

//grails.views.javascript.library="jquery"

//grails.views.javascript.library="prototype"

// Set to false to use the new Grails 1.2 JSONBuilder in the render method

grails.json.legacy.builder = false

// enabled native2ascii conversion of i18n properties files

grails.enable.native2ascii = true

// packages to include in Spring bean scanning

grails.spring.bean.packages = []

// whether to disable processing of multi part requests

grails.web.disable.multipart=false

// request parameters to mask when logging exceptions

grails.exceptionresolver.params.exclude = ['password']

// enable query caching by default

grails.hibernate.cache.queries = true

// set per-environment serverURL stem for creating absolute links

environments {

development {

grails.logging.jul.usebridge = true

}

production {

grails.logging.jul.usebridge = false

// TODO: grails.serverURL = "http://www.changeme.com"

}

}

// log4j configuration

log4j = {

// Example of changing the log pattern for the default console

// appender:

//

//appenders {

// console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')

//}

error 'org.codehaus.groovy.grails.web.servlet', // controllers

'org.codehaus.groovy.grails.web.pages', // GSP

'org.codehaus.groovy.grails.web.sitemesh', // layouts

'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping

'org.codehaus.groovy.grails.web.mapping', // URL mapping

'org.codehaus.groovy.grails.commons', // core / classloading

'org.codehaus.groovy.grails.plugins', // plugins

'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration

'org.springframework',

'org.hibernate',

'net.sf.ehcache.hibernate'

}

security.defaultRole = "ROLE_USER"

//log4j.logger.org.springframework.security='off,stdout'

dataSource {

pooled = true

driverClassName = "com.mysql.jdbc.Driver"

username = "root"

password = "1807"

}

hibernate {

cache.use_second_level_cache = true

cache.use_query_cache = true

cache.provider_class = "net.sf.ehcache.hibernate.EhCacheProvider"

}

/*log4j = {

// ... whatever

debug 'org.hibernate.SQL',

'org.hibernate.transaction' // optionally

}*/

// environment specific settings

environments {

development {

dataSource {

dbCreate = "update" // one of 'newComm', 'newComm-drop','update'

url = "jdbc:mysql://localhost:3306/base"

}

}

test {

dataSource {

dbCreate = "update"

url = "jdbc:mysql://localhost:3306/base"

}

}

production {

dataSource {

dbCreate = "update"

url = "jdbc:mysql://localhost:3306/base"

}

}

}

security {

// влючает безопасность (очень важный параметр)

active = true

useRequestMapDomainClass = true

loginUserDomainClass = "soc.User"

authorityDomainClass = "soc.Role"

requestMapClass = "soc.Requestmap"

userName = "login"

password = "password"

loginFormUrl = "/"

}

package soc

class UserTagLib {

def rolesService

def authenticateService

def fullName = {attrs, body ->

User user

if (attrs.user) {

user = attrs.user

} else {

user = authenticateService.userDomain() as User

}

String result = ""

if (user?.profile) {

result += "${user.profile.surname} ${user.profile.name} ${user.profile.middle_name}"

}

out << result.encodeAsHTML()

}

def fullStatus = {attrs, body ->

User user

if (attrs.user) {

user = attrs.user

} else {

user = authenticateService.userDomain() as User

}

String result = ""

String role = user.role.name ?: rolesService.userName

result += role

if (user?.profile) {

Department dep = user.profile.department

if (dep) result += ", ${dep.shortName}"

}

out << result.encodeAsHTML()

}

}

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

...

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

  • Выбор основных средств и методологии проектирования и СУБД. Построение инфологической модели предметной области. Выявление полного перечня ограничений целостности. Описание информационных потребностей пользователей и выбор способов их реализации.

    курсовая работа [2,9 M], добавлен 25.03.2011

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

    курсовая работа [7,2 M], добавлен 21.04.2015

  • Анализ предметной области. Разработка информационной системы для улучшения качества обслуживания клиентов и автоматизации работы кассы столовой. Проектирование логической модели. Определение регламентированных запросов и описание клиентских приложений.

    курсовая работа [1,6 M], добавлен 17.02.2013

  • Описание предметной области и определение предметной области информационной системы детского сада. Разработка логической и физической модели базы данных дошкольного образовательного учреждения. Анализ функционала информационной системы детского сада.

    курсовая работа [1,6 M], добавлен 20.04.2015

  • Разработка и создание базы данных для аварийной службы. Анализ предметной области с описанием требований, правил, объектов и их атрибутов. Описание групп пользователей, средств управления разделением доступа и функциональных возможностей каждого класса.

    курсовая работа [2,2 M], добавлен 27.11.2010

  • Разработка информационной системы (ИС) учета и анализа возникновения дорожных заторов в городе Иркутск. Разработка структуры ИС (модулей системы, модели данных, матрицу доступа пользователей ИС). Основные средства моделирования при проектировании ИС.

    лабораторная работа [1,3 M], добавлен 23.07.2012

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

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

  • Понятие и разновидности, подходы к формированию инфологических моделей. Модель информационной системы Захмана, направления ее развития и анализ результатов. Компоненты инфологического уровня описания предметной области. Сбор требований пользователей.

    презентация [136,3 K], добавлен 19.08.2013

  • Определение предметной области базы данных ("Сеть ресторанов"), виды ее моделирования. Первоначальный набор сущностей и атрибутов предметной области. Процесс смыслового наполнения базы данных. Атрибуты в концептуальной модели. Характеристика видов связей.

    контрольная работа [510,9 K], добавлен 03.12.2014

  • Определение класса защищённости АС. Разработка модели угроз. Выбор механизмов и средств защиты информационных ресурсов от несанкционированного доступа. Создание структуры каталогов для заданного количества пользователей автоматизированной системы.

    курсовая работа [9,7 M], добавлен 12.05.2014

  • Анализ предметной области и разработка проекта информационной системы по поддержке пользователей на базе 1С: Предприятие. Проведение формализации логических моделей информационных процессов и процедур в проектной системе. Реализация функций системы 1С.

    дипломная работа [1,9 M], добавлен 27.01.2013

  • Анализ информационной системы ИНЭК "Страховщик". Описание предметной области с использованием модели "сущность-связь". Моделирование бизнес-процессов с помощью IDEF0-диаграмм. Проектирование и разработка приложения в среде Delphi и создание интерфейса.

    отчет по практике [4,9 M], добавлен 28.12.2014

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

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

  • Анализ предметной области и требований пользователей для разработки программного средства по автоматизации работы склада строительных материалов. Описание работы с базой данных Access, позволяющей добавлять и редактировать информацию, оформлять накладную.

    курсовая работа [601,1 K], добавлен 25.01.2013

  • Анализ предметной области. Обоснование проектных решений по разработке автоматизированного рабочего места сотрудника канцелярии банка. Проектирование структуры базы данных и интерфейса системы. Разработка программных модулей и алгоритмов их работы.

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

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

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

  • Описание предметной области системы "Аптека", описание ее основных атрибутов и элементов, назначение и функциональные особенности. Разработка модели данной программной системы средствами UML, прецеденты процесса и требования к нему, эффективность.

    курсовая работа [1,2 M], добавлен 11.10.2013

  • Анализ предметной области "Конкурс поэтов" на основе объектно-ориентированного подхода. Разработка оконного приложения и описание информационной модели предметной области. Описание разработанных процедур С++ и результатов тестирования приложения.

    курсовая работа [355,9 K], добавлен 18.06.2013

  • Системный анализ предметной области. Построение концептуальной и даталогичной модели базы данных. Физическое проектирование базы данных. Описание функциональной модели системы управления базами данных. Разработка экранных форм ввода-вывода и отчета.

    курсовая работа [1,1 M], добавлен 09.12.2014

  • Разработка базы данных для предметной области "Подразделения предприятия – Рабочие помещения". Описание используемых данных, предметной области и результатной информации. Создание запросов, форм и отчетов в базе данных. Описание построения диаграмм.

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

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