Designing IA for AI - Information Architecture Conference 2024
Smart Gym System documentation
1. 1. 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
2. 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
10. User Manual
10.1 Screen Shots
6
3. 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
7
4. our attitude depends on how we feel. Being healthy and fit gives us energy to do anything. So
how do we stay fit? Be 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.
1.1 Overview of Project
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
5. 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.
Creating membership plan
Create a flexible membership plans for gym members. Plans can be various depending
on member needs.
User Module
Depends on the privilege user’s access to features of the application is granted.
1.4 Architecture and Design of the project
9
6. The application will be made of Desktop based distributed two-tier architecture to
support user entertainment at the same time.
10
9. 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
10. As we have developed this application for the first time. Similar application’s 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 application’s
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 don’t understand english.
2.1 Existing System
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.
2.1.1 Drawbacks of Existing System
a. Time consuming.
b. Updating and Retrieval tasks are very tedious.
c. Highly error prone.
d. Easy Customer service is difficult.
e. Lot of paper work results in lot of confusion.
f. No direct role for the higher officials.
To avoid all these limitations and make the system working more accurately it needs to be
computerized.
2.2 Proposed System
14
11. 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.
The main objectives of the proposed system can be enumerated as follows:
a. Customer can easily search different brand of mobile.
b. Customer can also search according to price.
c. User can register and buy that particular product.
2.2.1 Merits of Proposed System
The system is very simple in design and to implement. The system requires
Very low system resources and the system will work in almost all
Configurations
a. Security of data
b. Ensure data accuracy
c. Administrator controls the entire system
d. Reduce the damages of the machines
e. Minimize manual data entry
f. Greater efficiency
g. User friendly and interactive
h. Saves lot of time
i. Retrieval and Updating tasks can be performed much faster and easier
2.3 Overview of languages used
2.3.1 Introduction to MICROSOFT VISUAL BASIC 6.0
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
12. 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.
2.3.1.1 The Programming Process
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:
1. Decide what your application is to do by creating an overall design.
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.
2.3.1.2 Understanding Program Maintenance
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
13. 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.
2.3.1.3 Visual Basic Is a Smart Language
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.
2.3.1.4 Tool Box Controls
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.
2.3.1.5 Adding controls
Controls can be added to a form in two ways:
17
14. *Double-click on a control in the toolbox and it appears on the form.
*Click on the control icon. Move the mouse over the form, click and draw the control to the
required size.
2.3.1.6 Removing controls
To remove a control from the form
*Select the control.
*Press the delete key.
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.
2.3.1.7 Intrinsic controls
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.
Some common intrinsic controls which are described below are:
1. Label
2. Command button
3. Text box
4. Frame
5. Option button
6. Check box
7. Picture box
8. Inage box
9. Timer
10. Combo box
11. List box
12. Horizontal & vertical scroll box
18
15. 13. Shape and line
14. OLE
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.
2.3.1.9 Command buttons
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.
2.3.1.10 Textbox control
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.
Basic text properties
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.
Index: Determine the control array index.
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.
19
16. 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.
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.
Text: Specifies the text in the textbox.
Alignment: Alignment of text in a textbox can be Left-justified, centered or right-justified.
SelText: Returns the selected text. A selected text can be converted to uppercase by the
following code:
Text1. SelText= Ucase(Text1.SelText)
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
to select a piece of text at runtime to select the text in a textbox.
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 languages—you can concentrate on what you want your program to do, not
how to get the programming language to do it.
2.3.1.11 What does VB 6.0 have….
20
17. 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
Documents to setup programs, it’s all here.
Here’s some of what we’ll see:
• ActiveX controls
• ActiveX documents
• ADO, DAO, and RDO database applications
• Multimedia AVI, MPG, WAV, and MID players
• CD players that play CDs from the computer’s CD-ROM drive
• Bitmapped menu items
• Full Web browsers
• Pie charts, line charts, bar charts, and others
• Code clients that call methods in programs like Microsoft Excel
• Code components (OLE automation servers)
• Graphics animation
• Applications that use the Windows Common Dialogs
• Customized toolbars with embedded controls like combo boxes
• Data entry forms
• Database editing applications
• Direct connections to the Windows API
• Direct connections to code written in Visual C++
• Drag/drop operations
• Graphics applications that draw arcs, circles, rectangles, lines, and more
• Email applications
21
18. • Error handlers
• Applications that use the printer
• Word processor applications
• File handlers for text and binary data
• FTP applications
• Dialog boxes
• Windows Help files
• MDI applications
• Pop-up menus activated with right mouse clicks
• Application deployment
• HTTP applications
• Image handling: blur, emboss, engrave, flip, sweep, stretch images, and more
• OLE applications
• Applications that use the Windows Registry
• List views and tree views
• Applications that create controls at runtime
• Mouse capture
• OLE drags (dragging data between applications)
• Online user registration
• Picture clip applications
• Setup programs
• Screen capture
• Spreadsheets
• Status bars and toolbars
• Tab strips, progress bars, and others
22
19. 2.3.1.12 Visual Basic with Databases
A database is a collection of information. This information is stored in a very structured
manner. By exploiting this known structure, we can access and modify the information quickly
and correctly.
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
20. 2.3.1.13 ActiveX Data Object Components
The first step in editing an ADO database is to open that database, which is called a data source
in ADO terminology, by setting up a Connection object.
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 object’s Open method:
Here are the arguments for this method:
• Connection String—String containing connection information.
• UserID—String containing a username to use when establishing the connection.
• Password—String containing a password to use when establishing the connection.
• OpenOptions—if set to adConnectAsync, the connection will be opened asynchronously.
Here are the possible values for the Type argument:
• dbOpenKeyset—Opens a dynaset-type Recordset object, which is like an ODBC keyset
cursor.
• dbOpenDynamic—Opens a dynamic-type Recordset object, which lets the application see
changes made by other users.
• dbOpenStatic—Opens a static-type Recordset object.
• dbOpenForwardOnly—Opens a forward-only-type Recordset object, where you can only use
MoveNext to move.
Here are the possible values for the LockType argument:
• AdLockReadOnly—The default; read-only.
• adLockPessimistic—Pessimistic locking, record by record.
• adLockOptimistic—Optimistic locking, record by record.
• adLockBatchOptimistic—Optimistic batch updates.
Here are the possible values for the Options argument:
• adCmdText—Provider should evaluate Source as a definition of a command.
• adCmdTable—ADO should generate an SQL query to return all rows from the table named in
Source.
• adCmdTableDirect—Provider should return all rows from the table named in Source.
• adCmdStoredProc—Provider should evaluate Source as a stored procedure.
• adCmdUnknown—Type of command in the Source argument is not known.
• adCommandFile—Record set should be restored from the file named in Source.
• adExecuteAsync—Source should be executed asynchronously.
• adFetchAsync—After the initial quantity specified in the CacheSize property is fetched, any
remaining rows should be fetched asynchronously.
2.3.2 Introduction of MS Access 2003
24
21. Generically, any database management system (DBMS) that can response to queries from
client machines formatted on the SQL language.
.
Chapter
25
22. Requirement Analysis
3.1 Role of SRS
Application Requirement Specification (SRS) is the starting point of the application
developing activity. As system grew more complex it became evident that the goal of the entire
system cannot be easily comprehended. Hence the need for the requirement phase arose. The
application project is initiated by the client needs. The SRS is the means of translating the ideas
of the minds of clients (the input) into a formal document. Application Requirement
Specification is the medium though which the client and user needs are accurately specified. It
forms the basis of application development.
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.
26
23. d. The application must work properly without problems on all targeted devices and network
support.
3.3 Purpose
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.
3.5 Application Requirements
Operating system Windows XP, Windows 7
Front End Microsoft Visual Basic 6.0
Database Microsoft Access 2003
Connectivity ActiveX Data Object
Report Data Report
27
24. 3.6 Hardware Requirements
RAM 512 MB or higher
Hard Disk 10GB or higher
Computer Processor Pentium IV
Clock Speed 700MHZ Processor
3.7 Functional Requirements
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.
3.7.1 Administrator module functional requirements
28
25. 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.
3.7.2 Client module functional requirements
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 Non-Functional Requirements
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.
b. Error-handling- exception occurring while accessing database need to be addressed.
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
29
26. Performance is measured in terms of the output provided by the application. Requirement
specification plays an important part in the analysis of a system. Only when the requirement
specifications are properly given, it is possible to design a system, which will fit into required
environment.
The requirement specification for any system can be broadly stated as given below:
a. The system should be able to interface with the existing system.
b. The system should be accurate.
c. The system should be better than the existing system.
The existing system is completely dependent on the user to perform all the duties.
Chapter 4
30
27. Design
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.
31
28. 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.
4.7.2 Tables Created
Table 1: login table
FIELD DATA
SIZE
NAME TYPE
long
userId number
integer
username text 30
password text 30
firstname text 30
lastname text 50
long
gid number
integer
32
29. Table 2: userGroup table
DATA
FIELD NAME SIZE
TYPE
long
groupId number
integer
groupName text 255
long
permissionSetId number
integer
Table 3: userPermission
DATA
FIELD NAME SIZE
TYPE
permissionId integer
canSeeMember integer
canAddMember integer
canEditMember integer
canDeleteMember integer
canTakeMeasurement integer
canSeeReport integer
canSeeBodyProgress integer
Table 4: members table
33
30. FIELD NAME DATA TYPE SIZE
long
memberId
integer
firstname text 50
lastname text 50
gender text 10
long
number
integer
address text 255
doj Date/Time
dob Date/Time
profilePhotoUrl text 255
dueDate text 255
Table 5: progressMember Table
FIELD NAME DATA TYPE SIZE
long
memberId
integer
height double
weight double
bmi double
biceps double
hips double
thigh double
neck double
forearms double
34
31. chest double
calves double
mdate Date/Time
bodyfat double
waist double
wrist double
Table 6: paymentTransaction Table
FIELD NAME DATA TYPE SIZE
long
memberId
integer
date Date/Time
amt Currency
Table 7: gymDetail Table
DATATYP
FIELD E SIZE
gymName text 255
gymAddress text 255
gymLogoUrl text 255
gymPhone text 255
35
33. 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
End If
Wend
37
34. 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"
38
35. 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 _
39
36. qgroupName.Text = "" Then
MsgBox "Fields cannot be blank!", vbOKOnly + vbExclamation, "Warning"
Exit Sub
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
40
37. 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
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
41
38. 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
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
42
39. 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")
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
Me.Caption = "Admin Panel"
add = 0
43
40. 'Gym details loading
Call databaseconnection
rs.Open "select * from gymDetail", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
Do Until rs.EOF
gymName.Text = rs.Fields(0)
gymAddress.Text = rs.Fields(1)
If Not rs.Fields(2) = "" Then
file = rs.Fields(2)
Image1.Picture = LoadPicture(App.Path & rs.Fields(2))
Else
file = ""
End If
gymPhone.Text = rs.Fields(3)
rs.MoveNext
Loop
rs.Close
End Sub
Private Sub Form_Unload(Cancel As Integer)
If MsgBox("Do you want to exit Admin panel?", vbYesNo + vbQuestion, "Notification") = vbYes Then
Unload Me
Else
Me.SetFocus
End If
End Sub
Private Sub gymCmdBrowse_Click()
logo.ShowOpen
Dim ext As String
ext = GetFileExtension(logo.FileName)
If ext = "jpg" Or ext = "png" Or ext = "jpeg" Or ext = "bmp" Then
file = logo.FileName
Image1.Picture = LoadPicture(file)
Else
MsgBox "Invalid image file", vbOKOnly + vbExclamation, "Notification"
Exit Sub
End If
End Sub
Private Sub gymCmdSave_Click()
If gymName.Text = "" And _
gymAddress.Text = "" And _
gymPhone.Text = "" And _
file = "" Then
MsgBox "All fields are mandatory!", vbOKOnly + vbExclamation, "Notification"
44
41. Exit Sub
End If
Call databaseconnection
rs.Open "select * from gymDetail", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
If rs.RecordCount = 0 Then
rs.AddNew
rs.Fields(0) = Trim(gymName.Text)
rs.Fields(1) = gymAddress.Text
rs.Fields(2) = file
rs.Fields(3) = Val(gymPhone.Text)
rs.Update
Else
Do Until rs.EOF
rs.Fields(0) = Trim(gymName.Text)
rs.Fields(1) = gymAddress.Text
If Not file = App.Path & "gymLogo.jpeg" Then
FileCopy file, App.Path & "gymLogo.jpeg"
End If
rs.Fields(2) = "gymLogo.jpeg"
rs.Fields(3) = Val(gymPhone.Text)
rs.Update
rs.MoveNext
Loop
End If
rs.Close
MsgBox "Gym details saved!", vbOKOnly + vbInformation, "Notification"
End Sub
Private Sub gymPhone_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub lcmdAdd_Click()
If add = 0 Then
Call clearLoginFields
lusername.SetFocus
lid.Enabled = False
Call databaseconnection
rs.Open "select * from login", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveLast
End If
lid.Text = rs.Fields(0) + 1
rs.Close
45
42. Call disconnectdatabase
add = 1
lcmdAdd.Caption = "*Add"
Exit Sub
End If
If add = 1 Then
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(1) = lusername.Text Then
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
46
43. 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
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"
47
44. 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
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
48
45. 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 = ""
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)
49
46. 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
Private Sub mtxtamount_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub mtxtdiscount_Change()
mtxtfinalAMT = mtxtamount - (Val(mtxtdiscount) * Val(mtxtamount)) / 100
End Sub
Private Sub mtxtdiscount_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub qcombGroup_Click()
Call clearGroup
Call databaseconnection
'add new group initialization
If qcombGroup.Text = "Add new group" Then
Call clearGroup
cmdSave.Enabled = True
cmdUpdate.Enabled = False
qgroupName.SetFocus
rs.Open "select * from userGroup", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveLast
End If
qgroupId.Text = rs.Fields(0) + 1
50
47. rs.Close
qgroupId.Enabled = False
cmdSave.Enabled = True
rs.Open "select * from userPermission", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveLast
End If
permId = rs.Fields(0) + 1
rs.Close
Exit Sub
End If
cmdSave.Enabled = False
cmdUpdate.Enabled = True
qgroupId.Enabled = False
Dim tempArray() As String
tempArray = Split(qcombGroup.Text, " ")
rs.Open "select * from userGroup", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
Do While Not rs.EOF
If rs.Fields(0) = Val(tempArray(0)) Then
permId = rs.Fields(2)
qgroupId.Text = rs.Fields(0)
qgroupName.Text = rs.Fields(1)
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 While Not rs.EOF
If rs.Fields(0) = permId Then
If rs.Fields(1) = 1 Then
qmemberRead.ListIndex = 0
Else
qmemberRead.ListIndex = 1
End If
If rs.Fields(2) = 1 Then
qmemberAdd.ListIndex = 0
Else
qmemberAdd.ListIndex = 1
51
48. End If
If rs.Fields(3) = 1 Then
qmemberEdit.ListIndex = 0
Else
qmemberEdit.ListIndex = 1
End If
If rs.Fields(4) = 1 Then
qmemberDelete.ListIndex = 0
Else
qmemberDelete.ListIndex = 1
End If
If rs.Fields(5) = 1 Then
qmeasureAdd.ListIndex = 0
Else
qmeasureAdd.ListIndex = 1
End If
If rs.Fields(6) = 1 Then
qreadReport.ListIndex = 0
Else
qreadReport.ListIndex = 1
End If
If rs.Fields(7) = 1 Then
qreadProgress.ListIndex = 0
Else
qreadProgress.ListIndex = 1
End If
Exit Do
End If
rs.MoveNext
Loop
rs.Close
Call disconnectdatabase
End Sub
Public Sub readGroup()
qcombGroup.clear
Call databaseconnection
rs.CursorLocation = adUseClient
rs.Open "select * from userGroup", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
While Not rs.EOF
qcombGroup.AddItem (rs.Fields(0) & " " & rs.Fields(1))
rs.MoveNext
Wend
Else
MsgBox "Record set is empty!", vbOKOnly + vbExclamation, "Warning"
End If
52
49. 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 &
"Datasgsdata.mdb;Persist Security Info=False"
loginTableDC.CommandType = adCmdText
loginTableDC.RecordSource = "select * from login"
Set loginTable.DataSource = loginTableDC
loginTableDC.Refresh
loginTable.Refresh
End Sub
Public Sub refreshMembershipPlanTable()
membershipPlan.ClearFields
membershipPlanDC.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
App.Path & "Datasgsdata.mdb;Persist Security Info=False"
membershipPlanDC.CommandType = adCmdText
membershipPlanDC.RecordSource = "select * from membershipPlan"
Set membershipPlan.DataSource = membershipPlanDC
membershipPlanDC.Refresh
membershipPlan.Refresh
End Sub
53
50. frmIndividualReport Form:
Option Explicit
Dim mId As Integer
Private Sub cmdGenerate_Click()
If mId = -1 Then
MsgBox "Select a member!", vbOKOnly + vbExclamation, "Warning"
Exit Sub
End If
generateSelfReport (mId)
End Sub
Private Sub Form_Load()
mId = -1
lblBMIChange.Caption = ""
lblBodyFatChange.Caption = ""
lblDueDate.Caption = ""
lblLastMeasurementDate.Caption = ""
lblLastPaymentDate.Caption = ""
lblMemberNameGreeting.Caption = ""
lblSinceJoinedDate.Caption = ""
lblTotalAmtPaid.Caption = ""
lblWeightChange.Caption = ""
memberTableDC.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path &
"Datasgsdata.mdb;Persist Security Info=False"
memberTableDC.CommandType = adCmdText
memberTableDC.RecordSource = "select memberId, firstname, lastname from members"
Set memberTable.DataSource = memberTableDC
End Sub
Private Sub memberTable_Click()
mId = Val(memberTable.Columns(0))
End Sub
Public Function generateSelfReport(memberId As Integer)
Dim str As String
lblMemberNameGreeting.Caption = memberTable.Columns(0) & " " & memberTable.Columns(1) & " "
& memberTable.Columns(2)
str = getLastMeasurementDateOf(memberId)
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(memberId)
lblBodyFatChange.Caption = "Body Fat change : " & getBodyFatChangeOf(memberId)
lblWeightChange.Caption = "Weight change : " & getWeightChangeOf(memberId)
str = getLastPaymentDateOf(memberId)
54
51. If Not str = "" Then
lblLastPaymentDate.Caption = "Last Payment Date : " & str
Else
lblLastPaymentDate.Caption = "Payment History is empty"
End If
str = ""
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
& "Datasgsdata.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
& "Datasgsdata.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
memberTableDC.Refresh
memberTable.Refresh
ElseIf optFname.Value Then
memberTable.ClearFields
memberTableDC.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path
& "Datasgsdata.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
55
52. 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
Private Sub txtSearch_KeyPress(KeyAscii As Integer)
If optRno Then
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 And KeyAscii <> 45 And KeyAscii <> 47 Then
KeyAscii = 0
End If
End If
End Sub
frmInitialReport Form:
Option Explicit
Private Sub cmdProceed_Click()
If optIndividual.Value = False And optReport.Value = False Then
MsgBox "Select the report type!", vbOKOnly + vbExclamation, "Notification"
Exit Sub
ElseIf optIndividual.Value Then
frmIndividualReport.Show
Else
frmReport.Show
End If
Unload Me
End Sub
frmLogin Form:
Option Explicit
Public LoginSucceeded As Boolean
Private Sub cmdCancel_Click()
'set the global var to false
'to denote a failed login
LoginSucceeded = False
Me.Hide
End Sub
Private Sub cmdClose_Click()
If MsgBox("Are you really quit? ", vbYesNo, "Notification") = vbYes Then
Unload Me
End If
End Sub
Private Sub Form_Load()
56
53. txtUserName.BackColor = RGB(241, 241, 241)
txtPassword.BackColor = RGB(241, 241, 241)
'lblOk.MousePointer = 99
'lblOk.MouseIcon = LoadPicture(App.Path & "hand.ico")
End Sub
Private Sub lblOk_Click()
If txtUserName.Text = "" And txtPassword.Text = "" Then
MsgBox "Enter the username and password!", vbOKOnly + vbExclamation, "Login"
txtUserName.Text = ""
txtPassword.Text = ""
ElseIf txtUserName.Text = "" Then
MsgBox "Enter the username", vbOKOnly + vbExclamation, "Login"
txtUserName.Text = ""
txtPassword.Text = ""
ElseIf txtPassword.Text = "" Then
MsgBox "Enter the password", vbOKOnly + vbExclamation, "Login"
txtUserName.Text = ""
txtPassword.Text = ""
Else
Call databaseconnection
rs.Open "select * from login", con, adOpenStatic
If rs.EOF = True Then
MsgBox "Login entry is empty!", vbOKOnly + vbCritical, "Error"
Exit Sub
Else
rs.MoveFirst
End If
While Not rs.EOF
If Trim(txtUserName.Text) = rs.Fields(1) And Trim(txtPassword.Text) = rs.Fields(2) Then
barName = rs.Fields(3) & " " & rs.Fields(4)
Call disconnectdatabase
dialogLoading.Show
Unload Me
Exit Sub
Else
rs.MoveNext
End If
Wend
Call disconnectdatabase
MsgBox "Bad login", vbOKOnly + vbExclamation, "Login"
txtPassword.SetFocus
End If
End Sub
frmMain Form:
Private Declare Function GetMenu Lib "User32" (ByVal hWnd As Long) As Long
Private Declare Function GetSubMenu Lib "User32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function SetMenuItemBitmaps Lib "User32" _
57
54. (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, _
ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long
Private Declare Function LoadImage Lib "User32" Alias "LoadImageA" _
(ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, _
ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
'Constant for SetMenuItemBitmaps
Private Const MF_BYPOSITION As Long = &H400&
'Constants for LoadImage
Private Const IMAGE_BITMAP As Long = &O0
Private Const LR_LOADFROMFILE As Long = 16
Private Const LR_CREATEDIBSECTION As Long = 8192
Private Sub addmember_Click()
frmMember.loadType = 0
frmMember.Show
End Sub
Private Sub adminpanel_Click()
dialogToAccessAdmin.Show
End Sub
Private Sub bodyprogress_Click()
frmSearch.loadBodyProgress = True
frmSearch.Show
End Sub
Private Sub calc_Click()
Shell "C:WINDOWSSystem32calc.exe"
End Sub
Private Sub employees_Click(Index As Integer)
End Sub
Private Sub hideMetroGrid_Click()
frmMetroStyleMenu.Visible = False
End Sub
Private Sub logout_Click()
frmLogin.Show
Unload Me
End Sub
Private Sub MDIForm_Load()
Me.Caption = "Smart Gym System : " & barName
'frmSideBar.Show
'setting to fullscreen
dX = Me.Width
dY = Me.Height
setFullScreen Me
frmMetroStyleMenu.Show
Dim ext As String
ext = GetFileExtension(App.Path & "wallpaper.jpeg")
If ext = "jpg" Or ext = "png" Or ext = "jpeg" Or ext = "bmp" Then
Me.Picture = LoadPicture(App.Path & "wallpaper.jpeg")
Else
58
55. MsgBox "Invalid Image File!", vbOKOnly + vbExclamation, "Notification"
Exit Sub
End If
'add icons to the menu
Dim hMenu As Long
Dim hSubMenu As Long
Dim hMenuImg As Long
Dim sFileName As String
' Get the bitmap.
sFileName = App.Path & "IconsmenuIconsinvisible.bmp"
hMenuImg = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or
LR_CREATEDIBSECTION)
' Get the menu item handle.
hMenu = GetMenu(Me.hWnd)
hSubMenu = GetSubMenu(hMenu, 0)
' Set the "mnuTwo" bitmap to the one that is loaded in memory.
Call SetMenuItemBitmaps(hSubMenu, 0, MF_BYPOSITION, hMenuImg, 0)
sFileName = App.Path & "IconsmenuIconsvisible.bmp"
hMenuImg = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or
LR_CREATEDIBSECTION)
Call SetMenuItemBitmaps(hSubMenu, 1, MF_BYPOSITION, hMenuImg, 0)
sFileName = App.Path & "IconsmenuIconsAdminPanel.bmp"
hMenuImg = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or
LR_CREATEDIBSECTION)
Call SetMenuItemBitmaps(hSubMenu, 2, MF_BYPOSITION, hMenuImg, 0)
sFileName = App.Path & "IconsmenuIconsLogOut.bmp"
hMenuImg = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or
LR_CREATEDIBSECTION)
Call SetMenuItemBitmaps(hSubMenu, 3, MF_BYPOSITION, hMenuImg, 0)
sFileName = App.Path & "IconsmenuIconsShutsystem.bmp"
hMenuImg = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or
LR_CREATEDIBSECTION)
Call SetMenuItemBitmaps(hSubMenu, 4, MF_BYPOSITION, hMenuImg, 0)
hMenu = GetMenu(Me.hWnd)
hSubMenu = GetSubMenu(hMenu, 1)
sFileName = App.Path & "IconsmenuIconsMemberList.bmp"
hMenuImg = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or
LR_CREATEDIBSECTION)
Call SetMenuItemBitmaps(hSubMenu, 0, MF_BYPOSITION, hMenuImg, 0)
sFileName = App.Path & "IconsmenuIconsMemberAdd.bmp"
hMenuImg = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or
LR_CREATEDIBSECTION)
Call SetMenuItemBitmaps(hSubMenu, 1, MF_BYPOSITION, hMenuImg, 0)
sFileName = App.Path & "IconsmenuIconsMeasurement.bmp"
hMenuImg = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or
LR_CREATEDIBSECTION)
59
56. Call SetMenuItemBitmaps(hSubMenu, 2, MF_BYPOSITION, hMenuImg, 0)
sFileName = App.Path & "IconsmenuIconsProgress.bmp"
hMenuImg = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or
LR_CREATEDIBSECTION)
Call SetMenuItemBitmaps(hSubMenu, 3, MF_BYPOSITION, hMenuImg, 0)
sFileName = App.Path & "IconsmenuIconsMakePayment.bmp"
hMenuImg = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or
LR_CREATEDIBSECTION)
Call SetMenuItemBitmaps(hSubMenu, 4, MF_BYPOSITION, hMenuImg, 0)
hMenu = GetMenu(Me.hWnd)
hSubMenu = GetSubMenu(hMenu, 3)
sFileName = App.Path & "IconsmenuIconsCalculator.bmp"
hMenuImg = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or
LR_CREATEDIBSECTION)
Call SetMenuItemBitmaps(hSubMenu, 0, MF_BYPOSITION, hMenuImg, 0)
sFileName = App.Path & "IconsmenuIconsChangeWall.bmp"
hMenuImg = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or
LR_CREATEDIBSECTION)
Call SetMenuItemBitmaps(hSubMenu, 1, MF_BYPOSITION, hMenuImg, 0)
End Sub
Private Sub MDIForm_Unload(Cancel As Integer)
If MsgBox("Are you really want to exit?", vbYesNo + vbQuestion, "Notification") = vbYes Then
Unload Me
End If
End Sub
Private Sub measurement_Click()
frmSearch.loadMeasurement = True
frmSearch.Show
End Sub
Private Sub memberdetails_Click()
frmMemberlist.Show
End Sub
Private Sub metroGrid_Click()
If frmMetroStyleMenu.Visible = False Then
frmMetroStyleMenu.Visible = True
Exit Sub
End If
frmMetroStyleMenu.Show
End Sub
Private Sub payment_Click()
frmSearch.loadPayment = True
frmSearch.Show
End Sub
Private Sub reports_Click()
frmInitialReport.Show
60
57. End Sub
Private Sub setWallpaper_Click()
dialogToChangeWallpaper.Show
End Sub
Private Sub shutsystem_Click()
If MsgBox("Are you really want to exit?", vbYesNo + vbQuestion, "Notification") = vbYes Then
Unload Me
End If
End Sub
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
Private Sub cmdBrowse_Click()
CommonDialog1.ShowOpen
pictureProfile.Picture = LoadPicture(CommonDialog1.FileName)
photoUrl = CommonDialog1.FileName
photoName = CommonDialog1.FileTitle
End Sub
Private Sub cmdCancel_Click()
If MsgBox("Exit?", vbYesNo + vbQuestion, "Notification") = vbYes Then
Call disconnectdatabase
Unload Me
End If
End Sub
Private Sub cmdClear_Click()
'Call clear
End Sub
Private Sub cmdProgress_Click()
End Sub
Private Sub cmdReport_Click()
If isClicked Then
cmdReport.Caption = "Show Report"
Me.Width = Line2.X2
isClicked = False
61
58. Else
cmdReport.Caption = "Hide Report"
Me.Width = 13920
isClicked = True
End If
End Sub
Private Sub cmdSave_Click()
If txtid.Text = "" And txtfname.Text = "" And txtlname.Text = "" And txtgender.Text = "Select" And
txtdob.Text = "" And txtnumber.Text = "" And txtaddress.Text = "" Then
MsgBox "Fill the fields", vbOKOnly + vbExclamation, "Warning!"
End If
If loadType = 1 Then
'memberModify
rs.Open "select * from members"
If Not rs.EOF Then
rs.MoveFirst
End If
While Not rs.EOF
If rs.Fields(0) = txtid.Text Then
rs.Fields(0) = txtid.Text
rs.Fields(1) = txtfname.Text
rs.Fields(2) = txtlname.Text
rs.Fields(3) = txtgender.Text
rs.Fields(4) = txtnumber.Text
rs.Fields(5) = txtaddress.Text
rs.Fields(7) = txtdob.Value
'delete the previous photo
Kill App.Path & rs.Fields(8)
'new photo is copied here
If Not photoUrl = "" Then
FileCopy photoUrl, App.Path & "ProfilePicture" & photoName
End If
'set the photo to the database
rs.Fields(8) = "ProfilePicture" & photoName
Unload Me
Exit Sub
End If
rs.MoveNext
Wend
ElseIf loadType = 2 Then
'memberReadOnly
Else
'memberAdd
dd = Format$(Now, "mm/dd/yyyy")
tt = Format$(time, "hh:mm:ssAM/PM")
dateTimeNow = dd & " " & tt
rs.Open "select * from members"
62
59. If Not rs.EOF Then
rs.MoveLast
End If
rs.AddNew
rs.Fields(0) = txtid.Text
rs.Fields(1) = txtfname.Text
rs.Fields(2) = txtlname.Text
rs.Fields(3) = txtgender.Text
rs.Fields(4) = txtnumber.Text
rs.Fields(5) = txtaddress.Text
rs.Fields(6) = dateTimeNow
rs.Fields(7) = txtdob.Value
rs.Fields("dueDate") = dd
If Not photoUrl = "" Then
FileCopy photoUrl, App.Path & "ProfilePicture" & photoName
End If
rs.Fields(8) = "ProfilePicture" & photoName
rs.Update
rs.Close
MsgBox "Saved!", vbOKOnly + vbInformation, "Notification"
If MsgBox("Are you want to make payment?", vbYesNo, "Payment") = vbYes Then
frmPayment.txtid = txtid.Text
frmPayment.txtname = txtfname.Text & " " & txtlname.Text
frmPayment.Show
Unload Me
Else
Me.Refresh
Call clear
Unload Me
End If
End If
End Sub
Private Sub Form_Load()
Call databaseconnection
Call clear
txtgender.AddItem "Male"
txtgender.AddItem "Female"
txtid.Enabled = True
txtdueDate.Enabled = False
txtnumber.MaxLength = 12
cmdReport.Visible = False
cmdBrowse.Visible = True
cmdCancel.Visible = True
cmdClear.Visible = True
cmdSave.Visible = True
Me.Height = 6000
Me.Width = Line2.X2
63
60. If loadType = 1 Then
'#######memberModify
Me.Caption = "Edit member"
txtid.Enabled = False
txtdoj.Enabled = False
cmdSave.Caption = "Update"
Me.Height = 6000
Me.Width = Line2.X2
cmdReport.Visible = False
rs.Open "select * from members", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
While Not rs.EOF
If rs.Fields(0) = memberId Then
txtid.Text = rs.Fields(0)
txtfname.Text = rs.Fields(1)
txtlname.Text = rs.Fields(2)
txtgender.Text = rs.Fields(3)
txtnumber.Text = rs.Fields(4)
txtaddress.Text = rs.Fields(5)
txtdoj.Text = rs.Fields(6)
txtdob.Value = rs.Fields(7)
If FileExists(App.Path & rs.Fields(8)) Then
Image1.Picture = LoadPicture(App.Path & rs.Fields(8))
End If
txtdueDate.Text = rs.Fields(9)
rs.Close
Exit Sub
End If
rs.MoveNext
Wend
ElseIf loadType = 2 Then
'########memberReadOnly
Me.Caption = "Member in detail"
cmdClear.Visible = False
cmdCancel.Visible = False
cmdSave.Visible = False
cmdReport.Visible = True
cmdBrowse.Visible = False
txtaddress.Enabled = False
txtdob.Enabled = False
txtdoj.Enabled = False
txtfname.Enabled = False
txtgender.Enabled = False
txtid.Enabled = False
txtlname.Enabled = False
64
61. txtnumber.Enabled = False
Me.Height = 9210
Me.Width = Line2.X2
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
txtid.Text = rs.Fields(0)
txtfname.Text = rs.Fields(1)
txtlname.Text = rs.Fields(2)
txtgender.Text = rs.Fields(3)
txtdob.Value = rs.Fields(7)
txtnumber.Text = rs.Fields(4)
txtaddress.Text = rs.Fields(5)
txtdoj.Text = rs.Fields(6)
Dim fullPath As String
fullPath = App.Path & rs.Fields(8)
pictureProfile.Picture = LoadPicture(fullPath)
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
65
62. 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 = ""
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))
66
63. 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
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
67
64. 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
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
68
65. 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))
frmMemberMeasurement.Show
End Sub
Private Sub DataGrid1_Click()
memberId = DataGrid1.Columns(0)
End Sub
Private Sub Form_Load()
memberId = -1
'MsgBox memberId
Me.Picture = Nothing
memberTableDC.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path &
"Datasgsdata.mdb;Persist Security Info=False"
memberTableDC.CommandType = adCmdText
memberTableDC.RecordSource = "select * from members"
Set DataGrid1.DataSource = memberTableDC
End Sub
Private Sub searchField_Change()
If searchField.Text = "" Then
DataGrid1.ClearFields
memberTableDC.CommandType = adCmdText
memberTableDC.RecordSource = "Select * from members"
Set DataGrid1.DataSource = memberTableDC
memberTableDC.Refresh
DataGrid1.Refresh
Exit Sub
End If
If optRno Then
DataGrid1.ClearFields
memberTableDC.CommandType = adCmdText
memberTableDC.RecordSource = "Select * from members where memberId like '" &
Val(searchField.Text) & "%'"
Set DataGrid1.DataSource = memberTableDC
memberTableDC.Refresh
DataGrid1.Refresh
69
66. ElseIf optFname Then
DataGrid1.ClearFields
memberTableDC.CommandType = adCmdText
memberTableDC.RecordSource = "Select * from members where firstname like '" &
searchField.Text & "%'"
Set DataGrid1.DataSource = memberTableDC
memberTableDC.Refresh
DataGrid1.Refresh
End If
End Sub
Private Sub searchField_KeyPress(KeyAscii As Integer)
If optRno Then
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End If
End Sub
frmMemberMeasurement
Public memberId As Integer
Public memberGender As Boolean
Dim dateTimeNow As String
Dim dd As String
Dim tt As String
Private Sub c1height_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub c2weight_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub c3neck_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub c4hips_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub c5waist_Change()
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
70
67. End If
End Sub
Private Sub c6forearm_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub c7wrist_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub cmdCalculate_Click()
lblBMI.Caption = calculateBMIbyMetric(Val(c2weight.Text), Val(c1height.Text))
lblBodyFat.Caption = calculateBodyFat(memberGender, Val(c2weight.Text), Val(c5waist.Text),
Val(c7wrist.Text), Val(c4hips.Text), Val(c6forearm.Text)) & "%"
End Sub
Private Sub cmdCancel_Click()
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)
71
68. 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)
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
72
69. 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
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
frmMetroStyleMenu
Public memberId As Integer
Public memberGender As Boolean
Dim dateTimeNow As String
Dim dd As String
Dim tt As String
Private Sub c1height_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
73
70. KeyAscii = 0
End If
End Sub
Private Sub c2weight_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub c3neck_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub c4hips_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub c5waist_Change()
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub c6forearm_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub c7wrist_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub cmdCalculate_Click()
lblBMI.Caption = calculateBMIbyMetric(Val(c2weight.Text), Val(c1height.Text))
lblBodyFat.Caption = calculateBodyFat(memberGender, Val(c2weight.Text), Val(c5waist.Text),
Val(c7wrist.Text), Val(c4hips.Text), Val(c6forearm.Text)) & "%"
End Sub
Private Sub cmdCancel_Click()
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 _
74
71. 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)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
End If
Private Sub d2thigh_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then
KeyAscii = 0
75
72. 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
Private Sub Form_Unload(Cancel As Integer)
If MsgBox("Measurement will be declined", vbYesNo + vbQuestion, "Notification") = vbYes Then
Unload Me
End If
76
73. 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")
rs.Fields(2).Value = Val(txtPayableAmt.Caption)
rs.Fields(3).Value = Val(lblBillno.Caption)
rs.Update
rs.Close
rs.Open "select * from members", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
Do Until rs.EOF
If rs.Fields(0) = Val(txtid.Text) Then
Dim dueSTR As String
dueSTR = rs.Fields("dueDate").Value
rs.Fields("dueDate").Value = addMonth(dueSTR, duration)
rs.Update
If MsgBox("Payment Transaction done! " & vbCrLf & "Do you want to print the receipt?", vbYesNo
+ vbQuestion, "Notification") = vbYes Then
'Receipt Print page generation ***************************************************
77
74. 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
Dim zBillNo As Integer
Dim zId As Integer
Dim zAmt As Double
Do Until rsTemp.EOF
zgname = rsTemp.Fields(0)
zaddress = rsTemp.Fields(1)
zphone = rsTemp.Fields(3)
Exit Do
Loop
zmname = Trim(txtname.Text)
zpType = Trim(txtPaymentType.Text)
zdueDate = Trim(rs.Fields("dueDate"))
zBillNo = Val(lblBillno.Caption)
zId = Val(txtid.Text)
zAmt = Val(txtPayableAmt.Caption)
Call databaseconnection
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
78
75. 'ENDING RECEIPT GENERATION
******************************************************
End If
Exit Do
End If
rs.MoveNext
Loop
rs.Close
'Unload Me
End Sub
Private Sub Form_Load()
Call databaseconnection
'generating billno
rs.Open "select * from paymentTransaction ORDER BY billno", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveLast
End If
If rs.RecordCount = 0 Then
lblBillno.Caption = "0"
Else
lblBillno.Caption = rs.Fields(3) + 1
End If
rs.Close
rs.Open "select * from membershipPlan", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
While Not rs.EOF
txtPaymentType.AddItem (rs.Fields(0).Value)
rs.MoveNext
Wend
txtPaymentType.Text = "Select"
rs.Close
rs.Open "Select * from members", con, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.MoveFirst
End If
While Not rs.EOF
If memberId = rs.Fields(0) Then
txtid.Text = rs.Fields(0)
txtname.Text = rs.Fields(1)
rs.Close
Exit Sub
End If
rs.MoveNext
79