Professional Documents
Culture Documents
The information System of the old times totally differs from the todays. It is automation
system of a book shop or any information system. In the previous ages the process of
maintaining data and record seemed very difficult. Now days, Computer is very essential
component. The implementation of computer based Information System can be depicted as
the ease in handling and maintaining the data bank of any size.
The Information system can be used to maintain the system of much system like Library
Management System
My project is about Book Shop Information System. The present deals with almost all the
information of Book Shop. It keeps the database for customer record and publishing record.
It also keeps the author list, charges and Book-title list.
The business of Book Shop is spread all over the world. From public is gaining a great
176
OBJECTIVE OF THE PROJECT
176
PLATFORMS AND LANGUAGE TO BE USED
SYSTEM ANALYSIS
System Analysis refers to the process of examining a business situation with the intent of improving it
through better procedures and methods. It may be termed as a process of gathering and interpreting facts,
diagnosing problems and using the information to recommend improvement to the system. System
Analysis helps us in designing a new system or improving an existing system. When there is a proposal
for a new system to be developed there are various steps involved before the development can be started.
Software requirement analysis is bridge between system engineering and software design.
System
Engineerin
g
Software
Requireme
nt
Software
Design
The software development life cycle for this system goes through following steps
Preliminary investigation:-
Request clarification
Feasibility
Request approval
176
Feasibility Study
This means that after the above requirement is finished then there is to find that is the project
requested by the organization is worth doing as it requires cost and time to finish. Test such as the
following are taken to find the feasibility for the system
Technical feasibility-
There are number of technical issues which are generally raised during the feasibility stage of
investigation
Economical feasibility:
176
Considered.
Operational feasibility:
In this feasibility analysis we try to analyze the fact that whether the proposed system is
operationally feasible or not if it meets the requirements within the platform we selected
that’s whether visual basic and oracle is able to work properly long for long period of time
and without error. It also includes that whether the format we choose for report generation
that’s crystal report is workable with the above configuration or not. If it workable then we
suppose that it is operationally feasible, and in our case we find that whatever platform and
software we choose for the development is applicable and runs with each other without any
problem.
The proposed system is technical as well as economical feasible though it has no any
problem in operational feasibility
A System is required to keep the record of Client, Product, Payments, Inventory etc..
176
Who is behind this software request: -
This is concerned with that person who is directly involved with this software and on
whose request this software is to be built. The main organization or company whom
require this software is Loaning sector. They can use this software as much as their
requirement.
The main reason to develop such software is that keeping the manual records of the in this era is really a
bit tough. For that reason, Loaning require computerized process software so that they can navigate the all
information of the persons.
176
Software Engineering Paradigm applied
In order to develop the system we need to understand the availability and must remember our goal, and
then we need to decide a time schedule or milestone so that we should bound to achieve the goal in right
time.
The Designing phase is the most important and crucial stage in system development life cycle, and
includes so many important steps within it the first and most important step for the development is the
choice of correct software engineering paradigms. Here in our case as it is a simple and there is no any
strong time bound therefore we can simply use the “waterfall model.”
The simplest, oldest and most widely used process model for software development is Waterfall model. In
the early days the software development process was not really a process at all.
There used to be a very rudimentary study of the system, which was immediately
This model acquires its name from the fact that the classic software life cycle is
represented as a sequence of descending steps. The different levels of the waterfall correspond to the
distinct phases of the software development process.
The essence of this model is that the process of software development consists
of a linear set of distinct phases.
176
These are:-
The software development process is guided by some systematic software development method (SDM),
also referred to by a number of terms, like process models, development guidelines, and systems
development life cycle models (SDLC). There are many approaches to development taken by SDLC
models. Some of these models include
A classic SDLC model, with a linear and sequential method that has goals for each development phase.
The waterfall model simplifies task scheduling, because there are no iterative or overlapping steps. One
drawback of the waterfall model is that it does not allow for much revision.
This model is based on the concept that better products can be developed more quickly by using
workshops or focus groups to gather system requirements.
This model involves the client or end user in the design and development of an application, through a
series of collaborative workshops called JAD sessions.
176
Prototyping Model
In this model, a prototype (an early approximation of a final system or product) is built, tested, and then
reworked as necessary until an acceptable prototype is finally achieved from which the complete system
or product can now be developed.
Synchronize-and-Stabilize
This model involves teams working in parallel on individual application modules, frequently
synchronizing their code with that of other teams and stabilizing code frequently throughout the
development process.
176
Spiral Model
This model of development combines the features of the prototyping model and the waterfall model. The
spiral model is favored for large, expensive, and complicated projects. (Where the costs and end date
spiral out of control)
We shall consider the `waterfall' or `cascade' lifecycle model for software development illustrated in
Figure 1 and give a brief description of the stages below.
176
Feasibility
The feasibility study determines whether a particular development project should go ahead. If the project
is to proceed then a project plan and budget estimate for the other stages of development will be
produced.
Requirements analysis
The requirements for the new or modified system are gathered at this stage. They should be recorded so
that at the end of the project the software can be tested to ensure it fulfills the requirements.
Design specification
High level design, e.g. what programs are needed, what are their inputs and outputs, what are their
interactions with other software or the operating system.
Low level design, e.g. how will the program work, what models or algorithms will be used, what libraries
are required.
Data design, e.g. for input and output, data structures in the software.
The level of detail in the design may be a matter of personal choice or may be specified by particular
176
Coding
In this phase the designs are translated into code. Programming tools such as compilers and quality
assurance tools are used to generate good quality source code and the software application. Testing of
small self-contained parts (modules) of the overall application may take place depending on the
modularity of the code.
Testing
The overall system is tested to ensure that it works on the intended platforms, giving correct results or
showing the required behavior defined in the requirements document. The use of debuggers and profiling
tools will be useful at this stage to identify errors in the code and get the best possible performance from
the code. Optimum performance is especially important in scientific computing applications.
Maintenance
Once the system is delivered to users it will inevitably need maintenance. There may be bugs caused by
unexpected input values (add them to a test suite) or by unexpected (inappropriate) use of the software
(tighten up the documentation). In addition users will want more or different functionality and will
definitely want it to run faster or address bigger problems! The software development process should be
able to accommodate changes at this stage through a well thought out design and any changes should
have their own requirements, design, coding and testing stages.
For the remainder of this report we will take each of these stages and consider the tools that may help
developer produce high quality software
176
The salient characteristics of this model are that
It brought a definite structure to the process of software development, which was a major
improvement over the previous "code and fix" culture.
Each phase is distinct and is mandatory for every project irrespective of project size.
Every phase has well-defined entry and exit criteria.
This is achieved through the process of reviews and documentation.
At every phase there is provision for verification and validation and correction of errors and
inconsistencies.
This model was certainly a major step in the right direction. Proper documentation
and reviews at different stages of any project is necessary to ensure that the final product is what the user
originally required.
The weakness of this model is its insistence on a complete set of user requirements before
commencement of design.
Once its decided to develop the software means it is verified that it is feasible then
we follow the waterfall model and draw the time chart that up to which time frame a particular part of the
software must be finished so that on time delivery of the software is possible, validation checks must be
declared, so that each part should be verified and validated which leads to the correct way of development
of the software.
176
software. In the second phase of development designing part is done, which includes everything
including DFD, STRUCTURE CHART, and HIERARCHICAL DIAGRAM, working process and
explanation of the whole software in a written format. Input out screen layouts are sketched which gives
an idea about the layout of the project.
In the coding phase the whole design is coded in a particular language which
allows the project to work, in the next stage of development we make integrations of the various
individual modules and then tested that whether it is working properly or not, it is checked that does any
type of bug exists in the software or not if there is any bug then it is make error free. Lastly after
confirming that it is working properly and it is meeting all requirements of the management, it is
delivered.
176
1
System
Service
Management
176
E_name
Empid Job Pay
Published P_addres
s
Shopkeeper Publisher
Purcha
se
B_title
Bid Publishe
Order d
ha
No.
s
Book
Did
Order No
Price
ISBN
Distributor
NO
Bill Sell
Price
Cid Bid
ha
s
Price
E_mpi Cid D_name
d D_addres
s
Customer
Book-catalog
Cid
Book-
Book- Type
Caddress C_nam
176
e Type
176
[BOOK SHOP MANAGEMENT SYSTEM]
FrmSplash
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Private Declare Sub SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As
Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As
Long)
End Sub
End Sub
176
Private Sub Timer1_Timer()
ProgLoad.Value = ProgLoad.Value + 5
'If the Progress Bar (ProgLoad) is 100% then your function happens.
frmLogin.Show
Unload Me
End If
End Sub
176
frmLogin
LoginSucceeded = False
Unload Me
End Sub
txtPasswd.SetFocus
Exit Sub
End If
'rs.Close 'After the user_id are loaded into dbUserId close the
rs.Open "Select User_Password from users where User_Name= '" & dcUser.Text & "'", Con,
adOpenDynamic, adLockOptimistic
176
If rs.EOF <> True Then 'If Search is found
DoEvents
Unload Me
frmMain.Show
DoEvents
Exit Sub
rs.Close
MsgBox "Invalid Password!!!" & vbCrLf & "Note : Password is same as Username",
vbInformation, "Enjoy Freeware"
txtPasswd.Text = ""
txtPasswd.SetFocus
rs.Close
Exit Sub
End If
End If
176
'If Srchflag = False Then 'Display msg when search not found
' MsgBox "Invalid Password" & vbCrLf & "No Access!!!", vbCritical, "Invalid User"
' End
'End If
End Sub
176
FrmChangePassword
Unload Me
End Sub
txtReType.SetFocus
End If
rsChk.Open "Select * from Users where User_Name = '" & dcUser.Text & "'", Con, adOpenDynamic,
adLockPessimistic
176
If rsChk.EOF = True Then
txtUserName.SetFocus
rsChk.Close
Exit Sub
End If
If rsChk.RecordCount = 1 Then
pass = rsChk(1)
rsChk.Close
End If
rsChk(1) = txtNewPassword
rsChk.Update
rsChk.Close
Unload Me
Else
176
MsgBox "An Error Occured", vbCritical
rsChk.Close
Exit Sub
End If
End If
End Sub
DesignX = 800
DesignY = 600
Ytwips = Screen.TwipsPerPixelY
176
'Exit Sub ' uncomment to see how Form1 looks without resizing
MyForm.Width = Me.Width
End Sub
176
FrmUser
frmUserTypes.Show
End Sub
DesignX = 800
DesignY = 600
176
DoResize = False ' Flag for Resize Event
Xtwips = Screen.TwipsPerPixelX
Ytwips = Screen.TwipsPerPixelY
'Exit Sub ' uncomment to see how Form1 looks without resizing
Me.WindowState = vbMaximized
adoPrimaryRS.Open "select
User_Name,User_Password,User_Type,First_Name,Last_Name,Gender,Address,Email,Telephone,Status
,Notes from Users", Con, adOpenDynamic, adLockPessimistic
176
For Each oText In Me.txtFields
oText.Enabled = False
Next
mbdatachanged = False
'Call Functions.DisableMenu
End Sub
Case vbKeyEscape
cmdClose_Click
Case vbKeyEnd
Case vbKeyHome
cmdFirst_Click
cmdFirst_Click
Else
cmdPrevious_Click
176
End If
cmdLast_Click
Else
cmdNext_Click
End If
End Select
End Sub
Screen.MousePointer = vbDefault
End Sub
'This will display the current record position for this recordset
End Sub
176
'This event gets called when the following actions occur
Case adRsnAddNew
Case adRsnClose
Case adRsnDelete
Case adRsnFirstChange
Case adRsnMove
Case adRsnRequery
Case adRsnResynch
Case adRsnUndoAddNew
Case adRsnUndoDelete
Case adRsnUndoUpdate
Case adRsnUpdate
End Sub
176
'Bind the text boxes to the data provider
oText.Enabled = True
Next
txtFields(2).Locked = True
With adoPrimaryRS
mvBookMark = .Bookmark
End If
.AddNew
mbAddNewFlag = True
SetButtons False
End With
AddErr:
MsgBox err.Description
End Sub
176
If MsgBox("Are you sure you want to delete this record?", vbQuestion + vbYesNo, "Confirm Delete")
= vbNo Then
Exit Sub
End If
With adoPrimaryRS
.Delete
.MoveNext
End With
Exit Sub
DeleteErr:
MsgBox err.Description
End Sub
adoPrimaryRS.Requery
Exit Sub
RefreshErr:
MsgBox err.Description
End Sub
176
Private Sub cmdEdit_Click()
oText.Enabled = True
Next
txtFields(1) = Functions.Decrypt(txtFields(1))
txtUserPass = txtFields(1)
mbEditFlag = True
SetButtons False
Exit Sub
MsgBox err.Description
End Sub
176
oText.Enabled = False
Next
SetButtons True
mbEditFlag = False
mbAddNewFlag = False
adoPrimaryRS.CancelUpdate
adoPrimaryRS.Bookmark = mvBookMark
Else
adoPrimaryRS.MoveFirst
End If
mbdatachanged = False
End Sub
cmdUsertype.SetFocus
Exit Sub
End If
176
MsgBox "Please Enter User Name", vbCritical, "Error"
txtFields(0).SetFocus
Exit Sub
End If
'txtFields(1) = Functions.Encrypt(txtFields(1))
txtUserPass.SetFocus
SendKeys "{Home}+{End}"
Exit Sub
End If
txtFields(1) = txtFields(1)
adoPrimaryRS.UpdateBatch adAffectAll
oText.Enabled = False
Next
txtUserPass = ""
If mbAddNewFlag Then
176
End If
mbEditFlag = False
mbAddNewFlag = False
SetButtons True
mbdatachanged = False
Exit Sub
UpdateErr:
MsgBox err.Description
End Sub
Unload Me
End Sub
adoPrimaryRS.MoveFirst
mbdatachanged = False
Exit Sub
GoFirstError:
176
MsgBox err.Description
End Sub
adoPrimaryRS.MoveLast
mbdatachanged = False
Exit Sub
GoLastError:
MsgBox err.Description
End Sub
Beep
adoPrimaryRS.MoveLast
End If
mbdatachanged = False
176
Exit Sub
GoNextError:
MsgBox err.Description
End Sub
Beep
adoPrimaryRS.MoveFirst
End If
mbdatachanged = False
Exit Sub
GoPrevError:
MsgBox err.Description
End Sub
176
cmdAdd.Visible = bVal
cmdEdit.Visible = bVal
cmdDelete.Visible = bVal
cmdClose.Visible = bVal
cmdRefresh.Visible = bVal
cmdNext.Enabled = bVal
cmdFirst.Enabled = bVal
cmdLast.Enabled = bVal
cmdPrevious.Enabled = bVal
cmdViewAll.Visible = bVal
End Sub
176
FrmUserType
frmUserDetails.Enabled = True
Unload Me
End Sub
sel = "1"
sel = "0"
sel = "3"
sel = "4"
sel = "2"
176
ElseIf Option1(5).Value = True Then 'if Hospital Manager
sel = "5"
sel = "7"
sel = "8"
sel = "6"
End If
frmUserDetails.Enabled = True
frmUserDetails.txtFields(2) = sel
Me.Hide
End Sub
frmUserDetails.Enabled = False
End Sub
frmUserDetails.Enabled = True
End Sub
176
Private Sub Form_Load()
DesignX = 800
DesignY = 600
Xtwips = Screen.TwipsPerPixelX
Ytwips = Screen.TwipsPerPixelY
'Exit Sub ' uncomment to see how Form1 looks without resizing
MyForm.Width = Me.Width
frmUserDetails.Enabled = False
End Sub
176
frmMain
frmBackUp.Show 1
End Sub
Call select_color_type(3)
sys_color = "3"
End Sub
sys_color = "0"
End Sub
Call select_color_type(5)
sys_color = "5"
End Sub
176
Private Sub LightViolet_Click()
Call select_color_type(4)
sys_color = "4"
End Sub
Call select_color_type(1)
sys_color = "1"
End Sub
MyForm.Height = Me.Height
MyForm.Width = Me.Width
frmContainer.Show
End Sub
FrmCustomers.Show 1
End Sub
FrmPurchases.Show
End Sub
176
Private Sub mnuAbout_Click()
frmAbout.Show 1
End Sub
FrmCustomers.Show
End Sub
frmUserDetails.Show
End Sub
FrmProducts.Show
End Sub
FrmSuppliers.Show
End Sub
End Sub
176
Private Sub mnuCredit_Click()
frmCredits.Show 1
End Sub
frmCurrency.Show 1
End Sub
Unload frmMain
End Sub
If MsgBox("Are you sure you want to Log Off the system ?", vbYesNo + vbQuestion, "Log off") =
vbYes Then
frmLogin.Show
End If
End Sub
End Sub
176
Private Sub mnuPass_Click()
frmChangePassword.Show
End Sub
frmPurchasesReport.Show
End Sub
frmSaleInvoice.Show
End Sub
frmSalesReport.Show
End Sub
Call select_color_type(6)
sys_color = "6"
End Sub
Call select_color_type(2)
sys_color = "2"
End Sub
176
frmProduct
If cmbCID.SelLength = 0 Then
Else
End If
176
llngRet = objcb.WinCBFindString(cmbCID.hwnd, lstrFind, False)
cmbCID.ListIndex = llngRet
cmbCID.SelStart = Len(lstrFind)
KeyAscii = 0
End If
End If
End Sub
If cmbSID.SelLength = 0 Then
Else
End If
cmbSID.ListIndex = llngRet
176
cmbSID.SelStart = Len(lstrFind)
KeyAscii = 0
End If
End If
End Sub
rs.Open "select * from Suppliers where CompanyName = '" & cmbSID.Text & "'", Con,
adOpenKeyset, adLockPessimistic
SID = rs1(0) + 1
rs1.MoveNext
Wend
rs1.Close
Sup = cmbSID.Text
176
'While Not rs.EOF
Exit Sub
Else
rs.AddNew
rs.Fields(0) = SID
rs.Fields(1) = Sup
rs.Update
rs.Close
cmbSID.Clear
rs2.MoveFirst
cmbSID.AddItem rs2(0)
rs2.MoveNext
Wend
rs2.Close
End If
'Wend
176
cmbSID.Text = Sup
End Sub
FrmVProducts.Show
End Sub
rs.Open "select * from categories where categoryname = '" & cmbCID.Text & "'", Con,
adOpenKeyset, adLockPessimistic
CID = rs1(0) + 1
rs1.MoveNext
Wend
rs1.Close
176
Cat = cmbCID.Text
Exit Sub
Else
rs.AddNew
rs.Fields(0) = CID
rs.Fields(1) = Cat
rs.Update
rs.Close
cmbCID.Clear
cmbCID.AddItem rs2(0)
rs2.MoveNext
Wend
rs2.Close
End If
'Wend
176
cmbCID.Text = Cat
End Sub
Exit Sub
End If
Dim i As Long
rs2.Open "select cur_value from MoneyChanger where currency_name = '" & Combo1.Text & "' ",
Con, adOpenDynamic, adLockPessimistic
i = Val(txtFields(3).Text) * rs2(0)
rs2.Close
End Sub
176
DesignX = 800
DesignY = 600
Xtwips = Screen.TwipsPerPixelX
Ytwips = Screen.TwipsPerPixelY
'Exit Sub ' uncomment to see how Form1 looks without resizing
MyForm.Width = Me.Width
176
Set rsSuppliers = New ADODB.Recordset
oText.Enabled = True
oText.Locked = True
Next
mbdatachanged = False
rsSuppliers.MoveFirst
cmbSID.AddItem rsSuppliers(1)
rsSuppliers.MoveNext
Wend
End If
176
rsCategories.Open "select * from Categories", Con, adOpenDynamic, adLockOptimistic
Debug.Print rsCategories.RecordCount
Debug.Print rsSuppliers.RecordCount
rsCategories.MoveFirst
cmbCID.AddItem rsCategories(1)
rsCategories.MoveNext
Wend
'End If
End Sub
Case vbKeyEscape
cmdClose_Click
Case vbKeyEnd
cmdLast_Click
Case vbKeyHome
176
cmdFirst_Click
cmdFirst_Click
Else
cmdPrevious_Click
End If
cmdLast_Click
Else
cmdNext_Click
End If
End Select
End Sub
Screen.MousePointer = vbDefault
End Sub
'This will display the current record position for this recordset
End Sub
176
Private Sub adoPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal
cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
Case adRsnAddNew
Case adRsnClose
Case adRsnDelete
Case adRsnFirstChange
Case adRsnMove
Case adRsnRequery
Case adRsnResynch
Case adRsnUndoAddNew
Case adRsnUndoDelete
Case adRsnUpdate
End Select
End Sub
176
Dim PID As Long
PID = rsAddProducts(0) + 1
rsAddProducts.MoveNext
Wend
rsAddProducts.Close
oText.Locked = False
txtFields(1).SetFocus
txtFields(0).Locked = True
CurrencyManage
txtFields(3).Locked = False
Combo1.Locked = False
txtFields(8).Locked = True
cmbCID.ZOrder 0
176
cmbSID.ZOrder 0
cmbCID.TabIndex = 2
cmbSID.TabIndex = 6
txtFields(7).TabIndex = 26
txtFields(9).TabIndex = 27
cmdUpdate.Enabled = True
cmdCancel.Enabled = True
With adoPrimaryRS
mvBookMark = .Bookmark
End If
.AddNew
mbAddNewFlag = True
SetButtons False
End With
Exit Sub
AddErr:
MsgBox err.Description
End Sub
176
Private Sub cmdDelete_Click()
If MsgBox("Are you sure you want to delete this record?", vbQuestion + vbYesNo, "Confirm Delete")
= vbNo Then
Exit Sub
End If
With adoPrimaryRS
.Delete
.MoveNext
End With
Exit Sub
DeleteErr:
MsgBox err.Description
End Sub
adoPrimaryRS.Requery
Exit Sub
RefreshErr:
MsgBox err.Description
End Sub
176
Private Sub cmdEdit_Click()
txtFields(1).SetFocus
cmdUpdate.Enabled = True
cmdCancel.Enabled = True
oText.Locked = False
Next
txtFields(3).Locked = True
mbEditFlag = True
CurrencyManage
txtFields(3).Locked = False
Combo1.Locked = False
txtFields(8).Locked = True
cmbCID.ZOrder 0
cmbSID.ZOrder 0
176
cmbCID.TabIndex = 2
cmbSID.TabIndex = 6
txtFields(7).TabIndex = 26
txtFields(9).TabIndex = 27
Exit Sub
EditErr:
MsgBox err.Description
End Sub
cmdUpdate.Enabled = False
cmdCancel.Enabled = False
Combo1.Locked = True
SetButtons True
mbEditFlag = False
mbAddNewFlag = False
adoPrimaryRS.CancelUpdate
adoPrimaryRS.Bookmark = mvBookMark
176
Else
adoPrimaryRS.MoveFirst
End If
mbdatachanged = False
cmbCID.ZOrder 1
cmbSID.ZOrder 1
cmbCID.TabIndex = 26
cmbSID.TabIndex = 27
txtFields(7).TabIndex = 2
txtFields(9).TabIndex = 6
End Sub
txtFields(7).Text = cmbCID.Text
txtFields(9).Text = cmbSID.Text
adoPrimaryRS.UpdateBatch adAffectAll
If mbAddNewFlag Then
End If
176
cmbCID.ZOrder 1
cmbSID.ZOrder 1
cmbCID.TabIndex = 26
cmbSID.TabIndex = 27
txtFields(7).TabIndex = 2
txtFields(9).TabIndex = 6
cmdUpdate.Enabled = False
cmdCancel.Enabled = False
txtFields(3).Locked = True
Combo1.Locked = True
mbEditFlag = False
mbAddNewFlag = False
mbdatachanged = False
Exit Sub
UpdateErr:
MsgBox err.Description
End Sub
176
Private Sub cmdClose_Click()
Unload Me
End Sub
adoPrimaryRS.MoveFirst
mbdatachanged = False
Exit Sub
GoFirstError:
MsgBox err.Description
End Sub
adoPrimaryRS.MoveLast
mbdatachanged = False
Exit Sub
GoLastError:
MsgBox err.Description
End Sub
176
Private Sub cmdNext_Click()
Beep
adoPrimaryRS.MoveLast
End If
mbdatachanged = False
Exit Sub
GoNextError:
MsgBox err.Description
End Sub
Beep
adoPrimaryRS.MoveFirst
End If
176
'show the current record
mbdatachanged = False
Exit Sub
GoPrevError:
MsgBox err.Description
End Sub
cmdAdd.Enabled = bVal
cmdEdit.Enabled = bVal
cmdDelete.Enabled = bVal
cmdClose.Enabled = bVal
cmdRefresh.Enabled = bVal
cmdNext.Enabled = bVal
cmdLast.Enabled = bVal
cmdPrevious.Enabled = bVal
cmdViewAll.Enabled = bVal
End Sub
Combo1.Clear
176
rs2.Open "select currency_name from moneychanger", Con, adOpenDynamic, adLockOptimistic
Combo1.AddItem rs2(0)
Combo1.Text = rs2(0)
rs2.MoveNext
Wend
rs2.Close
End Sub
176
FrmCustomer
FrmVCustomers.Show
End Sub
DesignX = 800
DesignY = 600
176
' Set up the screen values
Xtwips = Screen.TwipsPerPixelX
Ytwips = Screen.TwipsPerPixelY
'Exit Sub ' uncomment to see how Form1 looks without resizing
MyForm.Width = Me.Width
oText.Enabled = True
oText.Locked = True
176
Next
mbdatachanged = False
End Sub
Case vbKeyEscape
cmdClose_Click
Case vbKeyEnd
cmdLast_Click
Case vbKeyHome
cmdFirst_Click
Else
cmdPrevious_Click
End If
cmdLast_Click
Else
176
cmdNext_Click
End If
End Select
End Sub
Screen.MousePointer = vbDefault
End Sub
'This will display the current record position for this recordset
End Sub
Case adRsnAddNew
Case adRsnClose
176
Case adRsnDelete
Case adRsnFirstChange
Case adRsnMove
Case adRsnRequery
Case adRsnResynch
Case adRsnUndoAddNew
Case adRsnUndoDelete
Case adRsnUndoUpdate
Case adRsnUpdate
End Select
End Sub
176
While rsAddCustomers.EOF = False
CID = rsAddCustomers(0) + 1
rsAddCustomers.MoveNext
Wend
rsAddCustomers.Close
oText.Locked = False
Next
cmbContactTitle.ZOrder 0
txtFields(0).Locked = True
With adoPrimaryRS
End If
.AddNew
txtFields(0).Text = CID
mbAddNewFlag = True
SetButtons False
End With
176
Exit Sub
AddErr:
MsgBox err.Description
End Sub
If MsgBox("Are you sure you want to delete this record?", vbQuestion + vbYesNo, "Confirm Delete")
= vbNo Then
Exit Sub
End If
With adoPrimaryRS
.Delete
.MoveNext
Exit Sub
DeleteErr:
MsgBox err.Description
End Sub
176
Private Sub cmdRefresh_Click()
adoPrimaryRS.Requery
Exit Sub
RefreshErr:
MsgBox err.Description
End Sub
oText.Locked = False
cmbContactTitle.ZOrder 0
mbEditFlag = True
SetButtons False
Exit Sub
176
EditErr:
MsgBox err.Description
End Sub
cmbContactTitle.ZOrder 1
oText.Locked = True
Next
SetButtons True
mbEditFlag = False
mbAddNewFlag = False
adoPrimaryRS.Bookmark = mvBookMark
Else
adoPrimaryRS.MoveFirst
End If
mbdatachanged = False
End Sub
176
Private Sub cmdUpdate_Click()
txtFields(4).Text = cmbContactTitle.Text
cmbContactTitle.ZOrder 1
adoPrimaryRS.UpdateBatch adAffectAll
If mbAddNewFlag Then
End If
oText.Locked = True
Next
mbAddNewFlag = False
SetButtons True
mbdatachanged = False
Exit Sub
UpdateErr:
MsgBox err.Description
End Sub
176
Private Sub cmdClose_Click()
Unload Me
End Sub
adoPrimaryRS.MoveFirst
mbdatachanged = False
Exit Sub
GoFirstError:
MsgBox err.Description
End Sub
adoPrimaryRS.MoveLast
mbdatachanged = False
Exit Sub
GoLastError:
MsgBox err.Description
End Sub
176
Private Sub cmdNext_Click()
Beep
adoPrimaryRS.MoveLast
End If
mbdatachanged = False
Exit Sub
GoNextError:
MsgBox err.Description
End Sub
Beep
adoPrimaryRS.MoveFirst
End If
176
'show the current record
mbdatachanged = False
Exit Sub
GoPrevError:
MsgBox err.Description
End Sub
cmdAdd.Enabled = bVal
cmdEdit.Enabled = bVal
cmdDelete.Enabled = bVal
cmdClose.Enabled = bVal
cmdRefresh.Enabled = bVal
cmdNext.Enabled = bVal
cmdLast.Enabled = bVal
cmdPrevious.Enabled = bVal
cmdViewAll.Enabled = bVal
End Sub
176
'Private Sub Form_KeyPress(KeyAscii As Integer)
'End Sub
176
frmPurchase
rsProdName.Open "Select * from Books where Book_ID = " & cmbPID & "", Con, adOpenDynamic,
adLockReadOnly
Exit Sub
Else
txtunits = rsProdName(7)
txtRPU = rsProdName(6)
End If
rsProdName.Close
End Sub
176
Private Sub cmbSID_Click()
rsSupplierName.Open "Select * from Suppliers where SupplierID = " & cmbSID & "", Con,
adOpenDynamic, adLockReadOnly
Exit Sub
Else
txtSName = rsSupplierName(1)
txtSCName = rsSupplierName(2)
End If
rsSupplierName.Close
End Sub
Dim i As Integer
176
For i = 1 To MFG.Rows - 2 Step 1
MsgBox "Medicine Already Exist In The List Cannot Add Same Medicine Again.....", vbCritical
+ vbOKOnly
Exit Sub
End If
Next i
End If
Exit Sub
End If
If Val(txtUPurchased) = 0 Then
Exit Sub
'Remove quantity
rsProdName.Open "Select * from Books where Book_ID = " & cmbPID & "", Con, adOpenStatic,
adLockOptimistic
rsProdName(7) = tot
176
txtunits.Text = rsProdName(7)
rsProdName.UpdateBatch adAffectCurrent
rsProdName.Close
Row = MFG.Rows - 1
With MFG
.Rows = .Rows + 1
MFG.TextMatrix(Row, 1) = txtBillID
MFG.TextMatrix(Row, 2) = cmbPID
MFG.TextMatrix(Row, 3) = txtPName
MFG.TextMatrix(Row, 4) = txtUPurchased
MFG.TextMatrix(Row, 5) = txtRPU
MFG.TextMatrix(Row, 6) = txtdis
.FixedRows = 1
SizeColumns MFG, Me
MFGVALUES
Row = Row + 1
End With
176
'cmbSID.Enabled = False
Call CalcFinal
Call TextClear
End Sub
Dim i As Integer
End If
txtgrndtot = amount
txtdisgvn = Discount
txtpayable = Total
End Sub
176
Public Sub TextClear()
txtunits = ""
txtUPurchased = ""
txtdis = "0"
txtAmount = ""
txtNet = ""
cmbPID_Click
End Sub
Unload Me
End Sub
selectedRow = MFG.Row
176
rsProdName.Open "Select * from Books where Book_ID = " & Val(MFG.TextMatrix(i, 2)) & "",
Con, adOpenStatic, adLockOptimistic
rsProdName(7) = tot
'txtunits.Text = rsProdName(7)
rsProdName.UpdateBatch adAffectCurrent
rsProdName.Close
Next i
End If
Exit Sub
End If
MFG.RemoveItem (selectedRow)
End If
End Sub
If MFG.Rows = 2 Then
MsgBox "Please Add Items to list before you save", vbCritical, "Error Occured"
Exit Sub
End If
176
Dim flag, flag1, flag2 As Boolean
flag = False
flag1 = False
flag2 = False
rsOrderID.AddNew
rsOrderID(0) = txtBillID
rsOrderID(1) = cmbSID
rsOrderID(2) = DTPDate
rsOrderID.Update
rsOrderID.Close
176
Dim rsStock As Recordset
' rsAddPatient.MoveFirst
' End If
MID = rsAddPatient(0) + 1
Wend
End If
rsAddPatient.Close
With rsMed
.AddNew
!PurchaseOrderDetailID = MID
!PurchaseOrderID = txtBillID
176
!PurchaseProductID = MFG.TextMatrix(i, 2)
!NetValue = txtpayable
.Update
flag1 = True
End With
rsStock.Open "select * from books where Book_ID= " & MFG.TextMatrix(i, 2) & "", Con,
adOpenDynamic, adLockPessimistic
rsStock.Update
flag2 = True
End If
Next
rsMed.Close
cmdSave.Enabled = False
Else
176
Exit Sub
End If
Command1.Enabled = True
cmdSave.Enabled = False
End Sub
FrmVProducts.Show
End Sub
ctl.Text = ""
Next
cmbSID.Enabled = True
cmdSave.Enabled = True
MFG.Clear
MFG.Refresh
MFG.Rows = 2
Call SetData
Call BillID
176
Call ProdDetails
Call MFGVALUES
End Sub
DesignX = 800
DesignY = 600
Xtwips = Screen.TwipsPerPixelX
Ytwips = Screen.TwipsPerPixelY
'Exit Sub ' uncomment to see how Form1 looks without resizing
176
MyForm.Height = Me.Height ' Remember the current size
MyForm.Width = Me.Width
Call SetData
Call BillID
Call ProdDetails
Call MFGVALUES
End Sub
mbdatachanged = False
cmbSID.Clear
cmbSID.AddItem rsSuppliers(0)
rsSuppliers.MoveNext
Wend
rsSuppliers.Close
End Sub
176
Public Sub BillID()
' rsOrderID.MoveFirst
' End If
rsOrderID.MoveNext
Wend
End If
txtBillID = BID
rsOrderID.Close
End Sub
176
Public Sub MFGVALUES()
MFG.TextMatrix(0, 4) = "QUANTITY"
MFG.TextMatrix(0, 6) = "DISCOUNT"
SizeColumnHeaders MFG, Me
End Sub
rsAddProd.MoveFirst
cmbPID.AddItem rsAddProd(0)
'cmbPID.Text = rsAddProd(0)
rsAddProd.MoveNext
Wend
176
End If
rsAddProd.Close
End Sub
End Sub
End Sub
End Sub
176
FrmSupplier
FrmVSuppliers.Show
End Sub
176
DesignX = 800
DesignY = 600
Xtwips = Screen.TwipsPerPixelX
Ytwips = Screen.TwipsPerPixelY
'Exit Sub ' uncomment to see how Form1 looks without resizing
MyForm.Width = Me.Width
176
For Each oText In Me.txtFields
oText.Enabled = True
oText.Locked = True
Next
mbdatachanged = False
End Sub
Case vbKeyEscape
cmdClose_Click
cmdLast_Click
Case vbKeyHome
cmdFirst_Click
cmdFirst_Click
Else
cmdPrevious_Click
176
End If
cmdLast_Click
Else
cmdNext_Click
End If
End Select
End Sub
Screen.MousePointer = vbDefault
End Sub
'This will display the current record position for this recordset
End Sub
176
Dim bCancel As Boolean
Case adRsnAddNew
Case adRsnClose
Case adRsnDelete
Case adRsnFirstChange
Case adRsnMove
Case adRsnRequery
Case adRsnResynch
Case adRsnUndoAddNew
Case adRsnUndoDelete
Case adRsnUndoUpdate
Case adRsnUpdate
End Select
176
rsAddSupplier.Open " Select max(SupplierID) from Suppliers", Con, adOpenKeyset,
adLockPessimistic
' rsAddSupplier.MoveFirst
' Else
'
' End If
SID = rsAddSupplier(0) + 1
rsAddSupplier.MoveNext
Wend
rsAddSupplier.Close
cmdUpdate.Enabled = True
cmdCancel.Enabled = True
oText.Locked = False
Next
txtFields(2).SetFocus
txtFields(0).Locked = True
176
On Error GoTo AddErr
With adoPrimaryRS
mvBookMark = .Bookmark
End If
.AddNew
txtFields(0).Text = SID
mbAddNewFlag = True
SetButtons False
End With
Exit Sub
AddErr:
MsgBox err.Description
If MsgBox("Are you sure you want to delete this record?", vbQuestion + vbYesNo, "Confirm Delete")
= vbNo Then
Exit Sub
End If
176
With adoPrimaryRS
.Delete
.MoveNext
End With
Exit Sub
DeleteErr:
MsgBox err.Description
End Sub
adoPrimaryRS.Requery
RefreshErr:
MsgBox err.Description
End Sub
cmdUpdate.Enabled = True
cmdCancel.Enabled = True
176
Dim oText As TextBox
oText.Locked = False
Next
txtFields(2).SetFocus
mbEditFlag = True
SetButtons False
Exit Sub
EditErr:
End Sub
SetButtons True
mbEditFlag = False
mbAddNewFlag = False
adoPrimaryRS.CancelUpdate
176
If mvBookMark > 0 Then
adoPrimaryRS.Bookmark = mvBookMark
Else
adoPrimaryRS.MoveFirst
End If
mbdatachanged = False
cmdUpdate.Enabled = False
cmdCancel.Enabled = False
End Sub
adoPrimaryRS.UpdateBatch adAffectAll
If mbAddNewFlag Then
End If
mbEditFlag = False
mbAddNewFlag = False
SetButtons True
mbdatachanged = False
cmdUpdate.Enabled = False
cmdCancel.Enabled = False
176
Exit Sub
UpdateErr:
MsgBox err.Description
End Sub
Unload Me
End Sub
adoPrimaryRS.MoveFirst
mbdatachanged = False
Exit Sub
MsgBox err.Description
End Sub
adoPrimaryRS.MoveLast
mbdatachanged = False
176
Exit Sub
GoLastError:
MsgBox err.Description
End Sub
Beep
adoPrimaryRS.MoveLast
mbdatachanged = False
Exit Sub
GoNextError:
MsgBox err.Description
End Sub
176
Private Sub cmdPrevious_Click()
Beep
adoPrimaryRS.MoveFirst
End If
mbdatachanged = False
Exit Sub
GoPrevError:
MsgBox err.Description
cmdAdd.Enabled = bVal
cmdEdit.Enabled = bVal
cmdDelete.Enabled = bVal
cmdClose.Enabled = bVal
cmdRefresh.Enabled = bVal
cmdNext.Enabled = bVal
176
cmdFirst.Enabled = bVal
cmdLast.Enabled = bVal
cmdPrevious.Enabled = bVal
cmdViewAll.Enabled = bVal
End Sub
'End Sub
176
frmSalesInvoice
cmbPID.Clear
rsProducts.Open "Select * from books where Category_name = '" & cmbCID & "' ", Con,
adOpenDynamic, adLockOptimistic
cmbPID.AddItem rsProducts(0)
cmbPID.Text = rsProducts(0)
rsProducts.MoveNext
Wend
End If
176
If cmbPID.ListCount = 0 Then
txtmedname = ""
txtRPU = "0"
End If
rsProducts.Close
End Sub
rsProductName.Open "Select * from Books where Book_ID = " & cmbPID & "", Con, adOpenStatic,
adLockBatchOptimistic
stock = 0
txtStock = stock
txtmedname = ""
txtRPU = "0.00"
stock = 0
Else
txtmedname = rsProductName(1)
176
txtRPU = rsProductName(6)
stock = rsProductName(7)
End If
txtStock = stock
rsProductName.Close
End Sub
rs3.Open "Select ContactFirstName,ContactLastName from customers where CustomerID = " & cmbPtID
& "", Con, adOpenStatic, adLockBatchOptimistic
Exit Sub
Text1 = ""
Else
End If
176
rs3.Close
End Sub
Unload Me
End Sub
Dim i As Integer
selectedRow = MFG.Row
rsProdName.Open "Select * from Books where Book_ID = " & Val(MFG.TextMatrix(i, 2)) & "",
Con, adOpenStatic, adLockOptimistic
176
rsProdName(7) = tot
'txtStock.Text = rsProdName(7)
rsProdName.UpdateBatch adAffectCurrent
rsProdName.Close
Next i
End If
Exit Sub
End If
MFG.RemoveItem (selectedRow)
End If
End Sub
FrmVProducts.Show
End Sub
176
Private Sub cndew_Click()
ctl.Text = ""
End If
Next
cmbPtID.Enabled = True
cmdSave.Enabled = True
MFG.Clear
MFG.Refresh
MFG.Rows = 2
Call SetData
Call BillID
Call MFGVALUES
Command1.Enabled = False
'DTPDate.Value = Date
'DTPIssue.Value = Date
End Sub
176
Private Sub Command1_Click()
strTXT = Val(txtBillID.Text)
PInvoice.DiscardSavedData = True
PInvoice.WindowState = crptMaximized
PInvoice.Action = 1
End Sub
MsgBox MFG.Row
MsgBox MFG.Rows
End Sub
176
Private Sub Form_Load()
Call SetData
Call BillID
Call CustDetails
Call MFGVALUES
Command1.Enabled = False
'DTPDate.Value = Date
'DTPIssue.Value = Date
End Sub
cmbCID.Clear
cmbCID.AddItem rsCategories(1)
rsCategories.MoveNext
Wend
rsCategories.Close
176
End Sub
If IsNull(rsOrderID(0)) Then
'rsOrderID.MoveFirst
Else
BID = rsOrderID(0) + 1
rsOrderID.MoveNext
Wend
End If
End If
176
txtBillID = BID
End Sub
MFG.TextMatrix(0, 4) = "QUANTITY"
MFG.TextMatrix(0, 6) = "DISCOUNT"
'SizeColumnHeaders MFG, Me
End Sub
cmbPtID.Clear
rsAddCust.MoveFirst
176
'cmbPtID.Text = "0"
cmbPtID.AddItem rsAddCust(0)
cmbPtID.ListIndex = 0
rsAddCust.MoveNext
Wend
End If
rsAddCust.Close
End Sub
rsProductName.Open "Select * from Books where Book_ID = " & cmbPID & "", Con, adOpenStatic,
adLockBatchOptimistic
txtStock = stock
rsProductName.Close
End Sub
176
Private Sub txtdis_Change()
End Sub
End Sub
Dim i As Integer
176
MsgBox "Medicine Already Exist In The List Cannot Add Same Medicine Again.....", vbCritical
+ vbOKOnly
Exit Sub
End If
Next i
End If
Exit Sub
End If
If Val(txtqty) = 0 Then
Exit Sub
End If
Exit Sub
End If
'cmbPtID = ""
Exit Sub
End If
176
'Remove quantity
rsProdName.Open "Select * from Books where Book_ID = " & cmbPID & "", Con, adOpenStatic,
adLockOptimistic
rsProdName(7) = tot
txtStock.Text = rsProdName(7)
rsProdName.UpdateBatch adAffectCurrent
rsProdName.Close
'
Row = MFG.Rows - 1
With MFG
.Rows = .Rows + 1
MFG.TextMatrix(Row, 1) = txtBillID
MFG.TextMatrix(Row, 3) = txtmedname
MFG.TextMatrix(Row, 4) = txtqty
MFG.TextMatrix(Row, 5) = txtRPU
MFG.TextMatrix(Row, 6) = txtdis
MFG.TextMatrix(Row, 7) = txttotamt
176
.FixedRows = 1
'SizeColumns MFG, Me
MFGVALUES
Row = Row + 1
End With
cmbPtID.Enabled = False
Call CalFinal
Call TextClear
End Sub
Dim i As Integer
176
Next i
End If
txtgrndtot = amount
txtdisgvn = Discount
txtpayable = Total
End Sub
txtqty = ""
txtdis = ""
txtAmount = ""
txttotamt = ""
cmbPID_Click
If MFG.Rows = 2 Then
MsgBox "Please Add Items to list before you save", vbCritical, "Error Occured"
Exit Sub
End If
176
Dim flag, flag1, flag2 As Boolean
flag = False
flag1 = False
flag2 = False
rsOrderID.AddNew
rsOrderID(0) = txtBillID
rsOrderID(1) = cmbPtID
rsOrderID(2) = DTPDate
rsOrderID(3) = Text1.Text
rsOrderID(4) = txtdisgvn
rsOrderID.Update
flag2 = True
rsOrderID.Close
176
Dim rsAddPatient As Recordset
Dim i As Integer
' rsAddPatient.MoveFirst
' End If
MID = rsAddPatient(0) + 1
rsAddPatient.MoveNext
Wend
176
End If
rsAddPatient.Close
With rsMed
.AddNew
!OrderDetailID = MID
!OrderID = txtBillID
!ProductID = MFG.TextMatrix(i, 2)
!QUANTITY = MFG.TextMatrix(i, 4)
!UNITPRICE = MFG.TextMatrix(i, 5)
.Update
flag = True
End With
rsStock.Open "select * from Books where book_ID= " & MFG.TextMatrix(i, 2) & "", Con,
adOpenDynamic, adLockPessimistic
rsStock.Update
flag1 = True
End If
rsStock.Close
176
Next
rsMed.Close
Else
End If
Command1.Enabled = True
cmdSave.Enabled = False
End Sub
End If
End Sub
End Sub
176
FrmViewCustomer
cmdFind_Click
End Sub
Unload Me
End Sub
Exit Sub
176
End If
ListView1.ListItems.Clear
SQL = SQL & " WHERE CustomerID LIKE '*" & txtSearchText & "*'"
strSQl = strSQl & cmbSearch & " Like " & "'%" & txtSearchText & "%'"
'SQL = strSQl & " WHERE language LIKE '*" & Text1.Text & "*'"
Debug.Print strSQl
Debug.Print rsFind.RecordCount
Debug.Print rsFind.Fields.Count
176
Set LItem = ListView1.ListItems.Add(, , rsFind(0))
LItem.SubItems(1) = rsFind(1)
End If
LItem.SubItems(2) = rsFind(2)
End If
LItem.SubItems(3) = rsFind(3)
End If
End If
LItem.SubItems(5) = rsFind(5)
End If
LItem.SubItems(6) = rsFind(6)
End If
176
If rsFind(7) <> "" Then
LItem.SubItems(7) = rsFind(7)
End If
LItem.SubItems(8) = rsFind(8)
End If
LItem.SubItems(9) = rsFind(9)
End If
rsFind.MoveNext
Wend
End If
rsFind.Close
End Sub
176
Private Sub cmdSearch_Click()
NotFound = True
End If
If NotFound Then
Else
LItem.EnsureVisible
LItem.Selected = True
End If
End If
txtSearchText = ""
Form_Load
End Sub
176
Private Sub Form_Activate()
Me.WindowState = vbMaximized
txtSearchText.SetFocus
End Sub
Dim i As Integer
DesignY = 600
Xtwips = Screen.TwipsPerPixelX
Ytwips = Screen.TwipsPerPixelY
176
' Determine scaling factors
'Exit Sub ' uncomment to see how Form1 looks without resizing
MyForm.Width = Me.Width
cmbSearch.Clear
Next i
rsPatientID.Close
ListView1.ListItems.Clear
176
If rsPatient(1) <> "" Then
LItem.SubItems(1) = rsPatient(1)
End If
LItem.SubItems(2) = rsPatient(2)
End If
LItem.SubItems(3) = rsPatient(3)
End If
LItem.SubItems(4) = rsPatient(4)
End If
LItem.SubItems(5) = rsPatient(5)
End If
LItem.SubItems(6) = rsPatient(6)
End If
176
If rsPatient(7) <> "" Then
LItem.SubItems(7) = rsPatient(7)
End If
LItem.SubItems(8) = rsPatient(8)
End If
LItem.SubItems(9) = rsPatient(9)
End If
rsPatient.MoveNext
Wend
rsPatient.Close
cmbSearch.Text = cmbSearch.List(0)
End Sub
ListView1.SortOrder = lvwAscending
ListView1.SortKey = ColumnHeader.Index - 1
176
strCol = ColumnHeader
Else
ListView1.SortOrder = lvwDescending
ListView1.SortKey = ColumnHeader.Index - 1
strCol = ""
End If
End Sub
cmdFind_Click
End Sub
176
ModuleMain
Type FRMSIZE
Height As Long
Width As Long
End Type
' End
' End If
176
Set Con = New ADODB.Connection
'
Con.CursorLocation = adUseClient
Con.ConnectionString=”Dsn=Book_Dsn”
Con.Open()
'frmSplashScreen.Show
frmMain.Show
'
'frmLogin.Show
'frmCurrency.Show
End Sub
Dim i As Integer
With MyForm
176
For i = 0 To .Count - 1
Else
.Controls(i).Top * SFY, _
.Controls(i).Width * SFX, _
.Controls(i).Height * SFY
End If
Next i
If RePosForm Then
End If
End With
End Sub
176
output
176
[BOOK SHOP MANAGEMENT SYSTEM]
CUSTOMERREPORT
176
[BOOK SHOP MANAGEMENT SYSTEM]
Purchase Report
176
[BOOK SHOP MANAGEMENT SYSTEM]
Sales Report
176
[BOOK SHOP MANAGEMENT SYSTEM]
Statistics Report Sales/Purchase
176
TESTING
In the ideal circumstances a software engineer design an computer , a system, or a product with
“Testability” in mind. This enables the individuals charged with testing to design effective test cases more
easily. But what is “Testability”? James Bach describes testability in the following manner:-
Software testability is simply how easily a computer program can be tested. Since testing is so profoundly
difficult, it pays to know what can be done to it.
Sometimes programmers are willing to do things that will help the testing process and a checklist of
possible design points, features etc. can be useful in negotiation with them. There are certainly metrices
that could be used to measures testability in most of its aspects. Sometimes, testability is used to measure
testability in most of aspects. Sometimes, testability is used to mean how adequately a particular set of
tests will cover the product. Its also used by the military to mean how easily a tool xan be checked and
repaired in the field. These two meanings are not the same as software testability. The checklist that
follows provides a set of characteristics that lead to testable software.
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 inputs conditions that fully
exercise all functional requirements for the program. Black box testing is not an alternative to white box
techniques. Rather, it is a complementry approach that is likely to uncover a different class of errors then
white box methods.
176
b) Interface errors
c) Errors in data structures or external database access
d) Behavior or performance errors, and
e) Initialization or terminaton errors
We have tested each and every function in the project and come to the
conclusion that they all have executed correctly. At the time when the project was in progress a number if
functions where deleted and then added due to which errors where generated. This errors where removed
time to time in the testing phase where I had to go in the depth study of the project. Its each and every
parts where executed at least 100 times to see wheter the working was anticipating the expected results or
not.
176
By applying Black Box technique, we derive a set of answers for the questions:
The functional validity is checked by the execution of the functions one by one and fulfilling
the requirements of the functions as per the demand of the software. The functional validity
is checked by using suitable technique which lies on the code optimization, efficiency in
executions.
System behavior is tested by certain tools and performance tests lies on the dumping of
large bulk of data into the application software database. The application database consists
of data’s with their appropriate width. The validation of the data’s linking of one data’s with
the other’s everything are tested before inputting them into the application software
database.
Interactive classes of input are generally better for the good test classes .
The system is sensitive for the system data because the whole application software is a time
domain software. Any error on the time parameter may crash the whole application. Time is
taken as an important parameter for all the calculations. This is why this application
software is sensitive to system time.
The specific can tolerate 50MB of the memory of the data without any problem.
The specific combinations of the data of center id and time. The application program has no
control over time and id. Both are generated automatically.
176
ALPHA AND BETA TESTING
It is virtually impossible for a software developer to foresee how the user will really use a program.
Instructions for use may be misinteperated, strange combinations of data may be regularly used; output
that seemed clear to the tester may be unintelligible to the user in the filed.
When software is built for one person, a series of acceptance tests are conducted to enable
the user to validate all requirements. Conducted by the end-user rather than software engineers, an
acceptance test can range from an informal “test-drive” to a planned and systematically executed series of
tests. In fact, acceptance testing can be conducted over a period of time thereby uncovering errors that
might degrade the system overtime.
Alpha Testing
When user software is build for one employee a serial of dependent tests ate conducted to enable the users
to validate the requirement conducted by an user rather than software engineers. And acceptance test can
from an informal to applied systematically. This test is conducted at developer site by a user the software
176
is used in a natural setting with the developers as we can say-“lookin over the soldier” of the user and
recording errors alpha test are conducted then a control.
Beta Testing
The beta testing is conducted at one or more users’ side by the user of the software. Unlike alpha testing
the developer generally is not present therefore Beta testing is live application of the software that
controlled by the developer at the result the software engineerings may modify and then prepare for
release of the software.
176
SECURITY MECHANISMS
Any user, who is authorized by the administrator to operate the software, receives a unique user ID and a
password with the help of which he can log into the system. To login the user goes through the system
menu. He is then presented with the login box where he has to enter the username and password to login.
In this security features user may belongs to any of the two categories:-
First when the software is installed in the organisation the software developer provide the user Id and
The user loggin in may access only certain features within the software. A user will only be allowed to
view the records and opening different types of features and maintaining the database, providing the
requirement of the user as they demanded. Every user get the unique and password. Every new user will
be assigned a unique name along with a password by the administrator. The list of all users is maintained
by the administrator of the software.
176
Once the administrator logs into the system, he has access to all the features within the
system other than all essential details, the administrator has a separate responsibility which includes
managing users and their details. So if a new user has to be added, this can be done by the administrator.
Therefore we have seen that a person who is logging in as a user who does not exists in the user logging
in is not a valid user that is the user is not available in the table.
176
COST ESTIMATION OF THE PROJECT
Topics covered
Feasibility Analysis
Productivity measures
Estimation techniques
Algorithmic cost modelling
Project duration
Feasibility Analysis
Operational feasibility – a measure of how well a solution will work or be accepted in an organization.
176
Costs:
Development costs are one time costs that will not recur after the project has been completed.
Operating costs are costs that tend to recur throughout the lifetime of the system. Such costs
can be classified as:
Fixed costs — occur at regular intervals but at relatively fixed rates.
Benefits:
Payback Analysis
Return On Investment
Net Present Value
The Time Value of Money is a concept that should be applied to each technique. The time value of
money recognizes that a dollar today is worth more than a dollar one year from now.
176
Fundamental estimation questions
Estimates are made to discover the cost, to the developer, of producing a software system
There is not a simple relationship between the development cost and the price charged
Broader organisational, economic, political and business considerations influence the price
charged
Productivity measures
Size related measures based on some output from the software process. This may be lines of
delivered source code, object code instructions, etc.
Function-related measures based on an estimate of the functionality of the delivered software.
Function-points are the best known of this type of measure
Measurement problems
Lines of code
176
Productivity estimates
Function points
176
4GL Object points
Object points are an alternative function-related measure to function points when 4Gls or similar
languages are used for development
Object points are NOT the same as object classes
The number of object points in a program is a weighted estimate of
a)The number of separate screens that are displayed
c)The number of 3GL modules that must be developed to supplement the 4GL code
Object points are easier to estimate from a specification than function points as they are simply
concerned with screens, reports and 3GL modules
They can therefore be estimated at an early point in the development process. At this stage, it is
very difficult to estimate the number of lines of code in a system
All metrics based on volume/unit time are flawed because they do not take quality into
account
Estimation techniques
There is no simple way to make an accurate estimate of the effort required to develop a software
system
Initial estimates are based on inadequate information in a user requirements definition
The software may run on unfamiliar computers or use new technology
The skills of people working on the project may be unknown
Project cost estimates may be self-fulfilling
The estimate defines the budget and the product is adjusted to meet the budget
176
Expert judgement
Estimation by analogy
Parkinson's Law
Pricing to win
Algorithmic cost modelling
Expert judgement
One or more experts in both software development and the application domain use their
experience to predict software costs. Process iterates until some consensus is reached.
Advantages: Relatively cheap estimation method. Can be accurate if experts have direct
experience of similar systems
Disadvantages: Very inaccurate if there are no experts!
Estimation by analogy
The cost of a project is computed by comparing the project to a similar project in the same
application domain
Advantages: Accurate if project data available
Disadvantages: Impossible if no comparable project has been tackled. Needs systematically
maintained cost database
The project costs whatever resources are available (typically used within an organization)
Advantages: No overspend
Disadvantages: System is usually left unfinished
Pricing to win
176
However, when detailed information is lacking it may be the only appropriate strategy
The most ethical approach:
The project cost is agreed on the basis of an outline proposal and the development is
constrained by that cost
A detailed specification may be negotiated or an evolutionary approach used for system
development
Usable when the architecture of the system is known and components identified
Accurate method if the system has been designed in detail
May underestimate costs of system level activities such as integration and documentation
Estimation methods
176
Each method has strengths and weaknesses
Estimation should be based on several methods
If these do not return approximately the same result and the differences cannot be reconciled,
there is insufficient information available
Some action should be taken to find out more in order to make more accurate estimates
Experience-based estimates
A formulaic approach based on historical cost information and which is generally based on the
size of the software
Cost is estimated as a mathematical function of product, project and process attributes whose
values are estimated by project managers
Effort in PM = A ´ SizeB ´ M
A is depends in on the type of software that is being developed (simple, moderate, embedded)
[will vary 2.4-3.5]
Size is an estimate of the code size or other functional assessmemt [thousands of lines of code, ie.
5,400 LOCà 5.4]
B reflects the disproportionate effort for large projects over small projects [typically 1.0-1.5]
M is a multiplier reflecting a combination of product, process and people attributes (e.g. desired
reliability, reuse required, personnel capability and expereince, support facilities) [will vary up
from 1.0]
176
Estimation accuracy
The size of a software system can only be known accurately when it is finished
Several factors influence the final size
Use of “off the shelf” components
Programming language
Distribution of system
As the development process progresses then the size estimate becomes more accurate
Estimate uncertainty
4x
Estimate uncertainty:
As the project progresses
the probablilty of a difference in
actual to estimate decreases
2x
x Code
Feasibility Requirements Design Delivery
months
0.25x
x = estimated person-months
COCOMO
176
An empirical model based on project experience
Well-documented, ‘independent’ model which is not tied to a specific software vendor
Long history from initial version published in 1981 (COCOMO-81) through various
instantiations to COCOMO 2
COCOMO 2 takes into account different approaches to software development, reuse, etc.
Can be used as a sanity check
These values are selected from a table such as the one below.
176
PERT CHART
PERT CHART stand for Program Evaluation Review Techniques, unlike bar chart PERT can be both a
cost and a time management system. PERT is organized by events and activity or task. One advantage of
the PERT chart is that it is a schedule device that also shows graphically which task must be completed
before others are begun.
176
Program Evaluation Review Techniques (P.E.R.T) Chart
Project
Initiation
Preliminary
Investigation
s.start s.finish
Actual actual
Preliminary
Start Finish
Investigation
Preliminary
Investigation
s.start s.finish
Investigation Investigation
Preliminary Preliminary
Investigation Investigation
Actual actual
LIMITATION OF THE PROJECT
This is the demo project so, it can’t be use in real world. Because, when the project is
running it may produce some errors. And the database is restricted because the shopkeepers can’t
add the records more than hundred records. This project can use more memory and more cpu.
Finally, we can say the this project is made for the shopkeepers but they can’t use in real.
176
SCOPE OF THE FUTURE APPLICATION
As this is the demo project for submitting in BCA 6th sem. But It can be used in a real world after
some modification like employee details, Accounts etc. This project in developed for the small book
176
BIBLIOGRAPHY
MSDN Library
176
176
[BOOK SHOP MANAGEMENT SYSTEM]