Beruflich Dokumente
Kultur Dokumente
Introduction
1.1 Overview of Project
1.2 Objectives
1.3 Modules
1.4 Architecture and Design of the project
2. Literature Survey
2.1 Existing System
2.1.1 Drawbacks of Existing System
2.2 Proposed System
2.2.1 Merits of Proposed System
2.3 Overview of Language used
2.3.1 Introduction of Microsoft Visual Basic 6.0
2.3.1.1 The Programming Process
2.3.1.2 Understanding Program Maintenance
2.3.1.3 Visual Basic is a Smart Language
2.3.1.4 Tool Box Control
2.3.1.5 Adding Control
2.3.1.6 Removing Control
2.3.1.7 Intrinsic Control
2.3.1.8 Label Control
2.3.1.9 Command Bottom
2.3.1.10 Text Control
2.3.1.11 what does VB 6.0 has
2.3.1.12 Visual Basic with Databases
2.3.1.13 Active X Data Object Components
2.3.2 Introduction of MS Access 2003
3. Requirement Analysis
3.1 Role of SRS
3.2 Aim
3.3 Purpose
3.4 Scope
3.5 Application Requirements
3.6 Hardware Requirements
3.7 Functional Requirements
3.7.1 Administrator Functional Requirements
3.8 Non-Functional Requirements
3.8.1 Reliability
3.8.2 Usability
3.8.3 Maintainability
3.8.4 Performance
5
4. Design
4.1 Data Flow Diagram Notations
4.2 Context Diagram
4.3 Low Level DFD
4.3.1 Level1 DFD Admin
4.3.2 Level1 DFD User
4.4 High Level DFD
4.4.1 Level2 DFD User
4.4.2 Level2 DFD Admin
4.5 Entity-Relationship Diagram
4.6 Module Design
4.6.1
4.6.2
4.6.3
4.6.4
4.7 Database Design
4.7.1 Introduction to Database Design
4.7.2 Tables Created
5. Coding
6. Testing
6.1 Introduction to Testing
6.1.1 White Box Testing
6.1.2 Black Box Testing
6.1.3 Application Strategies
6.1.4 Unit Testing
6.1.5 Integration Testing
6.1.6 Validation Testing
6.1.7 System Testing
6.2 Multi-User System
6.3 Testing Results
7. Conclusion
8. Future Enhancement
9. Bibliography
6
Chapter 1
Introduction
We all know health is a wealth. We do not need a fancy car, big apartment, a
doctor degree without a health. Being healthy is a first thing we need to keep
in mind. Because most of time our attitude depends on how we feel. Being
healthy and fit gives us energy to do anything. So how do we stay fit? Be
7
active, eat green and hit a gym!
Physical fitness is very necessary for a healthy and tension free life. Physical
fitness includes diet, exercise and sleep. These three basic things have their
own importance in each individual's life and everyone should be sensible
with regard to these for a healthy life.
Our proposed Smart Gym System is for those who runs a gym business. Before doing
anything we did a decent research on major difficulties for gym owners. We examined carefully
about how to make a huge registering system without failure as well as different functions for
different kind of user depending on their privilege.
Objectives
First thing we wanted to do in designing is avoid boring formal user interface. So we tried to
develop modern graphic user interface system. This application is for gym owners as well as for
their staffs to register new member, and take body measurements and see the reports of financial
and individual body progress. To use features of our application user has to enter password and
username. If you want to visit and make changes in admin panel you have to unlock the admin
panel by typing password in it. In the admin panel admin able to create username with password,
set privilege to groups which means which user can do what operations like see report, take
measurement etc. Also admin able to create groups and membership plans and apply it.
8
1.3 Modules:
Administrator Module
This module includes storing and retrieving the details of the data. The detail of the
entertainment which is stored is categorized into different types like:
Creating user
Admin can create an user along with password. Admin also able to put a user in a
particular groups.
Creating group
Create a group and set privilege for it. It includes read, read/write, read/write/delete
permissions.
User Module
9
The application will be made of Desktop based distributed two-tier architecture to
support user entertainment at the same time.
10
DFD LEVEL-0: CONTEXT DIAGRAM :
11
12
Chapter 2
Literature Survey
Everything on the earth either living or non-living has an evolution cycle. Like scientist has
proved that human has completed an evolution cycle from ape to man. In same manner the
computer has an evolution cycle, as technology is improving the computers are becoming more
and more efficient. Similarly as the computer architecture is improving day by day, it also
requires upgrading the previous systems accordingly.
13
As we have developed this application for the first time. Similar applications of different
companies are present in the market and we tried to study those, a brief discussion was carried
out with the project guide to know more details about existing system. After discussion the
various deficiencies in the system was identified these points are noted down and discussed with
project guide again and decide where to make modification over existing system.
Since we are implementing our application in the new envoirnment and using the present
technologies so as to make it more efficient, there was a need to understand the applications
environment and also about the new technologies. And while implementing the application
various thing has been taken into consideration like application will also be usable for those end
users who dont understand english.
An Existing system refers to the system that is being followed till now. Presently all the resume
Functionalities are done manually. This is making the person very difficult to keep track of the
client and the members in the job seeker.
14
The online mobile shopping application is user-friendly application. Most of the information
about different brand of latest mobile to the customer who wants to know the details and want to
buy. It is very simple in design and to implement. The system requirements are very low.
System resources and the system will work in almost all configurations.
Visual Basic 6 is Microsoft's latest and greatest version of the Visual Basic programming
language. Although writing programs can be a tedious chore at times, Visual Basic reduces the
15
effort required on your part and makes programming enjoyable. Visual Basic makes many
aspects of programming as simple as dragging graphic objects onto the screen with your mouse.
Microsoft based Visual Basic on a programming language written for beginners called BASIC.
BASIC has been around for more than 35 years in one form or another. The original language
designers wanted to develop a programming language that beginners could use. With BASIC,
new programmers could become proficient right away.
BASIC stands for Beginner's All-purpose Symbolic Instruction Code. That's some abbreviation!
A programming language is a set of commands and command options, called arguments, that
you use to give instructions to the computer. Computers cannot (yet) understand human
languages because people deal well with ambiguous commands, and a computer cannot
understand such ambiguity. A programming language must be more precise than a spoken
language.
Over time you'll find your own way of writing programs that works best for you. Nevertheless,
you'll generally follow these standard set of steps when creating your Visual Basic programs:
2. Create the visual portion of your application (the screens and menus that your users will
interact with).
3. Add Visual Basic programming language code to tie the visual elements together and to
automate the program.
4. Test your application to locate and remove any bugs you find.
5. Compile your tested application and distribute the compiled application to your users.
Bugs are not the only reason that you will work on a program after you think you're completely
done with it. Program maintenance is necessary because requirements change, companies
change, and laws change. You must also change the programs you write so that they remain
16
viable programs; you will need to update your program periodically to reflect changes that
impact the program. In addition, users will think of new things that they want the program to do.
Program maintenance is the term used for the updating of a program after the program is put into
use. This update may be a result of a user's request or a change in the way the program needs to
operate.
It is said that a program is written once and modified many times. The more program
maintenance you perform, the more likely that your program will be up-to-date and in use. You
may want to release new versions of your program so that users can, with a different version
number on the opening screen that you place there, keep track of the latest version installed on
their system.
The main reason why Visual Basic is so popular and powerful is the same reason behind the
success of Windows. Microsoft took a complex technology (writing computer programs) and
made it easier to use through a graphical interface. Suppose you have to write a program for your
company. In a visual programming environment, you can quickly design the windows that the
user sees by drawing and arranging them just as you would lay out elements for a newspaper.
In a text-based programming system, you control the user interface through program language
commands. Common sense tells you that the visual programming method is easier for
newcomers to learn and requires less time to maintain. In this case, the old adage a picture is
worth a thousand words truly applies. However, do not let me give you the impression that
Visual Basic is just another pretty interface.
Another key concept of Visual Basic is the ability to create and use self-contained components,
or objects.
The toolbox contains all the custom control needed for a visual basic application .several
advanced controls can be added to the project from the menu bar tool, Project Components.
Each control has its own properties, Events and methods. The properties of the controls can be
set either through code or in the properties window, user defined controls can also be created
and added to the tool box. Controls work with multimedia and internet too.
Controls can be placed anywhere on the form. Their size can be changed by using the sizing
handle which appear when a control in selected.
The default controls which are automatically displayed in a toolbox when a form is loaded are
known as intrinsic controls. The intrinsic controls in visual basic are very powerful, since objects
such as buttons, labels, text boxes, and combo or list boxes can be added to a form easily and
coded.
1. Label
2. Command button
3. Text box
4. Frame
5. Option button
6. Check box
7. Picture box
8. Inage box
9. Timer
2.3.1.8 Label
Label control allows the user to display text on a form, which does not change. For example
Label1.caption=Name;
Generally labels are used to print captions for other controls. Text printed on labels cannot be
edited during runtime.
Commands buttons is one of the most powerful and frequently used controls in windows
application. It is used to invoke response from the user or to invoke special functions on the
form.
Textbox control is one of the most popular and versatile mechanism used to display and enters
text in a window user interface. It behaves like a mini text editor providing all the basic text
editing facilities.
The basic properties of a textbox determine the appearance and functionality of a textbox
control. Some of them are as described below:
Enabled: Indicates whether the user can interact with the control or not.
Locked: Boolean. Indicates whether the user can type in the textbox or not.
Max Length: Indicates the maximum number of characters input in the textbox. Default values
are 0, which means any number of characters. The maximum of text can be typed in a textbox is
nearly 64 kb.
Max length property can be set to a specific value restricting the user to type only that many
character.
Multi Line: Specifies whether the textbox will hold a single line or multiple lines.
Password char: Specifies the masking character for text displayed in the textbox. Suppose the
password is set to *, the user than sees an asterisk in the place of every character typed in that
textbox.
19
Scrollbars: Indicates horizontal scrollbars, vertical scrollbars or both for the textbox. This
property is used with multiline property. Multiline textboxes can have horizontal, vertical or both
scroll bars. If a horizontal scrollbar is attached to a text box, the text will not wrap automatically.
The user must press enter to start new line.
SelText: Returns the selected text. A selected text can be converted to uppercase by the
following code:
SelStart: Specifies the position of the first character of the selected text.
SetLength: Returns the length of the selected text. The most common use of these properties is
Text1.selstart=1
Text1.selLength=Len (Text1)
Click: Click event is called when the text box is clicked with the mouse.
Key press: Occurs every time a key is pressed and stores the ASCII code of the key pressed in
keyASCII(an integer type). This event can be used to restrict the user to type only certain
characters.
Controls are elements you can use when designing a user interface.
Visual Basic controls enable you to add features to your programs without you having to be
involved in the details of how these features work. For example, receiving input from a user of
your program is as simple as drawing a control that accepts input. This is a great advantage of
visual programming languagesyou can concentrate on what you want your program to do, not
how to get the programming language to do it.
Just about everything we could write about Visual Basic is, from language reference to ADO
database handling, from creating Web browsers to dragging and dropping data across
applications, from email applications to multimedia players, from creating ActiveX controls and
ActiveX
20
Documents to setup programs, its all here.
ActiveX controls
ActiveX documents
Graphics animation
Drag/drop operations
Graphics applications that draw arcs, circles, rectangles, lines, and more
Email applications
Error handlers
21
File handlers for text and binary data
FTP applications
Dialog boxes
MDI applications
Application deployment
HTTP applications
Image handling: blur, emboss, engrave, flip, sweep, stretch images, and more
OLE applications
Mouse capture
Setup programs
Screen capture
Spreadsheets
22
For database management, Visual Basic application acts as a front-end to the database. This
means the Visual Basic application provides the interface between the user and the database.
This interface allows the user to tell the database what he or she needs and allows the database to
respond to the request displaying the requested information in some manner.
A Visual Basic application cannot directly interact with a database. There are two intermediate
components between the application and the database: the data control and the database
engine:
The data control is a Visual Basic object that connects the application to the database via
the database engine. It is the conduit between the application and the engine, passing information
back and forth between the two.
The database engine is the heart of a Visual Basic database management system. It is
the actual application that does the management. Having this engine saves programmers a lot of
work. The database engine native to Visual Basic is known as the Jet engine. It is the same
engine used by Microsoft Access for database management. Hence, it is primarily used to
work with Access databases, but it can also work with others.
23
To use that and other ADO objects in code, use the Project|References item, select the
Microsoft ActiveX Data Objects Library item, and click on OK, adding the ADO Object Library
to your program.
Now create a new ADO Connection object with the Connection objects Open method:
Here are the arguments for this method:
Connection StringString containing connection information.
UserIDString containing a username to use when establishing the connection.
PasswordString containing a password to use when establishing the connection.
OpenOptionsif set to adConnectAsync, the connection will be opened asynchronously.
Generically, any database management system (DBMS) that can response to queries from client
machines formatted on the SQL language.
24
.
Chapter
25
Requirement Analysis
3.2 Aim
a. This application is designed to maintain the database of job seeker and job providers.
b. The application must give universal access for the users of the system.
c. The application is user friendly and provides all the information required.
d. The application must work properly without problems on all targeted devices and network
support.
3.3 Purpose
26
The purpose of this document is to describe all external requirements of Mobile Management. It
also describes the interfaces for the system. The basic idea behind the project is to bridge the
communication gap between job seekers and the organization.
3.4 Scope
This document is the only one that describes the requirements of the system. It is meant for the
use by the developers, and will also be the basis for validating the final delivered system. Any
changes made to the requirements in the future will have to go through a formal change approval
process. The developer is responsible for asking for clarifications, where necessary, and will not
make any alterations without the permission of the client.
This project helps the job seeker to keep track of the Member and clients details.
27
Hard Disk 10GB or higher
The main purpose of functional requirements is to define all activities or operations that
take place in the system. These are derived through interactions with the users of the system.
Since requirements specification is a comprehensive document and contains a lot of data, it has
been broken down into different stages in this report.
Administrator has all the rights of maintaining all the records of Mobile Management.
Administrators will be responsible for editing and updating the information of the application.
Administrator will only have the rights to create users and give the permissions to the users.
A client has all the privileges on job seeker and the job seeker details. Client cannot make any
changes in the new user creations.
3.8.1 Reliability
Reliability is the correlation of an item, scale, or instrument with a hypothetical one, which truly
measures what it is supposed to. Since the true instrument is not available. The program
according to the requirement can perform the intended function.
28
3.8.2 Usability
Usability refers to the capability of the product to be understood, learned, and used and user
friendly to users, when used under specified conditions. This section should include all of those
requirements that affect usability.
3.8.3 Maintainability
Maintainability is the ease with which a program/specification can be corrected if an error occurs
desires a change in requirements. Specify attributes of application that relate to the ease of
maintenance of the application itself.
3.8.4 Performance
The requirement specification for any system can be broadly stated as given below:
29
Chapter 4
Design
30
4.1 Data flow diagram notations
The dataflow diagram (DFD) is the one of the most important modeling tools. It
shows the use of the data pictorially. DFD represents the flow of data between different
transformations and process in the system. The dataflow shows logical flow of the data.
Different notations used in DFD are:
Functional Processing
It is represented by a diamond. This notation specifies the processing or main
transactions.
Data Flow
An arrow line represents it and name of the data is specified by the side of the
line as label. This arrow line is used to indicate data movement.
Source or Sink
It is represented by a rectangle .It is used for specifying from where data is
coming and where it will reach.
31
Table 1: login table
FIELD DATA
SIZE
NAME TYPE
long
userId number
integer
usernam
text 30
e
passwor
text 30
d
firstnam
text 30
e
lastnam
text 50
e
long
gid number
integer
FIELD DATA
SIZE
NAME TYPE
long
groupId number
integer
groupName text 255
permissionS long
number
etId integer
Table 3: userPermission
DATA
FIELD NAME SIZE
TYPE
permissionId integer
canSeeMember integer
canAddMember integer
canEditMember integer
32
canDeleteMembe
integer
r
canTakeMeasure
integer
ment
canSeeReport integer
canSeeBodyProgr
integer
ess
33
forearms double
chest double
calves double
Date/Tim
mdate e
bodyfat double
waist double
wrist double
34
Coding
35
DialogLoading Form:
Option Explicit
Dim counter As Integer
Private Sub Form_Load()
Dim Action As AnimationActions
Action = gfaPlay
counter = 0
End Sub
Private Sub Timer1_Timer()
If counter >= 2 Then
frmMain.Show
Unload Me
Exit Sub
End If
counter = counter + 1
End Sub
DialogToAccessAdmin Form:
Option Explicit
Private Sub CancelButton_Click()
Unload Me
End Sub
Private Sub Form_Load()
If Me.Visible = True Then
txtPassword.SetFocus
Call CenterChild(frmMain, Me)
End If
End Sub
Private Sub OKButton_Click()
Call databaseconnection
rs.Open "select * from login", con, adOpenStatic
While Not rs.EOF
If rs.Fields(2) = txtPassword.Text Then
Call disconnectdatabase
frmAdmin.Show
Unload Me
Exit Sub
Else
rs.MoveNext
36
End If
Wend
Call disconnectdatabase
MsgBox "You are not granted to access", vbOKOnly + vbExclamation,
"Authentication"
txtPassword.Text = ""
txtPassword.SetFocus
End Sub
dialogToChangeWallpaper Form:
Option Explicit
Dim file As String
Private Sub CancelButton_Click()
Unload Me
End Sub
Private Sub cmdBwse_Click()
CommonDialog1.ShowOpen
Dim ext As String
ext = GetFileExtension(CommonDialog1.FileName)
If ext = "jpg" Or ext = "png" Or ext = "jpeg" Or ext = "bmp" Then
file = CommonDialog1.FileName
Image1.Picture = LoadPicture(file)
Else
MsgBox "Invalid image file!", vbOKOnly + vbExclamation, "Notification"
Exit Sub
End If
End Sub
Private Sub cmdSave_Click()
If file = "" Then
MsgBox "Choose the wallpaper to set!", vbOKOnly + vbExclamation, "Notification"
Exit Sub
End If
FileCopy file, App.Path & "\wallpaper.jpeg"
frmMain.Picture = LoadPicture(App.Path & "\wallpaper.jpeg")
Unload Me
frmMain.SetFocus
End Sub
Private Sub Form_Load()
file = ""
Me.Caption = ""
End Sub
frmAdmin Form:
Dim add As Integer
Dim userId As Integer
Dim planName As String
Dim permId As Integer
Dim file As String
Private Sub cmdDelete_Click()
'delete group sub
If qcombGroup.ListIndex = -1 Then
MsgBox "Select a group to delete!", vbOKOnly + vbExclamation, "Warning"
37
Exit Sub
End If
Dim arr() As String
arr = Split(qcombGroup.Text, " ")
Call databaseconnection
rs.Open "Select * from userGroup", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
Do Until rs.EOF
If rs.Fields(0) = Val(arr(1)) Then
rs.Delete
rs.Update
Exit Do
End If
rs.MoveNext
Loop
rs.Close
rs.Open "select * from userPermission", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
Do Until rs.EOF
If rs.Fields(0) = permId Then
rs.Delete
rs.Update
Exit Do
End If
rs.MoveNext
Loop
rs.Close
Call readGroup
MsgBox "Group deleted!", vbOKOnly + vbInformation, "Warning"
'Call disconnectdatabase
End Sub
Private Sub cmdSave_Click()
'check the empty fields
'check whether group id is exited or not
'add
If qmemberAdd.ListIndex = -1 And _
qmemberDelete.ListIndex = -1 And _
qmemberEdit.ListIndex = -1 And _
qmemberRead.ListIndex = -1 And _
qmeasureAdd.ListIndex = -1 And _
qreadReport.ListIndex = -1 And _
qreadProgress.ListIndex = -1 And _
qgroupId.Text = "" And _
qgroupName.Text = "" Then
MsgBox "Fields cannot be blank!", vbOKOnly + vbExclamation, "Warning"
Exit Sub
38
End If
Call databaseconnection
rs.Open "select * from userGroup"
If Not rs.EOF Then
rs.MoveLast
End If
rs.AddNew
rs.Fields(0) = Val(qgroupId.Text)
rs.Fields(1) = Trim(qgroupName.Text)
rs.Fields(2) = permId
rs.Update
rs.Close
rs.Open "select * from userPermission", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveLast
End If
rs.AddNew
rs.Fields(0) = permId
If qmemberRead.ListIndex = 0 Then
rs.Fields(1) = 1
Else
rs.Fields(1) = 0
End If
If qmemberAdd.ListIndex = 0 Then
rs.Fields(2) = 1
Else
rs.Fields(2) = 0
End If
If qmemberEdit.ListIndex = 0 Then
rs.Fields(3) = 1
Else
rs.Fields(3) = 0
End If
If qmemberDelete.ListIndex = 0 Then
rs.Fields(4) = 1
Else
rs.Fields(4) = 0
End If
If qmeasureAdd.ListIndex = 0 Then
rs.Fields(5) = 1
Else
rs.Fields(5) = 0
End If
If qreadReport.ListIndex = 0 Then
rs.Fields(6) = 1
Else
rs.Fields(6) = 0
End If
If qreadProgress.ListIndex = 0 Then
rs.Fields(7) = 1
39
Else
rs.Fields(8) = 0
End If
rs.Update
rs.Close
Call readGroup
Call clearGroup
End Sub
Private Sub cmdUpdate_Click()
'check the empty fields
'check the group id matches, if then add
If qmemberAdd.ListIndex = -1 And _
qmemberDelete.ListIndex = -1 And _
qmemberEdit.ListIndex = -1 And _
qmemberRead.ListIndex = -1 And _
qmeasureAdd.ListIndex = -1 And _
qreadReport.ListIndex = -1 And _
qreadProgress.ListIndex = -1 And _
qgroupId.Text = "" And _
qgroupName.Text = "" Then
MsgBox "Fields cannot be blank", vbOKOnly + vbExclamation, "Notification"
Exit Sub
End If
Call databaseconnection
rs.Open "select * from userGroup"
If Not rs.EOF Then
rs.MoveFirst
End If
Do While Not rs.EOF
If rs.Fields(0) = Val(qgroupId.Text) Then
rs.Fields(0) = Val(qgroupId.Text)
rs.Fields(1) = Trim(qgroupName.Text)
rs.Update
Exit Do
End If
rs.MoveNext
Loop
rs.Close
rs.Open "select * from userPermission", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveLast
End If
Do Until rs.EOF
If rs.Fields(0) = permId Then
If qmemberRead.ListIndex = 0 Then
rs.Fields(1) = 1
Else
rs.Fields(1) = 0
End If
If qmemberAdd.ListIndex = 0 Then
40
rs.Fields(2) = 1
Else
rs.Fields(2) = 0
End If
If qmemberEdit.ListIndex = 0 Then
rs.Fields(3) = 1
Else
rs.Fields(3) = 0
End If
If qmemberDelete.ListIndex = 0 Then
rs.Fields(4) = 1
Else
rs.Fields(4) = 0
End If
If qmeasureAdd.ListIndex = 0 Then
rs.Fields(5) = 1
Else
rs.Fields(5) = 0
End If
If qreadReport.ListIndex = 0 Then
rs.Fields(6) = 1
Else
rs.Fields(6) = 0
End If
If qreadProgress.ListIndex = 0 Then
rs.Fields(7) = 1
Else
rs.Fields(8) = 0
End If
rs.Update
Exit Do
End If
rs.MoveNext
Loop
rs.Close
Call readGroup
Call clearGroup
End Sub
Private Sub Form_Load()
Call databaseconnection
Call refreshLoginTable
Call refreshMembershipPlanTable
userId = -1
planName = ""
'Fill the table
'Call fillTable
'***Initializing comboBox
qmemberAdd.AddItem ("Allow")
qmemberAdd.AddItem ("Deny")
qmemberEdit.AddItem ("Allow")
41
qmemberEdit.AddItem ("Deny")
qmemberRead.AddItem ("Allow")
qmemberRead.AddItem ("Deny")
qmemberDelete.AddItem ("Allow")
qmemberDelete.AddItem ("Deny")
qmeasureAdd.AddItem ("Allow")
qmeasureAdd.AddItem ("Deny")
qreadProgress.AddItem ("Allow")
qreadProgress.AddItem ("Deny")
qreadReport.AddItem ("Allow")
qreadReport.AddItem ("Deny")
cmdSave.Enabled = False
Dim I As Integer
I=1
While I <= 24
mtxtDuration.AddItem I
I=I+1
Wend
'***Reading groups
Call readGroup
'***Fill lgroup
Call databaseconnection
rs.Open "select * from userGroup", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
While Not rs.EOF
lgroup.AddItem (rs.Fields(0))
rs.MoveNext
Wend
rs.Close
Call disconnectdatabase
44
MsgBox "Username exists! Choose different!", vbOKOnly +
vbExclamation, "Warning"
Exit Sub
End If
rs.MoveNext
Loop
rs.MoveLast
rs.AddNew
rs.Fields(0) = lid.Text
rs.Fields(1) = lusername.Text
rs.Fields(2) = lpassword.Text
rs.Fields(3) = lfname.Text
rs.Fields(4) = llname.Text
rs.Fields(5) = lgroup.Text
rs.Update
rs.Close
Call disconnectdatabase
MsgBox "Record saved", vbOKOnly + vbInformation, "Notification"
lcmdAdd.Caption = "Add"
add = 0
Call clearLoginFields
Call refreshLoginTable
Exit Sub
End If
End Sub
Private Sub lcmdCancel_Click()
Unload Me
End Sub
Private Sub lcmdDelete_Click()
If userId = -1 Then
MsgBox "Select a user to delete!", vbOKOnly + vbExclamation, "Notification"
Exit Sub
End If
Call databaseconnection
rs.Open "Select * from login", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
Do Until rs.EOF
If rs.Fields(0) = userId Then
rs.Delete
MsgBox "User is deleted", vbOKOnly + vbInformation, "Notification"
Exit Do
End If
rs.MoveNext
Loop
rs.Close
Call refreshLoginTable
End Sub
45
Private Sub lcmdModify_Click()
If lid.Text = "" And lusername.Text = "" And lpassword.Text = "" And lfname.Text
= "" And llname.Text = "" And lgroup.Text = "" Then
MsgBox "All fields are mandatory!", vbOKOnly + vbExclamation,
"Notification"
Exit Sub
End If
Call databaseconnection
rs.Open "select * from login", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
Do Until rs.EOF
If rs.Fields(0) = lid.Text Then
rs.Fields(0) = lid.Text
rs.Fields(1) = lusername.Text
rs.Fields(2) = lpassword.Text
rs.Fields(3) = lfname.Text
rs.Fields(4) = llname.Text
rs.Fields(5) = lgroup.Text
rs.Update
rs.Close
Exit Do
End If
rs.MoveNext
Loop
Call disconnectdatabase
MsgBox "Record updated!", vbOKOnly + vbInformation, "Notification"
Call clearLoginFields
Call refreshLoginTable
End Sub
Private Sub lcmdRefresh_Click()
Call refreshLoginTable
End Sub
Private Sub loginTable_Click()
userId = loginTable.Columns(0)
lid.Text = loginTable.Columns(0)
lusername.Text = loginTable.Columns(1)
lpassword.Text = loginTable.Columns(2)
lfname.Text = loginTable.Columns(3)
llname.Text = loginTable.Columns(4)
Dim Index As Integer
Index = 0
For Index = 0 To lgroup.ListCount - 1
If UCase$(lgroup.ItemData(Index)) = UCase$(loginTable.Columns(5)) Then
lgroup.ListIndex = Index
Exit For
End If
Next
'group from comboBox
46
End Sub
Private Sub mcmdDelete_Click()
If planName = "" Then
MsgBox "Choose the plan to delete!", vbOKOnly + vbExclamation, "Notification"
Exit Sub
End If
Call databaseconnection
rs.Open "select * from membershipPlan", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
While Not rs.EOF
If rs.Fields(0) = planName Then
rs.Delete
rs.Update
rs.Close
planName = ""
Call disconnectdatabase
Call refreshMembershipPlanTable
mtxtplanname.Text = ""
mtxtfinalAMT.Caption = ""
mtxtdiscount.Text = ""
mtxtamount.Text = ""
Exit Sub
End If
rs.MoveNext
Wend
End Sub
Private Sub mcmdSave_Click()
If mtxtplanname.Text = "" And mtxtamount.Text = "" And mtxtdiscount.Text = ""
And mtxtDuration.Text = "Select" Then
MsgBox "Fill the blanks!", vbOKOnly + vbExclamation, "Notification"
Exit Sub
End If
Call databaseconnection
rs.Open "select * from membershipPlan", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveLast
End If
rs.AddNew
rs.Fields(0) = Trim(mtxtplanname.Text)
rs.Fields(1) = Val(mtxtDuration.Text)
rs.Fields(2) = Val(mtxtfinalAMT.Caption)
rs.Update
rs.Close
Call disconnectdatabase
Call refreshMembershipPlanTable
mtxtplanname.Text = ""
mtxtfinalAMT.Caption = ""
mtxtdiscount.Text = ""
47
mtxtamount.Text = ""
End Sub
Private Sub mcmdUpdate_Click()
If mtxtplanname.Text = "" And mtxtamount.Text = "" And mtxtdiscount.Text = ""
Then
MsgBox "Fill the blanks!", vbOKOnly + vbExclamation, "Notification"
Exit Sub
End If
If mtxtfinalAMT.Caption = "" Then
MsgBox "Final amount is not calculated!", vbOKOnly + vbExclamation, "Notification"
Exit Sub
End If
Call databaseconnection
Dim rsTemp As ADODB.Recordset
Set rsTemp = New ADODB.Recordset
rsTemp.Open "select * from membershipPlan", con, adOpenDynamic,
adLockOptimistic
If Not rsTemp.EOF Then
rsTemp.MoveFirst
End If
Do While Not rsTemp.EOF
If rsTemp.Fields(0) = mtxtplanname.Text Then
rsTemp.Fields(0) = mtxtplanname.Text
rsTemp.Fields(1) = Val(mtxtDuration.Text)
rsTemp.Fields(2) = Val(mtxtfinalAMT.Caption)
rsTemp.Update
mtxtplanname.Text = ""
mtxtfinalAMT.Caption = ""
mtxtdiscount.Text = ""
mtxtamount.Text = ""
Call refreshMembershipPlanTable
Exit Do
End If
rsTemp.MoveNext
Loop
'rsTemp.Close
End Sub
Private Sub membershipPlan_Click()
planName = Trim(membershipPlan.Columns(0))
mtxtplanname = planName
mtxtamount = membershipPlan.Columns(2)
mtxtDuration = membershipPlan.Columns(1)
End Sub
rs.Close
Call disconnectdatabase
qcombGroup.AddItem ("Add new group")
End Sub
Public Sub clearGroup()
qmemberAdd.Text = ""
qmemberEdit.Text = ""
qmemberRead.Text = ""
qmemberDelete.Text = ""
qmeasureAdd.Text = ""
qreadProgress.Text = ""
qreadReport.Text = ""
qgroupId.Text = ""
qgroupName.Text = ""
'cmdUpdate.Enabled = True
'cmdSave.Enabled = True
End Sub
Public Sub clearLoginFields()
lid.Text = ""
lusername.Text = ""
lpassword.Text = ""
lfname.Text = ""
llname.Text = ""
lgroup.Text = ""
End Sub
Public Sub refreshLoginTable()
loginTable.ClearFields
loginTableDC.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & App.Path & "\Data\sgsdata.mdb;Persist Security Info=False"
loginTableDC.CommandType = adCmdText
loginTableDC.RecordSource = "select * from login"
Set loginTable.DataSource = loginTableDC
51
loginTableDC.Refresh
loginTable.Refresh
End Sub
Public Sub refreshMembershipPlanTable()
membershipPlan.ClearFields
membershipPlanDC.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & App.Path & "\Data\sgsdata.mdb;Persist Security Info=False"
membershipPlanDC.CommandType = adCmdText
membershipPlanDC.RecordSource = "select * from membershipPlan"
Set membershipPlan.DataSource = membershipPlanDC
membershipPlanDC.Refresh
membershipPlan.Refresh
End Sub
frmIndividualReport Form:
Option Explicit
Dim mId As Integer
str = getTotalAmtPaidOf(memberId)
If Not str = "" Then
lblTotalAmtPaid.Caption = "Total amount paid : " & str
Else
lblTotalAmtPaid.Caption = "Payment History is empty"
End If
str = ""
lblSinceJoinedDate.Caption = sinceJoinedDateOf(memberId)
lblDueDate.Caption = "Due Date : " & getDueDateOf(memberId)
End Function
Private Sub txtSearch_Change()
If txtSearch.Text = "" Then
memberTable.ClearFields
memberTableDC.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & App.Path & "\Data\sgsdata.mdb;Persist Security Info=False"
memberTableDC.CommandType = adCmdText
memberTableDC.RecordSource = "select memberId, firstname, lastname from
members"
Set memberTable.DataSource = memberTableDC
memberTableDC.Refresh
memberTable.Refresh
Exit Sub
End If
If optRno.Value Then
memberTable.ClearFields
memberTableDC.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & App.Path & "\Data\sgsdata.mdb;Persist Security Info=False"
memberTableDC.CommandType = adCmdText
memberTableDC.RecordSource = "select memberId, firstname, lastname from
members where memberId like '" & Val(txtSearch.Text) & "%'"
Set memberTable.DataSource = memberTableDC
53
memberTableDC.Refresh
memberTable.Refresh
ElseIf optFname.Value Then
memberTable.ClearFields
memberTableDC.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & App.Path & "\Data\sgsdata.mdb;Persist Security Info=False"
memberTableDC.CommandType = adCmdText
memberTableDC.RecordSource = "select memberId, firstname, lastname from
members where firstname like '" & txtSearch.Text & "%'"
Set memberTable.DataSource = memberTableDC
memberTableDC.Refresh
memberTable.Refresh
End If
End Sub
Private Sub txtSearch_GotFocus()
If optRno.Value = False And optFname.Value = False Then
MsgBox "Choose the search option!", vbOKOnly + vbExclamation, "Warning"
Exit Sub
End If
txtSearch.Text = ""
End Sub
57
hMenuImg = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE
Or LR_CREATEDIBSECTION)
Call SetMenuItemBitmaps(hSubMenu, 2, MF_BYPOSITION, hMenuImg, 0)
sFileName = App.Path & "\Icons\menuIcons\Progress.bmp"
hMenuImg = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE
Or LR_CREATEDIBSECTION)
Call SetMenuItemBitmaps(hSubMenu, 3, MF_BYPOSITION, hMenuImg, 0)
frmMember Form:
Public loadType As Integer
Public payment As Boolean
Public memberId As Integer
Dim ibj As Object
Dim dtmTest As Date
Dim dateTimeNow As String
Dim dd As String
Dim tt As String
Dim photoUrl As String
Dim photoName As String
Dim isClicked As Boolean
txtdueDate.Text = rs.Fields(9)
Exit Do
End If
rs.MoveNext
Loop
rs.Close
Dim rs2 As ADODB.Recordset
Set rs2 = New ADODB.Recordset
rs2.CursorLocation = adUseClient
rs2.Open "SELECT * FROM paymentTransaction WHERE memberId=" &
Val(txtid.Text), con, adOpenDynamic, adLockOptimistic
Set PaymentHistory.DataSource = rs2
Call generateSelfReport
Exit Sub
Else
'#######memberAdd
Me.Caption = "New member"
txtdoj.Enabled = False
Me.Height = Line1.Y2 + 400
dd = Format$(Now, "mm/dd/yyyy")
tt = Format$(time, "hh:mm:ssAM/PM")
dateTimeNow = dd & " " & tt
txtdoj.Text = dateTimeNow '***********Generating ID for the new
member*********************************
rs.Open "Select memberId from members", con, adOpenStatic, adLockOptimistic
If rs.EOF = True Then
txtid.Text = 1
Else
rs.MoveLast
txtid.Text = rs.Fields(0) + 1
End If
rs.Close
'****************************************************************************
End If
End Sub
Public Function clear()
txtid.Locked = True
txtid.Text = ""
63
txtfname.Text = ""
txtlname.Text = ""
txtgender.Text = "Select"
txtdob.Value = "1/1/2012"
txtnumber.Text = ""
txtaddress.Text = ""
End Function
Private Sub Form_Unload(Cancel As Integer)
If loadType = 0 Then
If MsgBox("Do you want to cancel?", vbOKOnly + vbQuestion, "Notification")
= vbYes Then
Unload Me
Call disconnectdatabase
Exit Sub
Else
Exit Sub
End If
End If
Unload Me
Call disconnectdatabase
End Sub
Public Function generateSelfReport()
Dim str As String
lblMemberNameGreeting.Caption = txtid.Text & " " & txtfname.Text & " " &
txtlname.Text
str = getLastMeasurementDateOf(Val(txtid.Text))
If Not str = "" Then
lblLastMeasurementDate.Caption = "Last measurement date: " & str
Else
lblLastMeasurementDate.Caption = "Measurement History is empty"
End If
str = ""
lblBMIChange.Caption = "BMI change : " & getBMIchangeOf(Val(txtid.Text))
lblBodyFatChange.Caption = "Body Fat change : " &
getBodyFatChangeOf(Val(txtid.Text))
lblWeightChange.Caption = "Weight change : " &
getWeightChangeOf(Val(txtid.Text))
str = getLastPaymentDateOf(Val(txtid.Text))
If Not str = "" Then
lblLastPaymentDate.Caption = "Last Payment Date : " & str
Else
lblLastPaymentDate.Caption = "Payment History is empty"
End If
str = ""
str = getTotalAmtPaidOf(Val(txtid.Text))
If Not str = "" Then
lblTotalAmtPaid.Caption = "Total amount paid : " & str
Else
lblTotalAmtPaid.Caption = "Payment History is empty"
End If
64
str = ""
lblSinceJoinedDate.Caption = sinceJoinedDateOf(Val(txtid.Text))
lblDueDate.Caption = "Due Date : " & getDueDateOf(Val(txtid.Text))
Dim rs3 As ADODB.Recordset
Set rs3 = New ADODB.Recordset
rs3.CursorLocation = adUseClient
rs3.Open "SELECT * FROM progressMember WHERE memberId=" & Val(txtid.Text),
con, adOpenDynamic, adLockOptimistic
Set measurementHistory.DataSource = rs3
End Function
Private Sub txtnumber_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
frmMemberlist Form:
Dim memberId As Integer
Dim oSelRows As SelBookmarks
Dim bookmark As Double
Private Sub cmdAddMember_Click()
frmMember.loadType = 0
frmMember.Show
End Sub
Private Sub cmdDeleteMember_Click()
If memberId = -1 Then
MsgBox "Select the member to delete!", vbOKOnly + vbExclamation,
"Notification"
Exit Sub
End If
If MsgBox("Are you really want to delete the user?", vbYesNo + vbQuestion,
"Notification") = vbYes Then
'delete
rs.Open "Select * from members", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
Do While Not rs.EOF
If rs.Fields(0) = memberId Then
rs.Delete
rs.Update
rs.Close
Exit Do
End If
rs.MoveNext
Loop
rs.Close
rs.Open "select * from progressMember", con, adOpenDynamic,
adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
65
End If
Do While Not rs.EOF
If rs.Fields(0) = memberId Then
rs.Delete
rs.Update
rs.Close
Exit Do
End If
rs.MoveNext
Loop
rs.Close
ElseIf answer = vbNo Then
frmMemberlist.SetFocus
End If
End Sub
Private Sub cmdMakePayment_Click()
If memberId = -1 Then
MsgBox "Select the member to make payment!", vbOKOnly + vbExclamation,
"Notification"
Exit Sub
End If
frmPayment.memberId = memberId
frmPayment.Show
memberId = -1
End Sub
Private Sub cmdModifyMember_Click()
If memberId = -1 Then
MsgBox "Select the member to modify!", vbOKOnly + vbExclamation,
"Notification"
Exit Sub
End If
frmMember.loadType = 1
frmMember.memberId = memberId
frmMember.Show
memberId = -1
End Sub
Private Sub cmdShowProfile_Click()
If memberId = -1 Then
MsgBox "Select the member to modify!", vbOKOnly + vbExclamation,
"Notification"
Exit Sub
End If
frmMember.loadType = 2
frmMember.memberId = memberId
frmMember.Show
memberId = -1
End Sub
Private Sub cmmdTakeMeasurement_Click()
frmMemberMeasurement.memberId = Val(DataGrid1.Columns(0))
66
frmMemberMeasurement.Show
End Sub
Private Sub DataGrid1_Click()
memberId = DataGrid1.Columns(0)
End Sub
68
If MsgBox("Measurement will be declined", vbYesNo + vbQuestion, "Notification")
= vbYes Then
Unload Me
End If
End Sub
Private Sub cmdSave_Click()
If c1height.Text = "" And _
c2weight.Text = "" And _
c3neck.Text = "" And _
c4hips.Text = "" And _
c5waist.Text = "" And _
c6forearm.Text = "" And _
c7wrist.Text = "" Then
MsgBox "Core Measurement fields are mandatory!", vbOKOnly +
vbExclamation, "Notification"
Exit Sub
End If
dd = Format$(Now, "mm/dd/yyyy")
tt = Format$(time, "hh:mm:ssAM/PM")
dateTimeNow = dd & " " & tt
Call databaseconnection
rs.Open "select * from progressMember", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveLast
End If
rs.AddNew
rs.Fields(0) = Val(lblmemberId.Caption)
rs.Fields(1) = Val(c1height.Text)
rs.Fields(2) = Val(c2weight.Text)
rs.Fields(3) = Val(lblBMI.Caption)
rs.Fields(4) = Val(d1bicep.Text)
rs.Fields(5) = Val(c4hips.Text)
rs.Fields(6) = Val(d2thigh.Text)
rs.Fields(7) = Val(c3neck.Text)
rs.Fields(8) = Val(c6forearm.Text)
rs.Fields(9) = Val(d3chest.Text)
rs.Fields(10) = Val(d4calves.Text)
rs.Fields(11) = dateTimeNow
Dim tempArray() As String
tempArray = Split(lblBodyFat.Caption, "%")
rs.Fields(12) = Val(tempArray(0))
rs.Fields(13) = Val(c5waist.Text)
rs.Fields(14) = Val(c7wrist.Text)
rs.Update
rs.Close
MsgBox "Measurement of " & memberId & " was successfully added", vbOKOnly
+ vbInformation, "Notification"
Unload Me
End Sub
Private Sub d1bicep_KeyPress(KeyAscii As Integer)
69
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub d2thigh_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub d3chest_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub d4calves_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub Form_Load()
optionCore.Value = True
corePanel.Enabled = True
detailedPanel.Enabled = False
detailedPanel.BackColor = &HE0E0E0
Me.Caption = "Measurement"
dd = Format$(Now, "mm/dd/yyyy")
tt = Format$(time, "hh:mm:ssAM/PM")
dateTimeNow = dd
lblDate.Caption = dateTimeNow
Call databaseconnection
rs.Open "select * from members", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
Do While Not rs.EOF
If rs.Fields(0) = memberId Then
lblmemberId.Caption = rs.Fields(0)
lblname.Caption = rs.Fields(1) & " " & rs.Fields(2)
If rs.Fields(3) = "Male" Then
memberGender = True
Else
memberGender = False
End If
Exit Do
End If
rs.MoveNext
Loop
rs.Close
End Sub
70
Private Sub Form_Unload(Cancel As Integer)
If MsgBox("Measurement will be declined", vbYesNo + vbQuestion, "Notification")
= vbYes Then
Unload Me
End If
End Sub
Private Sub optionCore_Click()
corePanel.Enabled = True
detailedPanel.Enabled = False
detailedPanel.BackColor = &HE0E0E0
End Sub
optionCore.Value = True
corePanel.Enabled = True
detailedPanel.Enabled = False
detailedPanel.BackColor = &HE0E0E0
Me.Caption = "Measurement"
dd = Format$(Now, "mm/dd/yyyy")
tt = Format$(time, "hh:mm:ssAM/PM")
dateTimeNow = dd
lblDate.Caption = dateTimeNow
Call databaseconnection
rs.Open "select * from members", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
73
Do While Not rs.EOF
If rs.Fields(0) = memberId Then
lblmemberId.Caption = rs.Fields(0)
lblname.Caption = rs.Fields(1) & " " & rs.Fields(2)
If rs.Fields(3) = "Male" Then
memberGender = True
Else
memberGender = False
End If
Exit Do
End If
rs.MoveNext
Loop
rs.Close
End Sub
Private Sub Form_Unload(Cancel As Integer)
If MsgBox("Measurement will be declined", vbYesNo + vbQuestion, "Notification")
= vbYes Then
Unload Me
End If
End Sub
Private Sub optionCore_Click()
corePanel.Enabled = True
detailedPanel.Enabled = False
detailedPanel.BackColor = &HE0E0E0
End Sub
Private Sub optionDetailed_Click()
corePanel.Enabled = True
detailedPanel.Enabled = True
detailedPanel.BackColor = corePanel.BackColor
End Sub
frmPayment Form:
Public memberId As Integer
Dim duration As Integer
Option Explicit
Private Sub cmdCancel_Click()
Call disconnectdatabase
Unload Me
End Sub
Private Sub cmdPay_Click()
rs.Open "select * from paymentTransaction", con, adOpenDynamic,
adLockOptimistic
If Not rs.EOF Then
rs.MoveLast
End If
rs.AddNew
rs.Fields(0).Value = txtid.Text
rs.Fields(1).Value = Format$(Now, "mm/dd/yyyy") & " " & Format$(time,
"hh:mm:ssAM/PM")
74
rs.Fields(2).Value = Val(txtPayableAmt.Caption)
rs.Fields(3).Value = Val(lblBillno.Caption)
rs.Update
rs.Close
If MsgBox("Payment Transaction done! " & vbCrLf & "Do you want to print the
receipt?", vbYesNo + vbQuestion, "Notification") = vbYes Then
'Receipt Print page generation
***************************************************
Dim rsTemp As ADODB.Recordset
Set rsTemp = New ADODB.Recordset
rsTemp.Open "select * from gymDetail", con, adOpenDynamic,
adLockOptimistic
If Not rsTemp.EOF Then
rsTemp.MoveFirst
End If
Dim zgname As String
Dim zaddress As String
Dim zphone As String
Dim zmname As String
Dim zpType As String
Dim zdueDate As String
Dim zdate As String
frmProgress Form:
Public memberId As Integer
Public fname As String
Public lname As String
77
Private Sub Form_Load()
lblFname.Caption = fname
lblLname.Caption = lname
lblmemberId.Caption = memberId
tableDC.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
App.Path & "\Data\sgsdata.mdb;Persist Security Info=False"
tableDC.CommandType = adCmdText
tableDC.RecordSource = "select * from progressMember where memberId=" &
memberId
Set table.DataSource = tableDC
End Sub
frmReport Form:
Option Explicit
Dim billNo As Integer
Dim paymentQuery As String
Dim memberId As Integer
Dim memberId1 As Integer
Private Sub cmdPrint_Click()
If paymentQuery = "" Then
Exit Sub
End If
Dim sum As Double
Dim Count As Integer
Dim gName As String
Dim gAddress As String
Dim rec As ADODB.Recordset
Set rec = New ADODB.Recordset
rec.Open "select * from gymDetail", con, adOpenDynamic, adLockOptimistic
If Not rec.EOF Then
rec.MoveFirst
gName = rec.Fields(0)
gAddress = rec.Fields(1)
Else
gName = ""
gAddress = ""
End If
rec.Close
rec.Open paymentQuery, con, adOpenDynamic, adLockOptimistic
Count = 0
sum = 0
If Not rec.EOF Then
rec.MoveFirst
End If
Do Until rec.EOF
sum = sum + rec.Fields(2)
Count = Count + 1
rec.MoveNext
Loop
Set PaymentP.DataSource = rec
PaymentP.DataMember = rs.DataMember
78
PaymentP.Sections("Section4").Controls("lblGymName").Caption = gName
PaymentP.Sections("Section4").Controls("lblAddress").Caption = gAddress
PaymentP.Sections("Section5").Controls("lblRecordCount").Caption = "Total
Transaction : " & Count
PaymentP.Sections("Section2").Controls("lblRange").Caption = "Range : " &
dtFrom.Value & " - " & dtTo.Value
PaymentP.Sections("Section5").Controls("lblTotalTransaction").Caption = "Total : "
& sum & "rs"
PaymentP.Show
End Sub
Private Sub cmdPrintDue_Click()
Call databaseconnection
Dim gymName As String
Dim gymAddress As String
Dim countM As Integer
Dim recM As ADODB.Recordset
Set recM = New ADODB.Recordset
recM.Open "select * from gymDetail", con, adOpenDynamic, adLockOptimistic
If Not recM.EOF Then
recM.MoveFirst
gymName = recM.Fields(0)
gymAddress = recM.Fields(1)
Else
gymName = ""
gymAddress = ""
End If
recM.Close
countM = countOutdatedMembers
Set recM = getOutdatedMembers
Set DueMembersP.DataSource = recM
DueMembersP.DataMember = recM.DataMember
DueMembersP.Sections("Section4").Controls("lblGymName").Caption = gymName
DueMembersP.Sections("Section4").Controls("lblAddress").Caption = gymAddress
DueMembersP.Sections("Section3").Controls("lblCount").Caption = countM
DueMembersP.Show
End Sub
Private Sub cmdPrintReceipt_Click()
If billNo = -1 Then
MsgBox "Choose a bill to print!", vbOKOnly + vbExclamation, "Notification"
Exit Sub
End If
'Receipt Print page generation ***************************************************
Dim zgname As String
Dim zaddress As String
Dim zphone As String
Dim zmname As String
Dim zpType As String
Dim zdueDate As String
Dim zdate As String
Dim zBillNo As Integer
79
Dim zId As Integer
Dim zAmt As Double
Dim rsTemp As ADODB.Recordset
Set rsTemp = New ADODB.Recordset
rsTemp.Open "select * from gymDetail", con, adOpenDynamic,
adLockOptimistic
If Not rsTemp.EOF Then
rsTemp.MoveFirst
End If
Do Until rsTemp.EOF
zgname = rsTemp.Fields(0)
zaddress = rsTemp.Fields(1)
zphone = rsTemp.Fields(3)
Exit Do
Loop
rsTemp.Close
rsTemp.Open "select * from paymentTransaction where billno=" & billNo,
con, adOpenDynamic, adLockOptimistic
If Not rsTemp.RecordCount = 0 Then
If Not rsTemp.EOF Then
rsTemp.MoveFirst
End If
zBillNo = Val(rsTemp.Fields(3))
zdate = rsTemp.Fields(1)
zAmt = Val(rsTemp.Fields(2))
zId = Val(rsTemp.Fields(0))
Else
zBillNo = 0
zdate = ""
zAmt = 0
zId = 0
End If
rsTemp.Close
rsTemp.Open "Select * From members where memberId=" & zId, con,
adOpenDynamic, adLockOptimistic
If Not rsTemp.RecordCount = 0 Then
rsTemp.MoveFirst
zmname = rsTemp.Fields(1)
zdueDate = rsTemp.Fields("dueDate")
Else
zmname = ""
zdueDate = ""
End If
rsTemp.Close
rsTemp.Open "Select * from membershipPlan where amt=" & zAmt, con,
adOpenDynamic, adLockOptimistic
If Not rsTemp.RecordCount = 0 Then
zpType = rsTemp.Fields("planName")
Else
zpType = ""
80
End If
rsTemp.Close
Dim rsT As ADODB.Recordset
Set rsT = New ADODB.Recordset
rsT.Open "select * from gymDetail", con, adOpenDynamic, adLockOptimistic
Set ReceiptP.DataSource = rsT
ReceiptP.DataMember = rsT.DataMember
ReceiptP.Sections("Section0").Controls("lblGymName").Caption = zgname
ReceiptP.Sections("Section0").Controls("lblAddress").Caption = zaddress
ReceiptP.Sections("Section0").Controls("lblPhone").Caption = zphone
ReceiptP.Sections("Section1").Controls("lblBillNo").Caption = "Receipt No : "
& zBillNo
ReceiptP.Sections("Section2").Controls("lblMemberName").Caption =
zmname
ReceiptP.Sections("Section2").Controls("lblPlanName").Caption = zpType
ReceiptP.Sections("Section2").Controls("lblDueDate").Caption = zdueDate
ReceiptP.Sections("Section2").Controls("lblAmtPaid").Caption = zAmt
ReceiptP.Sections("Section2").Controls("lblMemberId").Caption = zId
ReceiptP.Sections("Section1").Controls("lblReceiptDate").Caption = "Receipt
Date : " & zdate
ReceiptP.Show
'ENDING RECEIPT GENERATION
******************************************************
End Sub
Private Sub cmdProfile_Click()
If memberId = -1 Then
MsgBox "Select a member ID to see the profile!", vbOKOnly + vbExclamation,
"Warning"
Exit Sub
End If
frmMember.loadType = 2
frmMember.memberId = memberId
frmMember.Show
End Sub
Private Sub cmdShowProfile_Click()
If memberId1 = -1 Then
MsgBox "Select a member ID to see the profile!", vbOKOnly + vbExclamation,
"Warning"
Exit Sub
End If
frmMember.loadType = 2
frmMember.memberId = memberId1
frmMember.Show
End Sub
Private Sub combIncome_Click()
Dim arr() As String
arr = Split(combIncome.Text, " ")
lblIncomeByRange.Caption = combIncome.Text & " Income : " &
getIncomeByRange(Val(arr(1)))
81
End Sub
Private Sub dtFrom_Change()
paymentTransaction.ClearFields
paymentTransactionDC.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path &
"\Data\sgsdata.mdb;Persist Security Info=False"
paymentTransactionDC.CommandType = adCmdText
paymentTransactionDC.RecordSource = "SELECT * FROM paymentTransaction
where date between #" & dtFrom.Value & "# and #" & dtTo.Value & "#"
paymentQuery = "SELECT * FROM paymentTransaction where date between #" &
dtFrom.Value & "# and #" & dtTo.Value & "#"
Set paymentTransaction.DataSource = paymentTransactionDC
paymentTransactionDC.Refresh
paymentTransaction.Refresh
End Sub
Private Sub dtTo_Change()
paymentTransaction.ClearFields
paymentTransactionDC.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path &
"\Data\sgsdata.mdb;Persist Security Info=False"
paymentTransactionDC.CommandType = adCmdText
paymentTransactionDC.RecordSource = "SELECT * FROM paymentTransaction
where date between #" & dtFrom.Value & "# and #" & dtTo.Value & "#"
paymentQuery = "SELECT * FROM paymentTransaction where date between #" &
dtFrom.Value & "# and #" & dtTo.Value & "#"
Set paymentTransaction.DataSource = paymentTransactionDC
paymentTransactionDC.Refresh
paymentTransaction.Refresh
End Sub
Private Sub Form_Load()
memberId = -1
memberId1 = -1
billNo = -1
paymentQuery = "select * from paymentTransaction"
combIncome.AddItem "Last 1 month"
combIncome.AddItem "Last 2 month"
combIncome.AddItem "Last 3 month"
combIncome.AddItem "Last 4 month"
combIncome.AddItem "Last 5 month"
combIncome.AddItem "Last 6 month"
combIncome.AddItem "Last 7 month"
combIncome.AddItem "Last 8 month"
combIncome.AddItem "Last 9 month"
combIncome.AddItem "Last 10 month"
combIncome.AddItem "Last 11 month"
combIncome.AddItem "Last 12 month"
combIncome.ListIndex = 0
Dim arr() As String
arr = Split(combIncome.Text, " ")
Dim cMembers As Integer
82
cMembers = countMembers
lblTotalMembers.Caption = "Total Members : " & cMembers
lblTotalIncome.Caption = "Total Income : " & getIncome & "rs"
lblIncomeByRange.Caption = "Last Month Income : " &
getIncomeByRange(Val(arr(1))) & "rs"
Dim male As Integer, female As Integer
Dim mperc As Double, fperc As Double
male = countMaleMembers
female = countFemaleMembers
mperc = male / cMembers * 100
fperc = female / cMembers * 100
lblgenderMcount.Caption = "Male " & male & " and " & mperc & "%"
lblgenderFcount.Caption = "Female " & female & " and " & fperc & "%"
paymentTransactionDC.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & App.Path & "\Data\sgsdata.mdb;Persist Security Info=False"
paymentTransactionDC.CommandType = adCmdText
paymentTransactionDC.RecordSource = "SELECT * FROM paymentTransaction"
Set paymentTransaction.DataSource = paymentTransactionDC
Set OutdatedMembers.DataSource = getOutdatedMembers
OutdatedMembers.Columns(0).Width = 400
OutdatedMembers.Columns(1).Width = 1000
OutdatedMembers.Columns(2).Width = 1700
paymentTransaction.Columns(1).Width = 2300
End Sub
Private Sub lblCountGenderMembers_Click()
End Sub
Private Sub paymentTransaction_Click()
billNo = paymentTransaction.Columns(3)
memberId = Val(paymentTransaction.Columns(1))
End Sub
Private Sub txtSearchByBillno_Change()
If txtSearchByBillno.Text = "" Then
paymentTransaction.ClearFields
paymentTransactionDC.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path &
"\Data\sgsdata.mdb;Persist Security Info=False"
paymentTransactionDC.CommandType = adCmdText
paymentTransactionDC.RecordSource = "SELECT * FROM paymentTransaction"
paymentQuery = "SELECT * FROM paymentTransaction"
Set paymentTransaction.DataSource = paymentTransactionDC
paymentTransactionDC.Refresh
paymentTransaction.Refresh
Exit Sub
End If
paymentTransaction.ClearFields
paymentTransactionDC.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path &
"\Data\sgsdata.mdb;Persist Security Info=False"
paymentTransactionDC.CommandType = adCmdText
83
paymentTransactionDC.RecordSource = "SELECT * FROM paymentTransaction
where billno like '" & Val(txtSearchByBillno.Text) & "%'"
paymentQuery = "SELECT * FROM paymentTransaction where billno like '" &
Val(txtSearchByBillno.Text) & "%'"
Set paymentTransaction.DataSource = paymentTransactionDC
paymentTransactionDC.Refresh
paymentTransaction.Refresh
End Sub
Private Sub txtSearchByBillno_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
frmSearch Form:
Public loadMeasurement As Boolean
Public loadSearchNprofile As Boolean
Public loadPayment As Boolean
Public loadBodyProgress As Boolean
Option Explicit
Private Sub cmdSelect_Click()
Dim memberId As Integer
Dim fname As String
Dim lname As String
Dim gender As Boolean
rs.Open "Select * from members", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
If optRollno Then
Do Until rs.EOF
If rs.Fields(0) = Val(combMember.Text) Then
memberId = rs.Fields(0)
fname = rs.Fields(1)
lname = rs.Fields(2)
If rs.Fields(3) = "Male" Then
gender = True
Else
gender = False
End If
Exit Do
End If
rs.MoveNext
Loop
ElseIf optFname Then
Do Until rs.EOF
If rs.Fields(1) = Trim(combMember.Text) Then
memberId = rs.Fields(0)
fname = rs.Fields(1)
lname = rs.Fields(2)
If rs.Fields(3) = "Male" Then
84
gender = True
Else
gender = False
End If
Exit Do
End If
rs.MoveNext
Loop
Else
Do Until rs.EOF
If rs.Fields(2) = Trim(combMember.Text) Then
memberId = rs.Fields(0)
fname = rs.Fields(1)
lname = rs.Fields(2)
If rs.Fields(3) = "Male" Then
gender = True
Else
gender = False
End If
Exit Do
End If
rs.MoveNext
Loop
End If
rs.Close
'fetching of user data finished
'*******************************************************************
If loadBodyProgress Then
frmProgress.memberId = memberId
frmProgress.fname = fname
frmProgress.lname = lname
frmProgress.Show
loadBodyProgress = False
Unload Me
ElseIf loadMeasurement Then
frmMemberMeasurement.memberId = memberId
frmMemberMeasurement.Show
loadMeasurement = False
Unload Me
ElseIf loadPayment Then
frmPayment.memberId = memberId
frmPayment.Show
loadPayment = False
Unload Me
ElseIf loadSearchNprofile Then
frmMember.loadType = 2
frmMember.memberId = memberId
frmMember.Show
loadSearchNprofile = False
85
Unload Me
Else
MsgBox "Profile has not loaded!", vbOKOnly + vbExclamation, "Notification"
End If
End Sub
Private Sub combMember_Change()
AutoTypeComboChange combMember
End Sub
Private Sub combMember_GotFocus()
gstrATCDBTableName = "members"
If optRollno.Value Then
gstrATCDBFieldName = "memberId"
ElseIf optFname.Value Then
gstrATCDBFieldName = "firstname"
Else
gstrATCDBFieldName = "lastname"
End If
gblnGetAllData = False
gblnDropDownOnFocus = IIf(True, True, False)
AutoTypeComboGotFocus combMember
End Sub
Private Sub combMember_KeyDown(KeyCode As Integer, Shift As Integer)
AutoTypeComboKeyDown combMember, KeyCode, Shift
End Sub
Private Sub combMember_KeyPress(KeyAscii As Integer)
If optRollno Then
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 And KeyAscii <> 45 And
KeyAscii <> 47 Then
KeyAscii = 0
End If
End If
AutoTypeComboKeyPress Me, combMember, KeyAscii
End Sub
Private Sub combMember_LostFocus()
AutoTypeComboLostFocus combMember
End Sub
Private Sub Form_Load()
Call databaseconnection
Call combSearch
End Sub
CalculationModule Module:
Public Function calculateBMIbyEnglish(weight As Double, Height As Double)
customDialogModule Module :
Public trigger As Boolean
Public answerYesNo As Boolean
Public counter As Long
Sub CenterChild(Parent As Form, Child As Form)
Dim iTop As Integer
Dim iLeft As Integer
If Parent.WindowState <> vbNormal Then
Exit Sub
Else
iTop = ((Parent.Height - Child.Height) \ 2)
'iLeft = ((Parent.Width - Child.Width) \ 2)
iLeft = ((Parent.ScaleWidth - Child.ScaleWidth) \ 2)
Child.Move iLeft, iTop
End If
End Sub
Public Function helpDlg(msg As String)
DialogHelp.lblBodyText = msg
DialogHelp.Show
End Function
Public Function notificationDlg(msg As String) As Boolean
DialogNotification.lblBodyText = msg
87
DialogNotification.Show
notificationDlg = answerYesNo
End Function
Function GetFileExtension(ByVal FileName As String) As String
Dim I As Long
For I = Len(FileName) To 1 Step -1
Select Case mId$(FileName, I, 1)
Case "."
GetFileExtension = mId$(FileName, I + 1)
Exit For
Case ":", "\"
Exit For
End Select
Next
End Function
databaseModule Module:
Public barName As String
Public databasePath As String
Public con As New ADODB.Connection
Public rs As New ADODB.Recordset
Public rsTemp As New ADODB.Recordset
Public gobjCmd As ADODB.Command
Public Sub databaseconnection()
If Not con.State = adStateOpen Then
con.Provider = "Microsoft.Jet.OLEDB.4.0"
con.Open App.Path & "\Data\sgsdata.mdb"
End If
End Sub
Public Sub disconnectdatabase()
If con.State = adStateOpen Then
con.Close
End If
End Sub
Function FileExists(FileName As String) As Boolean
On Error GoTo ErrorHandler
FileExists = (GetAttr(FileName) And vbDirectory) = 0
ErrorHandler:
FileExists = False
End Function
Public Sub combSearch()
Set gobjCmd = New ADODB.Command
Set gobjCmd.ActiveConnection = con
gobjCmd.CommandType = adCmdText
End Sub
dateTimeModule Module:
Public Function CurrentDate() As String
Dim sdate As Date
sdate = DateValue(Now)
88
CurrentDate = sdate
End Function
Public Function CurrentTime() As String
Dim time As Date
time = TimeValue(Now)
CurrentTime = time
End Function
Public Function CurrentDayToString() As String
Dim day As Date
day = DatePart("w", Now)
If day = 1 Then
CurrentDayToString = "Sunday"
ElseIf day = 2 Then
CurrentDayToString = "Monday"
ElseIf day = 3 Then
CurrentDayToString = "Tuesday"
ElseIf day = 4 Then
CurrentDayToString = "Wednesday"
ElseIf day = 5 Then
CurrentDayToString = "Thursday"
ElseIf day = 6 Then
CurrentDayToString = "Friday"
ElseIf day = 7 Then
CurrentDayToString = "Saturday"
End If
End Function
Public Function splitNgetDate(datestr As String) As String
Dim tempArray() As String
tempArray = Split(datestr, " ")
splitNgetDate = tempArray(0)
End Function
Public Function splitNgetTime(datestr As String) As String
Dim tempArray() As String
tempArray = Split(datestr, " ")
splitNgetTime = Trim(tempArray(1))
End Function
Public Function getDay(datestr As String) As Integer
'Returns trimmed day of dateSTR
Dim tempArray() As String
tempArray = Split(datestr, "/")
getDay = tempArray(1)
End Function
Public Function getMonth(datestr As String) As Integer
'returns trimmed month of dateSTR
Dim tempArray() As String
tempArray = Split(datestr, "/")
getMonth = tempArray(0)
End Function
Public Function getYear(datestr As String) As Integer
'returns trimmed year of dateSTR
89
Dim tempArray() As String
tempArray = Split(datestr, "/")
getYear = tempArray(2)
End Function
mm = mm + months
If mm > 12 Then
yyyy = yyyy + (mm / 12)
mm = mm Mod 12
End If
addMonth = mm & "/" & dd & "/" & yyyy
End Function
fullScreenModule Module:
Dim isFullscreen As Boolean
Option Explicit
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Const GWL_STYLE = (-16)
Public Const WS_CAPTION = &HC00000
Public Const WS_MAXIMIZEBOX = &H10000
Public Const WS_MINIMIZEBOX = &H20000
Public Const WS_SYSMENU = &H80000
autoTypeCombo Module
Option Explicit
'*** NOTE: The calling form should use this set of events,
'*** replacing "Combo1" with the name of the combobox.
92
'Private Sub Combo1_GotFocus()
' AutoTypeComboGotFocus Combo1
'End Sub
'Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
' AutoTypeComboKeyDown Combo1, KeyCode, Shift
'End Sub
'Private Sub Combo1_KeyPress(KeyAscii As Integer)
' AutoTypeComboKeyPress Me, Combo1, KeyAscii
'End Sub
'Private Sub Combo1_Change()
' AutoTypeComboChange Combo1
'End Sub
'Private Sub Combo1_LostFocus()
' AutoTypeComboLostFocus Combo1
'End Sub
Public gstrATCDBTableName As String
Public gstrATCDBFieldName As String
Public gblnGetAllData As Boolean ' true = get all entries, false = go by 1st
letter
Public gblnDropDownOnFocus As Boolean
Private Const CB_FINDSTRING As Long = &H14C
Private Const CB_SHOWDROPDOWN As Long = &H14F
Private Const LB_FINDSTRING As Long = &H18F
Private Const CB_ERR As Long = (-1)
Private Const CB_GETITEMHEIGHT As Long = &H154
Private Const CB_SETDROPPEDWIDTH As Long = &H160
Dim I As Integer
Dim l As Long
Dim strNewText As String
' Check to see if a search is required.
If gblnATCTextDeleted Then Exit Sub
If Not gblnATCIgnoreTextChange And pobjCombo.ListCount > 0 Then
l = SendMessage(pobjCombo.hWnd, _
CB_FINDSTRING, _
-1, _
ByVal CStr(pobjCombo.Text))
strNewText = pobjCombo.list(l)
95
If Len(pobjCombo.Text) <> Len(strNewText) Then
' Partial match found
' Avoid recursively entering this event
gblnATCIgnoreTextChange = True
I = Len(pobjCombo.Text)
' Attach the full text from the list to what has already been entered.
' This technique preserves the case entered by the user.
pobjCombo.Text = pobjCombo.Text & mId$(strNewText, I + 1)
' Select the text that is auto-entered
pobjCombo.SelStart = I
pobjCombo.SelLength = Len(mId$(strNewText, I + 1))
End If
Else
' The IgnoreTextChange Flag is only effective for one Change event.
gblnATCIgnoreTextChange = False
End If
End Sub
'---------------------------------------------------------------------------------
Public Sub AutoTypeComboLostFocus(pobjCombo As ComboBox)
'---------------------------------------------------------------------------------
objRstDropDownData.Close
Set objRstDropDownData = Nothing
End Sub
'---------------------------------------------------------------------------------
Public Sub SetDropDownHeight(pobjForm As Form, _
pobjCombo As ComboBox, _
plngNumItemsToDisplay As Long)
'---------------------------------------------------------------------------------
Dim pt As POINTAPI
Dim rc As RECT
Dim lngSavedWidth As Long
Dim lngNewHeight As Long
Dim lngOldScaleMode As Long
Dim lngItemHeight As Long
lngSavedWidth = pobjCombo.Width
lngOldScaleMode = pobjForm.ScaleMode
pobjForm.ScaleMode = vbPixels
lngItemHeight = SendMessage(pobjCombo.hWnd, CB_GETITEMHEIGHT, 0, ByVal
0)
lngNewHeight = lngItemHeight * (plngNumItemsToDisplay + 2)
ReportModule Module:
Public Function countMembers() As Integer
Dim counter As Integer
Call databaseconnection
rs.Open "select count(*) from members", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
Dim n As Integer
n = Val(rs.Fields(0))
rs.Close
countMembers = n
Call disconnectdatabase
End Function
Public Function getOutdatedMembers() As ADODB.Recordset
Dim rsMember As ADODB.Recordset
Set rsMember = New ADODB.Recordset
rsMember.CursorLocation = adUseClient
rsMember.Fields.Append "ID", adBigInt, 20
rsMember.Fields.Append "Name", adVarChar, 100
rsMember.Fields.Append "DueDate", adDate, 100
rsMember.Fields.Append "Status", adVarChar, 100
rsMember.Open
Dim list() As String
Dim counter As Integer
counter = 0
Call databaseconnection
rs.Open "select * from members", con, adOpenDynamic
98
If Not rs.EOF Then
rs.MoveFirst
End If
Dim diff As Long
While Not rs.EOF
diff = DateDiff("d", Format$(rs.Fields("dueDate"), "mm/dd/yyyy"), Now)
If diff >= 0 Then
'Outdated
rsMember.AddNew
rsMember.Fields(0).Value = rs.Fields(0)
rsMember.Fields(1) = rs.Fields(1)
rsMember.Fields(2) = rs.Fields("dueDate")
rsMember.Fields(3) = "Outdated"
rsMember.Update
ElseIf diff >= -7 Then
rsMember.AddNew
rsMember.Fields(0).Value = rs.Fields(0)
rsMember.Fields(1) = rs.Fields(1)
rsMember.Fields(2) = rs.Fields("dueDate")
rsMember.Fields(3) = Abs(diff) & " to out"
rsMember.Update
End If
rs.MoveNext
Wend
rs.Close
Set getOutdatedMembers = rsMember
End Function
Public Function countOutdatedMembers() As Integer
Call databaseconnection
rs.Open "select * from members", con, adOpenDynamic
If Not rs.EOF Then
rs.MoveFirst
End If
Dim counter As Integer
While Not rs.EOF
diff = DateDiff("d", Format$(rs.Fields("dueDate"), "mm/dd/yyyy"), Now)
If diff >= 0 Then
counter = counter + 1
End If
rs.MoveNext
Wend
rs.Close
countOutdatedMembers = counter
End Function
Public Function getIncome() As Long
Call databaseconnection
Dim income As Long
income = 0
99
rs.Open "select * from paymentTransaction", con, adOpenDynamic,
adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
Do While Not rs.EOF
income = income + Val(rs.Fields(2))
rs.MoveNext
Loop
rs.Close
getIncome = income
End Function
Public Function getTotalAmtPaidOf(memberId As Integer) As String
Call databaseconnection
Dim income As Long
income = 0
rs.Open "select * from paymentTransaction where memberId=" & memberId, con,
adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
Do While Not rs.EOF
income = income + Val(rs.Fields(2))
rs.MoveNext
Loop
rs.Close
getTotalAmtPaidOf = income
End Function
Public Function getLastPaymentDateOf(memberId As Integer) As String
Call databaseconnection
Dim datestr As String
Dim cmdString As String
cmdString = "select * from paymentTransaction where memberId=" & memberId &
" ORDER BY date DESC"
rs.Open cmdString, con, adOpenDynamic, adLockOptimistic
If Not rs.RecordCount = 0 Then
If Not rs.EOF Then
rs.MoveFirst
End If
Do Until rs.EOF
datestr = rs.Fields(1)
Exit Do
Loop
End If
rs.Close
If Not datestr = "" Then
getLastPaymentDateOf = datestr
Else
getLastPaymentDateOf = ""
End If
100
End Function
Public Function sinceJoinedDateOf(memberId As Integer) As String
Call databaseconnection
Dim diffDays As Long
Dim diffMonths As Long
Dim since As String
rs.Open "select * from members", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
Do While Not rs.EOF
If rs.Fields(0) = memberId Then
since = splitNgetDate(rs.Fields("doj"))
diffDays = DateDiff("d", Format$(splitNgetDate(rs.Fields("doj")),
"mm/dd/yyyy"), Now)
diffMonts = DateDiff("m", Format$(splitNgetDate(rs.Fields("doj")),
"mm/dd/yyyy"), Now)
Exit Do
End If
rs.MoveNext
Loop
rs.Close
sinceJoinedDateOf = "Since " & since & ", " & Abs(diffMonts) & " months or " &
Abs(diffDays) & " days."
End Function
103
Public Function showReceipt(ByRef billNo As Integer, mId As Integer, mName As
String, planName As String, amt As Double, dueDate As String, gymName As String,
gymAddress As String, gymPhone As String) As Boolean
With ReceiptP
Call databaseconnection
Dim rsT As ADODB.Recordset
Set rsT = New ADODB.Recordset
rsT.Open "select * from members", con, adOpenDynamic, adLockOptimistic
Set .DataSource = rsT
.DataMember = rsT.DataMember
.Sections("Section0").Controls("lblGymName").Caption = gymName
.Sections("Section0").Controls("lblAddress").Caption = gymAddress
.Sections("Section0").Controls("lblPhone").Caption = gymPhone
.Sections("Section1").Controls("lblBillNo").Caption = "Receipt No : " & billNo
.Sections("Section2").Controls("lblMemberName").Caption = mName
.Sections("Section2").Controls("lblPlanName").Caption = planName
.Sections("Section2").Controls("lblDueDate").Caption = dueDate
.Sections("Section2").Controls("lblAmtPaid").Caption = amt
.Sections("Section3").Controls("lblMemberId").Caption = mId
.Show
End With
End Function
Public Function getIncomeByRange(last As Integer) As Double
Dim diff As Integer
Dim income As Double
Call databaseconnection
rs.Open "select * from paymentTransaction order by date", con, adOpenDynamic,
adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
Do Until rs.EOF
diff = DateDiff("m", Format$(rs.Fields("date"), "mm/dd/yyyy"), Now)
If diff >= 0 And diff <= 3 Then
income = income + rs.Fields("amt")
End If
rs.MoveNext
Loop
rs.Close
getIncomeByRange = income
End Function
105
Testing
Testing goes side by side with the implementation that is aimed at ensuring that the
system works accurately and efficiently before the live operation is performed .The common
view of testing held by the user is process of executing a program with explicit intention of
handling errors. The application which has been developed has to be tested to prove its validity.
Testing is considered to be the least creative phase of the whole cycle of system design. In the
106
real sense it is the phase, which helps to bring out the creativity of the other phases, and makes it
shine. The Mobile Management System was tested using the following two techniques of
application testing.
a. By using this technique it was tested that all the individual logical paths were executed
at least once and every statement in the program was executed once during testing
b. All the logical decisions where tested on both their true and false sides
c. All the loops were tested with data in between the range and especially at the boundary
values.
a. By the use of this technique the missing functions were identified and placed in their
position.
b. The errors in the interfaces were identified and corrected.
c. The errors in the database access were indentified.
d. This technique was along used to identify the initialization and termination errors and
correct them.
Any application has to be tested with pre-planned strategies. As Roger Pressman states,
the preparation for testing should star as soon as the design of the system star. To carry out the
testing in an efficient manner certain amount of strategic planning has to be done. Any testing
strategy must incorporate test planning, test case design, test execution and the resultant data
collection evaluation.
Mobile Management was tested with the help of the following testing strategies:
107
a. In the line of strategy the entire individuals function and modules were put to test
independently
b. By following this strategy all the errors in coding were identified and corrected.
c. This method was applied in combination with the White Box and Black Box testing
d. Technique to find errors in each module.
e. The effort of specific combination of data on system operation was tested.
f. The following were the testes carried out for Graphical User Interface (GUI).
g. It was seen that the pages opens properly based on related menu based commands.
h. It was tested whether all relevant menus, buttons, icons and other controls are available
and properly displayed.
i. Are the names of the menu functions self explanatory?
j. Are data input messages intelligible?
This application testing strategy has two different approached namely the top down
approach in which the integration is carried out from the top level module to the bottom and the
bottom up approach in which the integration is carried out from the low level modules to the top.
The modules were tested using the bottom up approach by introducing stubs for the top level
functions.
This test was used to identify the errors in the interfaces, the error in passing the parameters
between the function and to correct them.
The main aim of this testing is to verify that the application system does what it was
designed for. The system was tested to ensure that the purpose of automating the Asha clinic was
fulfilled.
Alpha testing was carried out to ensure the validity of the system
108
The idea of applying this testing strategy was to put the system to a series of tests to ensure that it
performed well and exactly same under all condition.
Recovery Testing
Performance Testing
The tests were made on each form for its correctness of accepting the data and storing the data
into the respective tables in the desired form of data type. The algorithms were tested with the
test data first and then with the real data. The tests were made for all types of constraints. The
tests were done in presence of the user so that he/she is familiar with the system that is going to
be introduced. During the testing each objective of the system was tested and found to be
working correctly.
Database Locking Schemes: Whenever more than one person is accessing a record/s some type
of process must be use to prevent the outer users from attempting to update the same record at
the same time. This process is a locking scheme. In its simplest form, a locking scheme allows
only one user at a time to update information in the database.
Chapter 7:
109
Conclusion
110
On the area of selling revolution, online selling has been an inevitable
component .Effecting computing capabilities are therefore utilized. The availability
of the required online selling at the press of a button is something favorable and
therefore computers are used for this purpose. Thus, one way of potential taping is
achieved.
The project Online Mobile Selling Management after being tested was found to be
achieving what is meant for. The system is found to be minimum error free ready for
implementation. Any work may not be always perfect. There may be any error or
shortcoming in this work. We have taken at care to ensure that the project works
perfectly.
The system has been designed in such a way that it can be modified with very little
effort to be achieving what a need arise in the future, as it follows the struts
framework. The system has been found to work efficiently and effectively. Due to its
higher user friendliness, other may use these document as a prototype for
developing similar application.
The development application is tested with sample data and outputs obtained in
according to the requirement. Through it could not be claimed that ours is an ideal
project, it will meet the primary requirement of the concern. Even though I have
tried my level best to make it a dream project, due to time constrains I could not
add more facilities to it. So the project has to be improved by having modifications
as and when the necessity arises in due course.
The project Smart Gym System is for computerizing the work in a College.
The application takes care of all the requirements of a job Department and is
capable to provide easy and effective storage of information related to
Department.
111
Chapter 8
FUTURE
Enhancement
112
FUTURE Enhancement
The project has been developed in a very short period of time and all efforts have
been taken so that this project is very efficient in its execution there still exists
some scope of improvement in our project. The following lists some of the
enhancement that can be added incorporate into the project.
113
Chapter 9
Bibliography
114
Bibliography
Books
[A]Black book,2009
Websites
[a]http://yahoo.com/
[e]http://www.google.com
115
CHAPTER 10
User
Manual
116
Screenshot
DialogToChangeWallpaper
DialogToAccessAdmin
DrDueMemberList
117
118
119
120
121
122
123
124