МИНИСТЕРСТВО ОБРАЗОВАНИЯ НАУКИ МОЛОДЕЖИ И СПОРТА УКРАИНЫ
НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ХПИ»
КУРСОВАЯ РАБОТА
По курсу информатики
Кафедра «Автомобиле- и тракторостроения»
Выполнил: ст. группы ТМ-71б
Дыга Вадим
Проверил: старший преподаватель
Андросенко Виталий Викторович
РЕФЕРАТ
Объект разработки – база данных для хранения дипломных проектов.
Цель работы – разработка базы данных на языке программирования Python.
Во время выполнения работы была разработана структура базы данных, были созданы окна включая технологию переходов, разработан внешний вид окон и в итоге была создана база данных в среде объектно-ориентированного программирования phyton.
База данных была экспериментально опробована, в результате чего было установлено, что существенных ошибок в коде программы не выявлено. Программа может быть успешно применена в работе стат. отделов ВУЗов.
Содержание:
-
Вступление
-
Структура б/д
-
Окна ввода-вывода информации
-
Технология переходов
-
Листинг с пояснениями
-
Специальное задание
-
Направления улучшения
-
Вывод
-
Список использованной литературы
Вступление
Актуальность хранения информации в электронном виде заключается в том, что бумажная документация имеет срок годности и портиться со временем. Для долгосрочного хранения информации гораздо удобнее использовать электронные базы данных.
К настоящему времени человечеством накоплено поистине гигантское количество информации об объектах и явлениях. Но эта информация не лежит мертвым грузом, она хранится в электронном виде и используется в базах данных. Базы данных – это часть информационных систем – программно-аппаратных комплексов, осуществляющих хранение и обработку огромных информационных массивов.
База данных представляет собой определенным образом структурированную совокупность данных, совместно хранящихся и обрабатывающихся в соответствии с некоторыми правилами. Как правило, база данных моделирует некоторую предметную область или ее фрагмент. Очень часто в качестве постоянного хранилища информации баз данных выступают файлы.
Программа, производящая манипуляции с информацией в базе данных, называется СУБД (система управления базами данных). Она может осуществлять выборки по различным критериям и выводить запрашиваемую информацию в том виде, который удобен пользователю. Основными составляющими информационных систем, построенных на основе баз данных, являются файлы БД, СУБД и программное обеспечение (клиентские приложения), позволяющие пользователю манипулировать информацией и совершать необходимые для решения его задач действия.
Информация, которая хранится в базе данных, может постоянно пополняться. От того, как часто это делается, зависит ее актуальность. Информацию об объектах также можно изменять и дополнять.
В нашем случае создана база данных для хранения дипломных проектов студентов всех факультетов, групп и специальностей. Для поиска дипломов разработана удобная технология переходов между окнами.
Структура базы данных
Исходя из задания была разработана база данных:
Рисунок 1 – Структура базы данных Base_stud.bso
Окна ввода/вывода информации
Окно «А»:
Окно «А» выполняет функции входа
Окно «В»:
В этом окне можно добавить диплом или открыть уже готовый. Так же можно настроить параметры шрифта и прочесть о готовой б/д.
Окно «С»:
Окно «С» служит для ввода всей информации о студенте, также здесь указуються пути к документу с текстом и папке с изображениями.
Окно «D»:
В окне «D» выполняется поиск записей по заданным параметрам
Окно «P»:
Окно «P» служит для вывода полной информации по студенту
Технология переходов
Листинг с пояснениями
osnovnoe okno.py
# -*- coding: utf-8 -*-
import Tkinter
import string
import tkMessageBox
import sys
import os
import New_Data
import Font
import Find_Data
import Copy_Rez
import O_Prog
import tkFont
class system:
def __init__(self, root, all_font):
self(root, all_font)
def __call__(self, root, all_font):
def font(event = None):
Font.font(root)
def VHOD (event = None):
if self.tip_dostupa == u"Студент":
B()
else:
pass
def B (even = None):
#if even == u"Студент":
def close_all_prevision(event = None):
try:
del (self.C.FRC)
print u"Окно С закрыто"
except: pass
try:
del(self.D.FRD)
print u"Окно D закрыто"
except:
pass
try:
del(self.E.FRE)
print u"Окно E закрыто"
except:
pass
try:
del(self.K)
print u"Окно K закрыто"
except:
pass
try:
del(self.O.FRO)
print u"Окно O закрыто"
except:
pass
#Создание окна "Новая запись"
def Window_C(event = None):
close_all_prevision()
self.C= New_Data.new_data(root,all_font)
#Создание окна "Найти запись"
def Window_D(event = None):
close_all_prevision()
self.D = Find_Data.find_data(root,all_font)
#Создание окна "Резервное копирование"
def Window_E (event = None):
close_all_prevision()
self.E = Copy_Rez.copy_rez(root,all_font)
#Создание окна "Шрифты"
def Window_K(event = None):
close_all_prevision()
self.K = Font.font(root,all_font)
def Window_O(event = None):
close_all_prevision()
self.O = O_Prog.o_prog(root,all_font)
FR.destroy()
root.geometry("1024x768+0+0")
root.update()
root.title(u"База данных дипломных робот студентов ТМ факультета")
Bar = Tkinter.Menu(root)
Bar ["font"] = all_font
Bar["tearoff"] = 0
Menu1 = Tkinter.Menu(Bar, tearoff = 0 , font = all_font)
Menu1.add_command(label = u"Новая запись", command = Window_C)
Menu1.add_command(label = u"Найти запись", command = Window_D)
Menu1.add_command(label = u"Резервное копирование", command = Window_E)
Menu1.add_command(label = u"Общая информация")
Menu1.add_separator()
Menu1.add_command(label = u"Выход", command=die)
Vid = Tkinter.Menu(Bar, tearoff = 0 , font = all_font)
Vid.add_command(label = u"Размер")
Vid.add_command(label = u"Шрифты",command = Window_K)
Prog = Tkinter.Menu(Bar, tearoff = 0 , font = all_font)
Prog.add_command(label = u"Помощь")
Prog.add_command(label = u"О программе", command = Window_O)
Bar.add_cascade(label = u"Управление базой", menu = Menu1)
Bar.add_cascade(label = u"Настройка вида", menu = Vid)
Bar.add_cascade(label = u"О программе", menu = Prog)
root.config(menu=Bar)
root.mainloop()
#else:
#pass
#Изминение состояния полей ввода и кнопок
def var123 (even = None):
if even == u"Студент":
Ent1["state"] = "disabled"
Ent2["state"] = "disabled"
But2["state"] = "normal"
else:
Ent1["state"] = "normal"
Ent2["state"] = "normal"
But2["state"] = "normal"
#Закрытие программы
def die(even = None):
response = tkMessageBox.askyesno(u"Важно!!!",u"Закрыть базу данных дипломных работ студентов ТМ-факультета?")
r = response
if r == 1:
sys.exit(0)
else:
responce.destroy()
FR = Tkinter.Frame(root)
FR["width"] = 250
FR["height"] = 300
FR.place(relx = 0.5, rely = 0.5, anchor = "center" )
FR["bg"] = "white"
FR ["bd"] = "4m"
FR["relief"] = "groove"
#Меню "Тип доступа"
def big(event = None):
MB_NEW["text"] = (NEW_text[event])
var123(NEW_text[event])
self.tip_dostupa = NEW_text[event]
MB_NEW = Tkinter.Menubutton(FR, relief = "raised", justify = "center")
MB_NEW.place(relx = 0.5, rely = 0.2, anchor = "center")
MB_NEW.menu = Tkinter.Menu(MB_NEW, tearoff = 0)
MB_NEW ["menu"] = MB_NEW.menu
MB_NEW ["bg"] = "grey"
MB_NEW ["activebackground"] = "white"
MB_NEW ["width"] = 20
NEW_text = [u"Администратор", u"Преподаватель", u"Студент"]
MB_NEW["text"] = (u"Тип доступа")
NEW = []
for i in NEW_text:
NEW.append(i+" "*(20-len(i)))
MB_NEW.menu.add("cascade", label = NEW[0], command = lambda m=0 :big(m))
MB_NEW.menu.add("cascade", label = NEW[1], command = lambda m=1 :big(m))
MB_NEW.menu.add("cascade", label = NEW[2], command = lambda m=2 :big(m))
#Поле ввода "Имя пользователя"
LaFR1 = Tkinter.LabelFrame(FR)
LaFR1["text"] = u"Имя пользователя"
LaFR1.place(relx = 0.5, rely = 0.4, anchor = "center")
Ent1 = Tkinter.Entry(LaFR1)
Ent1["width"] = 25
Ent1["state"] = "disabled"
Ent1.pack()
name = Ent1
#Поле ввода "Пароль"
LaFR2 = Tkinter.LabelFrame(FR)
LaFR2["text"] = u"Пароль"
LaFR2.place(relx = 0.5, rely = 0.55, anchor = "center")
Ent2 = Tkinter.Entry(LaFR2)
Ent2["width"] = 25
Ent2["state"] = "disabled"
Ent2 ["show"] = "*"
Ent2.pack()
parol = Ent2
#Кнопка "Вход"
But2 = Tkinter.Button(FR)
But2["bg"] = "white"
But2["bd"] = "1m"
But2["relief"] = "raised"
But2["text"] = u"Вход"
But2["state"] = "disabled"
But2.place(relx = 0.4, rely = 0.8, anchor = "center")
But2.bind("<Button-1>",VHOD)
But2.bind("<Return>", VHOD)
#Кнопка "Выход"
But1 = Tkinter.Button(FR)
But1["bg"] = "white"
But1["bd"] = "1m"
But1["relief"] = "raised"
But1.place(relx = 0.2, rely = 0.8, anchor = "center")
But1["text"] = u"Выход"
But1.bind("<Button-1>", die)
#Кнопка "Регистрация"
But3 = Tkinter.Button(FR)
But3["bg"] = "white"
But3["bd"] = "1m"
But3["relief"] = "raised"
But3.place(relx = 0.7, rely = 0.8, anchor = "center")
But3["text"] = u"Регистрация"
But3.bind("<Button-1>")
root.mainloop()
if __name__ == "__main__":
root = Tkinter.Tk()
vysota_vhod = root.winfo_screenheight()
shyrina_vhod = root.winfo_screenwidth()
x_vhod = (shyrina_vhod / 2) - 125
y_vhod = (vysota_vhod / 2) - 150
razm_x_y = "250x300+%s+%s"%(x_vhod,y_vhod)
root.geometry(razm_x_y)
root.title(u"Вход в базу данных дипломных проэктов
all_font = tkFont.Font()
all_font ["family"] = "Helvetica"
all_font ["size"] = 15
all_font ["weight"] = "normal"
system(root,all_font)