Professional Documents
Culture Documents
Features:
Manage Rooms
Check-In
Search customer
Check-out room
: اعداد
محمود نضال تحسين
احمد فاضل
:اشراف االستاذة
ميس قحطان صديق
Introduction:
Object Oriented Programming in C++
The prime purpose of C++ programming was to add object orientation to the C programming language,
which is in itself one of the most powerful programming languages. The core of the pure object-oriented
programming is to create an object, in code, that has certain properties and methods. While designing
C++ modules, we try to see whole world in the form of objects. Object Oriented programming is a
programming style that is associated with the concept of Class, Objects and various other concepts
revolving around these two, like Inheritance, Polymorphism, Abstraction, Encapsulation etc.
Let us try to understand a little about all these, through a simple example. Human Beings are living
forms, broadly categorized into two types, Male and Female. Right? Its true. Every Human being(Male or
Female) has two legs, two hands, two eyes, one nose, one heart etc. There are body parts that are
common for Male and Female, but then there are some specific body parts, present in a Male which are
not present in a Female, and some body parts present in Female but not in Males. All Human Beings
walk, eat, see, talk, hear etc. Now again, both Male and Female, performs some common functions, but
there are some specifics to both, which is not valid for the other. For example : A Female can give birth,
while a Male cannot, so this is only for the Female. Human Anatomy is interesting, isn't it? But let's see
how all this is related to C++ and OOPS. Here we will try to explain all the OOPS concepts through this
example and later we will have the technical definitons for all this.
There are a few principle concepts that form the foundation of object oriented programming −
Object
This is the basic unit of object oriented programming. That is both data and function that operate on
data are bundled as a unit called as object.
Class
When you define a class, you define a blueprint for an object. This doesn't actually define any data, but
it does define what the class name means, that is, what an object of the class will consist of and what
operations can be performed on such an object.
Abstraction
Data abstraction refers to, providing only essential information to the outside world and hiding their
background details, i.e., to represent the needed information in program without presenting the details.
For example, a database system hides certain details of how data is stored and created and maintained.
1
Similar way, C++ classes provides different methods to the outside world without giving internal detail
about those methods and data.
Encapsulation
Encapsulation is placing the data and the functions that work on that data in the same place. While
working with procedural languages, it is not always clear which functions work on which variables but
object-oriented programming provides you framework to place the data and the relevant functions
together in the same object.
Inheritance
One of the most useful aspects of object-oriented programming is code reusability. As the name
suggests Inheritance is the process of forming a new class from an existing class that is from the existing
class called as base class, new class is formed called as derived class. This is a very important concept of
object-oriented programming since this feature helps to reduce the code size.
Polymorphism
The ability to use an operator or function in different ways in other words giving different meaning or
functions to the operators or functions is called polymorphism. Poly refers to many. That is a single
function or an operator functioning in many ways different upon the usage is called polymorphism.
Overloading
The concept of overloading is also a branch of polymorphism. When the exiting operator or function is
made to operate on new data type, it is said to be overloaded.
2
Project explanation:
Idea
project is a project for managing the hotel rooms and reservation throw multi features that help to
register,checkin,add rooms and other features .
Code explanation:
We will start by explaining every piece of code in the project and for that we will explain the functions
then we will gather all the pieces to make a running managing hotel rooms program
Customer class
3
Room Class
Then we will will need a Hotel management class for putting our functions in
4
We now start with the first function which is Check in()
Check in secreen1
5
Check in secreen2
6
2. getAvilableRooms() to check if there is available room
7
3. searchcustomer() to search if this customer is reserving a room
8
4. Check out() to checkout from room
9
5.getsummeryreport() to get a report about the status of hotel
10
Now the Main() finction will contain all the options in hotel including add rooms
Main secreen1
11
Main secreen2
12
Finally the integration of code is below
#include<iostream>
#include<string.h>
#include<conio.h>
//Class Customer
class Customer
{
public:
char name[100];
char address[100];
char phone[12];
char from_date[20];
char to_date[20];
float payment_advance;
int booking_id;
};
class Room
{
public:
char type;
char stype;
char ac;
int roomNumber;
int rent;
int status;
//Global Declarations
class Room rooms[max];
int count=0;
13
cin>>room.type;
cout<<"\nType Size (B/S) : ";
cin>>room.stype;
cout<<"\nDaily Rent : ";
cin>>room.rent;
room.status=0;
14
//hotel management class
class HotelMgnt:protected Room
{
public:
void checkIn();
void getAvailRoom();
void searchCustomer(char *);
void checkOut(int);
void guestSummaryReport();
};
void HotelMgnt::guestSummaryReport(){
if(count==0){
cout<<"\n No Guest in Hotel !!";
}
for(int i=0;i<count;i++)
{
if(rooms[i].status==1)
{
cout<<"\n Customer First Name : "<<rooms[i].cust.name;
cout<<"\n Room Number : "<<rooms[i].roomNumber;
cout<<"\n Address (only city) : "<<rooms[i].cust.address;
cout<<"\n Phone : "<<rooms[i].cust.phone;
cout<<"\n---------------------------------------";
}
getch();
}
15
getch();
return;
}
rooms[i].status=1;
16
//hotel management shows all persons that have booked room
void HotelMgnt::searchCustomer(char *pname)
{
int i,found=0;
for(i=0;i<count;i++)
{
if(rooms[i].status==1 && stricmp(rooms[i].cust.name,pname)==0)
{
cout<<"\nCustomer Name: "<<rooms[i].cust.name;
cout<<"\nRoom Number: "<<rooms[i].roomNumber;
17
cout<<"\n*** Total Payable: "<<billAmount-
rooms[i].cust.payment_advance<<"/ only";
rooms[i].status=0;
}
getch();
}
//switch statement
switch(opt)
{
case 1:
cout<<"\nEnter Room Number: ";
cin>>rno;
i=0;
for(i=0;i<count;i++)
{
if(rooms[i].roomNumber==rno)
{
flag=1;
}
}
if(flag==1)
{
cout<<"\nRoom Number is Present.\nPlease enter unique Number";
flag=0;
getch();
}
else
{
rooms[count]=room.addRoom(rno);
count++;
}
break;
case 2:
cout<<"\nEnter room number: ";
18
cin>>rno;
room.searchRoom(rno);
break;
case 3:
//nothing to do
break;
default:
cout<<"\nPlease Enter correct option";
break;
}
}while(opt!=3);
}
using namespace std;
int main()
{
class HotelMgnt hm;
int i,j,opt,rno;
char ch;
char pname[100];
system("cls");
do
{
system("cls");
cout<<"######## Hotel Management #########\n";
cout<<"\n1. Manage Rooms";
cout<<"\n2. Check-In Room";
cout<<"\n3. Available Rooms";
cout<<"\n4. Search Customer";
cout<<"\n5. Check-Out Room";
cout<<"\n6. Guest Summary Report";
cout<<"\n7. Exit";
cout<<"\n\nEnter Option: ";
cin>>opt;
switch(opt)
{
case 1:
manageRooms();
break;
case 2:
if(count==0)
{
cout<<"\nRooms data is not available.\nPlease add the rooms first.";
getch();
}
else
hm.checkIn();
break;
case 3:
if(count==0)
{
cout<<"\nRooms data is not available.\nPlease add the rooms first.";
getch();
19
}
else
hm.getAvailRoom();
break;
case 4:
if(count==0)
{
cout<<"\nRooms are not available.\nPlease add the rooms first.";
getch();
}
else
{
cout<<"Enter Customer Name: ";
cin>>pname;
hm.searchCustomer(pname);
}
break;
case 5:
if(count==0)
{
cout<<"\nRooms are not available.\nPlease add the rooms first.";
getch();
}
else
{
cout<<"Enter Room Number : ";
cin>>rno;
hm.checkOut(rno);
}
break;
case 6:
hm.guestSummaryReport();
break;
case 7:
cout<<"\nTHANK YOU! FOR USING SOFTWARE";
break;
default:
cout<<"\nPlease Enter correct option";
break;
}
}while(opt!=7);
getch();
}
20
Final result after run
21
وزارة التعليم العالي والبحث العلمي
الجامعة التقنية الشمالية
الموصل/ الكلية التقنية الهندسية
Report about
Genetic Algorithms in C++
Submitted by:
Mahmood Nidhal Tahseen
pg. 1
Genetic Algorithms
Genetic Algorithms(GAs) are adaptive heuristic search algorithms that
belong to the larger part of evolutionary algorithms. Genetic algorithms are
based on the ideas of natural selection and genetics. These are intelligent
exploitation of random search provided with historical data to direct the
search into the region of better performance in solution space. They are
commonly used to generate high-quality solutions for optimization
problems and search problems.
Genetic algorithms simulate the process of natural selection which
means those species who can adapt to changes in their environment are
able to survive and reproduce and go to next generation. In simple words,
they simulate “survival of the fittest” among individual of consecutive
generation for solving a problem. Each generation consist of a
population of individuals and each individual represents a point in search
space and possible solution. Each individual is represented as a string of
character/integer/float/bits. This string is analogous to the Chromosome.
Foundation of Genetic Algorithms
pg. 2
components).
Fitness Score
A Fitness Score is given to each individual which shows the ability of an
individual to “compete”. The individual having optimal fitness score (or
near optimal) are sought.
The GAs maintains the population of n individuals (chromosome/solutions)
along with their fitness scores.The individuals having better fitness scores
are given more chance to reproduce than others. The individuals with
better fitness scores are selected who mate and produce better
offspring by combining chromosomes of parents. The population size is
static so the room has to be created for new arrivals. So, some individuals
die and get replaced by new arrivals eventually creating new generation
when all the mating opportunity of the old population is exhausted. It is
hoped that over successive generations better solutions will arrive while
least fit die.
Each new generation has on average more “better genes” than the
individual (solution) of previous generations. Thus each new generations
have better “partial solutions” than previous generations. Once the
offsprings produced having no significant difference than offspring
produced by previous populations, the population is converged. The
algorithm is said to be converged to a set of solutions for the problem.
Operators of Genetic Algorithms
Once the initial generation is created, the algorithm evolve the generation
using following operators –
1) Selection Operator: The idea is to give preference to the individuals
with good fitness scores and allow them to pass there genes to the
successive generations.
2) Crossover Operator: This represents mating between individuals. Two
individuals are selected using selection operator and crossover sites are
chosen randomly. Then the genes at these crossover sites are exchanged
pg. 3
thus creating a completely new individual (offspring). For example –
pg. 4
The whole algorithm can be summarized as –
1) Randomly initialize populations p
2) Determine fitness of population
3) Untill convergence repeat:
a) Select parents from population
b) Crossover and generate new population
c) Perform mutation on new population
d) Calculate fitness for new population
Example problem and solution using Genetic Algorithms
Given a target string, the goal is to produce target string starting from a
random string of the same length. In the following implementation, following
analogies are made –
Characters A-Z, a-z, 0-9 and other special symbols are considered as genes
A string generated by these character is considered as
chromosome/solution/Individual
Fitness score is the number of characters which differ from characters in
target string at a particular index. So individual having lower fitness value is
given more preference.
pg. 5