Разработка интеллектуальной системы подбора товара

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

?рс]. ? Режим доступа: www.citforum.ru/database/sqlbook/index.shtml/.

 

ПРИЛОЖЕНИЕ

 

Программный код файла qt

 

#!/usr/bin/python2.6

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

FROM __future__ IMPORT unicode_literalsplatformsysPyQt4 IMPORT QtCore, QtGuiresource_rcmodels IMPORT Category, ItemFormResult IMPORT FormResultFormTransactions IMPORT FormTransactionsFormCategories IMPORT FormCategoriesFormItem IMPORT FormItemFormCart IMPORT FormCartFormRules IMPORT FormRulesFormPopular IMPORT FormPopularFormSupp IMPORT FormSupp

__version__ = "1.0.0"Form(QtGui.QDialog):__init__(self, parent=NONE):(Form, self).__init__(parent)= QtGui.QAction(QtGui.QIcon(":/edit_add.png"), "&Добавить", self,=self.add_item)= QtGui.QAction(QtGui.QIcon(":/remove.png"), "&Удалить", self,=self.delete_item)=QtGui.QAction(QtGui.QIcon(":/category.png"), "&Категории", self,=self.show_categories)=QtGui.QAction(QtGui.QIcon(":/database.png"), "&Транзакции", self,=self.show_transactions)=QtGui.QAction(QtGui.QIcon(":/chart_bar.png"), "&Популярные товары", self,=self.show_popular)=QtGui.QAction(QtGui.QIcon(":/calculator.png"), "&Правила", self,=self.show_rules)=QtGui.QAction(QtGui.QIcon(":/cart2.png"), "&Корзина", self,=self.show_cart)=QtGui.QAction(QtGui.QIcon(":/refresh.png"), "&Товары", self,=self.show_items)=QtGui.QAction(QtGui.QIcon(":/help.png"),"&О программе", self,=self.help_about)= QtGui.QToolBar()

#QStyle.SH_TitleBar_NoBorder.addAction(addAction).addAction(delAction).addAction(categoryAction).addAction(TRANSACTION).addAction(popularAction).addAction(rulesAction).addAction(cartAction).addAction(itemsAction).addAction(aboutAction)

#init grid.tableWidget = QtGui.QTableWidget().refreshTable()= QtGui.QVBoxLayout().addWidget(toolBar).addWidget(self.tableWidget).setLayout(layout).connect(self.tableWidget,.SIGNAL("itemDoubleClicked(QTableWidgetItem*)"),.edit_item)

self.setWindowTitle(u"Apriori. Помощь в подборе товара при покупке")

self.setGeometry(250, 250, 950, 400)=QtGui.QDesktopWidget().screenGeometry()=self.geometry().move((screen.width()-size.width())/2,(screen.height()-size.height())/2)refreshTable(self):.tableWidget.clear().tableWidget.setSortingEnabled(True).tableWidget.setRowCount(0).tableWidget.enabledChange(False).tableWidget.setSelectionMode(QtGui.QAbstractItemView.SingleSelection); self.tableWidget.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows);.tableWidget.setEditTriggers(QtGui.QTableWidget.NoEditTriggers).tableWidget.setColumnCount(3).tableWidget.setHorizontalHeaderLabels(["№","Название",Категория]).tableWidget.setColumnWidth(0, 40).tableWidget.setColumnWidth(1, 400).tableWidget.setColumnWidth(2, 400)item in Item.get():=self.tableWidget.rowCount().tableWidget.insertRow(no).tableWidget.setItem(no, 0, QtGui.QTableWidgetItem(str(item.id))).tableWidget.setItem(no, 1, QtGui.QTableWidgetItem(item.name)).tableWidget.setItem(no, 2, QtGui.QTableWidgetItem(Category.get (item.category_id).get_name())).tableWidget.setRowHeight(no, 20)show_rules(self):= FormSupp()forms.exec_():=FormRules(minsupp=forms.minText.text().toInt()[0], maxsupp=forms.maxText.text().toInt()[0]).exec_()show_popular(self):= FormSupp()forms.exec_():=FormPopular(minsupp=forms.minText.text().toInt()[0], maxsupp=forms.maxText.text().toInt()[0]).exec_()show_cart(self):= FormCart().exec_()add_item(self):= FormItem().exec_().refreshTable()edit_item(self):= self.tableWidget.currentRow()no != -1:= self.tableWidget.item(no, 0).text()= FormItem(model=Item.get(id)).exec_().refreshTable()delete_item(self):= QtGui.QMessageBox.question(self,

"Удаление",

"Запись будет удалена! Вы уверены?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)

if reply == QtGui.QMessageBox.Yes:= self.tableWidget.currentRow()!= -1:= self.tableWidget.item(no, 0).text()(id=id).delete().refreshTable()show_items(self):= FormResult().exec_()show_transactions(self):= FormTransactions().exec_()show_categories(self):= FormCategories().exec_()help_about(self):.QMessageBox.about(self, "Apriori - О программе",

""" v {0}

© 2010, Евгений Лукашевский.

Все права защищены.

Python {1} - Qt {2} - PyQt {3} on {4}""".format(

__version__, platform.python_version(),.QT_VERSION_STR, QtCore.PYQT_VERSION_STR,

platform.system()))= QtGui.QApplication(sys.argv)= Form().show().exec_()

 

Программный код файла Models

+self.nameself.lvl==3:sub_category2.name+->+sub_category.name+->+self.nameget_parent_name(self):self.lvl==2:_category=Category.get(self.parent_id)sub_category.nameself.lvl==3:_category=Category.get(self.parent_id)_category2=Category.get(sub_category.parent_id)sub_category2.name+->+sub_category.name">ConfigParser, osautumn.db.connection IMPORT autumn_dbautumn.model IMPORT Modelautumn.db.relations IMPORT ForeignKey, OneToManyautumn IMPORT validatorsDATETIME= ConfigParser.ConfigParser().readfp(OPEN(app.cfg))_db.conn.connect(mysql, HOST=config.get(Database, host), \=config.get(Database, user), \=config.get(Database, db), \=config.get(Database, passwd), \=utf8)ORDER(Model):= OneToMany(OrderItem, order_id)Meta:= ordersOrderItem(Model):= ForeignKey(ORDER, order_id)Meta:= order_itemsItem(Model):Meta:= itemsCategory(Model):Meta:= categoriesget_name(self):self.lvl == 1:self.nameself.lvl == 2:_category = Category.get(self.parent_id)sub_category.name + -> + self.nameself.lvl == 3:sub_category2.name + -> + sub_category.name + -> + self.nameget_parent_name(self):self.lvl == 2:_category = Category.get(self.parent_id)sub_category.nameself.lvl == 3:_category = Category.get(self.parent_id)_category2 = Category.get(sub_category.parent_id)sub_category2.name + -> + sub_category.name

 

Программный код файла Apriori

 

-*- coding: utf-8 -*-models IMPORT ORDER, OrderItemApriori:__init__(self, minsupp=0, maxsupp=1000):.orders = NONE.items = NONE.max_items = 0.minsupp = minsupp.maxsupp = maxsupptransactions(self):

""" Формирование списка транзакций"""= []ORDER IN Order.get():

max_items:max_items=len(ORDER).max_items=max_itemsself.ordersitems_(self):={}self.orders==NONE:.transactions()ORDERINself.orders:itemINORDER:itemNOTINitems:[item]=1:[item]=items[item]+1self.itemscalc(self):self.items==NONE:.items_()={}=[][1]=[{elements:[d],cnt:n}FORd,nINself.items.iteritems()]NOINxrange(2,self.max_items):[NO]=self.Apriorigen(k[NO-1],self.orders,self.minsupp,self.maxsupp)=result+k[NO]resultApriorigen(self,DATA,orders,minsupp,maxsupp):">_items = []item IN order.items:.append(_items).orders = orders_items = 0ORDER IN orders:len(ORDER) > max_items: max_items = len(ORDER).max_items = max_itemsself.ordersitems_(self):= {}self.orders == NONE:.transactions()ORDER IN self.orders:item IN ORDER:item NOT IN items:[item] = 1:[item] = items[item] + 1self.itemscalc(self):self.items == NONE:.items_()= {}= [][1] = [{elements: [d], cnt: n} FOR d, n IN self.items.iteritems()]NO IN xrange(2, self.max_items):[NO] = self.Apriorigen(k[NO - 1], self.orders, self.minsupp, self.maxsupp)= result + k[NO]resultApriorigen(self, DATA, orders, minsupp, maxsupp):

""" Генерация k+1 элементных кандидатов.

Размер k определяется размером списка DATA

=minsuppANDline[cnt]= minsupp AND line[cnt] <= maxsupp]candidates_filterfind_supp(self, el, DATA):i IN DATA:el == i[elements]:i[cnt]0popular(self):= self.calc()= sorted(k, KEY = lambda X: -X[supp])items