Отчет по практике в МРОО «АВИП» Межрегиональная общественная организация «Ассоциация ветеранов, инвалидов и пенсионеров»

Автор работы: Пользователь скрыл имя, 11 Апреля 2014 в 15:16, отчет по практике

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

В ходе прохождения практики были изучены вопросы техники безопасности, правильной организации рабочего программиста, изучены технологии разработки программного обеспечения в условиях реального предприятия и применяемое для этого программное обеспечение и среды разработки.
Были получены навыки работы с фреймворком PyQt4. Также был получен опыт работы с языком программирования Python, в том числе для разработки desktop-приложений с использованием HTML5. В том числе получен опыт работы с расширением для Mozilla Firefox - SQLiteManager, используемого для администрирования СУБД SQLite.

Содержание

Введение 4
1 Описание программного обеспечения 6
2 Программы контроля и диагностики средств вычислительной техники 8
3 Описание средств защиты информации 11
4 Описание технологии разработки информационной системы 13
5 Организация рабочего места 14
6 Техника безопасности 17
7 Проектирование информационной системы 20
Заключение 22
Список использованных источников 23

Прикрепленные файлы: 1 файл

отчет_практика.docx

— 697.65 Кб (Скачать документ)

10. Интенсивная работа с клавиатурой вызывает болевые ощущения в локтевых суставах, предплечьях, запястьях, в кистях и пальцах рук.

11. Основной блок клавиш на клавиатуре разбит на две части, развернутые таким образом, что пользователю волей-неволей приходится раздвигать руки и расставлять локти. Фирмой Microsoft разработана эргономическая клавиатура, которая своеобразной конструкцией призвана снизить нагрузку на руки.

12. Правильное положение за компьютером

13. Помещение во время работы с компьютером должно быть хорошо освещено. Освещение в помещениях ПК должно быть смешанным: естественным, - за счет солнечного света, - и искусственным. Запрещается работа с компьютером в темном или полутемном помещении!

14. Хотя картина воздействия компьютеров на организм человека, описанная выше, выглядит довольно мрачной, нужно помнить, что подобные последствия возможны лишь в случае абсолютного игнорирования мер безопасности и гигиенических норм.

15. Профилактические и оздоровительные методики и технологии позволят свести к минимуму негативное воздействие компьютера на Ваше здоровье, сделать работу на ПК приятным и увлекательным занятием. Сегодня это уже возможно!

 

7 РАЗРАБОТКА ИНФОРМАЦИОННОЙ  СИСТЕМЫ ПО УЧЕТУ НАСЕЛЕНИЯ

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

Каждый человек имеет определенный список льгот, в зависимости от которых он будет получать различные поздравления, оповещения, напоминания.

Функциональной задачей  работников является поиск информации в базе данных по выбранным и введённым с клавиатуры критериям, а также редактирование, добавление и удаление данных.

Рисунок 8 – Главная форма приложения

 

 

 

Рисунок 9 – Форма добавления человека

 

ЗАКЛЮЧЕНИЕ

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

Были получены навыки работы с фреймворком PyQt4. Также был получен опыт работы с языком программирования Python, в том числе для разработки desktop-приложений с использованием HTML5. В том числе получен опыт работы с расширением для Mozilla Firefox - SQLiteManager, используемого для администрирования СУБД SQLite.

 

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Лутц Марк. Изучаем Python, 4-е издание; изд. Символ-Плюс, 2011
  2. Бизли Дэвид. Python. Подробный справочник; изд. Символ-Плюс, 2010

 

ПРИЛОЖЕНИЕ А

Листинг программы

# -*- coding: utf-8 -*-

from PyQt4 import QtGui, QtCore, QtWebKit, Qt

from database import DBManager

import JSObjects

 

class MainWindow(QtGui.QMainWindow):

    def __init__(self):

        QtGui.QMainWindow.__init__(self)

        self.js_dialogs = JSObjects.Dialogs()

        self.js_connector = JSObjects.JSConnector()

        self.setupUi()

        self.webView.load(QtCore.QUrl(self.toUtf("html/index.html")))

        self.setWindowTitle(self.toUtf("Один Один"))

        self.db = DBManager

        a = self.db.getDistricts()

        print a

 

 

 

    def setupUi(self):

        if self.objectName().isEmpty():

            self.setObjectName(self.toUtf("MainWindow"))

        self.resize(800, 600)

        self.webView = QtWebKit.QWebView(self)

        self.webView.setObjectName("WebView")

        self.setCentralWidget(self.webView)

        #self.webView.setUrl(QtCore.QUrl('about:blank'))

        self.webView.page().mainFrame().addToJavaScriptWindowObject('Dialogs', self.js_dialogs)

        self.webView.page().mainFrame().addToJavaScriptWindowObject('App', self.js_connector)

 

    @QtCore.pyqtSlot(str)

    def test(self,what):

        print what

 

    @QtCore.pyqtSlot()

    def onclose(self):

        self.db.close()

 

 

    @staticmethod

    def toUtf(text):

        """

        Method convert string to UTF-8

        :param text: string

        :return: QString or str in UTF-8

        """

        if isinstance(text, str):

            return QtGui.QApplication.translate("MainWindow", text, None, QtGui.QApplication.UnicodeUTF8)

        elif isinstance(text, QtCore.QString):

            return str(text.toUtf8())

 

from sqlite3 import dbapi2 as sqlite

from PyQt4.QtGui import QApplication

from PyQt4.QtCore import QString

 

 

class _DBManager(object):

    def __init__(self, path):

        self.file = path

        self.connection = sqlite.connect(self.toUtf(path))

        self.cursor = self.connection.cursor()

 

        self.connection.text_factory = str

        self.execute("PRAGMA auto_vacuum=FULL")

        self.execute('PRAGMA encoding = "UTF-8"')

 

        self.createTables()

        #self.load()

 

    def close(self):

        self.connection.commit()

        self.cursor.close()

 

    def save(self):

        self.connection.commit()

 

    def fetchall(self):

        trueValues = []

        for value in self.cursor.fetchall():

            if isinstance(value, tuple):

                if len(value) > 1:

                    trueValues.append(value)

                else:

                    trueValues.append(value[0])

            else:

                trueValues.append(value)

        return trueValues

 

    def execute(self, statement, args=None):

        if args is None:

            self.cursor.execute(statement)

        else:

            self.cursor.execute(statement, args)

 

    def fetchone(self):

        result = self.cursor.fetchone()

        if hasattr(result, '__iter__'):

            if len(result) == 1:

                return result[0]

        return result

 

    def addDistrict(self, name):

        self.execute('INSERT INTO districts( name ) VALUES (?)', (name,))

        id = self.cursor.lastrowid

        self.save()

        return id

 

    def addStreet(self, street_name):

        self.execute('INSERT INTO streets (name) VALUES (?)', (street_name, ))

        id = self.cursor.lastrowid

        self.save()

        return id

 

    def addHouseToStreet(self, street_id, dist_id, house_data):

        self.execute('INSERT INTO houses (streetID, num, corp, distID) VALUES (?,?,?,?)', (int(street_id), int(house_data[0]), int(house_data[1]), int(dist_id)))

        id = self.cursor.lastrowid

        self.save()

        return id

 

    def getDistricts(self):

        self.execute('SELECT id, name FROM districts')

        result = self.fetchall()

        return result

 

    def getStreets(self):

        self.execute('SELECT id, name FROM streets')

        result = self.fetchall()

        return result

 

    def addHuman(self, name, surname, patronymic, bday, gtel, mtel, sex, zbl, tbl, vt, uz, iov, uv, vvov):

        self.execute('INSERT INTO Peoples (name, surname, patronymic, birthday, telephone, mobile, sex, zbl, tbl, tt, uz, iov, uv, vov) '

                     'VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)', (name, surname, patronymic, bday, gtel, mtel, sex, zbl, tbl, vt, uz, iov, uv, vvov))

        id = self.cursor.lastrowid

        self.save()

        return id

 

    def createTables(self):

        self.execute('''

            CREATE TABLE IF NOT EXISTS Peoples(

              ID  INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,

              name VARCHAR(100) NOT NULL,

              surname VARCHAR(100) NOT NULL,

              patronymic VARCHAR(100) NOT NULL,

              birthday VARCHAR(10) NOT NULL,

              telephone VARCHAR(15) NOT NULL,

              mobile VARCHAR(15) NOT NULL,

              sex INTEGER NOT NULL,

              zbl INTEGER NOT NULL,

              tbl INTEGER NOT NULL,

              tt INTEGER NOT NULL,

              uz INTEGER NOT NULL,

              iov INTEGER NOT NULL,

              uv INTEGER NOT NULL,

              vov INTEGER NOT NULL

            )

        ''')

 

        self.execute('''

            CREATE TABLE IF NOT EXISTS address(

              ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,

              peopleID INTEGER NOT NULL ,

              houseID INTEGER NOT NULL ,

              flat VARCHAR(10) NOT NULL ,

              fakt INTEGER NOT NULL,

              postindex VARCHAR(6)

            )

        ''')

 

        self.execute('''

            CREATE TABLE IF NOT EXISTS houses(

              ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,

              streetID INTEGER NOT NULL,

              num INTEGER NOT NULL ,

              corp VARCHAR(5),

              distID INTEGER NOT NULL

            )

        ''')

 

        self.execute('''

            CREATE TABLE IF NOT EXISTS streets(

              ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,

              name VARCHAR NOT NULL

            )

        ''')

 

        self.execute('''

            CREATE TABLE IF NOT EXISTS districts(

              ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,

              name VARCHAR NOT NULL

            )

        ''')

 

        self.execute('''

            CREATE TABLE IF NOT EXISTS actions(

              ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,

              peopleID INTEGER NOT NULL,

              type VARCHAR NOT NULL,

              actdate VARCHAR NOT NULL,

              other TEXT

            )

        ''')

 

    def toUtf(self, text):

        if isinstance(text, str):

            return str((QApplication.translate("MainWindow", text, None, QApplication.UnicodeUTF8)).toUtf8())

        elif isinstance(text, QString):

            return str(text.toUtf8())

 

 

DBManager = _DBManager('db.sqlite')

# -*- coding: utf-8 -*-

import dialogs

from database import DBManager

from PyQt4.QtCore import QObject, pyqtSlot, QStringList, QVariant, QString

from PyQt4.QtGui import QApplication

 

Dialogs = dialogs.JSDialogs

 

 

class JSConnector(QObject):

    @pyqtSlot(str, QVariant)

    def save(self, what, args):

        if what == 'district':

            print args

            name = args[0].toString()

            print "Название ", name

            data = args[1]

            #data[0] = str(data[0]).split(',')

            for x in data.toStringList():

                x = str(x).split(',')

                street = x.pop(0)

                print 'Улица: ', street

                for i in range(0, len(x)/2), 2:

                    print 'Дом: ',x[i],(' корпус: '+str(x[i+1]) if x[i+1] > 0 else '')

            #DBManager.addDistrict(str(data[0]))

 

    @pyqtSlot(str, QStringList)

    def saveDistrict(self, name, data):

        print  'Название округа: ',self.toUtf(name)

        id = DBManager.addDistrict(self.toUtf(name))

        for street_data in data:

            street_data = list(street_data.split(','))

            street_name = street_data.pop(0)

            street_id = DBManager.addStreet(self.toUtf(street_name))

            print 'Улица', self.toUtf(street_name)

            for i in range(0,len(street_data),2):

                DBManager.addHouseToStreet(street_id, id, (street_data[i], street_data[i+1]))

                print 'Дом: ',street_data[i], (u'Корпус ',street_data[i+1] if street_data[i+1] >0 else '')

 

    @pyqtSlot(result=QStringList)

    def getStreets(self):

        print DBManager.getStreets()

        return QStringList([str(x[0])+','+self.toUtf(x[1]) for x in DBManager.getStreets()])

 

    #@pyqtSlot(QString, QString, QString, QString, QString,QString, int, int, int, int, int, int, int, int, result=int)

    @pyqtSlot(int, result=int)

    #def addHuman(self, name, surname, patronymic, bday, gtel, mtel, sex, zbl, tbl, vt, uz, iov, uv, vvov):

    def addHuman(self, vvov):

        print vvov

        return 1#DBManager.addHuman(self.toUf(name), self.toUtf(surname), self.toUtf(patronymic), bday, gtel, mtel, sex, zbl, tbl, vt, uz, iov, uv, vvov)

 

 

    def toUtf(self, text):

        if isinstance(text, str):

            return str((QApplication.translate("MainWindow", text, None, QApplication.UnicodeUTF8)).toUtf8())

        elif isinstance(text, QString):

            return str(text.toUtf8())

 

# -*- coding: utf-8 -*-

import main

from PyQt4.QtGui import QApplication

from sys import argv, exit

 

 

def run():

    app = QApplication(argv)

    mW = main.MainWindow()

    mW.showMaximized()

    exit(app.exec_())

 

if __name__ == '__main__':

    run()

 

 

function addDistrict(){

    var id="#add-district";

    $(id).load('dialogs/add-district.html');

    $(id).dialog({

                              title:'Добавление: округ',

                              modal: true,

                              width: 550,

                              maxWidth:700,

                              height:490,

                              buttons: {

                                  "Добавить":function(){if(saveDistrict())$( this ).dialog( "close" )},

                                  "Отмена": function() {$( this ).dialog( "close" )}

                              }

                          });

}

 

function saveDistrict(){

    var data = [];

    var name = $('#district-name').val();

    var temp = [];

    var num, corp;

    if (!name || name == ''){

        //Error msg

        return false;

    }

    $('#streets-list-container .dialog-street-to-district').each(function(){

        temp = [$(this).children('.dialog-street-name').val(),[]];

        $(this).children('.streets-houses').children('.houses-table-container').children('.houses-table').children('tbody').children('.house-table-tr').each(function(){

            num = $(this).children('.house-num').children('.dialog-house-number').val()

            corp = $(this).children('.house-corp').children('.dialog-house-corpus').val()

            if (parseInt(num)) temp[1].push([num, (!parseInt(corp) ? 0 :  parseInt(corp))]);

        });

        data.push(temp);

    });

    App.saveDistrict(name, data);

    return true;

}

 

function addStreetRow(element){

    $('#streets-list-container').append($('<div class="dialog-street-to-district">\

                <input type="text" class="dialog-input dialog-street-name" placeholder="Наазвание улицы"><a href="#" onclick="$(this).next().toggle(111)">Дома</a>\

                <div class="streets-houses">\

                    <span class="dialog-p">Дома, входящие в округ\

                        <div class="add-btn-block" onclick="addHouseRow(this)">\

                            <img alt="Добавить" class="img-add" src="images/add.png">\

                        </div>\

                    </span>\

                    <div class="houses-table-container">\

                    <table class="dialogs-input-table houses-table">\

                        <tr>\

                            <th>Дом</th>\

                            <th>Корпус</th>\

                        </tr>\

                        <tr class="house-table-tr">\

                            <td class="house-table-td house-num"><input type="text" class="dialog-input dialog-house-number" size=4></td>\

                            <td class="house-table-td house-corp"><input type="text" class="dialog-input dialog-house-corpus" size=4></td>\

                        </tr>\

                    </table>\

                    </div>\

                </div>\

            </div>\

            </div>'))

}

 

 

function addHouseRow(element){

    var e = $('<tr></tr>').addClass('house-table-tr').html('<td class="house-table-td house-num"><input type="text" class="dialog-input dialog-house-number" size=4></td><td class="house-table-td house-corp"><input type="text" class="dialog-input dialog-house-corpus" size=4></td>');

Информация о работе Отчет по практике в МРОО «АВИП» Межрегиональная общественная организация «Ассоциация ветеранов, инвалидов и пенсионеров»