Отчет по практике в МРОО «АВИП» Межрегиональная общественная организация «Ассоциация ветеранов, инвалидов и пенсионеров»
Отчет по практике, 11 Апреля 2014, автор: пользователь скрыл имя
Краткое описание
В ходе прохождения практики были изучены вопросы техники безопасности, правильной организации рабочего программиста, изучены технологии разработки программного обеспечения в условиях реального предприятия и применяемое для этого программное обеспечение и среды разработки.
Были получены навыки работы с фреймворком 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.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- Лутц Марк. Изучаем Python, 4-е издание; изд. Символ-Плюс, 2011
- Бизли Дэвид. 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.js_dialogs = JSObjects.Dialogs()
self.js_connector = JSObjects.JSConnector()
self.setupUi()
self.webView.load(QtCore.QUrl(
self.setWindowTitle(self.
self.db = DBManager
a = self.db.getDistricts()
print a
def setupUi(self):
if self.objectName().isEmpty():
self.setObjectName(self.toUtf(
self.resize(800, 600)
self.webView = QtWebKit.QWebView(self)
self.webView.setObjectName("
self.setCentralWidget(self.
#self.webView.setUrl(QtCore.
self.webView.page().mainFrame(
self.webView.page().mainFrame(
@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("
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(
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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?)'
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("
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(
@pyqtSlot(str, QStringList)
def saveDistrict(self, name, data):
print 'Название округа: ',self.toUtf(name)
id = DBManager.addDistrict(self.
for street_data in data:
street_data = list(street_data.split(','))
street_name = street_data.pop(0)
street_id = DBManager.addStreet(self.
print 'Улица', self.toUtf(street_name)
for i in range(0,len(street_data),2):
DBManager.addHouseToStreet(
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])+','+
#@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.
def toUtf(self, text):
if isinstance(text, str):
return str((QApplication.translate("
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-
$(id).dialog({
title:'Добавление: округ',
modal: true,
width: 550,
maxWidth:700,
height:490,
buttons: {
}
});
}
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').
temp = [$(this).children('.dialog-
$(this).children('.streets-
num = $(this).children('.house-num')
corp = $(this).children('.house-corp'
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').
<input type="text" class="dialog-input dialog-street-name"
placeholder="Наазвание улицы"><a href="#"
onclick="$(this).next().
<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('