Beruflich Dokumente
Kultur Dokumente
Chapter ONE
1. Introduction
1.1 Background
The hotel industry is Zimbabwe has grown to the level at which they are now
using computers for their operations. Computers have been introduced to
automate functions like reservations, accounting, human resources management
and inventory control. Several hotels now use such systems, for example Cresta
and Monomutapa hotel use computer systems for their operations.
The hotels use different computer packages for their operations. They have
separate packages for human resource management, inventory control,
accounting and hotel reservation.
• The manual transfer on data is prone to human errors that may lead to
2
• Data backup has to be performed separately for the different systems that
are being used in the hotel
Recent work has been done in this field but has been mainly concerned
with the design for individual packages that can be used for the different
modules that are used in the system. Some of the software that is
currently in use in hotel are Medallion, which caters for reservations,
AccPack which monitors the accounting and other software that exist in
the industry.
Objectives
3
• To reduce errors that occur when moving data from different modules to
other modules manually
• To allow for a secure system for the whole hotel management
• To reduce time taken when getting information about customers,
reservations made, accounting information, workers information etc.
• To reduce time taken when trying to acquire details about a product or
suppliers of products.
• To keep track of orders that will have been made
• To reduce time taken when placing an order to a supplier
• To be able to manipulate details of products in the inventory or of
suppliers that supply the product.
• To reduce the use of manual things like paper.
The hotel industry has been forced to pay multiple licenses for the different
systems that they use in their operations which is very expensive when
compared to paying for a single license for a single system that performs all the
operations that are being done by the different packages that are being used.
transfer of information between this departments and will cut off any
manual work that was being done in re-entering data into different
systems as this will be done once at any point that needs data entry in the
system.
Chapter TWO
2. System specification
2.1 Introduction
i) grading
iv) Overtime
i) grading
ii) overtime calculations
• Selection of received benefits
i) company cars
ii) transport
iii) fuel
iv) accommodation
v) school fees
vi) rates eg water , electricity , phone
vii) lunch
viii) breakfast
ix) bonus
x) loans
• Daily registration
i)mark your name for daily registration
• Grouping of employees
i) permanent employees
ii) contract employees
• Pension management
i) NSSA deduction
ii) note working years
• Retirement package
i) grading
ii)detection of employees ready for retirement
• Condolences funds
i)company contribution
• Vashandi funeral contribution
• Confirmation of incoming and outgoing employees
i) avoid ghost workers
ii) confirmation of workers to be approved by many people
• Archives
i)fired empl0oyees
ii)hearing
iii)history of workers
• Generate ledger accounts
• Collection of day to day transactions
• Generating customer receipts
• Sending purchases orders
• Sending sales orders
• Generating the trial balance
• Generating income statement
• Generating the balance sheet
• Keeping supplier details
8
• Each individual should have a unique log-in, which should designate the
level of access required
and security of information. The proposed system will definitely cater for all these
making the project feasible operationally.
2.4.2 Reliability
The system should be reliable in that it should make sure that there are no errors
made in calculations or during its operation. It should validate input and give an
error message if wrong input is entered.
2.4.3 Security
The system should prompt the user for a password before giving the user access
to the system. t should validate input to ensure security of execution so that there
are no conflicts between what will have been entered and the database.
2.4.3 Maintainability
The system should allow for modifications to be made to it for purposes of
maintaining the system. This therefore means the system should make use of
object oriented principles which make programs maintainable.
2.4.4 Portability
The system should be able to run on multiple operating environments and should
be able allow for the system to be moved from one place/machine to another
13
Chapter THREE
3.1 Introduction
3.2 Project planning and scheduling
At this stage we are going to show all the phases that the project will go
through. The work plan was developed using the system development cycle
and was developed in such a way that it allows adequate participation from all
relevant stakeholders. Each stage is allocated a time span in which it has to be
carried out. The table below shows the project work plan:
gantt chart
WEEK/STAGE 1 2 3 4 5 6 7 8 9 10
Documentation
project proposal
planning phase
Analysis
Design
Implementation
Maintenance
POSSIBLE PROBLEMS
• Limited resources:
There are a limited number of computers to use at the computer lab at the
university. As a developer this will affect me as I do not possess a personal
computer.
• Delays due to:
1. Power cuts
2. The programming language that I am going to implement i.e. Java is new
to hence the need to study them first. As a result there will be a delay in
this process.
3. There is also the issue of time constrains due to lack of having a vacation
Technology advancements have been made in the hotel industry with various
softwares being developed fore the different areas involved in the hotel industry.
We have software like Medallion , Pastel, AccPack and many others that are
being used for operating hotels but none of this has an intergrated package for
the operations of the hotel as each department has to use its own software for
the operations that it does.
CHAPTER FOUR
4. System Analysis and Design
4.1 Introduction
In this phase the researcher was putting much concentration on the design of the
proposed system making sure that all the objectives stated in the project
proposal are fulfilled. The database design and entity relationships table,
architecture design and the database queries. The data flow diagram of the
proposed system is going to be shown with all the data flows and data stress for
easy understanding of the system
Leave details
Field name Field type
Leave id Long integer
Leave name String
Length Integer
Number Of hours worked before allocation Integer
OVERTIME DETAILS
Field name Field type
Id Long integer
Rate (number of hours) Integer
Rate Percent decimal
Deductions
Field name Field type
Deduction id Long id
Deduction Name String
Rate Decimal
Amount double
Payroll frequencies
Field name Field type
frequency id Long integer
frequency name String
Pay-period integer
Employee Details
Field name Field type
Employee id String
First name String
Initials String
Surname String
Date of birth Date
Gender String
National id number String
Address String
City String
Country String
Landline phone number Long integer
17
Grading
Field name field type
Grade id Long integer
Grade name String
Description Text
Salary Double(2)
Tax
Field name field type
Tax id Long integer
Grade id Long integer
Tax name String
Rate Decimal
Allowances
Field name field type
Allowance id Long integer
Allowance name String
Rate Decimal
Amount double
Employee-deductions
Field name field type
Employee id String
Deduction id Long integer
Employee-tax
Field name field type
Employee id String
Tax id Long integer
Employee-allowance
18
Time sheet
Field name field type
Time id Long integer
Employee id String
Check in Date time
Check out Date time
Payroll
Field name field type
Payroll id Long integer
Employee id String
Start day Date
End date Date
Hours worked Integer
Gross pay Double
Deductions Double
Net pay double
Employee-leave
Field name field type
Employee Id String
Leave id Long integer
Hours gained Long integer
hCUSTOMERS
Address String
City String
Country String
National id number String
Passport number String
dateOfIssueOfpassport Date-time
DateOfexpiryOfpassport Date-time
phonenumber Long integer
e-mailAddress String
carRegistrationNumber String
organizationId Long integer
faxNumber Long integer
organisation
Field name Field type
organisationId Long integer
Name String
Address Text
PhoneNumber Long integer
Country String
Email-address String
faxNumber Long integer
ROOMS
FIELD NAME TYPE
Room number Long integer
room type id Long integer
Locationid Long integer
ROOM TYPE
FIELD NAME TYPE
Room type id Long integer
Room type name String
Service id Long integer
BOOKING
FIELD NAME TYPE
Booking id Long integer
Customer id Long integer
Booking date Date-time
Number of staying days Long integer
Preferred Check in date Date-time
Preferred cjeck out date Date-time
Room number Long integer
Number of adults Long integer
20
Services
Field name Field type
ServiceId Long integer
Service name String
Description Text
pricePerUnit decimal
Services offered
Field name Field type
ServiceOfferedid Long integer
BookingId Long integer
Service id Long integer
Units offered Units offered
PAYMENTS
FIELD NAME TYPE
Paymentid Long integer
Booking id Long integer
Amount decimal Decimal
Date Date-time
intrest
Field name Field type
Intrestid Long id
Name String
21
Rate decimal
Travel agents
Field name Field type
travelAgentId Long integer
Name String
Address String
Phone number Long integer
e-mail address String
Country string
House keeping
Field name Field type
Room number Long id
Status string
Product details
Field name Type
ProductId Long integer
ProductName String
CategoryId Long integer
ReorderLevel Long interger
DefaultReorderQuantity Long integer
DefaultSupplierId Long integer
Status Boolean(1/0)
SuppliersDetails
Field name Type
SupplierId Long integer
SupplierName String
PhysicalAddress String
Street String
22
City String
Country String
BusinessPhone Number
MobilePhone Number
FaxNumber Number
EmailAddress String
Status Boolean(1/0)
SupplierProducts
Field name Type
SupplierId Long integer
ProductId Long integer
InventoryList
Field name Type
InventoryId Long integer
ProductId Long integer
QuantityAvailable Long integer
Target level Long integer
InventoryDue Long integer
InventoryReceiving
Field name Type
ReceivingId Long integer
ProductId Long integer
Quantity Long integer
Date Date-time
ReceivedBy Long integer
InventoryHistory
Field name Type
ActivityNumber Long integer
ProductId Long integer
Quantity Long integer
Date Date-time
GivenTo Long integer
GivenBy Long integer
Orders
Field name Type
OrderNumber Long integer
ProductId Long integer
SupplierId Long integer
Quantity Long integer
Submittedby Long integer
23
Date Date-time
status Done/notdone
sentStatus Sent/notsent
Cancelled Yes/no
Category
Field name Type
CategoryId Long integer
CategoryName String
Price list
Field name Type
productId Long integer
Price Decimal
The following equipment will be used for the operation and support of the System
to be designed..
• Telephone System – to help with the internet connection
• Paper for printing out any reports that can be produced by the System
specific supplier
Product suppliers System user Monitor/printer Table List of suppliers of
a certain product
Users System user Monitor/printer Table List of all users of
the system
Roles
Role_id Integer Key for roles table
Role Text The role of the user in the system i.e. Administrator, super or
ordinary user
Product details
Product_id Integer Key for product details table
Product name Text Name of product that is being stored in the inventory
Reorder_level Integer Level of stock for which the system is to identify whether a
product needs to be reordered
Default reorder Integer Default amount to be reordered for a certain product when making
quantity an order
Default supplier id Integer The default supplier from which a product will be reordered
Inventory list
Inventory_list id Integer key for the inventory list table
productid Integer Id of the product in the inventory
Quantity available Integer Amount of product that is available at that specific time
Target level Integer The expected level of the inventory for a product
Inventory due Integer Amount of product that is due to be received from the supplier
26
Supplier details
Supplier id Integer key to identify a supplier in the supplier details table
Supplier name Text name of supplier whose details are in the system
Physical address Text The address of the supplier whose details are in the system
City Text
Country Text
Business phone Integer Phone number for the supplier preferable landline
Mobile phone Integer Mobile phone number for the supplier
Fax number Integer Suppliers fax number
e-mail address Text Suppliers e-mail address
Supplier products
Supplier id Integer Id to identify the supplier
Product id Integer Id to identify the product supplied by the identified supplier
Orders
Order number Integer Key for the orders table to identify each order made for every
product
Product id Integer id for the product that will have been ordered
Supplier id Integer Id for supplier to which the order is to be sent
Quantity Integer Amount of the product ordered
Submitted by Text Person who made the order
Date Date Date on which order was made
Status Text Whether the order has been approved or not i.e. by the
administrator
Acceptance status Text If the order has been accepted by the supplier
Sent status Text If the order has been sent
Purchases
27
Login
This module is responsible for entering the System by use of a username and password.
The algorithm for this is shown below
Orders
This module is responsible for checking which products need to be reordered, placing the
orders and sending the orders to the suppliers.
Suppliers
This module is responsible for the manipulation of supplier’s details, that is, entering or
updating the details.
Users
This module is responsible for the manipulation of details of the users in the System. This
includes creation of a user, deletion of a user, changing of password and changing of user
roles
FLOW CHARTS
28
Login
The system user enters the username and password and the input is compared to that
stored in the system database. If they are correct the user is allowed access to the system.
START
enter username
and password
go to main
system
END
START
LOGIN
ENTER
PRODU CT
DETAILS
ADDPR ODUCT
DETAILSTO
DATABASE
END
Orders
This module allows the user of the system to be able to place orders to the supplier and
identify in the system the orders that will have been made. The user should be allows to
see the orders that will have been made.
START
LOGIN
ENTER
O RDER
DETAILS
ADDO RDER
DETAILSTO
DATABASE
END
30
Suppliers
The suppliers details are entered into the system and depending on the choice made by
the user the details are updated in the database.
START
LOGIN
ENTER
SUPPLIER
DETAILS
ADDPU RCHASE
DETAILSTO
DATABASE
END
Users
In the Users modules basic system setup and configuration takes place. This includes
creation, updating, deleting of new users with different access levels, changing passwords
and roles
31
START
LOGIN
ENTERUSER
DETAILS
ADDUSERDETAILS
TODATABASE
END
.
CHAPTER FIVE
5.1 Introduction
It has a great deal of facilities that allow easy and direct access to many
database engines, and this increased our choice on database selection.
It is a high level language which is closely related to the human language-
English, and this consequently made the translation from the system’s
algorithm design to the system’s implementation a relatively simpler task,
than a language like C/C++ which is close to machine language.
Eclipse compiles every line of code as it is written; therefore errors are
identified before runtime making the time spend in debugging the program
shorter.
In the current world where open source operating systems are slowly
becoming popular the researcher saw it fit to use JAVA as it is a portable
programming language that can be run on any operating system.
Therefore the system can be run on multiple operating systems and still
perform the same function.
On the database selection, the choice was more or less a choosy one, because
Oracle and MS SQL Server 2005 and MYSQL Sever 5 were potential candidates
for selection as the database engine.
MS Access was out of the menu of Database choices simply because of its
miniature storage capacity and its lack of a professional appearance.
33
MS SQL Server though it’s a good database engine with a large storage
capacity, it was not used simply because of its lack of a user-friendly user
interface. It lacks graphical user interface working environment. i.e. It‘s not the
most preferred choice of database in JAVA. SQL Server provided just enough for
the system’s database storage requirements but because it can only be used on
Windows Operating Systems it did not provide the portability to match that of
JAVA.MYSQL Sever became the appropriate choice because it provided enough
storage capacity, is an open source database therefore very portable and can be
setup on many operating systems and Since the school is still developing it
would be expensive to use other database systems like oracle and SQL Sever as
the license requirements would be expensive for the school therefore it was a
better choice to use the free database system MYSQL.
5.3 Efficiency
Java is a portable programming language that can be used for creating desktop
applications using the java swing class. It can also create a good graphic user
interface that can then make it easier for the users of the system when they are
using it. MYSQL Sever is a fast and robust database that has a very high storage
capacity. This enables it to store a lot of information. JAVA and MYSQL are both
open source and because of this both are designed in a way that makes it easier
to use the two together.
5.4 Correctness
The system that was designed by Java and has managed to correctly implement
the requirements. This therefore means that the System is correct
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.sql.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
}
else{
//indatabase(""+firstname);
JOptionPane.showMessageDialog(null,""+employeeid+"
already exists");
35
}
System.out.println("jihgdhjgddihv");
}
catch(SQLException e){
System.err.println(e.getMessage());
}
}
//end adding employee
// searching for an employee
try{
long count=0;
ResultSet rs =
DBconnect.stmt.executeQuery(searchstatement);
//DBconnect.stmt.execute(searchstatement);
while(rs.next()){
count++;}
//DBconnect.stmt.execute(takename);
if (count==0){
JOptionPane.showMessageDialog(null, empid+"
DOES NOT EXIST.");
}
else{
ResultSet rs2 =
DBconnect.stmt.executeQuery(takename);
while(rs2.next()){
String name=rs2.getString("firstname");
String surname=rs2.getString("surname");
JOptionPane.showMessageDialog(null, name+" "+surname+
" FOUND.");
}
}
catch(SQLException e){
//System.out.print(e.getMessage());
JOptionPane.showMessageDialog(null, "
"+e.getMessage());
//JOptionPane.showMessageDialog(null, empid+" DOES
NOT EXIST");
}
36
try{
DBconnect.stmt.execute(updatestatement);
JOptionPane.showMessageDialog(null, employeeid+" HAS BEEN
UPDATED");
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
//end updating product details
}
}
catch(SQLException e){
System.out.print(e.getMessage());
}
try{//long count=0;
DBconnect.stmt.execute( takename);
//while(rs.next()){
//count ++;
//}
//if (count==0){
DBconnect.stmt.execute( addallowance);
//while(rs2.next())
JOptionPane.showMessageDialog(null,
allowancename+" DETAILS SAVED");
//}
/*else{
JOptionPane.showMessageDialog(null,
allowancename+" DETAILS IS ALREADY SAVED");
}*/
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
public static void deleteallowance(Object allwid){
DBconnect.stmt.execute(deletestatement);
JOptionPane.showMessageDialog(null, allwid+" HAS BEEN
DELETED FROM THE SYSTEM");
DBconnect.stmt.execute(deletestatement2);
JOptionPane.showMessageDialog(null,"All assignment
associated with this allowance have been removed");
38
}
}
catch(SQLException e){
System.out.print(e.getMessage());
}
try{
DBconnect.stmt.executeUpdate(updatestatement);
JOptionPane.showMessageDialog(null, allowanceid+" HAS BEEN
UPDATED");
}
catch(SQLException e){
System.out.print(e.getMessage());
}
try{//long count=0;
DBconnect.stmt.execute( takename);
//while(rs.next()){
//count ++;
//}
//if (count==0){
DBconnect.stmt.execute( addallowance);
//while(rs2.next())
JOptionPane.showMessageDialog(null,
allowanceid+" DETAILS SAVED TO"+ employeeid);
//}
/*else{
JOptionPane.showMessageDialog(null,
allowancename+" DETAILS IS ALREADY SAVED");
}*/
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
39
try{//long count=0;
DBconnect.stmt.execute( takename);
//while(rs.next()){
//count ++;
//}
//if (count==0){
DBconnect.stmt.execute( adddeduction);
//while(rs2.next())
JOptionPane.showMessageDialog(null,
deductionname+" DETAILS SAVED");
//}
/*else{
JOptionPane.showMessageDialog(null,
allowancename+" DETAILS IS ALREADY SAVED");
}*/
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
public static void deletedeductions(Object dedid){
DBconnect.stmt.execute(deletestatement);
JOptionPane.showMessageDialog(null, dedid+" HAS BEEN
DELETED FROM THE SYSTEM");
DBconnect.stmt.execute(deletestatement2);
JOptionPane.showMessageDialog(null,"All assignment
associated with this allowance have been removed");
}
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
40
try{
DBconnect.stmt.executeUpdate(updatestatement);
JOptionPane.showMessageDialog(null, deductionid+" HAS BEEN
UPDATED");
}
catch(SQLException e){
System.out.print(e.getMessage());
}
try{//long count=0;
DBconnect.stmt.execute( takename);
//while(rs.next()){
//count ++;
//}
//if (count==0){
DBconnect.stmt.execute( adddeductions);
//while(rs2.next())
JOptionPane.showMessageDialog(null, dedid+"
DETAILS SAVED TO"+ employeeid);
//}
/*else{
JOptionPane.showMessageDialog(null,
allowancename+" DETAILS IS ALREADY SAVED");
}*/
}
catch(SQLException e){
System.out.print(e.getMessage());
}
try{//long count=0;
DBconnect.stmt.execute( takename);
//while(rs.next()){
//count ++;
//}
//if (count==0){
DBconnect.stmt.execute( addleave);
//while(rs2.next())
JOptionPane.showMessageDialog(null, leavename+"
DETAILS SAVED");
//}
/*else{
JOptionPane.showMessageDialog(null,
allowancename+" DETAILS IS ALREADY SAVED");
}*/
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
public static void deleteleave(Object leaveid){
DBconnect.stmt.execute(deletestatement);
JOptionPane.showMessageDialog(null, leaveid+" HAS
BEEN DELETED FROM THE SYSTEM");
DBconnect.stmt.execute(deletestatement2);
JOptionPane.showMessageDialog(null,"All assignment
associated with this allowance have been removed");
}
}
catch(SQLException e){
System.out.print(e.getMessage());
}
try{
DBconnect.stmt.executeUpdate(updatestatement);
JOptionPane.showMessageDialog(null, leaveid+" HAS BEEN
UPDATED");
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
public static void addleavetoemployee(Object employeeid,Object
leaveid,String hoursgained){
String addleave="INSERT INTO hremployeeleave VALUES('"+
employeeid+"','"+leaveid+"','"+hoursgained+"' )";
String takename = "SELECT employeeid,leaveId,hoursGained
FROM hremployeeleave WHERE employeeid='"+employeeid+"'AND
leaveId='"+leaveid+"'";
try{//long count=0;
DBconnect.stmt.execute( takename);
//while(rs.next()){
//count ++;
//}
//if (count==0){
DBconnect.stmt.execute( addleave);
//while(rs2.next())
JOptionPane.showMessageDialog(null, leaveid+"
DETAILS SAVED TO"+ employeeid);
//}
/*else{
JOptionPane.showMessageDialog(null,
allowancename+" DETAILS IS ALREADY SAVED");
}*/
}
catch(SQLException e){
System.out.print(e.getMessage());
}
try{//long count=0;
DBconnect.stmt.execute( takename);
//while(rs.next()){
//count ++;
//}
43
//if (count==0){
DBconnect.stmt.execute( addleave);
//while(rs2.next())
JOptionPane.showMessageDialog(null, taxName+"
DETAILS SAVED");
//}
/*else{
JOptionPane.showMessageDialog(null,
allowancename+" DETAILS IS ALREADY SAVED");
}*/
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
public static void deletetax(Object taxid){
DBconnect.stmt.execute(deletestatement);
JOptionPane.showMessageDialog(null, taxid+" HAS BEEN
DELETED FROM THE SYSTEM");
DBconnect.stmt.execute(deletestatement2);
JOptionPane.showMessageDialog(null,"All assignment
associated with this allowance have been removed");
}
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
public static void updatetax(Object taxid,Object gradeid,String
taxName,String rate,String amount){
String updatestatement=("UPDATE hrtax SET
gradeid='"+gradeid+"',taxName='"+taxName+"',rate='"+rate+"',amount='"+a
mount+"' WHERE taxid='"+taxid+"'");
try{
DBconnect.stmt.executeUpdate(updatestatement);
JOptionPane.showMessageDialog(null, taxid+" HAS BEEN
UPDATED");
}
catch(SQLException e){
System.out.print(e.getMessage());
}
44
}
public static void addtaxtoemployee(Object employeeid,Object
taxid){
String addtax="INSERT INTO hremployeetax VALUES('"+
employeeid+"','"+taxid+"' )";
String takename = "SELECT employeeid,taxid FROM
hremployeetax WHERE employeeid='"+employeeid+"'AND taxid='"+taxid+"'";
try{//long count=0;
DBconnect.stmt.execute( takename);
//while(rs.next()){
//count ++;
//}
//if (count==0){
DBconnect.stmt.execute( addtax);
//while(rs2.next())
JOptionPane.showMessageDialog(null, taxid+"
DETAILS SAVED TO"+ employeeid);
//}
/*else{
JOptionPane.showMessageDialog(null,
allowancename+" DETAILS IS ALREADY SAVED");
}*/
}
catch(SQLException e){
System.out.print(e.getMessage());
}
try{//long count=0;
DBconnect.stmt.execute( takename);
//while(rs.next()){
//count ++;
//}
//if (count==0){
DBconnect.stmt.execute( addleave);
//while(rs2.next())
JOptionPane.showMessageDialog(null,gradeName+"
DETAILS SAVED");
//}
/*else{
JOptionPane.showMessageDialog(null,
allowancename+" DETAILS IS ALREADY SAVED");
}*/
}
catch(SQLException e){
System.out.print(e.getMessage());
45
}
public static void deletegrade(Object grdid){
DBconnect.stmt.execute(deletestatement);
JOptionPane.showMessageDialog(null, grdid+" HAS BEEN
DELETED FROM THE SYSTEM");
//DBconnect.stmt.execute(deletestatement2);
//JOptionPane.showMessageDialog(null,"All assignment
associated with this allowance have been removed");
}
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
public static void updategrades(Object gradeid,String
gradeName,String description,String salary){
String updatestatement=("UPDATE hrgrading SET
gradeName='"+gradeName+"',gradeDescription='"+description+"',salary='"+
salary+"' WHERE gradeId='"+gradeid+"'");
try{
DBconnect.stmt.executeUpdate(updatestatement);
JOptionPane.showMessageDialog(null, gradeid+" HAS BEEN
UPDATED");
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
public static void addfrequency(Object frequencyid,String
frequencyName,String payperiod){
String addfrequency="INSERT INTO hrpayrollfrequencies
VALUES('"+ frequencyid+"','"+frequencyName+"','"+payperiod+"' )";
String takename = "SELECT frequencyId,frequencyName FROM
hrpayrollfrequencies WHERE frequencyId='"+ frequencyid+"'";
try{//long count=0;
DBconnect.stmt.execute( takename);
//while(rs.next()){
//count ++;
46
//}
//if (count==0){
DBconnect.stmt.execute( addfrequency);
//while(rs2.next())
JOptionPane.showMessageDialog(null,frequencyName+" DETAILS
SAVED");
//}
/*else{
JOptionPane.showMessageDialog(null,
allowancename+" DETAILS IS ALREADY SAVED");
}*/
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
public static void deletefrequency(Object frqid){
DBconnect.stmt.execute(deletestatement);
JOptionPane.showMessageDialog(null, frqid+" HAS BEEN
DELETED FROM THE SYSTEM");
//DBconnect.stmt.execute(deletestatement2);
//JOptionPane.showMessageDialog(null,"All assignment
associated with this allowance have been removed");
}
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
public static void updatefrequency(Object frequencyid,String
frequencyName,String payperiod){
String updatestatement=("UPDATE hrpayrollfrequencies SET
frequencyName='"+frequencyName+"',payPeriod='"+payperiod+"' WHERE
frequencyId='"+frequencyid+"'");
try{
DBconnect.stmt.executeUpdate(updatestatement);
JOptionPane.showMessageDialog(null, frequencyid+" HAS BEEN
UPDATED");
}
catch(SQLException e){
47
System.out.print(e.getMessage());
}
}
public static void addovertime(Object overtimeid,String
maxovertimehrs,String rateperhr,String amount){
String addleave="INSERT INTO hrovertimedetails VALUES('"+
overtimeid+"','"+maxovertimehrs+"','"+rateperhr+"','"+amount+"' )";
String takename = "SELECT overtimeId FROM hrovertimedetails
WHERE overtimeId='"+ overtimeid+"'";
try{//long count=0;
DBconnect.stmt.execute( takename);
//while(rs.next()){
//count ++;
//}
//if (count==0){
DBconnect.stmt.execute( addleave);
//while(rs2.next())
JOptionPane.showMessageDialog(null,overtimeid+"
DETAILS SAVED");
//}
/*else{
JOptionPane.showMessageDialog(null,
allowancename+" DETAILS IS ALREADY SAVED");
}*/
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
public static void deleteovertime(Object ovrid){
DBconnect.stmt.execute(deletestatement);
JOptionPane.showMessageDialog(null, ovrid+" HAS BEEN
DELETED FROM THE SYSTEM");
//DBconnect.stmt.execute(deletestatement2);
//JOptionPane.showMessageDialog(null,"All assignment
associated with this allowance have been removed");
}
}
catch(SQLException e){
System.out.print(e.getMessage());
}
48
}
public static void updateovertime(Object overtimeid,String
maxovertimehrs,String rateperhr,String amount){
String updatestatement=("UPDATE hrovertimedetails SET
maximumOvertimeHours='"+maxovertimehrs+"',ratePerHour='"+rateperhr+"',a
mountPerHour='"+amount+"' WHERE overtimeId='"+overtimeid+"'");
try{
DBconnect.stmt.executeUpdate(updatestatement);
JOptionPane.showMessageDialog(null, overtimeid+" HAS BEEN
UPDATED");
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
try{//long count=0;
DBconnect.stmt.execute( takename);
//while(rs.next()){
//count ++;
//}
//if (count==0){
DBconnect.stmt.execute( addpayroll);
//while(rs2.next())
JOptionPane.showMessageDialog(null,payrollid+"
DETAILS SAVED FOR: "+ employeeid);
//}
/*else{
JOptionPane.showMessageDialog(null,
allowancename+" DETAILS IS ALREADY SAVED");
}*/
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
public static void updatepayroll(Object payrollid,Object
employeeid,String startday,String endday,String hrsworked,String
grosspay,String deductions,String netpay){
String updatestatement=("UPDATE hrpayroll SET
startdate='"+startday+"',enddate='"+endday+"',hoursWorked='"+hrsworked+
"',grossPay='"+grosspay+"',deductions='"+deductions+"',netPaye='"+netpa
y+"' WHERE payrollid='"+payrollid+"'AND employeeid='"+employeeid+"'");
try{
49
DBconnect.stmt.executeUpdate(updatestatement);
JOptionPane.showMessageDialog(null, payrollid+" HAS BEEN
UPDATED");
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
public static void deletepayroll(Object payrolid ,Object empid){
DBconnect.stmt.execute(deletestatement);
JOptionPane.showMessageDialog(null, payrolid+" HAS
BEEN DELETED FROM THE SYSTEM");
//DBconnect.stmt.execute(deletestatement2);
//JOptionPane.showMessageDialog(null,empid+"'s
payroll details has been removed");
}
}
catch(SQLException e){
System.out.print(e.getMessage());
}
try{//long count=0;
DBconnect.stmt.execute( takename);
//while(rs.next()){
//count ++;
//}
//if (count==0){
DBconnect.stmt.execute( addcompany);
//while(rs2.next())
JOptionPane.showMessageDialog(null," COMPANY
DETAILS SAVED ");
//}
50
/*else{
JOptionPane.showMessageDialog(null,
allowancename+" DETAILS IS ALREADY SAVED");
}*/
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
public static void deletecompany(Object cmpid){
DBconnect.stmt.execute(deletestatement);
JOptionPane.showMessageDialog(null, cmpid+" HAS BEEN
DELETED FROM THE SYSTEM");
//DBconnect.stmt.execute(deletestatement2);
//JOptionPane.showMessageDialog(null,"All assignment
associated with this allowance have been removed");
}
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
public static void updatecompany(Object companyid,String
companyname,String legalname,String address,String city,Object
countryid,String phone ,String fax,String email,String website){
String updatestatement=("UPDATE hrcompanydetails SET
companyName='"+companyname+"',legalName='"+legalname+"',address='"+addr
ess+"',city='"+city+"',countryId='"+countryid+"',phoneNumber='"+phone+"
',faxNumber='"+fax+"',emailaddress='"+email+"',website='"+website+"'
WHERE companyid='"+companyid+"'");
try{
DBconnect.stmt.executeUpdate(updatestatement);
JOptionPane.showMessageDialog(null, companyid+" HAS BEEN
UPDATED");
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}
public static void viewall(){
51
Class.forName(databaseconstants.driver).newInstance();
Connection con =
DriverManager.getConnection(databaseconstants.url+databaseconstants.db,
databaseconstants.user, databaseconstants.pass);
try{
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(oneemployees);
// ResultSetMetaData md = rs.getMetaData();
int columnCount =4;// md.getColumnCount();
tablemodel.addColumn("EMPLOYEE_ID");
tablemodel.addColumn("NAME");
tablemodel.addColumn("INITIALS");
tablemodel.addColumn("SURNAME");
/* tablemodel.addColumn("D.O.B");
tablemodel.addColumn("NATIONAL_ID");
tablemodel.addColumn("GENDER");
tablemodel.addColumn("ADDRESS");
tablemodel.addColumn("CITY");
tablemodel.addColumn("COUTRYCODE");
tablemodel.addColumn("LANDLINE");
tablemodel.addColumn("MOBILE PHONE");
tablemodel.addColumn("EMAIL");
tablemodel.addColumn("NATIONALITY");
tablemodel.addColumn("PASSPORT #");
tablemodel.addColumn("PASSPORT VALIDTO");
tablemodel.addColumn("MARITAL STATUS");
tablemodel.addColumn("GRADE_ID");
tablemodel.addColumn("FREQUENCY ID");
tablemodel.addColumn("QUALIFICATION");
tablemodel.addColumn("DESCRIPTION");
*/
Vector<String> row ;
while(rs.next())
{
row = new Vector<String>(columnCount);
row.add(rs.getString(i));
}
tablemodel.addRow(row);
52
}
//tableemployees.setCellSelectionEnabled(true);
}
catch(SQLException e){
System.err.println(e.getMessage());
}
} catch (Exception e){
e.printStackTrace();
}
Class.forName(databaseconstants.driver).newInstance();
Connection con =
DriverManager.getConnection(databaseconstants.url+databaseconstants.db,
databaseconstants.user, databaseconstants.pass);
try{
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(oneemployees);
// ResultSetMetaData md = rs.getMetaData();
int columnCount = 4;//md.getColumnCount();
tablemodel.addColumn("EMPLOYEE_ID");
tablemodel.addColumn("NAME");
tablemodel.addColumn("INITIALS");
tablemodel.addColumn("SURNAME");
/* tablemodel.addColumn("D.O.B");
tablemodel.addColumn("NATIONAL_ID");
tablemodel.addColumn("GENDER");
tablemodel.addColumn("ADDRESS");
tablemodel.addColumn("CITY");
tablemodel.addColumn("COUTRYCODE");
tablemodel.addColumn("LANDLINE");
tablemodel.addColumn("MOBILE PHONE");
tablemodel.addColumn("EMAIL");
tablemodel.addColumn("NATIONALITY");
tablemodel.addColumn("PASSPORT #");
tablemodel.addColumn("PASSPORT VALIDTO");
tablemodel.addColumn("MARITAL STATUS");
53
tablemodel.addColumn("GRADE_ID");
tablemodel.addColumn("FREQUENCY ID");
tablemodel.addColumn("QUALIFICATION");
tablemodel.addColumn("DESCRIPTION");
*/
Vector<String> row ;
while(rs.next())
{
row = new Vector<String>(columnCount);
row.add(rs.getString(i));
}
tablemodel.addRow(row);
}
//tableemployees.setCellSelectionEnabled(true);
}
catch(SQLException e){
System.err.println(e.getMessage());
}
} catch (Exception e){
e.printStackTrace();
}
}
return newnumber;
}
}
package hms;
import java.sql.*;
import javax.swing.JOptionPane;
}
else {
indatabase(idnumber);
}
}
catch(SQLException e) {
System.out.print(e.getMessage());
}
count++;
}
if(count==0) {
DBconnect.stmt.execute(insert);
}
else {
indatabase(Oname);
}
}
catch(SQLException e) {
System.out.print(e.getMessage());
}
}////********************
//insert into hrvcustomerorganisation
public static void savrorgcust(String customer,String
organisation) {
System.out.print(customer+" .... "+organisation);
String save = "INSERT INTO hrvcustomerorganisation
values('"+Getids.getid("customerId","hrvcustomers","nationalIdnumber",c
ustomer)
+"','"+Getids.getid("organisationId","hrvorganisation","name",organisat
ion)+"')";
String check = "SElECT * FROM hrvcustomerorganisation WHERE
customerId='"+Getids.getid("customerId","hrvcustomers","nationalIdnumbe
r",customer)+"' AND
organisationId='"+Getids.getid("organisationId","hrvorganisation","name
",organisation)+"' ";
try {
ResultSet rs = DBconnect.stmt.executeQuery(check);
long count=0;
while(rs.next()) {
count++;
}
if(count==0) {
DBconnect.stmt.execute(save);
System.out.println(save);
}
}
catch(SQLException e) {
System.out.println(e.getMessage());
}
}
//////////***********************
}catch(SQLException e){
System.out.print(e.getMessage());
}
}
else{
}
}/////////////////****************************
}catch(SQLException e){
System.out.print(e.getMessage());
}
}
else{
}
////////////////////////////****************************
organisationId='"+Getids.getid("organisationId","hrvorganisation","orga
nisationId",org)+"' ";
String select ="SElECT * FROM hrvcustomerorganisation WHERE
customerId='"+Getids.getid("customerId","hrvcustomers","nationalIdnumbe
r",customer)+"' AND
organisationId='"+Getids.getid("organisationId","hrvorganisation","orga
nisationId",org)+"' ";
try {
ResultSet rs = DBconnect.stmt.executeQuery(select);
System.out.println(remove);;
long count=0;
while(rs.next()) {
count++;
}
if(count!=0) {
DBconnect.stmt.execute(remove);
//System.out.println(remove);
}
else {
System.out.println("not available");
}
}
catch(SQLException e) {
System.out.println(e.getMessage());
}
}
//*********************
//save location
hrvlocation.location.addItem(location);
hrvrooms.location.addItem(location);
}
}else{
indatabase(""+location);
}
}
}
catch(SQLException e){
System.out.println(e.getMessage());
}
}
//*****************
//delete location
public static void deletelocation(Object location){
String delete = "UPDATE hrvlocation SET status='0' WHERE
name='"+location+"'";
try{
int opt=JOptionPane.showConfirmDialog(null,"ARE YOU
SURE YOU WANT TO DELETE "+location+"\nYOU CAN REACTIVATE IT IF YOU
CONTINUE WITH HE PROCESS");
if(opt==JOptionPane.YES_OPTION){
DBconnect.stmt.executeUpdate(delete);
JOptionPane.showMessageDialog(null,location+"
has been removed");
hrvlocation.location.removeItem(""+location);
hrvrooms.location.removeItem(location);
}
}
catch(SQLException e){
System.out.println(e.getMessage());
}
}///********************************
//save service
public static void saveservice(String name,String
description,double price){
String save ="INSERT INTO hrvservices
VALUES('"+Getids.getnewid("hrvservices","serviceId")
+"','"+name+"','"+description+"','"+price+"','1')";
String check = "SELECT * FROM hrvservices WHERE
name='"+name+"'";
int count=0;
int status = 0;
try{
ResultSet rs = DBconnect.stmt.executeQuery(check);
while(rs.next()){
count++;
status=rs.getInt("status");
59
}
if(count==0){
DBconnect.stmt.execute(save);
JOptionPane.showMessageDialog(null,name+"
saved","HMS",JOptionPane.INFORMATION_MESSAGE);
hrvservices.search.addItem(""+name);
hrvroomtype.service.addItem(name);
}
else{
if(status==0){
int
opt=JOptionPane.showConfirmDialog(null,name+" is already in the system
would you like to activate it","HMS",JOptionPane.YES_NO_OPTION);
if(opt==JOptionPane.YES_OPTION){
}else{
indatabase(""+name);
}
}
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}//**********************
//delete service
public static void deactivateservice(String name){
String delete = "UPDATE hrvservices SET status='0' WHERE
name='"+name+"'";
try{
int opt=JOptionPane.showConfirmDialog(null,"ARE YOU
SURE YOU WANT TO DELETE "+name+"\nYOU CAN REACTIVATE IT IF YOU CONTINUE
WITH HE PROCESS");
if(opt==JOptionPane.YES_OPTION){
DBconnect.stmt.executeUpdate(delete);
JOptionPane.showMessageDialog(null,name+" has
been removed");
hrvservices.search.removeItem(""+name);
hrvroomtype.service.removeItem(name);
}
}
catch(SQLException e){
System.out.println(e.getMessage());
}
}//*********************************
//update service
60
}catch(SQLException e){
System.out.print(e.getMessage());
}
}
else{
}
}//////////*******************
//SAVE ROOMTYPE
public static void saveroomtype(String roomtype,Object service) {
String save="INSERT INTO hrvroomtype
VALUES('"+Getids.getnewid("hrvroomtype","roomTypeId")
+"','"+roomtype+"','"+Getids.getid("serviceId","hrvservices","name",""+
service+"")+"','1')";
String check="(SELECT * FROM hrvroomtype WHERE
name='"+roomtype+"')";
long count=0;
int status = 0;
try{
ResultSet rs = DBconnect.stmt.executeQuery(check);
while(rs.next()){
count++;
status=rs.getInt("status");
}
if(count==0){
DBconnect.stmt.execute(save);
JOptionPane.showMessageDialog(null,roomtype+"
saved","HMS",JOptionPane.INFORMATION_MESSAGE);
hrvroomtype.search.addItem(roomtype);
hrvrooms.roomtype.addItem(roomtype);
}
else{
if(status==0){
int
opt=JOptionPane.showConfirmDialog(null,roomtype+" is already in the
system would you like to activate it","HMS",JOptionPane.YES_NO_OPTION);
if(opt==JOptionPane.YES_OPTION){
hrvroomtype.search.addItem(roomtype);
hrvrooms.roomtype.addItem(roomtype);
}
}else{
indatabase(""+roomtype);
}
}
}
catch(SQLException e){
System.out.print(e.getMessage()+"error on insert
query");
}
}//**************************
public static void deleteroomtype(String name){
String delete = "UPDATE hrvroomtype SET status='0' WHERE
name='"+name+"'";
try{
int opt=JOptionPane.showConfirmDialog(null,"ARE YOU
SURE YOU WANT TO DELETE "+name+"\nYOU CAN REACTIVATE IT IF YOU CONTINUE
WITH HE PROCESS");
if(opt==JOptionPane.YES_OPTION){
DBconnect.stmt.executeUpdate(delete);
JOptionPane.showMessageDialog(null,name+" has
been removed");
hrvroomtype.search.removeItem(""+name);
hrvrooms.roomtype.removeItem(name);
}
}
catch(SQLException e){
System.out.println(e.getMessage());
}
}//*********************************
//SAVE ROOM
public static void saveroom(long roomnumber,Object
roomtype,Object location) {
String save ="INSERT INTO hrvrooms VALUES
('"+roomnumber+"','"+Getids.getid("roomTypeId","hrvroomtype","name",""+
roomtype+"")
+"','"+Getids.getid("locationId","hrvlocation","name",""+location+"")
+"','1')";
String check="SELECT * FROM hrvrooms WHERE
roomNumber='"+roomnumber+"'";
int count=0;
int status = 0;
try{
ResultSet rs = DBconnect.stmt.executeQuery(check);
while(rs.next()){
count++;
status=rs.getInt("status");
}
if(count==0){
62
DBconnect.stmt.execute(save);
JOptionPane.showMessageDialog(null,roomnumber+"
saved","HMS",JOptionPane.INFORMATION_MESSAGE);
hrvrooms.search.addItem(""+roomnumber);
}
else{
if(status==0){
int
opt=JOptionPane.showConfirmDialog(null,roomnumber+" is already in the
system would you like to activate it","HMS",JOptionPane.YES_NO_OPTION);
if(opt==JOptionPane.YES_OPTION){
hrvrooms.search.addItem(""+roomnumber);
}
}else{
indatabase(""+roomnumber);
}
}
}
catch(SQLException e){
System.out.print(e.getMessage());
}
}//**********************
//delete room
public static void deleteroom(long rnumber){
String delete = "UPDATE hrvrooms SET status='0' WHERE
roomNumber='"+rnumber+"'";
try{
int opt=JOptionPane.showConfirmDialog(null,"ARE YOU
SURE YOU WANT TO DELETE "+rnumber+"\nYOU CAN REACTIVATE IT IF YOU
CONTINUE WITH HE PROCESS");
if(opt==JOptionPane.YES_OPTION){
DBconnect.stmt.executeUpdate(delete);
JOptionPane.showMessageDialog(null,rnumber+"
has been removed");
hrvrooms.search.removeItem(rnumber);
}
}
catch(SQLException e){
System.out.println(e.getMessage());
}
}//*********************************
//update rooms
public static void updateroom(long rnumber,Object roomtype,Object
location){
String update = "UPDATE hrvrooms SET
roomTypeId='"+Getids.getid("roomTypeId","hrvroomtype","name",""+roomtyp
e+"")
+"',locationId='"+Getids.getid("locationId","hrvlocation","name",""+loc
ation+"")+"' WHERE roomNumber='"+rnumber+"'";
63
}catch(SQLException e){
System.out.print(e.getMessage());
}
}
else{
}
}//////////*******************
hrvbooking.newbookingid=rss.getLong("max(bookingId)");
}
}
else {
}
catch(SQLException e) {
System.out.print("database error..save into booking
error"+e.getMessage());
64
}
}
}
catch(SQLException e) {
System.out.print("savebooking savebooking--
rooms"+e.getMessage());
}
try {
ResultSet rs=
DBconnect.stmt.executeQuery(findroomstaken);
while(rs.next()) {
taken++;
}
ResultSet rs1 =
DBconnect.stmt.executeQuery(findtotroomsava);
while(rs1.next()) {
available=rs1.getLong("available");
}
if((available-taken)<=0) {
a=false;
}
else {
a=true;
}
}
catch(SQLException e) {
System.out.println(e.getMessage());
}
return a;
}
}
public static void deletebookedrooms() {
return id;
while(rs.next()) {
id=rs.getLong("max(bookingId)");
}
}
catch(SQLException e) {
System.out.println(e.getMessage());
}
return id;
}
//checkin details
public static void saveintocheckinout(Object bookingid,String
datein,Object roomnumber) {
String save = "INSERT INTO hrvcheckinout VALUES
('"+Getids.getnewid("hrvcheckinout", "id")
+"','"+bookingid+"','"+datein+"','0000-00-00
00:00:00','"+roomnumber+"','0')";
String check = "SELECT * FROM hrvcheckinout WHERE
bookingid='"+bookingid+"'";
try {long count=0;
ResultSet rs = DBconnect.stmt.executeQuery(check);
while(rs.next()) {
count++;
}
if(count==0) {
DBconnect.stmt.execute(save);
hrvcheckin.checkinsuccess=1;
}
}
catch(SQLException e) {
System.out.println(e.getMessage());
}
int count=0;
try {
ResultSet rs = DBconnect.stmt.executeQuery(check);
while(rs.next()) {
count++;
}
if(count==0) {
DBconnect.stmt.execute(save);
}
catch(SQLException e) {
System.out.println(e.getMessage());
}System.out.println(save);
}
mainly concerned with building the right product while verification is concerned with
building the product right. Verification involves running the system in stimulated
environment using simulated data while validation involves running the system on a live
environment using real data. We can say verification involves checking that the program
conforms to its specification while validation involves checking that the program as
implemented meets the expectations of the software user.
The essence of this stage is to make sure that the system function as prescribed by the
users hence a need to detect syntax and logical errors and obtain a clear compilation is
needed. This ensures that the system will be ready to be accepted and implemented.
Module
Module
Test allall44main
Test main
modulesofofsystem
system
modules
Subsystem
Subsystem
Testing
Testing
System
System
Testing
Testing
69
Unit testing
This involved individual programs (functions or methods) of the system being tested
independently to ensure its functionality and integrity.
Module testing
In this case each of the five modules: login, products and inventory, orders, suppliers and
user were tested using bottom up design testing. Each module was created separately and
tested separately then linked to form one. This testing strategy was instrumental in the
understanding of all the validation that needed to be coded as per module. Module testing
was rather the test of related unit components of the system. Execution paths, error-
handling paths, normal, abnormal and extreme data were thoroughly tested.
Subsystem testing
System modules that were related formed system subsystems these were tested for data,
stress, and error integrity. Database was also tested as a subsystem of its own. The new
project information subsystem was the major subsystem tested ahead of other sub
systems
System testing
The integrated system was then tested on the system testing stage. Methods used to test
the whole system were:
In this type of testing no reference was made to the code. The whole integrated system
was tested by inputting all relevant data to test the correctness of data input, to test also
the correctness of output as well as the correctness of data and systems validation rules.
System is taken as a black box that requires inputs and produce outputs with not much
knowledge of what goes on inside. Output results were compared with the expected
results.
Stress Testing
In stress testing, the system was exercised beyond its maximum design load. Stressing the
system often causes defects to come to light. Many tasks were operated on the system at
once and the system showed signs of robustness.
Before a user can use the system resources the user has to login. The above image shows
the login page. If the user has no rights to access the appropriate module or resource the
image below shows the error page that will show the resource that the user must acquire
from the administrator.
The users of the system upon supplying the correct login details will be able to access
modules that are only related to their roles or privileges on the system. When a valid
username and password is supplied by the user, the menu appears.
System can sustain multiple tasks when using the system, however it tends to be
slow in retrieving data and saving data to the database if multiple tasks are saving
or retrieving data from the system.
Data saving because of wrong interface component used was detected, this was
rectified by changing the component being used to a combo box. This resolved
the data saving problem that had risen because of the interface design.
Expected results were produced and necessary debugging was done on modules
whose results were at variance with the expected set of data.
The requirements as postulated in the Requirements Specification were
completely satisfied by the system, although new issues outside the parameters of
the specified requirements were raised, these were incorporated into the new
system. Users accepted the system and its functionalities in totality although the
testing process for the users is an ongoing process.
Errors emanated mostly from users inputting wrong data in particular fields; this
however was resolved by using combo boxes, which restricted users to a specified
data range.
72
Installation
This is a technical process where a system replaces the old system and will take effect
after the establishment of the operational environment and training has been established.
Operational Environment
This facilitates the examining of all system components that affect the system
performance. Changes arising will be verified and user approval obtained. Examining of
the production environment will include:
Hardware and software configurations
- Operating system programs and utilities
- Network resources
Training
Training is going to facilitate delivery of the right training to the right people at the right
time in order for efficient and proper use of the system to be achieved. Specific training
will be necessary for the System administrator (who will operate as systems
administrator) and all the stock data clerks.
In-house training
The systems analyst will have the responsibility for conducting training of users on how
to use the system. The training techniques to be used are:
- Demonstrations
- Charts
Demonstrations
These will enable the systems analyst to demonstrate to the users how to use the system.
He will demonstrate the procedures for prompting the password, entering data, checking
records, and printing of various reports.
Charts
73
The same procedure will be followed only that the training will be shown on charts for
procedure of use. The trainer will be tabulating data on charts for use to be applied to the
real system.
Proposed set-up
Is a technical process where a new system replaces the old system? The users in the
organization will be transferred from using the “as is” business process to the “to be”
new system process offered by the new system.
The approach that is easy and feasible considering the business value, parallel
conversion will maintain the integrity of old system data while new system is being
implemented so when a process cannot be done on the new system, business does not
stop, and old system takes over. Having both the new and the old system working at the
same time can also provide extra time for the new system testing with real data.
Parallel running
Current System
Proposed
system
74
Unfreeze
Migration Support
Technical conversion and
Change management Maintenanc
Migration
Specifies what will be performed by people and it includes technical aspects such as
installing hardware and software and converting data from current system to the proposed
system. There are 3 major steps in migration process and these are:
- Installation of hardware and should be tested and certified.
- Software is installed.
- Convert data from the “as-is” system to the “to-be” system.
Parallel Conversion
The conversion method to be used is parallel conversion. This method allows both the
new and old system to operate fully for a specified period of time. Both systems operate
side by side until the project development team and end-users agree to switch over to the
new system after satisfaction that the new system will be able to run independently
without complexities. Data will be input to both systems and results will be compared
and verified. Errors will be identified and corrected without having to disrupt the daily
operations of the business. This method facilitates the solving of operating problems
before the old system is abandoned.
The main advantage:
- It gives the end –user enough time to verify the efficiency and effectiveness of the
new system.
- Risk is relatively low because results can be verified and a backup option exists.
75
5.7 Conclusion
During testing, the old and the new system were run in parallel so that any
anomalies in the new system could not affect the usual flow of business.
Modifications were made to the new system until it met the user requirements.
Evaluation of the new system was then done.
CHAPTER SIX
6. Conclusions
6.1 Summary
76
• Reduction in time
Time is reduced since reports, which were written manually, are now being
created and printed automatically.
• User friendliness of the system
This objective has been achieved. The system is highly user friendly that even a
newly employed person can operate the system without difficulties. The system
77
has a user manual imbedded in it. The graphics makes the system look
presentable.
The development of the system had its own problems that requested the
developers to go out of their way to overcome them. The major problem
faced was of little time allocated for the project. This led to rushing of most
system modules thus compromising on the quality of the finished product.
However, due to hard work and good planning, the developer successfully
managed to complete the project on time.
• A network system should be introduced such that different offices are able to
communicate so as to manipulate the centrally stored database