+ All Categories
Home > Technology > Smart Gym System documentation

Smart Gym System documentation

Date post: 08-Sep-2014
Category:
Upload: tuvshinbayar-davaa
View: 4,883 times
Download: 10 times
Share this document with a friend
Description:
 
Popular Tags:
155
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 5
Transcript
Page 1: Smart Gym System documentation

1. Introduction1.1 Overview of Project1.2 Objectives1.3 Modules1.4 Architecture and Design of the project

2. Literature Survey2.1 Existing System 2.1.1 Drawbacks of Existing System2.2 Proposed System 2.2.1 Merits of Proposed System2.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 Analysis3.1 Role of SRS3.2 Aim3.3 Purpose3.4 Scope3.5 Application Requirements3.6 Hardware Requirements3.7 Functional Requirements 3.7.1 Administrator Functional Requirements3.8 Non-Functional Requirements 3.8.1 Reliability 3.8.2 Usability 3.8.3 Maintainability 3.8.4 Performance

5

Page 2: Smart Gym System documentation

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 System6.3 Testing Results

7. Conclusion

8. Future Enhancement

9. Bibliography

10. User Manual 10.1 Screen Shots

6

Page 3: Smart Gym System documentation

Chapter 1

Introduction

7

Page 4: Smart Gym System documentation

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 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

Page 5: Smart Gym System documentation

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 userAdmin can create an user along with password. Admin also able to put a user in a particular groups.

Creating groupCreate a group and set privilege for it. It includes read, read/write, read/write/delete permissions.

Creating membership planCreate 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.

9

Page 6: Smart Gym System documentation

1.4 Architecture and Design of the project

The application will be made of Desktop based distributed two-tier architecture to support user entertainment at the same time.

10

Page 7: Smart Gym System documentation

DFD LEVEL-0: CONTEXT DIAGRAM :

11

Page 8: Smart Gym System documentation

Chapter 2

Literature Survey

12

Page 9: Smart Gym System documentation

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.

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

13

Page 10: Smart Gym System documentation

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

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

14

Page 11: Smart Gym System documentation

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 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.

15

Page 12: Smart Gym System documentation

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 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.

16

Page 13: Smart Gym System documentation

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:

*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

17

Page 14: Smart Gym System documentation

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

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:

18

Page 15: Smart Gym System documentation

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.

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.

19

Page 16: Smart Gym System documentation

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….

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

20

Page 17: Smart Gym System documentation

• 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

• 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

21

Page 18: Smart Gym System documentation

• 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

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 torespond 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 towork with Access databases, but it can also work with others.

22

Page 19: Smart Gym System documentation

2.3.1.13 ActiveX Data Object ComponentsThe 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 useMoveNext to move.

23

Page 20: Smart Gym System documentation

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 inSource.• 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

Generically, any database management system (DBMS) that can response to queries from client

machines formatted on the SQL language.

.

24

Page 21: Smart Gym System documentation

Chapter

Requirement Analysis

25

Page 22: Smart Gym System documentation

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.

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.

26

Page 23: Smart Gym System documentation

3.5 Application Requirements

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.

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

Page 24: Smart Gym System documentation

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

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

28

Page 25: Smart Gym System documentation

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

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.

29

Page 26: Smart Gym System documentation

Chapter 4

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

30

Page 27: Smart Gym System documentation

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.

4.7.2 Tables Created

Table 1: login table

FIELD NAME

DATA TYPE

SIZE

userId number long 31

Page 28: Smart Gym System documentation

integerusername text 30

password text 30

firstname text 30

lastname text 50

gid number long integer

Table 2: userGroup table

FIELD NAME DATA TYPE

SIZE

groupId number long integer

groupName text 255

permissionSetId number long integer

Table 3: userPermission

FIELD NAME DATA TYPE

SIZE

permissionId integer

canSeeMember integer

canAddMember integer

canEditMember integer

canDeleteMember integer

canTakeMeasurement integer canSeeReport integer canSeeBodyProgress integer

Table 4: members table

32

Page 29: Smart Gym System documentation

Table 5: progressMember Table

FIELD NAME DATA TYPE SIZE

memberId long integer

height double

weight double

bmi double

biceps double

hips double thigh double neck double forearms double chest double calves double mdate Date/Time bodyfat double waist double wrist double

Table 6: paymentTransaction Table

FIELD NAME DATA TYPE SIZEmemberId long

integer

FIELD NAME DATA TYPE SIZE

memberId long integer

firstname text 50

lastname text 50

gender text 10

number long integer

address text 255doj Date/Time dob Date/Time profilePhotoUrl text 255dueDate text 255

33

Page 30: Smart Gym System documentation

date Date/Time

amt Currency

Table 7: gymDetail Table

FIELD DATATYPE SIZE

gymName text 255gymAddress text 255gymLogoUrl text 255gymPhone text 255

34

Page 31: Smart Gym System documentation

Coding

DialogLoading Form:Option ExplicitDim counter As IntegerPrivate Sub Form_Load() Dim Action As AnimationActions Action = gfaPlay counter = 0End Sub

35

Page 32: Smart Gym System documentation

Private Sub Timer1_Timer() If counter >= 2 Then frmMain.Show Unload Me Exit Sub End If counter = counter + 1End SubDialogToAccessAdmin Form:Option ExplicitPrivate Sub CancelButton_Click()Unload MeEnd SubPrivate Sub Form_Load()If Me.Visible = True ThentxtPassword.SetFocusCall CenterChild(frmMain, Me)End IfEnd SubPrivate 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 Call disconnectdatabase MsgBox "You are not granted to access", vbOKOnly + vbExclamation, "Authentication" txtPassword.Text = "" txtPassword.SetFocusEnd SubdialogToChangeWallpaper Form:Option ExplicitDim file As StringPrivate Sub CancelButton_Click()Unload MeEnd SubPrivate Sub cmdBwse_Click() CommonDialog1.ShowOpen Dim ext As String ext = GetFileExtension(CommonDialog1.FileName)

36

Page 33: Smart Gym System documentation

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 SubEnd IfEnd SubPrivate Sub cmdSave_Click()If file = "" ThenMsgBox "Choose the wallpaper to set!", vbOKOnly + vbExclamation, "Notification"Exit SubEnd IfFileCopy file, App.Path & "\wallpaper.jpeg"frmMain.Picture = LoadPicture(App.Path & "\wallpaper.jpeg")Unload MefrmMain.SetFocusEnd SubPrivate Sub Form_Load()file = ""Me.Caption = ""End SubfrmAdmin Form:Dim add As IntegerDim userId As IntegerDim planName As StringDim permId As IntegerDim file As StringPrivate Sub cmdDelete_Click() 'delete group sub If qcombGroup.ListIndex = -1 Then MsgBox "Select a group to delete!", vbOKOnly + vbExclamation, "Warning" 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

37

Page 34: Smart Gym System documentation

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 SubPrivate Sub cmdSave_Click()'check the empty fields'check whether group id is exited or not'addIf 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 SubEnd IfCall databaseconnectionrs.Open "select * from userGroup"If Not rs.EOF Thenrs.MoveLastEnd Ifrs.AddNewrs.Fields(0) = Val(qgroupId.Text)rs.Fields(1) = Trim(qgroupName.Text)rs.Fields(2) = permIdrs.Updaters.Close

38

Page 35: Smart Gym System documentation

rs.Open "select * from userPermission", con, adOpenDynamic, adLockOptimisticIf Not rs.EOF Thenrs.MoveLastEnd Ifrs.AddNewrs.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 Else rs.Fields(8) = 0 End Ifrs.Updaters.CloseCall readGroupCall clearGroupEnd SubPrivate Sub cmdUpdate_Click()

39

Page 36: Smart Gym System documentation

'check the empty fields'check the group id matches, if then addIf 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 SubEnd IfCall databaseconnectionrs.Open "select * from userGroup"If Not rs.EOF Thenrs.MoveFirstEnd IfDo While Not rs.EOFIf rs.Fields(0) = Val(qgroupId.Text) Thenrs.Fields(0) = Val(qgroupId.Text)rs.Fields(1) = Trim(qgroupName.Text)rs.UpdateExit DoEnd Ifrs.MoveNextLooprs.Closers.Open "select * from userPermission", con, adOpenDynamic, adLockOptimisticIf Not rs.EOF Thenrs.MoveLastEnd IfDo Until rs.EOFIf 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

40

Page 37: Smart Gym System documentation

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 DoEnd Ifrs.MoveNextLooprs.CloseCall readGroupCall clearGroupEnd SubPrivate Sub Form_Load()Call databaseconnectionCall refreshLoginTableCall refreshMembershipPlanTableuserId = -1planName = ""'Fill the table'Call fillTable'***Initializing comboBoxqmemberAdd.AddItem ("Allow")qmemberAdd.AddItem ("Deny")qmemberEdit.AddItem ("Allow")qmemberEdit.AddItem ("Deny")qmemberRead.AddItem ("Allow")qmemberRead.AddItem ("Deny")

41

Page 38: Smart Gym System documentation

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 = FalseDim I As IntegerI = 1While I <= 24mtxtDuration.AddItem II = I + 1Wend'***Reading groupsCall readGroup'***Fill lgroupCall databaseconnectionrs.Open "select * from userGroup", con, adOpenDynamic, adLockOptimisticIf Not rs.EOF Then rs.MoveFirstEnd IfWhile Not rs.EOF lgroup.AddItem (rs.Fields(0)) rs.MoveNextWendrs.CloseCall disconnectdatabase

Me.Caption = "Admin Panel"add = 0'Gym details loadingCall databaseconnectionrs.Open "select * from gymDetail", con, adOpenDynamic, adLockOptimisticIf Not rs.EOF Then rs.MoveFirstEnd IfDo 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

42

Page 39: Smart Gym System documentation

gymPhone.Text = rs.Fields(3) rs.MoveNextLooprs.CloseEnd Sub

Private Sub Form_Unload(Cancel As Integer)If MsgBox("Do you want to exit Admin panel?", vbYesNo + vbQuestion, "Notification") = vbYes Then Unload MeElse Me.SetFocusEnd IfEnd SubPrivate 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 IfEnd SubPrivate Sub gymCmdSave_Click() If gymName.Text = "" And _ gymAddress.Text = "" And _ gymPhone.Text = "" And _ file = "" Then MsgBox "All fields are mandatory!", vbOKOnly + vbExclamation, "Notification" 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

43

Page 40: Smart Gym System documentation

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 SubPrivate Sub gymPhone_KeyPress(KeyAscii As Integer)If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate 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 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

44

Page 41: Smart Gym System documentation

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 IfEnd SubPrivate Sub lcmdCancel_Click()Unload MeEnd SubPrivate Sub lcmdDelete_Click() If userId = -1 Then MsgBox "Select a user to delete!", vbOKOnly + vbExclamation, "Notification" Exit Sub End IfCall databaseconnection rs.Open "Select * from login", con, adOpenDynamic, adLockOptimisticIf Not rs.EOF Then rs.MoveFirst End IfDo Until rs.EOF If rs.Fields(0) = userId Then rs.Delete MsgBox "User is deleted", vbOKOnly + vbInformation, "Notification" Exit Do End If rs.MoveNext

45

Page 42: Smart Gym System documentation

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" Call clearLoginFields Call refreshLoginTableEnd SubPrivate Sub lcmdRefresh_Click() Call refreshLoginTableEnd SubPrivate 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

46

Page 43: Smart Gym System documentation

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 comboBoxEnd SubPrivate Sub mcmdDelete_Click()If planName = "" ThenMsgBox "Choose the plan to delete!", vbOKOnly + vbExclamation, "Notification"Exit SubEnd IfCall databaseconnectionrs.Open "select * from membershipPlan", con, adOpenDynamic, adLockOptimisticIf Not rs.EOF Thenrs.MoveFirstEnd IfWhile Not rs.EOFIf rs.Fields(0) = planName Thenrs.Deleters.Updaters.CloseplanName = ""Call disconnectdatabaseCall refreshMembershipPlanTablemtxtplanname.Text = ""mtxtfinalAMT.Caption = ""mtxtdiscount.Text = ""mtxtamount.Text = ""Exit SubEnd Ifrs.MoveNextWendEnd SubPrivate Sub mcmdSave_Click()If mtxtplanname.Text = "" And mtxtamount.Text = "" And mtxtdiscount.Text = "" And mtxtDuration.Text = "Select" ThenMsgBox "Fill the blanks!", vbOKOnly + vbExclamation, "Notification"Exit SubEnd IfCall databaseconnectionrs.Open "select * from membershipPlan", con, adOpenDynamic, adLockOptimisticIf Not rs.EOF Thenrs.MoveLastEnd Ifrs.AddNew

47

Page 44: Smart Gym System documentation

rs.Fields(0) = Trim(mtxtplanname.Text)rs.Fields(1) = Val(mtxtDuration.Text)rs.Fields(2) = Val(mtxtfinalAMT.Caption)rs.Updaters.CloseCall disconnectdatabaseCall refreshMembershipPlanTablemtxtplanname.Text = ""mtxtfinalAMT.Caption = ""mtxtdiscount.Text = ""mtxtamount.Text = ""End SubPrivate Sub mcmdUpdate_Click()If mtxtplanname.Text = "" And mtxtamount.Text = "" And mtxtdiscount.Text = "" ThenMsgBox "Fill the blanks!", vbOKOnly + vbExclamation, "Notification"Exit SubEnd IfIf mtxtfinalAMT.Caption = "" ThenMsgBox "Final amount is not calculated!", vbOKOnly + vbExclamation, "Notification"Exit SubEnd IfCall databaseconnectionDim rsTemp As ADODB.RecordsetSet rsTemp = New ADODB.RecordsetrsTemp.Open "select * from membershipPlan", con, adOpenDynamic, adLockOptimisticIf Not rsTemp.EOF ThenrsTemp.MoveFirstEnd IfDo 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 IfrsTemp.MoveNextLoop'rsTemp.CloseEnd SubPrivate Sub membershipPlan_Click()planName = Trim(membershipPlan.Columns(0))

48

Page 45: Smart Gym System documentation

mtxtplanname = planNamemtxtamount = 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 IfEnd SubPrivate Sub mtxtdiscount_Change()mtxtfinalAMT = mtxtamount - (Val(mtxtdiscount) * Val(mtxtamount)) / 100End SubPrivate Sub mtxtdiscount_KeyPress(KeyAscii As Integer)If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate 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 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

49

Page 46: Smart Gym System documentation

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 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

50

Page 47: Smart Gym System documentation

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 Looprs.CloseCall disconnectdatabaseEnd SubPublic 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 rs.Close Call disconnectdatabase qcombGroup.AddItem ("Add new group")End SubPublic Sub clearGroup() qmemberAdd.Text = "" qmemberEdit.Text = "" qmemberRead.Text = "" qmemberDelete.Text = "" qmeasureAdd.Text = "" qreadProgress.Text = "" qreadReport.Text = "" qgroupId.Text = "" qgroupName.Text = ""

51

Page 48: Smart Gym System documentation

'cmdUpdate.Enabled = True 'cmdSave.Enabled = TrueEnd SubPublic Sub clearLoginFields()lid.Text = ""lusername.Text = ""lpassword.Text = ""lfname.Text = ""llname.Text = ""lgroup.Text = ""End SubPublic 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 loginTableDC.Refresh loginTable.RefreshEnd SubPublic 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.RefreshEnd SubfrmIndividualReport Form:Option ExplicitDim 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 SubPrivate Sub Form_Load() mId = -1 lblBMIChange.Caption = "" lblBodyFatChange.Caption = ""

52

Page 49: Smart Gym System documentation

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 & "\Data\sgsdata.mdb;Persist Security Info=False" memberTableDC.CommandType = adCmdText memberTableDC.RecordSource = "select memberId, firstname, lastname from members" Set memberTable.DataSource = memberTableDCEnd Sub

Private Sub memberTable_Click() mId = Val(memberTable.Columns(0))End SubPublic Function generateSelfReport(memberId As Integer)Dim str As StringlblMemberNameGreeting.Caption = memberTable.Columns(0) & " " & memberTable.Columns(1) & " " & memberTable.Columns(2)str = getLastMeasurementDateOf(memberId)If Not str = "" ThenlblLastMeasurementDate.Caption = "Last measurement date: " & strElselblLastMeasurementDate.Caption = "Measurement History is empty"End Ifstr = ""lblBMIChange.Caption = "BMI change : " & getBMIchangeOf(memberId)lblBodyFatChange.Caption = "Body Fat change : " & getBodyFatChangeOf(memberId)lblWeightChange.Caption = "Weight change : " & getWeightChangeOf(memberId)str = getLastPaymentDateOf(memberId)If Not str = "" ThenlblLastPaymentDate.Caption = "Last Payment Date : " & strElselblLastPaymentDate.Caption = "Payment History is empty"End Ifstr = ""

str = getTotalAmtPaidOf(memberId)If Not str = "" ThenlblTotalAmtPaid.Caption = "Total amount paid : " & strElselblTotalAmtPaid.Caption = "Payment History is empty"End Ifstr = ""lblSinceJoinedDate.Caption = sinceJoinedDateOf(memberId)

53

Page 50: Smart Gym System documentation

lblDueDate.Caption = "Due Date : " & getDueDateOf(memberId)End FunctionPrivate 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 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 IfEnd SubPrivate 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

54

Page 51: Smart Gym System documentation

KeyAscii = 0 End If End IfEnd SubfrmInitialReport Form:Option ExplicitPrivate Sub cmdProceed_Click()If optIndividual.Value = False And optReport.Value = False Then MsgBox "Select the report type!", vbOKOnly + vbExclamation, "Notification" Exit SubElseIf optIndividual.Value Then frmIndividualReport.ShowElse frmReport.ShowEnd IfUnload MeEnd SubfrmLogin Form:Option ExplicitPublic LoginSucceeded As BooleanPrivate Sub cmdCancel_Click() 'set the global var to false 'to denote a failed login LoginSucceeded = False Me.HideEnd SubPrivate Sub cmdClose_Click() If MsgBox("Are you really quit? ", vbYesNo, "Notification") = vbYes Then Unload Me End IfEnd SubPrivate Sub Form_Load()txtUserName.BackColor = RGB(241, 241, 241)txtPassword.BackColor = RGB(241, 241, 241)'lblOk.MousePointer = 99'lblOk.MouseIcon = LoadPicture(App.Path & "\hand.ico")End SubPrivate Sub lblOk_Click()If txtUserName.Text = "" And txtPassword.Text = "" ThenMsgBox "Enter the username and password!", vbOKOnly + vbExclamation, "Login"txtUserName.Text = ""txtPassword.Text = ""ElseIf txtUserName.Text = "" ThenMsgBox "Enter the username", vbOKOnly + vbExclamation, "Login"txtUserName.Text = ""txtPassword.Text = ""ElseIf txtPassword.Text = "" Then

55

Page 52: Smart Gym System documentation

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 IfEnd SubfrmMain Form:Private Declare Function GetMenu Lib "User32" (ByVal hWnd As Long) As LongPrivate Declare Function GetSubMenu Lib "User32" (ByVal hMenu As Long, ByVal nPos As Long) As LongPrivate Declare Function SetMenuItemBitmaps Lib "User32" _ (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, _ ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As LongPrivate 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 SetMenuItemBitmapsPrivate Const MF_BYPOSITION As Long = &H400&'Constants for LoadImagePrivate Const IMAGE_BITMAP As Long = &O0Private Const LR_LOADFROMFILE As Long = 16Private Const LR_CREATEDIBSECTION As Long = 8192Private Sub addmember_Click()frmMember.loadType = 0frmMember.ShowEnd Sub

56

Page 53: Smart Gym System documentation

Private Sub adminpanel_Click()dialogToAccessAdmin.ShowEnd SubPrivate Sub bodyprogress_Click()frmSearch.loadBodyProgress = TruefrmSearch.ShowEnd SubPrivate Sub calc_Click()Shell "C:\WINDOWS\System32\calc.exe"End SubPrivate Sub employees_Click(Index As Integer)End SubPrivate Sub hideMetroGrid_Click() frmMetroStyleMenu.Visible = FalseEnd SubPrivate Sub logout_Click()frmLogin.ShowUnload MeEnd SubPrivate Sub MDIForm_Load()Me.Caption = "Smart Gym System : " & barName'frmSideBar.Show'setting to fullscreendX = Me.WidthdY = Me.HeightsetFullScreen MefrmMetroStyleMenu.ShowDim ext As Stringext = 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 MsgBox "Invalid Image File!", vbOKOnly + vbExclamation, "Notification" Exit SubEnd 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 & "\Icons\menuIcons\invisible.bmp" hMenuImg = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or LR_CREATEDIBSECTION)' Get the menu item handle. hMenu = GetMenu(Me.hWnd)

57

Page 54: Smart Gym System documentation

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 & "\Icons\menuIcons\visible.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 & "\Icons\menuIcons\AdminPanel.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 & "\Icons\menuIcons\LogOut.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 & "\Icons\menuIcons\Shutsystem.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 & "\Icons\menuIcons\MemberList.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 & "\Icons\menuIcons\MemberAdd.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 & "\Icons\menuIcons\Measurement.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 & "\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) sFileName = App.Path & "\Icons\menuIcons\MakePayment.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 & "\Icons\menuIcons\Calculator.bmp" hMenuImg = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or LR_CREATEDIBSECTION)

58

Page 55: Smart Gym System documentation

Call SetMenuItemBitmaps(hSubMenu, 0, MF_BYPOSITION, hMenuImg, 0) sFileName = App.Path & "\Icons\menuIcons\ChangeWall.bmp" hMenuImg = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or LR_CREATEDIBSECTION) Call SetMenuItemBitmaps(hSubMenu, 1, MF_BYPOSITION, hMenuImg, 0)End SubPrivate Sub MDIForm_Unload(Cancel As Integer)If MsgBox("Are you really want to exit?", vbYesNo + vbQuestion, "Notification") = vbYes Then Unload MeEnd IfEnd Sub

Private Sub measurement_Click() frmSearch.loadMeasurement = True frmSearch.ShowEnd SubPrivate Sub memberdetails_Click()frmMemberlist.ShowEnd SubPrivate Sub metroGrid_Click() If frmMetroStyleMenu.Visible = False Then frmMetroStyleMenu.Visible = True Exit Sub End If frmMetroStyleMenu.ShowEnd SubPrivate Sub payment_Click() frmSearch.loadPayment = True frmSearch.ShowEnd SubPrivate Sub reports_Click() frmInitialReport.ShowEnd Sub

Private Sub setWallpaper_Click()dialogToChangeWallpaper.ShowEnd SubPrivate Sub shutsystem_Click()If MsgBox("Are you really want to exit?", vbYesNo + vbQuestion, "Notification") = vbYes Then Unload MeEnd IfEnd Sub

frmMember Form:Public loadType As IntegerPublic payment As BooleanPublic memberId As Integer

59

Page 56: Smart Gym System documentation

Dim ibj As ObjectDim dtmTest As DateDim dateTimeNow As StringDim dd As StringDim tt As StringDim photoUrl As StringDim photoName As StringDim isClicked As Boolean

Private Sub cmdBrowse_Click()CommonDialog1.ShowOpenpictureProfile.Picture = LoadPicture(CommonDialog1.FileName)photoUrl = CommonDialog1.FileNamephotoName = CommonDialog1.FileTitleEnd SubPrivate Sub cmdCancel_Click()If MsgBox("Exit?", vbYesNo + vbQuestion, "Notification") = vbYes ThenCall disconnectdatabaseUnload MeEnd IfEnd Sub

Private Sub cmdClear_Click()'Call clearEnd SubPrivate Sub cmdProgress_Click()End SubPrivate Sub cmdReport_Click() If isClicked Then cmdReport.Caption = "Show Report" Me.Width = Line2.X2 isClicked = False Else cmdReport.Caption = "Hide Report" Me.Width = 13920 isClicked = True End IfEnd SubPrivate 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

60

Page 57: Smart Gym System documentation

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" 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

61

Page 58: Smart Gym System documentation

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 IfEnd IfEnd SubPrivate Sub Form_Load()Call databaseconnectionCall cleartxtgender.AddItem "Male"txtgender.AddItem "Female"txtid.Enabled = TruetxtdueDate.Enabled = Falsetxtnumber.MaxLength = 12cmdReport.Visible = FalsecmdBrowse.Visible = TruecmdCancel.Visible = TruecmdClear.Visible = TruecmdSave.Visible = TrueMe.Height = 6000Me.Width = Line2.X2If 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

62

Page 59: Smart Gym System documentation

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 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)

63

Page 60: Smart Gym System documentation

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 SubElse'#######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 IfEnd SubPublic Function clear() txtid.Locked = True txtid.Text = "" txtfname.Text = "" txtlname.Text = ""

64

Page 61: Smart Gym System documentation

txtgender.Text = "Select" txtdob.Value = "1/1/2012" txtnumber.Text = "" txtaddress.Text = ""End FunctionPrivate 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 disconnectdatabaseEnd SubPublic Function generateSelfReport()Dim str As StringlblMemberNameGreeting.Caption = txtid.Text & " " & txtfname.Text & " " & txtlname.Textstr = getLastMeasurementDateOf(Val(txtid.Text))If Not str = "" ThenlblLastMeasurementDate.Caption = "Last measurement date: " & strElselblLastMeasurementDate.Caption = "Measurement History is empty"End Ifstr = ""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 = "" ThenlblLastPaymentDate.Caption = "Last Payment Date : " & strElselblLastPaymentDate.Caption = "Payment History is empty"End Ifstr = ""str = getTotalAmtPaidOf(Val(txtid.Text))If Not str = "" ThenlblTotalAmtPaid.Caption = "Total amount paid : " & strElselblTotalAmtPaid.Caption = "Payment History is empty"End Ifstr = ""lblSinceJoinedDate.Caption = sinceJoinedDateOf(Val(txtid.Text))lblDueDate.Caption = "Due Date : " & getDueDateOf(Val(txtid.Text))

65

Page 62: Smart Gym System documentation

Dim rs3 As ADODB.RecordsetSet rs3 = New ADODB.Recordsetrs3.CursorLocation = adUseClientrs3.Open "SELECT * FROM progressMember WHERE memberId=" & Val(txtid.Text), con, adOpenDynamic, adLockOptimisticSet measurementHistory.DataSource = rs3End FunctionPrivate Sub txtnumber_KeyPress(KeyAscii As Integer) If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubfrmMemberlist Form:Dim memberId As IntegerDim oSelRows As SelBookmarksDim bookmark As DoublePrivate Sub cmdAddMember_Click() frmMember.loadType = 0 frmMember.ShowEnd SubPrivate 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 End If Do While Not rs.EOF

66

Page 63: Smart Gym System documentation

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 SubPrivate 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 = -1End SubPrivate 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 = -1End SubPrivate 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 = -1End SubPrivate Sub cmmdTakeMeasurement_Click() frmMemberMeasurement.memberId = Val(DataGrid1.Columns(0)) frmMemberMeasurement.ShowEnd Sub

67

Page 64: Smart Gym System documentation

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 & "\Data\sgsdata.mdb;Persist Security Info=False" memberTableDC.CommandType = adCmdText memberTableDC.RecordSource = "select * from members" Set DataGrid1.DataSource = memberTableDCEnd SubPrivate 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 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 IfEnd SubPrivate Sub searchField_KeyPress(KeyAscii As Integer) If optRno Then If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End If

68

Page 65: Smart Gym System documentation

End IfEnd SubfrmMemberMeasurementPublic memberId As IntegerPublic memberGender As BooleanDim dateTimeNow As StringDim dd As StringDim tt As StringPrivate Sub c1height_KeyPress(KeyAscii As Integer)If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate Sub c2weight_KeyPress(KeyAscii As Integer)If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate Sub c3neck_KeyPress(KeyAscii As Integer) If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate Sub c4hips_KeyPress(KeyAscii As Integer) If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd Sub

Private Sub c5waist_Change()If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate Sub c6forearm_KeyPress(KeyAscii As Integer) If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate Sub c7wrist_KeyPress(KeyAscii As Integer) If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate Sub cmdCalculate_Click() lblBMI.Caption = calculateBMIbyMetric(Val(c2weight.Text), Val(c1height.Text))

69

Page 66: Smart Gym System documentation

lblBodyFat.Caption = calculateBodyFat(memberGender, Val(c2weight.Text), Val(c5waist.Text), Val(c7wrist.Text), Val(c4hips.Text), Val(c6forearm.Text)) & "%"End SubPrivate Sub cmdCancel_Click() If MsgBox("Measurement will be declined", vbYesNo + vbQuestion, "Notification") = vbYes Then Unload Me End IfEnd SubPrivate 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

70

Page 67: Smart Gym System documentation

MsgBox "Measurement of " & memberId & " was successfully added", vbOKOnly + vbInformation, "Notification" Unload MeEnd SubPrivate Sub d1bicep_KeyPress(KeyAscii As Integer) If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate Sub d2thigh_KeyPress(KeyAscii As Integer) If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate Sub d3chest_KeyPress(KeyAscii As Integer) If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate Sub d4calves_KeyPress(KeyAscii As Integer) If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate 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

71

Page 68: Smart Gym System documentation

End If Exit Do End If rs.MoveNext Loop rs.Close

End SubPrivate Sub Form_Unload(Cancel As Integer) If MsgBox("Measurement will be declined", vbYesNo + vbQuestion, "Notification") = vbYes Then Unload Me End IfEnd SubPrivate Sub optionCore_Click() corePanel.Enabled = True detailedPanel.Enabled = False detailedPanel.BackColor = &HE0E0E0End Sub

Private Sub optionDetailed_Click() corePanel.Enabled = True detailedPanel.Enabled = True detailedPanel.BackColor = corePanel.BackColorEnd SubfrmMetroStyleMenuPublic memberId As IntegerPublic memberGender As Boolean

Dim dateTimeNow As StringDim dd As StringDim tt As StringPrivate Sub c1height_KeyPress(KeyAscii As Integer)If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate Sub c2weight_KeyPress(KeyAscii As Integer)If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate Sub c3neck_KeyPress(KeyAscii As Integer) If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd Sub

72

Page 69: Smart Gym System documentation

Private Sub c4hips_KeyPress(KeyAscii As Integer) If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate Sub c5waist_Change()If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate Sub c6forearm_KeyPress(KeyAscii As Integer) If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate Sub c7wrist_KeyPress(KeyAscii As Integer) If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate 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 SubPrivate Sub cmdCancel_Click() If MsgBox("Measurement will be declined", vbYesNo + vbQuestion, "Notification") = vbYes Then Unload Me End IfEnd SubPrivate 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

73

Page 70: Smart Gym System documentation

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 MeEnd SubPrivate Sub d1bicep_KeyPress(KeyAscii As Integer) If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfPrivate Sub d2thigh_KeyPress(KeyAscii As Integer) If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate Sub d3chest_KeyPress(KeyAscii As Integer) If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate Sub d4calves_KeyPress(KeyAscii As Integer) If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubPrivate Sub Form_Load()

74

Page 71: Smart Gym System documentation

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.CloseEnd SubPrivate Sub Form_Unload(Cancel As Integer) If MsgBox("Measurement will be declined", vbYesNo + vbQuestion, "Notification") = vbYes Then Unload Me End IfEnd SubPrivate Sub optionCore_Click() corePanel.Enabled = True detailedPanel.Enabled = False detailedPanel.BackColor = &HE0E0E0End SubPrivate Sub optionDetailed_Click() corePanel.Enabled = True detailedPanel.Enabled = True detailedPanel.BackColor = corePanel.BackColorEnd SubfrmPayment Form:Public memberId As Integer

75

Page 72: Smart Gym System documentation

Dim duration As IntegerOption ExplicitPrivate Sub cmdCancel_Click()Call disconnectdatabaseUnload MeEnd SubPrivate Sub cmdPay_Click()rs.Open "select * from paymentTransaction", con, adOpenDynamic, adLockOptimisticIf Not rs.EOF Thenrs.MoveLastEnd Ifrs.AddNewrs.Fields(0).Value = txtid.Textrs.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.Updaters.Close

rs.Open "select * from members", con, adOpenDynamic, adLockOptimisticIf Not rs.EOF Thenrs.MoveFirstEnd IfDo 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 *************************************************** 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

76

Page 73: Smart Gym System documentation

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 'ENDING RECEIPT GENERATION ****************************************************** End If Exit Do End If rs.MoveNextLooprs.Close'Unload MeEnd Sub

Private Sub Form_Load()Call databaseconnection'generating billnors.Open "select * from paymentTransaction ORDER BY billno", con, adOpenDynamic, adLockOptimistic

77

Page 74: Smart Gym System documentation

If Not rs.EOF Then rs.MoveLastEnd IfIf rs.RecordCount = 0 Then lblBillno.Caption = "0"Else lblBillno.Caption = rs.Fields(3) + 1End Ifrs.Closers.Open "select * from membershipPlan", con, adOpenDynamic, adLockOptimisticIf Not rs.EOF Thenrs.MoveFirstEnd IfWhile Not rs.EOFtxtPaymentType.AddItem (rs.Fields(0).Value)rs.MoveNextWendtxtPaymentType.Text = "Select"rs.Closers.Open "Select * from members", con, adOpenDynamic, adLockOptimisticIf Not rs.EOF Thenrs.MoveFirstEnd IfWhile 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.MoveNextWendrs.Close'MsgBox "User could not found!", vbOKOnly + vbExclamation, "Notification"End SubPrivate Sub Form_Unload(Cancel As Integer)Call disconnectdatabaseEnd SubPrivate Sub txtPaymentType_Click()If txtPaymentType.Text = "..." ThendialogToAccessAdmin.ShowElsers.Open "select * from membershipPlan", con, adOpenDynamic, adLockOptimisticIf Not rs.EOF Thenrs.MoveFirstEnd IfWhile Not rs.EOF

78

Page 75: Smart Gym System documentation

If txtPaymentType.Text = rs.Fields(0) ThentxtPayableAmt.Caption = rs.Fields(2)duration = rs.Fields(1)rs.CloseExit SubEnd Ifrs.MoveNextWendrs.CloseEnd IfEnd Sub

frmProgress Form:Public memberId As IntegerPublic fname As StringPublic lname As StringPrivate 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 = tableDCEnd SubfrmReport Form:Option ExplicitDim billNo As IntegerDim paymentQuery As StringDim memberId As IntegerDim memberId1 As IntegerPrivate 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)

79

Page 76: Smart Gym System documentation

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 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.ShowEnd SubPrivate Sub cmdPrintDue_Click()Call databaseconnectionDim gymName As StringDim gymAddress As StringDim countM As IntegerDim recM As ADODB.RecordsetSet recM = New ADODB.RecordsetrecM.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 IfrecM.ClosecountM = countOutdatedMembersSet recM = getOutdatedMembersSet DueMembersP.DataSource = recMDueMembersP.DataMember = recM.DataMember

80

Page 77: Smart Gym System documentation

DueMembersP.Sections("Section4").Controls("lblGymName").Caption = gymNameDueMembersP.Sections("Section4").Controls("lblAddress").Caption = gymAddressDueMembersP.Sections("Section3").Controls("lblCount").Caption = countMDueMembersP.ShowEnd SubPrivate 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 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 = ""

81

Page 78: Smart Gym System documentation

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 = "" 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 SubPrivate 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

82

Page 79: Smart Gym System documentation

frmMember.memberId = memberId frmMember.ShowEnd SubPrivate 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.ShowEnd SubPrivate Sub combIncome_Click() Dim arr() As String arr = Split(combIncome.Text, " ") lblIncomeByRange.Caption = combIncome.Text & " Income : " & getIncomeByRange(Val(arr(1)))End SubPrivate 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.RefreshEnd SubPrivate 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.RefreshEnd SubPrivate Sub Form_Load()memberId = -1memberId1 = -1

83

Page 80: Smart Gym System documentation

billNo = -1paymentQuery = "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 = 0Dim arr() As Stringarr = Split(combIncome.Text, " ")Dim cMembers As IntegercMembers = countMemberslblTotalMembers.Caption = "Total Members : " & cMemberslblTotalIncome.Caption = "Total Income : " & getIncome & "rs"lblIncomeByRange.Caption = "Last Month Income : " & getIncomeByRange(Val(arr(1))) & "rs"Dim male As Integer, female As IntegerDim mperc As Double, fperc As Doublemale = countMaleMembersfemale = countFemaleMembersmperc = male / cMembers * 100fperc = female / cMembers * 100lblgenderMcount.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 = adCmdTextpaymentTransactionDC.RecordSource = "SELECT * FROM paymentTransaction"Set paymentTransaction.DataSource = paymentTransactionDCSet OutdatedMembers.DataSource = getOutdatedMembers

OutdatedMembers.Columns(0).Width = 400OutdatedMembers.Columns(1).Width = 1000OutdatedMembers.Columns(2).Width = 1700paymentTransaction.Columns(1).Width = 2300End SubPrivate Sub lblCountGenderMembers_Click()End SubPrivate Sub paymentTransaction_Click() billNo = paymentTransaction.Columns(3) memberId = Val(paymentTransaction.Columns(1))

84

Page 81: Smart Gym System documentation

End SubPrivate 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 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.RefreshEnd SubPrivate Sub txtSearchByBillno_KeyPress(KeyAscii As Integer) If Not Chr(KeyAscii) Like "[0-9]" And KeyAscii <> 8 Then KeyAscii = 0 End IfEnd SubfrmSearch Form:Public loadMeasurement As BooleanPublic loadSearchNprofile As BooleanPublic loadPayment As BooleanPublic loadBodyProgress As BooleanOption ExplicitPrivate 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

85

Page 82: Smart Gym System documentation

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 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

86

Page 83: Smart Gym System documentation

'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 Unload Me Else MsgBox "Profile has not loaded!", vbOKOnly + vbExclamation, "Notification" End IfEnd SubPrivate Sub combMember_Change() AutoTypeComboChange combMemberEnd SubPrivate 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 combMemberEnd SubPrivate Sub combMember_KeyDown(KeyCode As Integer, Shift As Integer)AutoTypeComboKeyDown combMember, KeyCode, Shift

87

Page 84: Smart Gym System documentation

End SubPrivate 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 IfEnd IfAutoTypeComboKeyPress Me, combMember, KeyAsciiEnd SubPrivate Sub combMember_LostFocus() AutoTypeComboLostFocus combMemberEnd SubPrivate Sub Form_Load() Call databaseconnection Call combSearchEnd SubCalculationModule Module:Public Function calculateBMIbyEnglish(weight As Double, Height As Double) Dim result As Double result = (weight / (Height * Height)) * 703 calculateBMIbyEnglish = Round(result, 2)End FunctionPublic Function calculateBMIbyMetric(weight As Double, Height As Double) Dim result As Double result = (weight / (Height * Height)) calculateBMIbyMetric = Round(result, 2)End FunctionPublic Function calculateBodyFat(gender As Boolean, weight As Double, waist As Double, wrist As Double, hips As Double, forearm As Double) As DoubleDim f1, f2, f3, f4, f5, lbm, bfw, result As DoubleIf gender Then'male f1 = (weight * 1.082) + 94.42 f2 = (waist * 4.15) lbm = f1 - f2 bfw = weight - lbm result = (bfw * 100) / weight calculateBodyFat = Round(result, 2)Else'female f1 = (weight * 0.732) + 8.987 f2 = wrist / 3.14 f3 = waist * 0.157 f4 = hips * 0.249 f5 = forearm * 0.434

88

Page 85: Smart Gym System documentation

lbm = f1 + f2 - f3 - f4 + f5 bfw = weight - lbm result = (bfw * 100) / weight calculateBodyFat = Round(result, 2)End IfEnd Function

customDialogModule Module : Public trigger As BooleanPublic answerYesNo As BooleanPublic counter As LongSub CenterChild(Parent As Form, Child As Form)Dim iTop As IntegerDim iLeft As IntegerIf Parent.WindowState <> vbNormal ThenExit SubElseiTop = ((Parent.Height - Child.Height) \ 2)'iLeft = ((Parent.Width - Child.Width) \ 2)iLeft = ((Parent.ScaleWidth - Child.ScaleWidth) \ 2)Child.Move iLeft, iTopEnd IfEnd SubPublic Function helpDlg(msg As String)DialogHelp.lblBodyText = msgDialogHelp.ShowEnd FunctionPublic Function notificationDlg(msg As String) As BooleanDialogNotification.lblBodyText = msgDialogNotification.ShownotificationDlg = answerYesNoEnd FunctionFunction 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 NextEnd FunctiondatabaseModule Module:Public barName As StringPublic databasePath As String

89

Page 86: Smart Gym System documentation

Public con As New ADODB.ConnectionPublic rs As New ADODB.RecordsetPublic rsTemp As New ADODB.RecordsetPublic gobjCmd As ADODB.CommandPublic Sub databaseconnection()If Not con.State = adStateOpen Thencon.Provider = "Microsoft.Jet.OLEDB.4.0"con.Open App.Path & "\Data\sgsdata.mdb"End If

End SubPublic Sub disconnectdatabase()If con.State = adStateOpen Thencon.CloseEnd IfEnd SubFunction FileExists(FileName As String) As Boolean On Error GoTo ErrorHandler FileExists = (GetAttr(FileName) And vbDirectory) = 0ErrorHandler: FileExists = FalseEnd FunctionPublic Sub combSearch() Set gobjCmd = New ADODB.Command Set gobjCmd.ActiveConnection = con gobjCmd.CommandType = adCmdTextEnd Sub

dateTimeModule Module:Public Function CurrentDate() As StringDim sdate As Datesdate = DateValue(Now)CurrentDate = sdateEnd FunctionPublic Function CurrentTime() As StringDim time As Datetime = TimeValue(Now)CurrentTime = timeEnd FunctionPublic Function CurrentDayToString() As StringDim day As Dateday = DatePart("w", Now)If day = 1 ThenCurrentDayToString = "Sunday"ElseIf day = 2 ThenCurrentDayToString = "Monday"ElseIf day = 3 Then

90

Page 87: Smart Gym System documentation

CurrentDayToString = "Tuesday"ElseIf day = 4 ThenCurrentDayToString = "Wednesday"ElseIf day = 5 ThenCurrentDayToString = "Thursday"ElseIf day = 6 ThenCurrentDayToString = "Friday"ElseIf day = 7 ThenCurrentDayToString = "Saturday"End IfEnd FunctionPublic Function splitNgetDate(datestr As String) As StringDim tempArray() As StringtempArray = Split(datestr, " ")splitNgetDate = tempArray(0)End FunctionPublic Function splitNgetTime(datestr As String) As StringDim tempArray() As StringtempArray = Split(datestr, " ")splitNgetTime = Trim(tempArray(1))End FunctionPublic Function getDay(datestr As String) As Integer'Returns trimmed day of dateSTRDim tempArray() As StringtempArray = Split(datestr, "/")getDay = tempArray(1)End FunctionPublic Function getMonth(datestr As String) As Integer'returns trimmed month of dateSTRDim tempArray() As StringtempArray = Split(datestr, "/")getMonth = tempArray(0)End FunctionPublic Function getYear(datestr As String) As Integer'returns trimmed year of dateSTRDim tempArray() As StringtempArray = Split(datestr, "/")getYear = tempArray(2)End Function

Public Function addMonth(baseDate As String, months As Integer) As StringDim yyyy As IntegerDim mm As IntegerDim dd As Integeryyyy = getYear(baseDate)mm = getMonth(baseDate)

91

Page 88: Smart Gym System documentation

dd = getDay(baseDate)

mm = mm + monthsIf mm > 12 Then yyyy = yyyy + (mm / 12) mm = mm Mod 12End IfaddMonth = mm & "/" & dd & "/" & yyyyEnd Function

fullScreenModule Module:Dim isFullscreen As BooleanOption Explicit Public Type RECT Left As Long Top As Long Right As Long Bottom As LongEnd TypePublic Const GWL_STYLE = (-16)Public Const WS_CAPTION = &HC00000Public Const WS_MAXIMIZEBOX = &H10000Public Const WS_MINIMIZEBOX = &H20000Public Const WS_SYSMENU = &H80000

'window position constantsPublic Const SWP_SHOWWINDOW = &H40Public Const SWP_HIDEWINDOW = &H80Public Const SWP_FRAMECHANGED = &H20Public Const SWP_NOACTIVATE = &H10Public Const SWP_NOCOPYBITS = &H100Public Const SWP_NOMOVE = &H2Public Const SWP_NOOWNERZORDER = &H200Public Const SWP_NOREDRAW = &H8Public Const SWP_NOREPOSITION = SWP_NOOWNERZORDERPublic Const SWP_NOSIZE = &H1Public Const SWP_NOZORDER = &H4Public Const SWP_DRAWFRAME = SWP_FRAMECHANGEDPublic Const HWND_NOTOPMOST = -2Public Const SM_CXSCREEN = 0Public Const SM_CYSCREEN = 1Public Const HWND_TOP = 0'API declarationsPublic Declare Function GetWindowRect Lib "User32" (ByVal hWnd As Long, lpRect As RECT) As Long

92

Page 89: Smart Gym System documentation

Public Declare Function SetWindowPos Lib "User32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal Cx As Long, ByVal Cy As Long, ByVal wFlags As Long) As Long

Public Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPublic Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As LongPublic Declare Function GetSystemMetrics Lib "User32" (ByVal nIndex As Long) As LongPublic dX As LongPublic dY As LongPublic dL As LongPublic dT As LongPublic Function setFullScreen(frm As Form)Dim Cx As Long Dim Cy As Long Dim RetVal As Long 'Record the current size and position of the window dX = frm.Width dY = frm.Height dL = frm.Left dT = frm.Top ' Determine if screen is already maximized. If frm.WindowState = vbMaximized Then ' Set window to normal size frm.WindowState = vbNormal End If 'Disable the view of the Title Bar ShowTitleBar False, frm ' Get full screen width. Cx = GetSystemMetrics(SM_CXSCREEN) ' Get full screen height. Cy = GetSystemMetrics(SM_CYSCREEN) ' Call API to set new size of window. RetVal = SetWindowPos(frm.hWnd, HWND_TOP, 0, 0, Cx, Cy, SWP_SHOWWINDOW) isFullscreen = TrueEnd FunctionPublic Function unsetFullscreen(frm As Form)'Enable the Title Bar Again ShowTitleBar True, frm 'Restore the earlier window size and position frm.WindowState = vbNormal frm.Width = dX frm.Height = dY frm.Left = dL frm.Top = dT frm.Refresh

93

Page 90: Smart Gym System documentation

isFullscreen = FalseEnd FunctionPrivate Function ShowTitleBar(ByVal bState As Boolean, frm As Form) Dim lStyle As Long Dim tR As RECT On Error Resume Next 'get the window's position Call GetWindowRect(frm.hWnd, tR) 'should the titlebar style be not visible? lStyle = GetWindowLong(frm.hWnd, GWL_STYLE) If (bState) Then 'set the style's for the current window (if titlebar active) frm.Caption = frm.Tag If frm.ControlBox Then lStyle = lStyle Or WS_SYSMENU If frm.MaxButton Then lStyle = lStyle Or WS_MAXIMIZEBOX If frm.MinButton Then lStyle = lStyle Or WS_MINIMIZEBOX If frm.Caption <> "" Then lStyle = lStyle Or WS_CAPTION Else 'titlebar is invisible 'set the current caption to the forms tag frm.Tag = frm.Caption 'remove the caption (otherwise the titlebar will not hide) frm.Caption = vbNullString lStyle = lStyle And Not WS_SYSMENU lStyle = lStyle And Not WS_MAXIMIZEBOX lStyle = lStyle And Not WS_MINIMIZEBOX lStyle = lStyle And Not WS_CAPTION End If Call SetWindowLong(frm.hWnd, GWL_STYLE, lStyle) 'change the window style maintaining current sizes Call SetWindowPos(frm.hWnd, 0, tR.Left, tR.Top, tR.Right - tR.Left, tR.Bottom - tR.Top, SWP_NOREPOSITION Or SWP_NOZORDER Or SWP_FRAMECHANGED) frm.Refresh 'fire resize code if any Call Form_ResizeEnd FunctionPrivate Sub Form_Resize()End Sub

autoTypeCombo ModuleOption Explicit'*** NOTE: The calling form should use this set of events,'*** replacing "Combo1" with the name of the combobox.

'Private Sub Combo1_GotFocus()' AutoTypeComboGotFocus Combo1'End Sub

94

Page 91: Smart Gym System documentation

'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 SubPublic gstrATCDBTableName As StringPublic gstrATCDBFieldName As StringPublic gblnGetAllData As Boolean ' true = get all entries, false = go by 1st letterPublic gblnDropDownOnFocus As BooleanPrivate Const CB_FINDSTRING As Long = &H14CPrivate Const CB_SHOWDROPDOWN As Long = &H14FPrivate Const LB_FINDSTRING As Long = &H18FPrivate Const CB_ERR As Long = (-1)Private Const CB_GETITEMHEIGHT As Long = &H154Private Const CB_SETDROPPEDWIDTH As Long = &H160

Private Type POINTAPI X As Long Y As LongEnd TypePrivate Type RECT Left As Long Top As Long Right As Long Bottom As LongEnd TypePrivate Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Declare Function MoveWindow Lib "User32" (ByVal hWnd As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As LongPrivate Declare Function ScreenToClient Lib "User32" (ByVal hWnd As Long, lpPoint As POINTAPI) As LongPrivate Declare Function GetWindowRect Lib "User32" (ByVal hWnd As Long, lpRect As RECT) As LongPrivate gblnATCIgnoreTextChange As BooleanPrivate gblnATCTextDeleted As BooleanPrivate gintATCSelStart As IntegerPrivate gintATCSelLen As Integer'---------------------------------------------------------------------------------Public Sub AutoTypeComboGotFocus(pobjCombo As ComboBox)'---------------------------------------------------------------------------------

95

Page 92: Smart Gym System documentation

' Select existing text on entry to the combo box pobjCombo.SelStart = 0 pobjCombo.SelLength = Len(pobjCombo.Text) ' if currently populated, drop it down If pobjCombo.ListCount > 0 And gblnDropDownOnFocus Then SendMessage pobjCombo.hWnd, CB_SHOWDROPDOWN, 1, ByVal 0& End If End Sub'---------------------------------------------------------------------------------Public Sub AutoTypeComboKeyDown(pobjCombo As ComboBox, _ KeyCode As Integer, _ Shift As Integer)'--------------------------------------------------------------------------------- ' If the full text is selected and the user presses a letter or number, ' the selected text should be replaced If pobjCombo.SelText = pobjCombo.Text _ And ((KeyCode >= vbKeyA And KeyCode <= vbKeyZ) Or _ (KeyCode >= vbKey0 And KeyCode <= vbKey9)) _ Then pobjCombo.Text = "" gblnATCTextDeleted = False pobjCombo.Refresh Exit Sub End If ' If a user presses the "Delete" key, then the selected text ' is removed. If KeyCode = vbKeyDelete And pobjCombo.SelText <> "" Then ' Make sure that the text is not automatically re-entered ' as soon as it is deleted gblnATCIgnoreTextChange = True gintATCSelStart = pobjCombo.SelStart + 1 gintATCSelLen = pobjCombo.SelLength pobjCombo.SelText = "" KeyCode = 0 gblnATCTextDeleted = True Else gblnATCTextDeleted = False End If End Sub'---------------------------------------------------------------------------------Public Sub AutoTypeComboKeyPress(pobjForm As Form, _ pobjCombo As ComboBox, _ KeyAscii As Integer)'--------------------------------------------------------------------------------- ' If a user presses the "Backspace" key, then the selected text ' is removed. Autosearch is not re-performed, as that would only

96

Page 93: Smart Gym System documentation

' put it straight back again. Dim objCtl As Control If Len(pobjCombo.Text) = 0 Then gblnATCIgnoreTextChange = False LoadCombo pobjCombo, IIf(gblnGetAllData, "", Chr$(KeyAscii)) If pobjCombo.ListCount > 0 Then SetDropDownHeight pobjForm, pobjCombo, IIf(pobjCombo.ListCount < 8, _ pobjCombo.ListCount, 8) End If pobjForm.Refresh On Error Resume Next For Each objCtl In pobjForm.Controls objCtl.Refresh Next End If If pobjCombo.ListCount > 0 Then SetDropDownWidth pobjCombo SendMessage pobjCombo.hWnd, CB_SHOWDROPDOWN, 1, ByVal 0& End If If KeyAscii = 8 Then gblnATCIgnoreTextChange = True If Len(pobjCombo.SelText) > 0 Then pobjCombo.SelText = "" KeyAscii = 0 End If End If ''if user presses enter, select the listindex 'If KeyAscii = 13 Then ' pobjCombo.ListIndex = SendMessage(pobjCombo.hwnd, _ ' CB_FINDSTRING, _ ' -1, _ ' ByVal CStr(pobjCombo.Text)) 'End If End Sub'---------------------------------------------------------------------------------Public Sub AutoTypeComboChange(pobjCombo As ComboBox)'--------------------------------------------------------------------------------- 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, _

97

Page 94: Smart Gym System documentation

ByVal CStr(pobjCombo.Text)) strNewText = pobjCombo.list(l) 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 IfEnd Sub'---------------------------------------------------------------------------------Public Sub AutoTypeComboLostFocus(pobjCombo As ComboBox)'---------------------------------------------------------------------------------

On Error Resume Next If gblnATCTextDeleted Then If Len(pobjCombo.Text) > 0 Then pobjCombo.Text = Left$(pobjCombo.Text, gintATCSelStart - 1) & _ mId$(pobjCombo.Text, gintATCSelStart + gintATCSelLen) pobjCombo.AddItem pobjCombo.Text End If End IfEnd Sub'---------------------------------------------------------------------------------Public Sub LoadCombo(pobjCombo As ComboBox, pstrLetter As String)'--------------------------------------------------------------------------------- Dim objRstDropDownData As ADODB.Recordset Dim strSQL As String Dim strWhereClause As String Dim strWhereOrAnd As String If pstrLetter = "" Then strWhereClause = "" strWhereOrAnd = " WHERE " Else strWhereOrAnd = " AND " If UCase$(pstrLetter) >= "A" And UCase$(pstrLetter) <= "Z" Then strWhereClause = " WHERE " & gstrATCDBFieldName & " LIKE '" & pstrLetter & "%'" Else

98

Page 95: Smart Gym System documentation

strWhereClause = " WHERE " & gstrATCDBFieldName & " LIKE '[!A-Z]%'" End If End If strSQL = "" strSQL = strSQL & "SELECT " & gstrATCDBFieldName strSQL = strSQL & " FROM " & gstrATCDBTableName strSQL = strSQL & strWhereClause strSQL = strSQL & strWhereOrAnd & gstrATCDBFieldName & " IS NOT NULL" strSQL = strSQL & " AND TRIM(" & gstrATCDBFieldName & ") <> ''" strSQL = strSQL & " ORDER BY " & gstrATCDBFieldName gobjCmd.CommandText = strSQL Set objRstDropDownData = gobjCmd.Execute With pobjCombo .clear Do Until objRstDropDownData.EOF .AddItem objRstDropDownData.Fields(gstrATCDBFieldName) objRstDropDownData.MoveNext Loop End With objRstDropDownData.Close Set objRstDropDownData = NothingEnd 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) Call GetWindowRect(pobjCombo.hWnd, rc) pt.X = rc.Left pt.Y = rc.Top Call ScreenToClient(pobjForm.hWnd, pt) Call MoveWindow(pobjCombo.hWnd, pt.X, pt.Y, pobjCombo.Height, lngNewHeight, True) pobjForm.ScaleMode = lngOldScaleMode

99

Page 96: Smart Gym System documentation

pobjCombo.Width = lngSavedWidthEnd Sub'-----------------------------------------------------------------------------Public Sub SetDropDownWidth(mCombo As ComboBox)'----------------------------------------------------------------------------- Dim RetVal As Long Dim PixelWidth As Long Dim MaxWidth As Long Dim LoopCounter As Long Dim lWidth As Long For LoopCounter = 0 To mCombo.ListCount - 1 lWidth = mCombo.Parent.TextWidth(mCombo.list(LoopCounter)) If lWidth > MaxWidth Then MaxWidth = lWidth End If Next LoopCounter MaxWidth = MaxWidth + (23 * Screen.TwipsPerPixelX) If MaxWidth > (mCombo.Width * 2) Then MaxWidth = (mCombo.Width * 2) ElseIf MaxWidth < mCombo.Width Then MaxWidth = mCombo.Width End If PixelWidth = (MaxWidth \ Screen.TwipsPerPixelX) RetVal = SendMessage(mCombo.hWnd, CB_SETDROPPEDWIDTH, PixelWidth, 0)End Sub

ReportModule Module:Public Function countMembers() As IntegerDim counter As IntegerCall databaseconnectionrs.Open "select count(*) from members", con, adOpenDynamic, adLockOptimisticIf Not rs.EOF Thenrs.MoveFirstEnd If

Dim n As Integern = Val(rs.Fields(0))rs.ClosecountMembers = nCall disconnectdatabaseEnd FunctionPublic Function getOutdatedMembers() As ADODB.RecordsetDim rsMember As ADODB.RecordsetSet rsMember = New ADODB.Recordset rsMember.CursorLocation = adUseClient rsMember.Fields.Append "ID", adBigInt, 20 rsMember.Fields.Append "Name", adVarChar, 100

100

Page 97: Smart Gym System documentation

rsMember.Fields.Append "DueDate", adDate, 100 rsMember.Fields.Append "Status", adVarChar, 100 rsMember.OpenDim list() As StringDim counter As Integercounter = 0Call databaseconnectionrs.Open "select * from members", con, adOpenDynamicIf Not rs.EOF Thenrs.MoveFirstEnd IfDim diff As LongWhile 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.MoveNextWend

rs.CloseSet getOutdatedMembers = rsMemberEnd FunctionPublic Function countOutdatedMembers() As IntegerCall databaseconnectionrs.Open "select * from members", con, adOpenDynamicIf Not rs.EOF Thenrs.MoveFirstEnd IfDim counter As IntegerWhile Not rs.EOF diff = DateDiff("d", Format$(rs.Fields("dueDate"), "mm/dd/yyyy"), Now) If diff >= 0 Then counter = counter + 1

101

Page 98: Smart Gym System documentation

End If rs.MoveNextWendrs.ClosecountOutdatedMembers = counterEnd FunctionPublic Function getIncome() As LongCall databaseconnectionDim income As Longincome = 0rs.Open "select * from paymentTransaction", con, adOpenDynamic, adLockOptimisticIf Not rs.EOF Thenrs.MoveFirstEnd IfDo While Not rs.EOF income = income + Val(rs.Fields(2)) rs.MoveNextLooprs.ClosegetIncome = incomeEnd FunctionPublic Function getTotalAmtPaidOf(memberId As Integer) As StringCall databaseconnectionDim income As Longincome = 0rs.Open "select * from paymentTransaction where memberId=" & memberId, con, adOpenDynamic, adLockOptimisticIf Not rs.EOF Thenrs.MoveFirstEnd IfDo While Not rs.EOF income = income + Val(rs.Fields(2)) rs.MoveNextLooprs.ClosegetTotalAmtPaidOf = incomeEnd FunctionPublic Function getLastPaymentDateOf(memberId As Integer) As StringCall databaseconnectionDim datestr As StringDim cmdString As StringcmdString = "select * from paymentTransaction where memberId=" & memberId & " ORDER BY date DESC"rs.Open cmdString, con, adOpenDynamic, adLockOptimisticIf Not rs.RecordCount = 0 ThenIf Not rs.EOF Thenrs.MoveFirst

102

Page 99: Smart Gym System documentation

End IfDo Until rs.EOFdatestr = rs.Fields(1)Exit DoLoopEnd Ifrs.CloseIf Not datestr = "" ThengetLastPaymentDateOf = datestrElsegetLastPaymentDateOf = ""End IfEnd FunctionPublic Function sinceJoinedDateOf(memberId As Integer) As StringCall databaseconnectionDim diffDays As LongDim diffMonths As LongDim since As Stringrs.Open "select * from members", con, adOpenDynamic, adLockOptimisticIf Not rs.EOF Thenrs.MoveFirstEnd IfDo 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.MoveNextLooprs.ClosesinceJoinedDateOf = "Since " & since & ", " & Abs(diffMonts) & " months or " & Abs(diffDays) & " days."End Function

Public Function getLastMeasurementDateOf(memberId As Integer) As String Call databaseconnection Dim str As String rs.Open "SELECT * FROM progressMember WHERE memberId=" & memberId & " ORDER BY mdate DESC", con, adOpenDynamic, adLockOptimistic If Not rs.EOF Then rs.MoveFirst End If Do Until rs.EOF If Not rs.Fields("mdate") = "" Then str = rs.Fields("mdate") Else

103

Page 100: Smart Gym System documentation

str = "" End If Exit Do Loop rs.Close getLastMeasurementDateOf = str End FunctionPublic Function getOverallGrowthOf(memberId As Integer) As String Call databaseconnection 'date is ordered and Last measurement date comes first rs.Open "SELECT * FROM progressMember WHERE memberId=" & memberId & " ORDER BY mdate DESC" If Not rs.EOF Then rs.MoveFirst End If getOverallGrowthOf = ""End FunctionPublic Function getBMIchangeOf(memberId As Integer) As Double Call databaseconnection 'date is ordered and Last measurement date comes first rs.Open "SELECT TOP 2 * FROM progressMember WHERE memberId=" & memberId & " ORDER BY mdate DESC" If Not rs.EOF Then rs.MoveFirst End If Dim last As Double Dim prev As Double If rs.RecordCount = 0 Then last = Val(rs.Fields("bmi")) rs.MoveNext prev = Val(rs.Fields("bmi")) Dim result As Double result = ((last - prev) * 100) / prev If result < 0 Then getBMIchangeOf = Abs(result) Else getBMIchangeOf = (-1) * result End If Else getBMIchangeOf = 0 End If rs.CloseEnd Function

Public Function getBodyFatChangeOf(memberId As Integer) As Double Call databaseconnection

104

Page 101: Smart Gym System documentation

'date is ordered and Last measurement date comes first rs.Open "SELECT TOP 2 * FROM progressMember WHERE memberId=" & memberId & " ORDER BY mdate DESC" If Not rs.EOF Then rs.MoveFirst End If Dim last As Double Dim prev As Double If rs.RecordCount = 0 Then last = Val(rs.Fields("bodyfat")) rs.MoveNext prev = Val(rs.Fields("bodyfat")) Dim result As Double result = ((last - prev) * 100) / prev If result < 0 Then getBodyFatChangeOf = Abs(result) Else getBodyFatChangeOf = (-1) * result End If Else getBodyFatChangeOf = 0 End If rs.CloseEnd FunctionPublic Function getWeightChangeOf(memberId As Integer) As Double Call databaseconnection 'date is ordered and Last measurement date comes first rs.Open "SELECT TOP 2 * FROM progressMember WHERE memberId=" & memberId & " ORDER BY mdate DESC" If Not rs.EOF Then rs.MoveFirst End If Dim last As Double Dim prev As Double If rs.RecordCount = 0 Then last = Val(rs.Fields("weight")) rs.MoveNext prev = Val(rs.Fields("weight")) Dim result As Double result = ((last - prev) * 100) / prev getWeightChangeOf = result Else getWeightChangeOf = 0 End If rs.CloseEnd Function

105

Page 102: Smart Gym System documentation

Public Function getDueDateOf(memberId As Integer) As StringCall databaseconnectionDim str As Stringrs.Open "select * from members", con, adOpenDynamic, adLockOptimisticIf Not rs.EOF Thenrs.MoveFirstEnd IfDo Until rs.EOF If rs.Fields(0) = memberId Then str = rs.Fields("dueDate") Exit Do End If rs.MoveNextLooprs.ClosegetDueDateOf = strEnd FunctionPublic 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 WithEnd FunctionPublic Function getIncomeByRange(last As Integer) As DoubleDim diff As IntegerDim income As DoubleCall databaseconnectionrs.Open "select * from paymentTransaction order by date", con, adOpenDynamic, adLockOptimisticIf Not rs.EOF Thenrs.MoveFirstEnd If

106

Page 103: Smart Gym System documentation

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.MoveNextLooprs.ClosegetIncomeByRange = incomeEnd Function

Public Function countMaleMembers() As Integer Dim Count As Integer Call databaseconnection rs.Open "select count(*) from members where gender='Male'", con, adOpenDynamic, adLockOptimistic rs.MoveFirst Count = rs.Fields(0) rs.Close countMaleMembers = CountEnd FunctionPublic Function countFemaleMembers() As Integer Dim Count As Integer Call databaseconnection rs.Open "select count(*) from members where gender='Female'", con, adOpenDynamic, adLockOptimistic rs.MoveFirst Count = rs.Fields(0) rs.Close countFemaleMembers = CountEnd Function

107

Page 104: Smart Gym System documentation

Testing

108

Page 105: Smart Gym System documentation

6.1 Introduction to 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

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.

6.1.1 White Box 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.

6.1.2 Black Box Testing

a. By the use of this technique the missing functions were identified and placed in their

position.109

Page 106: Smart Gym System documentation

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.

6.1.3 Application Testing Strategies

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:

6.1.4 Unit Testing

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?

6.1.5 Integration Testing110

Page 107: Smart Gym System documentation

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.

6.1.6 Validation Testing

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

6.1.7 System Testing

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.

The tests that the system was put were:

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

111

Page 108: Smart Gym System documentation

be introduced. During the testing each objective of the system was tested and found to be

working correctly.

6.2 MULTI-USER SYSTEM

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:

Conclusion

112

Page 109: Smart Gym System documentation

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.

113

Page 110: Smart Gym System documentation

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.

114

Page 111: Smart Gym System documentation

Chapter 8

FUTURE Enhancement

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.

115

Page 112: Smart Gym System documentation

Application of the project can be done more attractively .Database management and stock maintenance module can be added which helps the administrator. This project can also be modified into a client server application. More security measures can be taken.

Chapter 9116

Page 113: Smart Gym System documentation

Bibliography

Bibliography

117

Page 114: Smart Gym System documentation

Books

[A]Black book,2009

[B]VB Complete Reference,2009

Websites

[a]http://yahoo.com/

[e]http://www.google.com

118

Page 115: Smart Gym System documentation

CHAPTER 10

User Manual

Screenshot DialogToChangeWallpaper

119

Page 116: Smart Gym System documentation

DialogToAccessAdmin

DrDueMemberList

120

Page 117: Smart Gym System documentation

121

Page 118: Smart Gym System documentation

122

Page 119: Smart Gym System documentation

123

Page 120: Smart Gym System documentation

124

Page 121: Smart Gym System documentation

125

Page 122: Smart Gym System documentation

126

Page 123: Smart Gym System documentation

127


Recommended