Курсовая работа (т): Разработка базы данных на языке программирования Python

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Разработка базы данных на языке программирования Python

Кафедра автомобиле- и тракторостроения









КУРСОВАЯ РАБОТА

По курсу информатики

На тему:

Разработка базы данных на языке программирования Python


РЕФЕРАТ

Объект разработки - база данных для хранения дипломных проектов.

Цель работы - разработка базы данных на языке программирования Python.

Во время выполнения работы была разработана структура базы данных, были созданы окна, включая технологию переходов, разработан внешний вид окон и в итоге была создана база данных в среде объектно-ориентированного программирования phyton.

База данных была экспериментально опробована, в результате чего было установлено, что существенных ошибок в коде программы не выявлено. Программа может быть успешно применена в работе стат. отделов ВУЗов.


Содержание:

Вступление

Структура б/д

Окна ввода-вывода информации

Технология переходов

Листинг с пояснениями

Специальное задание

Направления улучшения

Вывод

Список использованной литературы


Вступление

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

К настоящему времени человечеством накоплено поистине гигантское количество информации об объектах и явлениях. Но эта информация не лежит мертвым грузом, она хранится в электронном виде и используется в базах данных. Базы данных - это часть информационных систем - программно-аппаратных комплексов, осуществляющих хранение и обработку огромных информационных массивов.

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

Программа, производящая манипуляции с информацией в базе данных, называется СУБД (система управления базами данных). Она может осуществлять выборки по различным критериям и выводить запрашиваемую информацию в том виде, который удобен пользователю. Основными составляющими информационных систем, построенных на основе баз данных, являются файлы БД, СУБД и программное обеспечение (клиентские приложения), позволяющие пользователю манипулировать информацией и совершать необходимые для решения его задач действия.

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

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


Структура базы данных

Исходя из задания была разработана база данных:















Рисунок 1 - Структура базы данных Base_stud.bso

Окна ввода/вывода информации

Окно «А»

Окно «А» выполняет функции входа

Окно «В»

В этом окне можно добавить диплом или открыть уже готовый. Так же можно настроить параметры шрифта и прочесть о готовой б/д.

Окно «С»

Окно «С» служит для ввода всей информации о студенте, также здесь указуються пути к документу с текстом и папке с изображениями.

В окне «D» выполняется поиск записей по заданным параметрам

Окно «D»

Окно «P»

Окно «P» служит для вывода полной информации по студенту

Технология переходов



 

 


 


 


Листинг с пояснениями

база данный диплом python

osnovnoe okno.py

# -*- coding: utf-8 -*-TkinterstringtkMessageBoxsysosNew_DataFontFind_DataCopy_RezO_ProgtkFontsystem:__init__(self, root, all_font):(root, all_font)__call__(self, root, all_font):font(event = None):.font(root)VHOD (event = None):

if self.tip_dostupa == u"Студент":():B (even = None):

#if even == u"Студент":close_all_prevision(event = None)::(self.C.FRC)

print u"Окно С закрыто"

except: pass:(self.D.FRD)

print u"Окно D закрыто"

except::(self.E.FRE)

print u"Окно E закрыто"

except::(self.K)

print u"Окно K закрыто"

except::(self.O.FRO)

print u"Окно O закрыто":

#Создание окна "Новая запись"

#Создание окна "Найти запись"Window_D(event = None):

close_all_prevision().D = Find_Data.find_data(root,all_font)

#Создание окна "Резервное копирование"Window_E (event = None):

close_all_prevision().E = Copy_Rez.copy_rez(root,all_font)

#Создание окна "Шрифты"Window_K(event = None):_all_prevision().K = Font.font(root,all_font)Window_O(event = None):_all_prevision().O = O_Prog.o_prog(root,all_font).destroy().geometry("1024x768+0+0")

root.update().title(u"База данных дипломных робот студентов ТМ факультета")

Bar = Tkinter.Menu(root)["font"] = all_font["tearoff"] = 0= Tkinter.Menu(Bar, tearoff = 0 , font = all_font).add_command(label = u"Новая запись", command = Window_C).add_command(label = u"Найти запись", command = Window_D).add_command(label = u"Резервное копирование", command =

Window_E).add_command(label = u"Общая информация").add_separator().add_command(label = u"Выход", command=die)= Tkinter.Menu(Bar, tearoff = 0 , font = all_font).add_command(label = u"Размер").add_command(label = u"Шрифты",command = Window_K)= Tkinter.Menu(Bar, tearoff = 0 , font = all_font).add_command(label = u"Помощь").add_command(label = u"О программе", command = Window_O).add_cascade(label = u"Управление базой", menu = Menu1).add_cascade(label = u"Настройка вида", menu = Vid).add_cascade(label = u"О программе", menu = Prog).config(menu=Bar).mainloop()

#else:

#pass

#Изминение состояния полей ввода и кнопок

def var123 (even = None):even == u"Студент":["state"] = "disabled"["state"] = "disabled"["state"] = "normal":["state"] = "normal"["state"] = "normal"["state"] = "normal"

#Закрытие программыdie(even = None):= tkMessageBox.askyesno(u"Важно!!!",u"Закрыть базу данных

дипломных работ студентов ТМ-факультета?")

r = responser == 1:.exit(0):.destroy()= Tkinter.Frame(root)["width"] = 250["height"] = 300.place(relx = 0.5, rely = 0.5, anchor = "center" )["bg"] = "white"["bd"] = "4m"["relief"] = "groove"

#Меню "Тип доступа"big(event = None):_NEW["text"] = (NEW_text[event])(NEW_text[event]).tip_dostupa = NEW_text[event]_NEW = Tkinter.Menubutton(FR, relief = "raised", justify = "center")_NEW.place(relx = 0.5, rely = 0.2, anchor = "center")_NEW.menu = Tkinter.Menu(MB_NEW, tearoff = 0)_NEW ["menu"] = MB_NEW.menu_NEW ["bg"] = "grey"_NEW ["activebackground"] = "white"

MB_NEW ["width"] = 20_text = [u"Администратор", u"Преподаватель", u"Студент"]

MB_NEW["text"] = (u"Тип доступа")= []i in NEW_text:.append(i+" "*(20-len(i)))_NEW.menu.add("cascade", label = NEW[0], command = lambda m=0

:big(m))_NEW.menu.add("cascade", label = NEW[1], command = lambda m=1

:big(m))_NEW.menu.add("cascade", label = NEW[2], command = lambda m=2

:big(m))

#Поле ввода "Имя пользователя"= Tkinter.LabelFrame(FR)["text"] = u"Имя пользователя"

LaFR1.place(relx = 0.5, rely = 0.4, anchor = "center")= Tkinter.Entry(LaFR1)["width"] = 25["state"] = "disabled".pack()

name = Ent1

#Поле ввода "Пароль"

LaFR2 = Tkinter.LabelFrame(FR)["text"] = u"Пароль".place(relx = 0.5, rely = 0.55, anchor = "center")= Tkinter.Entry(LaFR2)["width"] = 25["state"] = "disabled"["show"] = "*".pack()= Ent2

#Кнопка "Вход"= Tkinter.Button(FR)["bg"] = "white"["bd"] = "1m"["relief"] = "raised"["text"] = u"Вход"["state"] = "disabled".place(relx = 0.4, rely = 0.8, anchor = "center").bind("<Button-1>",VHOD).bind("<Return>", VHOD)

#Кнопка "Выход"= Tkinter.Button(FR)["bg"] = "white"["bd"] = "1m"["relief"] = "raised".place(relx = 0.2, rely = 0.8, anchor = "center")["text"] = u"Выход".bind("<Button-1>", die)

#Кнопка "Регистрация"= Tkinter.Button(FR)["bg"] = "white"["bd"] = "1m"["relief"] = "raised".place(relx = 0.7, rely = 0.8, anchor = "center")["text"] = u"Регистрация".bind("<Button-1>").mainloop()__name__ == "__main__":= Tkinter.Tk()_vhod = root.winfo_screenheight()_vhod = root.winfo_screenwidth()_vhod = (shyrina_vhod / 2) - 125_vhod = (vysota_vhod / 2) - 150_x_y = "250x300+%s+%s"%(x_vhod,y_vhod).geometry(razm_x_y)

root.title(u"Вход в базу данных дипломных проэктов

all_font = tkFont.Font()_font ["family"] = "Helvetica"_font ["size"] = 15_font ["weight"] = "normal"(root,all_font)

New_Data.py

# -*- coding: cp1251 -*-TkinterScrolledTexttkFontosstringpickletkFileDialogImage

import ImageTk

#окно "С" - создание новой записи

class new_data:

def __init__(self, root,all_font):(root,all_font)__call__(self, root,all_font):New_dictonary(event = None):= {}= 0i in range(0,13):.Param_2[self.dosm[i]] = self.informatino[ss]= ss + 1type(self.informatino[ss]).Param_2["Theme"] = self.ST.get(index1 = 0.0,index2 = "end").Param_2["Stepen"] = self.stepen.Param_2["tabl"] = Ent15.get()

#print self.ST.get(index1 = 0.0,index2 = "end")

#************************************************************

*******************

#ПРОВЕРКА ПУТЕЙ:os.path.exists("C:\\TM_Base") == 1:.chdir("C:\\TM_Base"):.makedirs("C:\\TM_Base").chdir("C:\\TM_Base")()Sohranenie (event= None):Sohranenie_pict(event = None): #сохранение картинок.chdir(self.path_pict)os.listdir(self.path_pict)= os.listdir(self.path_pict)= ["C:\\TM_Base\\Spec\\" + self.key_key + "\\",'C:\\TM_Base\\Bakalavr\\'

+ self.key_key + '\\','C:\\TM_Base\\Magistr\\' + self.key_key + '\\']= u[event]i in t:.chdir(self.path_pict)_pict = open(i,"rb")= open_pict.read()_pict.close().chdir(u[event])_pict = open(i ,"wb")_pict.write(p)_pict.close()Sohranenie_text (event = None):= ["C:\\TM_Base\\Spec\\" + self.key_key + "\\",'C:\\TM_Base\\Bakalavr\\'

+ self.key_key + '\\','C:\\TM_Base\\Magistr\\' + self.key_key + '\\']= string.split(self.path_pdf,"/"):i in z:i.find(".docx") != -1:.pdf = iself.pdfi.find(".pdf") != -1:.pdf = iself.pdfi.find(".txt") != -1:.pdf = iself.pdfi.find(".doc") != -1:.pdf = iself.pdf:= len (self.path_pdf)= len (self.pdf)= h - j= self.path_pdf[0:l]N.chdir(N)_pdf = open(self.pdf,"rb")= open_pdf.read()_pdf.close().chdir(u[event])_pdf = open(self.pdf,"wb")_pdf.write(f)_pdf.close():_font = tkFont.Font()_font ["family"] = "Helvetica"_font ["size"] = 30_font ["weight"] = "bold"_font ["slant"] = "italic"= Tkinter.Label(self.FRC)

krasavchik["text"] = u"Не верный тип данных!\n Текстовый файл не

сохранен!!!"

krasavchik["font"] = krasavchik_font["bg"] = "red".place(relx = 0.5,rely = 0.6 , anchor = "center")create_folders (event = None):

#ПРОВЕРКА ПУТЕЙ К ПАПКЕ СПЕЦИАЛИСТ:

u =

[C:\\TM_Base\\Spec\\",'C:\\TM_Base\\Bakalavr\\,C:\\TM_Base\\Magistr\\]os.path.exists(u[event]) == 1:.chdir(u[event]):.makedirs(u[event]).chdir(u[event])_1 = self.Param_2.get("Name_S")_2 = self.Param_2.get("SName_S")_3 = self.Param_2.get("LName_S").key_key = key_2 +"_" + key_1 +"_" + key_3os.path.exists(u[event] + self.key_key + "\\") == 1:.chdir(u[event] + self.key_key + "\\").stud_file = open ("Base_stud.bso", "rb") #ОТКРЫВАЕМ ФАЙЛ С

ИНФ О СТУДЕНТЕ:.makedirs(u[event] + self.key_key).chdir(u[event] + self.key_key).stud_file = open ("Base_stud.bso", "wb") #ОТКРЫВАЕМ ФАЙЛ С

ИНФ О СТУДЕНТЕ:.dump(self.Param_2,self.stud_file):.stud_file.close().stud_file = open ("Base_stud.bso", "wb").dump(self.Param_2,self.stud_file).stud_file.close()_text(event)_pict(event)self.stepen == u"Специалист":_folders(0)self.stepen == u"Бакалавр":_folders(1):_folders(2)

#************************************************************

***********************************************************otmena(event = None):.FRC.destroy()

root.title(u"Cоздание новой записи")

#root.geometry("1024x768+0+0")Seve_inform(event = None):_get=[]i in Inform:i.get() == '':["bg"] = "red":["bg"] = "white"_get.append(i.get()).informatino = entry_getlen(entry_get) == 14:_dictonary()_font = tkFont.Font()_font ["family"] = "Helvetica"_font ["size"] = 30_font ["weight"] = "bold"_font ["slant"] = "italic"= Tkinter.Label(self.FRC)

krasavchik["text"] = u"Новая запись успешно добавлена"["font"] = krasavchik_font["bg"] = "yellow"

krasavchik.place(relx = 0.5,rely = 0.5 , anchor = "center")

else:

#Новая рамка для окна "С"

self.FRC = Tkinter.Frame(root).FRC["width"] = 1024.FRC["height"] = 768.FRC.place(relx = 0, rely = 0, anchor = "nw" )= [].dosm =

["Spec","Grup","Mark","God_1","Name_S","SName_S","LName_S","Nam

e_P","SName_P","LName_P","page","plac","pict","tabl"]

#Parametry = ["Специальность","Группа","Оценка","Год

защити","Имя","Фамилия","Отчество","Имя2","Фамилия2","Отчество2"

,"Тема дипломного проэкта","Количество страниц","Количество

плакатов","Количество рисунков","Количество таблиц"]

self.Param_2 =

{"Spec":u"","Grup":u"","Mark":"","God_1":"","Name_S":"","SName_S":"",

"LName_S":"","Name_P":"","SName_P":"","LName_P":"","page":"","plac"

:"","pict":"","tabl":u"попал ты чувак"}

LaFR4["text"] = u"Год защити"

LaFR4["font"] = all_font.place(relx = 0.5, rely = 0.03, anchor = "w")= Tkinter.Entry(LaFR4)["width"] = 10.append(Ent4).pack()= Tkinter.LabelFrame(self.FRC)["text"] = u"Степень"["font"] = all_font.place(relx = 0.66, rely = 0.03, anchor = "w")big(event = None):_NEW["text"] = (NEW_text[event]).stepen = MB_NEW["text"]

#self.Inform.append(MB_NEW["text"])_NEW = Tkinter.Menubutton(LaFR5, relief = "raised", justify =

"center")_NEW.menu = Tkinter.Menu(MB_NEW, tearoff = 0)_NEW ["menu"] = MB_NEW.menu_NEW ["bg"] = "grey"_NEW ["activebackground"] = "white"_NEW ["width"] = 15_text = [u"Специалист", u"Бакалавр", u"Магистр", u" Выбрать " ]

MB_NEW["text"] = (NEW_text[3])= []i in NEW_text:.append(i)_NEW.menu.add("cascade", label = NEW[0], command = lambda m=0

:big(m))_NEW.menu.add("cascade", label = NEW[1], command = lambda m=1

:big(m))_NEW.menu.add("cascade", label = NEW[2], command = lambda m=2

:big(m))

MB_NEW.pack()

#Создание полей ввода, вторая строка (Данные о студенте)

LaFR_Date_1 = Tkinter.LabelFrame(self.FRC)

LaFR_Date_1["text"] = u"Данные о студенте"

LaFR_Date_1["font"] = all_font_Date_1.place(relx = 0.01, rely = 0.12, anchor = "w")_Date_1["width"] = 924_Date_1["height"] = 85= Tkinter.LabelFrame(LaFR_Date_1)["text"] = u"Имя"["font"] = all_font.place(relx = 0.01, rely = 0.5 , anchor = "w")= Tkinter.Entry(LaFR6)["width"] = 40.append(Ent6).pack()= Tkinter.LabelFrame(LaFR_Date_1)["text"] = u"Фамилия"["font"] = all_font.place(relx = 0.5, rely = 0.5 , anchor = "center")= Tkinter.Entry(LaFR7)["width"] = 40.append(Ent7).pack()= Tkinter.LabelFrame(LaFR_Date_1)["text"] = u"Отчество"["font"] = all_font.place(relx = 0.99, rely = 0.5 , anchor = "e")= Tkinter.Entry(LaFR8)["width"] = 40.append(Ent8).pack()

#Создание полей ввода, третья строка (Данные о научном

руководителе)

LaFR_Date_2 = Tkinter.LabelFrame(self.FRC)

LaFR_Date_2["text"] = u"Данные о научном руководителе"

LaFR_Date_2["font"] = all_font_Date_2.place(relx = 0.01, rely = 0.25, anchor = "w")_Date_2["width"] = 924_Date_2["height"] = 85= Tkinter.LabelFrame(LaFR_Date_2)["text"] = u"Имя"["font"] = all_font.place(relx = 0.01, rely = 0.5 , anchor = "w")= Tkinter.Entry(LaFR9)["width"] = 40.append(Ent9).pack()= Tkinter.LabelFrame(LaFR_Date_2)["text"] = u"Фамилия"["font"] = all_font.place(relx = 0.5, rely = 0.5 , anchor = "center")= Tkinter.Entry(LaFR10)["width"] = 40.append(Ent10).pack()= Tkinter.LabelFrame(LaFR_Date_2)["text"] = u"Отчество"["font"] = all_font.place(relx = 0.99, rely = 0.5 , anchor = "e")= Tkinter.Entry(LaFR11)["width"] = 40.append(Ent11).pack()

#Поле ввода текста "Тема дипломного проэкта"

LaFR_Date_3 = Tkinter.LabelFrame(self.FRC)

LaFR_Date_3["text"] = u"Тема дипломного проэкта"

LaFR_Date_3["font"] = all_font_Date_3.place(relx = 0.01, rely = 0.32, anchor = "nw").ST =ScrolledText.ScrolledText(LaFR_Date_3,background="white").ST["width"] = 150.ST["height"] =7

#self.self.ND = ST.get()

#Inform.append(ST)

#mm = ST.get()

#print self.ND.ST.pack()

#Создание полей ввода, третья строка (Данные о дипломном проэкте)

LaFR_Date_4 = Tkinter.LabelFrame(self.FRC)

LaFR_Date_4["text"] = u"Данные о дипломном проэкте"

LaFR_Date_4["font"] = all_font_Date_4.place(relx = 0.01, rely = 0.55, anchor = "w")_Date_4["width"] = 924_Date_4["height"] = 90= Tkinter.LabelFrame(LaFR_Date_4)

LaFR12["text"] = u"Количество страниц"

LaFR12["font"] = all_font.place(relx = 0.01, rely = 0.5 , anchor = "w")= Tkinter.Entry(LaFR12)["width"] = 32

#Ent12 ["bd"] = 6.append(Ent12).pack()= Tkinter.LabelFrame(LaFR_Date_4)

LaFR13["text"] = u"Количество плакатов"

LaFR13["font"] = all_font.place(relx = 0.38, rely = 0.5 , anchor = "center")= Tkinter.Entry(LaFR13)["width"] = 32.append(Ent13).pack()= Tkinter.LabelFrame(LaFR_Date_4)

LaFR14["text"] = u"Количество рисунков"

LaFR14["font"] = all_font.place(relx = 0.52, rely = 0.5 , anchor = "w")= Tkinter.Entry(LaFR14)["width"] = 32.append(Ent14).pack()= Tkinter.LabelFrame(LaFR_Date_4)

LaFR15["text"] = u"Количество таблиц"

LaFR15["font"] = all_font.place(relx = 0.99, rely = 0.5 , anchor = "e")= Tkinter.Entry(LaFR15)["width"] = 32.append(Ent15).pack()

#Создание полей ввода пути к файлам

LaFR_Date_5 = Tkinter.LabelFrame(self.FRC)

LaFR_Date_5["text"] = u"Опредиление путей к файлам"

LaFR_Date_5["font"] = all_font_Date_5.place(relx = 0.01, rely = 0.63, anchor = "nw")_Date_5["width"] = 924_Date_5["height"] = 120path_pict(event = None):

M = u"Выберете папку с изображениями и нажмите ОК"

path1 = tkFileDialog.askdirectory(title=M)_label1 = Tkinter.Label(LaFR_Date_5)_label1.place(relx = 0.65, rely = 0.7, anchor = "center")_label1['borderwidth'] = 5_label1["font"] = all_font_label1["height"] = 2_label1["width"] = 40_label1['text'] = path1.path_pict = path1

def path_pdf():= u"Выберете файл с текстом"

path = tkFileDialog.askopenfilename(title=P)_label = Tkinter.Label(LaFR_Date_5)_label.place(relx = 0.65, rely = 0.25, anchor = "center")

#path_label["bg"] = "red"_label['borderwidth'] = 5_label["font"] = all_font_label["height"] = 2_label["width"] = 40_label['text'] = path.path_pdf = path

#Создание кнопок= Tkinter.Button(LaFR_Date_5)["bg"] = "white"["bd"] = "1m"["width"] = 30["font"] = all_font["relief"] = "raised".place(relx = 0.2, rely = 0.25, anchor = "center")

But3["text"] = u"Путь к документу с текстом"

But3["command"] = path_pdf= Tkinter.Button(LaFR_Date_5)["width"] = 30["bg"] = "white"["bd"] = "1m"["font"] = all_font["relief"] = "raised".place(relx = 0.2, rely = 0.7, anchor = "center")

But4["text"] = u"Путь к изображениям"

But4["command"] = path_pict= Tkinter.Button(self.FRC)["bg"] = "white"["bd"] = "1m"["font"] = all_font["relief"] = "raised".place(relx = 0.25, rely = 0.85, anchor = "center")["text"] = u"Отмена".bind("<Button-1>",otmena)= Tkinter.Button(self.FRC)["bg"] = "white"["font"] = all_font["bd"] = "1m"["relief"] = "raised".place(relx = 0.75, rely = 0.85, anchor = "center")["text"] = u"Сохранить".bind("<Button-1>", Seve_inform)__delattr__ (self, a):.FRC.destroy()

#print u"ok))))))))))))))))))"__name__ == "__main__":= Tkinter.Tk().geometry("1024x768+0+0")_font = tkFont.Font()_font ["family"] = "Helvetica"_font ["size"] = 14_font ["weight"] = "normal"_data(root,all_font).mainloop()

Find_Data.py

# -*- coding: cp1251 -*-TkinterScrolledTexttkFontosstringpickletkFileDialogImageImageTkpreview_find

Источник: https://www.bibliofond.ru/detail.aspx?id=787634