You are on page 1of 116

1.

INTRODUCTION:
This project exploits internet technology to provide access to the Payroll to the employees. This project is formulated for Office Management System, but. To use this project the office must buy storages space on commercial web servers or run his own dedicated web server. The company web site also should be registered in DNS (Domain Name Saver) with specific URL (Uniform Resource Locater). The employees get access to this web site by invoking URL of the Office Management System. When a customer opens the website of office in a browser, he/she gets interaction with the office different type of services and facilities. User can select Services from lists manually or can use search tool to find the specific Service or facilities specification. User can also check the services, category wise and see the various details about to charges, availability, requirements etc. User can read the hotel related inquiries which are circulating on the offices website and by that user can estimate the offices effectiveness in this field. Given services and applicable charges and availability can be compare from other offices websites. Before development of the system it has to be seen that how the computerized system is going to benefit the users (i.e. client) as compared to the manual system, which they are currently using. And how it is going to benefit them more as compared stem.

1.1 OBJECTIVE
The main objective behind this project is to provide a computerized information system to improve the efficiency and effectiveness of evaluators information of an OFFICE. a) Develop an application, which is user friendly. b) Enable the evaluator to view the information about any particular customer. Any information of any customer can be retrieve very quickly. c) To provide up-to-date and latest information about employees. It will provide what is the net amount to be transaction. d) Reduce the chances of error. The transaction of a customer is calculated correctly and saved in a database. e) To provide efficient and quick result of various queries of the end user.

f) Users query and satisfaction can be improved. g) Reduced transaction cost, cycle time and communication costs. It will also reduce paper cost. h) It will provide report of evaluation with their net calculation. i) j) It will provide report regarding to customer. It will also generate evaluation and payment details report of evaluators for specific code very easily. k) This customer database will also help organization identity future potential employees. l) To determine the efficiency of its service by computerizing the OFFICE MANAGEMENT SYSTEM, this will increase the customer satisfaction. m) The cost incurred to make the project should be as cheap as possible. n) The presentation of project is as simple as possible. o) Very easy to understand the work. p) To make a user friendly software.

1.2 AIM OF THE PROJECT


The first thing that we did in this project was to know our aim. Our first aim was to do our work on the project. For this the aim was set high and we were ready to achieve this aim. But before beginning the project we had certain aims, these are following: Our first aim was to analyze the problem properly; this makes our work very easy. After analyzing the problem we made a well plan so as to achieve our goal. We make our strategies to complete the task. This is very important to tackle the problem that might come while working.

The most important aim was to complete the work on time. We decided to give our best in completing the work on time. 1.3. PURPOSE OF THE PROJECT:
a) To provide efficient and quick result of various queries of the end user. b) Users query and satisfaction can be improved. c) Reduced transaction cost, cycle time and communication costs. It will also Reduce paper cost. .

d) It will provide report of evaluation with their net calculation. e) It will provide report regarding to customer. f) It will also generate evaluation and payment details report of evaluators for Specific code very easily.

2. PROBLEM SELECTION
The field of computer science has come across problems associated with complexity since its formation. Developers solved earlier problems of complexity by choosing the right data structures, developing algorithms, and by applying the concept of separation of concerns. Although the term software architecture is relatively new to the industry, software engineering pioneers have applied the fundamental principles of the field sporadically since mid 1980s. Early attempts to capture and explain software architecture of a system were imprecise and disorganized, often characterized by a set of box-and-line diagrams. During the 1990s there was a concentrated effort to define and codify fundamental aspects of the discipline. Initial sets of design patterns, styles, best practices, description languages, and formal logic were developed during that time. The software architecture discipline is centered on the idea of reducing complexity through abstraction and separation of concerns. To date there is still no agreement on the precise definition of the term software architecture. Some possible views of problem checks are:

Functional/logic view Code/module view

Development/structural view Concurrency/process/thread view Physical/deployment view User action/feedback view Data view

2. 1 PROBLEM WITH CURRENT SYSTEM


This project is an attempt to make the task easier for any one of the Office employee. It provides the full information, about the present or working employees in the Office.

Centralized system which will enable the employees to view their booking status,
date time at any time

Automation of record availability will simplify the process and saves the time as well. Simple and easy checking of employees in the office.
Significant reduction in time spent on preparation of reports

Reduced chances of errors while entering data, employee information, and


termination of the employee.

Reducing technology cost by using computerized data management strategies. Employee can easily select from available data. Provides full information about the available records. Eliminate paper from storage.
Reducing man power, working on manual work table.

2.2. NEED FOR THE PROPOSED SYSTEM


This project is an attempt to make the task easier for any one of the Office employee. It provides the full information, about the present or working employees in the Office. a) Centralized system which will enable the employees to view their booking status, date time at any time b) Automation of record availability will simplify the process and saves the time as well.

c) Simple and easy checking of employees in the office. d) Significant reduction in time spent on preparation of reports e) Reduced chances of errors while entering data, employee information, and termination of the employee. f) Reducing technology cost by using computerized data management strategies. g) Employee can easily select from available data. h) Provides full information about the available records. i) Eliminate paper from storage j) Reducing man power, working on manual work table

3. PROJECT MONITORING SYSTEM


Software project management is a sub-discipline of problem monitoring in which software projects are planned, monitored and controlled. In current competitive scenario every business establishment needs quality processes to increase their efficiency as well as improve their productivity. It is of vital importance that manual, time consuming and monotonous operations are automated so as to streamline the working of an organization. Since, the existing system (manual work) takes more time and manpower for processing. It is keeping in mind this business philosophy (mantra) that we propose an Online Officeing for Eves Office of India. At the moment, each customer has to go to the Office and have to ask about the upcoming blank room. It was very cumbersome and hectic job for customer as well as for Office Manager.

3.1 MODULE DESCRIPTION

In this project we have used Water fall model. Water fall model is an software development process model that emphasizes an extremely short development cycle. The following phases are encompassed:

Business modeling: All the information about the business functioning of the Airways
department is collected, how the data and information is flow from one end to another end using the following questions: What information drives the department process? What information is generated? Who generates it? Where does the information go? Who process it?

Data modeling: The information collected in Business modeling phase is refined into a set of
data objects that are needed to support the project. The attributes of each object are identified and the relationships between these objects defined.

Process modeling: Processing descriptions and functions like adding, modifying, deleting
records, printing reports, providing information, file handling etc. are created.

Application generation: The fourth generation techniques are used to generate application,
like reusing the predefined functions or creating reusable components.

Testing: Most of the functions are already tested, as they are predefined functions. However,
new components or functions are also tested after application generation.

It is the interdisciplinary part of science, dealing with analysis of sets of interacting entities, the systems, often prior to their automation as computer systems, and the interactions within those systems. This field is closely related to operations research. It is also "An explicit formal inquiry carried out to help someone, referred to as the decision maker, identify a better course of action and make a better decision than he might have otherwise made." Systems analysis researchers apply mathematical methodology to the analysis of the systems involved trying to form a detailed overall picture. There are various important factors, which should be considered prior to system selection. They are: Define system capabilities that make sense for the business.

Specify the magnitude of the problem, i.e., clarify whether selection entails a few
peripherals or a major decision concerning the mainframe. Assess the competence of the in-house staff. Hardware and software should be considered as a package. Develop a time frame for the selection process. Provide user indoctrination.

This is crucial, especially for first-time users. Selling the system to the user staff, provide adequate training and creating an environment conductive to implementation are prerequisites for system acquisition. The selection process should be viewed as a project and a project team should be formed with the help of management. The selection process consists of several steps, which are discussed below:

Requirements analysis: The first step in selection understands the user's requirements within
the framework of the organizations objectives and the environment in which the system is being installed.

System specifications: System specifications must be clearly defined. These specifications


must reflect the actual applications to be handled by the system and include system objectives, flowcharts, input-output requirements, file structure and cost.

Request for proposal: After the requirement analysis and system specifications have been
defined, a request for proposal is prepared and sent to selected vendors for bidding.

Evaluation and validation: The evaluation phase ranks various vendor proposals and
determines the one best suited to the user's requirements. It looks into items such as price, availability and technical support. System validation ensures that the vendor can, in fact, match his/her claims, especially system performance.

Vendor selection: This step determines the vendor with the best combination of reputation,
reliability, service record, training, delivery time, lease/finance terms. The selected vendors

are invited to give a presentation of their system. The system chosen goes through contract negotiations before implementation. WORKING OF THE PROJECT

A normal user can easily maintain records through enter the issuing and donating date with the name of the customer or donor with their blood group. The user can easily check the immediate status of the blood bank. The user can also generate the report by entering the date of input after press four. Now from the last option the user can exit from the system by press zero.

4. SYSTEM STUDY 4.1 Feasibility Study


The feasibility study describes and evaluates the candidate system and provides for the selection of the system that meets the system performance requirements. The feasibility study is to serve as a decision document. The result of our feasibility study for Consultancy Chat Software is as follows.

4.1.1 Technical Feasibility:


During the technical feasibility studies following issues are taken into Consideration . Whether the required technology is available or not? Required resources are available or not? (Manpower, programmer, software and hardware etc) A study of resource availability may affect the ability to achieve an acceptable system. The technical feasibility is frequently the most difficult area to ensure at this stage. Because objective, performance, functions are somewhat hazy, anything seems possible if the right assumptions are made. It is essential that the process of analysis and definition be conducted in parallel with an assessment of technical feasibility. The consideration that is normally associated with technical feasibility includes resource availability of the organization where the project is to be developed and implemented.

Once the technical feasibility is established, it is important to consider the monetary factors also. Since it might happen that developing a particular system may be technically possible but it may be require huge investments and benefits may be less. For evaluating this, economic feasibility of the proposed system is carried out. As in our proposed system our team has technically trained manpower with knowledge of developing the system. We are going to use web technology in our system, which is readily available. Software to be used is also available easily. So technically, the project is feasible.

4.1.2 Economical Feasibility:


A system that can be developed technically and that will be used if installed must still be profitable for organization. For any system if the expected benefits equal or exceed the expected costs, the system can be judged to be economically feasible. In economic feasibility, cost benefit analysis is done in which expected costs and benefits are evaluated. Economic analysis is used for evaluating the effectiveness of the proposed system. In economic feasibility, the most important is cost benefit analysis. As the name suggests, it is an analysis of the cost to be incurred in the system and benefits derivable out of the system. As in our institute the hardware and software required for this type of system is already available so economically our project is feasible.

4.1.3 Behavioral Feasibility:


Employees of company are habitual to work with manual system &they dont have knowledge to work in a wave based application that is used in their intranet & they are quit resistant to make change in their working attitude. People are inherently resistant to change & computer have been known to facilitate change an estimate should be made of how strong reaction the user staff is likely to have toward the development of computerized system. So, we have gone through the requirement & thinking of employees so that they feel that they are working in there manual system but it is very easy because now all checks are made by the machine itself. So we are going to design same front as there general system looks like this system will provide them much more facility &less mental disturbance to check correct entry is placed at its place or not. The system will provide them automatic reporting and checks on entries at the time of entry as well as when these entries are stored in there database. So we are making them agree on the working process of computer & with help of their reaction we have modified our front-end look and feel and backend operation. It is common thing that computer installation have something to do with turn over transfer retraining and changes in account status. Therefore it

is understandable that introduction of candidate system special efforts to adequate sale and train the staff on new ways of working in company.

Hence, we will suggest them in company the free of cost training about the system & when the system will be installed we will provide a detailed introduction & manual to them. 4.1.4 Environmental Feasibility
People are inherently resistant to change, and computers have been known to facilitate change. An estimate should be made of how strong a reaction the user staff is likely to have towards the development of a computerized system. Thus web application would be very easily acceptance by the people. The opposition will be only from other competitor sites that can be managed. Thus the expected system (web application) I environmentally feasible.

4.1.5 Operational Feasibility:


Operational feasibility criteria measure the urgency of the problem (survey and study phases) or the acceptability of a solution (selection, acquisition and design phases). How do you measure operational feasibility? The essential criteria for the operational feasibility are: There is sufficient support for the project from the user. The project helps the organization to maintain the details of the accounts It becomes easier to manage the accounts summary in each year.

and their status of each customer. Is the problem worth solving or will the solution to the problem work? There are certain measures, which decide the effectiveness of the system. These measures can be collectively called as PIECES. P (PERFORMANCE): The OBS provides adequate throughput and response time. I (INFORMATION): The OBS provides end-users and managers with tamely, pertinent, accurate, and usefully formatted information. It increases the employees efficiency and effectiveness as they are getting timely direction. It helps in gaining goodwill for the company as the customer can come to know about his problem/complaint status at any time (24 hours). E (ECONOMY):

10

The OBS offers adequate service level and capacity to reduce the costs of the business or increase the profits of the business. C (CONTROL): The OBS offers adequate controls to protect against fraud and embezzlement and to guarantee the accuracy and security of the data and information. Only authorize user can access OBS. E (EFFICIENCY): The OBS makes maximum use of available resources including people, time, flow of forms, minimum processing delays and the like. S (SERVICES): The OBS provides desirable and reliable services to those who need it. The OBS is flexible and expandable. It can be further expended as per the customer requirement.

5. SYSTEM ANALYSIS
System analysis is the application of the system approach to problem solving using computers. The ingredients are system elements, process and technology. This means that to do system work, one needs to understand the system concept and how organization operate as a system and then design appropriate computer based system that will meet an organization requirements. It is actually a customized approach to the use of computers for problem solving. System analysis works with users to identify goals and build system to achieve them. System development revolves around a life cycle that begins with the recognition of user needs. Following the feasibility study, the key stages of the cycles are evaluation of the present system, information gathering, cost/benefit analysis, detailed design, and implementation of candidate system. The life cycle is not a procedure that deals with H/w and S/w. It is building computerbased system to help the user operate a business or make decision effectively and manage an enterprise successfully.

5.1 Requirements For The Projects 5.1.1 Software Requirements: Software is the essential thing for any computer system, any Individual, Company, Branches which are running with computerization.

11

Here we have given some specific software for the company. Because there are so many types of software available in the market at this time but software should be suitable for the work. So, we have selected suitable software for the organization which is given below:

Language Used Operating system

:C++ : Windows XP

Table 5.4.1 software requirement

WHY C++?
C++ is an ideal programming language for developing professional application for any organization. Object Oriented Programming (OOP) has become the preferred programming approach by the software industries, as it offers a powerful way to cope the complexity of real-world problems. Among the OOP language available today, C++ is by far the most widely used language.

OPERATING SYSTEM
For this type of organization, all work should be done purely, fast with all types of security. So we have selected Windows XP because this operating system provides all the facilities which are required for this type of organization with all types of security. We think Windows XP is the best suitable operating system for any small network organization. 5.1.2 Hardware Requirements:

12

We know that hardware is most important for computer, without hardware we cant do anything, so we have used different types of hardware, which are required in different division of the OFFICE MANAGEMENT SYSTEM.

Hardware and their basic specification and information are given below: S. No. 1 2 3 Device Processor RAM Hard Disk Description Core2Duo 2.4GHz 512 MB 160 GB Company INTEL Simtronics Samsung Price/Unit 4500.00 450.00 2050.00

Table : 5.1.2 All software and hardware requirement are needed for smooth running of project, without this software and hardware project may run and user can work with this but not smoothly 5.2 SDLC 1. Integration and System Testing Phase: The purpose of unit testing is to determine
that each independent module is correctly implemented. This gives little chance to determine that the interface between modules is also correct, and for this reason integration testing is performed. System testing involves the testing of the entire system, whereas software is a part of the system. This is essential to build confidence in the developers before software is delivered to the customer or released in the market.

2. Operation and Maintenance Phase: Software maintenance is a task that every


development group has to face, when the software is delivered to the customers site, installed and is operational. Therefore, release of software inaugurates the operation and maintenance phase of the life cycle. The time spent and effort required to keep the software operational after release is very significant.

13

3. Implementation and Unit Testing Phase: During testing, the major activities are
centered around the examination and modification of the code. Initially, small modules are tested in isolation from the rest of the software product. There are problems associated with testing a module in isolation. How do we run a module without anything to call it, to be called by it or , possibly, to output intermediate values obtained during execution? Such problems are solved in this phase and modules are tested after writing some overhead code.

4. Integration and System Testing Phase: The purpose of unit testing is to determine
that each independent module is correctly implemented. This gives little chance to determine that the interface between modules is also correct, and for this reason integration testing is performed. System testing involves the testing of the entire system, whereas software is a part of the system. This is essential to build confidence in the developers before software is delivered to the customer or released in the market.

5. Operation and Maintenance Phase: Software maintenance is a task that every


development group has to face, when the software is delivered to the customers site, installed and is operational. Therefore, release of software inaugurates the operation and maintenance phase of the life cycle. The time spent and effort required to keep the software operational after release is very significant.

Requirements analysis & specification Design

Implementation & unit testing Integration & System testing

Operation & maintenance 14

Fig: 1 SDLC

15

USE CASE

View details

Login
Search Details

Add new Employee

Update details Administrator

Employee

Deleting employee details

Salary view

Calculation

Manager

working days

Exit

Fig: 2 use case

16

DFD 0-level DFD

0-level DFD
Update, Add, Delete & login Update Details

Administrator
View Info & Search Info

Office Managemen t System

Addition

Employee
Deletion

Manager

View Info

Search

Add Info

Fig : 3 DFD 0 LEVEL

17

1 level DFD

ADMIN

Add/delete Info

Add/delete Customer login

Emp..Data

Manager

Modify/search/ view details bills

Report generation of emp. Emp. d Search Emp.

Emp..Data

View List

Fig : 4 DFD 1 LEVEL

18

2 Level DFD 1. LOGIN

Emp.

New emp. Login Admin Emp.

2. EMPLOYEE INFORMATION Access emp. info Display list Admin

Retrieve info

Emp. info

Enter/update/delete

Validate info

19

3. EMPLOYEE DETAILS Access customer info Retrieve info Display list Admin

Emp. info

Enter/update/delete Validate info

Fig: 5 DFD 2 LEVEL

20

ENTITY RELATIONSHIP DIAGRAM

Admin

PW DD

DETAILS

Owned by Employee ID Nam e Ph._no Pin No Address

Manager Add Search Delete

Fig: 6 E-R DIAGRAM

21

FLOW CHART A

Enter employees information

No Is Valid Data?

Save data into file

Return

22

Enter emp. ID

Display employee information Yes If you want modify No

Do the changes

Save data into file

Return

23

Enter employee ID

Display employee information Yes No

If you want delete?

Delete data from file

Return

24

Display employee information

Return

25

Enter employees information

No Is Valid Data?

Save data into file

Return

26

Enter Employee ID

Display information Yes No If You want edit

Do the changes

Save data into file

Return

27

Enter emp. ID

Display Information

If you want delete?

No

Delete data from file

Return

28

Enter search information

Is Valid Data?

No

Yes

Save data into file

Return

6. SYSTEM DESIGN
System design is a process of problem solving and planning for a software solution. After the purpose and specifications of software are determined, software developers will design or

29

employ designers to develop a plan for a solution. It includes low-level component and algorithm implementation issues as well as the architectural view

6.1 MOULARITY
Design is the highly significant phase in the software development where the designer plans how a software system should be produced in order to make it functional, reliable and reasonably easy to understand, modify and maintain. Designing software systems means determining how requirements are realized and result is a software design document (SDD). Thus, the purpose of design phase is to produce a solution to a problem given in SRS document.

6.1.1 MODULE COUPLING


Coupling is the measure of the degree of interdependence between modules. Two modules with high coupling are strongly interconnected and thus, dependent on each other. Two modules with low coupling are not dependent on one another. Loosely coupled systems are made up of modules which are relatively independent. Highly coupled systems share a great deal of dependence between modules. DATA COUPLING The dependency between module A and B is said to be coupled it their dependency is based on the fact they communicate by only passing of data. Other than communication through data, the two modules are independent. A good strategy is to ensure that no module communication contains tramp data. STAMP COUPLING Stamp coupling occurs between module A and B when complete data structure is passed from one module to another. Since not all data making up the structure are usually necessary in communication between the modules, stamp coupling typically involves tramp data. If one procedure only needs a part of a data structure, calling module should pass just that part, not the complete data structure. CONTROL COUPLING Module A and B are said to be control coupled if they communicate by passing of control information. This is usually accomplished by means of flags that are set by one module and reacted upon by the dependent module.

EXTERNAL COUPLING

30

A form of coupling in which has a dependency to other module, external to the software being developed or to a particular type of hardware. This is basically related to the communication to external tools and devices. COMMON COUPLING With common coupling, module A and B have shared data. Global data areas are commonly found in programming languages. Making a change to the common data means tracing back to all the modules which access that data to evaluate the effect of change. With common coupling, it can be difficult to determine which module is responsible for having set a variable to a particular value. CONTENT COUPLING Content coupling occurs when module A changes data of module B or when control is passed from one to the middle of another.

6.2 MODULE COHESION


Cohesion is a measure of the degree to which the elements of a module are functionally related. A strongly cohesive module implements functionality that is related to one feature of the solution and requires little or no interaction with other modules. 1. FUNCTIONAL COHESION X and Y are part of a single functional task. This is very good reason for them to be contained in the same procedure. The mathematical subroutines such as calculate GPA or cumulative GPA are typical examples of functional cohesion. 2.SEQUENTIAL COHESION X output some data which forms the input to Y. This is the reason for them to be contained in the same procedure. 3. COMMUNICATIONAL COHESION X and Y both operate on the same input data or contribute towards the same output data. This is okay, but we might consider making them separate procedures. 4. PROCEDURAL COHESION X and Y are both structured in the same way. This is a poor reason for putting them in the same procedure. Thus, procedural cohesion occurs in modules whose instructions although accomplish different tasks yet have been combined because there is a specific order in which the tasks are to be completed. These types of modules are typically the result of first flow charting the solution to a program and then selecting a sequence of instructions to serve as a module. Since these modules consist of instructions that accomplish several tasks that are virtually unrelated these types of modules tend to be less maintainable.

31

5. TEMPORAL COHESION X and Y both must perform around the same time. So, module exhibits temporal cohesion when it contains tasks that are related by the fact that all tasks must be executed in the same time-span. The set of functions responsible for initialization, start up activities such as setting program counters or control flags associated with programs exhibits temporal cohesion. This is not a good reason to put them in same procedure. 6. LOGICAL COHESION X and Y perform logically similar operations. Therefore, logical cohesion occurs in modules that contain instructions that appear to be related because they fall into the same logical class of function. Considerable duplication can exist in the logical strength level. 7. COINCIDENTAL COHESION X and Y here no conceptual relationship other than shared code. Hence, coincidental cohesion exists in modules that contain instructions that have little or no relationship to one another. That is, instead of creating two components, each of one part, only one component is made with two unrelated parts.

6.3 STATERGY
A good system strategy is to organize the program modules in such a way that are easy to develop and later to, change. Structured design techniques help developers to deal with the size and complexity of programs. Analysis create instructions for the developers about how code should be written and how pieces of code should fit together to form a program. It is important for two reasons: First, even pre-existing code, if any, needs to be understood, organized and pieced together. Second, it is still common for the project team to have write some code and produce original programs that support the application logic of the system. BOTTOM- UP DESIGN A common approach is to identify modules that are required by many programs. These modules are collected together in the form of a library. These modules may be for match functions, for input- output functions, for graphical functions etc. This approach is lead to style of design where we decide how to combine these modules to provide larger ones; to combine those to provide even larger ones, and so on, till we arrive at one big module which is the whole of the desired program. Since the design progressed from bottom layer upwards, the method is called bottom-up design. The main arguments for this design is that if we start coding a module soon after its design, the chances of recording is high; but the coded module can be tested and design can be validated sooner than a module whose sub modules have not yet been designed.

32

This method has one terrible weakness; we need to use a lot of intuition to decide exactly what functionality a module should provide. If we get it wrong, then at a higher level, we will find that it is not as per requirements; then we have to redesign at a lower level. If a system is to be built from an existing system, this approach is more suitable, as it starts from existing modules.

6.4 DESIGN METHODOLOGIES


The scope of the systems design is guided by the framework for the new system developed during analysis. More clearly defined logical method for developing system that meets user requirements has led to new techniques and methodologies that fundamentally attempt to do the following: cut down drastically on cost overruns and delays

Improve communication among the user, analyst, designer, and programmer.


standardize the approach to analysis and design

Simplify design by segmentation.


improve productivity of analysts and programmer Improve documentation and subsequent maintenance and enhancements

7. SYSTEM TESTING AND IMPLEMENTATION 33

7.1 SYSTEM TESTING


Testing goes side by side with implementation that is aimed at ensuring that the system works efficiently and accurately before the live operation is performed. The common view of testing held by the user is to ensure that there are no errors in the program. System testing is to test the system as a whole. That is to test the system when all the modules and its sub modules have been integrated. This testing is done to ensure that all the modules, which work correctly when independent, works without any discrepancies when integrated. System testing ensures that the related modules works together to achieve the main objective of the system. Testing is a dynamic method for verification and validation, where the system is to be tested is executed & behavior of the system is observed. Due to this observes the failure of the system, from which the presence of fault to be performed to identify the fault.

7.1 METHODS OF TESTING Structural and Functional, in functional testing the internal logic of the system under testing is not considered and the test cases are decided from the specification or the requirement. It is often called black box testing. Equivalence class portioning, boundary analysis, and cause effect graphing are examples of methods for selecting test cases for functional testing. In structural testing, the cases are decided entirely on the internal logic of the program or module being tested. As the goal of testing is to detect any errors in the programs different flavor of testing are often used. Unit testing are used to test a module or a small collection of modules and the focus is on detecting coding errors on modules. Derived integration testing is combined into sub-system which is then tested. The goal here is to test the system design in system testing and acceptance testing, the entire system is tested. The goal here is to test the requirement themselves. Structural testing can be used for unit testing while at higher level mostly functional testing is used.

System testing is a critical phase in system implementation. Testing of a system involves hardware devices testing & debugging of computer programs & testing 34

information processing procedures. Testing can be done with test data, which attempts to simulate processing. The plane for testing are prepared and the implemented. The testing methods adopted in the testing of the testing & System testing. 7.2 TESTING OBJECTIVES: 1. Testing is a process of executing a program with the intent of finding an error. 2. A good test case is one that has a high probability of finding an as yet undiscovered error. 3. A successful test is one that uncovers an as yet undiscovered error.
4. Testing cannot show the absence of defects, it can only show that software defects are

system were Independent Unit

present.

7.3 TESTING LEVEL A software strategy for software testing integrates software test case design techniques into a well-planned series of steps that result in the successful construction of software. 7.3.1 UNIT TESTING: In unit testing the application developer tests the program in the system. The software units in the system are the modules that are assembled and integrated to perform a specific function. Unit testing focuses first on the modules independent of one another, to locate errors. This enables the programmer to detect error in coding and logic that exists within that module alone. While testing the module the concept of trace and break point are applied at different stages of testing. 7.3.2 INTEGRATION TESTING: The Integration Strategy dictates order in which modules must be available, and that exerts a strong influence on the order in which modules are written, debugged and unit tested Office Management System was tested with all its modules integrated and ensured that there were no errors.

7.6 IMPLEMENTATION:
Implementation is the stage of the project where the theoretical design is turned into a working system. At this stage the main work load, the greatest upheaval and the major impact on the existing system shifts to the user department. If the implementation is not

35

carefully planned and controlled, it can cause chaos and confusion. Implementation includes all those activities that take place to convert from the old system to the new one. The new system may be totally new, replacing an existing manual or automated system or it may be a major modification to an existing system. Proper implementation is essential to provide a reliable system to meet the organization requirements. Successful implementation may not guarantee improvement in the organization using the new system, but improper installation will prevent it. The process of putting the developed system in actual use is called system implementation. This includes all those activities that take place to convert from the old system to the new system. The system can be implemented only after thorough testing is done and if it is found to be working according to the specifications. The system personnel check the feasibility of the system. The most crucial stage is achieving a new successful system and giving confidence on the new system for the user that it will work efficiently and effectively. It involves careful planning, investigation of the current system and its constraints on implementation, design of methods to achieve the changeover. The more complex the system being implemented, the more involved will be the system analysis and the design effort required just for implementation. The system implementation has three main aspects. They are education and training, system testing and changeover. The implementation stage involves following tasks: Careful planning Investigation of system and constraints Design of methods to achieve the changeover Training of the staff in the changeover phase Evaluation of the changeover method The method of implementatio n and the time scale to be adop ted are found out initially. Next the system is tes ted prop erly and the same time users are trained in the new procedures.

36

8. DOCUMENTATION 8.1 CODING //******************************************************************* // Required header files //******************************************************************* #include <graphics.h> #include <fstream.h> #include <string.h> #include <stdlib.h> #include <stdio.h> #include <ctype.h> #include <conio.h> #include <dos.h> //****************************************************************** // Public functions required by many different functions. //****************************************************************** void statusbar(char[]) ; void getlinedelchar(char *, int, int, int &) ; void getline(char *, int) ; //******************************************************************* // Class that contains the drawing functions & the main screen. //******************************************************************* class draw { public : void lineh (int, int, int, char) ; void linev (int, int, int, char) ; void box (int, int, int, int, char) ; void mscreen () ; 37

}; //******************************************************************* // Class contains functions for drawing main menus //******************************************************************* class menu { public : void main () ; int vertical_menu (char [] [20], int, int, int, int) ; int horizontal_menu(char [] [20], int, int, int, int); void help () ; }; //******************************************************************* // Class to control all the functions related to employee //******************************************************************* class employee { private : int empcode, dd, mm, yy ; char empname[31], empaddress[31], empcity[21], emppin[7] ; char empphone[10], empdesig[21] ; char emphouse, empconv, empsex ; float empbasic, emppf, empda, emphra, empca; int fcode (int) ; int date (int, int, int) ; void emp_display (int) ; public : void emp_add () ; void emp_modify () ; void emp_del () ; void emp_displaycode () ; void emp_showlist () ; 38

void emp_salslip () ; void print (int, int, int, int) ; }; //******************************************************************* // CLASS : draw // FUNCTION : lineh // DESCRIPTION : To draw a horizontal line (x1, x2, y) //******************************************************************* void draw :: lineh (int row1, int row2, int column, char c) { for (row1; row1 <= row2; row1++) { gotoxy (row1, column) ; cout <<c ; } }; //******************************************************************* // CLASS : draw // FUNCTION : linev // DESCRIPTION : To draw a vertical line (y1, y2, x) //******************************************************************* void draw :: linev (int column1, int column2, int row, char c) { for (column1; column1 <= column2; column1++ ) { gotoxy (row, column1) ; cout <<c ; } };

39

//******************************************************************* // CLASS : draw // FUNCTION : box // DESCRIPTION : To draw a box (x1, y1, x2, y2) //******************************************************************* void draw :: box(int row1, int column1, int row2, int column2, char c) { char ch=218 ; char c1, c2, c3, c4 ; char l1=196, l2=179 ; if (c == ch) { c1 = 218 ; c2 = 191 ; c3 = 192 ; c4 = 217 ; l1 = 196 ; l2 = 179 ; } else { c1 = c ; c2 = c ; c3 = c ; c4 = c ; l1 = c ; l2 = c ; } gotoxy(row1,column1) ; cout <<c1 ; gotoxy(row2,column1) ; cout <<c2 ; 40

gotoxy(row1,column2) ; cout <<c3 ; gotoxy(row2,column2) ; cout <<c4 ; row1++ ; row2-- ; lineh(row1, row2, column1, l1) ; lineh(row1, row2, column2, l1) ; row1-- ; row2++ ; column1++ ; column2-- ; linev(column1,column2,row1,l2) ; linev(column1,column2,row2,l2) ; } //******************************************************************* // CLASS : main_screen // FUNCTION : mscreen // DESCRIPTION : To paint the screen with the opening screen. //******************************************************************* void draw :: mscreen() { int gd=DETECT, gm ; initgraph(&gd, &gm, "\\tc\\bgi") ; setcolor(LIGHTGRAY) ; rectangle(0, 0, getmaxx(), getmaxy()) ; setfillstyle(SOLID_FILL, LIGHTGRAY) ; floodfill(getmaxx()/2, getmaxy()/2, LIGHTGRAY) ; for(int t = 1; t < 115; t++) { setcolor(DARKGRAY) ; 41

for(long int m = 0; m < 103000.0; m++) ; rectangle(getmaxx()/2-t-150, getmaxy()/2+t, getmaxx()/2+t+150, getmaxy()/2-t) ; floodfill(getmaxx()/2, getmaxy()/2, DARKGRAY) ; } setcolor(WHITE) ; settextstyle(3 , HORIZ_DIR, 7) ; settextjustify(CENTER_TEXT, CENTER_TEXT) ; outtextxy(getmaxx()/2, getmaxy()/2-60, "OFFICE" ) ; outtextxy(getmaxx()/2, getmaxy()/2+60, "MANAGEMENT" ) ; getch(); closegraph() ; } //******************************************************************* // CLASS : menu // FUNCTION : vertical_menu // DESCRIPTION : To make vertical menu. //******************************************************************* int menu :: vertical_menu(char menu[] [20], int present, int end, int x, int y) { int ex=0 ; draw L ; L.box(x + 9, y, x + strlen(menu[0]) + 12, y + end + 1, 218) ; for (int i=0; i<end; i++) { gotoxy(x + 10, y + i + 1) ; cout <<menu[i] ; } do { int tpresent = present ; 42

textcolor(BLUE) ; textbackground(WHITE) ; gotoxy(x + 10,y + present) ; cprintf(menu[present - 1]) ; textcolor(WHITE) ; textbackground(BLUE) ; char ch = getch() ; switch (ch) { case 75 : if (present == 1) present = end ; else present-- ; break ; case 77 : if (present == end) present = 1 ; else present++ ; break ; case 71 : present = 1 ; break ; case 79 : present = end ; break ; case 72 : if (present == 1) present = end ; else present-- ; break ; case 80 : if (present == end) present = 1 ; else present++ ; break ; 43

case 13 : ex = 1 ; break ; case 27 : present = end ; ex = 1 ; } gotoxy(x + 10,y + tpresent) ; cprintf(menu[tpresent - 1]) ; } while(!ex) ; return(present) ; } //******************************************************************* // CLASS : menu // FUNCTION : horizontal_menu // DESCRIPTION : To make horizontal menu. //******************************************************************* int menu :: horizontal_menu(char menu[] [20], int present, int end, int x, int y) { draw L ; int ex=0, i ; for (i = 0; i < end; i++) { gotoxy(x + (i + 2) * 10 - 5, y) ; cout <<menu[i] ; } L.lineh(1, 80, 2, 205) ; do { int tpresent = present ; textcolor(BLUE) ; textbackground(WHITE) ; gotoxy(x + (present + 1) * 10 - 5, y) ; 44

cprintf(menu[present - 1]) ; textcolor(WHITE) ; textbackground(BLUE) ; char ch = getch() ; switch (ch) { case 71 : present = 1 ; break ; case 79 : present = end ; break ; case 75 : if (present == 1) present = end ; else present-- ; break ; case 77 : if (present == end) present = 1 ; else present++ ; break ; case 72 : if (present == 1) present = end ; else present-- ; break ; case 80 : if (present == end) present = 1 ; else present++ ; break ; case 13 : ex = 1 ; break ; case 27 : present = end ; ex = 1 ; 45

} gotoxy(x + (tpresent + 1) * 10 - 5, y) ; cprintf(menu[tpresent - 1]) ; } while(!ex) ; return(present) ; } //******************************************************************* // CLASS : menu // FUNCTION : help // DESCRIPTION : To print the help screen for various important operations. //******************************************************************* void menu :: help() { clrscr(); cout<<"\n\n\n\t\t\tAbout Office Management System " <<"\n\nOffice Management System is a full fledged human resource management system " <<"\n\n\n 1) Important instructions are displayed at the status bar at the " <<"\n bottom of the screen." <<"\n\n 2) Press escape key to exit the immediate screen at any time" <<"\n during the program." <<"\n\n\n\n" <<"\t\t\t\t\t\t SAIMA KHAN"; getch(); clrscr() ; return ; } //******************************************************************* // CLASS : menu 46

// FUNCTION : main // DESCRIPTION : To draw the main menu & call related functions //******************************************************************* void menu :: main() { int end=5, present=1, upperlim1=5, currentpos1=1, upperlim2=3, currentpos2=1, upperlim3=4, currentpos3=1; draw L ; char main[] [20] = { " FILE ", " EDIT ", " PRINT ", " HELP ", " EXIT " } ; char sub1[] [20] = { "New Employee ", "Display Info ", "Display List ", "Salary Slip ", "Return "}; char sub3[] [20] = { "Employee Info ", "Employee List ", "Salary Slip "Return do { _setcursortype(_NOCURSOR) ; present = horizontal_menu(main, present, end, 3, 1) ; switch (present) { case 1 : currentpos1 = vertical_menu(sub1, currentpos1, upperlim1, 3, 3) ; employee A ; switch (currentpos1) { case 1 : _setcursortype(_SOLIDCURSOR) ; A.emp_add() ; getch(); A.emp_showlist() ; getch(); 47 "}; L.mscreen() ; ", "}; char sub2[] [20] = { "Modify Employee ", "Delete Employee ", "Return

_setcursortype(_NOCURSOR) ; break ; case 2 : _setcursortype(_SOLIDCURSOR) ; // employee B ; getch(); A.emp_displaycode() ; break ; case 3 : //employee C ; A.emp_showlist() ; break ; case 4 : _setcursortype(_SOLIDCURSOR) ; //employee D ; A.emp_salslip(); _setcursortype(_NOCURSOR) ; break ; } clrscr() ; break ; case 2 : currentpos2 = vertical_menu(sub2, currentpos2, upperlim2, 13, 3) ; switch(currentpos2) { case 1 : _setcursortype(_SOLIDCURSOR) ; employee A ; A.emp_modify() ; _setcursortype(_NOCURSOR) ; break ; case 2 : _setcursortype(_NORMALCURSOR) ; employee B ; B.emp_del() ; _setcursortype(_NOCURSOR) ; break ; 48

} clrscr() ; break ; case 3 : currentpos3 = vertical_menu(sub3, currentpos3, upperlim3, 27, 3) ; switch(currentpos3) { case 1 : _setcursortype(_SOLIDCURSOR) ; employee A ; A.emp_displaycode() ; A.print(1,1,80,23) ; _setcursortype(_NOCURSOR) ; break ; case 2 : _setcursortype(_NORMALCURSOR) ; employee B ; B.emp_showlist() ; B.print(1,1,80,23) ; _setcursortype(_NOCURSOR) ; break ; case 3 : _setcursortype(_NORMALCURSOR) ; employee C ; C.emp_salslip() ; C.print(1,1,80,23) ; _setcursortype(_NOCURSOR) ; break ; } clrscr() ; break ; case 4 : help() ; clrscr() ; break ; } } while (present != end); 49

} //******************************************************************* // CLASS : employee // FUNCTION : fcode // DESCRIPTION : To return 0 if the given code is not found //******************************************************************* int employee :: fcode(int code) { fstream file ; file.open("Employee.Dat", ios::in | ios::binary) ; file.seekg(0) ; int found = 0 ; employee temp; while (file.read((char *)&temp, sizeof(employee))) { if (temp.empcode == code) { found = 1 ; break ; } } file.close() ; return(found) ; } //******************************************************************* // CLASS : employee // FUNCTION : date // DESCRIPTION : To return '0' if the date received is invalid //*******************************************************************

50

int employee :: date(int dd, int mm, int yy) { int days=0, valid ; if ((yy>1980) && (yy<2099)) valid = 1 ; else { valid = 0 ; return(0) ; } switch(mm) { case 1 : days = 31 ; break ; case 2 : if (yy % 4 == 0) days = 29 ; // leap year else days = 28 ; break ; case 3 : days = 31 ; break ; case 4 : days = 30 ; break ; case 5 : days = 30 ; break ; case 6 : days = 31 ; break ; case 7 : days = 31 ; break ; case 8 : days = 31 ; break ; case 9 : days = 30 ; break ; 51

case 10 : days = 31 ; break ; case 11 : days = 30 ; break ; case 12 : days = 31 ; break ; default : valid = 0 ; break ; } if ((dd > 0) && (dd <= days)) valid = 1 ; else valid = 0 ; return (valid) ; } //******************************************************************* // CLASS : employee // FUNCTION : emp_display // DESCRIPTION : to display a record from "Employee.Dat" //******************************************************************* void employee :: emp_display(int code) { fstream file ; draw L ; employee t ; char* initial ; file.open("Employee.Dat", ios::in | ios::binary) ; file.seekg(0) ; while (file.read((char *)&t, sizeof(employee))) { if (t.empcode == code) 52

{ gotoxy(28,2) ; cout <<"EMPLOYEE INFORMATION" ; if (t.empsex == 'F') initial = "Ms. " ; else initial = "Mr. " ; gotoxy(30,3) ; cout <<"EMPLOYEE CODE #" <<t.empcode ; L.lineh(2,79,4,240) ; gotoxy(20,6) ; cout <<"Name gotoxy(20,7) ; cout <<"Address gotoxy(40,8); cout <<t.empcity <<" - " <<t.emppin ; gotoxy(20,9) ; cout <<"Contact No. gotoxy(20,11) ; cout <<"Date Of Joining <<t.yy ; gotoxy(20,13) ; cout <<"Designation gotoxy(20,15) ; cout <<"Accomodation Provided : " <<t.emphouse ; gotoxy(20,16) ; cout <<"Conveyance Provided : " <<t.empconv ; gotoxy(20,17) ; cout <<"Basic Salary gotoxy(20,18) ; cout <<"Provident Fund : Rs. " <<int((t.emppf/100)*t.empbasic) ; gotoxy(20,19) ; 53 : Rs. " <<t.empbasic ; : " <<t.empdesig ; : " <<t.dd <<"/" <<t.mm <<"/" : " <<t.empphone ; : " <<t.empaddress ; : " <<initial <<t.empname ;

cout

<<"Daily

Allowance

Rs.

"

<<int((t.empda/100)*t.empbasic) ; gotoxy(20,20) ; cout <<"Housing Allowance : Rs. " <<int((t.emphra/100)*t.empbasic) ; gotoxy(20,21) ; cout <<"Conveyance Allow : Rs. " <<int((t.empca/100)*t.empbasic) ; L.lineh(2,79,22,240) ; } } file.close() ; } //******************************************************************* // CLASS : employee // FUNCTION : emp_add // DESCRIPTION : To get data about new employee //******************************************************************* void employee :: emp_add() { draw L ; employee t ; char ch, choice='Y'; char d[3], m[3], y[5], basic[10], pf[6], da[6], ca[6], hra[6]; int code=0, valid ; do { clrscr() ; _setcursortype(_SOLIDCURSOR) ; gotoxy(28,2) ; cout <<"ADDITION OF NEW EMPLOYEE" ; 54

L.lineh(20,59,3,240) ; gotoxy(31,4) ; cout <<"Employee Code # " ; gotoxy(29,5) ; cout <<"~~~~~~~~~~~~~~~~~~~~~" ; gotoxy(5,8) ; cout <<"Name gotoxy(50,8); cout <<"Sex (M/F) : ."; gotoxy(5,9) ; cout <<"Address gotoxy(50,9) ; cout <<"City gotoxy(5,10) ; cout <<"Pin Code gotoxy(50,10) ; cout <<"Phone No. : ........." ; L.lineh(3,78,11,196); gotoxy(5,12) ; cout <<"JOINING DATE" ; gotoxy(5,13) ; cout <<"Day : .." ; gotoxy(30,13) ; cout <<"Month : .." ; gotoxy(54,13) ; cout <<"Year : ...." ; L.lineh(3,78,14,196); gotoxy(5,15) ; cout <<"Designation : ...................." ; L.lineh(3,78,16,196); gotoxy(5,17) ; cout <<"Accomodation (y/n) : ." ; gotoxy(43,17) ; 55 : ......" ; : ................." ; : ............................." ; : ............................." ;

cout <<"Conveyance (y/n) : ." ; L.lineh(3,78,18,196); gotoxy(5,19) ; cout <<"Basic Salary gotoxy(5,20); cout <<"Provident Fund gotoxy(5,21); cout <<"Daily Allowance (%) : ....." ; fstream file ; file.open("Employee.Dat", ios::in | ios::binary) ; file.seekg(0) ; employee te ; while (file.read((char *)&te, sizeof(employee))) code = te.empcode ; file.close() ; code++ ; t.empcode = code ; gotoxy(47,4) ; cout <<t.empcode ; do { valid = 1 ; statusbar(" ENTER THE NAME OF THE EMPLOYEE") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(20,8) ; cout<<" gotoxy(20,8) ; getline(t.empname, 29) ; if (t.empname[0] == '0') return ; if (strlen(t.empname) < 1) { valid = 0 ; 56 "; (%) : ....." ; (Rs) : ........." ;

statusbar("\aENTER CORRECTLY (LENGTH : 1..30)") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; do { statusbar("ENTER FEMALE(F)") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(62,8) ; clreol() ; t.empsex = getch() ; if (t.empsex == 27) return ; t.empsex = toupper(t.empsex) ; if ((t.empsex == 27) || (t.empsex == '0')) return ; } while ((t.empsex != 'M') && (t.empsex != 'F')) ; cout <<t.empsex ; do { valid = 1 ; statusbar("ENTER ADDRESS OF THE EMPLOYEE") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(20,9) ; cout <<" gotoxy(20,9) ; getline(t.empaddress, 29) ; if (t.empaddress[0] == '0') return ; if (strlen(t.empaddress) < 1) 57 "; IF EMPLOYEE IS MALE(M) OR

{ valid = 0 ; statusbar("\a 1..30)") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; do { valid = 1 ; statusbar("ENTER CITY OF THE EMPLOYEE") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(62,9) ; clreol() ; getline(t.empcity, 17) ; if (t.empcity[0] == '0') return ; if (strlen(t.empcity) < 1) { valid = 0 ; statusbar("\aENTER CORRECLTY (LENGTH : 1..20)") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; do { valid = 1 ; statusbar("ENTER PIN CODE OF THE EMPLOYEE") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(20,10) ; 58 ENTER CORRECTLY (LENGTH :

cout<<" gotoxy(20,10) ; getline(t.emppin, 6) ;

";

if (t.emppin[0] == '0') return ; if (strlen(t.emppin) != 6) { valid = 0 ; statusbar("\aENTER CORRECTLY (LENGTH : 6)") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; do { valid = 1 ; statusbar("ENTER PHONE NO. OF THE EMPLOYEE OR PRESS <enter> FOR NONE") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(62,10) ; clreol() ; getline(t.empphone, 9) ; if (t.empphone[0] == '0') return ; if ((strlen(t.empphone) < 6 && strlen(t.empphone) > 0) || (strlen(t.empphone) > 9)) { valid = 0 ; statusbar("\aENTER CORRECTLY") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; 59

if (strlen(t.empphone) == 0) strcpy(t.empphone,"---") ; do { valid = 1 ; do { statusbar("ENTER DAY OF JOINING") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(13,13) ; cout <<" gotoxy(13,13); getline(d, 2) ; t.dd = atoi(d) ; if (strlen(d) == 0) { statusbar("\aENTER CORRECTLY") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } if (d[0] == 27) return ; } while (t.dd == 0) ; do { statusbar("ENTER MONTH OF JOINING") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(38,13) ; cout <<" gotoxy(38,13); getline(m, 2) ; t.mm = atoi(m) ; if (m[0] == 27) 60 "; ";

return ; if (strlen(m) == 0) { statusbar("\aENTER CORRECTLY") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (t.mm == 0) ; do { statusbar(" ENTER YEAR OF JOINING") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(62,13) ; clreol() ; getline(y, 4) ; t.yy = atoi(y) ; if (y[0] == 27) return ; if (strlen(y) == 0) { statusbar("\aENTER CORRECTLY") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (t.yy == 0) ; valid = date(t.dd, t.mm, t.yy) ; if (valid == 0) { statusbar("\a ENTER CORRECTLY") ; getch() ; _setcursortype(_SOLIDCURSOR) ; gotoxy(38,13) ; cout <<" "; 61

gotoxy(62,13) ; clreol() ; } } while (!valid) ; do { valid = 1 ; statusbar("ENTER DESIGNATION OF THE EMPLOYEE") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(20,15) ; clreol() ; getline(t.empdesig, 20) ; if (t.empdesig[0] == '0') return ; if (strlen(t.empdesig) < 1) { valid = 0 ; statusbar("\a 1..20)") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; do { statusbar("ENTER IF ACCOMODATION IS ALLOTED TO EMPLOYEE OR NOT"); _setcursortype(_SOLIDCURSOR) ; gotoxy(26,17) ; cout <<" " ; gotoxy(26,17) ; t.emphouse = getch() ; if (t.emphouse == 27) 62 ENTER CORRECLTY (LENGTH :

return ; t.emphouse = toupper(t.emphouse) ; if (t.emphouse == '0') return ; } while (t.emphouse != 'Y' && t.emphouse != 'N') ; cout <<t.emphouse ; do { gotoxy(0,25) ; statusbar(" ENTER IF CONVEIENCE ALLOWANCE IS ALLOTED TO EMPLOYEE OR NOT") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(62,17) ; clreol() ; t.empconv = getch() ; t.empconv = toupper(t.empconv) ; if (t.empconv == 27) return ; if (t.empconv == '0') return ; } while (t.empconv != 'Y' && t.empconv != 'N') ; cout <<t.empconv ; do { valid = 1 ; statusbar(" ENTER BASIC SALARY OF THE EMPLOYEE") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(32,19) ; clreol() ; getline(basic,9) ; t.empbasic = atof(basic) ; if (basic[0] == 27) return ; 63

if ((strlen(basic) == 0) || (t.empbasic>100000.0)) { valid = 0; statusbar("\aSHOULD NOT BE GREATER THAN 100000") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; do { valid = 1 ; statusbar(" ENTER PERCENTAGE OF BASIC SALARY TAKEN AS PF") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(32,20) ; clreol() ; getline(pf,5) ; t.emppf = atof(pf) ; if (pf[0] == 27) return ; if ((strlen(pf) == 0) || (t.emppf>100)) { valid = 0; statusbar("\a SHOULD NOT BE GREATER THAN 100 %") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; do { valid = 1 ; 64

statusbar(" ENTER PERCENTAGE OF BASIC SALARY TAKEN AS DA") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(32,21) ; clreol() ; getline(da,5) ; t.empda = atof(da) ; if (da[0] == 27) return ; if ((strlen(da) == 0) || (t.empda>100)) { valid = 0; statusbar("\a SHOULD NOT BE GREATER THAN 100 %") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; if (t.emphouse == 'Y') { gotoxy(5,22) ; cout <<"House Rent Allowance (%): ....." ; do { valid = 1 ; statusbar(" SALARY TAKEN AS HRA") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(32,22) ; cout <<" " ; gotoxy(32,22) ; getline(hra,5) ; t.emphra = atof(hra) ; 65 ENTER PERCENTAGE OF BASIC

if (hra[0] == 27) return ; if ((strlen(hra) == 0) || (t.emphra>100)) { valid = 0; statusbar("\a SHOULD NOT BE GREATER THAN 100 %") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; } else t.emphra = 0 ; if (t.empconv == 'Y') { gotoxy(45,22) ; cout <<"Conveyance Allowance (%) : ....." ; do { valid = 1 ; statusbar(" SALARY TAKEN AS CA") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(72,22) ; clreol() ; getline(ca,5) ; t.empca = atof(ca) ; if (ca[0] == 27) return ; if ((strlen(ca) == 0) || (t.empca>100)) { valid = 0; 66 ENTER PERCENTAGE OF BASIC

statusbar("\a SHOULD NOT BE GREATER THAN 100 %") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; } else t.empca = 0 ; do { statusbar("\a Do you wish to save (y/n) : ") ; ch = getch() ; ch = toupper(ch) ; if (ch == '0'|| ch == 27) return ; } while (ch != 'Y' && ch != 'N') ; if (ch == 'N') return ; file.open("Employee.Dat", ios::app | ios::out | ios::binary) ; file.write((char *)&t, sizeof(employee)) ; file.close() ; statusbar("\a Add any more (y/n) : ") ; do { choice = getch() ; choice = toupper(choice) ; if (choice == 13) choice = 'Y' ; if (choice == 27) choice = 'N' ; } while((choice != 'Y') && (choice !='N')); } while(choice == 'Y'); 67

} //******************************************************************* // CLASS : employee // FUNCTION : emp_modify // DESCRIPTION : To provide with necessary data required for // modification of a given record //******************************************************************* void employee :: emp_modify() { clrscr() ; draw L ; employee t ; int code, valid ; char ch, house='N', conv='N', choice='Y' ; char address[31], city[21], pin[7], phone[10], desig[21] ; char tbasic[10], tpf[6], tda[6], tca[6], thra[6] ; float basic=0, pf=0, da=0, ca=0, hra=0 ; do { gotoxy(72,2) ; cout <<"Esc=EXIT" ; gotoxy(5,5) ; cout <<"Enter code of the Employee : " ; cin >>code ; if (code == 0) return ; clrscr() ; if (!fcode(code)) { gotoxy(30,24) ; cout <<"\a Record not found" ; 68

getch() ; return ; } emp_display(code) ; gotoxy(72,2) ; cout <<"ESC=EXIT" ; gotoxy(24,2) ; cout <<"MODIFICATION OF EMPLOYEE RECORD" ; do { statusbar("\a Do you wish to modify this record (y/n) ") ; ch = getch() ; ch = toupper(ch) ; if (ch == '0') return ; if (ch == 13 ) ch = 'Y' ; if (ch == 27 ) ch = 'N' ; } while (ch != 'Y' && ch != 'N') ; if (ch == 'N') return ; clrscr() ; fstream file ; file.open("Employee.Dat", ios::in | ios::binary) ; file.seekg(0) ; while (file.read((char *)&t, sizeof(employee))) { if (t.empcode == code) break ; } gotoxy(72,2) ; cout <<"Esc=EXIT" ; 69

gotoxy(26,2) ; cout <<"MODIFICATION OF NEW EMPLOYEE" ; L.lineh(20,59,3,240) ; gotoxy(31,4) ; cout <<"Employee Code # " <<code ; gotoxy(29,5) ; cout <<"~~~~~~~~~~~~~~~~~~~~~" ; gotoxy(5,8) ; cout <<"Name gotoxy(50,8); cout <<"Sex (M/F) : "; gotoxy(5,9) ; cout <<"Address gotoxy(50,9) ; cout <<"City gotoxy(5,10) ; cout <<"Pin Number : ......" ; gotoxy(50,10) ; cout <<"Phone No. : ........." ; L.lineh(3,78,11,196); gotoxy(5,12) ; cout <<"JOINING DATE" ; gotoxy(5,13) ; cout <<"Day : "; gotoxy(30,13) ; cout <<"Month : " ; gotoxy(54,13) ; cout <<"Year : gotoxy(5,15) ; cout <<"Designation : ...................." ; L.lineh(3,78,16,196); gotoxy(5,17) ; 70 "; L.lineh(3,78,14,196); : ................." ; : ............................." ; :";

cout <<"Accomodation (y/n) : ." ; gotoxy(43,17) ; cout <<"Conveyance (y/n) : ." ; L.lineh(3,78,18,196); gotoxy(5,19) ; cout <<"Basic Salary gotoxy(5,20) ; cout <<"Provident Fund gotoxy(5,21) ; cout <<"Daily Allowance (%) : ....." ; gotoxy(20,8) ; cout <<t.empname ; gotoxy(62,8) ; cout <<t.empsex ; gotoxy(13,13) ; cout <<t.dd ; gotoxy(38,13) ; cout <<t.mm ; gotoxy(62,13) ; cout <<t.yy ; do { valid = 1 ; statusbar(" ENTER ADDRESS OF THE EMPLOYEE OR PRESS <enter> FOR NO CHANGE") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(20,9) ; cout<<" gotoxy(20,9) ; getline(address, 29) ; if (address[0] == '0') return ; if (strlen(address) > 30) 71 "; (%) : ....." ; (Rs) : ........." ;

{ valid = 0 ; statusbar("\a Enter correctly (Range: 1..30)") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; if (strlen(address) == 0) { strcpy(address, t.empaddress) ; gotoxy(20,9) ; cout <<address ; } do { valid = 1 ; statusbar(" ENTER CITY OF THE EMPLOYEE OR PRESS <enter> FOR NO CHANGE") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(62,9) ; clreol() ; getline(city, 17) ; if (city[0] == '0') return ; if (strlen(city) > 18) { valid = 0 ; statusbar("\a Enter correctly (Length : 1..18)") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; if (strlen(city) == 0) 72

{ strcpy(city, t.empcity) ; gotoxy(62,9) ; cout <<city ; } do { valid = 1 ; statusbar(" ENTER PIN CODE OR PRESS <enter> FOR NO CHANGE") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(20,10) ; cout<<" gotoxy(20,10) ; getline(pin, 6) ; if (pin[0] == '0') return ; if (strlen(pin) != 6 && strlen(pin) > 1) { valid = 0 ; statusbar("\a Enter correctly (Length : 6)") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; if (strlen(pin) == 0) { strcpy(pin, t.emppin) ; gotoxy(20,10) ; cout <<pin ; } do { 73 ";

valid = 1 ; statusbar(" ENTER PHONE NO. OF THE EMPLOYEE OR PRESS <enter> FOR NO CHANGE") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(62,10) ; clreol() ; getline(phone, 9) ; if (phone[0] == '0') return ; if ((strlen(phone) < 6 && strlen(phone) > 0) || (strlen(phone) > 9)) { valid = 0 ; statusbar("\a Enter correctly") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; if (strlen(phone) == 0) { strcpy(phone, t.empphone) ; gotoxy(62,10) ; cout <<phone ; } do { valid = 1 ; statusbar(" ENTER DESIGNATION OF THE EMPLOYEE OR PRESS <enter> FOR NO CHANGE") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(20,15) ; clreol() ; getline(desig, 20) ; 74

if (desig[0] == '0') return ; if (strlen(desig) > 20) { valid = 0 ; statusbar("\a Enter correctly (Range: 1..20)") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; if (strlen(desig) == 0) { strcpy(desig, t.empdesig) ; gotoxy(20,15) ; cout <<desig ; } do { statusbar(" ALLOTED ACCOMODATION ?(y/n) OR PRESS <enter> FOR NO CHANGE") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(26,17) ; cout <<" gotoxy(26,17) ; house = getch() ; house = toupper(house) ; if (house == 27) return ; if (house == 13) { house = t.emphouse ; gotoxy(26,17) ; } 75 ";

} while (house != 'Y' && house != 'N') ; cout <<house ; do { statusbar(" ALLOTED CONVEYANCE ALLOWANCE ?(y/n) OR PRESS <enter> FOR NO CHANGE") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(62,17) ; clreol() ; conv = getch() ; conv = toupper(conv) ; if (conv == 27) return ; if (conv == 13) { conv = t.empconv ; gotoxy(62,17) ; } } while (conv != 'Y' && conv != 'N') ; cout <<conv ; do { valid = 1 ; statusbar(" ENTER BASIC SALARY OF THE EMPLOYEE"); _setcursortype(_SOLIDCURSOR) ; gotoxy(32,19) ; clreol() ; getline(tbasic,9) ; basic = atof(tbasic) ; if (basic > 100000.0) { valid = 0 ;

76

statusbar("\a SHOULD NOT BE GREATER THAN 100000") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; if (strlen(tbasic) == 0) { basic = t.empbasic ; gotoxy(32,19) ; cout <<basic ; } do { valid = 1 ; statusbar(" ENTER PERCENTAGE OF BASIC SALARY TAKEN AS PF") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(32,20) ; clreol() ; getline(tpf,5) ; pf = atof(tpf) ; if (pf > 100) { valid = 0 ; statusbar("\a SHOULD NOT BE GREATER THAN 100 %") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; if (strlen(tpf) == 0) { 77

pf = t.emppf ; gotoxy(32,20) ; cout <<pf ; } do { valid = 1 ; statusbar(" ENTER PERCENTAGE OF BASIC SALARY TAKEN AS DA") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(32,21) ; clreol() ; getline(tda,5) ; da = atof(tda) ; if (da > 100) { valid = 0 ; statusbar("\a SHOULD NOT BE GREATER THAN 100 %"); getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; if (strlen(tda) == 0) { da = t.empda ; gotoxy(32,21) ; cout <<da ; } if (house == 'Y') { gotoxy(5,22) ; cout <<"House Rent Allowance (%): ....." ; 78

do { valid = 1 ; statusbar(" SALARY TAKEN AS HRA"); _setcursortype(_SOLIDCURSOR) ; gotoxy(32,22) ; cout <<" " ; gotoxy(32,22) ; getline(thra,5) ; hra = atof(thra) ; if (hra > 100) { valid = 0 ; statusbar("\a SHOULD NOT BE GREATER THAN 100 %") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } if (strlen(tda) == 0) { hra = t.emphra ; gotoxy(32,22) ; cout <<hra ; } else hra = 0 ; } while (!valid) ; } if (conv == 'Y') { gotoxy(45,22) ; cout <<"Conveyance Allowance (%) : ....." ; 79 ENTER PERCENTAGE OF BASIC

do { valid = 1 ; statusbar(" SALARY TAKEN AS CA") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(72,22) ; clreol(); getline(tca,5) ; ca = atof(tca) ; if (ca > 100) { valid = 0 ; statusbar("\a SHOULD NOT BE GREATER THAN 100 %") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } if (strlen(tca) == 0) { ca = t.empca ; gotoxy(72,22) ; cout <<ca ; } else ca = 0 ; } while (!valid) ; } strcpy(t.empaddress, address) ; strcpy(t.empcity, city) ; strcpy(t.emppin, pin) ; strcpy(t.empphone, phone) ; strcpy(t.empdesig, desig) ; 80 ENTER PERCENTAGE OF BASIC

t.empcode = code ; t.emphouse = house ; t.empconv = conv ; t.empbasic = basic ; t.emppf = pf ; t.empda = da ; t.emphra = hra ; t.empca = ca ; employee te ; file.close(); fstream file1 ; file.open("Employee.Dat", ios::in | ios::binary) ; file1.open("Tempmod.Dat", ios::out | ios::binary) ; file.seekg(0) ; while (file.read((char *)&te, sizeof(employee))) { if (t.empcode != te.empcode) file1.write((char *)&te, sizeof(employee)) ; else break ; } file1.write((char *)&t, sizeof(employee)) ; while (file.read((char *)&te, sizeof(employee))) file1.write((char *)&te, sizeof(employee)) ; file.close() ; file1.close() ; file.open("Employee.Dat", ios::out | ios::binary) ; file1.open("Tempmod.Dat", ios::in | ios::binary) ; file1.seekg(0) ; while (file1.read((char *)&t, sizeof(employee))) { file.write((char *)&t, sizeof(employee)) ; } 81 // change by reeta

file.close() ; file1.close() ; gotoxy(5,25) ; clreol() ; do { statusbar("\a Do you wish to save (y/n) ") ; ch = getch() ; ch = toupper(ch) ; if (ch == '0') return ; } while (ch != 'Y' && ch != 'N') ; if (ch == 'N') return ; statusbar(" Record Modified.") ; getch() ; statusbar("\a Modify any more (y/n) : ") ; do { choice = getch() ; choice = toupper(choice) ; if (choice == 13) choice = 'Y' ; if (choice == 27) choice = 'N' ; } while((choice != 'Y') && (choice !='N')); } while(choice == 'Y'); } //******************************************************************* // CLASS : employee // FUNCTION : del // DESCRIPTION : To delete a record in "Employee.Dat" 82

//******************************************************************* void employee :: emp_del() { clrscr() ; employee t ; char ch ; int code ; gotoxy(72,2) ; cout <<"ESC=EXIT" ; gotoxy(5,5) ; cout <<"Enter code of the Employee : " ; cin >>code ; if (code == 0) return ; clrscr() ; if (!fcode(code)) { gotoxy(30,24) ; cout <<"\a Record not found" ; getch() ; return ; } gotoxy(72,2) ; cout <<"ESC=EXIT" ; gotoxy(23,1) ; cout <<"DELETION OF THE EMPLOYEE RECORD" ; emp_display(code) ; do { statusbar("\a Do you wish to remove this record (y/n) ") ; ch = getch() ; if (ch == 27) 83

return ; if (ch == 13) ch = 'y' ; ch = toupper(ch) ; if (ch == '0') return ; } while (ch != 'Y' && ch != 'N') ; if (ch == 'N') return ; fstream file ; fstream file1 ; file.open("Employee.Dat", ios::in | ios::binary) ; file1.open("Tempdel.Dat", ios::out | ios::binary) ; file.seekg(0) ; while (file.read((char *)&t, sizeof(employee))) { if (t.empcode != code) file1.write((char *)&t, sizeof(employee)) ; } file.close() ; file1.close() ; file.open("Employee.Dat", ios::out | ios::binary) ; file1.open("Tempdel.Dat", ios::in | ios::binary) ; file1.seekg(0) ; while (file1.read((char *)&t, sizeof(employee))) { file.write((char *)&t, sizeof(employee)) ; } file.close() ; file1.close() ; clrscr() ; statusbar("\a Record Deleted") ; getch() ; 84

statusbar(" Press any key to continue...") ; getch() ; } //******************************************************************* // CLASS : employee // FUNCTION : emp_displaycode // DESCRIPTION : To obtain code for displaying a record //******************************************************************* void employee :: emp_displaycode() { clrscr() ; int code ; gotoxy(72,2) ; cout <<"ESC=EXIT" ; gotoxy(5,5) ; _setcursortype(_SOLIDCURSOR) ; cout <<"Enter code of the Employee : " ; cin >>code; if (code == 0) return ; clrscr() ; if (!fcode(code)) { _setcursortype(_NOCURSOR) ; gotoxy(30,25) ; cout <<"\a Record not found" ; getch() ; return ; } emp_display(code) ; statusbar(" Press any key to continue...") ; 85

getch() ; } //******************************************************************* // CLASS : employee // FUNCTION : emp_showlist // DESCRIPTION : To display the list of employees //******************************************************************* void employee :: emp_showlist() { clrscr() ; employee t ; draw L ; int row = 6, found=0, flag=0 ; int d1, m1, y1 ; char ch ; struct date d; getdate(&d) ; d1 = d.da_day ; m1 = d.da_mon ; y1 = d.da_year ; gotoxy(23,2) ; cout <<"LIST OF EMPLOYEES AS ON " <<d1 <<"." <<m1 <<"." <<y1 ; L.lineh(1,80,3,240) ; gotoxy(12,4) ; cout <<"CODE # gotoxy(1,5) ; L.lineh(11,72,5,205) ; L.linev(4,22,10,186) ; L.linev(4,22,19,186) ; L.linev(4,22,51,186) ; L.linev(4,22,72,186) ; 86 NAME DESIGNATION" ;

L.lineh(1,80,23,240) ; fstream file ; file.open("Employee.dat", ios::in | ios::binary) ; file.seekg(0) ; while (file.read((char *)&t, sizeof(employee))) { flag = 0 ; found = 1 ; gotoxy(12,row) ; cout <<t.empcode ; gotoxy(21,row) ; cout <<t.empname ; gotoxy(53,row) ; cout <<t.empdesig ; if (row == 18) { flag = 1 ; row = 6 ; statusbar(" Press any key to continue or Press <ESC> to exit") ; ch = getch() ; if (ch == 27) break ; clrscr() ; gotoxy(31,2) ; cout <<"LIST OF EMPLOYEES" ; L.lineh(1,90,3,240); gotoxy(2,4) ; cout <<"CODE # gotoxy(1,5) ; cout <<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~" ; } 87 NAME DESIGNATION";

else row++ ; } if (!found) { gotoxy(26,14) ; cout <<"\a Records not found" ; } if (!flag) { statusbar(" Press any key to continue...") ; getch() ; } file.close () ; } //******************************************************************* // CLASS : employee // FUNCTION : emp_salslip // DESCRIPTION : To print the salary slip of an employee on the screen //******************************************************************* void employee :: emp_salslip() { clrscr() ; employee t ; float hra=0, ca=0, da=0, pf=0, ot=0, advance=0, allowance=0, deduction=0, netsalary=0 ; int code, valid=0, days, hours ; int year ; char tdays[3], thours[4], tadvance[6], month[10] ; gotoxy(72,2) ; cout <<"ESC=EXIT" ; 88

gotoxy(5,5) ; cout <<"Enter code of the Employee : " ; cin >>code ; if (code == 0) return ; if (!fcode(code)) { clrscr() ; gotoxy(30,25) ; cout <<"\a Record not found" ; getch() ; return ; } clrscr() ; gotoxy(5,8) ; cout <<"Enter month for which SALARY SLIP is to be generated : " ; cin >>month ; gotoxy(5,11) ; cout <<"Enter year for which SALARY SLIP is to be generated : " ; cin >>year ; clrscr() ; fstream file ; file.open("Employee.Dat", ios::in | ios::binary) ; file.seekg(0) ; while (file.read((char *)&t, sizeof(employee))) { if (t.empcode == code) break ; } file.close() ; draw L ; L.lineh(1,80,1,223) ; L.linev(1,23,1,222) ; 89

L.linev(1,23,79,222) ; L.lineh(1,80,23,223) ; gotoxy(32,2) ; cout <<"Pearl Software" ; L.lineh(3,78,3,175) ; gotoxy(24,4) ; cout <<"SALARY SLIP - " <<month <<", " <<year ; L.lineh(3,78,5,196) ; gotoxy(4,6) ; cout <<"Employee Name : " <<t.empname ; gotoxy(48,6) ; cout <<"Designation : " <<t.empdesig ; L.box(4,7,76,21,218) ; do { valid = 1 ; statusbar(" ENTER NO. OF DAYS WORKED IN THE MONTH ") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(25,10) ; cout <<"No. of Days Worked : " ; getline(tdays,2) ; days = atoi(tdays) ; if (tdays[0] == 27) return ; if (days > 26) { valid = 0 ; statusbar("\a CANNOT BE GREATER THAN 26 ") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; do 90

{ valid = 1 ; statusbar(" ENTER NO. OF HOURS WORKED OVER TIME ") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(25,12) ; cout <<"Overtime hours getline(thours,3) ; hours = atoi(thours) ; if (thours[0] == 27) return ; if (hours > 41) { valid = 0 ; statusbar("\a MORE THAN 40 Hrs. OVERTIME NOT PERMITTED ") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; gotoxy(25, 13); cout << "Basic salary is : " << t.empbasic; do { valid = 1 ; statusbar(" ENTER AMOUNT TAKEN AS ADVANCE ") ; _setcursortype(_SOLIDCURSOR) ; gotoxy(25,14) ; cout <<"Advance amount (Rs): " ; getline(tadvance,6) ; advance = atof(tadvance) ; if (tadvance[0] == 27) return ; if (advance > t.empbasic) 91 :";

{ valid = 0 ; statusbar("\a ADVANCE CANNOT BE GREATER THAN BASIC PAY ") ; getch() ; _setcursortype(_SOLIDCURSOR) ; } } while (!valid) ; clrscr(); L.lineh(1,80,1,223) ; L.linev(1,23,1,222) ; L.linev(1,23,79,222) ; L.lineh(1,80,23,223) ; gotoxy(32,2) ; cout <<"Pearl Software" ; L.lineh(3,78,3,175) ; gotoxy(24,4) ; cout <<"SALARY SLIP - " <<month <<", " <<year ; L.lineh(3,78,5,196) ; gotoxy(4,6) ; cout <<"Employee Name : " <<t.empname ; gotoxy(48,6) ; cout <<"Designation : " <<t.empdesig ; L.box(4,7,76,21,218) ; _setcursortype(_NOCURSOR) ; gotoxy(25,10) ; cout <<" gotoxy(25,12) ; cout <<" gotoxy(25,14) ; cout <<" "; 92 "; ";

gotoxy(7,8) ; cout <<"BASIC SALARY gotoxy(7,10) ; cout <<"ALLOWANCE" ; gotoxy(9,11) ; cout <<"Daily Allowance gotoxy(9,12) ; cout <<"Over Time gotoxy(9,13) ; cout <<"Conveyance Allowance : Rs." ; gotoxy(9,14) ; cout <<"House Rent Allowance : Rs." ; gotoxy(7,16) ; cout <<"DEDUCTIONS" ; gotoxy(9,17) ; cout <<"Provident Fund gotoxy(9,18) ; cout <<"Advance Taken gotoxy(9,20) ; cout <<"N E T S A L A R Y hra = int((t.emphra * t.empbasic)/100) ; ca = int((t.empca * t.empbasic)/100) ; da = int(((t.empda * t.empbasic)/100) * days) ; pf = int((t.emppf * t.empbasic)/100) ; ot = int((hours) * (t.empbasic/160)) ; allowance = hra + ca + da + ot + t.empbasic ; deduction = pf + advance; netsalary = allowance - deduction ; gotoxy(54,8) ; cout <<t.empbasic ; gotoxy(37,11) ; cout <<da ; gotoxy(37,12) ; 93 : Rs." ; : Rs." ; : Rs." ; : Rs." ; : Rs." ; : Rs." ;

cout <<ot ; gotoxy(37,13) ; cout <<ca ; gotoxy(37,14) ; cout <<hra ; gotoxy(47,14) ; cout <<" : Rs. " <<allowance ; gotoxy(37,17) ; cout <<pf ; gotoxy(37,18) ; cout <<advance ; gotoxy(47,18) ; cout <<" : Rs. " <<deduction ; L.lineh(6,74,19,196) ; gotoxy(54,20) ; cout <<netsalary ; gotoxy(2,1) ; getch() ; } //******************************************************************* // CLASS : employee // FUNCTION : print // DESCRIPTION : To read the characters on the screen & save it // to a temp variable and then send it to the printer. //******************************************************************* void employee :: print(int x1, int y1, int x2, int y2) { statusbar(" PRINTING PRINTING PRINTING PRINTING PRINTING PRINTING PRINTING PRINTING PRINTI") ; const SEGMENT = 0xB800 ; unsigned norow = y2 - y1 + 1, nocol = x2 - x1 + 1 ; 94

unsigned i = 0, noele = norow * nocol, *ptr ; ptr = new unsigned [noele] ; ofstream prn("PRN") ; cout<< noele; for (unsigned row=y1; row<=y2; row++) { for(unsigned col=x1; col<=x2; col++) { unsigned offset = 2*col + 160*row - 162 ; ptr[i++] = peek(SEGMENT,offset) ; } } int count = 0 ; for(i=0; i<noele; i++, count++) { unsigned char ch = ptr[i] % 256 ; prn <<ch ; if (count == 80) { prn <<"\n" ; count = 0 ; } } prn.close() ; } //******************************************************************* // Main Menu //******************************************************************* void main(void) { menu menu ; 95

menu.main() ; } //******************************************************************* // FUNCTION : statusbar // DESCRIPTION : To make the status bar at prefixed coordinates at // the bottom of the screen. //******************************************************************* void statusbar(char m[]) { _setcursortype(_NOCURSOR) ; window(1,24,80,25) ; textcolor(BLACK) ; textbackground(WHITE) ; cprintf(m) ; clreol() ; window(1,1,80,24) ; textcolor(WHITE) ; textbackground(BLACK) ; } //******************************************************************* // FUNCTION : getlinedelchar // DESCRIPTION : To delete a character for getline //******************************************************************* void getlinedelchar(char *s, int col, int p, int &len) { int i ; for (i=p; i<len; i++) s[i - 1] = s[i] ; gotoxy(col + p - 1,wherey()) ; 96

len-- ; for (i=p - 1; i<len; i++) cout << s[i] ; cout <<'.' ; } //***************************************************************** // FUNCTION : getline // DESCRIPTION : To add online editing for inputing a line. //***************************************************************** void getline(char *s , int limit) { int i, curx, done, col ; col = wherex() ; for (i = 0; i<limit; i++) cout <<'.' ; gotoxy(col,wherey()) ; done = 0 ; curx = 0 ; i=0; do { char ch = getch() ; ch = toupper(ch) ; switch (ch) { case 0 : ch = getch(); switch(ch) { case 75 : if (curx>0) { curx-- ; 97

gotoxy(wherex()-1,wherey()) ; } break ; case 77 : if (curx<i) { curx++ ; gotoxy(wherex()+1,wherey()) ; } break ; case 83 : if (i>0) { if (curx<i) { getlinedelchar(s,col,curx + 1,i) ; gotoxy(col curx,wherey()) ; if (i == 0) s[i] = 0 ; } } } break ; case 8 : if (curx>0) { getlinedelchar(s,col,curx,i) ; gotoxy(col + curx - 1,wherey()) ; curx-- ; if (i == 0) s[i] = 0 ; } break ; case 13 : done = 1 ; 98 +

s[i] = 0 ; break ; case 27 : done = 1 ; s[0] = '0' ; break ; default : if (i < limit) { if (curx < i) { s[curx] = ch ; cout <<ch ; curx++ ; } else { s[i] = ch ; cout <<ch ; i++ ; curx = i ; } } else s[i] = 0 ; } } while (!done) ; cout <<"\n" ; }

8.2 OUTPUT AND INPUT 99

FORNT PAGE OF PROJECT

This page shows all the available options like File, Edit, Print, and Help & Exit of the Office management system.

100

INPUT NEW EMPLOYEE INFORMATION

This page shows the Employees addition with different information.

This page shows the list of all the working employees.

101

OUTPUT OF NEW ADDITION EMPLOYEE

This page shows the employees details

102

INPUT OF MODIFICATION

This page shows the details of the employee before modification.

103

OUTPUT AFTER MODIFICATION

This page shows employee details after modifications

104

INPUT OF REPORT GENERATION

This page shows that if you want generate the salary slip so you have to enter the required details.

This page showing the entered details of an employee to generate the salary slip.

105

OUTPUT OF REPORT GENERATION

This page showing the full salary information about the entered employees record.

INPUT OF DELETING EMPLOYEE INFORMATION 106

This page is asking to delete the employee from the organizations record. 107

OUTPUT OF DELETING FILE

This page is showing the full detail of deleting employee is deleted

9. CONCLUSION 108

1. The program successfully implements all the functions that were required, and is ready for use as an application program for helping in understanding the management system of Office management. It will further ensure the flow of relevant and concise data into an application program. 2. Using the stated functions in the system, the data processing becomes a matter of minutes. This system will provide the enterprise to maintain a central database, which stores all the data at a single place. 3. This system is user friendly so best suited for an employee. It reduces the paper work and thus provides the complete and accurate information of all Employees. 4. The software system takes into account various constraints and problems that normally occur during this huge process, and assist in streamlining the process, cutting down the time invested in it and improving the quality of the actual assignment

10. SCOPE OF THE PROJECT 109

In OFFICE MANAGEMENT SYSTEM, in future Demat Services, Customer

Services and many other value added services can be started after taking up the market consideration through Indian Government Guidelines.

This Office Management System is an open System in which new Services can be

added in future for expansion of Office Management System in new areas.

110

REFERENCE

Books: Object Oriented Programming with C++, E.Balagurusamy ,Tata McGraw Hill. An Introduction to Object Oriented Programming, Timothy Budd ,Pearson Education Asia, 2001. Software Engineering A Practitioners Approach, Roger S. Pressman, Tata McGraw Hill, 6th Edition. Software Engineering , K.K Aggarwal & Yogesh Singh , 3rd Edition

Websites: www.c++projects.com www.tatamcgrawhill.com www.google.co.in www.tatamcgrawhill.com www.google.co.in

111

APPENDICES

112

A Synopsis on

OFFICE MANAGEMENT SYSTEM

Submitted to: Ms. Ramandeep Kaur Lecturer (IT)

Submitted

by:-

SORAM RAMANANDA SINGH

Enroll no: 07031223002 Course: BCA (V C)

Directorate of Distance Education Guru Jambheshwar University of Science and Technology, Hisar 125001 (2007-2010) 113

1. TITLE OF THE PROJECT: OFFICE MANAGEMENT SYSTEM


2. BRIEF INTRODUCTION OF THE PROJECT
If we want manage our office and business, as a better plan with better management is the key of successful business. Application & software solution provider and gives you easy solution for Office Management System. We can provide you integrated solution to help you maximize efficiency. 2.1. Making of project Routine tasks need routine procedures if you want to stay organized and keep things running smoothly. Set up routines for handling paperwork and office systems. Good office management depends on people knowing who is responsible for what its people who are accountable who get things done. Make updating records an office routine. Keeping records sounds like the easiest part of good office management - until you consider the need to keep those records both accessible and updated. Business planning is an important component of good office management and needs to be part of your regular office management routine. Successful small business owners spend time every week on business planning, and many use daily business planning sessions as a tool for goal setting and growth. If you have staff, involve them in business planning, either formally or informally.

3 PURPOSE OF THE PROJECT 3.1 Objective: Its main objective is wanted manage our office and business, as a better plan with better Management is the key of successful business. 3.2 Purpose: Office management system will help to improve your financial position, customer relationship, and Supply chain management . Computerized business and office management system , which is not Only help you to manage your cash and your operations, but it also allow you to make better use of Your resources and time.

114

4. PROBLEMS WITH THE CURRENT SYSTEM:


The problem of current system is divided into sub problems 4.1 Problem of manual operation: It is a lengthy process to manage all document of different department. In manual process we have to maintain different file of different department. Now it can be done computerized in system.

4.2 Problem of accuracy:


1. The data does not remain consistent. 2. Large number of mistakes and calculations

4.3 Problem of timeliness:


1. It requires very skilled labor to encrypt the data. 2. It is very time consuming process to encrypt the data by using the current system

5. NEED FOR THE PROPOSED SYSTEM:


In OFFICE MANAGEMENT SYSTEM, in future Demat Services, Customer

Services and many other value added services can be started after taking up the market consideration through Indian Government Guidelines.

This Office Management System is an open System in which new Services can be

added in future for expansion of Office Management System in new areas

6. TOOLS AND TECHNIQUES USED: 115

6.1 Hardware Requirements:

S.

Device

Description Core2Duo 2.4GHz 512 MB 160 GB

Company INTEL Simtronics Samsung

Price/Unit 4500.00 450.00 2050.00

No. 1 Processor 2 3 RAM Hard Disk

6.2

Software Requirements:

Language Used Operating system

:C++ : Windows XP

116

You might also like