0% found this document useful (0 votes)
147 views48 pages

"Sales and Inventory Management System": Bachelor of Computer Application (BCA)

The document is a summer internship report submitted by Ananya Ruhela to the Director of Computer Science and Technology (RDSO) in Lucknow, India in July 2019. The report discusses the development of a Sales and Inventory Management System. It provides an index, acknowledgements, abstract, background on RDSO, introduction to the existing and proposed systems, feasibility study, hardware and software requirements, objectives and user requirements of the proposed system. The report aims to develop a desktop application to manage inventory, sales, billing and address problems in direct sales and purchase management through an automated system.

Uploaded by

Ananya Ruhela
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
147 views48 pages

"Sales and Inventory Management System": Bachelor of Computer Application (BCA)

The document is a summer internship report submitted by Ananya Ruhela to the Director of Computer Science and Technology (RDSO) in Lucknow, India in July 2019. The report discusses the development of a Sales and Inventory Management System. It provides an index, acknowledgements, abstract, background on RDSO, introduction to the existing and proposed systems, feasibility study, hardware and software requirements, objectives and user requirements of the proposed system. The report aims to develop a desktop application to manage inventory, sales, billing and address problems in direct sales and purchase management through an automated system.

Uploaded by

Ananya Ruhela
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 48

Summer Internship Report

ON

“Sales and Inventory Management System”


Submitted in partial fulfillment of the

Requirements for the award of


the degree

Of

Bachelor of Computer Application (BCA)

Submitted by-
Ananya Ruhela
Submitted to-
DIRECTOR OF COMPUTER SCIENCE AND TECHNOLOGY (RDSO)

LUCKNOW- 226011,
U.P., INDIA
JULY-2019

1
INDEX

SR. NO. TABLE OF CONTENTS PAGE


NO.
I. ACKNOWLEDGEMENT 4
II. ABSTRACT 5
III. ABOUT RDSO 6
IV. INTRODUCTION 7-12
V. PROPOSED SYSTEM 13-15
VI. ANALYSIS AND DESIGN 16-17
VII. ER-DIAGRAM OF INVENTORY 18
SYSTEM
VIII. DATA FLOW DIAGRAM (DFD) 19
OF INVENTORY SYSTEM
IX. CODE IMPLEMENTATION 20-37
X. PROJECT SCREENSHOTS 38-41
XI. TEST PROCEDURES AND 42-46
IMPLEMENTATION
XII. PROPOSED ENHANCEMENTS 47
XIII. CONCLUSION 48
XIV. BIBLOGRAPHY 49

2
ACKNOWLEDGEMENT

I would like to express my special thanks of gratitude to Research Design and


Standards Organization (RDSO) and my faculty members of Computer Science
and Technology who gave me the golden opportunity to do this wonderful project
on the topic Sales & Inventory Management System, which also helped me in
doing a lot of research and I came to know about so many new things. I am really
thankful to them.

Secondly I would also like to thank my parents and friends who helped me a
lot in finalizing this project within a limited time frame and to Research Design
and Standards Organization for providing me an opportunity to undergo my
summer training under the department of research.

Further I would like to express my deep sense of gratitude to and for their
support, guidance and mentorship without which the completion of my project
would have been highly difficult.

3
ABSTRACT

This project is aimed at developing a desktop based application named Sales and
Inventory Management System for managing the inventory system of any
organization. This system can be used to store the details of the inventory, issuing
of products, sales details, bill generation. In this system we are solving different
problems affecting to direct sales management and purchase management.
Inventory Management System is also an important means of automatically
tracking large shipments. An automated Inventory Management System helps to
minimize the errors while recording the stock.

4
ABOUT RDSO

Railways were introduced in India in 1853 and as their development progressed


through to the twentieth century, several company managed and systems grew up.
To enforce standardization and co-ordination amongst various railway systems, the
Indian Railway Conference Association (IRCA) was set up in 1903, followed by
the Central Standards Office (CSO) in 1930, for preparation of designs, standards
and specifications. However, till independence, most of the designs and
manufacture of railway equipments was entrusted to foreign consultants. With
Independence and the resultant phenomenal increase in country’s industrial and
economic activity, which increased the demand of rail transportation - a new
organisation called Railway Testing and Research Centre (RTRC) was setup in
1952 at Lucknow, for testing and conducting applied research for development of
railway rolling stock, permanent way etc.

Central Standards Office (CSO) and the Railway Testing and Research Centre
(RTRC) were integrated into a single unit named Research Designs and
Standards Organisation (RDSO) in 1957, under Ministry of Railways at Lucknow.

5
Introduction
System Introduction
For optimal sales and inventory management processes, you need robust
functionality for managing your logistics facilities. Support for inventory
management helps you record and track materials on the basis of both quantity and
value.

Warehouse inventory management functions cover internal warehouse movements


and storage.

Using this software we can reduce costs for warehousing, transportation, order
fulfillment, and material handling – while improving customer service.

You can significantly improve inventory turns, optimize the flow of goods, and
shorten routes within your warehouse or distribution center. Additional benefits of
inventory management include improved cash flow, visibility, and decision
making.

This software is user friendly and hence easy to use.

Employees can plan, enter, and document warehouse and internal stock movements
by managing goods receipts, goods issues, storage, picking and packing, physical
stock transfers, and transfer postings.

6
Problems In existing system

As we know manual system are quite tedious ,time consuming and less efficient
and accurate in comparison to the computerized system.
So following are some disadvantages of the old system:

1. Time consuming

2. Less accurate

3. Less efficient

4. Lot of paper work

5. Slow data processing

6. Not user friendly environment

7. Difficult to keep old records

7
Scope of Proposed System

The scope of this system is to provide user efficient working environment and
more output can be generated through this. This system provides user friendly
interface resulting in knowing each and every usability features of the system.

This system helps in tracking records so that past records can be verified through
them and one can make decisions based on the past records. This system completes
the work in a very less time resulting in less time consumption and high level of
efficiency.

This system is developed in such a way that even a naïve user can also operate the
system easily. The calculations are made very quickly and the records are directly
saved into databases and the databases can be maintained for a longer period of
time. Each record can be retrieved and can be verified for the future transactions.

Also this system provides high level of security for data leaking as only admin
people can access the database no changes can be made in it until it verifies the
user login id and password.

We also have operator login through which operator can take orders but can’t make
changes in the database. Limited access is available to the operator.

8
Feasibility Study

As we know each and every project needs to have a feasibility study for the
complete understandability of the project. We will consider 3 types of feasibility
study they are technical feasibility, operational feasibility and economical
feasibility.

Technical Feasibility:
This new system requires 6 fully trained people to run the system perfectly.
1 admin person to maintain database n other 5 to handle the system interface and
order making things.
As our existing system is purely manual, so we need a onetime investment of Rs 4
Lacs for the purchase of 6 computers, 5 invoice printers, a laser printer, AC and
networking etc. It requires apprx. 10 Lacks PA as a operating cost.
With the above details our system is technically feasible as after investing 14 Lacs
in a year, the company is still saving Rs 15 Lacs PA.

Operational Feasibility:
The new solution is feasible in all sense but operationally it is not. The new
system demands the expulsion of at least 15 people from the company. It creates an
environment of joblessness and fear among the employees. It can lead to an
indefinite strike in the company also. So the management must take corrective
actions prior in advance in order to start the further proceedings.

Economic Feasibility:

9
With the manual system the operating cost of the system is about 60 Lacks
P.A. This cost comprises salary of 25 people, stationary, building rent, electricity,
water, telephone etc. But with the new system this reoccurring cost comes out to be
about 20 Lacks P.A. Hence the new system is economically feasible.

10
Operating Environment – Hardware and
Software

HARDWARE REQUIREMENTS

 Processor: Pentium 4 or more for optimum performance


 RAM: Recommended 256MB
 Hard Disk: Minimum 20GB

SOFTWARE REQUIREMENTS

 Operating System - Certified Distribution of WINDOW


 Python (Anaconda- Qt Designer)
 Database(Backend) - Sqlite3

11
Proposed System
Objectives

 The main objective of this system is to keep records of the complete


ordering and issuing of product available.

 It support for inventory management helps you record and track materials on
the basis of both quantity and value.

 It improves cash flow, visibility, and decision making.

 For warehouse management, you can track quantity and value of all your
materials, perform physical inventory, and optimize your warehouse
resources

12
User Requirements

FUNCTIONAL REQUIREMENTS

A. INPUT/OUTPUT

1. System shall have a form to accept the customer details.


2. System shall have a form to accept the Plant details.
3. System shall display transaction details.
4. System shall provide search facility on customer name, Order Placed,
date of order, date of order dispatch, date of transaction, transaction
amount, credit card no etc.
5. System should provide facility for change in address/name.
6. System should maintain the details about placing order/dispatch or order
i.e, order status

B. PROCESSING
1. System should automatically generate the bill.
2. System should inform the pending order and make changes if the order is
dispatched.

C. ERROR HANDLING
1. Should report any errors on duplicate primary keys.
2. Should report any ‘Out of Range’ values on numeric fields
3. Should report any data type mismatches any field on the forms.
4. Should report on any ‘Invalid dates’
5. Should report any violation of authorization of rights
13
6. Should report any Invalid Login errors

NON-FUNCTIONAL REQUIREMENTS

1. All user manuals should be provided in the necessary format


2. Application should support 5 simultaneous users.
3. Transaction should be completed within 1/5th of second
4. There will be backup procedure to maintain records.

14
ANALYSIS & DESIGN
Use case Diagram for Supplier

Login

Customer
Item Selection
Supplier

Invoice

15
Use Case Diagram for Customer

Studies
Requirements

Make list of requirements

Places the Order

Makes payment
Customer Clerk

Invoice

Send GRN

16
ER-DIAGRAM OF INVENTORY SYSTEM

INVALID

ENTER USERNAME VALID


SALES AND
ADMIN INVENTORY
LOGIN
AND PASSWORD

DB

17
DATA FLOW DIAGRAM OF INVENTORY SYSTEM

CUSTOMER MANAGEMENT
CUSTOMER
SALES AND
ORDER
INVENTORY
REPORTS MANAGEMENT
MONITORIN-
RECIEPT G SYSTEM

DELIVERY

FUEL ORDER

SUPPLIER

18
CODE IMPLEMENTATION

/
******************************************************************************
**

** Form generated from reading UI file 'WelcomePageHp6212.ui'

**

** Created by: Qt User Interface Compiler version 5.9.6

**

** WARNING! All changes made in this file will be lost when recompiling UI file!

******************************************************************************
**/

#ifndef WELCOMEPAGEHP6212_H

#define WELCOMEPAGEHP6212_H

#include <QtCore/QVariant>

#include <QtWidgets/QAction>

#include <QtWidgets/QApplication>

#include <QtWidgets/QButtonGroup>

#include <QtWidgets/QFrame>

#include <QtWidgets/QHeaderView>

#include <QtWidgets/QLabel>

#include <QtWidgets/QMainWindow>

#include <QtWidgets/QMenuBar>

19
#include <QtWidgets/QStatusBar>

#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_MainWindow

public:

QWidget *centralwidget;

QLabel *label;

QFrame *frame;

QLabel *label_3;

QLabel *label_2;

QLabel *label_6;

QLabel *label_4;

QMenuBar *menubar;

QStatusBar *statusbar;

void setupUi(QMainWindow *MainWindow)

if (MainWindow->objectName().isEmpty())

MainWindow->setObjectName(QStringLiteral("MainWindow"));

MainWindow->resize(789, 611);

MainWindow->setLayoutDirection(Qt::LeftToRight);

centralwidget = new QWidget(MainWindow);

20
centralwidget->setObjectName(QStringLiteral("centralwidget"));

label = new QLabel(centralwidget);

label->setObjectName(QStringLiteral("label"));

label->setGeometry(QRect(0, -50, 801, 221));

QFont font;

font.setFamily(QStringLiteral("Monotype Corsiva"));

font.setPointSize(36);

font.setItalic(true);

label->setFont(font);

frame = new QFrame(centralwidget);

frame->setObjectName(QStringLiteral("frame"));

frame->setGeometry(QRect(70, 340, 120, 80));

frame->setFrameShape(QFrame::StyledPanel);

frame->setFrameShadow(QFrame::Raised);

label_3 = new QLabel(centralwidget);

label_3->setObjectName(QStringLiteral("label_3"));

label_3->setGeometry(QRect(-20, 450, 821, 81));

QFont font1;

font1.setPointSize(22);

font1.setBold(false);

font1.setWeight(50);

label_3->setFont(font1);

label_2 = new QLabel(centralwidget);

label_2->setObjectName(QStringLiteral("label_2"));

label_2->setGeometry(QRect(150, 510, 631, 41));

21
QFont font2;

font2.setPointSize(22);

label_2->setFont(font2);

label_6 = new QLabel(centralwidget);

label_6->setObjectName(QStringLiteral("label_6"));

label_6->setGeometry(QRect(10, 100, 761, 271));

label_6->setAutoFillBackground(false);

label_6->setPixmap(QPixmap(QString::fromUtf8(":/icon/Desktop/e3.png")));

label_4 = new QLabel(centralwidget);

label_4->setObjectName(QStringLiteral("label_4"));

label_4->setGeometry(QRect(370, 370, 401, 61));

QFont font3;

font3.setFamily(QStringLiteral("Modern No. 20"));

font3.setPointSize(18);

label_4->setFont(font3);

MainWindow->setCentralWidget(centralwidget);

menubar = new QMenuBar(MainWindow);

menubar->setObjectName(QStringLiteral("menubar"));

menubar->setGeometry(QRect(0, 0, 789, 21));

MainWindow->setMenuBar(menubar);

statusbar = new QStatusBar(MainWindow);

statusbar->setObjectName(QStringLiteral("statusbar"));

MainWindow->setStatusBar(statusbar);

retranslateUi(MainWindow);

22
QMetaObject::connectSlotsByName(MainWindow);

} // setupUi

void retranslateUi(QMainWindow *MainWindow)

MainWindow->setWindowTitle(QApplication::translate("MainWindow", "inventory.ui",
Q_NULLPTR));

label->setText(QApplication::translate("MainWindow", " Welcome To The Online


Inventory Store", Q_NULLPTR));

label_3->setText(QApplication::translate("MainWindow", " Huge Discounts on


Electronic Gadgets like mobilephones", Q_NULLPTR));

label_2->setText(QApplication::translate("MainWindow", "laptops hard drives headphones


etc", Q_NULLPTR));

label_6->setText(QString());

label_4->setText(QApplication::translate("MainWindow", "Smart technologies with top


brands", Q_NULLPTR));

} // retranslateUi

};

namespace Ui {

class MainWindow: public Ui_MainWindow {};

} // namespace Ui

QT_END_NAMESPACE

23
#endif // WELCOMEPAGEHP6212_H

#ifndef LOGINFX6212_H
#define LOGINFX6212_H

#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_MainWindow
{
public:
QWidget *centralwidget;
QLabel *label;
QLabel *label_2;
QLabel *label_3;
QLineEdit *lineEdit;
QLabel *label_4;
QLineEdit *lineEdit_2;
QPushButton *pushButton;
QPushButton *pushButton_2;
QMenuBar *menubar;
QStatusBar *statusbar;

void setupUi(QMainWindow *MainWindow)


{
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QStringLiteral("MainWindow"));
MainWindow->resize(800, 600);
centralwidget = new QWidget(MainWindow);
centralwidget->setObjectName(QStringLiteral("centralwidget"));
label = new QLabel(centralwidget);
label->setObjectName(QStringLiteral("label"));
label->setGeometry(QRect(0, -20, 801, 611));

24
label->setPixmap(QPixmap(QString::fromUtf8(":/icon/Desktop/image1.jpg")));
label->setScaledContents(true);
label_2 = new QLabel(centralwidget);
label_2->setObjectName(QStringLiteral("label_2"));
label_2->setGeometry(QRect(230, 20, 451, 131));
QFont font;
font.setFamily(QStringLiteral("Segoe Print"));
font.setPointSize(36);
font.setBold(true);
font.setItalic(false);
font.setWeight(75);
label_2->setFont(font);
label_3 = new QLabel(centralwidget);
label_3->setObjectName(QStringLiteral("label_3"));
label_3->setGeometry(QRect(120, 190, 151, 151));
label_3->setPixmap(QPixmap(QString::fromUtf8(":/icon/Desktop/user.svg")));
label_3->setScaledContents(true);
lineEdit = new QLineEdit(centralwidget);
lineEdit->setObjectName(QStringLiteral("lineEdit"));
lineEdit->setGeometry(QRect(360, 240, 391, 61));
QFont font1;
font1.setPointSize(24);
lineEdit->setFont(font1);
label_4 = new QLabel(centralwidget);
label_4->setObjectName(QStringLiteral("label_4"));
label_4->setGeometry(QRect(110, 370, 171, 171));
label_4->setPixmap(QPixmap(QString::fromUtf8(":/icon/Desktop/passicon.ico")));
label_4->setScaledContents(true);
lineEdit_2 = new QLineEdit(centralwidget);
lineEdit_2->setObjectName(QStringLiteral("lineEdit_2"));
lineEdit_2->setGeometry(QRect(362, 450, 381, 51));
lineEdit_2->setFont(font1);
pushButton = new QPushButton(centralwidget);
pushButton->setObjectName(QStringLiteral("pushButton"));
pushButton->setGeometry(QRect(630, 30, 161, 31));
QFont font2;
font2.setPointSize(11);
pushButton->setFont(font2);
pushButton_2 = new QPushButton(centralwidget);
pushButton_2->setObjectName(QStringLiteral("pushButton_2"));
pushButton_2->setGeometry(QRect(630, 80, 161, 31));
pushButton_2->setFont(font2);
MainWindow->setCentralWidget(centralwidget);
menubar = new QMenuBar(MainWindow);
menubar->setObjectName(QStringLiteral("menubar"));
menubar->setGeometry(QRect(0, 0, 800, 21));

25
MainWindow->setMenuBar(menubar);
statusbar = new QStatusBar(MainWindow);
statusbar->setObjectName(QStringLiteral("statusbar"));
MainWindow->setStatusBar(statusbar);

retranslateUi(MainWindow);

QMetaObject::connectSlotsByName(MainWindow);
} // setupUi

void retranslateUi(QMainWindow *MainWindow)


{
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow",
Q_NULLPTR));
label->setText(QString());
label_2->setText(QApplication::translate("MainWindow", "User Login", Q_NULLPTR));
label_3->setText(QString());
lineEdit->setPlaceholderText(QApplication::translate("MainWindow", "Enter LoginID",
Q_NULLPTR));
label_4->setText(QString());
lineEdit_2->setPlaceholderText(QApplication::translate("MainWindow", "Password",
Q_NULLPTR));
pushButton->setText(QApplication::translate("MainWindow", "Forgot Password?",
Q_NULLPTR));
pushButton_2->setText(QApplication::translate("MainWindow", "Create new account",
Q_NULLPTR));
} // retranslateUi

};

namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace Ui

QT_END_NAMESPACE

#endif // LOGINFX6212_H

#ifndef PRODUCTDETAILSSV6212_H
#define PRODUCTDETAILSSV6212_H

#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>

26
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_MainWindow
{
public:
QWidget *centralwidget;
QLabel *label;
QLabel *label_2;
QLabel *label_3;
QLabel *label_4;
QLineEdit *lineEdit_2;
QLineEdit *lineEdit;
QLabel *label_5;
QLineEdit *lineEdit_3;
QLineEdit *lineEdit_4;
QLabel *label_6;
QPushButton *pushButton;
QMenuBar *menubar;
QStatusBar *statusbar;

void setupUi(QMainWindow *MainWindow)


{
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QStringLiteral("MainWindow"));
MainWindow->resize(800, 1143);
centralwidget = new QWidget(MainWindow);
centralwidget->setObjectName(QStringLiteral("centralwidget"));
label = new QLabel(centralwidget);
label->setObjectName(QStringLiteral("label"));
label->setGeometry(QRect(0, -10, 801, 631));
label->setPixmap(QPixmap(QString::fromUtf8(":/icon3/image.jpg")));
label->setScaledContents(true);
label_2 = new QLabel(centralwidget);
label_2->setObjectName(QStringLiteral("label_2"));
label_2->setGeometry(QRect(470, 70, 421, 61));
QFont font;
font.setFamily(QStringLiteral("Sitka Small"));

27
font.setPointSize(28);
label_2->setFont(font);
label_2->setStyleSheet(QStringLiteral(""));
label_2->setFrameShadow(QFrame::Plain);
label_3 = new QLabel(centralwidget);
label_3->setObjectName(QStringLiteral("label_3"));
label_3->setGeometry(QRect(450, 170, 121, 31));
QFont font1;
font1.setFamily(QStringLiteral("Leelawadee UI"));
font1.setPointSize(12);
label_3->setFont(font1);
label_4 = new QLabel(centralwidget);
label_4->setObjectName(QStringLiteral("label_4"));
label_4->setGeometry(QRect(450, 230, 131, 61));
label_4->setFont(font1);
lineEdit_2 = new QLineEdit(centralwidget);
lineEdit_2->setObjectName(QStringLiteral("lineEdit_2"));
lineEdit_2->setGeometry(QRect(600, 250, 191, 31));
lineEdit_2->setFont(font1);
lineEdit = new QLineEdit(centralwidget);
lineEdit->setObjectName(QStringLiteral("lineEdit"));
lineEdit->setGeometry(QRect(600, 180, 191, 31));
lineEdit->setFont(font1);
label_5 = new QLabel(centralwidget);
label_5->setObjectName(QStringLiteral("label_5"));
label_5->setGeometry(QRect(450, 310, 141, 61));
label_5->setFont(font1);
lineEdit_3 = new QLineEdit(centralwidget);
lineEdit_3->setObjectName(QStringLiteral("lineEdit_3"));
lineEdit_3->setGeometry(QRect(600, 330, 191, 31));
lineEdit_3->setFont(font1);
lineEdit_4 = new QLineEdit(centralwidget);
lineEdit_4->setObjectName(QStringLiteral("lineEdit_4"));
lineEdit_4->setGeometry(QRect(600, 410, 191, 31));
lineEdit_4->setFont(font1);
label_6 = new QLabel(centralwidget);
label_6->setObjectName(QStringLiteral("label_6"));
label_6->setGeometry(QRect(450, 380, 121, 81));
label_6->setFont(font1);
pushButton = new QPushButton(centralwidget);
pushButton->setObjectName(QStringLiteral("pushButton"));
pushButton->setGeometry(QRect(644, 500, 131, 41));
QFont font2;
font2.setFamily(QStringLiteral("MS Reference Sans Serif"));
font2.setPointSize(14);
font2.setBold(false);

28
font2.setWeight(50);
pushButton->setFont(font2);
MainWindow->setCentralWidget(centralwidget);
menubar = new QMenuBar(MainWindow);
menubar->setObjectName(QStringLiteral("menubar"));
menubar->setGeometry(QRect(0, 0, 800, 21));
MainWindow->setMenuBar(menubar);
statusbar = new QStatusBar(MainWindow);
statusbar->setObjectName(QStringLiteral("statusbar"));
MainWindow->setStatusBar(statusbar);

retranslateUi(MainWindow);

QMetaObject::connectSlotsByName(MainWindow);
} // setupUi

void retranslateUi(QMainWindow *MainWindow)


{
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow",
Q_NULLPTR));
label->setText(QString());
label_2->setText(QApplication::translate("MainWindow", "Product Details:", Q_NULLPTR));
label_3->setText(QApplication::translate("MainWindow", "Category:", Q_NULLPTR));
label_4->setText(QApplication::translate("MainWindow", "Gadget ID:", Q_NULLPTR));
label_5->setText(QApplication::translate("MainWindow", "Ordered Date:", Q_NULLPTR));
lineEdit_3->setPlaceholderText(QApplication::translate("MainWindow", "dd-mm-yy",
Q_NULLPTR));
lineEdit_4->setPlaceholderText(QApplication::translate("MainWindow", "dd-mm-yy",
Q_NULLPTR));
label_6->setText(QApplication::translate("MainWindow", "Issued Date:", Q_NULLPTR));
pushButton->setText(QApplication::translate("MainWindow", "Proceed-->", Q_NULLPTR));
} // retranslateUi

};

namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace Ui

QT_END_NAMESPACE

#endif // PRODUCTDETAILSSV6212_H

#ifndef INVOICEBG6212_H
#define INVOICEBG6212_H

29
#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QLabel>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QTableWidget>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_MainWindow
{
public:
QWidget *centralwidget;
QLabel *label;
QLabel *label_2;
QTableWidget *tableWidget;
QMenuBar *menubar;
QStatusBar *statusbar;

void setupUi(QMainWindow *MainWindow)


{
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QStringLiteral("MainWindow"));
MainWindow->resize(800, 610);
centralwidget = new QWidget(MainWindow);
centralwidget->setObjectName(QStringLiteral("centralwidget"));
label = new QLabel(centralwidget);
label->setObjectName(QStringLiteral("label"));
label->setGeometry(QRect(0, 0, 801, 581));
label->setPixmap(QPixmap(QString::fromUtf8(":/icon/Desktop/bckgd.jpg")));
label->setScaledContents(true);
label_2 = new QLabel(centralwidget);
label_2->setObjectName(QStringLiteral("label_2"));
label_2->setGeometry(QRect(170, 0, 511, 91));
QFont font;
font.setFamily(QStringLiteral("OCR A Extended"));
font.setPointSize(36);
label_2->setFont(font);
tableWidget = new QTableWidget(centralwidget);
if (tableWidget->columnCount() < 5)

30
tableWidget->setColumnCount(5);
QFont font1;
font1.setFamily(QStringLiteral("Segoe UI"));
font1.setPointSize(10);
font1.setBold(true);
font1.setItalic(true);
font1.setWeight(75);
QTableWidgetItem *__qtablewidgetitem = new QTableWidgetItem();
__qtablewidgetitem->setFont(font1);
tableWidget->setHorizontalHeaderItem(0, __qtablewidgetitem);
QFont font2;
font2.setFamily(QStringLiteral("Segoe UI"));
font2.setPointSize(11);
font2.setBold(true);
font2.setItalic(true);
font2.setWeight(75);
QTableWidgetItem *__qtablewidgetitem1 = new QTableWidgetItem();
__qtablewidgetitem1->setFont(font2);
tableWidget->setHorizontalHeaderItem(1, __qtablewidgetitem1);
QTableWidgetItem *__qtablewidgetitem2 = new QTableWidgetItem();
__qtablewidgetitem2->setFont(font2);
tableWidget->setHorizontalHeaderItem(2, __qtablewidgetitem2);
QTableWidgetItem *__qtablewidgetitem3 = new QTableWidgetItem();
__qtablewidgetitem3->setFont(font2);
tableWidget->setHorizontalHeaderItem(3, __qtablewidgetitem3);
QTableWidgetItem *__qtablewidgetitem4 = new QTableWidgetItem();
__qtablewidgetitem4->setFont(font2);
tableWidget->setHorizontalHeaderItem(4, __qtablewidgetitem4);
if (tableWidget->rowCount() < 14)
tableWidget->setRowCount(14);
QFont font3;
font3.setPointSize(11);
font3.setItalic(false);
QTableWidgetItem *__qtablewidgetitem5 = new QTableWidgetItem();
__qtablewidgetitem5->setFont(font3);
tableWidget->setVerticalHeaderItem(0, __qtablewidgetitem5);
QFont font4;
font4.setPointSize(11);
QTableWidgetItem *__qtablewidgetitem6 = new QTableWidgetItem();
__qtablewidgetitem6->setFont(font4);
tableWidget->setVerticalHeaderItem(1, __qtablewidgetitem6);
QTableWidgetItem *__qtablewidgetitem7 = new QTableWidgetItem();
__qtablewidgetitem7->setFont(font4);
tableWidget->setVerticalHeaderItem(2, __qtablewidgetitem7);
QTableWidgetItem *__qtablewidgetitem8 = new QTableWidgetItem();
__qtablewidgetitem8->setFont(font4);

31
tableWidget->setVerticalHeaderItem(3, __qtablewidgetitem8);
QTableWidgetItem *__qtablewidgetitem9 = new QTableWidgetItem();
__qtablewidgetitem9->setFont(font4);
tableWidget->setVerticalHeaderItem(4, __qtablewidgetitem9);
QTableWidgetItem *__qtablewidgetitem10 = new QTableWidgetItem();
__qtablewidgetitem10->setFont(font4);
tableWidget->setVerticalHeaderItem(5, __qtablewidgetitem10);
QTableWidgetItem *__qtablewidgetitem11 = new QTableWidgetItem();
__qtablewidgetitem11->setFont(font4);
tableWidget->setVerticalHeaderItem(6, __qtablewidgetitem11);
QTableWidgetItem *__qtablewidgetitem12 = new QTableWidgetItem();
__qtablewidgetitem12->setFont(font4);
tableWidget->setVerticalHeaderItem(7, __qtablewidgetitem12);
QTableWidgetItem *__qtablewidgetitem13 = new QTableWidgetItem();
__qtablewidgetitem13->setFont(font4);
tableWidget->setVerticalHeaderItem(8, __qtablewidgetitem13);
QTableWidgetItem *__qtablewidgetitem14 = new QTableWidgetItem();
__qtablewidgetitem14->setFont(font4);
tableWidget->setVerticalHeaderItem(9, __qtablewidgetitem14);
QTableWidgetItem *__qtablewidgetitem15 = new QTableWidgetItem();
__qtablewidgetitem15->setFont(font4);
tableWidget->setVerticalHeaderItem(10, __qtablewidgetitem15);
QTableWidgetItem *__qtablewidgetitem16 = new QTableWidgetItem();
__qtablewidgetitem16->setFont(font4);
tableWidget->setVerticalHeaderItem(11, __qtablewidgetitem16);
QTableWidgetItem *__qtablewidgetitem17 = new QTableWidgetItem();
__qtablewidgetitem17->setFont(font4);
tableWidget->setVerticalHeaderItem(12, __qtablewidgetitem17);
QTableWidgetItem *__qtablewidgetitem18 = new QTableWidgetItem();
__qtablewidgetitem18->setFont(font4);
tableWidget->setVerticalHeaderItem(13, __qtablewidgetitem18);
tableWidget->setObjectName(QStringLiteral("tableWidget"));
tableWidget->setGeometry(QRect(150, 140, 521, 391));
QFont font5;
font5.setPointSize(10);
tableWidget->setFont(font5);
MainWindow->setCentralWidget(centralwidget);
menubar = new QMenuBar(MainWindow);
menubar->setObjectName(QStringLiteral("menubar"));
menubar->setGeometry(QRect(0, 0, 800, 21));
MainWindow->setMenuBar(menubar);
statusbar = new QStatusBar(MainWindow);
statusbar->setObjectName(QStringLiteral("statusbar"));
MainWindow->setStatusBar(statusbar);

retranslateUi(MainWindow);

32
QMetaObject::connectSlotsByName(MainWindow);
} // setupUi

void retranslateUi(QMainWindow *MainWindow)


{
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow",
Q_NULLPTR));
label->setText(QString());
label_2->setText(QApplication::translate("MainWindow", "Invoice Statement", Q_NULLPTR));
QTableWidgetItem *___qtablewidgetitem = tableWidget->horizontalHeaderItem(0);
___qtablewidgetitem->setText(QApplication::translate("MainWindow", "Gadget Name",
Q_NULLPTR));
QTableWidgetItem *___qtablewidgetitem1 = tableWidget->horizontalHeaderItem(1);
___qtablewidgetitem1->setText(QApplication::translate("MainWindow", "GadgetID",
Q_NULLPTR));
QTableWidgetItem *___qtablewidgetitem2 = tableWidget->horizontalHeaderItem(2);
___qtablewidgetitem2->setText(QApplication::translate("MainWindow", "Net Quantity",
Q_NULLPTR));
QTableWidgetItem *___qtablewidgetitem3 = tableWidget->horizontalHeaderItem(3);
___qtablewidgetitem3->setText(QApplication::translate("MainWindow", "Net Price",
Q_NULLPTR));
QTableWidgetItem *___qtablewidgetitem4 = tableWidget->horizontalHeaderItem(4);
___qtablewidgetitem4->setText(QApplication::translate("MainWindow", "Total",
Q_NULLPTR));
} // retranslateUi

};

namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace Ui

QT_END_NAMESPACE

#endif // INVOICEBG6212_H

#ifndef ENDVZ6212_H
#define ENDVZ6212_H

#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QHeaderView>

33
#include <QtWidgets/QLabel>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_MainWindow
{
public:
QWidget *centralwidget;
QLabel *label;
QLabel *label_2;
QLabel *label_3;
QMenuBar *menubar;
QStatusBar *statusbar;

void setupUi(QMainWindow *MainWindow)


{
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QStringLiteral("MainWindow"));
MainWindow->resize(800, 600);
centralwidget = new QWidget(MainWindow);
centralwidget->setObjectName(QStringLiteral("centralwidget"));
label = new QLabel(centralwidget);
label->setObjectName(QStringLiteral("label"));
label->setGeometry(QRect(0, -8, 811, 641));
label->setPixmap(QPixmap(QString::fromUtf8(":/icon/Desktop/bg.jpg")));
label->setScaledContents(true);
label_2 = new QLabel(centralwidget);
label_2->setObjectName(QStringLiteral("label_2"));
label_2->setGeometry(QRect(100, 60, 671, 231));
QFont font;
font.setFamily(QStringLiteral("Rockwell"));
font.setPointSize(36);
font.setItalic(true);
label_2->setFont(font);
label_3 = new QLabel(centralwidget);
label_3->setObjectName(QStringLiteral("label_3"));
label_3->setGeometry(QRect(170, 490, 531, 71));
QFont font1;
font1.setFamily(QStringLiteral("Ravie"));
font1.setPointSize(18);
label_3->setFont(font1);
MainWindow->setCentralWidget(centralwidget);

34
menubar = new QMenuBar(MainWindow);
menubar->setObjectName(QStringLiteral("menubar"));
menubar->setGeometry(QRect(0, 0, 800, 21));
MainWindow->setMenuBar(menubar);
statusbar = new QStatusBar(MainWindow);
statusbar->setObjectName(QStringLiteral("statusbar"));
MainWindow->setStatusBar(statusbar);

retranslateUi(MainWindow);

QMetaObject::connectSlotsByName(MainWindow);
} // setupUi

void retranslateUi(QMainWindow *MainWindow)


{
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow",
Q_NULLPTR));
label->setText(QString());
label_2->setText(QApplication::translate("MainWindow", "Ordered Placed Successfully!!!",
Q_NULLPTR));
label_3->setText(QApplication::translate("MainWindow", "***Thanks for placing order***",
Q_NULLPTR));
} // retranslateUi

};

namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace Ui

QT_END_NAMESPACE

#endif // ENDVZ6212_H

35
PROJECT SCREENSHOTS

36
37
38
39
40
Test Procedures and Implementation
Introduction
Testing presents an interesting anomaly for the software engineer. During
earlier software engineering activities, the engineer attempts to build software from
an abstract concept to a tangible product. Now comes testing. The engineer creates
a series of test cases that are intended to “demolish” the software that has been
built. In fact, testing is the one step in the software process that could be viewed
(psychologically, at least) as destructive rather than constructive.

Software engineers are by their nature constructive people. Testing requires


that the developer discard preconceived notions of the “correctness” of software
just developed and overcome a conflict of interest that occurs when errors are
uncovered.

If testing is conducted successfully (according to the objectives stated


previously), it will uncover errors in the software. As a secondary benefit, testing
demonstrates that software functions appear to be working according to
specification, that behavioral and performance requirements appear to have been
met. In addition, data collected as testing is conducted provide a good indication of
software reliability and some indication of software quality as a whole. But testing
cannot show the absence of errors and defects, it can show

Only that software errors and defects are present. It is important to keep this
(rather gloomy) statement in mind as testing is being conducted.

41
Testing principles

Before applying methods to design effective test cases, a software engineer must
understand the basic principle that guide software testing:
All tests should be traceable to customer requirements
Tests should be planned long before testing begins
80 percent of all errors uncovered during testing will likely be traceable to
20 percent of all program components. The problem, of course, is to isolate these
suspect components and to thoroughly test them.
Testing should being “in the small” and progress toward testing “in the
large”.
Exhaustive testing is not possible
To be most effective an independent third party should conduct testing
A rich variety of test case design methods have evolved for software. These
methods provide the developer with a systematic approach to testing. More
important, methods provide a mechanism that can help to ensure the completeness
of tests and provide the highest likelihood for uncovering errors in software.

Any engineered product (and most other things) can be tested in one of
two ways:
Knowing the specified function that a product has been designed to perform,
tests can be conducted that demonstrate each function is fully operational
While at the same time searching for errors in each function; (2) knowing
the internal
Working of a product, tests can be conducted to ensure that “all gears mesh,”
that is, internal operations are performed according to specifications and all

42
internal components have been adequately exercised. The first test approach is
called black box testing and the second, white-box testing.

White box testing

Sometimes called glass-box testing is a test case design method that uses the
control structure of the procedural design to derive test cases. Using white-box
testing methods, the software engineer can derive test cases that (1) guarantee that
all independent paths within a module have been exercised at least once, (2)
exercise all logical decisions on their true and false sides, (3) execute all loops at
their boundaries and within their operational bounds, and (4) exercise internal data
structures to ensure their validity.
White-box testing of software is predicated on close examination of procedural
detail. Providing test cases that exercise specific sets of conditions and/or loops
tests logical paths through the software. The “status of the program” may be
examined at various points to determine if the expected or asserted status
corresponds to the actual status. Basis path testing is a white-box testing technique
first proposed by Tom McCabe. The basis path method enables the test case
designer to derive a logical complexity measure of a procedural design and use this
measure as a guide for defining a basis set of execution paths. Test cases derived to
exercise the basis set are guaranteed to execute every statement in the program at
least one time during testing.

In this system, the system was tested for the calculation matters were the
data provided for giving the right output or not. If wrong data was provided then
what it is throwing error or accepting.

43
Black box testing

Also called behavioral testing, focuses on the functional requirements of the


software. That is, black box testing enables the software engineer to derive sets of
input conditions that will fully exercise all functional requirements for a program.
Black box testing is not an alternative to white-box techniques. Rather, it is a
complementary approach that is likely to uncover a different class of error than
white-box methods. When computer software is considered, black box testing
alludes to tests that are conducted at the software interface. Although they are
designed to uncover errors, black-box tests are used to demonstrate that software
functions are operational, that input is

Properly accepted and output is correctly produced and that the integrity of
external information is maintained. A black-box test examines some fundamental
aspect of a system with a little regard for the internal logical structure of the
software. Black-box testing attempts to find errors in the following categories:
1. Incorrect or missing functions,
2. Interface errors,
3. Errors in data structures or external database access,
4. Behavior or performance errors, and
5. Initialization and termination errors. By applying back-box techniques,
we derive a set of test cases that satisfy the following criteria:
Test cases that reduce, by a count that is greater than one, the number of
additional test cases that must be designed to achieve reasonable testing and
Test cases that tell us something about the presence or absence of classes of
errors, rather than an error associated only with the specific test at hand.

44
White-box testing should not, however, be dismissed as impractical. A
limited number of important logical paths can be selected and exercised. Important
data structures can be probed for validity. The attributes of both black and white
box testing can be combined to provide an approach that validates the software
interface and selectively ensures that the internal workings of the software are
correct.

Black box testing for this system was done to check the internal testing i.e,
the system is working properly in each case or no. What kind of errors are there in
database design.

45
Proposed Enhancements
Future Scope:
The scope of the project includes that what all future enhancements can be done in
this system to make it more feasible to use
 Databases for different products range and storage can be provided.

 Multilingual support can be provided so that it can be understandable by the


person of any language.

 More graphics can be added to make it more user-friendly and


understandable.

 Manage & backup versions of documents online.

Benefits
 Manages Track sales
 Manages contacts
 Manages accounts
 Manages opportunities
 Track product issues
 Manage issue priorty

46
Conclusion

While developing the system a conscious effort has been made to create and
develop a software package, making use of available tools, techniques and
resources – that would generate a proper System
While making the system, an eye has been kept on making it as user-
friendly, as cost-effective and as flexible as possible. As such one may hope that
the system will be acceptable to any user and will adequately meet his/her needs.
As in case of any system development processes where there are a number
of shortcomings, there have been some shortcomings in the development of this
system also. The project is still under modification.

47
BIBLIOGRAPHY

BOOKS REFERRED

 Introduction To Computation and Programming Using Python

By John Guttag

WEB LINK

 https://www.python.org/

 https://www.geeksforgeeks.org/python-programming-examples/

48

You might also like