Sei sulla pagina 1di 120

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 !isting "#ste$
2.1.1 Drawbac%s of !isting "#ste$
2.2 Proposed "#ste$
2.2.1 Merits of Proposed "#ste$
2.3 Overview of &anguage used
2.3.1 'ntroduction of Microsoft (isual )asic *.+
2.3.1.1 ,he Progra$$ing Process
2.3.1.2 -nderstanding Progra$ Maintenance
2.3.1.3 (isual )asic is a "$art &anguage
2.3.1.4 ,ool )o! .ontrol
2.3.1./ Adding .ontrol
2.3.1.* 0e$oving .ontrol
2.3.1.1 'ntrinsic .ontrol
2.3.1.2 &abel .ontrol
2.3.1.3 .o$$and )otto$
2.3.1.1+ ,e!t .ontrol
2.3.1.11 what does () *.+ has
2.3.1.12 (isual )asic with Databases
2.3.1.13 Active 4 Data Object .o$ponents
2.3.2 'ntroduction of M" Access 2++3
3. Requirement Analysis
3.1 0ole of "0"
3.2 Ai$
3.3 Purpose
3.4 "cope
3./ Application 0e5uire$ents
3.* 6ardware 0e5uire$ents
3.1 7unctional 0e5uire$ents
3.1.1 Ad$inistrator 7unctional 0e5uire$ents
3.2 8on97unctional 0e5uire$ents
3.2.1 0eliabilit#
3.2.2 -sabilit#
3.2.3 Maintainabilit#
3.2.4 Perfor$ance
5
4. Design
4.1 Data 7low Diagra$ 8otations
4.2 .onte!t Diagra$
4.3 &ow &evel D7D
4.3.1 &evel1 D7D Ad$in
4.3.2 &evel1 D7D -ser
4.4 6igh &evel D7D
4.4.1 &evel2 D7D -ser
4.4.2 &evel2 D7D Ad$in
4./ ntit#90elationship Diagra$
4.* Module Design
4.*.1
4.*.2
4.*.3
4.*.4
4.1 Database Design
4.1.1 'ntroduction to Database Design
4.1.2 ,ables .reated
5. Coding
. !esting
*.1 'ntroduction to ,esting
*.1.1 :hite )o! ,esting
*.1.2 )lac% )o! ,esting
*.1.3 Application "trategies
*.1.4 -nit ,esting
*.1./ 'ntegration ,esting
*.1.* (alidation ,esting
*.1.1 "#ste$ ,esting
*.2 Multi9-ser "#ste$
*.3 ,esting 0esults
". Conclusion
#. $uture %n&ancement
'. (i)liogra*&y
1+. ,ser -anual
1+.1 "creen "hots
6
C&a*ter 1

Introduction
We all know health is a wealth. We do not need a fancy car, big apartment, a
doctor degree without a health. Being healthy is a frst thing we need to keep
in mind. Because most of time our attitude depends on how we feel. Being
healthy and ft gives us energy to do anything. So how do we stay ft Be
!
active, eat green and hit a gym"
#hysical ftness is very necessary for a healthy and tension free life. #hysical
ftness includes diet, e$ercise and sleep. %hese 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 .vervie/ o0 1ro2ect
Our proposed ;"$art <#$ "#ste$= is for those who runs a g#$ business. )efore doing
an#thing we did a decent research on $ajor difficulties for g#$ owners. :e e!a$ined carefull#
about how to $a%e a huge registering s#ste$ without failure as well as different functions for
different %ind of user depending on their privilege.
.)2ectives
7irst thing we wanted to do in designing is avoid boring for$al user interface. "o we tried to
develop $odern graphic user interface s#ste$. ,his application is for g#$ owners as well as for
their staffs to register new $e$ber> and ta%e bod# $easure$ents and see the reports of financial
and individual bod# progress. ,o use features of our application user has to enter password and
userna$e. 'f #ou want to visit and $a%e changes in ad$in panel #ou have to unloc% the ad$in
panel b# t#ping password in it. 'n the ad$in panel ad$in able to create userna$e with password>
set privilege to groups which $eans which user can do what operations li%e see report> ta%e
$easure$ent etc. Also ad$in able to create groups and $e$bership plans and appl# it.
'
1.3 -odules3
Administrator -odule
,his $odule includes storing and retrieving the details of the data. ,he detail of the
entertain$ent which is stored is categori?ed into different t#pes li%e@
Creating user
Ad$in can create an user along with password. Ad$in also able to put a user in a
particular groups.
Creating grou*
.reate a group and set privilege for it. 't includes read> readAwrite> readAwriteAdelete
per$issions.
Creating mem)ers&i* *lan
.reate a fle!ible $e$bership plans for g#$ $e$bers. Plans can be various depending on
$e$ber needs.
,ser -odule
Depends on the privilege userBs access to features of the application is granted.

1.4 Arc&itecture and Design o0 t&e *ro2ect
(
,he application will be $ade of Des%top based distributed two9tier architecture to
support user entertain$ent at the sa$e ti$e.
)*
DFD LEVEL-0: CONTEXT DIAGRAM :
))
)+
C&a*ter 2

Literature Survey
ver#thing on the earth either living or non9living has an evolution c#cle. &i%e scientist has
proved that hu$an has co$pleted an evolution c#cle fro$ ape to $an. 'n sa$e $anner the
co$puter has an evolution c#cle> as technolog# is i$proving the co$puters are beco$ing $ore
and $ore efficient. "i$ilarl# as the co$puter architecture is i$proving da# b# da#> it also
re5uires upgrading the previous s#ste$s accordingl#.
),
As we have developed this application for the first ti$e. "i$ilar applicationBs of different
co$panies are present in the $ar%et and we tried to stud# those> a brief discussion was carried
out with the project guide to %now $ore details about e!isting s#ste$. After discussion the
various deficiencies in the s#ste$ was identified these points are noted down and discussed with
project guide again and decide where to $a%e $odification over e!isting s#ste$.
"ince we are i$ple$enting our application in the new envoirn$ent and using the present
technologies so as to $a%e it $ore efficient> there was a need to understand the applicationBs
environ$ent and also about the new technologies. And while i$ple$enting the application
various thing has been ta%en into consideration li%e application will also be usable for those end
users who donBt understand english.
2.1 %4isting System
An !isting s#ste$ refers to the s#ste$ that is being followed till now. Presentl# all the resu$e
7unctionalities are done $anuall#. ,his is $a%ing the person ver# difficult to %eep trac% of the
client and the $e$bers in the job see%er.
2.1.1 Dra/)ac5s o0 %4isting System
a. ,i$e consu$ing.
b. -pdating and 0etrieval tas%s are ver# tedious.
c. 6ighl# error prone.
d. as# .usto$er service is difficult.
e. &ot of paper wor% results in lot of confusion.
f. 8o direct role for the higher officials.
,o avoid all these li$itations and $a%e the s#ste$ wor%ing $ore accuratel# it needs to be
com*uteri6ed.
2.2 1ro*osed System
)-
,he online $obile shopping application is user9friendl# application. Most of the infor$ation
about different brand of latest $obile to the custo$er who wants to %now the details and want to
bu#. 't is ver# si$ple in design and to i$ple$ent. ,he s#ste$ re5uire$ents are ver# low.
"#ste$ resources and the s#ste$ will wor% in al$ost all configurations.
!&e main o)2ectives o0 t&e *ro*osed system can )e enumerated as 0ollo/s3
a. .usto$er can easil# search different brand of $obile.
b. .usto$er can also search according to price.
c. -ser can register and bu# that particular product.
2.2.1 -erits o0 1ro*osed System
,he s#ste$ is ver# si$ple in design and to i$ple$ent. ,he s#ste$ re5uires
(er# low s#ste$ resources and the s#ste$ will wor% in al$ost all
.onfigurations
a. "ecurit# of data
b. nsure data accurac#
c. Ad$inistrator controls the entire s#ste$
d. 0educe the da$ages of the $achines
e. Mini$i?e $anual data entr#
f. <reater efficienc#
g. -ser friendl# and interactive
h. "aves lot of ti$e
i. 0etrieval and -pdating tas%s can be perfor$ed $uch faster and easier
2.3 .vervie/ o0 languages used
2.3.1 Introduction to -ICR.S.$! 7IS,AL (ASIC .+
(isual )asic * is MicrosoftCs latest and greatest version of the (isual )asic progra$$ing
language. Although writing progra$s can be a tedious chore at ti$es> (isual )asic reduces the
)5
effort re5uired on #our part and $a%es progra$$ing enjo#able. (isual )asic $a%es $an#
aspects of progra$$ing as si$ple as dragging graphic objects onto the screen with #our $ouse.
Microsoft based (isual )asic on a programming language written for beginners called BASIC.
)A"'. has been around for $ore than 3/ #ears in one for$ or another. ,he original language
designers wanted to develop a progra$$ing language that beginners could use. :ith )A"'.>
new progra$$ers could beco$e proficient right awa#.
BASIC stands for Beginner's All-purpose Symbolic Instruction Code. ,hatCs so$e abbreviationD
A programming language is a set of co$$ands and co$$and options> called arguments, that
#ou use to give instructions to the co$puter. .o$puters cannot E#etF understand hu$an
languages because people deal well with a$biguous co$$ands> and a co$puter cannot
understand such a$biguit#. A progra$$ing language $ust be $ore precise than a spo%en
language.
2.3.1.1 !&e 1rogramming 1rocess
Over ti$e #ouCll find #our own wa# of writing progra$s that wor%s best for #ou. 8evertheless>
#ouCll generall# follow these standard set of steps when creating #our (isual )asic progra$s@
1. Decide what #our application is to do b# creating an overall design.
2. .reate the visual portion of #our application Ethe screens and $enus that #our users will
interact withF.
3. Add (isual )asic progra$$ing language code to tie the visual ele$ents together and to
auto$ate the progra$.
4. ,est #our application to locate and re$ove an# bugs #ou find.
/. .o$pile #our tested application and distribute the co$piled application to #our users.
2.3.1.2 ,nderstanding 1rogram -aintenance
)ugs are not the onl# reason that #ou will wor% on a progra$ after #ou thin% #ouCre co$pletel#
done with it. Program maintenance is necessar# because re5uire$ents change> co$panies
change> and laws change. Gou $ust also change the progra$s #ou write so that the# re$ain
)6
viable progra$sH #ou will need to update #our progra$ periodicall# to reflect changes that
i$pact the progra$. 'n addition> users will thin% of new things that the# want the progra$ to do.
Program maintenance is the ter$ used for the updating of a progra$ after the progra$ is put into
use. ,his update $a# be a result of a userCs re5uest or a change in the wa# the progra$ needs to
operate.
't is said that a progra$ is written once and $odified $an# ti$es. ,he $ore progra$
$aintenance #ou perfor$> the $ore li%el# that #our progra$ will be up9to9date and in use. Gou
$a# want to release new versions of #our progra$ so that users can> with a different version
nu$ber on the opening screen that #ou place there> %eep trac% of the latest version installed on
their s#ste$.
2.3.1.3 7isual (asic Is a Smart Language
,he $ain reason wh# (isual )asic is so popular and powerful is the sa$e reason behind the
success of :indows. Microsoft too% a co$ple! technolog# Ewriting co$puter progra$sF and
$ade it easier to use through a graphical interface. "uppose #ou have to write a progra$ for #our
co$pan#. 'n a visual progra$$ing environ$ent> #ou can 5uic%l# design the windows that the
user sees b# drawing and arranging the$ just as #ou would la# out ele$ents for a newspaper.
'n a te!t9based progra$$ing s#ste$> #ou control the user interface through progra$ language
co$$ands. .o$$on sense tells #ou that the visual progra$$ing $ethod is easier for
newco$ers to learn and re5uires less ti$e to $aintain. 'n this case> the old adage ;a picture is
worth a thousand words= trul# applies. 6owever> do not let $e give #ou the i$pression that
(isual )asic is just another prett# interface.
Another %e# concept of (isual )asic is the abilit# to create and use self9contained co$ponents>
or objects.
2.3.1.4 !ool (o4 Controls
,he toolbo! contains all the custo$ control needed for a visual basic application .several
advanced controls can be added to the project fro$ the $enu bar tool> 1ro2ect 8 Com*onents.
ach control has its own properties> vents and $ethods. ,he properties of the controls can be
set either through code or in the properties window> user I defined controls can also be created
and added to the tool bo!. .ontrols wor% with $ulti$edia and internet too.
2.3.1.5 Adding controls
.ontrols can be added to a for$ in two wa#s@
JDouble9clic% on a control in the toolbo! and it appears on the for$.
)!
J.lic% on the control icon. Move the $ouse over the for$> clic% and draw the control to the
re5uired si?e.
2.3.1. Removing controls
,o re$ove a control fro$ the for$
J"elect the control.
JPress the delete %e#.
.ontrols can be placed an#where on the for$. ,heir si?e can be changed b# using the si?ing
handle which appear when a control in selected.
2.3.1." Intrinsic controls
,he default controls which are auto$aticall# displa#ed in a toolbo! when a for$ is loaded are
%nown as intrinsic controls. ,he intrinsic controls in visual basic are ver# powerful> since objects
such as buttons> labels> te!t bo!es> and co$bo or list bo!es can be added to a for$ easil# and
coded.
"o$e co$$on intrinsic controls which are described below are@
1. &abel
2. .o$$and button
3. ,e!t bo!
4. 7ra$e
/. Option button
*. .hec% bo!
1. Picture bo!
2. 'nage bo!
3. ,i$er
1+. .o$bo bo!
11. &ist bo!
12. 6ori?ontal K vertical scroll bo!
13. "hape and line
)'
14. O&
2.3.1.# La)el
&abel control allows the user to displa# te!t on a for$> which does not change. 7or e!a$ple
&abel1.captionL=8a$eH=
<enerall# labels are used to print captions for other controls. ,e!t printed on labels cannot be
edited during runti$e.
2.3.1.' Command )uttons
.o$$ands buttons is one of the $ost powerful and fre5uentl# used controls in windows
application. 't is used to invo%e response fro$ the user or to invo%e special functions on the
for$.
2.3.1.1+ !e4t)o4 control
,e!tbo! control is one of the $ost popular and versatile $echanis$ used to displa# and enters
te!t in a window user interface. 't behaves li%e a $ini te!t editor providing all the basic te!t
editing facilities.
(asic te4t *ro*erties
,he basic properties of a te!tbo! deter$ine the appearance and functionalit# of a te!tbo!
control. "o$e of the$ are as described below@
%na)led3 'ndicates whether the user can interact with the control or not.
Inde43 Deter$ine the control arra# inde!.
Loc5ed3 )oolean. 'ndicates whether the user can t#pe in the te!tbo! or not.
-a4 Lengt&3 'ndicates the $a!i$u$ nu$ber of characters input in the te!tbo!. Default values
are +> which $eans an# nu$ber of characters. ,he $a!i$u$ of te!t can be t#ped in a te!tbo! is
nearl# 4 5).
Ma! length propert# can be set to a specific value restricting the user to t#pe onl# that $an#
character.
-ulti Line3 "pecifies whether the te!tbo! will hold a single line or $ultiple lines.
1ass/ord c&ar3 "pecifies the $as%ing character for te!t displa#ed in the te!tbo!. "uppose the
password is set to ;J=> the user than sees an asteris% in the place of ever# character t#ped in that
te!tbo!.
)(
Scroll)ars3 'ndicates hori?ontal scrollbars> vertical scrollbars or both for the te!tbo!. ,his
propert# is used with $ultiline propert#. Multiline te!tbo!es can have hori?ontal> vertical or both
scroll bars. 'f a hori?ontal scrollbar is attached to a te!t bo!> the te!t will not wrap auto$aticall#.
,he user $ust press enter to start new line.
!e4t3 "pecifies the te!t in the te!tbo!.
Alignment3 Align$ent of te!t in a te!tbo! can be &eft9justified> centered or right9justified.
Sel!e4t3 0eturns the selected te!t. A selected te!t can be converted to uppercase b# the
following code@
,e!t1. "el,e!tL -caseE,e!t1."el,e!tF
SelStart3 "pecifies the position of the first character of the selected te!t.
SetLengt&3 0eturns the length of the selected te!t. ,he $ost co$$on use of these properties is
to select a piece of te!t at runti$e to select the te!t in a te!tbo!.
,e!t1.selstartL1
,e!t1.sel&engthL&en E,e!t1F
Clic53 .lic% event is called when the te!t bo! is clic%ed with the $ouse.
9ey *ress3 Occurs ever# ti$e a %e# is pressed and stores the A".'' code of the %e# pressed in
%e#A".''Ean integer t#peF. ,his event can be used to restrict the user to t#pe onl# certain
characters.
.ontrols are ele$ents #ou can use when designing a user interface.
(isual )asic controls enable #ou to add features to #our progra$s without #ou having to be
involved in the details of how these features wor%. 7or e!a$ple> receiving input fro$ a user of
#our progra$ is as si$ple as drawing a control that accepts input. ,his is a great advantage of
visual progra$$ing languagesM#ou can concentrate on what #ou want #our progra$ to do> not
how to get the progra$$ing language to do it.
2.3.1.11 :&at does 7( .+ &ave;.
Nust about ever#thing we could write about (isual )asic is> fro$ language reference to ADO
database handling> fro$ creating :eb browsers to dragging and dropping data across
applications> fro$ e$ail applications to $ulti$edia pla#ers> fro$ creating Active4 controls and
Active4
+*
Docu$ents to setup progra$s> itBs all here.
6ereBs so$e of what weBll see@
< Active4 controls
< Active4 docu$ents
< ADO> DAO> and 0DO database applications
< Multi$edia A('> MP<> :A(> and M'D pla#ers
< .D pla#ers that pla# .Ds fro$ the co$puterBs .D90OM drive
< )it$apped $enu ite$s
< 7ull :eb browsers
< Pie charts> line charts> bar charts> and others
< .ode clients that call $ethods in progra$s li%e Microsoft !cel
< .ode co$ponents EO& auto$ation serversF
< <raphics ani$ation
< Applications that use the :indows .o$$on Dialogs
< .usto$i?ed toolbars with e$bedded controls li%e co$bo bo!es
< Data entr# for$s
< Database editing applications
< Direct connections to the :indows AP'
< Direct connections to code written in (isual .OO
< DragAdrop operations
< <raphics applications that draw arcs> circles> rectangles> lines> and $ore
< $ail applications
< rror handlers
< Applications that use the printer
< :ord processor applications
+)
< 7ile handlers for te!t and binar# data
< 7,P applications
< Dialog bo!es
< :indows 6elp files
< MD' applications
< Pop9up $enus activated with right $ouse clic%s
< Application deplo#$ent
< 6,,P applications
< '$age handling@ blur> e$boss> engrave> flip> sweep> stretch i$ages> and $ore
< O& applications
< Applications that use the :indows 0egistr#
< &ist views and tree views
< Applications that create controls at runti$e
< Mouse capture
< O& drags Edragging data between applicationsF
< Online user registration
< Picture clip applications
< "etup progra$s
< "creen capture
< "preadsheets
< "tatus bars and toolbars
< ,ab strips> progress bars> and others
2.3.1.12 7isual (asic /it& Data)ases
A data)ase is a collection of in0ormation. ,his infor$ation is stored in a ver# structured
$anner. )# e!ploiting this %nown structure> we can access and $odif# the infor$ation 5uic%l#
and correctl#.
++
7or database $anage$ent> (isual )asic application acts as a 0ront9end to the database. ,his
$eans the (isual )asic application provides the inter0ace between the user and the database.
,his interface allows the user to tell the database what he or she needs and allows the database to
respond to the re5uest displa#ing the re5uested infor$ation in so$e $anner.
A (isual )asic application cannot directl# interact with a database. ,here are two inter$ediate
co$ponents between the application and the database@ the data control and the data)ase
engine@
,he data control is a (isual )asic object that connects the application to the database via
the database engine. 't is the conduit between the application and the engine> passing infor$ation
bac% and forth between the two.
,he data)ase engine is the heart of a (isual )asic database $anage$ent s#ste$. 't is
the actual application that does the $anage$ent. 6aving this engine saves progra$$ers a lot of
wor%. ,he database engine native to (isual )asic is %nown as the =et engine. 't is the sa$e
engine used b# Microsoft Access for database $anage$ent. 6ence> it is pri$aril# used to
wor% with Access databases> but it can also wor% with others.
2.3.1.13 Active> Data .)2ect Com*onents
,he first step in editing an ADO database is to open that database> which is called a data source
in ADO ter$inolog#> b# setting up a .onnection object.
+,
,o use that and other ADO objects in code> use the ProjectP0eferences ite$> select the
Microsoft Active4 Data Objects &ibrar# ite$> and clic% on OQ> adding the ADO Object &ibrar#
to #our progra$.
8ow create a new ADO .onnection object with the .onnection objectBs .*en $ethod@
6ere are the argu$ents for this $ethod@
< Connection StringM"tring containing connection infor$ation.
< UserIDM"tring containing a userna$e to use when establishing the connection.
< PassordM"tring containing a password to use when establishing the connection.
< !pen!ptionsMif set to adConnectAsync> the connection will be opened as#nchronousl#.
6ere are the possible values for the "ype argu$ent@
< d).*en9eysetMOpens a d#naset9t#pe 0ecordset object> which is li%e an OD). %e#set
cursor.
< d).*enDynamicMOpens a d#na$ic9t#pe 0ecordset object> which lets the application see
changes $ade b# other users.
< d).*enStaticMOpens a static9t#pe 0ecordset object.
< d).*en$or/ard.nlyMOpens a forward9onl#9t#pe 0ecordset object> where #ou can onl# use
-ove?e4t to $ove.
6ere are the possible values for the #oc$"ype argu$ent@
< AdLoc5Read.nly@,he defaultH read9onl#.
< adLoc51essimisticMPessi$istic loc%ing> record b# record.
< adLoc5.*timisticMOpti$istic loc%ing> record b# record.
< adLoc5(atc&.*timisticMOpti$istic batch updates.
6ere are the possible values for the !ptions argu$ent@
< adCmd!e4tMProvider should evaluate Source as a definition of a co$$and.
< adCmd!a)leMADO should generate an "R& 5uer# to return all rows fro$ the table na$ed in
Source.
< adCmd!a)leDirectMProvider should return all rows fro$ the table na$ed in Source.
< adCmdStored1rocMProvider should evaluate Source as a stored procedure.
< adCmd,n5no/nM,#pe of co$$and in the Source argu$ent is not %nown.
< adCommand$ileM0ecord set should be restored fro$ the file na$ed in Source.
< ad%4ecuteAsyncMSource should be e!ecuted as#nchronousl#.
< ad$etc&AsyncMAfter the initial 5uantit# specified in the Cac&eSi6e propert# is fetched> an#
re$aining rows should be fetched as#nchronousl#.
2.3.2 Introduction o0 -S Access 2++3
<enericall#> an# database $anage$ent s#ste$ ED)M"F that can response to 5ueries fro$ client
$achines for$atted on the "R& language.
+-
.
C&a*ter
+5
Requirement Analysis
3.1 Role o0 SRS
Application 0e5uire$ent "pecification E"0"F is the starting point of the application
developing activit#. As s#ste$ grew $ore co$ple! it beca$e evident that the goal of the entire
s#ste$ cannot be easil# co$prehended. 6ence the need for the re5uire$ent phase arose. ,he
application project is initiated b# the client needs. ,he "0" is the $eans of translating the ideas
of the $inds of clients Ethe inputF into a for$al docu$ent. Application 0e5uire$ent
"pecification is the $ediu$ though which the client and user needs are accuratel# specified. 't
for$s the basis of application develop$ent.
3.2 Aim
a. ,his application is designed to $aintain the database of job see%er and job providers.
b. ,he application $ust give universal access for the users of the s#ste$.
c. ,he application is user friendl# and provides all the infor$ation re5uired.
d. ,he application $ust wor% properl# without proble$s on all targeted devices and networ%
support.
3.3 1ur*ose
+6
,he purpose of this docu$ent is to describe all e!ternal re5uire$ents of -o)ile -anagement. 't
also describes the interfaces for the s#ste$. ,he basic idea behind the project is to bridge the
co$$unication gap between job see%ers and the organi?ation.
3.4 Sco*e
,his docu$ent is the onl# one that describes the re5uire$ents of the s#ste$. 't is $eant for the
use b# the developers> and will also be the basis for validating the final delivered s#ste$. An#
changes $ade to the re5uire$ents in the future will have to go through a for$al change approval
process. ,he developer is responsible for as%ing for clarifications> where necessar#> and will not
$a%e an# alterations without the per$ission of the client.
,his project helps the job see%er to %eep trac% of the Me$ber and clients details.
3.5 A**lication Requirements


3. Aard/are Requirements
RA- /12 M) or higher
.*erating system :indows 4P> :indows 1
$ront %nd Microsoft (isual )asic *.+
Data)ase Microsoft Access 2++3
Connectivity Active4 Data Object
Re*ort Data 0eport
+!
Aard Dis5 1+<) or higher
Com*uter 1rocessor Pentiu$ '(
Cloc5 S*eed 1++M6S Processor
3." $unctional Requirements
,he $ain purpose of functional re5uire$ents is to define all activities or operations that
ta%e place in the s#ste$. ,hese are derived through interactions with the users of the s#ste$.
"ince re5uire$ents specification is a co$prehensive docu$ent and contains a lot of data> it has
been bro%en down into different stages in this report.
3.".1 Administrator module 0unctional requirements
Ad$inistrator has all the rights of $aintaining all the records of Mobile Manage$ent.
Ad$inistrators will be responsible for editing and updating the infor$ation of the application.
Ad$inistrator will onl# have the rights to create users and give the per$issions to the users.
3.".2 Client module 0unctional requirements
A client has all the privileges on job see%er and the job see%er details. .lient cannot $a%e an#
changes in the new user creations.
3.# ?onB$unctional Requirements
3.#.1 Relia)ility
0eliabilit# is the correlation of an ite$> scale> or instru$ent with a h#pothetical one> which trul#
$easures what it is supposed to. "ince the true instru$ent is not available. ,he progra$
according to the re5uire$ent can perfor$ the intended function.
b. rror9handling9 e!ception occurring while accessing database need to be addressed.
+'
3.#.2 ,sa)ility
-sabilit# refers to the capabilit# of the product to be understood> learned> and used and user
friendl# to users> when used under specified conditions. ,his section should include all of those
re5uire$ents that affect usabilit#.
3.#.3 -aintaina)ility
Maintainabilit# is the ease with which a progra$Aspecification can be corrected if an error occurs
desires a change in re5uire$ents. "pecif# attributes of application that relate to the ease of
$aintenance of the application itself.
3.#.4 1er0ormance
Perfor$ance is $easured in ter$s of the output provided b# the application. 0e5uire$ent
specification pla#s an i$portant part in the anal#sis of a s#ste$. Onl# when the re5uire$ent
specifications are properl# given> it is possible to design a s#ste$> which will fit into re5uired
environ$ent.
!&e requirement s*eci0ication 0or any system can )e )roadly stated as given )elo/3
a. ,he s#ste$ should be able to interface with the e!isting s#ste$.
b. ,he s#ste$ should be accurate.
c. ,he s#ste$ should be better than the e!isting s#ste$.
,he e!isting s#ste$ is co$pletel# dependent on the user to perfor$ all the duties.

+(
C&a*ter 4

Design
,*
4.1 Data 0lo/ diagram notations
,he dataflow diagra$ ED7DC is the one of the $ost i$portant $odeling tools. 't
shows the use of the data pictoriall#. D7D represents the flow of data between different
transfor$ations and process in the s#ste$. ,he dataflow shows logical flow of the data.
Different notations used in D7D are@
$unctional 1rocessing
't is represented b# a dia$ond. ,his notation specifies the processing or $ain
transactions.
Data $lo/
An arrow line represents it and na$e of the data is specified b# the side of the
line as label. ,his arrow line is used to indicate data $ove$ent.

Source or Sin5
't is represented b# a rectangle .'t is used for specif#ing fro$ where data is
co$ing and where it will reach.

4.7.2 Tables Created
,)
!a)le 13 login ta)le
FIELD
NAME
DATA
T!E
"I#E
user.d number
long
integer
usernam
e
te$t ,*
passwor
d
te$t ,*
frstnam
e
te$t ,*
lastnam
e
te$t 5*
gid number
long
integer
!a)le 23 userDrou* ta)le

FIELD
NAME
DATA
T!E
"I#E
group.d number
long
integer
group/ame te$t +55
permissionS
et.d
number
long
integer
!a)le 33 user1ermission
FIELD NAME
DATA
T!E
"I#E
permission.d integer
canSee0ember integer
can1dd0ember integer
can2dit0ember integer
,+
can3elete0embe
r
integer
can%ake0easure
ment
integer
canSee4eport integer
canSeeBody#rogr
ess
integer


!a)le 43 mem)ers ta)le
!a)le 53 *rogress-em)er !a)le
FIELD
NAME
DATA
T!E
"I#E
member.d
long
integer

height double
weight double
bmi double
biceps double
hips double
thigh double
neck double
FIELD
NAME
DATA
T!E
"I#E
member.d
long
integer

frstname te$t 5*
lastname te$t 5*
gender te$t )*
number
long
integer

address te$t +55
do5
3ate6%im
e
dob
3ate6%im
e
profle#hoto
7rl
te$t
+55
due3ate te$t +55
,,
forearms double
chest double
calves double
mdate
3ate6%im
e
bodyfat double
waist double
wrist double
!a)le 3 *ayment!ransaction !a)le
FIELD
NAME
DATA
T!E
"I#E
member.d
long
integer

date
3ate6%im
e

amt 8urrency
!a)le "3 gymDetail !a)le
FIELD
DATAT
!E "I#E
gym/am
e te$t +55
gym1ddr
ess te$t +55
gym9ogo
7rl te$t +55
gym#hon
e te$t +55
,-
Coding
,5
3ialog9oading :orm;
<ption 2$plicit
3im counter 1s .nteger
#rivate Sub :orm=9oad>?
3im 1ction 1s 1nimation1ctions
1ction @ gfa#lay
counter @ *
2nd Sub
#rivate Sub %imer)=%imer>?
.f counter A@ + %hen
frm0ain.Show
7nload 0e
2$it Sub
2nd .f
counter @ counter B )
2nd Sub
3ialog%o1ccess1dmin :orm;
<ption 2$plicit
#rivate Sub 8ancelButton=8lick>?
7nload 0e
2nd Sub
#rivate Sub :orm=9oad>?
.f 0e.Cisible @ %rue %hen
t$t#assword.Set:ocus
8all 8enter8hild>frm0ain, 0e?
2nd .f
2nd Sub
#rivate Sub <DButton=8lick>?
8all databaseconnection
rs.<pen Eselect F from loginE, con, ad<penStatic
While /ot rs.2<:
.f rs.:ields>+? @ t$t#assword.%e$t %hen
8all disconnectdatabase
frm1dmin.Show
7nload 0e
2$it Sub
2lse
rs.0ove/e$t
,6
2nd .f
Wend
8all disconnectdatabase
0sgBo$ EGou are not granted to accessE, vb<D<nly B vb2$clamation,
E1uthenticationE
t$t#assword.%e$t @ EE
t$t#assword.Set:ocus
2nd Sub
dialog%o8hangeWallpaper :orm;
<ption 2$plicit
3im fle 1s String
#rivate Sub 8ancelButton=8lick>?
7nload 0e
2nd Sub
#rivate Sub cmdBwse=8lick>?
8ommon3ialog).Show<pen
3im e$t 1s String
e$t @ Het:ile2$tension>8ommon3ialog).:ile/ame?
.f e$t @ E5pgE <r e$t @ EpngE <r e$t @ E5pegE <r e$t @ EbmpE %hen
fle @ 8ommon3ialog).:ile/ame
.mage).#icture @ 9oad#icture>fle?
2lse
0sgBo$ E.nvalid image fle"E, vb<D<nly B vb2$clamation, E/otifcationE
2$it Sub
2nd .f
2nd Sub
#rivate Sub cmdSave=8lick>?
.f fle @ EE %hen
0sgBo$ E8hoose the wallpaper to set"E, vb<D<nly B vb2$clamation, E/otifcationE
2$it Sub
2nd .f
:ile8opy fle, 1pp.#ath I EJwallpaper.5pegE
frm0ain.#icture @ 9oad#icture>1pp.#ath I EJwallpaper.5pegE?
7nload 0e
frm0ain.Set:ocus
2nd Sub
#rivate Sub :orm=9oad>?
fle @ EE
0e.8aption @ EE
2nd Sub
frm1dmin :orm;
3im add 1s .nteger
3im user.d 1s .nteger
3im plan/ame 1s String
3im perm.d 1s .nteger
3im fle 1s String
#rivate Sub cmd3elete=8lick>?
&delete group sub
.f KcombHroup.9ist.nde$ @ L) %hen
0sgBo$ ESelect a group to delete"E, vb<D<nly B vb2$clamation, EWarningE
,!
2$it Sub
2nd .f
3im arr>? 1s String
arr @ Split>KcombHroup.%e$t, E E?
8all databaseconnection
rs.<pen ESelect F from userHroupE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o 7ntil rs.2<:
.f rs.:ields>*? @ Cal>arr>)?? %hen
rs.3elete
rs.7pdate
2$it 3o
2nd .f
rs.0ove/e$t
9oop
rs.8lose
rs.<pen Eselect F from user#ermissionE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o 7ntil rs.2<:
.f rs.:ields>*? @ perm.d %hen
rs.3elete
rs.7pdate
2$it 3o
2nd .f
rs.0ove/e$t
9oop
rs.8lose
8all readHroup
0sgBo$ EHroup deleted"E, vb<D<nly B vb.nformation, EWarningE
&8all disconnectdatabase
2nd Sub
#rivate Sub cmdSave=8lick>?
&check the empty felds
&check whether group id is e$ited or not
&add
.f Kmember1dd.9ist.nde$ @ L) 1nd =
Kmember3elete.9ist.nde$ @ L) 1nd =
Kmember2dit.9ist.nde$ @ L) 1nd =
Kmember4ead.9ist.nde$ @ L) 1nd =
Kmeasure1dd.9ist.nde$ @ L) 1nd =
Kread4eport.9ist.nde$ @ L) 1nd =
Kread#rogress.9ist.nde$ @ L) 1nd =
Kgroup.d.%e$t @ EE 1nd =
Kgroup/ame.%e$t @ EE %hen
0sgBo$ E:ields cannot be blank"E, vb<D<nly B vb2$clamation, EWarningE
2$it Sub
,'
2nd .f
8all databaseconnection
rs.<pen Eselect F from userHroupE
.f /ot rs.2<: %hen
rs.0ove9ast
2nd .f
rs.1dd/ew
rs.:ields>*? @ Cal>Kgroup.d.%e$t?
rs.:ields>)? @ %rim>Kgroup/ame.%e$t?
rs.:ields>+? @ perm.d
rs.7pdate
rs.8lose
rs.<pen Eselect F from user#ermissionE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove9ast
2nd .f
rs.1dd/ew
rs.:ields>*? @ perm.d
.f Kmember4ead.9ist.nde$ @ * %hen
rs.:ields>)? @ )
2lse
rs.:ields>)? @ *
2nd .f
.f Kmember1dd.9ist.nde$ @ * %hen
rs.:ields>+? @ )
2lse
rs.:ields>+? @ *
2nd .f
.f Kmember2dit.9ist.nde$ @ * %hen
rs.:ields>,? @ )
2lse
rs.:ields>,? @ *
2nd .f
.f Kmember3elete.9ist.nde$ @ * %hen
rs.:ields>-? @ )
2lse
rs.:ields>-? @ *
2nd .f
.f Kmeasure1dd.9ist.nde$ @ * %hen
rs.:ields>5? @ )
2lse
rs.:ields>5? @ *
2nd .f
.f Kread4eport.9ist.nde$ @ * %hen
rs.:ields>6? @ )
2lse
rs.:ields>6? @ *
2nd .f
.f Kread#rogress.9ist.nde$ @ * %hen
rs.:ields>!? @ )
,(
2lse
rs.:ields>'? @ *
2nd .f
rs.7pdate
rs.8lose
8all readHroup
8all clearHroup
2nd Sub
#rivate Sub cmd7pdate=8lick>?
&check the empty felds
&check the group id matches, if then add
.f Kmember1dd.9ist.nde$ @ L) 1nd =
Kmember3elete.9ist.nde$ @ L) 1nd =
Kmember2dit.9ist.nde$ @ L) 1nd =
Kmember4ead.9ist.nde$ @ L) 1nd =
Kmeasure1dd.9ist.nde$ @ L) 1nd =
Kread4eport.9ist.nde$ @ L) 1nd =
Kread#rogress.9ist.nde$ @ L) 1nd =
Kgroup.d.%e$t @ EE 1nd =
Kgroup/ame.%e$t @ EE %hen
0sgBo$ E:ields cannot be blankE, vb<D<nly B vb2$clamation, E/otifcationE
2$it Sub
2nd .f
8all databaseconnection
rs.<pen Eselect F from userHroupE
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o While /ot rs.2<:
.f rs.:ields>*? @ Cal>Kgroup.d.%e$t? %hen
rs.:ields>*? @ Cal>Kgroup.d.%e$t?
rs.:ields>)? @ %rim>Kgroup/ame.%e$t?
rs.7pdate
2$it 3o
2nd .f
rs.0ove/e$t
9oop
rs.8lose
rs.<pen Eselect F from user#ermissionE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove9ast
2nd .f
3o 7ntil rs.2<:
.f rs.:ields>*? @ perm.d %hen
.f Kmember4ead.9ist.nde$ @ * %hen
rs.:ields>)? @ )
2lse
rs.:ields>)? @ *
2nd .f
.f Kmember1dd.9ist.nde$ @ * %hen
-*
rs.:ields>+? @ )
2lse
rs.:ields>+? @ *
2nd .f
.f Kmember2dit.9ist.nde$ @ * %hen
rs.:ields>,? @ )
2lse
rs.:ields>,? @ *
2nd .f
.f Kmember3elete.9ist.nde$ @ * %hen
rs.:ields>-? @ )
2lse
rs.:ields>-? @ *
2nd .f
.f Kmeasure1dd.9ist.nde$ @ * %hen
rs.:ields>5? @ )
2lse
rs.:ields>5? @ *
2nd .f
.f Kread4eport.9ist.nde$ @ * %hen
rs.:ields>6? @ )
2lse
rs.:ields>6? @ *
2nd .f
.f Kread#rogress.9ist.nde$ @ * %hen
rs.:ields>!? @ )
2lse
rs.:ields>'? @ *
2nd .f
rs.7pdate
2$it 3o
2nd .f
rs.0ove/e$t
9oop
rs.8lose
8all readHroup
8all clearHroup
2nd Sub
#rivate Sub :orm=9oad>?
8all databaseconnection
8all refresh9ogin%able
8all refresh0embership#lan%able
user.d @ L)
plan/ame @ EE
&:ill the table
&8all fll%able
&FFF.nitialiMing comboBo$
Kmember1dd.1dd.tem >E1llowE?
Kmember1dd.1dd.tem >E3enyE?
Kmember2dit.1dd.tem >E1llowE?
-)
Kmember2dit.1dd.tem >E3enyE?
Kmember4ead.1dd.tem >E1llowE?
Kmember4ead.1dd.tem >E3enyE?
Kmember3elete.1dd.tem >E1llowE?
Kmember3elete.1dd.tem >E3enyE?
Kmeasure1dd.1dd.tem >E1llowE?
Kmeasure1dd.1dd.tem >E3enyE?
Kread#rogress.1dd.tem >E1llowE?
Kread#rogress.1dd.tem >E3enyE?
Kread4eport.1dd.tem >E1llowE?
Kread4eport.1dd.tem >E3enyE?
cmdSave.2nabled @ :alse
3im . 1s .nteger
. @ )
While . N@ +-
mt$t3uration.1dd.tem .
. @ . B )
Wend
&FFF4eading groups
8all readHroup
&FFF:ill lgroup
8all databaseconnection
rs.<pen Eselect F from userHroupE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
While /ot rs.2<:
lgroup.1dd.tem >rs.:ields>*??
rs.0ove/e$t
Wend
rs.8lose
8all disconnectdatabase
0e.8aption @ E1dmin #anelE
add @ *
&Hym details loading
8all databaseconnection
rs.<pen Eselect F from gym3etailE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o 7ntil rs.2<:
gym/ame.%e$t @ rs.:ields>*?
gym1ddress.%e$t @ rs.:ields>)?
.f /ot rs.:ields>+? @ EE %hen
fle @ rs.:ields>+?
.mage).#icture @ 9oad#icture>1pp.#ath I rs.:ields>+??
2lse
fle @ EE
2nd .f
-+
gym#hone.%e$t @ rs.:ields>,?
rs.0ove/e$t
9oop
rs.8lose
2nd Sub
#rivate Sub :orm=7nload>8ancel 1s .nteger?
.f 0sgBo$>E3o you want to e$it 1dmin panelE, vbGes/o B vbOuestion,
E/otifcationE? @ vbGes %hen
7nload 0e
2lse
0e.Set:ocus
2nd .f
2nd Sub
#rivate Sub gym8mdBrowse=8lick>?
logo.Show<pen
3im e$t 1s String
e$t @ Het:ile2$tension>logo.:ile/ame?
.f e$t @ E5pgE <r e$t @ EpngE <r e$t @ E5pegE <r e$t @ EbmpE %hen
fle @ logo.:ile/ame
.mage).#icture @ 9oad#icture>fle?
2lse
0sgBo$ E.nvalid image fleE, vb<D<nly B vb2$clamation, E/otifcationE
2$it Sub
2nd .f
2nd Sub
#rivate Sub gym8mdSave=8lick>?
.f gym/ame.%e$t @ EE 1nd =
gym1ddress.%e$t @ EE 1nd =
gym#hone.%e$t @ EE 1nd =
fle @ EE %hen
0sgBo$ E1ll felds are mandatory"E, vb<D<nly B vb2$clamation, E/otifcationE
2$it Sub
2nd .f
8all databaseconnection
rs.<pen Eselect F from gym3etailE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
.f rs.4ecord8ount @ * %hen
rs.1dd/ew
rs.:ields>*? @ %rim>gym/ame.%e$t?
rs.:ields>)? @ gym1ddress.%e$t
rs.:ields>+? @ fle
rs.:ields>,? @ Cal>gym#hone.%e$t?
rs.7pdate
2lse
3o 7ntil rs.2<:
rs.:ields>*? @ %rim>gym/ame.%e$t?
-,
rs.:ields>)? @ gym1ddress.%e$t
.f /ot fle @ 1pp.#ath I EJgym9ogo.5pegE %hen
:ile8opy fle, 1pp.#ath I EJgym9ogo.5pegE
2nd .f
rs.:ields>+? @ EJgym9ogo.5pegE
rs.:ields>,? @ Cal>gym#hone.%e$t?
rs.7pdate
rs.0ove/e$t
9oop
2nd .f
rs.8lose
0sgBo$ EHym details saved"E, vb<D<nly B vb.nformation, E/otifcationE
2nd Sub
#rivate Sub gym#hone=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub lcmd1dd=8lick>?
.f add @ * %hen
8all clear9ogin:ields
lusername.Set:ocus
lid.2nabled @ :alse
8all databaseconnection
rs.<pen Eselect F from loginE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove9ast
2nd .f
lid.%e$t @ rs.:ields>*? B )
rs.8lose
8all disconnectdatabase
add @ )
lcmd1dd.8aption @ EF1ddE
2$it Sub
2nd .f
.f add @ ) %hen
.f lid.%e$t @ EE 1nd lusername.%e$t @ EE 1nd lpassword.%e$t @ EE 1nd
lfname.%e$t @ EE 1nd llname.%e$t @ EE 1nd lgroup.%e$t @ EE %hen
0sgBo$ E1ll felds are mandatory"E, vb<D<nly B vb2$clamation,
E/otifcationE
2$it Sub
2nd .f
8all databaseconnection
rs.<pen Eselect F from loginE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o 7ntil rs.2<:
.f rs.:ields>)? @ lusername.%e$t %hen
--
0sgBo$ E7sername e$ists" 8hoose diRerent"E, vb<D<nly B
vb2$clamation, EWarningE
2$it Sub
2nd .f
rs.0ove/e$t
9oop
rs.0ove9ast
rs.1dd/ew
rs.:ields>*? @ lid.%e$t
rs.:ields>)? @ lusername.%e$t
rs.:ields>+? @ lpassword.%e$t
rs.:ields>,? @ lfname.%e$t
rs.:ields>-? @ llname.%e$t
rs.:ields>5? @ lgroup.%e$t
rs.7pdate
rs.8lose
8all disconnectdatabase
0sgBo$ E4ecord savedE, vb<D<nly B vb.nformation, E/otifcationE
lcmd1dd.8aption @ E1ddE
add @ *
8all clear9ogin:ields
8all refresh9ogin%able
2$it Sub
2nd .f
2nd Sub
#rivate Sub lcmd8ancel=8lick>?
7nload 0e
2nd Sub
#rivate Sub lcmd3elete=8lick>?
.f user.d @ L) %hen
0sgBo$ ESelect a user to delete"E, vb<D<nly B vb2$clamation, E/otifcationE
2$it Sub
2nd .f
8all databaseconnection
rs.<pen ESelect F from loginE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o 7ntil rs.2<:
.f rs.:ields>*? @ user.d %hen
rs.3elete
0sgBo$ E7ser is deletedE, vb<D<nly B vb.nformation, E/otifcationE
2$it 3o
2nd .f
rs.0ove/e$t
9oop
rs.8lose
8all refresh9ogin%able
2nd Sub
-5
#rivate Sub lcmd0odify=8lick>?
.f lid.%e$t @ EE 1nd lusername.%e$t @ EE 1nd lpassword.%e$t @ EE 1nd lfname.%e$t
@ EE 1nd llname.%e$t @ EE 1nd lgroup.%e$t @ EE %hen
0sgBo$ E1ll felds are mandatory"E, vb<D<nly B vb2$clamation,
E/otifcationE
2$it Sub
2nd .f
8all databaseconnection
rs.<pen Eselect F from loginE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o 7ntil rs.2<:
.f rs.:ields>*? @ lid.%e$t %hen
rs.:ields>*? @ lid.%e$t
rs.:ields>)? @ lusername.%e$t
rs.:ields>+? @ lpassword.%e$t
rs.:ields>,? @ lfname.%e$t
rs.:ields>-? @ llname.%e$t
rs.:ields>5? @ lgroup.%e$t
rs.7pdate
rs.8lose
2$it 3o
2nd .f
rs.0ove/e$t
9oop
8all disconnectdatabase
0sgBo$ E4ecord updated"E, vb<D<nly B vb.nformation, E/otifcationE
8all clear9ogin:ields
8all refresh9ogin%able
2nd Sub
#rivate Sub lcmd4efresh=8lick>?
8all refresh9ogin%able
2nd Sub
#rivate Sub login%able=8lick>?
user.d @ login%able.8olumns>*?
lid.%e$t @ login%able.8olumns>*?
lusername.%e$t @ login%able.8olumns>)?
lpassword.%e$t @ login%able.8olumns>+?
lfname.%e$t @ login%able.8olumns>,?
llname.%e$t @ login%able.8olumns>-?
3im .nde$ 1s .nteger
.nde$ @ *
:or .nde$ @ * %o lgroup.9ist8ount L )
.f 78aseS>lgroup..tem3ata>.nde$?? @ 78aseS>login%able.8olumns>5?? %hen
lgroup.9ist.nde$ @ .nde$
2$it :or
2nd .f
/e$t
&group from comboBo$
-6
2nd Sub
#rivate Sub mcmd3elete=8lick>?
.f plan/ame @ EE %hen
0sgBo$ E8hoose the plan to delete"E, vb<D<nly B vb2$clamation, E/otifcationE
2$it Sub
2nd .f
8all databaseconnection
rs.<pen Eselect F from membership#lanE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
While /ot rs.2<:
.f rs.:ields>*? @ plan/ame %hen
rs.3elete
rs.7pdate
rs.8lose
plan/ame @ EE
8all disconnectdatabase
8all refresh0embership#lan%able
mt$tplanname.%e$t @ EE
mt$tfnal10%.8aption @ EE
mt$tdiscount.%e$t @ EE
mt$tamount.%e$t @ EE
2$it Sub
2nd .f
rs.0ove/e$t
Wend
2nd Sub
#rivate Sub mcmdSave=8lick>?
.f mt$tplanname.%e$t @ EE 1nd mt$tamount.%e$t @ EE 1nd mt$tdiscount.%e$t @ EE
1nd mt$t3uration.%e$t @ ESelectE %hen
0sgBo$ E:ill the blanks"E, vb<D<nly B vb2$clamation, E/otifcationE
2$it Sub
2nd .f
8all databaseconnection
rs.<pen Eselect F from membership#lanE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove9ast
2nd .f
rs.1dd/ew
rs.:ields>*? @ %rim>mt$tplanname.%e$t?
rs.:ields>)? @ Cal>mt$t3uration.%e$t?
rs.:ields>+? @ Cal>mt$tfnal10%.8aption?
rs.7pdate
rs.8lose
8all disconnectdatabase
8all refresh0embership#lan%able
mt$tplanname.%e$t @ EE
mt$tfnal10%.8aption @ EE
mt$tdiscount.%e$t @ EE
-!
mt$tamount.%e$t @ EE
2nd Sub
#rivate Sub mcmd7pdate=8lick>?
.f mt$tplanname.%e$t @ EE 1nd mt$tamount.%e$t @ EE 1nd mt$tdiscount.%e$t @ EE
%hen
0sgBo$ E:ill the blanks"E, vb<D<nly B vb2$clamation, E/otifcationE
2$it Sub
2nd .f
.f mt$tfnal10%.8aption @ EE %hen
0sgBo$ E:inal amount is not calculated"E, vb<D<nly B vb2$clamation, E/otifcationE
2$it Sub
2nd .f
8all databaseconnection
3im rs%emp 1s 13<3B.4ecordset
Set rs%emp @ /ew 13<3B.4ecordset
rs%emp.<pen Eselect F from membership#lanE, con, ad<pen3ynamic,
ad9ock<ptimistic
.f /ot rs%emp.2<: %hen
rs%emp.0ove:irst
2nd .f
3o While /ot rs%emp.2<:
.f rs%emp.:ields>*? @ mt$tplanname.%e$t %hen
rs%emp.:ields>*? @ mt$tplanname.%e$t
rs%emp.:ields>)? @ Cal>mt$t3uration.%e$t?
rs%emp.:ields>+? @ Cal>mt$tfnal10%.8aption?
rs%emp.7pdate
mt$tplanname.%e$t @ EE
mt$tfnal10%.8aption @ EE
mt$tdiscount.%e$t @ EE
mt$tamount.%e$t @ EE
8all refresh0embership#lan%able
2$it 3o
2nd .f
rs%emp.0ove/e$t
9oop
&rs%emp.8lose
2nd Sub
#rivate Sub membership#lan=8lick>?
plan/ame @ %rim>membership#lan.8olumns>*??
mt$tplanname @ plan/ame
mt$tamount @ membership#lan.8olumns>+?
mt$t3uration @ membership#lan.8olumns>)?
2nd Sub
#rivate Sub mt$tamount=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub mt$tdiscount=8hange>?
-'
mt$tfnal10% @ mt$tamount L >Cal>mt$tdiscount? F Cal>mt$tamount?? 6 )**
2nd Sub
#rivate Sub mt$tdiscount=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub KcombHroup=8lick>?
8all clearHroup
8all databaseconnection
&add new group initialiMation
.f KcombHroup.%e$t @ E1dd new groupE %hen
8all clearHroup
cmdSave.2nabled @ %rue
cmd7pdate.2nabled @ :alse
Kgroup/ame.Set:ocus
rs.<pen Eselect F from userHroupE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove9ast
2nd .f
Kgroup.d.%e$t @ rs.:ields>*? B )
rs.8lose
Kgroup.d.2nabled @ :alse
cmdSave.2nabled @ %rue
rs.<pen Eselect F from user#ermissionE, con, ad<pen3ynamic,
ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove9ast
2nd .f
perm.d @ rs.:ields>*? B )
rs.8lose
2$it Sub
2nd .f
cmdSave.2nabled @ :alse
cmd7pdate.2nabled @ %rue
Kgroup.d.2nabled @ :alse

3im temp1rray>? 1s String
temp1rray @ Split>KcombHroup.%e$t, E E?

rs.<pen Eselect F from userHroupE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o While /ot rs.2<:
.f rs.:ields>*? @ Cal>temp1rray>*?? %hen
perm.d @ rs.:ields>+?
Kgroup.d.%e$t @ rs.:ields>*?
Kgroup/ame.%e$t @ rs.:ields>)?
2$it 3o
-(
2nd .f
rs.0ove/e$t
9oop
rs.8lose
rs.<pen Eselect F from user#ermissionE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o While /ot rs.2<:
.f rs.:ields>*? @ perm.d %hen
.f rs.:ields>)? @ ) %hen
Kmember4ead.9ist.nde$ @ *
2lse
Kmember4ead.9ist.nde$ @ )
2nd .f
.f rs.:ields>+? @ ) %hen
Kmember1dd.9ist.nde$ @ *
2lse
Kmember1dd.9ist.nde$ @ )
2nd .f
.f rs.:ields>,? @ ) %hen
Kmember2dit.9ist.nde$ @ *
2lse
Kmember2dit.9ist.nde$ @ )
2nd .f
.f rs.:ields>-? @ ) %hen
Kmember3elete.9ist.nde$ @ *
2lse
Kmember3elete.9ist.nde$ @ )
2nd .f
.f rs.:ields>5? @ ) %hen
Kmeasure1dd.9ist.nde$ @ *
2lse
Kmeasure1dd.9ist.nde$ @ )
2nd .f
.f rs.:ields>6? @ ) %hen
Kread4eport.9ist.nde$ @ *
2lse
Kread4eport.9ist.nde$ @ )
2nd .f
.f rs.:ields>!? @ ) %hen
Kread#rogress.9ist.nde$ @ *
2lse
Kread#rogress.9ist.nde$ @ )
2nd .f
2$it 3o
2nd .f
rs.0ove/e$t
9oop
rs.8lose
5*
8all disconnectdatabase
2nd Sub
#ublic Sub readHroup>?
KcombHroup.clear
8all databaseconnection
rs.8ursor9ocation @ ad7se8lient
rs.<pen Eselect F from userHroupE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
While /ot rs.2<:
KcombHroup.1dd.tem >rs.:ields>*? I E E I rs.:ields>)??
rs.0ove/e$t
Wend
2lse
0sgBo$ E4ecord set is empty"E, vb<D<nly B vb2$clamation, EWarningE
2nd .f


rs.8lose
8all disconnectdatabase
KcombHroup.1dd.tem >E1dd new groupE?
2nd Sub
#ublic Sub clearHroup>?
Kmember1dd.%e$t @ EE
Kmember2dit.%e$t @ EE
Kmember4ead.%e$t @ EE
Kmember3elete.%e$t @ EE
Kmeasure1dd.%e$t @ EE
Kread#rogress.%e$t @ EE
Kread4eport.%e$t @ EE
Kgroup.d.%e$t @ EE
Kgroup/ame.%e$t @ EE

&cmd7pdate.2nabled @ %rue
&cmdSave.2nabled @ %rue
2nd Sub
#ublic Sub clear9ogin:ields>?
lid.%e$t @ EE
lusername.%e$t @ EE
lpassword.%e$t @ EE
lfname.%e$t @ EE
llname.%e$t @ EE
lgroup.%e$t @ EE
2nd Sub
#ublic Sub refresh9ogin%able>?
login%able.8lear:ields
login%able38.8onnectionString @ E#rovider@0icrosoft.Tet.<923B.-.*U3ata
Source@E I 1pp.#ath I EJ3ataJsgsdata.mdbU#ersist Security .nfo@:alseE
login%able38.8ommand%ype @ ad8md%e$t
login%able38.4ecordSource @ Eselect F from loginE
Set login%able.3ataSource @ login%able38
5)
login%able38.4efresh
login%able.4efresh
2nd Sub
#ublic Sub refresh0embership#lan%able>?
membership#lan.8lear:ields
membership#lan38.8onnectionString @ E#rovider@0icrosoft.Tet.<923B.-.*U3ata
Source@E I 1pp.#ath I EJ3ataJsgsdata.mdbU#ersist Security .nfo@:alseE
membership#lan38.8ommand%ype @ ad8md%e$t
membership#lan38.4ecordSource @ Eselect F from membership#lanE
Set membership#lan.3ataSource @ membership#lan38
membership#lan38.4efresh
membership#lan.4efresh
2nd Sub
frm.ndividual4eport :orm;
<ption 2$plicit
3im m.d 1s .nteger
#rivate Sub cmdHenerate=8lick>?
.f m.d @ L) %hen
0sgBo$ ESelect a member"E, vb<D<nly B vb2$clamation, EWarningE
2$it Sub
2nd .f
generateSelf4eport >m.d?
2nd Sub
#rivate Sub :orm=9oad>?
m.d @ L)
lblB0.8hange.8aption @ EE
lblBody:at8hange.8aption @ EE
lbl3ue3ate.8aption @ EE
lbl9ast0easurement3ate.8aption @ EE
lbl9ast#ayment3ate.8aption @ EE
lbl0ember/ameHreeting.8aption @ EE
lblSinceToined3ate.8aption @ EE
lbl%otal1mt#aid.8aption @ EE
lblWeight8hange.8aption @ EE
member%able38.8onnectionString @ E#rovider@0icrosoft.Tet.<923B.-.*U3ata
Source@E I 1pp.#ath I EJ3ataJsgsdata.mdbU#ersist Security .nfo@:alseE
member%able38.8ommand%ype @ ad8md%e$t
member%able38.4ecordSource @ Eselect member.d, frstname, lastname from
membersE
Set member%able.3ataSource @ member%able38
2nd Sub
#rivate Sub member%able=8lick>?
m.d @ Cal>member%able.8olumns>*??
2nd Sub
#ublic :unction generateSelf4eport>member.d 1s .nteger?
3im str 1s String
lbl0ember/ameHreeting.8aption @ member%able.8olumns>*? I E E I
member%able.8olumns>)? I E E I member%able.8olumns>+?
5+
str @ get9ast0easurement3ate<f>member.d?
.f /ot str @ EE %hen
lbl9ast0easurement3ate.8aption @ E9ast measurement date; E I str
2lse
lbl9ast0easurement3ate.8aption @ E0easurement Vistory is emptyE
2nd .f
str @ EE
lblB0.8hange.8aption @ EB0. change ; E I getB0.change<f>member.d?
lblBody:at8hange.8aption @ EBody :at change ; E I
getBody:at8hange<f>member.d?
lblWeight8hange.8aption @ EWeight change ; E I getWeight8hange<f>member.d?
str @ get9ast#ayment3ate<f>member.d?
.f /ot str @ EE %hen
lbl9ast#ayment3ate.8aption @ E9ast #ayment 3ate ; E I str
2lse
lbl9ast#ayment3ate.8aption @ E#ayment Vistory is emptyE
2nd .f
str @ EE
str @ get%otal1mt#aid<f>member.d?
.f /ot str @ EE %hen
lbl%otal1mt#aid.8aption @ E%otal amount paid ; E I str
2lse
lbl%otal1mt#aid.8aption @ E#ayment Vistory is emptyE
2nd .f
str @ EE
lblSinceToined3ate.8aption @ sinceToined3ate<f>member.d?
lbl3ue3ate.8aption @ E3ue 3ate ; E I get3ue3ate<f>member.d?
2nd :unction
#rivate Sub t$tSearch=8hange>?
.f t$tSearch.%e$t @ EE %hen
member%able.8lear:ields
member%able38.8onnectionString @ E#rovider@0icrosoft.Tet.<923B.-.*U3ata
Source@E I 1pp.#ath I EJ3ataJsgsdata.mdbU#ersist Security .nfo@:alseE
member%able38.8ommand%ype @ ad8md%e$t
member%able38.4ecordSource @ Eselect member.d, frstname, lastname from
membersE
Set member%able.3ataSource @ member%able38
member%able38.4efresh
member%able.4efresh
2$it Sub
2nd .f
.f opt4no.Calue %hen
member%able.8lear:ields
member%able38.8onnectionString @ E#rovider@0icrosoft.Tet.<923B.-.*U3ata
Source@E I 1pp.#ath I EJ3ataJsgsdata.mdbU#ersist Security .nfo@:alseE
member%able38.8ommand%ype @ ad8md%e$t
member%able38.4ecordSource @ Eselect member.d, frstname, lastname from
members where member.d like &E I Cal>t$tSearch.%e$t? I EW&E
Set member%able.3ataSource @ member%able38
5,
member%able38.4efresh
member%able.4efresh
2lse.f opt:name.Calue %hen
member%able.8lear:ields
member%able38.8onnectionString @ E#rovider@0icrosoft.Tet.<923B.-.*U3ata
Source@E I 1pp.#ath I EJ3ataJsgsdata.mdbU#ersist Security .nfo@:alseE
member%able38.8ommand%ype @ ad8md%e$t
member%able38.4ecordSource @ Eselect member.d, frstname, lastname from
members where frstname like &E I t$tSearch.%e$t I EW&E
Set member%able.3ataSource @ member%able38
member%able38.4efresh
member%able.4efresh
2nd .f
2nd Sub
#rivate Sub t$tSearch=Hot:ocus>?
.f opt4no.Calue @ :alse 1nd opt:name.Calue @ :alse %hen
0sgBo$ E8hoose the search option"E, vb<D<nly B vb2$clamation, EWarningE
2$it Sub
2nd .f
t$tSearch.%e$t @ EE
2nd Sub
#rivate Sub t$tSearch=Dey#ress>Dey1scii 1s .nteger?
.f opt4no %hen
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' 1nd Dey1scii NA -5 1nd
Dey1scii NA -! %hen
Dey1scii @ *
2nd .f
2nd .f
2nd Sub
frm.nitial4eport :orm;
<ption 2$plicit
#rivate Sub cmd#roceed=8lick>?
.f opt.ndividual.Calue @ :alse 1nd opt4eport.Calue @ :alse %hen
0sgBo$ ESelect the report type"E, vb<D<nly B vb2$clamation, E/otifcationE
2$it Sub
2lse.f opt.ndividual.Calue %hen
frm.ndividual4eport.Show
2lse
frm4eport.Show
2nd .f
7nload 0e
2nd Sub
frm9ogin :orm;
<ption 2$plicit
#ublic 9oginSucceeded 1s Boolean
#rivate Sub cmd8ancel=8lick>?
&set the global var to false
&to denote a failed login
9oginSucceeded @ :alse
5-
0e.Vide
2nd Sub
#rivate Sub cmd8lose=8lick>?
.f 0sgBo$>E1re you really Kuit E, vbGes/o, E/otifcationE? @ vbGes %hen
7nload 0e
2nd .f
2nd Sub
#rivate Sub :orm=9oad>?
t$t7ser/ame.Back8olor @ 4HB>+-), +-), +-)?
t$t#assword.Back8olor @ 4HB>+-), +-), +-)?
&lbl<k.0ouse#ointer @ ((
&lbl<k.0ouse.con @ 9oad#icture>1pp.#ath I EJhand.icoE?
2nd Sub
#rivate Sub lbl<k=8lick>?
.f t$t7ser/ame.%e$t @ EE 1nd t$t#assword.%e$t @ EE %hen
0sgBo$ E2nter the username and password"E, vb<D<nly B vb2$clamation, E9oginE
t$t7ser/ame.%e$t @ EE
t$t#assword.%e$t @ EE
2lse.f t$t7ser/ame.%e$t @ EE %hen
0sgBo$ E2nter the usernameE, vb<D<nly B vb2$clamation, E9oginE
t$t7ser/ame.%e$t @ EE
t$t#assword.%e$t @ EE
2lse.f t$t#assword.%e$t @ EE %hen
0sgBo$ E2nter the passwordE, vb<D<nly B vb2$clamation, E9oginE
t$t7ser/ame.%e$t @ EE
t$t#assword.%e$t @ EE
2lse
8all databaseconnection
rs.<pen Eselect F from loginE, con, ad<penStatic
.f rs.2<: @ %rue %hen
0sgBo$ E9ogin entry is empty"E, vb<D<nly B vb8ritical, E2rrorE
2$it Sub
2lse
rs.0ove:irst
2nd .f
While /ot rs.2<:
.f %rim>t$t7ser/ame.%e$t? @ rs.:ields>)? 1nd %rim>t$t#assword.%e$t? @
rs.:ields>+? %hen
bar/ame @ rs.:ields>,? I E E I rs.:ields>-?
8all disconnectdatabase
dialog9oading.Show
7nload 0e
2$it Sub
2lse
rs.0ove/e$t
2nd .f
Wend
8all disconnectdatabase
0sgBo$ EBad loginE, vb<D<nly B vb2$clamation, E9oginE
t$t#assword.Set:ocus
55
2nd .f
2nd Sub
frm0ain :orm;
#rivate 3eclare :unction Het0enu 9ib E7ser,+E >ByCal hWnd 1s 9ong? 1s 9ong
#rivate 3eclare :unction HetSub0enu 9ib E7ser,+E >ByCal h0enu 1s 9ong, ByCal
n#os 1s 9ong? 1s 9ong
#rivate 3eclare :unction Set0enu.temBitmaps 9ib E7ser,+E =
>ByCal h0enu 1s 9ong, ByCal n#osition 1s 9ong, ByCal w:lags 1s 9ong, =
ByCal hBitmap7nchecked 1s 9ong, ByCal hBitmap8hecked 1s 9ong? 1s 9ong
#rivate 3eclare :unction 9oad.mage 9ib E7ser,+E 1lias E9oad.mage1E =
>ByCal h.nst 1s 9ong, ByCal lpsM 1s String, ByCal un) 1s 9ong, =
ByCal n) 1s 9ong, ByCal n+ 1s 9ong, ByCal un+ 1s 9ong? 1s 9ong
&8onstant for Set0enu.temBitmaps
#rivate 8onst 0:=BG#<S.%.</ 1s 9ong @ IV-**I
&8onstants for 9oad.mage
#rivate 8onst .01H2=B.%01# 1s 9ong @ I<*
#rivate 8onst 94=9<13:4<0:.92 1s 9ong @ )6
#rivate 8onst 94=8421%23.BS28%.</ 1s 9ong @ ')(+
#rivate Sub addmember=8lick>?
frm0ember.load%ype @ *
frm0ember.Show
2nd Sub
#rivate Sub adminpanel=8lick>?
dialog%o1ccess1dmin.Show
2nd Sub
#rivate Sub bodyprogress=8lick>?
frmSearch.loadBody#rogress @ %rue
frmSearch.Show
2nd Sub
#rivate Sub calc=8lick>?
Shell E8;JW./3<WSJSystem,+Jcalc.e$eE
2nd Sub
#rivate Sub employees=8lick>.nde$ 1s .nteger?
2nd Sub
#rivate Sub hide0etroHrid=8lick>?
frm0etroStyle0enu.Cisible @ :alse
2nd Sub
#rivate Sub logout=8lick>?
frm9ogin.Show
7nload 0e
2nd Sub
#rivate Sub 03.:orm=9oad>?
0e.8aption @ ESmart Hym System ; E I bar/ame
&frmSideBar.Show
&setting to fullscreen
dX @ 0e.Width
dG @ 0e.Veight
set:ullScreen 0e
frm0etroStyle0enu.Show
3im e$t 1s String
56
e$t @ Het:ile2$tension>1pp.#ath I EJwallpaper.5pegE?
.f e$t @ E5pgE <r e$t @ EpngE <r e$t @ E5pegE <r e$t @ EbmpE %hen
0e.#icture @ 9oad#icture>1pp.#ath I EJwallpaper.5pegE?
2lse
0sgBo$ E.nvalid .mage :ile"E, vb<D<nly B vb2$clamation, E/otifcationE
2$it Sub
2nd .f
&add icons to the menu
3im h0enu 1s 9ong
3im hSub0enu 1s 9ong
3im h0enu.mg 1s 9ong
3im s:ile/ame 1s String
& Het the bitmap.
s:ile/ame @ 1pp.#ath I EJ.consJmenu.consJinvisible.bmpE
h0enu.mg @ 9oad.mage>*, s:ile/ame, .01H2=B.%01#, *, *, 94=9<13:4<0:.92 <r
94=8421%23.BS28%.</?
& Het the menu item handle.
h0enu @ Het0enu>0e.hWnd?
hSub0enu @ HetSub0enu>h0enu, *?
& Set the Emnu%woE bitmap to the one that is loaded in memory.
8all Set0enu.temBitmaps>hSub0enu, *, 0:=BG#<S.%.</, h0enu.mg, *?
s:ile/ame @ 1pp.#ath I EJ.consJmenu.consJvisible.bmpE
h0enu.mg @ 9oad.mage>*, s:ile/ame, .01H2=B.%01#, *, *, 94=9<13:4<0:.92
<r 94=8421%23.BS28%.</?
8all Set0enu.temBitmaps>hSub0enu, ), 0:=BG#<S.%.</, h0enu.mg, *?
s:ile/ame @ 1pp.#ath I EJ.consJmenu.consJ1dmin#anel.bmpE
h0enu.mg @ 9oad.mage>*, s:ile/ame, .01H2=B.%01#, *, *, 94=9<13:4<0:.92
<r 94=8421%23.BS28%.</?
8all Set0enu.temBitmaps>hSub0enu, +, 0:=BG#<S.%.</, h0enu.mg, *?
s:ile/ame @ 1pp.#ath I EJ.consJmenu.consJ9og<ut.bmpE
h0enu.mg @ 9oad.mage>*, s:ile/ame, .01H2=B.%01#, *, *, 94=9<13:4<0:.92
<r 94=8421%23.BS28%.</?
8all Set0enu.temBitmaps>hSub0enu, ,, 0:=BG#<S.%.</, h0enu.mg, *?
s:ile/ame @ 1pp.#ath I EJ.consJmenu.consJShutsystem.bmpE
h0enu.mg @ 9oad.mage>*, s:ile/ame, .01H2=B.%01#, *, *, 94=9<13:4<0:.92
<r 94=8421%23.BS28%.</?
8all Set0enu.temBitmaps>hSub0enu, -, 0:=BG#<S.%.</, h0enu.mg, *?
h0enu @ Het0enu>0e.hWnd?
hSub0enu @ HetSub0enu>h0enu, )?
s:ile/ame @ 1pp.#ath I EJ.consJmenu.consJ0ember9ist.bmpE
h0enu.mg @ 9oad.mage>*, s:ile/ame, .01H2=B.%01#, *, *, 94=9<13:4<0:.92
<r 94=8421%23.BS28%.</?
8all Set0enu.temBitmaps>hSub0enu, *, 0:=BG#<S.%.</, h0enu.mg, *?
s:ile/ame @ 1pp.#ath I EJ.consJmenu.consJ0ember1dd.bmpE
h0enu.mg @ 9oad.mage>*, s:ile/ame, .01H2=B.%01#, *, *, 94=9<13:4<0:.92
<r 94=8421%23.BS28%.</?
8all Set0enu.temBitmaps>hSub0enu, ), 0:=BG#<S.%.</, h0enu.mg, *?
s:ile/ame @ 1pp.#ath I EJ.consJmenu.consJ0easurement.bmpE
5!
h0enu.mg @ 9oad.mage>*, s:ile/ame, .01H2=B.%01#, *, *, 94=9<13:4<0:.92
<r 94=8421%23.BS28%.</?
8all Set0enu.temBitmaps>hSub0enu, +, 0:=BG#<S.%.</, h0enu.mg, *?
s:ile/ame @ 1pp.#ath I EJ.consJmenu.consJ#rogress.bmpE
h0enu.mg @ 9oad.mage>*, s:ile/ame, .01H2=B.%01#, *, *, 94=9<13:4<0:.92
<r 94=8421%23.BS28%.</?
8all Set0enu.temBitmaps>hSub0enu, ,, 0:=BG#<S.%.</, h0enu.mg, *?

s:ile/ame @ 1pp.#ath I EJ.consJmenu.consJ0ake#ayment.bmpE
h0enu.mg @ 9oad.mage>*, s:ile/ame, .01H2=B.%01#, *, *, 94=9<13:4<0:.92
<r 94=8421%23.BS28%.</?
8all Set0enu.temBitmaps>hSub0enu, -, 0:=BG#<S.%.</, h0enu.mg, *?
h0enu @ Het0enu>0e.hWnd?
hSub0enu @ HetSub0enu>h0enu, ,?
s:ile/ame @ 1pp.#ath I EJ.consJmenu.consJ8alculator.bmpE
h0enu.mg @ 9oad.mage>*, s:ile/ame, .01H2=B.%01#, *, *, 94=9<13:4<0:.92
<r 94=8421%23.BS28%.</?
8all Set0enu.temBitmaps>hSub0enu, *, 0:=BG#<S.%.</, h0enu.mg, *?
s:ile/ame @ 1pp.#ath I EJ.consJmenu.consJ8hangeWall.bmpE
h0enu.mg @ 9oad.mage>*, s:ile/ame, .01H2=B.%01#, *, *, 94=9<13:4<0:.92
<r 94=8421%23.BS28%.</?
8all Set0enu.temBitmaps>hSub0enu, ), 0:=BG#<S.%.</, h0enu.mg, *?
2nd Sub
#rivate Sub 03.:orm=7nload>8ancel 1s .nteger?
.f 0sgBo$>E1re you really want to e$itE, vbGes/o B vbOuestion, E/otifcationE? @
vbGes %hen
7nload 0e
2nd .f
2nd Sub
#rivate Sub measurement=8lick>?
frmSearch.load0easurement @ %rue
frmSearch.Show
2nd Sub
#rivate Sub memberdetails=8lick>?
frm0emberlist.Show
2nd Sub
#rivate Sub metroHrid=8lick>?
.f frm0etroStyle0enu.Cisible @ :alse %hen
frm0etroStyle0enu.Cisible @ %rue
2$it Sub
2nd .f
frm0etroStyle0enu.Show
2nd Sub
#rivate Sub payment=8lick>?
frmSearch.load#ayment @ %rue
frmSearch.Show
2nd Sub
#rivate Sub reports=8lick>?
frm.nitial4eport.Show
5'
2nd Sub
#rivate Sub setWallpaper=8lick>?
dialog%o8hangeWallpaper.Show
2nd Sub
#rivate Sub shutsystem=8lick>?
.f 0sgBo$>E1re you really want to e$itE, vbGes/o B vbOuestion, E/otifcationE? @
vbGes %hen
7nload 0e
2nd .f
2nd Sub
frm0ember :orm;
#ublic load%ype 1s .nteger
#ublic payment 1s Boolean
#ublic member.d 1s .nteger
3im ib5 1s <b5ect
3im dtm%est 1s 3ate
3im date%ime/ow 1s String
3im dd 1s String
3im tt 1s String
3im photo7rl 1s String
3im photo/ame 1s String
3im is8licked 1s Boolean
#rivate Sub cmdBrowse=8lick>?
8ommon3ialog).Show<pen
picture#rofle.#icture @ 9oad#icture>8ommon3ialog).:ile/ame?
photo7rl @ 8ommon3ialog).:ile/ame
photo/ame @ 8ommon3ialog).:ile%itle
2nd Sub
#rivate Sub cmd8ancel=8lick>?
.f 0sgBo$>E2$itE, vbGes/o B vbOuestion, E/otifcationE? @ vbGes %hen
8all disconnectdatabase
7nload 0e
2nd .f
2nd Sub
#rivate Sub cmd8lear=8lick>?
&8all clear
2nd Sub
#rivate Sub cmd#rogress=8lick>?
2nd Sub
#rivate Sub cmd4eport=8lick>?
.f is8licked %hen
cmd4eport.8aption @ EShow 4eportE
0e.Width @ 9ine+.X+
is8licked @ :alse
2lse
cmd4eport.8aption @ EVide 4eportE
5(
0e.Width @ ),(+*
is8licked @ %rue
2nd .f
2nd Sub
#rivate Sub cmdSave=8lick>?
.f t$tid.%e$t @ EE 1nd t$tfname.%e$t @ EE 1nd t$tlname.%e$t @ EE 1nd
t$tgender.%e$t @ ESelectE 1nd t$tdob.%e$t @ EE 1nd t$tnumber.%e$t @ EE 1nd
t$taddress.%e$t @ EE %hen
0sgBo$ E:ill the feldsE, vb<D<nly B vb2$clamation, EWarning"E
2nd .f
.f load%ype @ ) %hen
&member0odify
rs.<pen Eselect F from membersE
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
While /ot rs.2<:
.f rs.:ields>*? @ t$tid.%e$t %hen
rs.:ields>*? @ t$tid.%e$t
rs.:ields>)? @ t$tfname.%e$t
rs.:ields>+? @ t$tlname.%e$t
rs.:ields>,? @ t$tgender.%e$t
rs.:ields>-? @ t$tnumber.%e$t
rs.:ields>5? @ t$taddress.%e$t
rs.:ields>!? @ t$tdob.Calue
&delete the previous photo
Dill 1pp.#ath I rs.:ields>'?
&new photo is copied here
.f /ot photo7rl @ EE %hen
:ile8opy photo7rl, 1pp.#ath I EJ#rofle#ictureJE I photo/ame
2nd .f
&set the photo to the database
rs.:ields>'? @ EJ#rofle#ictureJE I photo/ame
7nload 0e
2$it Sub
2nd .f
rs.0ove/e$t
Wend
2lse.f load%ype @ + %hen
&member4ead<nly
2lse
&member1dd
dd @ :ormatS>/ow, Emm6dd6yyyyE?
tt @ :ormatS>time, Ehh;mm;ss106#0E?
date%ime/ow @ dd I E E I tt
rs.<pen Eselect F from membersE
.f /ot rs.2<: %hen
rs.0ove9ast
2nd .f
rs.1dd/ew
6*
rs.:ields>*? @ t$tid.%e$t
rs.:ields>)? @ t$tfname.%e$t
rs.:ields>+? @ t$tlname.%e$t
rs.:ields>,? @ t$tgender.%e$t
rs.:ields>-? @ t$tnumber.%e$t
rs.:ields>5? @ t$taddress.%e$t
rs.:ields>6? @ date%ime/ow
rs.:ields>!? @ t$tdob.Calue
rs.:ields>Edue3ateE? @ dd
.f /ot photo7rl @ EE %hen
:ile8opy photo7rl, 1pp.#ath I EJ#rofle#ictureJE I photo/ame
2nd .f
rs.:ields>'? @ EJ#rofle#ictureJE I photo/ame
rs.7pdate
rs.8lose
0sgBo$ ESaved"E, vb<D<nly B vb.nformation, E/otifcationE
.f 0sgBo$>E1re you want to make paymentE, vbGes/o, E#aymentE? @ vbGes %hen
frm#ayment.t$tid @ t$tid.%e$t
frm#ayment.t$tname @ t$tfname.%e$t I E E I t$tlname.%e$t
frm#ayment.Show
7nload 0e
2lse
0e.4efresh
8all clear
7nload 0e
2nd .f
2nd .f
2nd Sub
#rivate Sub :orm=9oad>?
8all databaseconnection
8all clear
t$tgender.1dd.tem E0aleE
t$tgender.1dd.tem E:emaleE
t$tid.2nabled @ %rue
t$tdue3ate.2nabled @ :alse
t$tnumber.0a$9ength @ )+
cmd4eport.Cisible @ :alse
cmdBrowse.Cisible @ %rue
cmd8ancel.Cisible @ %rue
cmd8lear.Cisible @ %rue
cmdSave.Cisible @ %rue
0e.Veight @ 6***
0e.Width @ 9ine+.X+
.f load%ype @ ) %hen
&YYYYYYYmember0odify
0e.8aption @ E2dit memberE
t$tid.2nabled @ :alse
t$tdo5.2nabled @ :alse
cmdSave.8aption @ E7pdateE
0e.Veight @ 6***
6)
0e.Width @ 9ine+.X+
cmd4eport.Cisible @ :alse
rs.<pen Eselect F from membersE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
While /ot rs.2<:
.f rs.:ields>*? @ member.d %hen
t$tid.%e$t @ rs.:ields>*?
t$tfname.%e$t @ rs.:ields>)?
t$tlname.%e$t @ rs.:ields>+?
t$tgender.%e$t @ rs.:ields>,?
t$tnumber.%e$t @ rs.:ields>-?
t$taddress.%e$t @ rs.:ields>5?
t$tdo5.%e$t @ rs.:ields>6?
t$tdob.Calue @ rs.:ields>!?
.f :ile2$ists>1pp.#ath I rs.:ields>'?? %hen
.mage).#icture @ 9oad#icture>1pp.#ath I rs.:ields>'??
2nd .f
t$tdue3ate.%e$t @ rs.:ields>(?
rs.8lose
2$it Sub
2nd .f
rs.0ove/e$t
Wend
2lse.f load%ype @ + %hen
&YYYYYYYYmember4ead<nly
0e.8aption @ E0ember in detailE
cmd8lear.Cisible @ :alse
cmd8ancel.Cisible @ :alse
cmdSave.Cisible @ :alse
cmd4eport.Cisible @ %rue
cmdBrowse.Cisible @ :alse
t$taddress.2nabled @ :alse
t$tdob.2nabled @ :alse
t$tdo5.2nabled @ :alse
t$tfname.2nabled @ :alse
t$tgender.2nabled @ :alse
t$tid.2nabled @ :alse
t$tlname.2nabled @ :alse
t$tnumber.2nabled @ :alse
0e.Veight @ (+)*
0e.Width @ 9ine+.X+
rs.<pen Eselect F from membersE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o While /ot rs.2<:
.f rs.:ields>*? @ member.d %hen
t$tid.%e$t @ rs.:ields>*?
6+
t$tfname.%e$t @ rs.:ields>)?
t$tlname.%e$t @ rs.:ields>+?
t$tgender.%e$t @ rs.:ields>,?
t$tdob.Calue @ rs.:ields>!?
t$tnumber.%e$t @ rs.:ields>-?
t$taddress.%e$t @ rs.:ields>5?
t$tdo5.%e$t @ rs.:ields>6?
3im full#ath 1s String
full#ath @ 1pp.#ath I rs.:ields>'?
picture#rofle.#icture @ 9oad#icture>full#ath?

t$tdue3ate.%e$t @ rs.:ields>(?
2$it 3o
2nd .f
rs.0ove/e$t
9oop
rs.8lose
3im rs+ 1s 13<3B.4ecordset
Set rs+ @ /ew 13<3B.4ecordset
rs+.8ursor9ocation @ ad7se8lient
rs+.<pen ES2928% F :4<0 payment%ransaction WV242 member.d@E I
Cal>t$tid.%e$t?, con, ad<pen3ynamic, ad9ock<ptimistic
Set #aymentVistory.3ataSource @ rs+

8all generateSelf4eport
2$it Sub
2lse
&YYYYYYYmember1dd
0e.8aption @ E/ew memberE
t$tdo5.2nabled @ :alse
0e.Veight @ 9ine).G+ B -**
dd @ :ormatS>/ow, Emm6dd6yyyyE?
tt @ :ormatS>time, Ehh;mm;ss106#0E?
date%ime/ow @ dd I E E I tt
t$tdo5.%e$t @ date%ime/ow &FFFFFFFFFFFHenerating .3 for the new
memberFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
rs.<pen ESelect member.d from membersE, con, ad<penStatic, ad9ock<ptimistic
.f rs.2<: @ %rue %hen
t$tid.%e$t @ )
2lse
rs.0ove9ast
t$tid.%e$t @ rs.:ields>*? B )
2nd .f
rs.8lose
&FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
2nd .f
2nd Sub
#ublic :unction clear>?
t$tid.9ocked @ %rue
t$tid.%e$t @ EE
6,
t$tfname.%e$t @ EE
t$tlname.%e$t @ EE
t$tgender.%e$t @ ESelectE
t$tdob.Calue @ E)6)6+*)+E
t$tnumber.%e$t @ EE
t$taddress.%e$t @ EE
2nd :unction
#rivate Sub :orm=7nload>8ancel 1s .nteger?
.f load%ype @ * %hen
.f 0sgBo$>E3o you want to cancelE, vb<D<nly B vbOuestion, E/otifcationE?
@ vbGes %hen
7nload 0e
8all disconnectdatabase
2$it Sub
2lse
2$it Sub
2nd .f
2nd .f
7nload 0e
8all disconnectdatabase
2nd Sub
#ublic :unction generateSelf4eport>?
3im str 1s String
lbl0ember/ameHreeting.8aption @ t$tid.%e$t I E E I t$tfname.%e$t I E E I
t$tlname.%e$t
str @ get9ast0easurement3ate<f>Cal>t$tid.%e$t??
.f /ot str @ EE %hen
lbl9ast0easurement3ate.8aption @ E9ast measurement date; E I str
2lse
lbl9ast0easurement3ate.8aption @ E0easurement Vistory is emptyE
2nd .f
str @ EE
lblB0.8hange.8aption @ EB0. change ; E I getB0.change<f>Cal>t$tid.%e$t??
lblBody:at8hange.8aption @ EBody :at change ; E I
getBody:at8hange<f>Cal>t$tid.%e$t??
lblWeight8hange.8aption @ EWeight change ; E I
getWeight8hange<f>Cal>t$tid.%e$t??
str @ get9ast#ayment3ate<f>Cal>t$tid.%e$t??
.f /ot str @ EE %hen
lbl9ast#ayment3ate.8aption @ E9ast #ayment 3ate ; E I str
2lse
lbl9ast#ayment3ate.8aption @ E#ayment Vistory is emptyE
2nd .f
str @ EE
str @ get%otal1mt#aid<f>Cal>t$tid.%e$t??
.f /ot str @ EE %hen
lbl%otal1mt#aid.8aption @ E%otal amount paid ; E I str
2lse
lbl%otal1mt#aid.8aption @ E#ayment Vistory is emptyE
2nd .f
6-
str @ EE
lblSinceToined3ate.8aption @ sinceToined3ate<f>Cal>t$tid.%e$t??
lbl3ue3ate.8aption @ E3ue 3ate ; E I get3ue3ate<f>Cal>t$tid.%e$t??
3im rs, 1s 13<3B.4ecordset
Set rs, @ /ew 13<3B.4ecordset
rs,.8ursor9ocation @ ad7se8lient
rs,.<pen ES2928% F :4<0 progress0ember WV242 member.d@E I Cal>t$tid.%e$t?,
con, ad<pen3ynamic, ad9ock<ptimistic
Set measurementVistory.3ataSource @ rs,
2nd :unction
#rivate Sub t$tnumber=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
frm0emberlist :orm;
3im member.d 1s .nteger
3im oSel4ows 1s SelBookmarks
3im bookmark 1s 3ouble
#rivate Sub cmd1dd0ember=8lick>?
frm0ember.load%ype @ *
frm0ember.Show
2nd Sub
#rivate Sub cmd3elete0ember=8lick>?
.f member.d @ L) %hen
0sgBo$ ESelect the member to delete"E, vb<D<nly B vb2$clamation,
E/otifcationE
2$it Sub
2nd .f
.f 0sgBo$>E1re you really want to delete the userE, vbGes/o B vbOuestion,
E/otifcationE? @ vbGes %hen
&delete
rs.<pen ESelect F from membersE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o While /ot rs.2<:
.f rs.:ields>*? @ member.d %hen
rs.3elete
rs.7pdate
rs.8lose
2$it 3o
2nd .f
rs.0ove/e$t
9oop
rs.8lose
rs.<pen Eselect F from progress0emberE, con, ad<pen3ynamic,
ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
65
2nd .f
3o While /ot rs.2<:
.f rs.:ields>*? @ member.d %hen
rs.3elete
rs.7pdate
rs.8lose
2$it 3o
2nd .f
rs.0ove/e$t
9oop
rs.8lose
2lse.f answer @ vb/o %hen
frm0emberlist.Set:ocus
2nd .f

2nd Sub
#rivate Sub cmd0ake#ayment=8lick>?
.f member.d @ L) %hen
0sgBo$ ESelect the member to make payment"E, vb<D<nly B vb2$clamation,
E/otifcationE
2$it Sub
2nd .f
frm#ayment.member.d @ member.d
frm#ayment.Show
member.d @ L)
2nd Sub
#rivate Sub cmd0odify0ember=8lick>?
.f member.d @ L) %hen
0sgBo$ ESelect the member to modify"E, vb<D<nly B vb2$clamation,
E/otifcationE
2$it Sub
2nd .f
frm0ember.load%ype @ )
frm0ember.member.d @ member.d
frm0ember.Show
member.d @ L)
2nd Sub
#rivate Sub cmdShow#rofle=8lick>?
.f member.d @ L) %hen
0sgBo$ ESelect the member to modify"E, vb<D<nly B vb2$clamation,
E/otifcationE
2$it Sub
2nd .f
frm0ember.load%ype @ +
frm0ember.member.d @ member.d
frm0ember.Show
member.d @ L)
2nd Sub
#rivate Sub cmmd%ake0easurement=8lick>?
frm0ember0easurement.member.d @ Cal>3ataHrid).8olumns>*??
66
frm0ember0easurement.Show
2nd Sub
#rivate Sub 3ataHrid)=8lick>?
member.d @ 3ataHrid).8olumns>*?
2nd Sub
#rivate Sub :orm=9oad>?
member.d @ L)
&0sgBo$ member.d
0e.#icture @ /othing
member%able38.8onnectionString @ E#rovider@0icrosoft.Tet.<923B.-.*U3ata
Source@E I 1pp.#ath I EJ3ataJsgsdata.mdbU#ersist Security .nfo@:alseE
member%able38.8ommand%ype @ ad8md%e$t
member%able38.4ecordSource @ Eselect F from membersE
Set 3ataHrid).3ataSource @ member%able38
2nd Sub
#rivate Sub search:ield=8hange>?
.f search:ield.%e$t @ EE %hen
3ataHrid).8lear:ields
member%able38.8ommand%ype @ ad8md%e$t
member%able38.4ecordSource @ ESelect F from membersE
Set 3ataHrid).3ataSource @ member%able38
member%able38.4efresh
3ataHrid).4efresh
2$it Sub
2nd .f
.f opt4no %hen
3ataHrid).8lear:ields
member%able38.8ommand%ype @ ad8md%e$t
member%able38.4ecordSource @ ESelect F from members where member.d like
&E I Cal>search:ield.%e$t? I EW&E
Set 3ataHrid).3ataSource @ member%able38
member%able38.4efresh
3ataHrid).4efresh
2lse.f opt:name %hen
3ataHrid).8lear:ields
member%able38.8ommand%ype @ ad8md%e$t
member%able38.4ecordSource @ ESelect F from members where frstname like
&E I search:ield.%e$t I EW&E
Set 3ataHrid).3ataSource @ member%able38
member%able38.4efresh
3ataHrid).4efresh
2nd .f
2nd Sub
#rivate Sub search:ield=Dey#ress>Dey1scii 1s .nteger?
.f opt4no %hen
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd .f
6!
2nd Sub
frm0ember0easurement
#ublic member.d 1s .nteger
#ublic memberHender 1s Boolean
3im date%ime/ow 1s String
3im dd 1s String
3im tt 1s String
#rivate Sub c)height=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub c+weight=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub c,neck=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub c-hips=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub c5waist=8hange>?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub c6forearm=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub c!wrist=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub cmd8alculate=8lick>?
lblB0..8aption @ calculateB0.by0etric>Cal>c+weight.%e$t?, Cal>c)height.%e$t??
lblBody:at.8aption @ calculateBody:at>memberHender, Cal>c+weight.%e$t?,
Cal>c5waist.%e$t?, Cal>c!wrist.%e$t?, Cal>c-hips.%e$t?, Cal>c6forearm.%e$t?? I EWE
2nd Sub
#rivate Sub cmd8ancel=8lick>?
6'
.f 0sgBo$>E0easurement will be declinedE, vbGes/o B vbOuestion, E/otifcationE?
@ vbGes %hen
7nload 0e
2nd .f
2nd Sub
#rivate Sub cmdSave=8lick>?
.f c)height.%e$t @ EE 1nd =
c+weight.%e$t @ EE 1nd =
c,neck.%e$t @ EE 1nd =
c-hips.%e$t @ EE 1nd =
c5waist.%e$t @ EE 1nd =
c6forearm.%e$t @ EE 1nd =
c!wrist.%e$t @ EE %hen
0sgBo$ E8ore 0easurement felds are mandatory"E, vb<D<nly B
vb2$clamation, E/otifcationE
2$it Sub
2nd .f
dd @ :ormatS>/ow, Emm6dd6yyyyE?
tt @ :ormatS>time, Ehh;mm;ss106#0E?
date%ime/ow @ dd I E E I tt
8all databaseconnection
rs.<pen Eselect F from progress0emberE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove9ast
2nd .f
rs.1dd/ew
rs.:ields>*? @ Cal>lblmember.d.8aption?
rs.:ields>)? @ Cal>c)height.%e$t?
rs.:ields>+? @ Cal>c+weight.%e$t?
rs.:ields>,? @ Cal>lblB0..8aption?
rs.:ields>-? @ Cal>d)bicep.%e$t?
rs.:ields>5? @ Cal>c-hips.%e$t?
rs.:ields>6? @ Cal>d+thigh.%e$t?
rs.:ields>!? @ Cal>c,neck.%e$t?
rs.:ields>'? @ Cal>c6forearm.%e$t?
rs.:ields>(? @ Cal>d,chest.%e$t?
rs.:ields>)*? @ Cal>d-calves.%e$t?
rs.:ields>))? @ date%ime/ow
3im temp1rray>? 1s String
temp1rray @ Split>lblBody:at.8aption, EWE?
rs.:ields>)+? @ Cal>temp1rray>*??
rs.:ields>),? @ Cal>c5waist.%e$t?
rs.:ields>)-? @ Cal>c!wrist.%e$t?
rs.7pdate
rs.8lose
0sgBo$ E0easurement of E I member.d I E was successfully addedE, vb<D<nly
B vb.nformation, E/otifcationE
7nload 0e
2nd Sub
#rivate Sub d)bicep=Dey#ress>Dey1scii 1s .nteger?
6(
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub d+thigh=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub d,chest=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub d-calves=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub :orm=9oad>?
option8ore.Calue @ %rue
core#anel.2nabled @ %rue
detailed#anel.2nabled @ :alse
detailed#anel.Back8olor @ IV2*2*2*
0e.8aption @ E0easurementE
dd @ :ormatS>/ow, Emm6dd6yyyyE?
tt @ :ormatS>time, Ehh;mm;ss106#0E?
date%ime/ow @ dd
lbl3ate.8aption @ date%ime/ow
8all databaseconnection
rs.<pen Eselect F from membersE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o While /ot rs.2<:
.f rs.:ields>*? @ member.d %hen
lblmember.d.8aption @ rs.:ields>*?
lblname.8aption @ rs.:ields>)? I E E I rs.:ields>+?
.f rs.:ields>,? @ E0aleE %hen
memberHender @ %rue
2lse
memberHender @ :alse
2nd .f
2$it 3o
2nd .f
rs.0ove/e$t
9oop
rs.8lose
2nd Sub
!*
#rivate Sub :orm=7nload>8ancel 1s .nteger?
.f 0sgBo$>E0easurement will be declinedE, vbGes/o B vbOuestion, E/otifcationE?
@ vbGes %hen
7nload 0e
2nd .f
2nd Sub
#rivate Sub option8ore=8lick>?
core#anel.2nabled @ %rue
detailed#anel.2nabled @ :alse
detailed#anel.Back8olor @ IV2*2*2*
2nd Sub
#rivate Sub option3etailed=8lick>?
core#anel.2nabled @ %rue
detailed#anel.2nabled @ %rue
detailed#anel.Back8olor @ core#anel.Back8olor
2nd Sub
frm0etroStyle0enu
#ublic member.d 1s .nteger
#ublic memberHender 1s Boolean
3im date%ime/ow 1s String
3im dd 1s String
3im tt 1s String
#rivate Sub c)height=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub c+weight=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub c,neck=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub c-hips=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub c5waist=8hange>?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
!)
#rivate Sub c6forearm=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub c!wrist=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub cmd8alculate=8lick>?
lblB0..8aption @ calculateB0.by0etric>Cal>c+weight.%e$t?, Cal>c)height.%e$t??
lblBody:at.8aption @ calculateBody:at>memberHender, Cal>c+weight.%e$t?,
Cal>c5waist.%e$t?, Cal>c!wrist.%e$t?, Cal>c-hips.%e$t?, Cal>c6forearm.%e$t?? I EWE
2nd Sub
#rivate Sub cmd8ancel=8lick>?
.f 0sgBo$>E0easurement will be declinedE, vbGes/o B vbOuestion, E/otifcationE?
@ vbGes %hen
7nload 0e
2nd .f
2nd Sub
#rivate Sub cmdSave=8lick>?
.f c)height.%e$t @ EE 1nd =
c+weight.%e$t @ EE 1nd =
c,neck.%e$t @ EE 1nd =
c-hips.%e$t @ EE 1nd =
c5waist.%e$t @ EE 1nd =
c6forearm.%e$t @ EE 1nd =
c!wrist.%e$t @ EE %hen
0sgBo$ E8ore 0easurement felds are mandatory"E, vb<D<nly B
vb2$clamation, E/otifcationE
2$it Sub
2nd .f
dd @ :ormatS>/ow, Emm6dd6yyyyE?
tt @ :ormatS>time, Ehh;mm;ss106#0E?
date%ime/ow @ dd I E E I tt
8all databaseconnection
rs.<pen Eselect F from progress0emberE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove9ast
2nd .f
rs.1dd/ew
rs.:ields>*? @ Cal>lblmember.d.8aption?
rs.:ields>)? @ Cal>c)height.%e$t?
rs.:ields>+? @ Cal>c+weight.%e$t?
rs.:ields>,? @ Cal>lblB0..8aption?
rs.:ields>-? @ Cal>d)bicep.%e$t?
rs.:ields>5? @ Cal>c-hips.%e$t?
rs.:ields>6? @ Cal>d+thigh.%e$t?
rs.:ields>!? @ Cal>c,neck.%e$t?
!+
rs.:ields>'? @ Cal>c6forearm.%e$t?
rs.:ields>(? @ Cal>d,chest.%e$t?
rs.:ields>)*? @ Cal>d-calves.%e$t?
rs.:ields>))? @ date%ime/ow
3im temp1rray>? 1s String
temp1rray @ Split>lblBody:at.8aption, EWE?
rs.:ields>)+? @ Cal>temp1rray>*??
rs.:ields>),? @ Cal>c5waist.%e$t?
rs.:ields>)-? @ Cal>c!wrist.%e$t?
rs.7pdate
rs.8lose
0sgBo$ E0easurement of E I member.d I E was successfully addedE, vb<D<nly
B vb.nformation, E/otifcationE
7nload 0e
2nd Sub
#rivate Sub d)bicep=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
#rivate Sub d+thigh=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub d,chest=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub d-calves=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
#rivate Sub :orm=9oad>?
option8ore.Calue @ %rue
core#anel.2nabled @ %rue
detailed#anel.2nabled @ :alse
detailed#anel.Back8olor @ IV2*2*2*
0e.8aption @ E0easurementE
dd @ :ormatS>/ow, Emm6dd6yyyyE?
tt @ :ormatS>time, Ehh;mm;ss106#0E?
date%ime/ow @ dd
lbl3ate.8aption @ date%ime/ow
8all databaseconnection
rs.<pen Eselect F from membersE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
!,
3o While /ot rs.2<:
.f rs.:ields>*? @ member.d %hen
lblmember.d.8aption @ rs.:ields>*?
lblname.8aption @ rs.:ields>)? I E E I rs.:ields>+?
.f rs.:ields>,? @ E0aleE %hen
memberHender @ %rue
2lse
memberHender @ :alse
2nd .f
2$it 3o
2nd .f
rs.0ove/e$t
9oop
rs.8lose
2nd Sub
#rivate Sub :orm=7nload>8ancel 1s .nteger?
.f 0sgBo$>E0easurement will be declinedE, vbGes/o B vbOuestion, E/otifcationE?
@ vbGes %hen
7nload 0e
2nd .f
2nd Sub
#rivate Sub option8ore=8lick>?
core#anel.2nabled @ %rue
detailed#anel.2nabled @ :alse
detailed#anel.Back8olor @ IV2*2*2*
2nd Sub
#rivate Sub option3etailed=8lick>?
core#anel.2nabled @ %rue
detailed#anel.2nabled @ %rue

detailed#anel.Back8olor @ core#anel.Back8olor
2nd Sub
frm#ayment :orm;
#ublic member.d 1s .nteger
3im duration 1s .nteger
<ption 2$plicit
#rivate Sub cmd8ancel=8lick>?
8all disconnectdatabase
7nload 0e
2nd Sub
#rivate Sub cmd#ay=8lick>?
rs.<pen Eselect F from payment%ransactionE, con, ad<pen3ynamic,
ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove9ast
2nd .f
rs.1dd/ew
rs.:ields>*?.Calue @ t$tid.%e$t
rs.:ields>)?.Calue @ :ormatS>/ow, Emm6dd6yyyyE? I E E I :ormatS>time,
Ehh;mm;ss106#0E?
!-
rs.:ields>+?.Calue @ Cal>t$t#ayable1mt.8aption?
rs.:ields>,?.Calue @ Cal>lblBillno.8aption?
rs.7pdate
rs.8lose
rs.<pen Eselect F from membersE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o 7ntil rs.2<:
.f rs.:ields>*? @ Cal>t$tid.%e$t? %hen
3im dueS%4 1s String
dueS%4 @ rs.:ields>Edue3ateE?.Calue
rs.:ields>Edue3ateE?.Calue @ add0onth>dueS%4, duration?
rs.7pdate

.f 0sgBo$>E#ayment %ransaction done" E I vb8r9f I E3o you want to print the
receiptE, vbGes/o B vbOuestion, E/otifcationE? @ vbGes %hen
&4eceipt #rint page generation
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
3im rs%emp 1s 13<3B.4ecordset
Set rs%emp @ /ew 13<3B.4ecordset
rs%emp.<pen Eselect F from gym3etailE, con, ad<pen3ynamic,
ad9ock<ptimistic
.f /ot rs%emp.2<: %hen
rs%emp.0ove:irst
2nd .f
3im Mgname 1s String
3im Maddress 1s String
3im Mphone 1s String
3im Mmname 1s String
3im Mp%ype 1s String
3im Mdue3ate 1s String
3im Mdate 1s String

3im MBill/o 1s .nteger
3im M.d 1s .nteger
3im M1mt 1s 3ouble
3o 7ntil rs%emp.2<:
Mgname @ rs%emp.:ields>*?
Maddress @ rs%emp.:ields>)?
Mphone @ rs%emp.:ields>,?
2$it 3o
9oop
Mmname @ %rim>t$tname.%e$t?
Mp%ype @ %rim>t$t#ayment%ype.%e$t?
Mdue3ate @ %rim>rs.:ields>Edue3ateE??
MBill/o @ Cal>lblBillno.8aption?
M.d @ Cal>t$tid.%e$t?
M1mt @ Cal>t$t#ayable1mt.8aption?
!5
8all databaseconnection
3im rs% 1s 13<3B.4ecordset
Set rs% @ /ew 13<3B.4ecordset
rs%.<pen Eselect F from gym3etailE, con, ad<pen3ynamic, ad9ock<ptimistic
Set 4eceipt#.3ataSource @ rs%
4eceipt#.3ata0ember @ rs%.3ata0ember
4eceipt#.Sections>ESection*E?.8ontrols>ElblHym/ameE?.8aption @ Mgname
4eceipt#.Sections>ESection*E?.8ontrols>Elbl1ddressE?.8aption @ Maddress
4eceipt#.Sections>ESection*E?.8ontrols>Elbl#honeE?.8aption @ Mphone
4eceipt#.Sections>ESection)E?.8ontrols>ElblBill/oE?.8aption @ E4eceipt /o ; E
I MBill/o
4eceipt#.Sections>ESection+E?.8ontrols>Elbl0ember/ameE?.8aption @
Mmname
4eceipt#.Sections>ESection+E?.8ontrols>Elbl#lan/ameE?.8aption @ Mp%ype
4eceipt#.Sections>ESection+E?.8ontrols>Elbl3ue3ateE?.8aption @ Mdue3ate
4eceipt#.Sections>ESection+E?.8ontrols>Elbl1mt#aidE?.8aption @ M1mt
4eceipt#.Sections>ESection+E?.8ontrols>Elbl0ember.dE?.8aption @ M.d
4eceipt#.Sections>ESection)E?.8ontrols>Elbl4eceipt3ateE?.8aption @ E4eceipt
3ate ; E I Mdate
4eceipt#.Show
&2/3./H 4282.#% H2/241%.</
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
2nd .f
2$it 3o
2nd .f
rs.0ove/e$t
9oop
rs.8lose
&7nload 0e
2nd Sub
#rivate Sub :orm=9oad>?
8all databaseconnection
&generating billno
rs.<pen Eselect F from payment%ransaction <4324 BG billnoE, con, ad<pen3ynamic,
ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove9ast
2nd .f
.f rs.4ecord8ount @ * %hen
lblBillno.8aption @ E*E
2lse
lblBillno.8aption @ rs.:ields>,? B )
2nd .f
rs.8lose
rs.<pen Eselect F from membership#lanE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
!6
While /ot rs.2<:
t$t#ayment%ype.1dd.tem >rs.:ields>*?.Calue?
rs.0ove/e$t
Wend
t$t#ayment%ype.%e$t @ ESelectE
rs.8lose
rs.<pen ESelect F from membersE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
While /ot rs.2<:
.f member.d @ rs.:ields>*? %hen
t$tid.%e$t @ rs.:ields>*?
t$tname.%e$t @ rs.:ields>)?
rs.8lose
2$it Sub
2nd .f
rs.0ove/e$t
Wend
rs.8lose
&0sgBo$ E7ser could not found"E, vb<D<nly B vb2$clamation, E/otifcationE
2nd Sub
#rivate Sub :orm=7nload>8ancel 1s .nteger?
8all disconnectdatabase
2nd Sub
#rivate Sub t$t#ayment%ype=8lick>?
.f t$t#ayment%ype.%e$t @ E...E %hen
dialog%o1ccess1dmin.Show
2lse
rs.<pen Eselect F from membership#lanE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
While /ot rs.2<:
.f t$t#ayment%ype.%e$t @ rs.:ields>*? %hen
t$t#ayable1mt.8aption @ rs.:ields>+?
duration @ rs.:ields>)?
rs.8lose
2$it Sub
2nd .f
rs.0ove/e$t
Wend
rs.8lose
2nd .f
2nd Sub
frm#rogress :orm;
#ublic member.d 1s .nteger
#ublic fname 1s String
#ublic lname 1s String
!!
#rivate Sub :orm=9oad>?
lbl:name.8aption @ fname
lbl9name.8aption @ lname
lblmember.d.8aption @ member.d
table38.8onnectionString @ E#rovider@0icrosoft.Tet.<923B.-.*U3ata Source@E I
1pp.#ath I EJ3ataJsgsdata.mdbU#ersist Security .nfo@:alseE
table38.8ommand%ype @ ad8md%e$t
table38.4ecordSource @ Eselect F from progress0ember where member.d@E I
member.d
Set table.3ataSource @ table38
2nd Sub
frm4eport :orm;
<ption 2$plicit
3im bill/o 1s .nteger
3im paymentOuery 1s String
3im member.d 1s .nteger
3im member.d) 1s .nteger
#rivate Sub cmd#rint=8lick>?
.f paymentOuery @ EE %hen
2$it Sub
2nd .f
3im sum 1s 3ouble
3im 8ount 1s .nteger
3im g/ame 1s String
3im g1ddress 1s String
3im rec 1s 13<3B.4ecordset
Set rec @ /ew 13<3B.4ecordset
rec.<pen Eselect F from gym3etailE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rec.2<: %hen
rec.0ove:irst
g/ame @ rec.:ields>*?
g1ddress @ rec.:ields>)?
2lse
g/ame @ EE
g1ddress @ EE
2nd .f
rec.8lose
rec.<pen paymentOuery, con, ad<pen3ynamic, ad9ock<ptimistic
8ount @ *
sum @ *
.f /ot rec.2<: %hen
rec.0ove:irst
2nd .f
3o 7ntil rec.2<:
sum @ sum B rec.:ields>+?
8ount @ 8ount B )
rec.0ove/e$t
9oop
Set #ayment#.3ataSource @ rec
#ayment#.3ata0ember @ rs.3ata0ember
!'
#ayment#.Sections>ESection-E?.8ontrols>ElblHym/ameE?.8aption @ g/ame
#ayment#.Sections>ESection-E?.8ontrols>Elbl1ddressE?.8aption @ g1ddress
#ayment#.Sections>ESection5E?.8ontrols>Elbl4ecord8ountE?.8aption @ E%otal
%ransaction ; E I 8ount
#ayment#.Sections>ESection+E?.8ontrols>Elbl4angeE?.8aption @ E4ange ; E I
dt:rom.Calue I E L E I dt%o.Calue
#ayment#.Sections>ESection5E?.8ontrols>Elbl%otal%ransactionE?.8aption @ E%otal ; E
I sum I ErsE
#ayment#.Show
2nd Sub
#rivate Sub cmd#rint3ue=8lick>?
8all databaseconnection
3im gym/ame 1s String
3im gym1ddress 1s String
3im count0 1s .nteger
3im rec0 1s 13<3B.4ecordset
Set rec0 @ /ew 13<3B.4ecordset
rec0.<pen Eselect F from gym3etailE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rec0.2<: %hen
rec0.0ove:irst
gym/ame @ rec0.:ields>*?
gym1ddress @ rec0.:ields>)?
2lse
gym/ame @ EE
gym1ddress @ EE
2nd .f
rec0.8lose
count0 @ count<utdated0embers
Set rec0 @ get<utdated0embers
Set 3ue0embers#.3ataSource @ rec0
3ue0embers#.3ata0ember @ rec0.3ata0ember
3ue0embers#.Sections>ESection-E?.8ontrols>ElblHym/ameE?.8aption @ gym/ame
3ue0embers#.Sections>ESection-E?.8ontrols>Elbl1ddressE?.8aption @ gym1ddress
3ue0embers#.Sections>ESection,E?.8ontrols>Elbl8ountE?.8aption @ count0
3ue0embers#.Show
2nd Sub
#rivate Sub cmd#rint4eceipt=8lick>?
.f bill/o @ L) %hen
0sgBo$ E8hoose a bill to print"E, vb<D<nly B vb2$clamation, E/otifcationE
2$it Sub
2nd .f
&4eceipt #rint page generation FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
3im Mgname 1s String
3im Maddress 1s String
3im Mphone 1s String
3im Mmname 1s String
3im Mp%ype 1s String
3im Mdue3ate 1s String
3im Mdate 1s String
3im MBill/o 1s .nteger
!(
3im M.d 1s .nteger
3im M1mt 1s 3ouble
3im rs%emp 1s 13<3B.4ecordset
Set rs%emp @ /ew 13<3B.4ecordset
rs%emp.<pen Eselect F from gym3etailE, con, ad<pen3ynamic,
ad9ock<ptimistic
.f /ot rs%emp.2<: %hen
rs%emp.0ove:irst
2nd .f
3o 7ntil rs%emp.2<:
Mgname @ rs%emp.:ields>*?
Maddress @ rs%emp.:ields>)?
Mphone @ rs%emp.:ields>,?
2$it 3o
9oop
rs%emp.8lose
rs%emp.<pen Eselect F from payment%ransaction where billno@E I bill/o,
con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs%emp.4ecord8ount @ * %hen
.f /ot rs%emp.2<: %hen
rs%emp.0ove:irst
2nd .f
MBill/o @ Cal>rs%emp.:ields>,??
Mdate @ rs%emp.:ields>)?
M1mt @ Cal>rs%emp.:ields>+??
M.d @ Cal>rs%emp.:ields>*??
2lse
MBill/o @ *
Mdate @ EE
M1mt @ *
M.d @ *
2nd .f
rs%emp.8lose
rs%emp.<pen ESelect F :rom members where member.d@E I M.d, con,
ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs%emp.4ecord8ount @ * %hen
rs%emp.0ove:irst
Mmname @ rs%emp.:ields>)?
Mdue3ate @ rs%emp.:ields>Edue3ateE?
2lse
Mmname @ EE
Mdue3ate @ EE
2nd .f
rs%emp.8lose
rs%emp.<pen ESelect F from membership#lan where amt@E I M1mt, con,
ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs%emp.4ecord8ount @ * %hen
Mp%ype @ rs%emp.:ields>Eplan/ameE?
2lse
Mp%ype @ EE
'*
2nd .f
rs%emp.8lose
3im rs% 1s 13<3B.4ecordset
Set rs% @ /ew 13<3B.4ecordset
rs%.<pen Eselect F from gym3etailE, con, ad<pen3ynamic, ad9ock<ptimistic
Set 4eceipt#.3ataSource @ rs%
4eceipt#.3ata0ember @ rs%.3ata0ember
4eceipt#.Sections>ESection*E?.8ontrols>ElblHym/ameE?.8aption @ Mgname
4eceipt#.Sections>ESection*E?.8ontrols>Elbl1ddressE?.8aption @ Maddress
4eceipt#.Sections>ESection*E?.8ontrols>Elbl#honeE?.8aption @ Mphone
4eceipt#.Sections>ESection)E?.8ontrols>ElblBill/oE?.8aption @ E4eceipt /o ; E
I MBill/o
4eceipt#.Sections>ESection+E?.8ontrols>Elbl0ember/ameE?.8aption @
Mmname
4eceipt#.Sections>ESection+E?.8ontrols>Elbl#lan/ameE?.8aption @ Mp%ype
4eceipt#.Sections>ESection+E?.8ontrols>Elbl3ue3ateE?.8aption @ Mdue3ate
4eceipt#.Sections>ESection+E?.8ontrols>Elbl1mt#aidE?.8aption @ M1mt
4eceipt#.Sections>ESection+E?.8ontrols>Elbl0ember.dE?.8aption @ M.d
4eceipt#.Sections>ESection)E?.8ontrols>Elbl4eceipt3ateE?.8aption @ E4eceipt
3ate ; E I Mdate
4eceipt#.Show
&2/3./H 4282.#% H2/241%.</
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
2nd Sub
#rivate Sub cmd#rofle=8lick>?
.f member.d @ L) %hen
0sgBo$ ESelect a member .3 to see the profle"E, vb<D<nly B vb2$clamation,
EWarningE
2$it Sub
2nd .f
frm0ember.load%ype @ +
frm0ember.member.d @ member.d
frm0ember.Show
2nd Sub
#rivate Sub cmdShow#rofle=8lick>?
.f member.d) @ L) %hen
0sgBo$ ESelect a member .3 to see the profle"E, vb<D<nly B vb2$clamation,
EWarningE
2$it Sub
2nd .f

frm0ember.load%ype @ +
frm0ember.member.d @ member.d)
frm0ember.Show
2nd Sub
#rivate Sub comb.ncome=8lick>?
3im arr>? 1s String
arr @ Split>comb.ncome.%e$t, E E?
lbl.ncomeBy4ange.8aption @ comb.ncome.%e$t I E .ncome ; E I
get.ncomeBy4ange>Cal>arr>)???
')
2nd Sub
#rivate Sub dt:rom=8hange>?
payment%ransaction.8lear:ields
payment%ransaction38.8onnectionString @
E#rovider@0icrosoft.Tet.<923B.-.*U3ata Source@E I 1pp.#ath I
EJ3ataJsgsdata.mdbU#ersist Security .nfo@:alseE
payment%ransaction38.8ommand%ype @ ad8md%e$t
payment%ransaction38.4ecordSource @ ES2928% F :4<0 payment%ransaction
where date between YE I dt:rom.Calue I EY and YE I dt%o.Calue I EYE
paymentOuery @ ES2928% F :4<0 payment%ransaction where date between YE I
dt:rom.Calue I EY and YE I dt%o.Calue I EYE
Set payment%ransaction.3ataSource @ payment%ransaction38
payment%ransaction38.4efresh
payment%ransaction.4efresh
2nd Sub
#rivate Sub dt%o=8hange>?
payment%ransaction.8lear:ields
payment%ransaction38.8onnectionString @
E#rovider@0icrosoft.Tet.<923B.-.*U3ata Source@E I 1pp.#ath I
EJ3ataJsgsdata.mdbU#ersist Security .nfo@:alseE
payment%ransaction38.8ommand%ype @ ad8md%e$t
payment%ransaction38.4ecordSource @ ES2928% F :4<0 payment%ransaction
where date between YE I dt:rom.Calue I EY and YE I dt%o.Calue I EYE
paymentOuery @ ES2928% F :4<0 payment%ransaction where date between YE I
dt:rom.Calue I EY and YE I dt%o.Calue I EYE
Set payment%ransaction.3ataSource @ payment%ransaction38
payment%ransaction38.4efresh
payment%ransaction.4efresh
2nd Sub
#rivate Sub :orm=9oad>?
member.d @ L)
member.d) @ L)
bill/o @ L)
paymentOuery @ Eselect F from payment%ransactionE
comb.ncome.1dd.tem E9ast ) monthE
comb.ncome.1dd.tem E9ast + monthE
comb.ncome.1dd.tem E9ast , monthE
comb.ncome.1dd.tem E9ast - monthE
comb.ncome.1dd.tem E9ast 5 monthE
comb.ncome.1dd.tem E9ast 6 monthE
comb.ncome.1dd.tem E9ast ! monthE
comb.ncome.1dd.tem E9ast ' monthE
comb.ncome.1dd.tem E9ast ( monthE
comb.ncome.1dd.tem E9ast )* monthE
comb.ncome.1dd.tem E9ast )) monthE
comb.ncome.1dd.tem E9ast )+ monthE
comb.ncome.9ist.nde$ @ *
3im arr>? 1s String
arr @ Split>comb.ncome.%e$t, E E?
3im c0embers 1s .nteger
'+
c0embers @ count0embers
lbl%otal0embers.8aption @ E%otal 0embers ; E I c0embers
lbl%otal.ncome.8aption @ E%otal .ncome ; E I get.ncome I ErsE
lbl.ncomeBy4ange.8aption @ E9ast 0onth .ncome ; E I
get.ncomeBy4ange>Cal>arr>)??? I ErsE
3im male 1s .nteger, female 1s .nteger
3im mperc 1s 3ouble, fperc 1s 3ouble
male @ count0ale0embers
female @ count:emale0embers
mperc @ male 6 c0embers F )**
fperc @ female 6 c0embers F )**
lblgender0count.8aption @ E0ale E I male I E and E I mperc I EWE
lblgender:count.8aption @ E:emale E I female I E and E I fperc I EWE
payment%ransaction38.8onnectionString @ E#rovider@0icrosoft.Tet.<923B.-.*U3ata
Source@E I 1pp.#ath I EJ3ataJsgsdata.mdbU#ersist Security .nfo@:alseE
payment%ransaction38.8ommand%ype @ ad8md%e$t
payment%ransaction38.4ecordSource @ ES2928% F :4<0 payment%ransactionE
Set payment%ransaction.3ataSource @ payment%ransaction38
Set <utdated0embers.3ataSource @ get<utdated0embers
<utdated0embers.8olumns>*?.Width @ -**
<utdated0embers.8olumns>)?.Width @ )***
<utdated0embers.8olumns>+?.Width @ )!**
payment%ransaction.8olumns>)?.Width @ +,**
2nd Sub
#rivate Sub lbl8ountHender0embers=8lick>?
2nd Sub
#rivate Sub payment%ransaction=8lick>?
bill/o @ payment%ransaction.8olumns>,?
member.d @ Cal>payment%ransaction.8olumns>)??
2nd Sub
#rivate Sub t$tSearchByBillno=8hange>?
.f t$tSearchByBillno.%e$t @ EE %hen
payment%ransaction.8lear:ields
payment%ransaction38.8onnectionString @
E#rovider@0icrosoft.Tet.<923B.-.*U3ata Source@E I 1pp.#ath I
EJ3ataJsgsdata.mdbU#ersist Security .nfo@:alseE
payment%ransaction38.8ommand%ype @ ad8md%e$t
payment%ransaction38.4ecordSource @ ES2928% F :4<0 payment%ransactionE
paymentOuery @ ES2928% F :4<0 payment%ransactionE
Set payment%ransaction.3ataSource @ payment%ransaction38
payment%ransaction38.4efresh
payment%ransaction.4efresh
2$it Sub
2nd .f
payment%ransaction.8lear:ields
payment%ransaction38.8onnectionString @
E#rovider@0icrosoft.Tet.<923B.-.*U3ata Source@E I 1pp.#ath I
EJ3ataJsgsdata.mdbU#ersist Security .nfo@:alseE
payment%ransaction38.8ommand%ype @ ad8md%e$t
',
payment%ransaction38.4ecordSource @ ES2928% F :4<0 payment%ransaction
where billno like &E I Cal>t$tSearchByBillno.%e$t? I EW&E
paymentOuery @ ES2928% F :4<0 payment%ransaction where billno like &E I
Cal>t$tSearchByBillno.%e$t? I EW&E
Set payment%ransaction.3ataSource @ payment%ransaction38
payment%ransaction38.4efresh
payment%ransaction.4efresh
2nd Sub
#rivate Sub t$tSearchByBillno=Dey#ress>Dey1scii 1s .nteger?
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' %hen
Dey1scii @ *
2nd .f
2nd Sub
frmSearch :orm;
#ublic load0easurement 1s Boolean
#ublic loadSearch/profle 1s Boolean
#ublic load#ayment 1s Boolean
#ublic loadBody#rogress 1s Boolean
<ption 2$plicit
#rivate Sub cmdSelect=8lick>?
3im member.d 1s .nteger
3im fname 1s String
3im lname 1s String
3im gender 1s Boolean
rs.<pen ESelect F from membersE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
.f opt4ollno %hen
3o 7ntil rs.2<:
.f rs.:ields>*? @ Cal>comb0ember.%e$t? %hen
member.d @ rs.:ields>*?
fname @ rs.:ields>)?
lname @ rs.:ields>+?
.f rs.:ields>,? @ E0aleE %hen
gender @ %rue
2lse
gender @ :alse
2nd .f
2$it 3o
2nd .f
rs.0ove/e$t
9oop
2lse.f opt:name %hen
3o 7ntil rs.2<:
.f rs.:ields>)? @ %rim>comb0ember.%e$t? %hen
member.d @ rs.:ields>*?
fname @ rs.:ields>)?
lname @ rs.:ields>+?
.f rs.:ields>,? @ E0aleE %hen
'-
gender @ %rue
2lse
gender @ :alse
2nd .f
2$it 3o
2nd .f
rs.0ove/e$t
9oop
2lse
3o 7ntil rs.2<:
.f rs.:ields>+? @ %rim>comb0ember.%e$t? %hen
member.d @ rs.:ields>*?
fname @ rs.:ields>)?
lname @ rs.:ields>+?
.f rs.:ields>,? @ E0aleE %hen
gender @ %rue
2lse
gender @ :alse
2nd .f
2$it 3o
2nd .f
rs.0ove/e$t
9oop

2nd .f
rs.8lose
&fetching of user data fnished
&FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
.f loadBody#rogress %hen
frm#rogress.member.d @ member.d
frm#rogress.fname @ fname
frm#rogress.lname @ lname
frm#rogress.Show
loadBody#rogress @ :alse
7nload 0e
2lse.f load0easurement %hen
frm0ember0easurement.member.d @ member.d
frm0ember0easurement.Show
load0easurement @ :alse
7nload 0e
2lse.f load#ayment %hen
frm#ayment.member.d @ member.d
frm#ayment.Show
load#ayment @ :alse
7nload 0e
2lse.f loadSearch/profle %hen
frm0ember.load%ype @ +
frm0ember.member.d @ member.d
frm0ember.Show
loadSearch/profle @ :alse
'5
7nload 0e
2lse
0sgBo$ E#rofle has not loaded"E, vb<D<nly B vb2$clamation, E/otifcationE
2nd .f
2nd Sub
#rivate Sub comb0ember=8hange>?
1uto%ype8ombo8hange comb0ember
2nd Sub
#rivate Sub comb0ember=Hot:ocus>?
gstr1%83B%able/ame @ EmembersE
.f opt4ollno.Calue %hen
gstr1%83B:ield/ame @ Emember.dE
2lse.f opt:name.Calue %hen
gstr1%83B:ield/ame @ EfrstnameE
2lse
gstr1%83B:ield/ame @ ElastnameE
2nd .f
gblnHet1ll3ata @ :alse
gbln3rop3own<n:ocus @ ..f>%rue, %rue, :alse?
1uto%ype8omboHot:ocus comb0ember
2nd Sub
#rivate Sub comb0ember=Dey3own>Dey8ode 1s .nteger, Shift 1s .nteger?
1uto%ype8omboDey3own comb0ember, Dey8ode, Shift
2nd Sub
#rivate Sub comb0ember=Dey#ress>Dey1scii 1s .nteger?
.f opt4ollno %hen
.f /ot 8hr>Dey1scii? 9ike EP*L(QE 1nd Dey1scii NA ' 1nd Dey1scii NA -5 1nd
Dey1scii NA -! %hen
Dey1scii @ *
2nd .f
2nd .f
1uto%ype8omboDey#ress 0e, comb0ember, Dey1scii
2nd Sub
#rivate Sub comb0ember=9ost:ocus>?
1uto%ype8ombo9ost:ocus comb0ember
2nd Sub
#rivate Sub :orm=9oad>?
8all databaseconnection
8all combSearch
2nd Sub
8alculation0odule 0odule;
#ublic :unction calculateB0.by2nglish>weight 1s 3ouble, Veight 1s 3ouble?

3im result 1s 3ouble
result @ >weight 6 >Veight F Veight?? F !*,
calculateB0.by2nglish @ 4ound>result, +?
2nd :unction
#ublic :unction calculateB0.by0etric>weight 1s 3ouble, Veight 1s 3ouble?
3im result 1s 3ouble
result @ >weight 6 >Veight F Veight??
'6
calculateB0.by0etric @ 4ound>result, +?
2nd :unction
#ublic :unction calculateBody:at>gender 1s Boolean, weight 1s 3ouble, waist 1s
3ouble, wrist 1s 3ouble, hips 1s 3ouble, forearm 1s 3ouble? 1s 3ouble
3im f), f+, f,, f-, f5, lbm, bfw, result 1s 3ouble
.f gender %hen
&male
f) @ >weight F ).*'+? B (-.-+
f+ @ >waist F -.)5?
lbm @ f) L f+
bfw @ weight L lbm
result @ >bfw F )**? 6 weight
calculateBody:at @ 4ound>result, +?
2lse
&female

f) @ >weight F *.!,+? B '.('!
f+ @ wrist 6 ,.)-
f, @ waist F *.)5!
f- @ hips F *.+-(
f5 @ forearm F *.-,-
lbm @ f) B f+ L f, L f- B f5
bfw @ weight L lbm
result @ >bfw F )**? 6 weight
calculateBody:at @ 4ound>result, +?
2nd .f
2nd :unction
custom3ialog0odule 0odule ;
#ublic trigger 1s Boolean
#ublic answerGes/o 1s Boolean
#ublic counter 1s 9ong
Sub 8enter8hild>#arent 1s :orm, 8hild 1s :orm?
3im i%op 1s .nteger
3im i9eft 1s .nteger
.f #arent.WindowState NA vb/ormal %hen
2$it Sub
2lse
i%op @ >>#arent.Veight L 8hild.Veight? J +?
&i9eft @ >>#arent.Width L 8hild.Width? J +?
i9eft @ >>#arent.ScaleWidth L 8hild.ScaleWidth? J +?
8hild.0ove i9eft, i%op
2nd .f
2nd Sub
#ublic :unction help3lg>msg 1s String?
3ialogVelp.lblBody%e$t @ msg
3ialogVelp.Show
2nd :unction
#ublic :unction notifcation3lg>msg 1s String? 1s Boolean
3ialog/otifcation.lblBody%e$t @ msg
'!
3ialog/otifcation.Show
notifcation3lg @ answerGes/o
2nd :unction
:unction Het:ile2$tension>ByCal :ile/ame 1s String? 1s String
3im . 1s 9ong
:or . @ 9en>:ile/ame? %o ) Step L)
Select 8ase m.dS>:ile/ame, ., )?
8ase E.E
Het:ile2$tension @ m.dS>:ile/ame, . B )?
2$it :or
8ase E;E, EJE
2$it :or
2nd Select
/e$t
2nd :unction
database0odule 0odule;
#ublic bar/ame 1s String
#ublic database#ath 1s String
#ublic con 1s /ew 13<3B.8onnection
#ublic rs 1s /ew 13<3B.4ecordset
#ublic rs%emp 1s /ew 13<3B.4ecordset
#ublic gob58md 1s 13<3B.8ommand
#ublic Sub databaseconnection>?
.f /ot con.State @ adState<pen %hen
con.#rovider @ E0icrosoft.Tet.<923B.-.*E
con.<pen 1pp.#ath I EJ3ataJsgsdata.mdbE
2nd .f
2nd Sub
#ublic Sub disconnectdatabase>?
.f con.State @ adState<pen %hen
con.8lose
2nd .f
2nd Sub
:unction :ile2$ists>:ile/ame 1s String? 1s Boolean
<n 2rror Ho%o 2rrorVandler
:ile2$ists @ >Het1ttr>:ile/ame? 1nd vb3irectory? @ *
2rrorVandler;
:ile2$ists @ :alse
2nd :unction
#ublic Sub combSearch>?
Set gob58md @ /ew 13<3B.8ommand
Set gob58md.1ctive8onnection @ con
gob58md.8ommand%ype @ ad8md%e$t
2nd Sub
date%ime0odule 0odule;
#ublic :unction 8urrent3ate>? 1s String
3im sdate 1s 3ate
sdate @ 3ateCalue>/ow?
''
8urrent3ate @ sdate
2nd :unction
#ublic :unction 8urrent%ime>? 1s String
3im time 1s 3ate
time @ %imeCalue>/ow?
8urrent%ime @ time
2nd :unction
#ublic :unction 8urrent3ay%oString>? 1s String
3im day 1s 3ate
day @ 3ate#art>EwE, /ow?
.f day @ ) %hen
8urrent3ay%oString @ ESundayE
2lse.f day @ + %hen
8urrent3ay%oString @ E0ondayE
2lse.f day @ , %hen
8urrent3ay%oString @ E%uesdayE
2lse.f day @ - %hen
8urrent3ay%oString @ EWednesdayE
2lse.f day @ 5 %hen
8urrent3ay%oString @ E%hursdayE
2lse.f day @ 6 %hen
8urrent3ay%oString @ E:ridayE
2lse.f day @ ! %hen
8urrent3ay%oString @ ESaturdayE
2nd .f
2nd :unction
#ublic :unction split/get3ate>datestr 1s String? 1s String
3im temp1rray>? 1s String
temp1rray @ Split>datestr, E E?
split/get3ate @ temp1rray>*?
2nd :unction
#ublic :unction split/get%ime>datestr 1s String? 1s String
3im temp1rray>? 1s String
temp1rray @ Split>datestr, E E?
split/get%ime @ %rim>temp1rray>)??
2nd :unction
#ublic :unction get3ay>datestr 1s String? 1s .nteger
&4eturns trimmed day of dateS%4
3im temp1rray>? 1s String
temp1rray @ Split>datestr, E6E?
get3ay @ temp1rray>)?
2nd :unction
#ublic :unction get0onth>datestr 1s String? 1s .nteger
&returns trimmed month of dateS%4
3im temp1rray>? 1s String
temp1rray @ Split>datestr, E6E?
get0onth @ temp1rray>*?
2nd :unction
#ublic :unction getGear>datestr 1s String? 1s .nteger
&returns trimmed year of dateS%4
'(
3im temp1rray>? 1s String
temp1rray @ Split>datestr, E6E?
getGear @ temp1rray>+?
2nd :unction
#ublic :unction add0onth>base3ate 1s String, months 1s .nteger? 1s String
3im yyyy 1s .nteger
3im mm 1s .nteger
3im dd 1s .nteger
yyyy @ getGear>base3ate?
mm @ get0onth>base3ate?
dd @ get3ay>base3ate?
mm @ mm B months
.f mm A )+ %hen
yyyy @ yyyy B >mm 6 )+?
mm @ mm 0od )+
2nd .f
add0onth @ mm I E6E I dd I E6E I yyyy
2nd :unction
fullScreen0odule 0odule;
3im is:ullscreen 1s Boolean
<ption 2$plicit
#ublic %ype 428%
9eft 1s 9ong
%op 1s 9ong
4ight 1s 9ong
Bottom 1s 9ong
2nd %ype
#ublic 8onst HW9=S%G92 @ >L)6?
#ublic 8onst WS=81#%.</ @ IV8*****
#ublic 8onst WS=01X.0.Z2B<X @ IV)****
#ublic 8onst WS=0./.0.Z2B<X @ IV+****
#ublic 8onst WS=SGS02/7 @ IV'****
&window position constants
#ublic 8onst SW#=SV<WW./3<W @ IV-*
#ublic 8onst SW#=V.32W./3<W @ IV'*
#ublic 8onst SW#=:41028V1/H23 @ IV+*
#ublic 8onst SW#=/<18%.C1%2 @ IV)*
#ublic 8onst SW#=/<8<#GB.%S @ IV)**
#ublic 8onst SW#=/<0<C2 @ IV+
#ublic 8onst SW#=/<<W/24Z<4324 @ IV+**
#ublic 8onst SW#=/<42341W @ IV'
#ublic 8onst SW#=/<42#<S.%.</ @ SW#=/<<W/24Z<4324
#ublic 8onst SW#=/<S.Z2 @ IV)
#ublic 8onst SW#=/<Z<4324 @ IV-
(*
#ublic 8onst SW#=341W:4102 @ SW#=:41028V1/H23
#ublic 8onst VW/3=/<%<#0<S% @ L+
#ublic 8onst S0=8XS8422/ @ *
#ublic 8onst S0=8GS8422/ @ )
#ublic 8onst VW/3=%<# @ *
&1#. declarations
#ublic 3eclare :unction HetWindow4ect 9ib E7ser,+E >ByCal hWnd 1s 9ong, lp4ect
1s 428%? 1s 9ong
#ublic 3eclare :unction SetWindow#os 9ib E7ser,+E >ByCal hWnd 1s 9ong, ByCal
hWnd.nsert1fter 1s 9ong, ByCal X 1s 9ong, ByCal G 1s 9ong, ByCal 8$ 1s 9ong, ByCal
8y 1s 9ong, ByCal w:lags 1s 9ong? 1s 9ong
#ublic 3eclare :unction SetWindow9ong 9ib E7ser,+E 1lias ESetWindow9ong1E
>ByCal hWnd 1s 9ong, ByCal n.nde$ 1s 9ong, ByCal dw/ew9ong 1s 9ong? 1s 9ong
#ublic 3eclare :unction HetWindow9ong 9ib E7ser,+E 1lias EHetWindow9ong1E
>ByCal hWnd 1s 9ong, ByCal n.nde$ 1s 9ong? 1s 9ong
#ublic 3eclare :unction HetSystem0etrics 9ib E7ser,+E >ByCal n.nde$ 1s 9ong? 1s
9ong
#ublic dX 1s 9ong
#ublic dG 1s 9ong
#ublic d9 1s 9ong
#ublic d% 1s 9ong
#ublic :unction set:ullScreen>frm 1s :orm?
3im 8$ 1s 9ong
3im 8y 1s 9ong
3im 4etCal 1s 9ong
&4ecord the current siMe and position of the window
dX @ frm.Width
dG @ frm.Veight
d9 @ frm.9eft
d% @ frm.%op
& 3etermine if screen is already ma$imiMed.
.f frm.WindowState @ vb0a$imiMed %hen
& Set window to normal siMe
frm.WindowState @ vb/ormal
2nd .f
&3isable the view of the %itle Bar
Show%itleBar :alse, frm
& Het full screen width.
8$ @ HetSystem0etrics>S0=8XS8422/?
& Het full screen height.
8y @ HetSystem0etrics>S0=8GS8422/?
& 8all 1#. to set new siMe of window.
4etCal @ SetWindow#os>frm.hWnd, VW/3=%<#, *, *, 8$, 8y,
SW#=SV<WW./3<W?
is:ullscreen @ %rue
2nd :unction
#ublic :unction unset:ullscreen>frm 1s :orm?
&2nable the %itle Bar 1gain
Show%itleBar %rue, frm
()
&4estore the earlier window siMe and position
frm.WindowState @ vb/ormal
frm.Width @ dX
frm.Veight @ dG
frm.9eft @ d9
frm.%op @ d%
frm.4efresh
is:ullscreen @ :alse
2nd :unction
#rivate :unction Show%itleBar>ByCal bState 1s Boolean, frm 1s :orm?
3im lStyle 1s 9ong
3im t4 1s 428%
<n 2rror 4esume /e$t
&get the window&s position
8all HetWindow4ect>frm.hWnd, t4?
&should the titlebar style be not visible
lStyle @ HetWindow9ong>frm.hWnd, HW9=S%G92?
.f >bState? %hen
&set the style&s for the current window >if titlebar active?
frm.8aption @ frm.%ag
.f frm.8ontrolBo$ %hen lStyle @ lStyle <r WS=SGS02/7
.f frm.0a$Button %hen lStyle @ lStyle <r WS=01X.0.Z2B<X
.f frm.0inButton %hen lStyle @ lStyle <r WS=0./.0.Z2B<X
.f frm.8aption NA EE %hen lStyle @ lStyle <r WS=81#%.</
2lse
&titlebar is invisible
&set the current caption to the forms tag
frm.%ag @ frm.8aption
&remove the caption >otherwise the titlebar will not hide?
frm.8aption @ vb/ullString
lStyle @ lStyle 1nd /ot WS=SGS02/7
lStyle @ lStyle 1nd /ot WS=01X.0.Z2B<X
lStyle @ lStyle 1nd /ot WS=0./.0.Z2B<X
lStyle @ lStyle 1nd /ot WS=81#%.</
2nd .f
8all SetWindow9ong>frm.hWnd, HW9=S%G92, lStyle?
&change the window style maintaining current siMes
8all SetWindow#os>frm.hWnd, *, t4.9eft, t4.%op, t4.4ight L t4.9eft, t4.Bottom L
t4.%op, SW#=/<42#<S.%.</ <r SW#=/<Z<4324 <r SW#=:41028V1/H23?
frm.4efresh
&fre resiMe code if any
8all :orm=4esiMe
2nd :unction
#rivate Sub :orm=4esiMe>?
2nd Sub
auto%ype8ombo 0odule
<ption 2$plicit
&FFF /<%2; %he calling form should use this set of events,
&FFF replacing E8ombo)E with the name of the combobo$.
(+
&#rivate Sub 8ombo)=Hot:ocus>?
& 1uto%ype8omboHot:ocus 8ombo)
&2nd Sub
&#rivate Sub 8ombo)=Dey3own>Dey8ode 1s .nteger, Shift 1s .nteger?
& 1uto%ype8omboDey3own 8ombo), Dey8ode, Shift
&2nd Sub
&#rivate Sub 8ombo)=Dey#ress>Dey1scii 1s .nteger?
& 1uto%ype8omboDey#ress 0e, 8ombo), Dey1scii
&2nd Sub
&#rivate Sub 8ombo)=8hange>?
& 1uto%ype8ombo8hange 8ombo)
&2nd Sub
&#rivate Sub 8ombo)=9ost:ocus>?
& 1uto%ype8ombo9ost:ocus 8ombo)
&2nd Sub
#ublic gstr1%83B%able/ame 1s String
#ublic gstr1%83B:ield/ame 1s String
#ublic gblnHet1ll3ata 1s Boolean & true @ get all entries, false @ go by )st
letter
#ublic gbln3rop3own<n:ocus 1s Boolean
#rivate 8onst 8B=:./3S%4./H 1s 9ong @ IV)-8
#rivate 8onst 8B=SV<W34<#3<W/ 1s 9ong @ IV)-:
#rivate 8onst 9B=:./3S%4./H 1s 9ong @ IV)':
#rivate 8onst 8B=244 1s 9ong @ >L)?
#rivate 8onst 8B=H2%.%20V2.HV% 1s 9ong @ IV)5-
#rivate 8onst 8B=S2%34<##23W.3%V 1s 9ong @ IV)6*
#rivate %ype #<./%1#.
X 1s 9ong
G 1s 9ong
2nd %ype
#rivate %ype 428%
9eft 1s 9ong
%op 1s 9ong
4ight 1s 9ong
Bottom 1s 9ong
2nd %ype
#rivate 3eclare :unction Send0essage 9ib E7ser,+E 1lias ESend0essage1E >ByCal
hWnd 1s 9ong, ByCal w0sg 1s 9ong, ByCal w#aram 1s 9ong, l#aram 1s 1ny? 1s 9ong
#rivate 3eclare :unction 0oveWindow 9ib E7ser,+E >ByCal hWnd 1s 9ong, ByCal X
1s 9ong, ByCal G 1s 9ong, ByCal nWidth 1s 9ong, ByCal nVeight 1s 9ong, ByCal
b4epaint 1s 9ong? 1s 9ong
#rivate 3eclare :unction Screen%o8lient 9ib E7ser,+E >ByCal hWnd 1s 9ong, lp#oint
1s #<./%1#.? 1s 9ong
#rivate 3eclare :unction HetWindow4ect 9ib E7ser,+E >ByCal hWnd 1s 9ong, lp4ect
1s 428%? 1s 9ong
#rivate gbln1%8.gnore%e$t8hange 1s Boolean
#rivate gbln1%8%e$t3eleted 1s Boolean
#rivate gint1%8SelStart 1s .nteger
(,
#rivate gint1%8Sel9en 1s .nteger
&LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
#ublic Sub 1uto%ype8omboHot:ocus>pob58ombo 1s 8omboBo$?
&LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
& Select e$isting te$t on entry to the combo bo$
pob58ombo.SelStart @ *
pob58ombo.Sel9ength @ 9en>pob58ombo.%e$t?
& if currently populated, drop it down
.f pob58ombo.9ist8ount A * 1nd gbln3rop3own<n:ocus %hen
Send0essage pob58ombo.hWnd, 8B=SV<W34<#3<W/, ), ByCal *I
2nd .f
2nd Sub
&LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
#ublic Sub 1uto%ype8omboDey3own>pob58ombo 1s 8omboBo$, =
Dey8ode 1s .nteger, =
Shift 1s .nteger?
&LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
& .f the full te$t is selected and the user presses a letter or number,
& the selected te$t should be replaced
.f pob58ombo.Sel%e$t @ pob58ombo.%e$t =
1nd >>Dey8ode A@ vbDey1 1nd Dey8ode N@ vbDeyZ? <r =
>Dey8ode A@ vbDey* 1nd Dey8ode N@ vbDey(?? =
%hen
pob58ombo.%e$t @ EE
gbln1%8%e$t3eleted @ :alse
pob58ombo.4efresh
2$it Sub
2nd .f
& .f a user presses the E3eleteE key, then the selected te$t
& is removed.
.f Dey8ode @ vbDey3elete 1nd pob58ombo.Sel%e$t NA EE %hen
& 0ake sure that the te$t is not automatically reLentered
& as soon as it is deleted
gbln1%8.gnore%e$t8hange @ %rue
gint1%8SelStart @ pob58ombo.SelStart B )
gint1%8Sel9en @ pob58ombo.Sel9ength
pob58ombo.Sel%e$t @ EE
Dey8ode @ *
gbln1%8%e$t3eleted @ %rue
2lse
gbln1%8%e$t3eleted @ :alse
2nd .f
2nd Sub
&LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
#ublic Sub 1uto%ype8omboDey#ress>pob5:orm 1s :orm, =
pob58ombo 1s 8omboBo$, =
Dey1scii 1s .nteger?
&LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
& .f a user presses the EBackspaceE key, then the selected te$t
(-
& is removed. 1utosearch is not reLperformed, as that would only
& put it straight back again.
3im ob58tl 1s 8ontrol
.f 9en>pob58ombo.%e$t? @ * %hen
gbln1%8.gnore%e$t8hange @ :alse
9oad8ombo pob58ombo, ..f>gblnHet1ll3ata, EE, 8hrS>Dey1scii??
.f pob58ombo.9ist8ount A * %hen
Set3rop3ownVeight pob5:orm, pob58ombo, ..f>pob58ombo.9ist8ount N ', =
pob58ombo.9ist8ount, '?
2nd .f
pob5:orm.4efresh
<n 2rror 4esume /e$t
:or 2ach ob58tl .n pob5:orm.8ontrols
ob58tl.4efresh
/e$t
2nd .f
.f pob58ombo.9ist8ount A * %hen
Set3rop3ownWidth pob58ombo
Send0essage pob58ombo.hWnd, 8B=SV<W34<#3<W/, ), ByCal *I
2nd .f
.f Dey1scii @ ' %hen
gbln1%8.gnore%e$t8hange @ %rue
.f 9en>pob58ombo.Sel%e$t? A * %hen
pob58ombo.Sel%e$t @ EE
Dey1scii @ *
2nd .f
2nd .f
&&if user presses enter, select the listinde$
&.f Dey1scii @ ), %hen
& pob58ombo.9ist.nde$ @ Send0essage>pob58ombo.hwnd, =
& 8B=:./3S%4./H, =
& L), =
& ByCal 8Str>pob58ombo.%e$t??
&2nd .f
2nd Sub
&LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
#ublic Sub 1uto%ype8ombo8hange>pob58ombo 1s 8omboBo$?
&LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL

3im . 1s .nteger
3im l 1s 9ong
3im str/ew%e$t 1s String
& 8heck to see if a search is reKuired.
.f gbln1%8%e$t3eleted %hen 2$it Sub
.f /ot gbln1%8.gnore%e$t8hange 1nd pob58ombo.9ist8ount A * %hen
l @ Send0essage>pob58ombo.hWnd, =
8B=:./3S%4./H, =
L), =
ByCal 8Str>pob58ombo.%e$t??
str/ew%e$t @ pob58ombo.list>l?
(5
.f 9en>pob58ombo.%e$t? NA 9en>str/ew%e$t? %hen
& #artial match found
& 1void recursively entering this event
gbln1%8.gnore%e$t8hange @ %rue
. @ 9en>pob58ombo.%e$t?
& 1ttach the full te$t from the list to what has already been entered.
& %his techniKue preserves the case entered by the user.
pob58ombo.%e$t @ pob58ombo.%e$t I m.dS>str/ew%e$t, . B )?
& Select the te$t that is autoLentered
pob58ombo.SelStart @ .
pob58ombo.Sel9ength @ 9en>m.dS>str/ew%e$t, . B )??
2nd .f
2lse
& %he .gnore%e$t8hange :lag is only eRective for one 8hange event.
gbln1%8.gnore%e$t8hange @ :alse
2nd .f
2nd Sub
&LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
#ublic Sub 1uto%ype8ombo9ost:ocus>pob58ombo 1s 8omboBo$?
&LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
<n 2rror 4esume /e$t
.f gbln1%8%e$t3eleted %hen
.f 9en>pob58ombo.%e$t? A * %hen
pob58ombo.%e$t @ 9eftS>pob58ombo.%e$t, gint1%8SelStart L )? I =
m.dS>pob58ombo.%e$t, gint1%8SelStart B gint1%8Sel9en?
pob58ombo.1dd.tem pob58ombo.%e$t
2nd .f
2nd .f
2nd Sub
&LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
#ublic Sub 9oad8ombo>pob58ombo 1s 8omboBo$, pstr9etter 1s String?
&LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
3im ob54st3rop3own3ata 1s 13<3B.4ecordset
3im strSO9 1s String
3im strWhere8lause 1s String
3im strWhere<r1nd 1s String
.f pstr9etter @ EE %hen
strWhere8lause @ EE
strWhere<r1nd @ E WV242 E
2lse
strWhere<r1nd @ E 1/3 E
.f 78aseS>pstr9etter? A@ E1E 1nd 78aseS>pstr9etter? N@ EZE %hen
strWhere8lause @ E WV242 E I gstr1%83B:ield/ame I E 9.D2 &E I pstr9etter
I EW&E
2lse
strWhere8lause @ E WV242 E I gstr1%83B:ield/ame I E 9.D2 &P"1LZQW&E
2nd .f
2nd .f
strSO9 @ EE
(6
strSO9 @ strSO9 I ES2928% E I gstr1%83B:ield/ame
strSO9 @ strSO9 I E :4<0 E I gstr1%83B%able/ame
strSO9 @ strSO9 I strWhere8lause
strSO9 @ strSO9 I strWhere<r1nd I gstr1%83B:ield/ame I E .S /<% /799E
strSO9 @ strSO9 I E 1/3 %4.0>E I gstr1%83B:ield/ame I E? NA &&E
strSO9 @ strSO9 I E <4324 BG E I gstr1%83B:ield/ame
gob58md.8ommand%e$t @ strSO9
Set ob54st3rop3own3ata @ gob58md.2$ecute
With pob58ombo
.clear
3o 7ntil ob54st3rop3own3ata.2<:
.1dd.tem ob54st3rop3own3ata.:ields>gstr1%83B:ield/ame?
ob54st3rop3own3ata.0ove/e$t
9oop
2nd With

ob54st3rop3own3ata.8lose
Set ob54st3rop3own3ata @ /othing
2nd Sub
&LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
#ublic Sub Set3rop3ownVeight>pob5:orm 1s :orm, =
pob58ombo 1s 8omboBo$, =
plng/um.tems%o3isplay 1s 9ong?
&LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
3im pt 1s #<./%1#.
3im rc 1s 428%
3im lngSavedWidth 1s 9ong
3im lng/ewVeight 1s 9ong
3im lng<ldScale0ode 1s 9ong
3im lng.temVeight 1s 9ong
lngSavedWidth @ pob58ombo.Width
lng<ldScale0ode @ pob5:orm.Scale0ode
pob5:orm.Scale0ode @ vb#i$els
lng.temVeight @ Send0essage>pob58ombo.hWnd, 8B=H2%.%20V2.HV%, *, ByCal
*?
lng/ewVeight @ lng.temVeight F >plng/um.tems%o3isplay B +?

8all HetWindow4ect>pob58ombo.hWnd, rc?
pt.X @ rc.9eft
pt.G @ rc.%op
8all Screen%o8lient>pob5:orm.hWnd, pt?
8all 0oveWindow>pob58ombo.hWnd, pt.X, pt.G, pob58ombo.Veight, lng/ewVeight,
%rue?
pob5:orm.Scale0ode @ lng<ldScale0ode
pob58ombo.Width @ lngSavedWidth
2nd Sub
&LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
#ublic Sub Set3rop3ownWidth>m8ombo 1s 8omboBo$?
&LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
(!
3im 4etCal 1s 9ong
3im #i$elWidth 1s 9ong
3im 0a$Width 1s 9ong
3im 9oop8ounter 1s 9ong
3im lWidth 1s 9ong
:or 9oop8ounter @ * %o m8ombo.9ist8ount L )
lWidth @ m8ombo.#arent.%e$tWidth>m8ombo.list>9oop8ounter??
.f lWidth A 0a$Width %hen
0a$Width @ lWidth
2nd .f
/e$t 9oop8ounter
0a$Width @ 0a$Width B >+, F Screen.%wips#er#i$elX?
.f 0a$Width A >m8ombo.Width F +? %hen
0a$Width @ >m8ombo.Width F +?
2lse.f 0a$Width N m8ombo.Width %hen
0a$Width @ m8ombo.Width
2nd .f
#i$elWidth @ >0a$Width J Screen.%wips#er#i$elX?
4etCal @ Send0essage>m8ombo.hWnd, 8B=S2%34<##23W.3%V, #i$elWidth, *?
2nd Sub
4eport0odule 0odule;
#ublic :unction count0embers>? 1s .nteger
3im counter 1s .nteger
8all databaseconnection
rs.<pen Eselect count>F? from membersE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3im n 1s .nteger
n @ Cal>rs.:ields>*??
rs.8lose
count0embers @ n
8all disconnectdatabase
2nd :unction
#ublic :unction get<utdated0embers>? 1s 13<3B.4ecordset
3im rs0ember 1s 13<3B.4ecordset
Set rs0ember @ /ew 13<3B.4ecordset
rs0ember.8ursor9ocation @ ad7se8lient
rs0ember.:ields.1ppend E.3E, adBig.nt, +*
rs0ember.:ields.1ppend E/ameE, adCar8har, )**
rs0ember.:ields.1ppend E3ue3ateE, ad3ate, )**
rs0ember.:ields.1ppend EStatusE, adCar8har, )**
rs0ember.<pen
3im list>? 1s String
3im counter 1s .nteger
counter @ *
8all databaseconnection
rs.<pen Eselect F from membersE, con, ad<pen3ynamic
('
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3im diR 1s 9ong
While /ot rs.2<:
diR @ 3ate3iR>EdE, :ormatS>rs.:ields>Edue3ateE?, Emm6dd6yyyyE?, /ow?
.f diR A@ * %hen
&<utdated
rs0ember.1dd/ew
rs0ember.:ields>*?.Calue @ rs.:ields>*?
rs0ember.:ields>)? @ rs.:ields>)?
rs0ember.:ields>+? @ rs.:ields>Edue3ateE?
rs0ember.:ields>,? @ E<utdatedE
rs0ember.7pdate
2lse.f diR A@ L! %hen
rs0ember.1dd/ew
rs0ember.:ields>*?.Calue @ rs.:ields>*?
rs0ember.:ields>)? @ rs.:ields>)?
rs0ember.:ields>+? @ rs.:ields>Edue3ateE?
rs0ember.:ields>,? @ 1bs>diR? I E to outE
rs0ember.7pdate
2nd .f
rs.0ove/e$t
Wend
rs.8lose
Set get<utdated0embers @ rs0ember
2nd :unction
#ublic :unction count<utdated0embers>? 1s .nteger
8all databaseconnection
rs.<pen Eselect F from membersE, con, ad<pen3ynamic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3im counter 1s .nteger
While /ot rs.2<:
diR @ 3ate3iR>EdE, :ormatS>rs.:ields>Edue3ateE?, Emm6dd6yyyyE?, /ow?
.f diR A@ * %hen
counter @ counter B )
2nd .f
rs.0ove/e$t
Wend
rs.8lose
count<utdated0embers @ counter
2nd :unction
#ublic :unction get.ncome>? 1s 9ong
8all databaseconnection
3im income 1s 9ong
income @ *
((
rs.<pen Eselect F from payment%ransactionE, con, ad<pen3ynamic,
ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o While /ot rs.2<:
income @ income B Cal>rs.:ields>+??
rs.0ove/e$t
9oop
rs.8lose
get.ncome @ income
2nd :unction
#ublic :unction get%otal1mt#aid<f>member.d 1s .nteger? 1s String
8all databaseconnection
3im income 1s 9ong
income @ *
rs.<pen Eselect F from payment%ransaction where member.d@E I member.d, con,
ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o While /ot rs.2<:
income @ income B Cal>rs.:ields>+??
rs.0ove/e$t
9oop
rs.8lose
get%otal1mt#aid<f @ income
2nd :unction
#ublic :unction get9ast#ayment3ate<f>member.d 1s .nteger? 1s String
8all databaseconnection
3im datestr 1s String
3im cmdString 1s String
cmdString @ Eselect F from payment%ransaction where member.d@E I member.d I
E <4324 BG date 32S8E
rs.<pen cmdString, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.4ecord8ount @ * %hen
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o 7ntil rs.2<:
datestr @ rs.:ields>)?
2$it 3o
9oop
2nd .f
rs.8lose
.f /ot datestr @ EE %hen
get9ast#ayment3ate<f @ datestr
2lse
get9ast#ayment3ate<f @ EE
2nd .f
)**
2nd :unction
#ublic :unction sinceToined3ate<f>member.d 1s .nteger? 1s String
8all databaseconnection
3im diR3ays 1s 9ong
3im diR0onths 1s 9ong
3im since 1s String
rs.<pen Eselect F from membersE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o While /ot rs.2<:
.f rs.:ields>*? @ member.d %hen
since @ split/get3ate>rs.:ields>Edo5E??
diR3ays @ 3ate3iR>EdE, :ormatS>split/get3ate>rs.:ields>Edo5E??,
Emm6dd6yyyyE?, /ow?
diR0onts @ 3ate3iR>EmE, :ormatS>split/get3ate>rs.:ields>Edo5E??,
Emm6dd6yyyyE?, /ow?
2$it 3o
2nd .f
rs.0ove/e$t
9oop
rs.8lose
sinceToined3ate<f @ ESince E I since I E, E I 1bs>diR0onts? I E months or E I
1bs>diR3ays? I E days.E
2nd :unction
#ublic :unction get9ast0easurement3ate<f>member.d 1s .nteger? 1s String
8all databaseconnection
3im str 1s String
rs.<pen ES2928% F :4<0 progress0ember WV242 member.d@E I member.d I E
<4324 BG mdate 32S8E, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o 7ntil rs.2<:
.f /ot rs.:ields>EmdateE? @ EE %hen
str @ rs.:ields>EmdateE?
2lse
str @ EE
2nd .f
2$it 3o
9oop
rs.8lose
get9ast0easurement3ate<f @ str
2nd :unction
#ublic :unction get<verallHrowth<f>member.d 1s .nteger? 1s String
8all databaseconnection
&date is ordered and 9ast measurement date comes frst
rs.<pen ES2928% F :4<0 progress0ember WV242 member.d@E I member.d I E
<4324 BG mdate 32S8E
)*)
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
get<verallHrowth<f @ EE
2nd :unction
#ublic :unction getB0.change<f>member.d 1s .nteger? 1s 3ouble
8all databaseconnection
&date is ordered and 9ast measurement date comes frst
rs.<pen ES2928% %<# + F :4<0 progress0ember WV242 member.d@E I
member.d I E <4324 BG mdate 32S8E
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3im last 1s 3ouble
3im prev 1s 3ouble
.f rs.4ecord8ount @ * %hen
last @ Cal>rs.:ields>EbmiE??
rs.0ove/e$t
prev @ Cal>rs.:ields>EbmiE??
3im result 1s 3ouble
result @ >>last L prev? F )**? 6 prev
.f result N * %hen
getB0.change<f @ 1bs>result?
2lse
getB0.change<f @ >L)? F result
2nd .f
2lse
getB0.change<f @ *
2nd .f
rs.8lose
2nd :unction
#ublic :unction getBody:at8hange<f>member.d 1s .nteger? 1s 3ouble
8all databaseconnection
&date is ordered and 9ast measurement date comes frst
rs.<pen ES2928% %<# + F :4<0 progress0ember WV242 member.d@E I
member.d I E <4324 BG mdate 32S8E
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3im last 1s 3ouble
3im prev 1s 3ouble
.f rs.4ecord8ount @ * %hen
last @ Cal>rs.:ields>EbodyfatE??
rs.0ove/e$t
prev @ Cal>rs.:ields>EbodyfatE??
3im result 1s 3ouble
result @ >>last L prev? F )**? 6 prev
.f result N * %hen
)*+
getBody:at8hange<f @ 1bs>result?
2lse
getBody:at8hange<f @ >L)? F result
2nd .f
2lse
getBody:at8hange<f @ *
2nd .f
rs.8lose
2nd :unction
#ublic :unction getWeight8hange<f>member.d 1s .nteger? 1s 3ouble
8all databaseconnection
&date is ordered and 9ast measurement date comes frst
rs.<pen ES2928% %<# + F :4<0 progress0ember WV242 member.d@E I
member.d I E <4324 BG mdate 32S8E
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f

3im last 1s 3ouble
3im prev 1s 3ouble
.f rs.4ecord8ount @ * %hen
last @ Cal>rs.:ields>EweightE??
rs.0ove/e$t
prev @ Cal>rs.:ields>EweightE??
3im result 1s 3ouble
result @ >>last L prev? F )**? 6 prev
getWeight8hange<f @ result
2lse
getWeight8hange<f @ *
2nd .f
rs.8lose
2nd :unction
#ublic :unction get3ue3ate<f>member.d 1s .nteger? 1s String
8all databaseconnection
3im str 1s String
rs.<pen Eselect F from membersE, con, ad<pen3ynamic, ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o 7ntil rs.2<:
.f rs.:ields>*? @ member.d %hen
str @ rs.:ields>Edue3ateE?
2$it 3o
2nd .f
rs.0ove/e$t
9oop
rs.8lose
get3ue3ate<f @ str
2nd :unction
)*,
#ublic :unction show4eceipt>By4ef bill/o 1s .nteger, m.d 1s .nteger, m/ame 1s
String, plan/ame 1s String, amt 1s 3ouble, due3ate 1s String, gym/ame 1s String,
gym1ddress 1s String, gym#hone 1s String? 1s Boolean
With 4eceipt#
8all databaseconnection
3im rs% 1s 13<3B.4ecordset
Set rs% @ /ew 13<3B.4ecordset
rs%.<pen Eselect F from membersE, con, ad<pen3ynamic, ad9ock<ptimistic
Set .3ataSource @ rs%
.3ata0ember @ rs%.3ata0ember
.Sections>ESection*E?.8ontrols>ElblHym/ameE?.8aption @ gym/ame
.Sections>ESection*E?.8ontrols>Elbl1ddressE?.8aption @ gym1ddress
.Sections>ESection*E?.8ontrols>Elbl#honeE?.8aption @ gym#hone
.Sections>ESection)E?.8ontrols>ElblBill/oE?.8aption @ E4eceipt /o ; E I bill/o
.Sections>ESection+E?.8ontrols>Elbl0ember/ameE?.8aption @ m/ame
.Sections>ESection+E?.8ontrols>Elbl#lan/ameE?.8aption @ plan/ame
.Sections>ESection+E?.8ontrols>Elbl3ue3ateE?.8aption @ due3ate
.Sections>ESection+E?.8ontrols>Elbl1mt#aidE?.8aption @ amt
.Sections>ESection,E?.8ontrols>Elbl0ember.dE?.8aption @ m.d
.Show
2nd With
2nd :unction
#ublic :unction get.ncomeBy4ange>last 1s .nteger? 1s 3ouble
3im diR 1s .nteger
3im income 1s 3ouble
8all databaseconnection
rs.<pen Eselect F from payment%ransaction order by dateE, con, ad<pen3ynamic,
ad9ock<ptimistic
.f /ot rs.2<: %hen
rs.0ove:irst
2nd .f
3o 7ntil rs.2<:
diR @ 3ate3iR>EmE, :ormatS>rs.:ields>EdateE?, Emm6dd6yyyyE?, /ow?
.f diR A@ * 1nd diR N@ , %hen
income @ income B rs.:ields>EamtE?
2nd .f
rs.0ove/e$t
9oop
rs.8lose
get.ncomeBy4ange @ income
2nd :unction
#ublic :unction count0ale0embers>? 1s .nteger
3im 8ount 1s .nteger
8all databaseconnection
rs.<pen Eselect count>F? from members where gender@&0ale&E, con,
ad<pen3ynamic, ad9ock<ptimistic
rs.0ove:irst
8ount @ rs.:ields>*?
rs.8lose
)*-
count0ale0embers @ 8ount
2nd :unction
#ublic :unction count:emale0embers>? 1s .nteger
3im 8ount 1s .nteger
8all databaseconnection
rs.<pen Eselect count>F? from members where gender@&:emale&E, con,
ad<pen3ynamic, ad9ock<ptimistic
rs.0ove:irst
8ount @ rs.:ields>*?
rs.8lose
count:emale0embers @ 8ount
2nd :unction
)*5
!esting
.1 Introduction to !esting
,esting goes side b# side with the i$ple$entation that is ai$ed at ensuring that the
s#ste$ wor%s accuratel# and efficientl# before the live operation is perfor$ed .,he co$$on
view of testing held b# the user is process of e!ecuting a progra$ with e!plicit intention of
handling errors. ,he application which has been developed has to be tested to prove its validit#.
,esting is considered to be the least creative phase of the whole c#cle of s#ste$ design. 'n the
)*6
real sense it is the phase> which helps to bring out the creativit# of the other phases> and $a%es it
shine. ,he Mobile Manage$ent "#ste$ was tested using the following two techni5ues of
application testing.
.1.1 :&ite (o4 !esting
a. )# using this techni5ue it was tested that all the individual logical paths were e!ecuted
at least once and ever# state$ent in the progra$ was e!ecuted 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 especiall# at the boundar#
values.
.1.2 (lac5 (o4 !esting
a. )# the use of this techni5ue the $issing functions were identified and placed in their
position.
b. ,he errors in the interfaces were identified and corrected.
c. ,he errors in the database access were indentified.
d. ,his techni5ue was along used to identif# the initiali?ation and ter$ination errors and
correct the$.
.1.3 A**lication !esting Strategies
An# application has to be tested with pre9planned strategies. As 0oger Press$an states>
the preparation for testing should star as soon as the design of the s#ste$ star. ,o carr# out the
testing in an efficient $anner certain a$ount of strategic planning has to be done. An# testing
strateg# $ust incorporate test planning> test case design> test e!ecution and the resultant data
collection evaluation.
Mobile Manage$ent was tested with the help of the following testing strategies@
.1.4 ,nit !esting
)*!
a. 'n the line of strateg# the entire individuals function and $odules were put to test
independentl#
b. )# following this strateg# all the errors in coding were identified and corrected.
c. ,his $ethod was applied in co$bination with the :hite )o! and )lac% )o! testing
d. ,echni5ue to find errors in each $odule.
e. ,he effort of specific co$bination of data on s#ste$ operation was tested.
f. ,he following were the testes carried out for <raphical -ser 'nterface E<-'F.
g. 't was seen that the pages opens properl# based on related $enu based co$$ands.
h. 't was tested whether all relevant $enus> buttons> icons and other controls are available
and properl# displa#ed.
i. Are the na$es of the $enu functions self e!planator#T
j. Are data input $essages intelligibleT
.1.5 Integration !esting
,his application testing strateg# has two different approached na$el# the top down
approach in which the integration is carried out fro$ the top level $odule to the botto$ and the
botto$ up approach in which the integration is carried out fro$ the low level $odules to the top.
,he $odules were tested using the botto$ up approach b# introducing stubs for the top Ilevel
functions.
,his test was used to identif# the errors in the interfaces> the error in passing the para$eters
between the function and to correct the$.
.1. 7alidation !esting
,he $ain ai$ of this testing is to verif# that the application s#ste$ does what it was
designed for. ,he s#ste$ was tested to ensure that the purpose of auto$ating the Asha clinic was
fulfilled.
Alpha testing was carried out to ensure the validit# of the s#ste$
.1." System !esting
)*'
,he idea of appl#ing this testing strateg# was to put the s#ste$ to a series of tests to ensure that it
perfor$ed well and e!actl# sa$e under all condition.
,he tests that the s#ste$ was put were@
0ecover# ,esting
Perfor$ance ,esting
,he tests were $ade on each for$ for its correctness of accepting the data and storing the data
into the respective tables in the desired for$ of data t#pe. ,he algorith$s were tested with the
test data first and then with the real data. ,he tests were $ade for all t#pes of constraints. ,he
tests were done in presence of the user so that heAshe is fa$iliar with the s#ste$ that is going to
be introduced. During the testing each objective of the s#ste$ was tested and found to be
wor%ing correctl#.
.2 -,L!IB,S%R SES!%-
Database &oc%ing "che$es@ :henever $ore than one person is accessing a recordAs so$e t#pe
of process $ust be use to prevent the outer users fro$ atte$pting to update the sa$e record at
the sa$e ti$e. ,his process is a loc%ing sche$e. 'n its si$plest for$> a loc%ing sche$e allows
onl# one user at a ti$e to update infor$ation in the database.
C&a*ter "3
)*(
Conclusion
))*
<n the area of selling revolution, online selling has been an inevitable
component .2Recting computing capabilities are therefore utiliMed. %he availability
of the reKuired online selling at the press of a button is something favorable and
therefore computers are used for this purpose. %hus, one way of potential taping is
achieved.
%he pro5ect [<nline 0obile Selling 0anagement\ after being tested was found to be
achieving what is meant for. %he system is found to be minimum error free ready for
implementation. 1ny work may not be always perfect. %here may be any error or
shortcoming in this work. We have taken at care to ensure that the pro5ect works
perfectly.
%he system has been designed in such a way that it can be modifed with very little
eRort to be achieving what a need arise in the future, as it follows the struts
framework. %he system has been found to work e]ciently and eRectively. 3ue to its
higher user friendliness, other may use these document as a prototype for
developing similar application.
%he development application is tested with sample data and outputs obtained in
according to the reKuirement. %hrough it could not be claimed that ours is an ideal
pro5ect, it will meet the primary reKuirement of the concern. 2ven though . have
tried my level best to make it a dream pro5ect, due to time constrains . could not
add more facilities to it. So the pro5ect has to be improved by having modifcations
as and when the necessity arises in due course.
%he pro5ect Smart Hym System is for computeriMing the work in a 8ollege.
%he application takes care of all the reKuirements of a 5ob 3epartment and is
capable to provide easy and eRective storage of information related to
3epartment.
)))
8hapter '
:7%742
2nhancement
))+
F$T$RE E%&a%'e(e%t
%he pro5ect has been developed in a very short period of time and all eRorts have
been taken so that this pro5ect is very e]cient in its e$ecution there still e$ists
some scope of improvement in our pro5ect. %he following lists some of the
enhancement that can be added incorporate into the pro5ect.
1pplication of the pro5ect can be done more attractively .3atabase management
and stock maintenance module can be added which helps the administrator. %his
pro5ect can also be modifed into a client server application. 0ore security measures
can be taken.
)),
8hapter (
Bibliography
))-
)*bl*+,ra-&.
)++/s
P1QBlack book,+**(
PBQCB 8omplete 4eference,+**(
0ebs*tes
PaQhttp;66yahoo.com6
PeQhttp;66www.google.com
))5
8V1#%24 )*
$ser
Ma%1al
))6
"'ree%s&+t
3ialog%o8hangeWallpaper
3ialog%o1ccess1dmin
3r3ue0ember9ist
))!
))'
))(
)+*
)+)
)++
)+,
)+-

Potrebbero piacerti anche