+ All Categories
Home > Documents > Nilambar-Shipping Management Report

Nilambar-Shipping Management Report

Date post: 09-Sep-2014
Category:
Upload: hamza-s
View: 114 times
Download: 4 times
Share this document with a friend
Popular Tags:
286
Project Report Page 1 of 286
Transcript
Page 1: Nilambar-Shipping Management Report

Project Report

Page 1 of 227

Page 2: Nilambar-Shipping Management Report

Table of Content

SL.

No.

Topic Page

No

1 1. Introduction

2 2. System Analysis

3 2.1. Identification of Need

4 2.2.Preliminary Investigation

5 2.3.Feasibility Study

6 2.4.Project Planning

7 2.5.Project Scheduling

8 2.6.Software Requirement Specification

9 2.7.Software Engineering Paradigm

10 2.8.Data model, Control Flow diagram

11 3. System Design

12 3.1.Modularization details

13 3.2. Data integrity and consVehiclets

14 3.3.Database design

15 3.4.User Interface design

16 4. Coding

17 4.1.Complete Project Coding

18 4.2.Comments and Description

19 4.3.Standardization of the coding/Code Efficiency

20 4.4.Error handling

21 4.5.Parameter Calling/Passing

22 4.6.Validation Checks

23 5. Testing

24 5.1.Testing techniques and Testing strategies

Page 2 of 227

Page 3: Nilambar-Shipping Management Report

25 5.2.Debugging and Code improvement

26 6. System Security Measures

27 6.1.Database/data Security

28 6.2.Creation of user profile and access rights

29 7. Cost Estimation

30 8. Reports

31 9. Pert Chart

32 10.Gantt Chart

33 11.Future Scope

34 12.Bibliography

35 13.Appendices

36 14.Glossary

1. Introduction

This project provides the user with many configurable features. On top of its

incredible flexibility this project offers 3 global configurations within the same

program that affect all other options and the way you ship.

The software has the following key features:

Menu Driven: The entire system is developed as a menu driven

system. When the system is started the software starts with a flash

screen and then the dialog box appears with required menus and

submenus. The dialog box contains menu. From the menus user

Page 3 of 227

Page 4: Nilambar-Shipping Management Report

can do the required operation by clicking menus and their

submenus.

Flexible: The system is as flexible as there is no need for the

remembering of any command. There is a help menu consists the

instructions for the usage of the software and information about the

components in a step-by-step basis.

User Friendly: This software is user friendly since the system is

entirely Menu driven.

This project simplifies the shipping process of companies using multiple carriers.

This project includes your carriers’ rates and their specifications. Once all rates are

entered, the system provides a rate-shopping capability that ensures the selection

of the best rate.

This project provides your carriers with bar-coded labels, manifests and bills of

lading in their specific format.

More advantages of using this system:

easy to use cost comparison between multiple carriers

carrier selection based on transit time and service requirements

no start-of-day / end-of-day requirement, user can close carrier any time, over any

length of time. This allows multiple manifests per day or consolidation on a weekly

basis.

EDI enabled for ASN, carrier billing, status and more

on-line Tracking is available for many carriers

REPORTING AND ON-LINE CAPABILITY

With this system, all reporting needs can be customized. Standard reports are

offered:

Page 4 of 227

Page 5: Nilambar-Shipping Management Report

powerful on-line or on-screen reporting allowing the user to view historic data in a

multitude of ways

carrier payment summary eliminates costly freight auditing

cost centre analysis

lane/weight analysis

On-line tracing for fast accurate response to status inquiries is also available, by

your reference, your customer’s reference, package ID, BOL#, date and much

more.

RATE LOOKUP

This project offers users, the ability to lookup rates to ship to a particular client

based on estimated pieces, weight, cube and service requirements.

sales personnel can give accurate estimates on potential orders.

customer service personnel can offer clients the service levels and freight charges

prior to placing an order to allow for pre selection of carrier and service.

check various routing or consolidation options to assist in cost saving and service

enhancing ability

2. System Analysis

2.1. Identification of Need

For identifying problems/needs, we scan the following:

the performance of the system

the information being supplied and its form

Page 5 of 227

Page 6: Nilambar-Shipping Management Report

the economy of processing

the control of the information processing

the efficiency of the existing system

the security of the data and software

the security of the equipment and personnel, etc.

After identification of the problem, it is defined and a general direction or method

for solving this problem is also determined. Then project boundaries are defined.

The management establishes the term of reference as well as the resources to

be provided for the project. System development is an iterative process and the

first identifiable stage of it is Problem Definition, whose final output is Terms of

Reference.

2.2. Preliminary Investigation

A request to take assistance from information systems can be made for many

reasons, but in each case someone in the organization initiates the request when

the request is made. The first systems activity the preliminary investigation

begins. This activity has three parts:

i. Request, clarification

ii. Feasibility study

iii. Request approval

Request Clarification: Many requests from employees and users in the

organizations are not clearly defined. Therefore, it becomes necessary that

project request must be examined and clarified properly before considering

systems investigation.

Page 6 of 227

Page 7: Nilambar-Shipping Management Report

This Project is on Shipping Management System, in which there are several

Agents, each having their unique ID, and has the information about the Agents ,

the Route, Fare, the Tourist spots etc. in details. The agent books a package tour

on receiving request from the Shippingers or the customers. After booking is

done, the customer is provided with tickets with all journey details.

2.3. Feasibility Study

Depending on the results of the initial investigation, the survey is expanded to a

more detailed feasibility study. A feasibility study is a test of a system proposal

according to its workability, impact on the organization, ability to meet user’s

needs, and effective use of resources. It focuses on three major questions:

1. What are the user’s demonstrable needs and how does a candidate

system meet them?

2. What resources are available for given candidate systems? Is the problem

worth solving?

3. What is the likely impact of the candidate system on the organization?

How well does it fit within the organization’s master MIS plan?

Each of these questions must be answered very carefully. They revolve around

investigation and evaluation of the problem, identification and description of the

candidate systems, specification of performance and the cost of each system,

and final selection of the best system.

The objective of a feasibility study is not to solve the problem but to acquire a

sense of its scope. During the study the problem definition is crystallized and

aspects of the problem to be included in the system are determined.

The result of the feasibility study is a formal proposal. The proposal consists of

the following:

Page 7 of 227

Page 8: Nilambar-Shipping Management Report

1. Statement of the problem: A carefully worded statement of the problem

that led to analysis.

2. Summary of findings and recommendations: A list of the major findings

and recommendations of the study. It is ideal for the user who requires

quick access to the results.

3. Details of findings: An outline of the methods and procedures undertaken

by the existing system, followed by coverage of the objectives and

procedures of the candidate system.

4. Recommendations and conclusions: Specific recommendations regarding

the candidate system, including personal assignments, costs, project schedules

and target dates.

After the management reviews the proposal, it becomes a formal agreement that

paves the way for actual design and implementation. This is a crucial decision

point in the life cycle. Many projects die here, whereas more promising ones

continue through implementation. Changes in the proposal are made in writing,

depending on the complexity, size and cost of the project. It is simply common

sense to verify changes before committing the project to design.

The Feasibility Study is broadly classified into the following heads:

I) Economic Feasibility: From the Cost Estimation module the total

DLOC of the project is 1400. According the costing that has arrived from DLOC

considering the fact the project type is organic comes to be Rs.5000. This cost is

bearable by the client within the prescribed limits of the later. Hence the project is

Economically Feasible.

II) Technical Feasibility: The hardware required for the project would

mainly be a sophisticated printer for printing purpose other than the PC itself.

These are technically available with latest technology incorporated into them.

The software on which the project has been built up is mainly VB 6.0 Crystal

Reports and Oracle which are readily available and technically sound. Hence the

project is Technically Feasible.

Page 8 of 227

Page 9: Nilambar-Shipping Management Report

III) Operational Feasibility: Deploying the project would involve running

the setup kit created by me on the client computer, creating ODBC connectivity

and exporting the Oracle Database. These three jobs are well documented and

can be easily deployed by a naive user. After deployment regular maintenance of

the sound card, back up of the Database, trouble shooting etc. can also be

achieved by well documented manuals. Hence the project is Operationally

Feasible.

2.4. Project Planning

The objective of the Project Planning is to provide a framework that enables

the manager to make reasonable estimates of resources, cost and schedule.

These estimates are made within a limited time frame at the beginning of a

software project and should be updated regularly as the project progresses.

The planning objective is achieved through a process of information discovery

that leads to reasonable estimates.

Master Project Plan

The Master Project Plan tells how the product will be built by gathering detailed

plans from members of the project team. The team then uses this collection of

more detailed deliverables to synchronize its work throughout the remainder of

the project.

The purpose of a Master Project Plan is to:

Consolidate feature team and role work plans.

Describe how feature teams and roles will execute their tasks.

Synchronize the plans across the team.

Page 9 of 227

Page 10: Nilambar-Shipping Management Report

The overall owner of the Master Project Plan is Program Management, because

this role is the primary coordinator of planning and process for the project.

However, each role on the team is responsible for developing and maintaining its

own realistic project plan within the overall plan.

The Master Project Plan should include the items listed in Table.

Table: Components of the Master Project Plan

Plan Description

Development Tells how Development will build what’s described in

the Functional Specification. It describes such things as

tools, methodologies, best practices, sequences of

events, and test methods.

Test Includes a testing strategy, the specific areas to be

tested, and the resources (hardware and people)

Testing will require to do its job.

Vehicleing Includes a strategy and a plan for developing any

necessary Vehicleing materials.

User support Includes a strategy and details for developing anything

that users will need for performance, such as wizards

and user manuals.

Communication

s

Includes a marketing strategy and promotional activities

for users.

Deployment Includes a strategy and a detailed plan for preparing

end users and operations personnel before and during

deployment.

Page 10 of 227

Page 11: Nilambar-Shipping Management Report

2.5. Project Scheduling

Software Project Scheduling is an activity that distributes estimated effort

across the planned project duration by allocating the effort to specific software

engineering tasks. Like all other areas of software engineering, a number of

basic principles guide software project scheduling:

Compartmentalization

Interdependency

Time allocation

Effort validation

Defined responsibilities

Defined outcomes

Defined milestones

Program Evaluation and Review Technique (PERT) and Critical Path Method

(CPM) are two project scheduling methods that can be applied to software

development. Both techniques are driven by information already developed in

earlier project planning activities:

Estimation of effort

A decomposition of the product function

The selection of the appropriate process model and task set

Decomposition of tasks.

When creating a software project schedule, the planner begins with a set of

above tasks. A timeline chart, also called Gantt chart can be used for this

purpose. The Gantt chart depicts the various parts of a software project schedule

that emphasizes the concept scoping task for a software product. All project

tasks are listed on the left side. Horizontal bars are used to indicate the duration

of each task. A diamond is used to indicate a milestone.

Page 11 of 227

Page 12: Nilambar-Shipping Management Report

Of all the schedules in the Master Project Schedule, the development schedule is

the most crucial. All the other schedules will be based on it.

The Master Project Schedule includes:

Development schedule.

Product ship dates, both internal and external.

Test schedule.

Vehicleing schedule.

User support schedule.

Communications schedule.

Deployment schedule.

2.6. Software Requirement Specification

According to the Client proposal we have arrived at our design in order to

implement our client requirements. Software Requirement Specification is

produced at the end of the Analysis task. The function and performance of the

software are refined by a complete information description, a detailed functional

and behavioral description, performance requirements and design

consConsignmentts, appropriate validation criteria and other data related to

requirements. A simplified outline as given below is for the specification.

Introduction: the introduction of the Software Specification states the goal and

objective of the software, describing it in the context of the computer based

system. Actually, the introduction may be nothing more than software scope of

the planning document.

System reference, Overall description, Environment characteristics, Interface

with devices, Interface with Operating system, Interface with Databases.

Page 12 of 227

Page 13: Nilambar-Shipping Management Report

Functional Requirements

The requirement of this function has been implemented on the basis of the

project designing and partitioning the Project into different sub-modules, which

are as follows:

a) Functional Partitioning:

I) Server:

1) Login system

2) Add, Update, and Delete system for:

i. Consignor

ii. Consignee

iii. Consignment

iv. Route

3) Report generating system.

b) Functional Description:

I) Server:

1) Logon to the SMS modification system.

2) Add a new record, Update existing record, and Delete old

record for:

i. Consignor

ii. Consignee

iii. Consignment

Page 13 of 227

Page 14: Nilambar-Shipping Management Report

iv. Route

3) Generate Reports for Consignee activity, Consignment

query, Consignor.

4) View information relating to Consignee, Consignor,

Consignment as a graphical form.

II) Terminal:

View information relating to Consignee, Consignor,

Consignment as a graphical form.

c) Control Description:

Proper security authentication has been provided by this

system.

Security features is discussed later.

Non-functional Requirements

* The system can be run on all NT type of Windows platform.

* The system requires MS SQL Server Database installed.

* The system requires adequate Memory.

Behavioral Description

State Diagram for Logon:

Page 14 of 227

Page 15: Nilambar-Shipping Management Report

State Diagram for Add/Update/Delete:

State Diagram for Report:

Page 15 of 227

Do: Cancel MassageDo: Cancel Massage

Try

LogonDo: Display Logon

LogonDo: Display Logon

Do: Request Id & PasswordDo: Request Id & Password

Do: Verify UserDo: Verify User

Enter Id & Password

Bad Password

Do: Logon Do: Logon Bad Account

Request Logon

Validate

Do: Cancel MassageDo: Cancel Massage

Try

Add/Update/DeleteDo: Display Add/Update/Delete

Add/Update/DeleteDo: Display Add/Update/Delete

Do: Request DataDo: Request Data Do: Verify DataDo: Verify Data

Enter data

Do: Update Database

Do: Update Database

Bad Data

Request updating database

Validate

Page 16: Nilambar-Shipping Management Report

State Diagram for SMS (Shipping Management Systems):

Validation Criteria

a) Performance Bounds: Performance of this system will heavily depend on

processing speed of the Terminals (Computer).

b) Routees of Tests: Each module will be tested independently. Finally the

overall testing will be made in order to find out whether the system is accurate

or not.

Page 16 of 227

Do: Cancel massageDo: Cancel massage

Try

ReportDo: Display Report ReportDo: Display Report

Do: Request DataDo: Request Data Do: Verify DataDo: Verify Data

Enter data

Do: Show Do: Show Bad Data

Request display report

Validate

SMSDo: Display SMS SMSDo: Display SMS

Do: Request DataDo: Request Data Do: Verify DataDo: Verify Data

Enter data Request for Information

Do: information Do: information

Do: Cancel Message Do: Cancel Message

Bad data Try Validate

Page 17: Nilambar-Shipping Management Report

c) Response to undesired Events: The system that will be generated will never

fail in spite of inputting wrong data. This system will be able to generate error

message whenever wrong information is input or an undesired event occurs.

Software Used

Hardware Requirements

Software Requirements

Software used:

Programming: VB.NET 2003

Platform: Microsoft.Net Framework 2.0

Report Generation: Crystal reports 10

Database: SQL Server for Windows Server 2003 with

SQL * Plus

Components: ActiveX

OS: Windows XP with Service Pack 2

Overview of the .NET Framework

The .NET Framework is an integral Windows component that supports building

and running the next generation of applications and XML Web services.

The .NET Framework is designed to fulfill the following objectives:

To provide a consistent object-oriented programming environment

whether object code is stored and executed locally, executed locally but

Internet-distributed, or executed remotely.

To provide a code-execution environment that minimizes software

deployment and versioning conflicts.

To provide a code-execution environment that promotes safe execution of

code, including code created by an unknown or semi-trusted third party.

To provide a code-execution environment that eliminates the performance

problems of scripted or interpreted environments.

Page 17 of 227

Page 18: Nilambar-Shipping Management Report

To make the developer experience consistent across widely varying types

of applications, such as Windows-based applications and Web-based

applications.

To build all communication on industry standards to ensure that code

based on the .NET Framework can integrate with any other code.

Oracle9 i contains important new features that optimize traditional business

applications, facilitate critical advancement for internet-based business, and

stimulate the emerging hosted application market. New Oracle9i Database

features deliver the performance, scalability, and availability essential to hosted

service software made available to anyone, anywhere.

The Oracle9i Database offers new transparent, rapid growth clustering

capabilities, along with powerful and cost-effective security measures, zero-

data-loss safeguards, and real-time intelligence to deliver the power needed in

today's dynamic marketplace, like:

Availability, Scalability, Performance, Security, Manageability, E-Business

Application, E-Business Integration, Content Management, Windows

Integration, Packaged Applications, Business Intelligence

Other New Features: Oracle9i includes a number of miscellaneous features

that increase the power and usability of the database server.

Heterogeneous Services

Oracle Net Services

Replication

Oracle Spatial

The 18-character limit for spatial index names is removed

Oracle Text, formerly inter-Media Text, includes new features that provide

greater flexibility in building text query applications

Page 18 of 227

Page 19: Nilambar-Shipping Management Report

Crystal Reports for Visual Studio .NET is the standard reporting tool for Visual

Studio .NET; it brings the ability to create interactive, presentation-quality content

— which has been the strength of Crystal Reports for years — to the .NET

platform. With Crystal Reports for Visual Studio .NET, you can host reports on

Web and Windows platforms and publish Crystal reports as Report Web Services

on a Web server. Though the Web Forms Viewer is used for Web programming

and the Windows Forms Viewer is used for Windows programming, their basic

functionality is the same; that is, they are both used to view reports. The Viewer

controls' main purpose is to view reports within your application. They can be

passed a path either to a report file, or to a Report-Document object. Besides

displaying reports, the Viewer controls only have a limited amount of control over

the report. They have the ability to set logon information and set parameters.

Page 19 of 227

Page 20: Nilambar-Shipping Management Report

They also have limited exporting capabilities. The Report Document object offers

the most control over your reports. It has many different properties and methods

that let you control the look of your report through code. The Report-Document

object can be used in either a Windows application or a Web application;

however, it cannot view your reports. This is where the Viewer controls and the

Report-Document object fit together.

2.7. Software Engineering Paradigm

To solve actual problem in an industry setting, a software engineer must

incorporate a development strategy that encompasses the process, methods

and tool layers and the generic phases. This strategy is known as Software

Engineering Paradigm of Process Model. A software engineering paradigm is

chosen based on the nature of the project and application, the methods and

tools to be used, and the controls and deliverables that are required. The

Software Requirement Paradigm applied here is “Waterfall Model” or “Linear

Sequential Model”

Waterfall Model

The common metaphor of building a house is often used to describe the

traditional approach to application development. The builder first gathers

information from the Consignee about his or her needs and desires, determines

what needs to be built, designs the structure, and constructs it from the plans.

The builder must ensure that the building holds together and that all the

components, from the electricity and plumbing to the doorbell, are fully functional.

The Consignee then tests everything to ensure that all elements meet

expectations. Even after the Consignee moves into the new home, the builder

must occasionally come back to fix minor problems.

Page 20 of 227

Page 21: Nilambar-Shipping Management Report

The stages of building a house are similar to the stages of the Waterfall Model of

application development. As shown in Figure 4.1, the tightly defined Waterfall

Model is an orderly, highly structured process based on the following well-defined

development steps:

Gathering system and software requirements

Analysis

Program design

Coding and unit testing

System integration

System testing

Operation acceptance

Each step is completed and thoroughly documented before the next step can

begin.

Strict use of the Waterfall Model is declining. Following this model causes several

problems throughout the product life cycle, which are summarized below.

Page 21 of 227

Page 22: Nilambar-Shipping Management Report

Extra time Typically more time than was initially scheduled is needed to

integrate subsystems into a complete, working application.

Late design changes Design flaws that require significant changes to the

product are discovered late in the software coding process. Rarely is

tangible design validation performed in the project's early stages.

Inadequate risk resolution The project's risks are not resolved until late

in the product life cycle.

Lack of requirement revisions The project's requirements must be

stated and frozen at the first stages of the development process. Often,

the project's stakeholders don't completely understand the business and

product requirements at the beginning of project. With most software

projects, requirements are clarified and changed throughout the project,

which dramatically increases product cost and delays ship times. If the

changes are not integrated into the product, the stakeholders don't think

the product they receive is the one they requested.

Limited opportunities for input The traditional practice allows a single

review process to finalize each project stage. This single opportunity to

voice concerns and suggest changes produces an over-sensitized focus

on details that can lead to adversarial relationships between project

stakeholders.

Lack of review The first four stages of the Waterfall Model are paper-

based exercises, and to prove that the project is progressing, reams of

paper may be produced as each stage is completed. As volumes of

system documentation are presented, the most understood portions are

often the ones that are reviewed, while the more complex portions are

simply assumed to be correct.

2.8. Data model, Control Flow diagram

Page 22 of 227

Page 23: Nilambar-Shipping Management Report

DATA FLOW DIAGRAM

The data flow diagram is used to represent a system or software at any level of

abstraction. DFDs may be portioned into levels that represent increasing

information flow and functional detail. Thus, the DFD offers a mechanism for

functional modeling as well as information flow modeling. And, it satisfies the

second operational analysis principle.

A data flow diagram (DFD) is graphical technique that shows information flow

and the transforms that are used as data move from input to output. The DFD is

also know as a data flow graph or a bubble chart.

DFD Level 0

DFD Level 1

Level 1: represents the verification of the system as to login by giving the

Correct Login and password.

Page 23 of 227

Page 24: Nilambar-Shipping Management Report

1.1

Login System

UserPassword

Login Data Request

Verified Response

Login Response

Login Request

1.1

Login System

UserPassword

Login Data Request

Verified Response

Login Response

Login Request

DFD Level 2

Page 24 of 227

Page 25: Nilambar-Shipping Management Report

DFD Level 3

3.1 Add

Records

3.2Modify Records

3.3Delete

Records

3.4 Display Records

User Data

Database

Display results

Data Request

Data Request

Data Request

Data Request

Data Request

Data Request

Data Req

uest

Data R

eques

t

Data Response

Add Records

Modify Records

Delete Records

Display Records

User Data

Database

Display results

Data Request

Data Request

Data Request

Data Request

Data Request

Data Request

Data Req

uest

Data R

eques

t

Data Response

3.1 Add

Records

3.2Modify Records

3.3Delete

Records

3.4 Display Records

User Data

Database

Display results

Data Request

Data Request

Data Request

Data Request

Data Request

Data Request

Data Req

uest

Data R

eques

t

Data Response

Add Records

Modify Records

Delete Records

Display Records

User Data

Database

Display results

Data Request

Data Request

Data Request

Data Request

Data Request

Data Request

Data Req

uest

Data R

eques

t

Data Response

Add Records

Modify Records

Delete Records

Display Records

User Data

Database

Display results

Data Request

Data Request

Data Request

Data Request

Data Request

Data Request

Data Req

uest

Data R

eques

t

Data Response

ER-DIAGRAM:

Database will be consisting of number of tables. First of all an ER-diagram showing

the entity and their relationships is created. Then entity sets and relations are

converted into tables as per requirement. Careful study of the input-output

requirements reveals the attributes of the tables. Finally the table structures are

refined applying normalization. Here, normalization up to 3NF has been adopted.

But, in some cases for ease of operation and faster response redundancy have

been allowed.

Page 25 of 227

Page 26: Nilambar-Shipping Management Report

3. System Design

3.1. Modularization details

1) Route’s Module:

Page 26 of 227

Consignment

Vehicle

Consignor

Paid for

Books

Choose

Conducted on

Vehicle Id

Route Id

Vehicle Name

Route Covered by

Route Id

Source

Destination

Route Id

Date

Amount

Booking Id

Vehicle Id

Consignment ID

Pays Tariff

Tariff Id

Distance

Cost

Con Id

Name

Address

Cons Id

ConID

Value

Page 27: Nilambar-Shipping Management Report

a) Take details of route of the Source & Destination. This includes the Name,

Address, of the place.

b) Assign source and destination.

c) Assign a route id.

d) Save the details into the database.

e) Generate report of the Route according to the needs.

2) Vehicle’s Module:

a) Take details of the vehicle. This includes the registration no. of vehicle,

manufacturer, no. of seat capacity of the vehicle etc.

b) Assign a route to the vehicle.

c) Assign a vehicle id.

d) Assign time to leave the station.

e) Assign the fare.

f) Save every record to the database.

g) Generate report of the vehicle according to the needs.

3) Booking’s Module:

a) Get details of the Consignment package.

b) Get details of the Consignor.

c) Check the availability of the package.

d) Check the availability of the vehicle on the chosen route.

e) Give ticket to the customer with a transaction id.

f) Save record into the database

g) Generate report according to the need.

Page 27 of 227

Page 28: Nilambar-Shipping Management Report

3.2. Data integrity and consVehiclets

Data integrity means that the data contained in the database is both accurate

and consistent. Therefore, data values being entered for storage could be

checked to ensure that they fall within a specified range and are of the correct

format. For example, the value of the employee of Shipping Company may be in

the range of 18 to 60. Another integrity check that should be incorporated in the

database is to ensure that if there is a reference to certain object, that object

must exist. In the case of Automatic Teller Machine (ATM), for example, a user is

not allowed to transfer funds from a nonexistent savings account to a checking

account.

Types of Data Integrity

ORACLE 9i supports four types of data integrity: entity integrity, domain integrity,

Referential integrity, and user-defined integrity.

Entity Integrity

Entity integrity defines a row as a unique instance of an entity for a particular

table. Entity integrity enforces the integrity of the identifier column or the primary

key of a table (through indexes, UNIQUE consVehiclets, PRIMARY KEY

consVehiclets, or IDENTITY properties).

Domain Integrity

Domain integrity is the validity of entries for a given column. You can enforce

domain integrity by restricting the type (through data types), the format (through

CHECK consVehiclets and rules), or the range of possible values (through

Page 28 of 227

Page 29: Nilambar-Shipping Management Report

FOREIGN KEY consVehiclets, CHECK consVehiclets, DEFAULT definitions,

NOT NULL definitions, and rules).

Referential Integrity

Referential integrity preserves the defined relationships between tables when

records are entered or deleted. In SQL Server, referential integrity is based on

relationships between foreign keys and primary keys or between foreign keys

and unique keys (through FOREIGN KEY and CHECK consVehiclets).

Referential integrity ensures that key values are consistent across tables. Such

consistency requires that there be no references to non-existent values and that,

if a key value changes, all references to it change consistently throughout the

database.

When we enforce referential integrity, SQL Server prevents users from doing any

of the following:

■ Adding records to a related table if there is no associated record in the primary

table

■ Changing values in a primary table that result in orphaned records in a related

table

■ Deleting records from a primary table if there are related records in the foreign

table

User-Defined Integrity

User-defined integrity enables us to define specific business rules that do not fall

into one of the other integrity categories. All of the integrity categories support

user-defined integrity (all column-level and table-level consVehiclets in the

CREATE

TABLE statement, stored procedures, and triggers).

Integrity ConsVehiclets

Page 29 of 227

Page 30: Nilambar-Shipping Management Report

ConsVehiclets enable us to define the way SQL Server 2000 automatically

enforces the integrity of a database. ConsVehiclets define rules regarding the

values allowed in columns and are the standard mechanisms for enforcing

integrity. Using consVehiclets is preferred to using triggers, rules, or defaults.

The query optimizer also uses consVehiclet definitions to build high-performance

query execution plans.

ConsVehiclets can be column consVehiclets or table consVehiclets:

■ A column consVehiclet is specified as part of a column definition and applies

only

to that column.

■ A table consVehiclet is declared independently from a column definition and

can

apply to more than one column in a table.

Table consVehiclets must be used when more than one column is included in a

consVehiclet. For example, if a table has two or more columns in the primary

key, we must use a table consVehiclet to include both columns in the primary

key. Consider a table that records events happening in a computer in a factory.

Assume that events of several types can happen at the same time, but no two

events happening at the same time can be of the same type. This rule can be

enforced in the table by including both the type and time columns in a two-

column primary key, as shown in the following CREATE TABLE statement:

CREATE TABLE FactoryProcess

(

EventType INT,

EventTime DATETIME,

EventSite CHAR(50),

EventDesc CHAR(1024),

CONSVEHICLET event_key PRIMARY KEY (EventType, EventTime)

)

Page 30 of 227

Page 31: Nilambar-Shipping Management Report

SQL Server supports four main classes of consVehiclets: PRIMARY KEY

consVehiclets, UNIQUE consVehiclets, FOREIGN KEY consVehiclets, and

CHECK consVehiclets.

PRIMARY KEY ConsVehiclets

A table usually has a column (or combination of columns) whose values uniquely

identify each row in the table. This column (or columns) is called the primary key

of the table and enforces the entity integrity of the table. You can create a

primary key by defining a PRIMARY KEY consVehiclet when you create or alter

a table.

UNIQUE ConsVehiclets

We can use UNIQUE consVehiclets to ensure that no duplicate values are

entered in specific columns that do not participate in a primary key. Although

both a UNIQUE consVehiclet and a PRIMARY KEY consVehiclet enforce

uniqueness, you should use a UNIQUE consVehiclet instead of a PRIMARY KEY

consVehiclet in the following situations:

■ If a column (or combination of columns) is not the primary key. Multiple

UNIQUE consVehiclets can be defined on a table, whereas only one PRIMARY

KEY consVehiclet can be defined on a table.

■ If a column allows null values. UNIQUE consVehiclets can be defined for

columns that allow null values, whereas PRIMARY KEY consVehiclets can be

defined only on columns that do not allow null values.

A UNIQUE consVehiclet can also be referenced by a FOREIGN KEY

consVehiclet.

FOREIGN KEY ConsVehiclets

A foreign key is a column or combination of columns used to establish and

enforce a link between the data in two tables. Create a link between two tables

by adding a column (or columns) to one of the tables and defining those columns

Page 31 of 227

Page 32: Nilambar-Shipping Management Report

with a FOREIGN KEY consVehiclet. The columns will hold the primary key

values from the second table. A table can contain multiple FOREIGN KEY

consVehiclets.

CHECK ConsVehiclets

CHECK consVehiclets enforce domain integrity by limiting the values that are

accepted by a column. They are similar to FOREIGN KEY consVehiclets in that

they control the values that are placed in a column. The difference is in how they

determine which values are valid. FOREIGN KEY consVehiclets get the list of

valid values from another table, and CHECK consVehiclets determine the valid

values from a logical expression that is not based on data in another column. For

example, it is possible to limit the range of values for a salary column by creating

a CHECK consVehiclet that allows only data ranging from $15,000 through

$100,000. This feature prevents the entering of salaries from outside the normal

salary range.

3.3. Database design

Using the relational model, each of the entities can be represented by a relation.

Each relation scheme is named and indicated by boldface capital letters. Here,

we have a relation scheme for SHIPPING AUTHORITY,

CONSIGNMENT_MASTER, STAFF, CONSIGNEE, SHIFT,

CONSIGNMENT_TRANS, MEDICALS and INVOICE relations. From the ER

model we find the following relation tables:

Proposed tables

Database Schema

Table: SMS_SHIPMODES (contains information about the various shipping modes available)Column Name Data Type Description

Page 32 of 227

Page 33: Nilambar-Shipping Management Report

Id INTEGER Unique identification for every shipping modeName VARCHAR(25) Name of the shipping mode e.g. Air, Sea,

Land, Courier, etc.Description VARCHAR(50) Detailed description if any

Table: SMS_TARIFFS (contains information about the various tariff schemes available)Column Name Data Type Description

ShipModeId INTEGER Refers ID column of SMS_SHIPMODES tableStartDistance

VARCHAR(25) Starting distance for this class of tariffs ex. 0

EndDistance

VARCHAR(50) Ending distance for this category of tariffs ex. 250

Tariff NUMERIC(9,2) Rate for 0 to 250 kilometers ex. 1500 rupees

Table: SMS_CONSIGNMENTTYPES (contains information about the various types of consignments)Column Name Data Type Description

Id INTEGER Unique identification for every type of consignmentName VARCHAR(25) Name of the consignment type ex. Parcel,

Package, ContainerDescription VARCHAR(50) Detailed description if any

Table: SMS_CONSIGNORS (contains information about customers)Column Name Data Type Description

Id INTEGER Unique identification for every customerName VARCHAR(50) Name of the customer. You can also put

FirstName, LastName, etc.Address1 VARCHAR(50) Address of the customerAddress2 VARCHAR(50) Address of the customerAddress3 VARCHAR(50) Address of the customerPIN VARCHAR(15) PIN Code of the customerPhone1 VARCHAR(25) Phone of the customerPhone2 VARCHAR(25) Phone of the customerFax VARCHAR(25) Fax of the customerEmail VARCHAR(50) Email Id of the customerContactPerson

VARCHAR(50) Contact Person of the customer

Notes TEXT Any detailed description about the customer

Table: SMS_CONSIGNMENTS (contains information about consignments)Column Name Data Type Description

Id INTEGER Unique identification for every shipping modeName VARCHAR(25) Name of the shipping mode e.g. Air, Sea,

Page 33 of 227

Page 34: Nilambar-Shipping Management Report

Land, Courier, etc.Description VARCHAR(50) Detailed description if anyType INTEGER Whether Luggage, Parcel or Heavy

Package. Store 1, 2 or 3 onlyConsignorId INTEGER Refers ID column of CONSIGNORS tableTotalWeight NUMERIC(9,2) Total weight of the consignmentFromAddress1

VARCHAR(50) From Address of the consignment

FromAddress2

VARCHAR(50) From Address of the consignment

ToName VARCHAR(50) To Address of the consignmentToAddress1 VARCHAR(50) To Address of the consignmentToAddress2 VARCHAR(50) To Address of the consignmentToAddress3 VARCHAR(50) To Address of the consignmentToPIN VARCHAR(15) To PIN Code of the consignmentDispatchDate

DATETIME Dispatch date of the consignment

DeliveryDate

DATETIME Prospective delivery date of the consignment

Table: SMS_HALTS (contains information about the various way stations covered in all routes)Column Name Data Type Description

Id INTEGER Unique identification for every way station

Name VARCHAR(25) Name of the way station viz. Pune, Vijayawada, Bellary, etc.

Description VARCHAR(50) Detailed description if any

Table: SMS_ROUTEMASTER (contains information about the various routes taken)Column Name Data Type Description

Id INTEGER Unique identification for every route

Name VARCHAR(25) Name of the route if any

StartingPointId

INTEGER Refers ID column of SMS_HALTS table

EndingPointId

INTEGER Refers ID column of SMS_HALTS table

TotalDistance

NUMERIC(9,2) Total distance covered by the consignment

Table: SMS_ROUTEDETAILS (contains information about the halts on every route)Column Name Data Type Description

RouteId INTEGER Unique identification for every route

Page 34 of 227

Page 35: Nilambar-Shipping Management Report

StartingPointId

INTEGER Refers ID column of SMS_HALTS table (Madras has an ID of 23)

EndingPointId

INTEGER Refers ID column of SMS_HALTS table (Hyderabad has an ID of 97)

HaltNo INTEGER A serial number (Gudur is halt no.1, Nellore is halt no.2, Ongole is halt no.3…)

Distance NUMERIC(9,2) Distance between the above starting point and ending point

TimeTaken NUMERIC(9,2) Time taken to Shipping from above starting point to above end point

ClearanceTime

NUMERIC(9,2) Time taken for the consignment to arrive at this ending point

Table: SMS_ITEMS (contains information about the items shipped)Column Name Data Type Description

ConsignmentId

INTEGER Unique identification for every item

ItemId INTEGER Refers ID column of SMS_ITEMS table (Madras has an ID of 23)

ItemDesc VARCHAR(50) Description

Weight NUMERIC(5,2) A serial number (Gudur is halt no.1, Nellore is halt no.2, Ongole is halt no.3…)

Length NUMERIC(5,2) Length of the item

Breadth NUMERIC(5,2) Breadth of the item

Height NUMERIC(5,2) Height of the item

Composition VARCHAR(50) Composition of the item (Cardboard, Thermocol, Paper Mache, Coir…)

PiecesPerBox

INTEGER Number of pieces that can be accommodated in a box

BoxesPerPack

INTEGER Number of boxes that can be accommodated in a pack

RouteId INTEGER Refers ID column of SMS_ROUTEMASTER table

DispatchDate

DATETIME Date on which the package was dispatched

Page 35 of 227

Page 36: Nilambar-Shipping Management Report

SQL CODE FOR GENERATING TABLES & STORED PROCEDURES

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].

[ConsignmentDetails]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[ConsignmentDetails]

GO

CREATE TABLE [dbo].[ConsignmentDetails] (

[ConSignmentID] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS

NOT NULL ,

[Description] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS

NULL ,

[ConsignmentTypeID] [varchar] (10) COLLATE

SQL_Latin1_General_CP1_CI_AS NOT NULL ,

[Quantity] [int] NOT NULL ,

[ArrivalDate] [datetime] NOT NULL ,

[ArrivalTime] [datetime] NOT NULL ,

[Length] [numeric](18, 0) NOT NULL ,

[Breadth] [numeric](18, 0) NOT NULL ,

[Height] [numeric](18, 0) NOT NULL ,

[Weight] [numeric](18, 0) NOT NULL ,

[DestinationStationID] [varchar] (10) COLLATE

SQL_Latin1_General_CP1_CI_AS NOT NULL ,

[DeliveryDate] [datetime] NOT NULL

) ON [PRIMARY]

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].

[ConsignmentTypes]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[ConsignmentTypes]

GO

Page 36 of 227

Page 37: Nilambar-Shipping Management Report

CREATE TABLE [dbo].[ConsignmentTypes] (

[ConsignmentTypeID] [varchar] (10) COLLATE

SQL_Latin1_General_CP1_CI_AS NOT NULL ,

[ConsignmentTypeName] [varchar] (50) COLLATE

SQL_Latin1_General_CP1_CI_AS NOT NULL ,

[Description] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS

NULL

) ON [PRIMARY]

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Consignor]') and

OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[Consignor]

GO

CREATE TABLE [dbo].[Consignor] (

[ConsignorID] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS

NOT NULL ,

[ConsignorName] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS

NOT NULL ,

[CompanyName] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS

NOT NULL ,

[Address] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT

NULL ,

[EmailID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT

NULL ,

[Fax] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,

[Notes] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL

) ON [PRIMARY]

GO

Page 37 of 227

Page 38: Nilambar-Shipping Management Report

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].

[ConsingmentMaster]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[ConsingmentMaster]

GO

CREATE TABLE [dbo].[ConsingmentMaster] (

[ConsignmentID] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS

NOT NULL ,

[ConsignorID] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS

NOT NULL ,

[StationID] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT

NULL ,

[NoOfItems] [int] NOT NULL ,

[ConsignmentDate] [datetime] NOT NULL ,

[ItemValue] [numeric](18, 0) NOT NULL ,

[BillAmount] [numeric](18, 0) NOT NULL

) ON [PRIMARY]

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[RouteDetails]')

and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[RouteDetails]

GO

CREATE TABLE [dbo].[RouteDetails] (

[RouteID] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT

NULL ,

[StartingPointID] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS

NOT NULL ,

Page 38 of 227

Page 39: Nilambar-Shipping Management Report

[EndingPointID] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS

NOT NULL ,

[StopNo] [int] NOT NULL ,

[Distance] [numeric](18, 0) NOT NULL ,

[TrainNo] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT

NULL ,

[ArrivalTime] [datetime] NOT NULL ,

[DepartureTime] [datetime] NOT NULL

) ON [PRIMARY]

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[RouteMaster]')

and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[RouteMaster]

GO

CREATE TABLE [dbo].[RouteMaster] (

[RouteID] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT

NULL ,

[RouteName] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT

NULL ,

[StartingPointID] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS

NOT NULL ,

[EndingPointingID] [varchar] (10) COLLATE

SQL_Latin1_General_CP1_CI_AS NOT NULL ,

[TotalDistance] [numeric](18, 0) NOT NULL

) ON [PRIMARY]

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Shipmodes]')

and OBJECTPROPERTY(id, N'IsUserTable') = 1)

Page 39 of 227

Page 40: Nilambar-Shipping Management Report

drop table [dbo].[Shipmodes]

GO

CREATE TABLE [dbo].[Shipmodes] (

[ShipmodeID] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS

NOT NULL ,

[ShipmodeName] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS

NOT NULL ,

[Description] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS

NULL

) ON [PRIMARY]

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Station]') and

OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[Station]

GO

CREATE TABLE [dbo].[Station] (

[StationID] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT

NULL ,

[StationName] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS

NOT NULL ,

[Description] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS

NULL

) ON [PRIMARY]

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Tariff]') and

OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[Tariff]

Page 40 of 227

Page 41: Nilambar-Shipping Management Report

GO

CREATE TABLE [dbo].[Tariff] (

[ShipmodeID] [varchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS

NOT NULL ,

[StartDistance] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS

NOT NULL ,

[EndDistance] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS

NOT NULL ,

[Tariff] [numeric](18, 0) NOT NULL

) ON [PRIMARY]

GO

CREATE PROCEDURE dbo.DeleteConsignmentDetails

(

@Original_ConSignmentID varchar(10),

@Original_ArrivalDate datetime,

@Original_ArrivalTime datetime,

@Original_Breadth numeric(18),

@Original_ConsignmentTypeID varchar(10),

@Original_DeliveryDate datetime,

@Original_Description varchar(100),

@Original_DestinationStationID varchar(10),

@Original_Height numeric(18),

@Original_Length numeric(18),

@Original_Quantity int,

@Original_Weight numeric(18)

)

AS

SET NOCOUNT OFF;

Page 41 of 227

Page 42: Nilambar-Shipping Management Report

DELETE FROM ConsignmentDetails WHERE (ConSignmentID =

@Original_ConSignmentID) AND (ArrivalDate = @Original_ArrivalDate) AND

(ArrivalTime = @Original_ArrivalTime) AND (Breadth = @Original_Breadth) AND

(ConsignmentTypeID = @Original_ConsignmentTypeID) AND (DeliveryDate =

@Original_DeliveryDate) AND (Description = @Original_Description OR

@Original_Description IS NULL AND Description IS NULL) AND

(DestinationStationID = @Original_DestinationStationID) AND (Height =

@Original_Height) AND (Length = @Original_Length) AND (Quantity =

@Original_Quantity) AND (Weight = @Original_Weight)

GO

CREATE PROCEDURE dbo.DeleteConsignmentMaster

(

@Original_ConsignmentID varchar(10),

@Original_BillAmount numeric(18),

@Original_ConsignmentDate datetime,

@Original_ConsignorID varchar(10),

@Original_ItemValue numeric(18),

@Original_NoOfItems int,

@Original_StationID varchar(10)

)

AS

SET NOCOUNT OFF;

DELETE FROM ConsignmentMaster WHERE (ConsignmentID =

@Original_ConsignmentID) AND (BillAmount = @Original_BillAmount) AND

(ConsignmentDate = @Original_ConsignmentDate) AND (ConsignorID =

@Original_ConsignorID) AND (ItemValue = @Original_ItemValue) AND

(NoOfItems = @Original_NoOfItems) AND (StationID = @Original_StationID)

GO

CREATE PROCEDURE dbo.DeleteConsignor

(

@Original_ConsignorID varchar(10),

Page 42 of 227

Page 43: Nilambar-Shipping Management Report

@Original_Address varchar(100),

@Original_CompanyName varchar(50),

@Original_ConsignorName varchar(50),

@Original_EmailID varchar(50),

@Original_Fax varchar(20),

@Original_Notes varchar(50)

)

AS

SET NOCOUNT OFF;

DELETE FROM Consignor WHERE (ConsignorID = @Original_ConsignorID)

AND (Address = @Original_Address) AND (CompanyName =

@Original_CompanyName) AND (ConsignorName = @Original_ConsignorName)

AND (EmailID = @Original_EmailID) AND (Fax = @Original_Fax OR

@Original_Fax IS NULL AND Fax IS NULL) AND (Notes = @Original_Notes OR

@Original_Notes IS NULL AND Notes IS NULL)

GO

CREATE PROCEDURE dbo.DeleteConsignorTypes

(

@Original_ConsignmentTypeID varchar(10),

@Original_ConsignmentTypeName varchar(50),

@Original_Description varchar(100)

)

AS

SET NOCOUNT OFF;

DELETE FROM ConsignmentTypes WHERE (ConsignmentTypeID =

@Original_ConsignmentTypeID) AND (ConsignmentTypeName =

@Original_ConsignmentTypeName) AND (Description = @Original_Description

OR @Original_Description IS NULL AND Description IS NULL)

GO

CREATE PROCEDURE dbo.DeleteRouteDetails

(

Page 43 of 227

Page 44: Nilambar-Shipping Management Report

@Original_EndingPointID varchar(10),

@Original_RouteID varchar(10),

@Original_StartingPointID varchar(10),

@Original_ArrivalTime datetime,

@Original_DepartureTime datetime,

@Original_Distance numeric(18),

@Original_StopNo int,

@Original_VehicleNo varchar(10)

)

AS

SET NOCOUNT OFF;

DELETE FROM RouteDetails WHERE (EndingPointID =

@Original_EndingPointID) AND (RouteID = @Original_RouteID) AND

(StartingPointID = @Original_StartingPointID) AND (ArrivalTime =

@Original_ArrivalTime) AND (DepartureTime = @Original_DepartureTime) AND

(Distance = @Original_Distance) AND (StopNo = @Original_StopNo) AND

(VehicleNo = @Original_VehicleNo)

GO

CREATE PROCEDURE dbo.DeleteRouteMaster

(

@Original_RouteID varchar(10),

@Original_EndingPointingID varchar(10),

@Original_RouteName varchar(50),

@Original_StartingPointID varchar(10),

@Original_TotalDistance numeric(18)

)

AS

SET NOCOUNT OFF;

DELETE FROM RouteMaster WHERE (RouteID = @Original_RouteID) AND

(EndingPointingID = @Original_EndingPointingID) AND (RouteName =

Page 44 of 227

Page 45: Nilambar-Shipping Management Report

@Original_RouteName) AND (StartingPointID = @Original_StartingPointID) AND

(TotalDistance = @Original_TotalDistance)

GO

CREATE PROCEDURE dbo.DeleteStation

(

@Original_StationID varchar(10),

@Original_Description varchar(100),

@Original_StationName varchar(50)

)

AS

SET NOCOUNT OFF;

DELETE FROM Station WHERE (StationID = @Original_StationID) AND

(Description = @Original_Description OR @Original_Description IS NULL AND

Description IS NULL) AND (StationName = @Original_StationName)

GO

CREATE PROCEDURE dbo.DeleteTariffs

(

@Original_ConsingmentTypeID varchar(10),

@Original_Class varchar(50),

@Original_EndDistance numeric(18),

@Original_Rate numeric(18),

@Original_StartDistance numeric(18)

)

AS

SET NOCOUNT OFF;

DELETE FROM Tariffs WHERE (ConsingmentTypeID =

@Original_ConsingmentTypeID) AND (Class = @Original_Class) AND

(EndDistance = @Original_EndDistance) AND (Rate = @Original_Rate) AND

(StartDistance = @Original_StartDistance)

GO

CREATE PROCEDURE dbo.InsertConsignmentDetails

Page 45 of 227

Page 46: Nilambar-Shipping Management Report

(

@ConSignmentID varchar(10),

@Description varchar(100),

@ConsignmentTypeID varchar(10),

@Quantity int,

@ArrivalDate datetime,

@ArrivalTime datetime,

@Length numeric(18),

@Breadth numeric(18),

@Height numeric(18),

@Weight numeric(18),

@DestinationStationID varchar(10),

@DeliveryDate datetime

)

AS

SET NOCOUNT OFF;

INSERT INTO ConsignmentDetails(ConSignmentID, Description,

ConsignmentTypeID, Quantity, ArrivalDate, ArrivalTime, Length, Breadth, Height,

Weight, DestinationStationID, DeliveryDate) VALUES (@ConSignmentID,

@Description, @ConsignmentTypeID, @Quantity, @ArrivalDate, @ArrivalTime,

@Length, @Breadth, @Height, @Weight, @DestinationStationID, @DeliveryDate);

SELECT ConSignmentID, Description, ConsignmentTypeID, Quantity,

ArrivalDate, ArrivalTime, Length, Breadth, Height, Weight, DestinationStationID,

DeliveryDate FROM ConsignmentDetails WHERE (ConSignmentID =

@ConSignmentID)

GO

CREATE PROCEDURE dbo.InsertConsignmentMaster

(

@ConsignmentID varchar(10),

@ConsignorID varchar(10),

@StationID varchar(10),

Page 46 of 227

Page 47: Nilambar-Shipping Management Report

@NoOfItems int,

@ConsignmentDate datetime,

@ItemValue numeric(18),

@BillAmount numeric(18)

)

AS

SET NOCOUNT OFF;

INSERT INTO ConsignmentMaster(ConsignmentID, ConsignorID, StationID,

NoOfItems, ConsignmentDate, ItemValue, BillAmount) VALUES

(@ConsignmentID, @ConsignorID, @StationID, @NoOfItems, @ConsignmentDate,

@ItemValue, @BillAmount);

SELECT ConsignmentID, ConsignorID, StationID, NoOfItems,

ConsignmentDate, ItemValue, BillAmount FROM ConsignmentMaster WHERE

(ConsignmentID = @ConsignmentID)

GO

CREATE PROCEDURE dbo.InsertConsignmentTypes

(

@ConsignmentTypeID varchar(10),

@ConsignmentTypeName varchar(50),

@Description varchar(100)

)

AS

SET NOCOUNT OFF;

INSERT INTO ConsignmentTypes(ConsignmentTypeID, ConsignmentTypeName,

Description) VALUES (@ConsignmentTypeID, @ConsignmentTypeName,

@Description);

SELECT ConsignmentTypeID, ConsignmentTypeName, Description FROM

ConsignmentTypes WHERE (ConsignmentTypeID = @ConsignmentTypeID)

GO

CREATE PROCEDURE dbo.InsertConsignor

(

Page 47 of 227

Page 48: Nilambar-Shipping Management Report

@ConsignorID varchar(10),

@ConsignorName varchar(50),

@CompanyName varchar(50),

@Address varchar(100),

@EmailID varchar(50),

@Fax varchar(20),

@Notes varchar(50)

)

AS

SET NOCOUNT OFF;

INSERT INTO Consignor(ConsignorID, ConsignorName, CompanyName, Address,

EmailID, Fax, Notes) VALUES (@ConsignorID, @ConsignorName,

@CompanyName, @Address, @EmailID, @Fax, @Notes);

SELECT ConsignorID, ConsignorName, CompanyName, Address, EmailID, Fax,

Notes FROM Consignor WHERE (ConsignorID = @ConsignorID)

GO

CREATE PROCEDURE dbo.InsertRouteDetails

(

@RouteID varchar(10),

@StartingPointID varchar(10),

@EndingPointID varchar(10),

@StopNo int,

@Distance numeric(18),

@VehicleNo varchar(10),

@ArrivalTime datetime,

@DepartureTime datetime

)

AS

SET NOCOUNT OFF;

INSERT INTO RouteDetails(RouteID, StartingPointID, EndingPointID, StopNo,

Distance, VehicleNo, ArrivalTime, DepartureTime) VALUES (@RouteID,

Page 48 of 227

Page 49: Nilambar-Shipping Management Report

@StartingPointID, @EndingPointID, @StopNo, @Distance, @VehicleNo,

@ArrivalTime, @DepartureTime);

SELECT RouteID, StartingPointID, EndingPointID, StopNo, Distance,

VehicleNo, ArrivalTime, DepartureTime FROM RouteDetails WHERE

(EndingPointID = @EndingPointID) AND (RouteID = @RouteID) AND

(StartingPointID = @StartingPointID)

GO

CREATE PROCEDURE dbo.InsertRouteMaster

(

@RouteID varchar(10),

@RouteName varchar(50),

@StartingPointID varchar(10),

@EndingPointingID varchar(10),

@TotalDistance numeric(18)

)

AS

SET NOCOUNT OFF;

INSERT INTO RouteMaster(RouteID, RouteName, StartingPointID,

EndingPointingID, TotalDistance) VALUES (@RouteID, @RouteName,

@StartingPointID, @EndingPointingID, @TotalDistance);

SELECT RouteID, RouteName, StartingPointID, EndingPointingID,

TotalDistance FROM RouteMaster WHERE (RouteID = @RouteID)

GO

CREATE PROCEDURE dbo.InsertStation

(

@StationID varchar(10),

@StationName varchar(50),

@Description varchar(100)

)

AS

SET NOCOUNT OFF;

Page 49 of 227

Page 50: Nilambar-Shipping Management Report

INSERT INTO Station(StationID, StationName, Description) VALUES

(@StationID, @StationName, @Description);

SELECT StationID, StationName, Description FROM Station WHERE

(StationID = @StationID)

GO

CREATE PROCEDURE dbo.InsertTariffs

(

@ConsingmentTypeID varchar(10),

@Class varchar(50),

@StartDistance numeric(18),

@EndDistance numeric(18),

@Rate numeric(18)

)

AS

SET NOCOUNT OFF;

INSERT INTO Tariffs(ConsingmentTypeID, Class, StartDistance, EndDistance,

Rate) VALUES (@ConsingmentTypeID, @Class, @StartDistance, @EndDistance,

@Rate);

SELECT ConsingmentTypeID, Class, StartDistance, EndDistance, Rate FROM

Tariffs WHERE (ConsingmentTypeID = @ConsingmentTypeID)

GO

CREATE PROCEDURE dbo.SelectConsignmentDetails

AS

SET NOCOUNT ON;

SELECT ConSignmentID, Description, ConsignmentTypeID, Quantity, ArrivalDate,

ArrivalTime, Length, Breadth, Height, Weight, DestinationStationID, DeliveryDate

FROM ConsignmentDetails

GO

CREATE PROCEDURE dbo.SelectConsignmentMaster

AS

SET NOCOUNT ON;

Page 50 of 227

Page 51: Nilambar-Shipping Management Report

SELECT ConsignmentID, ConsignorID, StationID, NoOfItems, ConsignmentDate,

ItemValue, BillAmount FROM ConsignmentMaster

GO

CREATE PROCEDURE dbo.SelectConsignmentTypes

AS

SET NOCOUNT ON;

SELECT ConsignmentTypeID, ConsignmentTypeName, Description FROM

ConsignmentTypes

GO

CREATE PROCEDURE dbo.SelectConsignor

AS

SET NOCOUNT ON;

SELECT ConsignorID, ConsignorName, CompanyName, Address, EmailID, Fax,

Notes FROM Consignor

GO

CREATE PROCEDURE dbo.SelectRouteDetails

AS

SET NOCOUNT ON;

SELECT RouteID, StartingPointID, EndingPointID, StopNo, Distance, VehicleNo,

ArrivalTime, DepartureTime FROM RouteDetails

GO

CREATE PROCEDURE dbo.SelectRouteMaster

AS

SET NOCOUNT ON;

SELECT RouteID, RouteName, StartingPointID, EndingPointingID, TotalDistance

FROM RouteMaster

GO

CREATE PROCEDURE dbo.SelectStation

AS

SET NOCOUNT ON;

SELECT StationID, StationName, Description FROM Station

Page 51 of 227

Page 52: Nilambar-Shipping Management Report

GO

CREATE PROCEDURE dbo.SelectTariffs

AS

SET NOCOUNT ON;

SELECT ConsingmentTypeID, Class, StartDistance, EndDistance, Rate FROM

Tariffs

GO

CREATE PROCEDURE dbo.UpdateConsignmentDetails

(

@ConSignmentID varchar(10),

@Description varchar(100),

@ConsignmentTypeID varchar(10),

@Quantity int,

@ArrivalDate datetime,

@ArrivalTime datetime,

@Length numeric(18),

@Breadth numeric(18),

@Height numeric(18),

@Weight numeric(18),

@DestinationStationID varchar(10),

@DeliveryDate datetime,

@Original_ConSignmentID varchar(10),

@Original_ArrivalDate datetime,

@Original_ArrivalTime datetime,

@Original_Breadth numeric(18),

@Original_ConsignmentTypeID varchar(10),

@Original_DeliveryDate datetime,

@Original_Description varchar(100),

@Original_DestinationStationID varchar(10),

@Original_Height numeric(18),

@Original_Length numeric(18),

Page 52 of 227

Page 53: Nilambar-Shipping Management Report

@Original_Quantity int,

@Original_Weight numeric(18)

)

AS

SET NOCOUNT OFF;

UPDATE ConsignmentDetails SET ConSignmentID = @ConSignmentID,

Description = @Description, ConsignmentTypeID = @ConsignmentTypeID,

Quantity = @Quantity, ArrivalDate = @ArrivalDate, ArrivalTime = @ArrivalTime,

Length = @Length, Breadth = @Breadth, Height = @Height, Weight = @Weight,

DestinationStationID = @DestinationStationID, DeliveryDate = @DeliveryDate

WHERE (ConSignmentID = @Original_ConSignmentID) AND (ArrivalDate =

@Original_ArrivalDate) AND (ArrivalTime = @Original_ArrivalTime) AND

(Breadth = @Original_Breadth) AND (ConsignmentTypeID =

@Original_ConsignmentTypeID) AND (DeliveryDate = @Original_DeliveryDate)

AND (Description = @Original_Description OR @Original_Description IS NULL

AND Description IS NULL) AND (DestinationStationID =

@Original_DestinationStationID) AND (Height = @Original_Height) AND (Length

= @Original_Length) AND (Quantity = @Original_Quantity) AND (Weight =

@Original_Weight);

SELECT ConSignmentID, Description, ConsignmentTypeID, Quantity,

ArrivalDate, ArrivalTime, Length, Breadth, Height, Weight, DestinationStationID,

DeliveryDate FROM ConsignmentDetails WHERE (ConSignmentID =

@ConSignmentID)

GO

CREATE PROCEDURE dbo.UpdateConsignmentMaster

(

@ConsignmentID varchar(10),

@ConsignorID varchar(10),

@StationID varchar(10),

@NoOfItems int,

@ConsignmentDate datetime,

Page 53 of 227

Page 54: Nilambar-Shipping Management Report

@ItemValue numeric(18),

@BillAmount numeric(18),

@Original_ConsignmentID varchar(10),

@Original_BillAmount numeric(18),

@Original_ConsignmentDate datetime,

@Original_ConsignorID varchar(10),

@Original_ItemValue numeric(18),

@Original_NoOfItems int,

@Original_StationID varchar(10)

)

AS

SET NOCOUNT OFF;

UPDATE ConsignmentMaster SET ConsignmentID = @ConsignmentID,

ConsignorID = @ConsignorID, StationID = @StationID, NoOfItems = @NoOfItems,

ConsignmentDate = @ConsignmentDate, ItemValue = @ItemValue, BillAmount =

@BillAmount WHERE (ConsignmentID = @Original_ConsignmentID) AND

(BillAmount = @Original_BillAmount) AND (ConsignmentDate =

@Original_ConsignmentDate) AND (ConsignorID = @Original_ConsignorID) AND

(ItemValue = @Original_ItemValue) AND (NoOfItems = @Original_NoOfItems)

AND (StationID = @Original_StationID);

SELECT ConsignmentID, ConsignorID, StationID, NoOfItems,

ConsignmentDate, ItemValue, BillAmount FROM ConsignmentMaster WHERE

(ConsignmentID = @ConsignmentID)

GO

CREATE PROCEDURE dbo.UpdateConsignmentTypes

(

@ConsignmentTypeID varchar(10),

@ConsignmentTypeName varchar(50),

@Description varchar(100),

@Original_ConsignmentTypeID varchar(10),

@Original_ConsignmentTypeName varchar(50),

Page 54 of 227

Page 55: Nilambar-Shipping Management Report

@Original_Description varchar(100)

)

AS

SET NOCOUNT OFF;

UPDATE ConsignmentTypes SET ConsignmentTypeID = @ConsignmentTypeID,

ConsignmentTypeName = @ConsignmentTypeName, Description = @Description

WHERE (ConsignmentTypeID = @Original_ConsignmentTypeID) AND

(ConsignmentTypeName = @Original_ConsignmentTypeName) AND (Description

= @Original_Description OR @Original_Description IS NULL AND Description IS

NULL);

SELECT ConsignmentTypeID, ConsignmentTypeName, Description FROM

ConsignmentTypes WHERE (ConsignmentTypeID = @ConsignmentTypeID)

GO

CREATE PROCEDURE dbo.UpdateConsignor

(

@ConsignorID varchar(10),

@ConsignorName varchar(50),

@CompanyName varchar(50),

@Address varchar(100),

@EmailID varchar(50),

@Fax varchar(20),

@Notes varchar(50),

@Original_ConsignorID varchar(10),

@Original_Address varchar(100),

@Original_CompanyName varchar(50),

@Original_ConsignorName varchar(50),

@Original_EmailID varchar(50),

@Original_Fax varchar(20),

@Original_Notes varchar(50)

)

AS

Page 55 of 227

Page 56: Nilambar-Shipping Management Report

SET NOCOUNT OFF;

UPDATE Consignor SET ConsignorID = @ConsignorID, ConsignorName =

@ConsignorName, CompanyName = @CompanyName, Address = @Address,

EmailID = @EmailID, Fax = @Fax, Notes = @Notes WHERE (ConsignorID =

@Original_ConsignorID) AND (Address = @Original_Address) AND

(CompanyName = @Original_CompanyName) AND (ConsignorName =

@Original_ConsignorName) AND (EmailID = @Original_EmailID) AND (Fax =

@Original_Fax OR @Original_Fax IS NULL AND Fax IS NULL) AND (Notes =

@Original_Notes OR @Original_Notes IS NULL AND Notes IS NULL);

SELECT ConsignorID, ConsignorName, CompanyName, Address, EmailID, Fax,

Notes FROM Consignor WHERE (ConsignorID = @ConsignorID)

GO

CREATE PROCEDURE dbo.UpdateRouteDetails

(

@RouteID varchar(10),

@StartingPointID varchar(10),

@EndingPointID varchar(10),

@StopNo int,

@Distance numeric(18),

@VehicleNo varchar(10),

@ArrivalTime datetime,

@DepartureTime datetime,

@Original_EndingPointID varchar(10),

@Original_RouteID varchar(10),

@Original_StartingPointID varchar(10),

@Original_ArrivalTime datetime,

@Original_DepartureTime datetime,

@Original_Distance numeric(18),

@Original_StopNo int,

@Original_VehicleNo varchar(10)

)

Page 56 of 227

Page 57: Nilambar-Shipping Management Report

AS

SET NOCOUNT OFF;

UPDATE RouteDetails SET RouteID = @RouteID, StartingPointID =

@StartingPointID, EndingPointID = @EndingPointID, StopNo = @StopNo, Distance

= @Distance, VehicleNo = @VehicleNo, ArrivalTime = @ArrivalTime,

DepartureTime = @DepartureTime WHERE (EndingPointID =

@Original_EndingPointID) AND (RouteID = @Original_RouteID) AND

(StartingPointID = @Original_StartingPointID) AND (ArrivalTime =

@Original_ArrivalTime) AND (DepartureTime = @Original_DepartureTime) AND

(Distance = @Original_Distance) AND (StopNo = @Original_StopNo) AND

(VehicleNo = @Original_VehicleNo);

SELECT RouteID, StartingPointID, EndingPointID, StopNo, Distance,

VehicleNo, ArrivalTime, DepartureTime FROM RouteDetails WHERE

(EndingPointID = @EndingPointID) AND (RouteID = @RouteID) AND

(StartingPointID = @StartingPointID)

GO

CREATE PROCEDURE dbo.UpdateRouteMaster

(

@RouteID varchar(10),

@RouteName varchar(50),

@StartingPointID varchar(10),

@EndingPointingID varchar(10),

@TotalDistance numeric(18),

@Original_RouteID varchar(10),

@Original_EndingPointingID varchar(10),

@Original_RouteName varchar(50),

@Original_StartingPointID varchar(10),

@Original_TotalDistance numeric(18)

)

AS

SET NOCOUNT OFF;

Page 57 of 227

Page 58: Nilambar-Shipping Management Report

UPDATE RouteMaster SET RouteID = @RouteID, RouteName = @RouteName,

StartingPointID = @StartingPointID, EndingPointingID = @EndingPointingID,

TotalDistance = @TotalDistance WHERE (RouteID = @Original_RouteID) AND

(EndingPointingID = @Original_EndingPointingID) AND (RouteName =

@Original_RouteName) AND (StartingPointID = @Original_StartingPointID) AND

(TotalDistance = @Original_TotalDistance);

SELECT RouteID, RouteName, StartingPointID, EndingPointingID,

TotalDistance FROM RouteMaster WHERE (RouteID = @RouteID)

GO

CREATE PROCEDURE dbo.UpdateStation

(

@StationID varchar(10),

@StationName varchar(50),

@Description varchar(100),

@Original_StationID varchar(10),

@Original_Description varchar(100),

@Original_StationName varchar(50)

)

AS

SET NOCOUNT OFF;

UPDATE Station SET StationID = @StationID, StationName = @StationName,

Description = @Description WHERE (StationID = @Original_StationID) AND

(Description = @Original_Description OR @Original_Description IS NULL AND

Description IS NULL) AND (StationName = @Original_StationName);

SELECT StationID, StationName, Description FROM Station WHERE

(StationID = @StationID)

GO

CREATE PROCEDURE dbo.UpdateTariffs

(

@ConsingmentTypeID varchar(10),

@Class varchar(50),

Page 58 of 227

Page 59: Nilambar-Shipping Management Report

@StartDistance numeric(18),

@EndDistance numeric(18),

@Rate numeric(18),

@Original_ConsingmentTypeID varchar(10),

@Original_Class varchar(50),

@Original_EndDistance numeric(18),

@Original_Rate numeric(18),

@Original_StartDistance numeric(18)

)

AS

SET NOCOUNT OFF;

UPDATE Tariffs SET ConsingmentTypeID = @ConsingmentTypeID, Class =

@Class, StartDistance = @StartDistance, EndDistance = @EndDistance, Rate =

@Rate WHERE (ConsingmentTypeID = @Original_ConsingmentTypeID) AND

(Class = @Original_Class) AND (EndDistance = @Original_EndDistance) AND

(Rate = @Original_Rate) AND (StartDistance = @Original_StartDistance);

SELECT ConsingmentTypeID, Class, StartDistance, EndDistance, Rate FROM

Tariffs WHERE (ConsingmentTypeID = @ConsingmentTypeID)

GO

Page 59 of 227

Page 60: Nilambar-Shipping Management Report

3.4. User Interface design

Input/Output Design

Fig1: Login Screen of Shipping Management System

The above Login Screen is the gateway of the Shipping Management System.

When the Administrator starts using Shipping Management System the above

screen will appear and whenever the administrator puts the proper Password he

will be able to enter into this system. This splash screen is meant for preventing

unauthorized people form entering into the system.

Page 60 of 227

Page 61: Nilambar-Shipping Management Report

Fig2: Main Screen of Shipping Management System

This is the main screen of Shipping Management System. User has to click on the

menu to work for a specific work.

Page 61 of 227

Page 62: Nilambar-Shipping Management Report

Fig3: Screen to add a Consignor details

This is the screen to add a Consignor of the Shipping. User has to input all the

data fields and click on the save button to save the data. The cancel button is to

cancel the data inputted in the fields. The exit button will help to exit from this

window and return to main menu.

Page 62 of 227

Page 63: Nilambar-Shipping Management Report

Fig4: Screen to edit a Consignor details

This is the screen to edit a Consignor of the Shipping. User has to modify the data

fields and click on the update button to save the data. User can delete the record

by clicking on the delete button. The cancel button is to cancel the data inputted in

the fields. The exit button will help to exit from this window and return to main

menu.

Page 63 of 227

Page 64: Nilambar-Shipping Management Report

Fig5: Screen to add a Vehicle detail

This is the screen to add a vehicle of the Shipping. User has to input all the data

fields and click on the save button to save the data. The cancel button is to cancel

the data inputted in the fields. The exit button will help to exit from this window and

return to main menu.

Page 64 of 227

Page 65: Nilambar-Shipping Management Report

Fig6: Screen to edit Vehicle details

This is the screen to edit a vehicle of the Shipping. User has to modify the data

fields and click on the update button to save the data. User can delete the record

by clicking on the delete button. The cancel button is to cancel the data inputted in

the fields. The exit button will help to exit from this window and return to main

menu.

Page 65 of 227

Page 66: Nilambar-Shipping Management Report

Fig7: Screen to add a Route detail

This is the screen to add a Route. User has to input all the data fields and click on

the save button to save the data. The cancel button is to cancel the data inputted

in the fields. The exit button will help to exit from this window and return to main

menu.

Page 66 of 227

Page 67: Nilambar-Shipping Management Report

Fig8: Screen to edit a Route details

This is the screen to edit a route. User has to modify the data fields and click on

the update button to save the data. User can delete the record by clicking on the

delete button. The cancel button is to cancel the data inputted in the fields. The exit

button will help to exit from this window and return to main menu.

Page 67 of 227

Page 68: Nilambar-Shipping Management Report

Fig9: Screen to add Consignment

This is the screen to add a Consignment. User has to input all the data fields and

click on the save button to save the data. The cancel button is to cancel the data

inputted in the fields. The exit button will help to exit from this window and return to

main menu.

Page 68 of 227

Page 69: Nilambar-Shipping Management Report

Fig10: Screen to edit Consignment details

This is the screen to edit a Consignment. User has to modify the data fields and

click on the update button to save the data. User can delete the record by clicking

on the delete button. The cancel button is to cancel the data inputted in the fields.

The exit button will help to exit from this window and return to main menu.

Page 69 of 227

Page 70: Nilambar-Shipping Management Report

Fig11: Screen to Change Password

This is the screen to change the password. User has to input all the data fields and

click on the ok button to change the data. The exit button will help to exit from this

window and return to main menu.

Page 70 of 227

Page 71: Nilambar-Shipping Management Report

Fig12: Screen to add Tariff detail

This is the screen to add Tariff. User has to input all the data fields and click on the

save button to save the data. The cancel button is to cancel the data inputted in

the fields. The exit button will help to exit from this window and return to main

menu.

Page 71 of 227

Page 72: Nilambar-Shipping Management Report

Fig13: Screen to edit Tariff details

This is the screen to edit Tariff of the Shipping. User has to modify the data fields

and click on the update button to save the data. User can delete the record by

clicking on the delete button. The cancel button is to cancel the data inputted in the

fields. The exit button will help to exit from this window and return to main menu.

Page 72 of 227

Page 73: Nilambar-Shipping Management Report

Fig14: Screen to add Station detail

This is the screen to add Station. User has to input all the data fields and click on

the save button to save the data. The cancel button is to cancel the data inputted

in the fields. The exit button will help to exit from this window and return to main

menu.

Fig15: Screen to edit Station details

This is the screen to edit Station of the Shipping. User has to modify the data fields

and click on the update button to save the data. User can delete the record by

clicking on the delete button. The cancel button is to cancel the data inputted in the

fields. The exit button will help to exit from this window and return to main menu.

Page 73 of 227

Page 74: Nilambar-Shipping Management Report

4. Coding

4.1. Complete Project Coding

BACKEND ARCHITECTURE

DAShippingBaseClass.vb

Imports Microsoft.Win32Imports System.ConfigurationImports System.Data.sqlclientPublic Class DAShippingBaseClass Implements IDisposable

Public Connection As OracleConnection Public Command As SqlCommand Public DataAdapter As OracleDataAdapter Public SQL As String Public Sub New() Try Connection = New OracleConnection("Server=SERVER;UID=Scott;Pwd=Tiger”)

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) Finally

End Try End Sub

Public Sub Dispose() Implements System.IDisposable.Dispose

If Not DataAdapter Is Nothing Then DataAdapter.Dispose() DataAdapter = Nothing End If If Not Connection Is Nothing Then Connection.Close() Connection.Dispose()

Page 74 of 227

Page 75: Nilambar-Shipping Management Report

Connection = Nothing End If End Sub Public Sub InitializeCommand() If Command Is Nothing Then Try Command = New SqlCommand(SQL, Connection) If Not SQL.ToUpper.StartsWith("SELECT ") _ And Not SQL.ToUpper.StartsWith("INSERT ") _ And Not SQL.ToUpper.StartsWith("UPDATE ") _ And Not SQL.ToUpper.StartsWith("DELETE ") Then Command.CommandType = CommandType.StoredProcedure

End If Catch ex As SqlException Throw New System.Exception(ex.Message, ex.InnerException)

End Try End If End Sub Private Sub InitializeDataAdapter() Try DataAdapter = New OracleDataAdapter DataAdapter.SelectCommand = Command Catch ex As SqlException Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Sub Public Sub FillDataSet(ByRef oDataSet As DataSet, ByVal TableName As String) Try InitializeCommand() InitializeDataAdapter() DataAdapter.Fill(oDataSet, TableName)

Catch ex As SqlException Throw New System.Exception(ex.Message, ex.InnerException) Finally Command.Dispose() Command = Nothing DataAdapter.Dispose() DataAdapter = Nothing End Try End Sub Public Sub AddParameter(ByVal Name As String, ByVal Type As SqlDbType, ByVal Size As Integer, ByVal Value As Object) Try Command.Parameters.Add(Name, Type, Size).Value = Value

Catch ex As SqlException Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Sub Public Sub OpenConnection()

Page 75 of 227

Page 76: Nilambar-Shipping Management Report

Try Connection.Open() Catch ex As SqlException Throw New System.Exception(ex.Message, ex.InnerException)

Catch InvalidEx As InvalidOperationException Throw New System.Exception(InvalidEx.Message, InvalidEx.InnerException)

End Try End Sub Public Sub CloseConnection() Connection.Close() End Sub Public Function ExecuteStoredProcedure() As Integer Try OpenConnection() ExecuteStoredProcedure = Command.ExecuteNonQuery Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) Finally CloseConnection() End Try End FunctionEnd Class

DAConsignmentDetails.vb

Public Class DAConsignmentDetails Inherits ShippingDataAccess.DAShippingBaseClass

Public Sub New() MyBase.New() End Sub Public Shadows Sub Dispose() MyBase.Dispose() End Sub

Public Function GetConsignmentDetails() As DataSet Try GetConsignmentDetails = New DataSet MyBase.SQL = "SelectConsignmentDetails" MyBase.FillDataSet(GetConsignmentDetails, "ConsignmentDetails")

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function GetConsignmentDetails(ByVal ConsignmentTypeID As String) As DataSet Try GetConsignmentDetails = New DataSet

Page 76 of 227

Page 77: Nilambar-Shipping Management Report

MyBase.SQL = "SelectConsignmentDetails" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignmentDetailsID", SqlDbType.VarChar, 10, ConsignmentTypeID) MyBase.FillDataSet(GetConsignmentDetails, "ConsignmentDetails") Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function AddConsignmentDetails(ByVal ConsignmentDetails As DataSet) As Boolean Try MyBase.SQL = "InsertConsignmentDetails" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignmentTypeID", SqlDbType.VarChar, 10, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("ConsignmentTypeID")) MyBase.AddParameter("@Description", SqlDbType.VarChar, 100, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("Description")) MyBase.AddParameter("@ConsignmentTypeID", SqlDbType.VarChar, 10, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("ConsignmentTypeID")) MyBase.AddParameter("@Quantity", SqlDbType.Int, 4, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("Quantity")) MyBase.AddParameter("@ArrivalDate", SqlDbType.DateTime, 8, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("ArrivalDate")) MyBase.AddParameter("@ArrivalTime", SqlDbType.DateTime, 8, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("ArrivalTime")) MyBase.AddParameter("@Length", SqlDbType.Float, 18, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("Length")) MyBase.AddParameter("@Breadth", SqlDbType.Float, 18, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("Breadth")) MyBase.AddParameter("@Height", SqlDbType.Float, 18, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("Height")) MyBase.AddParameter("@Weigth", SqlDbType.Float, 18, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("Weight")) MyBase.AddParameter("@DestinationStationID", SqlDbType.VarChar, 10, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("DestinationStatioinID")) MyBase.AddParameter("@DeliveryDate", SqlDbType.DateTime, 8, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("DeliveryDate"))

AddConsignmentDetails = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try

Page 77 of 227

Page 78: Nilambar-Shipping Management Report

End Function Public Function DeleteConsignmentDetails(ByVal ConsignmentDetailsID As String) As Boolean

Try MyBase.SQL = "DeleteConsignmentDetails" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignmentDetailsID", SqlDbType.VarChar, 10, ConsignmentDetailsID) DeleteConsignmentDetails = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try

End Function Public Function UpdateConsignmentDetails(ByVal ConsignmentDetails As DataSet) As Boolean Try MyBase.SQL = "UpdateConsignmentDetails" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignmentTypeID", SqlDbType.VarChar, 10, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("ConsignmentTypeID")) MyBase.AddParameter("@Description", SqlDbType.VarChar, 100, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("Description")) MyBase.AddParameter("@ConsignmentTypeID", SqlDbType.VarChar, 10, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("ConsignmentTypeID")) MyBase.AddParameter("@Quantity", SqlDbType.Int, 4, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("Quantity")) MyBase.AddParameter("@ArrivalDate", SqlDbType.DateTime, 8, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("ArrivalDate")) MyBase.AddParameter("@ArrivalTime", SqlDbType.DateTime, 8, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("ArrivalTime")) MyBase.AddParameter("@Length", SqlDbType.Float, 18, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("Length")) MyBase.AddParameter("@Breadth", SqlDbType.Float, 18, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("Breadth")) MyBase.AddParameter("@Height", SqlDbType.Float, 18, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("Height")) MyBase.AddParameter("@Weigth", SqlDbType.Float, 18, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("Weight")) MyBase.AddParameter("@DestinationStationID", SqlDbType.VarChar, 10, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("DestinationStatioinID")) MyBase.AddParameter("@DeliveryDate", SqlDbType.DateTime, 8, ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("DeliveryDate"))

UpdateConsignmentDetails = ExecuteStoredProcedure()

Page 78 of 227

Page 79: Nilambar-Shipping Management Report

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End FunctionEnd Class

DAConsignmentMaster.vb

Public Class DAConsignmentMaster Inherits ShippingDataAccess.DAShippingBaseClass

Public Sub New() MyBase.New() End Sub Public Shadows Sub Dispose() MyBase.Dispose() End Sub

Public Function GetConsignmentMaster() As DataSet Try GetConsignmentMaster = New DataSet MyBase.SQL = "SelectConsignmentMaster" MyBase.FillDataSet(GetConsignmentMaster, "ConsignmentMaster")

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function GetConsignmentMaster(ByVal ConsignmentTypeID As String) As DataSet Try GetConsignmentMaster = New DataSet MyBase.SQL = "SelectConsignmentMaster" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignmentMasterID", SqlDbType.VarChar, 10, ConsignmentTypeID) MyBase.FillDataSet(GetConsignmentMaster, "ConsignmentMaster") Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function AddConsignmentMaster(ByVal ConsignmentMaster As DataSet) As Boolean Try MyBase.SQL = "InsertConsignmentMaster" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignmentTypeID", SqlDbType.VarChar, 10, ConsignmentMaster.Tables("ConsignmentMaster").Rows(0).Item("ConsignmentTypeID"))

Page 79 of 227

Page 80: Nilambar-Shipping Management Report

MyBase.AddParameter("@ConsignorID", SqlDbType.VarChar, 10, ConsignmentMaster.Tables("ConsignmentMaster").Rows(0).Item("ConsignorID")) MyBase.AddParameter("@StationID", SqlDbType.VarChar, 10, ConsignmentMaster.Tables("ConsignmentMaster").Rows(0).Item("StationID")) MyBase.AddParameter("@NoofItems", SqlDbType.Int, 4, ConsignmentMaster.Tables("ConsignmentMaster").Rows(0).Item("NoOfItems")) MyBase.AddParameter("@ConsignmentDate", SqlDbType.DateTime, 8, ConsignmentMaster.Tables("ConsignmentMaster").Rows(0).Item("ConsignmentDate")) MyBase.AddParameter("@ItemValue", SqlDbType.Float, 18, ConsignmentMaster.Tables("ConsignmentMaster").Rows(0).Item("ItemValue")) MyBase.AddParameter("@BillAmount", SqlDbType.Float, 18, ConsignmentMaster.Tables("ConsignmentMaster").Rows(0).Item("BillAmount")) AddConsignmentMaster = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function DeleteConsignmentMaster(ByVal ConsignmentMasterID As String) As Boolean

Try MyBase.SQL = "DeleteConsignmentMaster" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignmentMasterID", SqlDbType.VarChar, 10, ConsignmentMasterID) DeleteConsignmentMaster = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try

End Function Public Function UpdateConsignmentMaster(ByVal ConsignmentMaster As DataSet) As Boolean Try MyBase.SQL = "UpdateConsignmentMaster" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignmentTypeID", SqlDbType.VarChar, 10, ConsignmentMaster.Tables("ConsignmentMaster").Rows(0).Item("ConsignmentTypeID")) MyBase.AddParameter("@ConsignorID", SqlDbType.VarChar, 10, ConsignmentMaster.Tables("ConsignmentMaster").Rows(0).Item("ConsignorID")) MyBase.AddParameter("@StationID", SqlDbType.VarChar, 10, ConsignmentMaster.Tables("ConsignmentMaster").Rows(0).Item("StationID")) MyBase.AddParameter("@NoofItems", SqlDbType.Int, 4, ConsignmentMaster.Tables("ConsignmentMaster").Rows(0).Item("NoOfItems")) MyBase.AddParameter("@ConsignmentDate", SqlDbType.DateTime, 8, ConsignmentMaster.Tables("ConsignmentMaster").Rows(0).Item("ConsignmentDate"))

Page 80 of 227

Page 81: Nilambar-Shipping Management Report

MyBase.AddParameter("@ItemValue", SqlDbType.Float, 18, ConsignmentMaster.Tables("ConsignmentMaster").Rows(0).Item("ItemValue")) MyBase.AddParameter("@BillAmount", SqlDbType.Float, 18, ConsignmentMaster.Tables("ConsignmentMaster").Rows(0).Item("BillAmount"))

UpdateConsignmentMaster = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End FunctionEnd Class

DAConsignmentTypes.vb

Public Class DAConsignmentTypes Inherits ShippingDataAccess.DAShippingBaseClass

Public Sub New() MyBase.New() End Sub Public Shadows Sub Dispose() MyBase.Dispose() End Sub

Public Function GetConsignmentTypes() As DataSet Try GetConsignmentTypes = New DataSet MyBase.SQL = "SelectConsignmentTypes" MyBase.FillDataSet(GetConsignmentTypes, "ConsignmentTypes")

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function GetConsignmentTypes(ByVal ConsignmentTypeID As String) As DataSet Try GetConsignmentTypes = New DataSet MyBase.SQL = "SelectConsignmentTypes" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignmentTypesID", SqlDbType.VarChar, 10, ConsignmentTypeID) MyBase.FillDataSet(GetConsignmentTypes, "ConsignmentTypes") Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function AddConsignmentTypes(ByVal ConsignmentTypes As DataSet) As Boolean Try MyBase.SQL = "InsertConsignmentTypes"

Page 81 of 227

Page 82: Nilambar-Shipping Management Report

MyBase.InitializeCommand() MyBase.AddParameter("@ConsignmentTypeID", SqlDbType.VarChar, 10, ConsignmentTypes.Tables("ConsignmentTypes").Rows(0).Item("ConsignmentTypeID")) MyBase.AddParameter("@ConsignmentTypeName", SqlDbType.VarChar, 50, ConsignmentTypes.Tables("ConsignmentTypes").Rows(0).Item("ConsignmentTypeName")) MyBase.AddParameter("@Description", SqlDbType.VarChar, 100, ConsignmentTypes.Tables("ConsignmentTypes").Rows(0).Item("Description"))

AddConsignmentTypes = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function DeleteConsignmentTypes(ByVal ConsignmentTypesID As String) As Boolean

Try MyBase.SQL = "DeleteConsignmentTypes" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignmentTypesID", SqlDbType.VarChar, 10, ConsignmentTypesID) DeleteConsignmentTypes = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try

End Function Public Function UpdateConsignmentTypes(ByVal ConsignmentTypes As DataSet) As Boolean Try MyBase.SQL = "UpdateConsignmentTypes" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignmentTypeID", SqlDbType.VarChar, 10, ConsignmentTypes.Tables("ConsignmentTypes").Rows(0).Item("ConsignmentTypeID")) MyBase.AddParameter("@ConsignmentTypeName", SqlDbType.VarChar, 50, ConsignmentTypes.Tables("ConsignmentTypes").Rows(0).Item("ConsignmentTypeName")) MyBase.AddParameter("@Description", SqlDbType.VarChar, 100, ConsignmentTypes.Tables("ConsignmentTypes").Rows(0).Item("Description"))

UpdateConsignmentTypes = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End FunctionEnd Class

Page 82 of 227

Page 83: Nilambar-Shipping Management Report

DAConsignor.vb

Public Class DAConsignor Inherits ShippingDataAccess.DAShippingBaseClass

Public Sub New() MyBase.New() End Sub Public Shadows Sub Dispose() MyBase.Dispose() End Sub

Public Function GetConsignors() As DataSet Try GetConsignors = New DataSet MyBase.SQL = "SelectConsignors" MyBase.FillDataSet(GetConsignors, "Consignor")

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function GetConsignor(ByVal ConsignorID As String) As DataSet Try GetConsignor = New DataSet MyBase.SQL = "SelectConsignor" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignorID", SqlDbType.VarChar, 10, ConsignorID) MyBase.FillDataSet(GetConsignor, "Consignor") Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function AddConsignor(ByVal Consignor As DataSet) As Boolean Try MyBase.SQL = "InsertConsignor" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignorID", SqlDbType.VarChar, 10, Consignor.Tables("Consignor").Rows(0).Item("ConsignorID")) MyBase.AddParameter("@ConsignorNAME", SqlDbType.VarChar, 50, Consignor.Tables("Consignor").Rows(0).Item("ConsignorNAME")) MyBase.AddParameter("@CompanyName", SqlDbType.VarChar, 50, Consignor.Tables("Consignor").Rows(0).Item("CompanyName")) MyBase.AddParameter("@Address", SqlDbType.VarChar, 100, Consignor.Tables("Consignor").Rows(0).Item("Address")) MyBase.AddParameter("@EmailID", SqlDbType.VarChar, 50, Consignor.Tables("Consignor").Rows(0).Item("EmailID")) MyBase.AddParameter("@Fax", SqlDbType.VarChar, 20, Consignor.Tables("Consignor").Rows(0).Item("Fax")) MyBase.AddParameter("@Notes", SqlDbType.VarChar, 50, Consignor.Tables("Consignor").Rows(0).Item("Notes"))

Page 83 of 227

Page 84: Nilambar-Shipping Management Report

AddConsignor = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function DeleteConsignor(ByVal ConsignorID As String) As Boolean

Try MyBase.SQL = "DeleteConsignor" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignorID", SqlDbType.Char, 10, ConsignorID) DeleteConsignor = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try

End Function Public Function UpdateConsignor(ByVal Consignor As DataSet) As Boolean Try MyBase.SQL = "UpdateConsignor" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignorID", SqlDbType.VarChar, 10, Consignor.Tables("Consignor").Rows(0).Item("ConsignorID")) MyBase.AddParameter("@ConsignorNAME", SqlDbType.VarChar, 50, Consignor.Tables("Consignor").Rows(0).Item("ConsignorNAME")) MyBase.AddParameter("@CompanyName", SqlDbType.VarChar, 50, Consignor.Tables("Consignor").Rows(0).Item("CompanyName")) MyBase.AddParameter("@Address", SqlDbType.VarChar, 100, Consignor.Tables("Consignor").Rows(0).Item("Address")) MyBase.AddParameter("@EmailID", SqlDbType.VarChar, 50, Consignor.Tables("Consignor").Rows(0).Item("EmailID")) MyBase.AddParameter("@Fax", SqlDbType.VarChar, 20, Consignor.Tables("Consignor").Rows(0).Item("Fax")) MyBase.AddParameter("@Notes", SqlDbType.VarChar, 50, Consignor.Tables("Consignor").Rows(0).Item("Notes"))

UpdateConsignor = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End FunctionEnd Class

DAPwdInfo.vb

Public Class DAPwdInfo Inherits ShippingDataAccess.DAShippingBaseClass Public Sub New() MyBase.New() End Sub

Page 84 of 227

Page 85: Nilambar-Shipping Management Report

Public Shadows Sub Dispose() MyBase.Dispose() End Sub

Public Function GetPwdInfo() As DataSet Try GetPwdInfo = New DataSet MyBase.SQL = "SelectPwdInfo" MyBase.FillDataSet(GetPwdInfo, "PwdInfo")

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function GetPwdInfo(ByVal EmpID As String) As DataSet Try GetPwdInfo = New DataSet MyBase.SQL = "SelectPwdInfo" MyBase.InitializeCommand() MyBase.AddParameter("@EmpID", SqlDbType.Char, 16, EmpID) MyBase.FillDataSet(GetPwdInfo, "PwdInfo") Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function AddPwdInfo(ByVal PwdInfo As DataSet) As Boolean Try MyBase.SQL = "InsertPwdInfo" MyBase.InitializeCommand() MyBase.AddParameter("@EmpID", SqlDbType.Char, 16, PwdInfo.Tables("PwdInfo").Rows(0).Item("EmpID")) MyBase.AddParameter("@UserName", SqlDbType.Decimal, 10, PwdInfo.Tables("PwdInfo").Rows(0).Item("UserName")) MyBase.AddParameter("@Password", SqlDbType.Decimal, 10, PwdInfo.Tables("PwdInfo").Rows(0).Item("Password"))

AddPwdInfo = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function DeletePwdInfo(ByVal EmpID As String) As Boolean

Try MyBase.SQL = "DeletePwdInfo" MyBase.InitializeCommand() MyBase.AddParameter("@EmpID", SqlDbType.Char, 16, EmpID) DeletePwdInfo = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try

End Function Public Function UpdatePwdInfo(ByVal PwdInfo As DataSet) As Boolean

Page 85 of 227

Page 86: Nilambar-Shipping Management Report

Try MyBase.SQL = "UpdatePwdInfo" MyBase.InitializeCommand() MyBase.AddParameter("@EmpID", SqlDbType.Char, 16, PwdInfo.Tables("PwdInfo").Rows(0).Item("EmpID")) MyBase.AddParameter("@UserName", SqlDbType.Decimal, 10, PwdInfo.Tables("PwdInfo").Rows(0).Item("UserName")) MyBase.AddParameter("@Password", SqlDbType.Decimal, 10, PwdInfo.Tables("PwdInfo").Rows(0).Item("Password"))

UpdatePwdInfo = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End FunctionEnd Class

DARouteDetails.vb

Public Class DARouteDetails Inherits ShippingDataAccess.DAShippingBaseClass

Public Sub New() MyBase.New() End Sub Public Shadows Sub Dispose() MyBase.Dispose() End Sub

Public Function GetRouteDetails() As DataSet Try GetRouteDetails = New DataSet MyBase.SQL = "SelectRouteDetails" MyBase.FillDataSet(GetRouteDetails, "RouteDetails")

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function GetRouteDetails(ByVal RouteID As String) As DataSet Try GetRouteDetails = New DataSet MyBase.SQL = "SelectRouteDetails" MyBase.InitializeCommand() MyBase.AddParameter("@RouteID", SqlDbType.VarChar, 10, RouteID) MyBase.FillDataSet(GetRouteDetails, "RouteDetails") Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function

Page 86 of 227

Page 87: Nilambar-Shipping Management Report

Public Function AddRouteDetails(ByVal RouteDetails As DataSet) As Boolean Try MyBase.SQL = "InsertRouteDetails" MyBase.InitializeCommand() MyBase.AddParameter("@RouteID", SqlDbType.VarChar, 10, RouteDetails.Tables("RouteDetails").Rows(0).Item("RouteID")) MyBase.AddParameter("@StartingPointID", SqlDbType.VarChar, 10, RouteDetails.Tables("RouteDetails").Rows(0).Item("StartingPointID")) MyBase.AddParameter("@EndingPointID", SqlDbType.VarChar, 10, RouteDetails.Tables("RouteDetails").Rows(0).Item("EndingPointID")) MyBase.AddParameter("@StopNo", SqlDbType.Int, 4, RouteDetails.Tables("RouteDetails").Rows(0).Item("StopNo")) MyBase.AddParameter("@Distance", SqlDbType.Float, 18, RouteDetails.Tables("RouteDetails").Rows(0).Item("Distance")) MyBase.AddParameter("@VehicleNo", SqlDbType.VarChar, 10, RouteDetails.Tables("RouteDetails").Rows(0).Item("VehicleNo")) MyBase.AddParameter("@ArrivalTime", SqlDbType.DateTime, 8, RouteDetails.Tables("RouteDetails").Rows(0).Item("ArrivalTime")) MyBase.AddParameter("@DepartureTime", SqlDbType.DateTime, 8, RouteDetails.Tables("RouteDetails").Rows(0).Item("DepartureTime")) AddRouteDetails = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function DeleteRouteDetails(ByVal RouteID As String) As Boolean

Try MyBase.SQL = "DeleteRouteDetails" MyBase.InitializeCommand() MyBase.AddParameter("@RouteID", SqlDbType.VarChar, 10, RouteID) DeleteRouteDetails = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try

End Function Public Function UpdateRouteDetails(ByVal RouteDetails As DataSet) As Boolean Try MyBase.SQL = "UpdateRouteDetails" MyBase.InitializeCommand() MyBase.AddParameter("@RouteID", SqlDbType.VarChar, 10, RouteDetails.Tables("RouteDetails").Rows(0).Item("RouteID")) MyBase.AddParameter("@StartingPointID", SqlDbType.VarChar, 10, RouteDetails.Tables("RouteDetails").Rows(0).Item("StartingPointID")) MyBase.AddParameter("@EndingPointID", SqlDbType.VarChar, 10, RouteDetails.Tables("RouteDetails").Rows(0).Item("EndingPointID")) MyBase.AddParameter("@StopNo", SqlDbType.Int, 4, RouteDetails.Tables("RouteDetails").Rows(0).Item("StopNo")) MyBase.AddParameter("@Distance", SqlDbType.Float, 18, RouteDetails.Tables("RouteDetails").Rows(0).Item("Distance"))

Page 87 of 227

Page 88: Nilambar-Shipping Management Report

MyBase.AddParameter("@VehicleNo", SqlDbType.VarChar, 10, RouteDetails.Tables("RouteDetails").Rows(0).Item("VehicleNo")) MyBase.AddParameter("@ArrivalTime", SqlDbType.DateTime, 8, RouteDetails.Tables("RouteDetails").Rows(0).Item("ArrivalTime")) MyBase.AddParameter("@DepartureTime", SqlDbType.DateTime, 8, RouteDetails.Tables("RouteDetails").Rows(0).Item("DepartureTime"))

UpdateRouteDetails = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End FunctionEnd Class

DARouteMaster.vb

Public Class DARouteMaster Inherits ShippingDataAccess.DAShippingBaseClass

Public Sub New() MyBase.New() End Sub Public Shadows Sub Dispose() MyBase.Dispose() End Sub

Public Function GetRouteMaster() As DataSet Try GetRouteMaster = New DataSet MyBase.SQL = "SelectRouteMaster" MyBase.FillDataSet(GetRouteMaster, "RouteMaster")

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function GetRouteMaster(ByVal RouteID As String) As DataSet Try GetRouteMaster = New DataSet MyBase.SQL = "SelectRouteMaster" MyBase.InitializeCommand() MyBase.AddParameter("@RouteID", SqlDbType.VarChar, 10, RouteID) MyBase.FillDataSet(GetRouteMaster, "RouteMaster") Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function AddRouteMaster(ByVal RouteMaster As DataSet) As Boolean Try

Page 88 of 227

Page 89: Nilambar-Shipping Management Report

MyBase.SQL = "InsertRouteMaster" MyBase.InitializeCommand() MyBase.AddParameter("@RouteID", SqlDbType.VarChar, 10, RouteMaster.Tables("RouteMaster").Rows(0).Item("RouteID")) MyBase.AddParameter("@RouteNAME", SqlDbType.VarChar, 50, RouteMaster.Tables("RouteMaster").Rows(0).Item("RouteNAME")) MyBase.AddParameter("@StartingPointID", SqlDbType.VarChar, 10, RouteMaster.Tables("RouteMaster").Rows(0).Item("StartingPointID")) MyBase.AddParameter("@EndingPointID", SqlDbType.VarChar, 10, RouteMaster.Tables("RouteMaster").Rows(0).Item("EndingPointID")) MyBase.AddParameter("@TotalDistance", SqlDbType.Float, 18, RouteMaster.Tables("RouteMaster").Rows(0).Item("TotalDistance")) AddRouteMaster = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function DeleteRouteMaster(ByVal RouteID As String) As Boolean

Try MyBase.SQL = "DeleteRouteMaster" MyBase.InitializeCommand() MyBase.AddParameter("@RouteID", SqlDbType.VarChar, 10, RouteID) DeleteRouteMaster = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try

End Function Public Function UpdateRouteMaster(ByVal RouteMaster As DataSet) As Boolean Try MyBase.SQL = "UpdateRouteMaster" MyBase.InitializeCommand() MyBase.AddParameter("@RouteID", SqlDbType.VarChar, 10, RouteMaster.Tables("RouteMaster").Rows(0).Item("RouteID")) MyBase.AddParameter("@RouteNAME", SqlDbType.VarChar, 50, RouteMaster.Tables("RouteMaster").Rows(0).Item("RouteNAME")) MyBase.AddParameter("@StartingPointID", SqlDbType.VarChar, 10, RouteMaster.Tables("RouteMaster").Rows(0).Item("StartingPointID")) MyBase.AddParameter("@EndingPointID", SqlDbType.VarChar, 10, RouteMaster.Tables("RouteMaster").Rows(0).Item("EndingPointID")) MyBase.AddParameter("@TotalDistance", SqlDbType.Float, 18, RouteMaster.Tables("RouteMaster").Rows(0).Item("TotalDistance"))

UpdateRouteMaster = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End FunctionEnd Class

DAStation.vb

Page 89 of 227

Page 90: Nilambar-Shipping Management Report

Public Class DAStation Inherits ShippingDataAccess.DAShippingBaseClass

Public Sub New() MyBase.New() End Sub Public Shadows Sub Dispose() MyBase.Dispose() End Sub

Public Function GetStation() As DataSet Try GetStation = New DataSet MyBase.SQL = "SelectStation" MyBase.FillDataSet(GetStation, "Station")

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function GetStation(ByVal StationID As String) As DataSet Try GetStation = New DataSet MyBase.SQL = "SelectStation" MyBase.InitializeCommand() MyBase.AddParameter("@StationID", SqlDbType.Char, 10, StationID) MyBase.FillDataSet(GetStation, "Station") Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function AddStation(ByVal Station As DataSet) As Boolean Try MyBase.SQL = "InsertStation" MyBase.InitializeCommand() MyBase.AddParameter("@StationID", SqlDbType.VarChar, 10, Station.Tables("Station").Rows(0).Item("StationID")) MyBase.AddParameter("@StationName", SqlDbType.VarChar, 50, Station.Tables("Station").Rows(0).Item("StationName")) MyBase.AddParameter("@Description", SqlDbType.VarChar, 100, Station.Tables("Station").Rows(0).Item("Description"))

AddStation = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function DeleteStation(ByVal StationID As String) As Boolean

Try MyBase.SQL = "DeleteStation"

Page 90 of 227

Page 91: Nilambar-Shipping Management Report

MyBase.InitializeCommand() MyBase.AddParameter("@StationID", SqlDbType.VarChar, 10, StationID) DeleteStation = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try

End Function Public Function UpdateStation(ByVal Station As DataSet) As Boolean Try MyBase.SQL = "UpdateStation" MyBase.InitializeCommand() MyBase.AddParameter("@StationID", SqlDbType.VarChar, 10, Station.Tables("Station").Rows(0).Item("StationID")) MyBase.AddParameter("@StationName", SqlDbType.VarChar, 50, Station.Tables("Station").Rows(0).Item("StationName")) MyBase.AddParameter("@Description", SqlDbType.VarChar, 100, Station.Tables("Station").Rows(0).Item("Description"))

UpdateStation = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End FunctionEnd Class

DATariff.vb

Public Class DATariffs Inherits ShippingDataAccess.DAShippingBaseClass

Public Sub New() MyBase.New() End Sub Public Shadows Sub Dispose() MyBase.Dispose() End Sub

Public Function GetTariffs() As DataSet Try GetTariffs = New DataSet MyBase.SQL = "SelectTariffs" MyBase.FillDataSet(GetTariffs, "Tariffs")

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function GetTariffs(ByVal ConsignmentTypeID As String) As DataSet Try

Page 91 of 227

Page 92: Nilambar-Shipping Management Report

GetTariffs = New DataSet MyBase.SQL = "SelectTariffs" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignmentTypeID", SqlDbType.Char, 10, ConsignmentTypeID) MyBase.FillDataSet(GetTariffs, "Tariffs") Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function AddTariffs(ByVal Tariffs As DataSet) As Boolean Try MyBase.SQL = "InsertTariffs" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignmentTypeID", SqlDbType.VarChar, 10, Tariffs.Tables("Tariffs").Rows(0).Item("ConsignmentTypeID")) MyBase.AddParameter("@Class", SqlDbType.VarChar, 50, Tariffs.Tables("Tariffs").Rows(0).Item("Class")) MyBase.AddParameter("@StartDistance", SqlDbType.Float, 18, Tariffs.Tables("Tariffs").Rows(0).Item("StartDistance")) MyBase.AddParameter("@EndDistance", SqlDbType.Float, 18, Tariffs.Tables("Tariffs").Rows(0).Item("EndDistance")) MyBase.AddParameter("@Rate", SqlDbType.Float, 18, Tariffs.Tables("Tariffs").Rows(0).Item("Rate"))

AddTariffs = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function DeleteTariffs(ByVal ConsignmentTypeID As String) As Boolean

Try MyBase.SQL = "DeleteTariffs" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignmentTypeID", SqlDbType.VarChar, 10, ConsignmentTypeID) DeleteTariffs = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try

End Function Public Function UpdateTariffs(ByVal Tariffs As DataSet) As Boolean Try MyBase.SQL = "UpdateTariffs" MyBase.InitializeCommand() MyBase.AddParameter("@ConsignmentTypeID", SqlDbType.VarChar, 10, Tariffs.Tables("Tariffs").Rows(0).Item("ConsignmentTypeID")) MyBase.AddParameter("@Class", SqlDbType.VarChar, 50, Tariffs.Tables("Tariffs").Rows(0).Item("Class")) MyBase.AddParameter("@StartDistance", SqlDbType.Float, 18, Tariffs.Tables("Tariffs").Rows(0).Item("StartDistance"))

Page 92 of 227

Page 93: Nilambar-Shipping Management Report

MyBase.AddParameter("@EndDistance", SqlDbType.Float, 18, Tariffs.Tables("Tariffs").Rows(0).Item("EndDistance")) MyBase.AddParameter("@Rate", SqlDbType.Float, 18, Tariffs.Tables("Tariffs").Rows(0).Item("Rate"))

UpdateTariffs = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function

End Class

DAVehicles.vb

Public Class DAVehicles Inherits ShippingDataAccess.DAShippingBaseClass

Public Sub New() MyBase.New() End Sub Public Shadows Sub Dispose() MyBase.Dispose() End Sub

Public Overloads Function GetVehicles() As DataSet Try GetVehicles = New DataSet MyBase.SQL = "SelectVehicles" MyBase.FillDataSet(GetVehicles, "Vehicles")

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Overloads Function GetVehicles(ByVal VehicleNo As String) As DataSet Try GetVehicles = New DataSet MyBase.SQL = "SelectVehicles" MyBase.InitializeCommand() MyBase.AddParameter("@VehicleNo", SqlDbType.Char, 10, VehicleNo) MyBase.FillDataSet(GetVehicles, "Vehicles") Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function AddVehicles(ByVal Vehicles As DataSet) As Boolean Try MyBase.SQL = "InsertVehicles"

Page 93 of 227

Page 94: Nilambar-Shipping Management Report

MyBase.InitializeCommand() MyBase.AddParameter("@VehicleNo", SqlDbType.VarChar, 10, Vehicles.Tables("Vehicles").Rows(0).Item("VehicleNo")) MyBase.AddParameter("@VehicleName", SqlDbType.VarChar, 50, Vehicles.Tables("Vehicles").Rows(0).Item("VehicleName")) MyBase.AddParameter("@RouteID", SqlDbType.VarChar, 10, Vehicles.Tables("Vehicles").Rows(0).Item("RouteID"))

AddVehicles = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Function Public Function DeleteVehicles(ByVal VehicleNo As String) As Boolean

Try MyBase.SQL = "DeleteVehicles" MyBase.InitializeCommand() MyBase.AddParameter("@VehicleNo", SqlDbType.VarChar, 10, VehicleNo) DeleteVehicles = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try

End Function Public Function UpdateVehicles(ByVal Vehicles As DataSet) As Boolean Try MyBase.SQL = "UpdateVehicles" MyBase.InitializeCommand() MyBase.AddParameter("@VehicleNo", SqlDbType.VarChar, 10, Vehicles.Tables("Vehicles").Rows(0).Item("VehicleNo")) MyBase.AddParameter("@VehicleName", SqlDbType.VarChar, 50, Vehicles.Tables("Vehicles").Rows(0).Item("VehicleName")) MyBase.AddParameter("@RouteID", SqlDbType.VarChar, 10, Vehicles.Tables("Vehicles").Rows(0).Item("RouteID"))

UpdateVehicles = ExecuteStoredProcedure() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function

End Class

Middle Level Architecture

DAConsignmentDetails.vb

Public Class BLConsignmentDetails Implements IDisposable

Page 94 of 227

Page 95: Nilambar-Shipping Management Report

Private DAConsignmentDetails As ShippingDataAccess.DAConsignmentDetails Public Sub New() DAConsignmentDetails = New ShippingDataAccess.DAConsignmentDetails

End Sub Public Sub Dispose() Implements System.IDisposable.Dispose DAConsignmentDetails.Dispose() DAConsignmentDetails = Nothing End Sub Public Function GetConsignmentDetails() As DataSet Try GetConsignmentDetails = DAConsignmentDetails.GetConsignmentDetails Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function GetConsignmentDetails(ByVal ConsignmentTypeID As String) As DataSet Try GetConsignmentDetails = DAConsignmentDetails.GetConsignmentDetails(ConsignmentTypeID) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function AddConsignmentDetails(ByVal ConsignmentDetails As DataSet) As Boolean Try If ConsignmentDetails.Tables("ConsignmentDetails").Rows(0).Item("ConsignmentTypeID").ToString.Trim.Length = 0 Then Throw New System.Exception("You should enter a Account No!") End If Return DAConsignmentDetails.AddConsignmentDetails(ConsignmentDetails) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function DeleteConsignmentDetails(ByVal ConsignmentTypeID As String) As Boolean Try Return DAConsignmentDetails.DeleteConsignmentDetails(ConsignmentTypeID) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function UpdateConsignmentDetails(ByVal ConsignmentDetails As DataSet) As Boolean Try Return DAConsignmentDetails.UpdateConsignmentDetails(ConsignmentDetails)

Page 95 of 227

Page 96: Nilambar-Shipping Management Report

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End FunctionEnd Class

BLConsignmentMaster.vb

Public Class BLConsignmentMaster Implements IDisposable

Private DAConsignmentMaster As ShippingDataAccess.DAConsignmentMaster Public Sub New() DAConsignmentMaster = New ShippingDataAccess.DAConsignmentMaster

End Sub Public Sub Dispose() Implements System.IDisposable.Dispose DAConsignmentMaster.Dispose() DAConsignmentMaster = Nothing End Sub Public Function GetConsignmentMaster() As DataSet Try GetConsignmentMaster = DAConsignmentMaster.GetConsignmentMaster Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function GetConsignmentMaster(ByVal ConsignmentTypeID As String) As DataSet Try GetConsignmentMaster = DAConsignmentMaster.GetConsignmentMaster(ConsignmentTypeID) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function AddConsignmentMaster(ByVal ConsignmentMaster As DataSet) As Boolean Try If ConsignmentMaster.Tables("ConsignmentMaster").Rows(0).Item("ConsignmentTypeID").ToString.Trim.Length = 0 Then Throw New System.Exception("You should enter a Account No!") End If Return DAConsignmentMaster.AddConsignmentMaster(ConsignmentMaster) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function

Page 96 of 227

Page 97: Nilambar-Shipping Management Report

Public Function DeleteConsignmentMaster(ByVal ConsignmentTypeID As String) As Boolean Try Return DAConsignmentMaster.DeleteConsignmentMaster(ConsignmentTypeID) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function UpdateConsignmentMaster(ByVal ConsignmentMaster As DataSet) As Boolean Try Return DAConsignmentMaster.UpdateConsignmentMaster(ConsignmentMaster) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End FunctionEnd Class

BLConsignmentTypes.vb

Public Class BLConsignmentTypes Implements IDisposable

Private DAConsignmentTypes As ShippingDataAccess.DAConsignmentTypes Public Sub New() DAConsignmentTypes = New ShippingDataAccess.DAConsignmentTypes

End Sub Public Sub Dispose() Implements System.IDisposable.Dispose DAConsignmentTypes.Dispose() DAConsignmentTypes = Nothing End Sub Public Function GetConsignmentTypes() As DataSet Try GetConsignmentTypes = DAConsignmentTypes.GetConsignmentTypes Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function GetConsignmentTypes(ByVal ConsignmentTypeID As String) As DataSet Try GetConsignmentTypes = DAConsignmentTypes.GetConsignmentTypes(ConsignmentTypeID) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function AddConsignmentTypes(ByVal ConsignmentTypes As DataSet) As Boolean

Page 97 of 227

Page 98: Nilambar-Shipping Management Report

Try If ConsignmentTypes.Tables("ConsignmentTypes").Rows(0).Item("ConsignmentTypeID").ToString.Trim.Length = 0 Then Throw New System.Exception("You should enter a Account No!") End If Return DAConsignmentTypes.AddConsignmentTypes(ConsignmentTypes) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function DeleteConsignmentTypes(ByVal ConsignmentTypeID As String) As Boolean Try Return DAConsignmentTypes.DeleteConsignmentTypes(ConsignmentTypeID) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function UpdateConsignmentTypes(ByVal ConsignmentTypes As DataSet) As Boolean Try Return DAConsignmentTypes.UpdateConsignmentTypes(ConsignmentTypes) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End FunctionEnd Class

BLConsignor.vb

Public Class BLConsignor Implements IDisposable

Private DAConsignor As ShippingDataAccess.DAConsignor Public Sub New() DAConsignor = New ShippingDataAccess.DAConsignor

End Sub Public Sub Dispose() Implements System.IDisposable.Dispose DAConsignor.Dispose() DAConsignor = Nothing End Sub Public Function GetConsignors() As DataSet Try GetConsignors = DAConsignor.GetConsignors Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

Page 98 of 227

Page 99: Nilambar-Shipping Management Report

End Try End Function Public Function GetConsignor(ByVal ConsignorID As String) As DataSet Try GetConsignor = DAConsignor.GetConsignor(ConsignorID) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function AddConsignor(ByVal Consignor As DataSet) As Boolean Try If Consignor.Tables("Consignor").Rows(0).Item("ConsignorID").ToString.Trim.Length = 0 Then Throw New System.Exception("You should enter a Account No!") End If Return DAConsignor.AddConsignor(Consignor) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function DeleteConsignor(ByVal ConsignorID As String) As Boolean Try Return DAConsignor.DeleteConsignor(ConsignorID) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function UpdateConsignor(ByVal Consignor As DataSet) As Boolean Try Return DAConsignor.UpdateConsignor(Consignor) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End FunctionEnd Class

BLRouteDetails.vb

Public Class BLRouteDetails Implements IDisposable

Private DARouteDetails As ShippingDataAccess.DARouteDetails Public Sub New() DARouteDetails = New ShippingDataAccess.DARouteDetails

End Sub Public Sub Dispose() Implements System.IDisposable.Dispose DARouteDetails.Dispose() DARouteDetails = Nothing

Page 99 of 227

Page 100: Nilambar-Shipping Management Report

End Sub Public Function GetRouteDetails() As DataSet Try GetRouteDetails = DARouteDetails.GetRouteDetails Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function GetRouteDetails(ByVal RouteID As String) As DataSet Try GetRouteDetails = DARouteDetails.GetRouteDetails(RouteID) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function AddRouteDetails(ByVal RouteDetails As DataSet) As Boolean Try If RouteDetails.Tables("RouteDetails").Rows(0).Item("RouteID").ToString.Trim.Length = 0 Then Throw New System.Exception("You should enter a Account No!") End If Return DARouteDetails.AddRouteDetails(RouteDetails) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function DeleteRouteDetails(ByVal RouteID As String) As Boolean Try Return DARouteDetails.DeleteRouteDetails(RouteID) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function UpdateRouteDetails(ByVal RouteDetails As DataSet) As Boolean Try Return DARouteDetails.UpdateRouteDetails(RouteDetails) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End FunctionEnd Class

BLRouteMaster.vb

Public Class BLRouteMaster Implements IDisposable

Private DARouteMaster As ShippingDataAccess.DARouteMaster

Page 100 of 227

Page 101: Nilambar-Shipping Management Report

Public Sub New() DARouteMaster = New ShippingDataAccess.DARouteMaster

End Sub Public Sub Dispose() Implements System.IDisposable.Dispose DARouteMaster.Dispose() DARouteMaster = Nothing End Sub Public Function GetRouteMaster() As DataSet Try GetRouteMaster = DARouteMaster.GetRouteMaster Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function GetRouteMaster(ByVal RouteID As String) As DataSet Try GetRouteMaster = DARouteMaster.GetRouteMaster(RouteID) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function AddRouteMaster(ByVal RouteMaster As DataSet) As Boolean Try If RouteMaster.Tables("RouteMaster").Rows(0).Item("RouteID").ToString.Trim.Length = 0 Then Throw New System.Exception("You should enter a Account No!") End If Return DARouteMaster.AddRouteMaster(RouteMaster) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function DeleteRouteMaster(ByVal RouteID As String) As Boolean Try Return DARouteMaster.DeleteRouteMaster(RouteID) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function UpdateRouteMaster(ByVal RouteMaster As DataSet) As Boolean Try Return DARouteMaster.UpdateRouteMaster(RouteMaster) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End FunctionEnd Class

Page 101 of 227

Page 102: Nilambar-Shipping Management Report

BLStation.vb

Public Class BLStation Implements IDisposable

Private DAStation As ShippingDataAccess.DAStation Public Sub New() DAStation = New ShippingDataAccess.DAStation

End Sub Public Sub Dispose() Implements System.IDisposable.Dispose DAStation.Dispose() DAStation = Nothing End Sub Public Function GetStation() As DataSet Try GetStation = DAStation.GetStation Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function GetStation(ByVal StationID As String) As DataSet Try GetStation = DAStation.GetStation(StationID) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function AddStation(ByVal Station As DataSet) As Boolean Try If Station.Tables("Station").Rows(0).Item("StationID").ToString.Trim.Length = 0 Then Throw New System.Exception("You should enter a Account No!") End If Return DAStation.AddStation(Station) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function DeleteStation(ByVal StationID As String) As Boolean Try Return DAStation.DeleteStation(StationID) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function UpdateStation(ByVal Station As DataSet) As Boolean Try Return DAStation.UpdateStation(Station) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try

Page 102 of 227

Page 103: Nilambar-Shipping Management Report

End FunctionEnd Class

BLTariffs.vb

Public Class BLTariffs Implements IDisposable

Private DATariffs As ShippingDataAccess.DATariffs Public Sub New() DATariffs = New ShippingDataAccess.DATariffs

End Sub Public Sub Dispose() Implements System.IDisposable.Dispose DATariffs.Dispose() DATariffs = Nothing End Sub Public Function GetTariffs() As DataSet Try GetTariffs = DATariffs.GetTariffs Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function GetTariffs(ByVal ConsignmentTypeID As String) As DataSet Try GetTariffs = DATariffs.GetTariffs(ConsignmentTypeID) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function AddTariffs(ByVal Tariffs As DataSet) As Boolean Try If Tariffs.Tables("Tariffs").Rows(0).Item("ConsignmentTypeID").ToString.Trim.Length = 0 Then Throw New System.Exception("You should enter a Account No!") End If Return DATariffs.AddTariffs(Tariffs) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function DeleteTariffs(ByVal ConsignmentTypeID As String) As Boolean Try Return DATariffs.DeleteTariffs(ConsignmentTypeID) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try

Page 103 of 227

Page 104: Nilambar-Shipping Management Report

End Function Public Function UpdateTariffs(ByVal Tariffs As DataSet) As Boolean Try Return DATariffs.UpdateTariffs(Tariffs) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End FunctionEnd Class

BLVehicles.vb

Public Class BLVehicles Implements IDisposable

Private DAVehicles As ShippingDataAccess.DAVehicles Public Sub New() DAVehicles = New ShippingDataAccess.DAVehicles

End Sub Public Sub Dispose() Implements System.IDisposable.Dispose DAVehicles.Dispose() DAVehicles = Nothing End Sub Public Function GetVehicles() As DataSet Try GetVehicles = DAVehicles.GetVehicles Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function GetVehicles(ByVal VehicleNo As String) As DataSet Try GetVehicles = DAVehicles.GetVehicles(VehicleNo) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function AddVehicles(ByVal Vehicles As DataSet) As Boolean Try If Vehicles.Tables("Vehicles").Rows(0).Item("VehicleNo").ToString.Trim.Length = 0 Then Throw New System.Exception("You should enter a Account No!") End If Return DAVehicles.AddVehicles(Vehicles) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function DeleteVehicles(ByVal VehicleNo As String) As Boolean

Page 104 of 227

Page 105: Nilambar-Shipping Management Report

Try Return DAVehicles.DeleteVehicles(VehicleNo) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function UpdateVehicles(ByVal Vehicles As DataSet) As Boolean Try Return DAVehicles.UpdateVehicles(Vehicles) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End FunctionEnd Class

BLPwdInfo.vb

Public Class BLPwdInfo Implements IDisposable Dim Password() As String Private DAPwdInfo As ShippingDataAccess.DAPwdInfo Public Sub New() DAPwdInfo = New ShippingDataAccess.DAPwdInfo

End Sub Public Sub Dispose() Implements System.IDisposable.Dispose DAPwdInfo.Dispose() DAPwdInfo = Nothing End Sub Public Function GetPwdInfos() As DataSet Try GetPwdInfos = DAPwdInfo.GetPwdInfo Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function GetPwdInfo(ByVal Uid As String) As DataSet Try GetPwdInfo = DAPwdInfo.GetPwdInfo(Uid) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function AddPwdInfo(ByVal PwdInfo As DataSet) As Boolean Try If PwdInfo.Tables("PwdInfo").Rows(0).Item("Uid").ToString.Trim.Length = 0 Then Throw New System.Exception("You should enter a Uid!") End If Return DAPwdInfo.AddPwdInfo(PwdInfo) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

Page 105 of 227

Page 106: Nilambar-Shipping Management Report

End Try End Function Public Function DeletePwdInfo(ByVal Uid As String) As Boolean Try Return DAPwdInfo.DeletePwdInfo(Uid) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function UpdatePwdInfo(ByVal PwdInfo As DataSet) As Boolean Try Return DAPwdInfo.UpdatePwdInfo(PwdInfo) Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function Public Function EncryptPassword(ByVal STR As String) As String Dim i As Integer

ReDim Preserve Password(Len(STR)) Try For i = 1 To Len(STR) Password(i) = Chr((Asc(Mid(STR, i, 1)) + 15) Xor 34) Next Dim l As Integer l = Len(STR) STR = "" For i = 1 To l STR = STR + Password(i) Next EncryptPassword = STR Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try End Function

Public Function DecryptPassword(ByVal STR As String) As String Dim i As Integer ReDim Preserve Password(Len(STR)) Try For i = 1 To Len(STR) Password(i) = Chr((Asc(Mid(STR, i, 1)) Xor 34) - 15) Next Dim l As Integer l = Len(STR) STR = "" For i = 1 To l STR = STR + Password(i) Next DecryptPassword = STR Exit Function Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try

End Function

Page 106 of 227

Page 107: Nilambar-Shipping Management Report

End Class

Front End Architecture

MainModule.vb

Imports System.Data.SqlClientModule MainModule

Public SQLDA As OracleDataAdapter Public SQLConn As OracleConnection Public DS As DataSet Public DT As DataTable Public DR As DataRow Public SQL As String Public ConnString As String Public UserName As String

Sub Main() Application.Run(New frmMain) End Sub

End Module

frmLogin.vb

Public Class frmLogin Inherits System.Windows.Forms.Form Dim objPwdInfo As ShippingDataLogic.BLPwdInfo Dim dsPwdInfo As DataSet#Region " Windows Form Designer generated code "

Public Sub New() MyBase.New()

'This call is required by the Windows Form Designer. InitializeComponent()

'Add any initialization after the InitializeComponent() call

End Sub

'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then

Page 107 of 227

Page 108: Nilambar-Shipping Management Report

If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub

'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer

'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox Friend WithEvents Label10 As System.Windows.Forms.Label Friend WithEvents txtPassword As System.Windows.Forms.TextBox Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents Label11 As System.Windows.Forms.Label Friend WithEvents cmbUserName As System.Windows.Forms.ComboBox Friend WithEvents btnOk As System.Windows.Forms.Button Friend WithEvents btnExit As System.Windows.Forms.Button <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.GroupBox1 = New System.Windows.Forms.GroupBox Me.cmbUserName = New System.Windows.Forms.ComboBox Me.txtPassword = New System.Windows.Forms.TextBox Me.Label1 = New System.Windows.Forms.Label Me.Label10 = New System.Windows.Forms.Label Me.Label11 = New System.Windows.Forms.Label Me.btnOk = New System.Windows.Forms.Button Me.btnExit = New System.Windows.Forms.Button Me.GroupBox1.SuspendLayout() Me.SuspendLayout() ' 'GroupBox1 ' Me.GroupBox1.Controls.AddRange(New System.Windows.Forms.Control() {Me.cmbUserName, Me.txtPassword, Me.Label1, Me.Label10}) Me.GroupBox1.Location = New System.Drawing.Point(16, 56) Me.GroupBox1.Name = "GroupBox1" Me.GroupBox1.Size = New System.Drawing.Size(296, 72) Me.GroupBox1.TabIndex = 0 Me.GroupBox1.TabStop = False ' 'cmbUserName ' Me.cmbUserName.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.cmbUserName.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.cmbUserName.Items.AddRange(New Object() {"Administrator", "User"}) Me.cmbUserName.Location = New System.Drawing.Point(96, 16) Me.cmbUserName.Name = "cmbUserName"

Page 108 of 227

Page 109: Nilambar-Shipping Management Report

Me.cmbUserName.Size = New System.Drawing.Size(176, 21) Me.cmbUserName.TabIndex = 15 ' 'txtPassword ' Me.txtPassword.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtPassword.Location = New System.Drawing.Point(96, 40) Me.txtPassword.Name = "txtPassword" Me.txtPassword.PasswordChar = Microsoft.VisualBasic.ChrW(42) Me.txtPassword.Size = New System.Drawing.Size(176, 20) Me.txtPassword.TabIndex = 13 Me.txtPassword.Text = "" ' 'Label1 ' Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label1.Location = New System.Drawing.Point(16, 40) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(80, 24) Me.Label1.TabIndex = 14 Me.Label1.Text = "Password:" Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label10 ' Me.Label10.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label10.Location = New System.Drawing.Point(16, 16) Me.Label10.Name = "Label10" Me.Label10.Size = New System.Drawing.Size(80, 24) Me.Label10.TabIndex = 12 Me.Label10.Text = "User Name:" Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label11 ' Me.Label11.Font = New System.Drawing.Font("Microsoft Sans Serif", 16.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label11.Location = New System.Drawing.Point(32, 16) Me.Label11.Name = "Label11" Me.Label11.Size = New System.Drawing.Size(272, 24) Me.Label11.TabIndex = 35 Me.Label11.Text = "Please Login" Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'btnOk '

Page 109 of 227

Page 110: Nilambar-Shipping Management Report

Me.btnOk.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnOk.Location = New System.Drawing.Point(56, 136) Me.btnOk.Name = "btnOk" Me.btnOk.Size = New System.Drawing.Size(88, 24) Me.btnOk.TabIndex = 36 Me.btnOk.Text = "&Ok" ' 'btnExit ' Me.btnExit.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnExit.Location = New System.Drawing.Point(160, 136) Me.btnExit.Name = "btnExit" Me.btnExit.Size = New System.Drawing.Size(88, 24) Me.btnExit.TabIndex = 37 Me.btnExit.Text = "E&xit" ' 'frmLogin ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(328, 182) Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.btnExit, Me.btnOk, Me.Label11, Me.GroupBox1}) Me.MaximizeBox = False Me.Name = "frmLogin" Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen Me.Text = "frmLogin" Me.GroupBox1.ResumeLayout(False) Me.ResumeLayout(False)

End Sub

#End Region

Private Sub frmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load cmbUserName.SelectedIndex = 0 End Sub

Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click Dim MainForm As New frmMain Dim Pass As String objPwdInfo = New ShippingDataLogic.BLPwdInfo dsPwdInfo = objPwdInfo.GetPwdInfo(cmbUserName.Text.Trim)

Pass = objPwdInfo.DecryptPassword(dsPwdInfo.Tables("PwdInfo").Rows(0).Item("Pwd"))

If cmbUserName.Text.Trim = "Administrator" Then

If Pass = txtPassword.Text.Trim Then

Page 110 of 227

Page 111: Nilambar-Shipping Management Report

UserName = cmbUserName.Text.Trim Me.Hide() MainForm.Show() Else MsgBox("Wrong Password! Try Again.", MsgBoxStyle.Critical) txtPassword.Focus() End If Else If Pass = txtPassword.Text.Trim Then UserName = cmbUserName.Text.Trim Me.Hide() MainForm.Show() Else MsgBox("Wrong Password! Try Again.", MsgBoxStyle.Critical) txtPassword.Focus() End If End If

End Sub

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click Application.Exit()

End SubEnd Class

frmMain.vb

Public Class frmMain Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

Public Sub New() MyBase.New()

'This call is required by the Windows Form Designer. InitializeComponent()

'Add any initialization after the InitializeComponent() call

End Sub

'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then

Page 111 of 227

Page 112: Nilambar-Shipping Management Report

components.Dispose() End If End If MyBase.Dispose(disposing) End Sub

'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer

'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Friend WithEvents MainMenu As System.Windows.Forms.MainMenu Friend WithEvents mnuMaster As System.Windows.Forms.MenuItem Friend WithEvents mnuTrans As System.Windows.Forms.MenuItem Friend WithEvents MenuItem4 As System.Windows.Forms.MenuItem Friend WithEvents mnuReport As System.Windows.Forms.MenuItem Friend WithEvents mnuExit As System.Windows.Forms.MenuItem Friend WithEvents mnuConsignor As System.Windows.Forms.MenuItem Friend WithEvents mnuConsignorAdd As System.Windows.Forms.MenuItem Friend WithEvents mnuConsignorEdit As System.Windows.Forms.MenuItem Friend WithEvents mnuConsignmentType As System.Windows.Forms.MenuItem Friend WithEvents mnuConTypeAdd As System.Windows.Forms.MenuItem Friend WithEvents mnuConTypeEdit As System.Windows.Forms.MenuItem Friend WithEvents mnuRoute As System.Windows.Forms.MenuItem Friend WithEvents mnuRouteAdd As System.Windows.Forms.MenuItem Friend WithEvents mnuRouteEdit As System.Windows.Forms.MenuItem Friend WithEvents mnuTariff As System.Windows.Forms.MenuItem Friend WithEvents mnuTraiffAdd As System.Windows.Forms.MenuItem Friend WithEvents mnuTariffEdit As System.Windows.Forms.MenuItem Friend WithEvents mnuStation As System.Windows.Forms.MenuItem Friend WithEvents mnuStationAdd As System.Windows.Forms.MenuItem Friend WithEvents mnuStationEdit As System.Windows.Forms.MenuItem Friend WithEvents mnuConsignment As System.Windows.Forms.MenuItem Friend WithEvents mnuConAdd As System.Windows.Forms.MenuItem Friend WithEvents mnuConEdit As System.Windows.Forms.MenuItem Friend WithEvents MenuItem1 As System.Windows.Forms.MenuItem Friend WithEvents MenuItem2 As System.Windows.Forms.MenuItem Friend WithEvents mnuVehicles As System.Windows.Forms.MenuItem Friend WithEvents mnuVehicleAdd As System.Windows.Forms.MenuItem Friend WithEvents mnuVehicleEdit As System.Windows.Forms.MenuItem <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.MainMenu = New System.Windows.Forms.MainMenu Me.mnuMaster = New System.Windows.Forms.MenuItem Me.mnuConsignor = New System.Windows.Forms.MenuItem Me.mnuConsignorAdd = New System.Windows.Forms.MenuItem Me.mnuConsignorEdit = New System.Windows.Forms.MenuItem Me.mnuConsignmentType = New System.Windows.Forms.MenuItem Me.mnuConTypeAdd = New System.Windows.Forms.MenuItem Me.mnuConTypeEdit = New System.Windows.Forms.MenuItem Me.mnuRoute = New System.Windows.Forms.MenuItem Me.mnuRouteAdd = New System.Windows.Forms.MenuItem Me.mnuRouteEdit = New System.Windows.Forms.MenuItem Me.mnuTariff = New System.Windows.Forms.MenuItem

Page 112 of 227

Page 113: Nilambar-Shipping Management Report

Me.mnuTraiffAdd = New System.Windows.Forms.MenuItem Me.mnuTariffEdit = New System.Windows.Forms.MenuItem Me.mnuVehicles = New System.Windows.Forms.MenuItem Me.mnuVehicleAdd = New System.Windows.Forms.MenuItem Me.mnuVehicleEdit = New System.Windows.Forms.MenuItem Me.mnuStation = New System.Windows.Forms.MenuItem Me.mnuStationAdd = New System.Windows.Forms.MenuItem Me.mnuStationEdit = New System.Windows.Forms.MenuItem Me.MenuItem4 = New System.Windows.Forms.MenuItem Me.mnuExit = New System.Windows.Forms.MenuItem Me.mnuTrans = New System.Windows.Forms.MenuItem Me.mnuConsignment = New System.Windows.Forms.MenuItem Me.mnuConAdd = New System.Windows.Forms.MenuItem Me.mnuConEdit = New System.Windows.Forms.MenuItem Me.mnuReport = New System.Windows.Forms.MenuItem Me.MenuItem1 = New System.Windows.Forms.MenuItem Me.MenuItem2 = New System.Windows.Forms.MenuItem ' 'MainMenu ' Me.MainMenu.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuMaster, Me.mnuTrans, Me.mnuReport, Me.MenuItem1, Me.MenuItem2}) ' 'mnuMaster ' Me.mnuMaster.Index = 0 Me.mnuMaster.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuConsignor, Me.mnuConsignmentType, Me.mnuRoute, Me.mnuTariff, Me.mnuVehicles, Me.mnuStation, Me.MenuItem4, Me.mnuExit}) Me.mnuMaster.Text = "&Master" ' 'mnuConsignor ' Me.mnuConsignor.Index = 0 Me.mnuConsignor.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuConsignorAdd, Me.mnuConsignorEdit}) Me.mnuConsignor.Text = "&Consignor" ' 'mnuConsignorAdd ' Me.mnuConsignorAdd.Index = 0 Me.mnuConsignorAdd.Text = "&Add" ' 'mnuConsignorEdit ' Me.mnuConsignorEdit.Index = 1 Me.mnuConsignorEdit.Text = "&Edit" ' 'mnuConsignmentType ' Me.mnuConsignmentType.Index = 1 Me.mnuConsignmentType.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuConTypeAdd, Me.mnuConTypeEdit}) Me.mnuConsignmentType.Text = "Consi&gnment Type"

Page 113 of 227

Page 114: Nilambar-Shipping Management Report

' 'mnuConTypeAdd ' Me.mnuConTypeAdd.Index = 0 Me.mnuConTypeAdd.Text = "&Add" ' 'mnuConTypeEdit ' Me.mnuConTypeEdit.Index = 1 Me.mnuConTypeEdit.Text = "&Edit" ' 'mnuRoute ' Me.mnuRoute.Index = 2 Me.mnuRoute.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuRouteAdd, Me.mnuRouteEdit}) Me.mnuRoute.Text = "&Route" ' 'mnuRouteAdd ' Me.mnuRouteAdd.Index = 0 Me.mnuRouteAdd.Text = "&Add" ' 'mnuRouteEdit ' Me.mnuRouteEdit.Index = 1 Me.mnuRouteEdit.Text = "&Edit" ' 'mnuTariff ' Me.mnuTariff.Index = 3 Me.mnuTariff.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuTraiffAdd, Me.mnuTariffEdit}) Me.mnuTariff.Text = "&Tariff" ' 'mnuTraiffAdd ' Me.mnuTraiffAdd.Index = 0 Me.mnuTraiffAdd.Text = "&Add" ' 'mnuTariffEdit ' Me.mnuTariffEdit.Index = 1 Me.mnuTariffEdit.Text = "&Edit" ' 'mnuVehicles ' Me.mnuVehicles.Index = 4 Me.mnuVehicles.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuVehicleAdd, Me.mnuVehicleEdit}) Me.mnuVehicles.Text = "&Vehicle" ' 'mnuVehicleAdd ' Me.mnuVehicleAdd.Index = 0 Me.mnuVehicleAdd.Text = "&Add" '

Page 114 of 227

Page 115: Nilambar-Shipping Management Report

'mnuVehicleEdit ' Me.mnuVehicleEdit.Index = 1 Me.mnuVehicleEdit.Text = "&Edit" ' 'mnuStation ' Me.mnuStation.Index = 5 Me.mnuStation.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuStationAdd, Me.mnuStationEdit}) Me.mnuStation.Text = "&Station" ' 'mnuStationAdd ' Me.mnuStationAdd.Index = 0 Me.mnuStationAdd.Text = "&Add" ' 'mnuStationEdit ' Me.mnuStationEdit.Index = 1 Me.mnuStationEdit.Text = "&Edit" ' 'MenuItem4 ' Me.MenuItem4.Index = 6 Me.MenuItem4.Text = "-" ' 'mnuExit ' Me.mnuExit.Index = 7 Me.mnuExit.Text = "E&xit" ' 'mnuTrans ' Me.mnuTrans.Index = 1 Me.mnuTrans.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuConsignment}) Me.mnuTrans.Text = "&Transaction" ' 'mnuConsignment ' Me.mnuConsignment.Index = 0 Me.mnuConsignment.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuConAdd, Me.mnuConEdit}) Me.mnuConsignment.Text = "&Consignment" ' 'mnuConAdd ' Me.mnuConAdd.Index = 0 Me.mnuConAdd.Text = "&Add" ' 'mnuConEdit ' Me.mnuConEdit.Index = 1 Me.mnuConEdit.Text = "&Edit" ' 'mnuReport

Page 115 of 227

Page 116: Nilambar-Shipping Management Report

' Me.mnuReport.Index = 2 Me.mnuReport.Text = "&Report" ' 'MenuItem1 ' Me.MenuItem1.Index = 3 Me.MenuItem1.Text = "&Window" ' 'MenuItem2 ' Me.MenuItem2.Index = 4 Me.MenuItem2.Text = "&Help" ' 'frmMain ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(808, 478) Me.IsMdiContainer = True Me.Menu = Me.MainMenu Me.Name = "frmMain" Me.Text = "Shipping Management System"

End Sub

#End Region

Private Sub mnuConsignorAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuConsignorAdd.Click Dim AddConsignor As frmConsignor AddConsignor = New frmConsignor AddConsignor.MdiParent = Me AddConsignor.btnSearch.Visible = False AddConsignor.btnDelete.Visible = False AddConsignor.btnSave.Left = AddConsignor.btnDelete.Left AddConsignor.Show() End Sub

Private Sub mnuConsignorEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuConsignorEdit.Click Dim EditConsignor As frmConsignor EditConsignor = New frmConsignor EditConsignor.btnSave.Text = "&Update" EditConsignor.MdiParent = Me EditConsignor.Show() End Sub

Private Sub mnuNewTrans_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuConsignment.Click End Sub

Private Sub mnuExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuExit.Click Me.Dispose() End Sub

Page 116 of 227

Page 117: Nilambar-Shipping Management Report

Private Sub mnuVehicleAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuVehicleAdd.Click Dim AddVehicle As frmVehicles AddVehicle = New frmVehicles AddVehicle.MdiParent = Me AddVehicle.btnSearch.Visible = False AddVehicle.btnDelete.Visible = False AddVehicle.btnSave.Left = AddVehicle.btnDelete.Left AddVehicle.Show() End Sub

Private Sub mnuVehicleEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuVehicleEdit.Click Dim EditVehicle As frmVehicles EditVehicle = New frmVehicles EditVehicle.btnSave.Text = "&Update" EditVehicle.MdiParent = Me EditVehicle.Show() End Sub

Private Sub mnuTraiffAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuTraiffAdd.Click Dim AddTariff As frmTariff AddTariff = New frmTariff AddTariff.MdiParent = Me AddTariff.btnSearch.Visible = False AddTariff.btnDelete.Visible = False AddTariff.btnSave.Left = AddTariff.btnDelete.Left AddTariff.Show() End Sub

Private Sub mnuTariffEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuTariffEdit.Click Dim EditTariff As frmTariff EditTariff = New frmTariff EditTariff.btnSave.Text = "&Update" EditTariff.MdiParent = Me EditTariff.Show() End Sub

Private Sub mnuConAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuConAdd.Click Dim AddCon As frmConsignment AddCon = New frmConsignment AddCon.MdiParent = Me AddCon.btnSearch.Visible = False AddCon.btnDelete.Visible = False AddCon.btnSave.Left = AddCon.btnDelete.Left AddCon.Show() End Sub

Private Sub mnuConEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuConEdit.Click Dim EditCon As frmConsignment

Page 117 of 227

Page 118: Nilambar-Shipping Management Report

EditCon = New frmConsignment

EditCon.btnSave.Text = "&Update" EditCon.MdiParent = Me EditCon.Show() End Sub

Private Sub mnuStationAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuStationAdd.Click Dim AddStation As frmStation AddStation = New frmStation AddStation.MdiParent = Me AddStation.btnSearch.Visible = False AddStation.btnDelete.Visible = False AddStation.btnSave.Left = AddStation.btnDelete.Left AddStation.Show() End Sub

Private Sub mnuStationEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuStationEdit.Click Dim EditStation As frmStation EditStation = New frmStation EditStation.MdiParent = Me EditStation.btnSave.Text = "&Update" EditStation.Show() End Sub Private Sub mnuRouteAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuRouteAdd.Click Dim AddRoute As frmRoute AddRoute = New frmRoute AddRoute.btnSearch.Visible = False AddRoute.btnDelete.Visible = False AddRoute.btnSave.Left = AddRoute.btnDelete.Left AddRoute.MdiParent = Me AddRoute.Show()

End Sub

Private Sub mnuRouteEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuRouteEdit.Click Dim EditRoute As frmRoute EditRoute = New frmRoute EditRoute.btnSave.Text = "&Update" EditRoute.MdiParent = Me

End SubEnd Class

frmConsignor.vb

Public Class frmConsignor Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

Page 118 of 227

Page 119: Nilambar-Shipping Management Report

Public Sub New() MyBase.New()

'This call is required by the Windows Form Designer. InitializeComponent()

'Add any initialization after the InitializeComponent() call

End Sub

'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub

'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer

'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Friend WithEvents btnDelete As System.Windows.Forms.Button Friend WithEvents Label5 As System.Windows.Forms.Label Friend WithEvents Label4 As System.Windows.Forms.Label Friend WithEvents DataGrid As System.Windows.Forms.DataGrid Friend WithEvents btnExit As System.Windows.Forms.Button Friend WithEvents btnCancel As System.Windows.Forms.Button Friend WithEvents btnSave As System.Windows.Forms.Button Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox Friend WithEvents txtAddress As System.Windows.Forms.TextBox Friend WithEvents Label2 As System.Windows.Forms.Label Friend WithEvents txtName As System.Windows.Forms.TextBox Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox Friend WithEvents Label3 As System.Windows.Forms.Label Friend WithEvents btnSearch As System.Windows.Forms.Button Friend WithEvents txtConsignorID As System.Windows.Forms.TextBox Friend WithEvents txtCompanyName As System.Windows.Forms.TextBox Friend WithEvents Label7 As System.Windows.Forms.Label Friend WithEvents txtEmailID As System.Windows.Forms.TextBox Friend WithEvents Label8 As System.Windows.Forms.Label Friend WithEvents txtFax As System.Windows.Forms.TextBox Friend WithEvents Label9 As System.Windows.Forms.Label Friend WithEvents txtNotes As System.Windows.Forms.TextBox Friend WithEvents Label10 As System.Windows.Forms.Label <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.btnDelete = New System.Windows.Forms.Button Me.Label5 = New System.Windows.Forms.Label Me.Label4 = New System.Windows.Forms.Label

Page 119 of 227

Page 120: Nilambar-Shipping Management Report

Me.DataGrid = New System.Windows.Forms.DataGrid Me.btnExit = New System.Windows.Forms.Button Me.btnCancel = New System.Windows.Forms.Button Me.btnSave = New System.Windows.Forms.Button Me.GroupBox2 = New System.Windows.Forms.GroupBox Me.txtNotes = New System.Windows.Forms.TextBox Me.Label10 = New System.Windows.Forms.Label Me.txtFax = New System.Windows.Forms.TextBox Me.Label9 = New System.Windows.Forms.Label Me.txtEmailID = New System.Windows.Forms.TextBox Me.Label8 = New System.Windows.Forms.Label Me.txtCompanyName = New System.Windows.Forms.TextBox Me.Label7 = New System.Windows.Forms.Label Me.txtAddress = New System.Windows.Forms.TextBox Me.Label2 = New System.Windows.Forms.Label Me.txtName = New System.Windows.Forms.TextBox Me.Label1 = New System.Windows.Forms.Label Me.GroupBox1 = New System.Windows.Forms.GroupBox Me.txtConsignorID = New System.Windows.Forms.TextBox Me.Label3 = New System.Windows.Forms.Label Me.btnSearch = New System.Windows.Forms.Button CType(Me.DataGrid, System.ComponentModel.ISupportInitialize).BeginInit() Me.GroupBox2.SuspendLayout() Me.GroupBox1.SuspendLayout() Me.SuspendLayout() ' 'btnDelete ' Me.btnDelete.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnDelete.Location = New System.Drawing.Point(96, 376) Me.btnDelete.Name = "btnDelete" Me.btnDelete.Size = New System.Drawing.Size(80, 32) Me.btnDelete.TabIndex = 44 Me.btnDelete.Text = "&Delete" ' 'Label5 ' Me.Label5.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label5.Location = New System.Drawing.Point(384, 16) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(288, 32) Me.Label5.TabIndex = 43 Me.Label5.Text = "Previous Records" Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'Label4 ' Me.Label4.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label4.Location = New System.Drawing.Point(32, 16)

Page 120 of 227

Page 121: Nilambar-Shipping Management Report

Me.Label4.Name = "Label4" Me.Label4.Size = New System.Drawing.Size(288, 32) Me.Label4.TabIndex = 42 Me.Label4.Text = "Consignor Information" Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'DataGrid ' Me.DataGrid.DataMember = "" Me.DataGrid.HeaderForeColor = System.Drawing.SystemColors.ControlText Me.DataGrid.Location = New System.Drawing.Point(360, 56) Me.DataGrid.Name = "DataGrid" Me.DataGrid.Size = New System.Drawing.Size(368, 360) Me.DataGrid.TabIndex = 41 ' 'btnExit ' Me.btnExit.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnExit.Location = New System.Drawing.Point(272, 376) Me.btnExit.Name = "btnExit" Me.btnExit.Size = New System.Drawing.Size(80, 32) Me.btnExit.TabIndex = 40 Me.btnExit.Text = "&E&xit" ' 'btnCancel ' Me.btnCancel.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnCancel.Location = New System.Drawing.Point(184, 376) Me.btnCancel.Name = "btnCancel" Me.btnCancel.Size = New System.Drawing.Size(80, 32) Me.btnCancel.TabIndex = 39 Me.btnCancel.Text = "&Cancel" ' 'btnSave ' Me.btnSave.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnSave.Location = New System.Drawing.Point(8, 376) Me.btnSave.Name = "btnSave" Me.btnSave.Size = New System.Drawing.Size(80, 32) Me.btnSave.TabIndex = 38 Me.btnSave.Text = "&Save" ' 'GroupBox2 ' Me.GroupBox2.Controls.Add(Me.txtNotes) Me.GroupBox2.Controls.Add(Me.Label10) Me.GroupBox2.Controls.Add(Me.txtFax) Me.GroupBox2.Controls.Add(Me.Label9) Me.GroupBox2.Controls.Add(Me.txtEmailID)

Page 121 of 227

Page 122: Nilambar-Shipping Management Report

Me.GroupBox2.Controls.Add(Me.Label8) Me.GroupBox2.Controls.Add(Me.txtCompanyName) Me.GroupBox2.Controls.Add(Me.Label7) Me.GroupBox2.Controls.Add(Me.txtAddress) Me.GroupBox2.Controls.Add(Me.Label2) Me.GroupBox2.Controls.Add(Me.txtName) Me.GroupBox2.Controls.Add(Me.Label1) Me.GroupBox2.Location = New System.Drawing.Point(8, 112) Me.GroupBox2.Name = "GroupBox2" Me.GroupBox2.Size = New System.Drawing.Size(344, 256) Me.GroupBox2.TabIndex = 37 Me.GroupBox2.TabStop = False ' 'txtNotes ' Me.txtNotes.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtNotes.Location = New System.Drawing.Point(120, 136) Me.txtNotes.Multiline = True Me.txtNotes.Name = "txtNotes" Me.txtNotes.Size = New System.Drawing.Size(208, 112) Me.txtNotes.TabIndex = 13 Me.txtNotes.Text = "" ' 'Label10 ' Me.Label10.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label10.Location = New System.Drawing.Point(16, 136) Me.Label10.Name = "Label10" Me.Label10.Size = New System.Drawing.Size(96, 24) Me.Label10.TabIndex = 12 Me.Label10.Text = "Notes:" Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtFax ' Me.txtFax.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtFax.Location = New System.Drawing.Point(120, 112) Me.txtFax.Name = "txtFax" Me.txtFax.Size = New System.Drawing.Size(208, 20) Me.txtFax.TabIndex = 11 Me.txtFax.Text = "" ' 'Label9 ' Me.Label9.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label9.Location = New System.Drawing.Point(16, 112) Me.Label9.Name = "Label9" Me.Label9.Size = New System.Drawing.Size(96, 24)

Page 122 of 227

Page 123: Nilambar-Shipping Management Report

Me.Label9.TabIndex = 10 Me.Label9.Text = "FAX:" Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtEmailID ' Me.txtEmailID.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtEmailID.Location = New System.Drawing.Point(120, 88) Me.txtEmailID.Name = "txtEmailID" Me.txtEmailID.Size = New System.Drawing.Size(208, 20) Me.txtEmailID.TabIndex = 9 Me.txtEmailID.Text = "" ' 'Label8 ' Me.Label8.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label8.Location = New System.Drawing.Point(16, 88) Me.Label8.Name = "Label8" Me.Label8.Size = New System.Drawing.Size(96, 24) Me.Label8.TabIndex = 8 Me.Label8.Text = "E-Mail ID:" Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtCompanyName ' Me.txtCompanyName.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtCompanyName.Location = New System.Drawing.Point(120, 40) Me.txtCompanyName.Name = "txtCompanyName" Me.txtCompanyName.Size = New System.Drawing.Size(208, 20) Me.txtCompanyName.TabIndex = 7 Me.txtCompanyName.Text = "" ' 'Label7 ' Me.Label7.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label7.Location = New System.Drawing.Point(16, 40) Me.Label7.Name = "Label7" Me.Label7.Size = New System.Drawing.Size(96, 24) Me.Label7.TabIndex = 6 Me.Label7.Text = "Company Name:" Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtAddress '

Page 123 of 227

Page 124: Nilambar-Shipping Management Report

Me.txtAddress.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtAddress.Location = New System.Drawing.Point(120, 64) Me.txtAddress.Name = "txtAddress" Me.txtAddress.Size = New System.Drawing.Size(208, 20) Me.txtAddress.TabIndex = 3 Me.txtAddress.Text = "" ' 'Label2 ' Me.Label2.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label2.Location = New System.Drawing.Point(16, 64) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(96, 24) Me.Label2.TabIndex = 2 Me.Label2.Text = "Address:" Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtName ' Me.txtName.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtName.Location = New System.Drawing.Point(120, 16) Me.txtName.Name = "txtName" Me.txtName.Size = New System.Drawing.Size(208, 20) Me.txtName.TabIndex = 1 Me.txtName.Text = "" ' 'Label1 ' Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label1.Location = New System.Drawing.Point(16, 16) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(96, 24) Me.Label1.TabIndex = 0 Me.Label1.Text = "Name:" Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'GroupBox1 ' Me.GroupBox1.Controls.Add(Me.txtConsignorID) Me.GroupBox1.Controls.Add(Me.Label3) Me.GroupBox1.Controls.Add(Me.btnSearch) Me.GroupBox1.Location = New System.Drawing.Point(8, 48) Me.GroupBox1.Name = "GroupBox1" Me.GroupBox1.Size = New System.Drawing.Size(344, 56) Me.GroupBox1.TabIndex = 36 Me.GroupBox1.TabStop = False '

Page 124 of 227

Page 125: Nilambar-Shipping Management Report

'txtConsignorID ' Me.txtConsignorID.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtConsignorID.Location = New System.Drawing.Point(120, 24) Me.txtConsignorID.Name = "txtConsignorID" Me.txtConsignorID.Size = New System.Drawing.Size(144, 20) Me.txtConsignorID.TabIndex = 7 Me.txtConsignorID.Text = "" ' 'Label3 ' Me.Label3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label3.Location = New System.Drawing.Point(16, 24) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(96, 24) Me.Label3.TabIndex = 6 Me.Label3.Text = "Consignor ID:" Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'btnSearch ' Me.btnSearch.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnSearch.Location = New System.Drawing.Point(272, 16) Me.btnSearch.Name = "btnSearch" Me.btnSearch.Size = New System.Drawing.Size(64, 32) Me.btnSearch.TabIndex = 5 Me.btnSearch.Text = "&Search" ' 'frmConsignor ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(736, 422) Me.Controls.Add(Me.btnDelete) Me.Controls.Add(Me.Label5) Me.Controls.Add(Me.Label4) Me.Controls.Add(Me.DataGrid) Me.Controls.Add(Me.btnExit) Me.Controls.Add(Me.btnCancel) Me.Controls.Add(Me.btnSave) Me.Controls.Add(Me.GroupBox2) Me.Controls.Add(Me.GroupBox1) Me.Name = "frmConsignor" Me.Text = "Consignor Information" CType(Me.DataGrid, System.ComponentModel.ISupportInitialize).EndInit() Me.GroupBox2.ResumeLayout(False) Me.GroupBox1.ResumeLayout(False) Me.ResumeLayout(False)

End Sub

Page 125 of 227

Page 126: Nilambar-Shipping Management Report

#End Region Dim objConsignor As ShippingDataLogic.BLConsignor Dim dsConsignor As DataSet

Private Sub ClearFields() txtConsignorID.Text = vbNullString txtName.Text = vbNullString txtAddress.Text = vbNullString txtCompanyName.Text = vbNullString txtEmailID.Text = vbNullString txtFax.Text = vbNullString txtNotes.Text = vbNullString txtConsignorID.Focus() End Sub

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click objConsignor = Nothing dsConsignor = Nothing Me.Dispose() End Sub

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click If btnSave.Text = "&Save" Then SaveConsignor() ClearFields() objConsignor = New ShippingDataLogic.BLConsignor DataGrid.DataSource = objConsignor.GetConsignors Else UpdateConsignor() ClearFields() objConsignor = New ShippingDataLogic.BLConsignor DataGrid.DataSource = objConsignor.GetConsignors End If End Sub

Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click ClearFields() objConsignor = New ShippingDataLogic.BLConsignor DataGrid.DataSource = objConsignor.GetConsignors End Sub

Private Sub frmConsignor_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing objConsignor.Dispose() objConsignor = Nothing End Sub Private Sub SaveConsignor() Try objConsignor = New ShippingDataLogic.BLConsignor

dsConsignor = objConsignor.GetConsignors '**** Below line in important. Otherwise

Page 126 of 227

Page 127: Nilambar-Shipping Management Report

' We will get message of Primary key violation dsConsignor.Tables("Consignor").Rows.Clear() Dim objDataRow As DataRow = dsConsignor.Tables("Consignor").NewRow objDataRow.Item("ConsignorID") = txtConsignorID.Text.Trim objDataRow.Item("ConsignorName") = txtName.Text.Trim objDataRow.Item("CompanyName") = txtCompanyName.Text.Trim objDataRow.Item("Address") = txtAddress.Text.Trim objDataRow.Item("EmailID") = txtEmailID.Text.Trim objDataRow.Item("Fax") = txtFax.Text.Trim objDataRow.Item("Notes") = txtNotes.Text.Trim dsConsignor.Tables("Consignor").Rows.Add(objDataRow)

If Not objConsignor.AddConsignor(dsConsignor) Then Throw New Exception("Insert Consignor failed!!!") End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

Finally ClearFields() End Try End Sub Private Sub UpdateConsignor() Try

objConsignor = New ShippingDataLogic.BLConsignor dsConsignor = objConsignor.GetConsignors '**** Below line in important. Otherwise ' We will get message of Primary key violation dsConsignor.Tables("Consignor").Rows.Clear() Dim objDataRow As DataRow = dsConsignor.Tables("Consignor").NewRow objDataRow.Item("ConsignorID") = txtConsignorID.Text.Trim objDataRow.Item("ConsignorName") = txtName.Text.Trim objDataRow.Item("CompanyName") = txtCompanyName.Text.Trim objDataRow.Item("Address") = txtAddress.Text.Trim objDataRow.Item("EmailID") = txtEmailID.Text.Trim objDataRow.Item("Fax") = txtFax.Text.Trim objDataRow.Item("Notes") = txtNotes.Text.Trim dsConsignor.Tables("Consignor").Rows.Add(objDataRow)

If Not objConsignor.UpdateConsignor(dsConsignor) Then Throw New Exception("Update Consignor failed!!!") End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

Finally ClearFields() End Try End Sub Private Sub DeleteConsignor() Try objConsignor = New ShippingDataLogic.BLConsignor

Page 127 of 227

Page 128: Nilambar-Shipping Management Report

If Not objConsignor.DeleteConsignor(txtConsignorID.Text) Then Throw New Exception("Delete Consignor Failed!") End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try ClearFields()

End Sub

Private Sub SearchConsignor() Try objConsignor = New ShippingDataLogic.BLConsignor dsConsignor = objConsignor.GetConsignor(txtConsignorID.Text.Trim)

txtName.Text = dsConsignor.Tables("Consignor").Rows(0).Item("ConsignorName") txtCompanyName.Text = dsConsignor.Tables("Consignor").Rows(0).Item("CompanyName") txtAddress.Text = dsConsignor.Tables("Consignor").Rows(0).Item("Address") txtEmailID.Text = dsConsignor.Tables("Consignor").Rows(0).Item("EmailID") txtFax.Text = dsConsignor.Tables("Consignor").Rows(0).Item("Fax") txtNotes.Text = dsConsignor.Tables("Consignor").Rows(0).Item("Notes")

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Sub

Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click SearchConsignor() End Sub

Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click Dim Ans As Long Ans = MsgBox("Do you really want to delete the Record?", MsgBoxStyle.Critical + MsgBoxStyle.YesNo, "Delete Record") If Ans = vbYes Then DeleteConsignor() Else ClearFields() End If

End SubEnd Class

Page 128 of 227

Page 129: Nilambar-Shipping Management Report

frmVehicles.vb

Public Class frmVehicles Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

Public Sub New() MyBase.New()

'This call is required by the Windows Form Designer. InitializeComponent()

'Add any initialization after the InitializeComponent() call

End Sub

'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub

'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer

'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Friend WithEvents btnDelete As System.Windows.Forms.Button Friend WithEvents Label5 As System.Windows.Forms.Label Friend WithEvents Label4 As System.Windows.Forms.Label Friend WithEvents DataGrid As System.Windows.Forms.DataGrid Friend WithEvents btnExit As System.Windows.Forms.Button Friend WithEvents btnCancel As System.Windows.Forms.Button Friend WithEvents btnSave As System.Windows.Forms.Button Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox Friend WithEvents Label7 As System.Windows.Forms.Label Friend WithEvents txtName As System.Windows.Forms.TextBox Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox Friend WithEvents txtVehicleNo As System.Windows.Forms.TextBox Friend WithEvents Label3 As System.Windows.Forms.Label Friend WithEvents btnSearch As System.Windows.Forms.Button Friend WithEvents cmbRouteID As System.Windows.Forms.ComboBox <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

Page 129 of 227

Page 130: Nilambar-Shipping Management Report

Me.btnDelete = New System.Windows.Forms.Button Me.Label5 = New System.Windows.Forms.Label Me.Label4 = New System.Windows.Forms.Label Me.DataGrid = New System.Windows.Forms.DataGrid Me.btnExit = New System.Windows.Forms.Button Me.btnCancel = New System.Windows.Forms.Button Me.btnSave = New System.Windows.Forms.Button Me.GroupBox2 = New System.Windows.Forms.GroupBox Me.cmbRouteID = New System.Windows.Forms.ComboBox Me.Label7 = New System.Windows.Forms.Label Me.txtName = New System.Windows.Forms.TextBox Me.Label1 = New System.Windows.Forms.Label Me.GroupBox1 = New System.Windows.Forms.GroupBox Me.txtVehicleNo = New System.Windows.Forms.TextBox Me.Label3 = New System.Windows.Forms.Label Me.btnSearch = New System.Windows.Forms.Button CType(Me.DataGrid, System.ComponentModel.ISupportInitialize).BeginInit() Me.GroupBox2.SuspendLayout() Me.GroupBox1.SuspendLayout() Me.SuspendLayout() ' 'btnDelete ' Me.btnDelete.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnDelete.Location = New System.Drawing.Point(96, 184) Me.btnDelete.Name = "btnDelete" Me.btnDelete.Size = New System.Drawing.Size(80, 32) Me.btnDelete.TabIndex = 53 Me.btnDelete.Text = "&Delete" ' 'Label5 ' Me.Label5.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label5.Location = New System.Drawing.Point(376, 8) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(288, 32) Me.Label5.TabIndex = 52 Me.Label5.Text = "Previous Records" Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'Label4 ' Me.Label4.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label4.Location = New System.Drawing.Point(24, 8) Me.Label4.Name = "Label4" Me.Label4.Size = New System.Drawing.Size(288, 32) Me.Label4.TabIndex = 51 Me.Label4.Text = "Vehicle Information"

Page 130 of 227

Page 131: Nilambar-Shipping Management Report

Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'DataGrid ' Me.DataGrid.DataMember = "" Me.DataGrid.HeaderForeColor = System.Drawing.SystemColors.ControlText Me.DataGrid.Location = New System.Drawing.Point(360, 48) Me.DataGrid.Name = "DataGrid" Me.DataGrid.Size = New System.Drawing.Size(344, 176) Me.DataGrid.TabIndex = 50 ' 'btnExit ' Me.btnExit.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnExit.Location = New System.Drawing.Point(272, 184) Me.btnExit.Name = "btnExit" Me.btnExit.Size = New System.Drawing.Size(80, 32) Me.btnExit.TabIndex = 49 Me.btnExit.Text = "&E&xit" ' 'btnCancel ' Me.btnCancel.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnCancel.Location = New System.Drawing.Point(184, 184) Me.btnCancel.Name = "btnCancel" Me.btnCancel.Size = New System.Drawing.Size(80, 32) Me.btnCancel.TabIndex = 48 Me.btnCancel.Text = "&Cancel" ' 'btnSave ' Me.btnSave.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnSave.Location = New System.Drawing.Point(8, 184) Me.btnSave.Name = "btnSave" Me.btnSave.Size = New System.Drawing.Size(80, 32) Me.btnSave.TabIndex = 47 Me.btnSave.Text = "&Save" ' 'GroupBox2 ' Me.GroupBox2.Controls.Add(Me.cmbRouteID) Me.GroupBox2.Controls.Add(Me.Label7) Me.GroupBox2.Controls.Add(Me.txtName) Me.GroupBox2.Controls.Add(Me.Label1) Me.GroupBox2.Location = New System.Drawing.Point(8, 104) Me.GroupBox2.Name = "GroupBox2" Me.GroupBox2.Size = New System.Drawing.Size(344, 72) Me.GroupBox2.TabIndex = 46 Me.GroupBox2.TabStop = False

Page 131 of 227

Page 132: Nilambar-Shipping Management Report

' 'cmbRouteID ' Me.cmbRouteID.Location = New System.Drawing.Point(120, 40) Me.cmbRouteID.Name = "cmbRouteID" Me.cmbRouteID.Size = New System.Drawing.Size(208, 21) Me.cmbRouteID.TabIndex = 7 ' 'Label7 ' Me.Label7.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label7.Location = New System.Drawing.Point(16, 40) Me.Label7.Name = "Label7" Me.Label7.Size = New System.Drawing.Size(96, 24) Me.Label7.TabIndex = 6 Me.Label7.Text = "Route ID:" Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtName ' Me.txtName.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtName.Location = New System.Drawing.Point(120, 16) Me.txtName.Name = "txtName" Me.txtName.Size = New System.Drawing.Size(208, 20) Me.txtName.TabIndex = 1 Me.txtName.Text = "" ' 'Label1 ' Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label1.Location = New System.Drawing.Point(16, 16) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(96, 24) Me.Label1.TabIndex = 0 Me.Label1.Text = "Name:" Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'GroupBox1 ' Me.GroupBox1.Controls.Add(Me.txtVehicleNo) Me.GroupBox1.Controls.Add(Me.Label3) Me.GroupBox1.Controls.Add(Me.btnSearch) Me.GroupBox1.Location = New System.Drawing.Point(8, 40) Me.GroupBox1.Name = "GroupBox1" Me.GroupBox1.Size = New System.Drawing.Size(344, 56) Me.GroupBox1.TabIndex = 45 Me.GroupBox1.TabStop = False ' 'txtVehicleNo

Page 132 of 227

Page 133: Nilambar-Shipping Management Report

' Me.txtVehicleNo.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtVehicleNo.Location = New System.Drawing.Point(120, 24) Me.txtVehicleNo.Name = "txtVehicleNo" Me.txtVehicleNo.Size = New System.Drawing.Size(144, 20) Me.txtVehicleNo.TabIndex = 7 Me.txtVehicleNo.Text = "" ' 'Label3 ' Me.Label3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label3.Location = New System.Drawing.Point(16, 24) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(96, 24) Me.Label3.TabIndex = 6 Me.Label3.Text = "Vehicle No.:" Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'btnSearch ' Me.btnSearch.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnSearch.Location = New System.Drawing.Point(272, 16) Me.btnSearch.Name = "btnSearch" Me.btnSearch.Size = New System.Drawing.Size(64, 32) Me.btnSearch.TabIndex = 5 Me.btnSearch.Text = "&Search" ' 'frmVehicles ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(712, 230) Me.Controls.Add(Me.btnDelete) Me.Controls.Add(Me.Label5) Me.Controls.Add(Me.Label4) Me.Controls.Add(Me.DataGrid) Me.Controls.Add(Me.btnExit) Me.Controls.Add(Me.btnCancel) Me.Controls.Add(Me.btnSave) Me.Controls.Add(Me.GroupBox2) Me.Controls.Add(Me.GroupBox1) Me.Name = "frmVehicles" Me.Text = "Vehicle Information" CType(Me.DataGrid, System.ComponentModel.ISupportInitialize).EndInit() Me.GroupBox2.ResumeLayout(False) Me.GroupBox1.ResumeLayout(False) Me.ResumeLayout(False)

End Sub

Page 133 of 227

Page 134: Nilambar-Shipping Management Report

#End Region Dim objVehicles As ShippingDataLogic.BLVehicles Dim dsVehicles As DataSet

Private Sub ClearFields() txtVehicleNo.Text = vbNullString txtName.Text = vbNullString cmbRouteID.Text = vbNullString txtVehicleNo.Focus() End Sub

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click objVehicles = Nothing dsVehicles = Nothing Me.Dispose() End Sub

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click If btnSave.Text = "&Save" Then SaveVehicles() ClearFields() objVehicles = New ShippingDataLogic.BLVehicles DataGrid.DataSource = objVehicles.GetVehicles Else UpdateVehicles() ClearFields() objVehicles = New ShippingDataLogic.BLVehicles DataGrid.DataSource = objVehicles.GetVehicles End If End Sub

Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click ClearFields() objVehicles = New ShippingDataLogic.BLVehicles DataGrid.DataSource = objVehicles.GetVehicles End Sub

Private Sub frmVehicles_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing objVehicles.Dispose() objVehicles = Nothing End Sub Private Sub SaveVehicles() Try objVehicles = New ShippingDataLogic.BLVehicles

dsVehicles = objVehicles.GetVehicles '**** Below line in important. Otherwise ' We will get message of Primary key violation dsVehicles.Tables("Vehicles").Rows.Clear() Dim objDataRow As DataRow = dsVehicles.Tables("Vehicles").NewRow objDataRow.Item("VehicleNo") = txtVehicleNo.Text.Trim

Page 134 of 227

Page 135: Nilambar-Shipping Management Report

objDataRow.Item("VehicleName") = txtName.Text.Trim objDataRow.Item("RouteID") = txtName.Text.Trim

dsVehicles.Tables("Vehicles").Rows.Add(objDataRow)

If Not objVehicles.AddVehicles(dsVehicles) Then Throw New Exception("Insert Vehicles failed!!!") End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

Finally ClearFields() End Try End Sub Private Sub UpdateVehicles() Try

objVehicles = New ShippingDataLogic.BLVehicles dsVehicles = objVehicles.GetVehicles '**** Below line in important. Otherwise ' We will get message of Primary key violation dsVehicles.Tables("Vehicles").Rows.Clear() Dim objDataRow As DataRow = dsVehicles.Tables("Vehicles").NewRow objDataRow.Item("VehicleNo") = txtVehicleNo.Text.Trim objDataRow.Item("VehicleName") = txtName.Text.Trim objDataRow.Item("RouteID") = txtName.Text.Trim

dsVehicles.Tables("Vehicles").Rows.Add(objDataRow)

If Not objVehicles.UpdateVehicles(dsVehicles) Then Throw New Exception("Update Vehicles failed!!!") End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

Finally ClearFields() End Try End Sub Private Sub DeleteVehicles() Try objVehicles = New ShippingDataLogic.BLVehicles

If Not objVehicles.DeleteVehicles(txtVehicleNo.Text) Then Throw New Exception("Delete Vehicles Failed!") End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try ClearFields()

End Sub

Private Sub SearchVehicles()

Page 135 of 227

Page 136: Nilambar-Shipping Management Report

Try objVehicles = New ShippingDataLogic.BLVehicles dsVehicles = objVehicles.GetVehicles(txtVehicleNo.Text.Trim) txtName.Text = dsVehicles.Tables("Vehicles").Rows(0).Item("VehicleName") cmbRouteID.Text = dsVehicles.Tables("Vehicles").Rows(0).Item("RouteID")

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Sub

Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click SearchVehicles() End Sub

Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click Dim Ans As Long Ans = MsgBox("Do you really want to delete the Record?", MsgBoxStyle.Critical + MsgBoxStyle.YesNo, "Delete Record") If Ans = vbYes Then DeleteVehicles() Else ClearFields() End If

End SubEnd Class

frmPassword.vb

Public Class frmPassword Inherits System.Windows.Forms.Form Dim objPwdInfo As ShippingDataLogic.BLPwdInfo Dim dsPwdInfo As DataSet#Region " Windows Form Designer generated code "

Public Sub New() MyBase.New()

'This call is required by the Windows Form Designer. InitializeComponent()

'Add any initialization after the InitializeComponent() call

End Sub

'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then

Page 136 of 227

Page 137: Nilambar-Shipping Management Report

components.Dispose() End If End If MyBase.Dispose(disposing) End Sub

'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer

'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Friend WithEvents btnExit As System.Windows.Forms.Button Friend WithEvents btnOk As System.Windows.Forms.Button Friend WithEvents Label11 As System.Windows.Forms.Label Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox Friend WithEvents cmbUserName As System.Windows.Forms.ComboBox Friend WithEvents txtPassword As System.Windows.Forms.TextBox Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents Label10 As System.Windows.Forms.Label Friend WithEvents Label2 As System.Windows.Forms.Label Friend WithEvents Label3 As System.Windows.Forms.Label Friend WithEvents txtNewPassword As System.Windows.Forms.TextBox Friend WithEvents txtConfPassword As System.Windows.Forms.TextBox <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.btnExit = New System.Windows.Forms.Button Me.btnOk = New System.Windows.Forms.Button Me.Label11 = New System.Windows.Forms.Label Me.GroupBox1 = New System.Windows.Forms.GroupBox Me.txtConfPassword = New System.Windows.Forms.TextBox Me.Label3 = New System.Windows.Forms.Label Me.txtNewPassword = New System.Windows.Forms.TextBox Me.Label2 = New System.Windows.Forms.Label Me.cmbUserName = New System.Windows.Forms.ComboBox Me.txtPassword = New System.Windows.Forms.TextBox Me.Label1 = New System.Windows.Forms.Label Me.Label10 = New System.Windows.Forms.Label Me.GroupBox1.SuspendLayout() Me.SuspendLayout() ' 'btnExit ' Me.btnExit.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnExit.Location = New System.Drawing.Point(168, 176) Me.btnExit.Name = "btnExit" Me.btnExit.Size = New System.Drawing.Size(88, 24) Me.btnExit.TabIndex = 41 Me.btnExit.Text = "E&xit" ' 'btnOk '

Page 137 of 227

Page 138: Nilambar-Shipping Management Report

Me.btnOk.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnOk.Location = New System.Drawing.Point(64, 176) Me.btnOk.Name = "btnOk" Me.btnOk.Size = New System.Drawing.Size(88, 24) Me.btnOk.TabIndex = 40 Me.btnOk.Text = "&Ok" ' 'Label11 ' Me.Label11.Font = New System.Drawing.Font("Microsoft Sans Serif", 16.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label11.Location = New System.Drawing.Point(28, 8) Me.Label11.Name = "Label11" Me.Label11.Size = New System.Drawing.Size(272, 24) Me.Label11.TabIndex = 39 Me.Label11.Text = "Change Password" Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'GroupBox1 ' Me.GroupBox1.Controls.AddRange(New System.Windows.Forms.Control() {Me.txtConfPassword, Me.Label3, Me.txtNewPassword, Me.Label2, Me.cmbUserName, Me.txtPassword, Me.Label1, Me.Label10}) Me.GroupBox1.Location = New System.Drawing.Point(12, 48) Me.GroupBox1.Name = "GroupBox1" Me.GroupBox1.Size = New System.Drawing.Size(324, 120) Me.GroupBox1.TabIndex = 38 Me.GroupBox1.TabStop = False ' 'txtConfPassword ' Me.txtConfPassword.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtConfPassword.Location = New System.Drawing.Point(128, 88) Me.txtConfPassword.Name = "txtConfPassword" Me.txtConfPassword.PasswordChar = Microsoft.VisualBasic.ChrW(42) Me.txtConfPassword.Size = New System.Drawing.Size(176, 20) Me.txtConfPassword.TabIndex = 18 Me.txtConfPassword.Text = "" ' 'Label3 ' Me.Label3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label3.Location = New System.Drawing.Point(16, 88) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(104, 24) Me.Label3.TabIndex = 19 Me.Label3.Text = "Confirm Password:"

Page 138 of 227

Page 139: Nilambar-Shipping Management Report

Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtNewPassword ' Me.txtNewPassword.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtNewPassword.Location = New System.Drawing.Point(128, 64) Me.txtNewPassword.Name = "txtNewPassword" Me.txtNewPassword.PasswordChar = Microsoft.VisualBasic.ChrW(42) Me.txtNewPassword.Size = New System.Drawing.Size(176, 20) Me.txtNewPassword.TabIndex = 16 Me.txtNewPassword.Text = "" ' 'Label2 ' Me.Label2.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label2.Location = New System.Drawing.Point(16, 64) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(104, 24) Me.Label2.TabIndex = 17 Me.Label2.Text = "New Password:" Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'cmbUserName ' Me.cmbUserName.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.cmbUserName.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.cmbUserName.Items.AddRange(New Object() {"Administrator", "User"}) Me.cmbUserName.Location = New System.Drawing.Point(128, 16) Me.cmbUserName.Name = "cmbUserName" Me.cmbUserName.Size = New System.Drawing.Size(176, 21) Me.cmbUserName.TabIndex = 15 ' 'txtPassword ' Me.txtPassword.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtPassword.Location = New System.Drawing.Point(128, 40) Me.txtPassword.Name = "txtPassword" Me.txtPassword.PasswordChar = Microsoft.VisualBasic.ChrW(42) Me.txtPassword.Size = New System.Drawing.Size(176, 20) Me.txtPassword.TabIndex = 13 Me.txtPassword.Text = "" ' 'Label1 '

Page 139 of 227

Page 140: Nilambar-Shipping Management Report

Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label1.Location = New System.Drawing.Point(16, 40) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(104, 24) Me.Label1.TabIndex = 14 Me.Label1.Text = "Old Password:" Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label10 ' Me.Label10.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label10.Location = New System.Drawing.Point(40, 16) Me.Label10.Name = "Label10" Me.Label10.Size = New System.Drawing.Size(80, 24) Me.Label10.TabIndex = 12 Me.Label10.Text = "User Name:" Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'frmPassword ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(344, 214) Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.btnExit, Me.btnOk, Me.Label11, Me.GroupBox1}) Me.Name = "frmPassword" Me.Text = "Change Password" Me.GroupBox1.ResumeLayout(False) Me.ResumeLayout(False)

End Sub

#End Region

Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click Dim OldPass As String Try objPwdInfo = New ShippingDataLogic.BLPwdInfo dsPwdInfo = objPwdInfo.GetPwdInfo(cmbUserName.Text.Trim) OldPass = objPwdInfo.DecryptPassword(dsPwdInfo.Tables("PwdInfo").Rows(0).Item("Pwd")) If OldPass = txtPassword.Text.Trim Then If txtNewPassword.Text.Trim = txtConfPassword.Text.Trim Then Try dsPwdInfo.Tables("PwdInfo").Rows.Clear() Dim objDataRow As DataRow = dsPwdInfo.Tables("PwdInfo").NewRow objDataRow.Item("Uid") = cmbUserName.Text.Trim

Page 140 of 227

Page 141: Nilambar-Shipping Management Report

objDataRow.Item("Pwd") = objPwdInfo.EncryptPassword(txtNewPassword.Text.Trim) dsPwdInfo.Tables("PwdInfo").Rows.Add(objDataRow)

If Not objPwdInfo.UpdatePwdInfo(dsPwdInfo) Then Throw New Exception("Insert Vehicles failed!!!") Else MessageBox.Show("Password Changed Successfully!", "Password", MessageBoxButtons.OK, MessageBoxIcon.Information) End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) End Try Else MessageBox.Show("New Passwords do not match! Please try again", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) End If Else MessageBox.Show("Old Passwords do not match! Please try again", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) Finally cmbUserName.Text = vbNullString txtPassword.Text = vbNullString txtNewPassword.Text = vbNullString txtConfPassword.Text = vbNullString End Try

End Sub

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click Me.Dispose() End SubEnd Class

frmReport.vb

Public Class frmReport Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

Public Sub New() MyBase.New()

'This call is required by the Windows Form Designer. InitializeComponent()

Page 141 of 227

Page 142: Nilambar-Shipping Management Report

'Add any initialization after the InitializeComponent() call

End Sub

'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub

'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer

'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Friend WithEvents CrystalReportViewer As CrystalDecisions.Windows.Forms.CrystalReportViewer <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.CrystalReportViewer = New CrystalDecisions.Windows.Forms.CrystalReportViewer Me.SuspendLayout() ' 'CrystalReportViewer ' Me.CrystalReportViewer.ActiveViewIndex = -1 Me.CrystalReportViewer.Location = New System.Drawing.Point(8, 16) Me.CrystalReportViewer.Name = "CrystalReportViewer" Me.CrystalReportViewer.ReportSource = Nothing Me.CrystalReportViewer.Size = New System.Drawing.Size(1008, 344) Me.CrystalReportViewer.TabIndex = 0 ' 'frmReport ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(1028, 366) Me.Controls.Add(Me.CrystalReportViewer) Me.Name = "frmReport" Me.Text = "frmReport" Me.ResumeLayout(False)

End Sub

#End Region

End Class

frmTariff.vb

Page 142 of 227

Page 143: Nilambar-Shipping Management Report

Public Class frmTariff Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

Public Sub New() MyBase.New()

'This call is required by the Windows Form Designer. InitializeComponent()

'Add any initialization after the InitializeComponent() call

End Sub

'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub

'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer

'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Friend WithEvents btnDelete As System.Windows.Forms.Button Friend WithEvents Label5 As System.Windows.Forms.Label Friend WithEvents Label4 As System.Windows.Forms.Label Friend WithEvents DataGrid As System.Windows.Forms.DataGrid Friend WithEvents btnExit As System.Windows.Forms.Button Friend WithEvents btnCancel As System.Windows.Forms.Button Friend WithEvents btnSave As System.Windows.Forms.Button Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox Friend WithEvents Label7 As System.Windows.Forms.Label Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox Friend WithEvents txtTariffID As System.Windows.Forms.TextBox Friend WithEvents Label3 As System.Windows.Forms.Label Friend WithEvents btnSearch As System.Windows.Forms.Button Friend WithEvents Label2 As System.Windows.Forms.Label Friend WithEvents Label6 As System.Windows.Forms.Label Friend WithEvents txtRate As System.Windows.Forms.TextBox Friend WithEvents txtEnd As System.Windows.Forms.TextBox Friend WithEvents txtStart As System.Windows.Forms.TextBox Friend WithEvents txtClass As System.Windows.Forms.TextBox <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

Page 143 of 227

Page 144: Nilambar-Shipping Management Report

Me.btnDelete = New System.Windows.Forms.Button Me.Label5 = New System.Windows.Forms.Label Me.Label4 = New System.Windows.Forms.Label Me.DataGrid = New System.Windows.Forms.DataGrid Me.btnExit = New System.Windows.Forms.Button Me.btnCancel = New System.Windows.Forms.Button Me.btnSave = New System.Windows.Forms.Button Me.GroupBox2 = New System.Windows.Forms.GroupBox Me.txtRate = New System.Windows.Forms.TextBox Me.Label2 = New System.Windows.Forms.Label Me.txtEnd = New System.Windows.Forms.TextBox Me.Label6 = New System.Windows.Forms.Label Me.txtStart = New System.Windows.Forms.TextBox Me.Label7 = New System.Windows.Forms.Label Me.txtClass = New System.Windows.Forms.TextBox Me.Label1 = New System.Windows.Forms.Label Me.GroupBox1 = New System.Windows.Forms.GroupBox Me.txtTariffID = New System.Windows.Forms.TextBox Me.Label3 = New System.Windows.Forms.Label Me.btnSearch = New System.Windows.Forms.Button CType(Me.DataGrid, System.ComponentModel.ISupportInitialize).BeginInit() Me.GroupBox2.SuspendLayout() Me.GroupBox1.SuspendLayout() Me.SuspendLayout() ' 'btnDelete ' Me.btnDelete.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnDelete.Location = New System.Drawing.Point(96, 232) Me.btnDelete.Name = "btnDelete" Me.btnDelete.Size = New System.Drawing.Size(80, 32) Me.btnDelete.TabIndex = 71 Me.btnDelete.Text = "&Delete" ' 'Label5 ' Me.Label5.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label5.Location = New System.Drawing.Point(376, 8) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(288, 32) Me.Label5.TabIndex = 70 Me.Label5.Text = "Previous Records" Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'Label4 ' Me.Label4.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label4.Location = New System.Drawing.Point(24, 8) Me.Label4.Name = "Label4"

Page 144 of 227

Page 145: Nilambar-Shipping Management Report

Me.Label4.Size = New System.Drawing.Size(288, 32) Me.Label4.TabIndex = 69 Me.Label4.Text = "Tariff Information" Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'DataGrid ' Me.DataGrid.DataMember = "" Me.DataGrid.HeaderForeColor = System.Drawing.SystemColors.ControlText Me.DataGrid.Location = New System.Drawing.Point(360, 48) Me.DataGrid.Name = "DataGrid" Me.DataGrid.Size = New System.Drawing.Size(344, 216) Me.DataGrid.TabIndex = 68 ' 'btnExit ' Me.btnExit.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnExit.Location = New System.Drawing.Point(272, 232) Me.btnExit.Name = "btnExit" Me.btnExit.Size = New System.Drawing.Size(80, 32) Me.btnExit.TabIndex = 67 Me.btnExit.Text = "&E&xit" ' 'btnCancel ' Me.btnCancel.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnCancel.Location = New System.Drawing.Point(184, 232) Me.btnCancel.Name = "btnCancel" Me.btnCancel.Size = New System.Drawing.Size(80, 32) Me.btnCancel.TabIndex = 66 Me.btnCancel.Text = "&Cancel" ' 'btnSave ' Me.btnSave.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnSave.Location = New System.Drawing.Point(8, 232) Me.btnSave.Name = "btnSave" Me.btnSave.Size = New System.Drawing.Size(80, 32) Me.btnSave.TabIndex = 65 Me.btnSave.Text = "&Save" ' 'GroupBox2 ' Me.GroupBox2.Controls.Add(Me.txtRate) Me.GroupBox2.Controls.Add(Me.Label2) Me.GroupBox2.Controls.Add(Me.txtEnd) Me.GroupBox2.Controls.Add(Me.Label6) Me.GroupBox2.Controls.Add(Me.txtStart) Me.GroupBox2.Controls.Add(Me.Label7)

Page 145 of 227

Page 146: Nilambar-Shipping Management Report

Me.GroupBox2.Controls.Add(Me.txtClass) Me.GroupBox2.Controls.Add(Me.Label1) Me.GroupBox2.Location = New System.Drawing.Point(8, 104) Me.GroupBox2.Name = "GroupBox2" Me.GroupBox2.Size = New System.Drawing.Size(344, 120) Me.GroupBox2.TabIndex = 64 Me.GroupBox2.TabStop = False ' 'txtRate ' Me.txtRate.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtRate.Location = New System.Drawing.Point(120, 88) Me.txtRate.Name = "txtRate" Me.txtRate.Size = New System.Drawing.Size(208, 20) Me.txtRate.TabIndex = 11 Me.txtRate.Text = "" ' 'Label2 ' Me.Label2.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label2.Location = New System.Drawing.Point(16, 88) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(96, 24) Me.Label2.TabIndex = 10 Me.Label2.Text = "Rate:" Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtEnd ' Me.txtEnd.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtEnd.Location = New System.Drawing.Point(120, 64) Me.txtEnd.Name = "txtEnd" Me.txtEnd.Size = New System.Drawing.Size(208, 20) Me.txtEnd.TabIndex = 9 Me.txtEnd.Text = "" ' 'Label6 ' Me.Label6.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label6.Location = New System.Drawing.Point(16, 64) Me.Label6.Name = "Label6" Me.Label6.Size = New System.Drawing.Size(96, 24) Me.Label6.TabIndex = 8 Me.Label6.Text = "End Distance:" Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtStart

Page 146 of 227

Page 147: Nilambar-Shipping Management Report

' Me.txtStart.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtStart.Location = New System.Drawing.Point(120, 40) Me.txtStart.Name = "txtStart" Me.txtStart.Size = New System.Drawing.Size(208, 20) Me.txtStart.TabIndex = 7 Me.txtStart.Text = "" ' 'Label7 ' Me.Label7.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label7.Location = New System.Drawing.Point(16, 40) Me.Label7.Name = "Label7" Me.Label7.Size = New System.Drawing.Size(96, 24) Me.Label7.TabIndex = 6 Me.Label7.Text = "Start Distance:" Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtClass ' Me.txtClass.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtClass.Location = New System.Drawing.Point(120, 16) Me.txtClass.Name = "txtClass" Me.txtClass.Size = New System.Drawing.Size(208, 20) Me.txtClass.TabIndex = 1 Me.txtClass.Text = "" ' 'Label1 ' Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label1.Location = New System.Drawing.Point(16, 16) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(96, 24) Me.Label1.TabIndex = 0 Me.Label1.Text = "Class:" Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'GroupBox1 ' Me.GroupBox1.Controls.Add(Me.txtTariffID) Me.GroupBox1.Controls.Add(Me.Label3) Me.GroupBox1.Controls.Add(Me.btnSearch) Me.GroupBox1.Location = New System.Drawing.Point(8, 40) Me.GroupBox1.Name = "GroupBox1" Me.GroupBox1.Size = New System.Drawing.Size(344, 56) Me.GroupBox1.TabIndex = 63 Me.GroupBox1.TabStop = False

Page 147 of 227

Page 148: Nilambar-Shipping Management Report

' 'txtTariffID ' Me.txtTariffID.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtTariffID.Location = New System.Drawing.Point(120, 24) Me.txtTariffID.Name = "txtTariffID" Me.txtTariffID.Size = New System.Drawing.Size(144, 20) Me.txtTariffID.TabIndex = 7 Me.txtTariffID.Text = "" ' 'Label3 ' Me.Label3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label3.Location = New System.Drawing.Point(16, 24) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(96, 24) Me.Label3.TabIndex = 6 Me.Label3.Text = "Tariff ID" Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'btnSearch ' Me.btnSearch.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnSearch.Location = New System.Drawing.Point(272, 16) Me.btnSearch.Name = "btnSearch" Me.btnSearch.Size = New System.Drawing.Size(64, 32) Me.btnSearch.TabIndex = 5 Me.btnSearch.Text = "&Search" ' 'frmTariff ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(712, 270) Me.Controls.Add(Me.btnDelete) Me.Controls.Add(Me.Label5) Me.Controls.Add(Me.Label4) Me.Controls.Add(Me.DataGrid) Me.Controls.Add(Me.btnExit) Me.Controls.Add(Me.btnCancel) Me.Controls.Add(Me.btnSave) Me.Controls.Add(Me.GroupBox2) Me.Controls.Add(Me.GroupBox1) Me.Name = "frmTariff" Me.Text = "frmTariff" CType(Me.DataGrid, System.ComponentModel.ISupportInitialize).EndInit() Me.GroupBox2.ResumeLayout(False) Me.GroupBox1.ResumeLayout(False) Me.ResumeLayout(False)

Page 148 of 227

Page 149: Nilambar-Shipping Management Report

End Sub

#End Region Dim objTariff As ShippingDataLogic.BLTariffs Dim dsTariff As DataSet

Private Sub ClearFields() txtTariffID.Text = vbNullString txtClass.Text = vbNullString txtStart.Text = vbNullString txtEnd.Text = vbNullString txtRate.Text = vbNullString txtTariffID.Focus() End Sub

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click objTariff = Nothing dsTariff = Nothing Me.Dispose() End Sub

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click If btnSave.Text = "&Save" Then SaveTariff() ClearFields() objTariff = New ShippingDataLogic.BLTariffs DataGrid.DataSource = objTariff.GetTariffs Else UpdateTariff() ClearFields() objTariff = New ShippingDataLogic.BLTariffs DataGrid.DataSource = objTariff.GetTariffs End If End Sub

Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click ClearFields() objTariff = New ShippingDataLogic.BLTariffs DataGrid.DataSource = objTariff.GetTariffs End Sub

Private Sub frmTariff_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing objTariff.Dispose() objTariff = Nothing End Sub Private Sub SaveTariff() Try objTariff = New ShippingDataLogic.BLTariffs

dsTariff = objTariff.GetTariffs '**** Below line in important. Otherwise ' We will get message of Primary key violation

Page 149 of 227

Page 150: Nilambar-Shipping Management Report

dsTariff.Tables("Tariff").Rows.Clear() Dim objDataRow As DataRow = dsTariff.Tables("Tariff").NewRow objDataRow.Item("TariffNo") = txtTariffID.Text.Trim objDataRow.Item("TariffName") = txtClass.Text.Trim objDataRow.Item("RouteID") = txtClass.Text.Trim

dsTariff.Tables("Tariff").Rows.Add(objDataRow)

If Not objTariff.AddTariffs(dsTariff) Then Throw New Exception("Insert Tariff failed!!!") End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

Finally ClearFields() End Try End Sub Private Sub UpdateTariff() Try

objTariff = New ShippingDataLogic.BLTariffs dsTariff = objTariff.GetTariffs '**** Below line in important. Otherwise ' We will get message of Primary key violation dsTariff.Tables("Tariff").Rows.Clear() Dim objDataRow As DataRow = dsTariff.Tables("Tariff").NewRow objDataRow.Item("TariffNo") = txtTariffID.Text.Trim objDataRow.Item("TariffName") = txtClass.Text.Trim objDataRow.Item("RouteID") = txtClass.Text.Trim

dsTariff.Tables("Tariff").Rows.Add(objDataRow)

If Not objTariff.UpdateTariffs(dsTariff) Then Throw New Exception("Update Tariff failed!!!") End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

Finally ClearFields() End Try End Sub Private Sub DeleteTariff() Try objTariff = New ShippingDataLogic.BLTariffs

If Not objTariff.DeleteTariffs(txtTariffID.Text) Then Throw New Exception("Delete Tariff Failed!") End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try ClearFields()

End Sub

Page 150 of 227

Page 151: Nilambar-Shipping Management Report

Private Sub SearchTariff() Try objTariff = New ShippingDataLogic.BLTariffs dsTariff = objTariff.GetTariffs(txtTariffID.Text.Trim) txtClass.Text = dsTariff.Tables("Tariff").Rows(0).Item("TariffName") txtStart.Text = dsTariff.Tables("Tariff").Rows(0).Item("RouteID")

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Sub

Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click SearchTariff() End Sub

Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click Dim Ans As Long Ans = MsgBox("Do you really want to delete the Record?", MsgBoxStyle.Critical + MsgBoxStyle.YesNo, "Delete Record") If Ans = vbYes Then DeleteTariff() Else ClearFields() End If

End SubEnd Class

frmStaion.vb

Public Class frmStation Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

Public Sub New() MyBase.New()

'This call is required by the Windows Form Designer. InitializeComponent()

'Add any initialization after the InitializeComponent() call

End Sub

'Form overrides dispose to clean up the component list.

Page 151 of 227

Page 152: Nilambar-Shipping Management Report

Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub

'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer

'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Friend WithEvents btnDelete As System.Windows.Forms.Button Friend WithEvents Label5 As System.Windows.Forms.Label Friend WithEvents Label4 As System.Windows.Forms.Label Friend WithEvents DataGrid As System.Windows.Forms.DataGrid Friend WithEvents btnExit As System.Windows.Forms.Button Friend WithEvents btnCancel As System.Windows.Forms.Button Friend WithEvents btnSave As System.Windows.Forms.Button Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox Friend WithEvents Label7 As System.Windows.Forms.Label Friend WithEvents txtStationName As System.Windows.Forms.TextBox Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox Friend WithEvents txtStationID As System.Windows.Forms.TextBox Friend WithEvents Label3 As System.Windows.Forms.Label Friend WithEvents btnSearch As System.Windows.Forms.Button Friend WithEvents txtDesc As System.Windows.Forms.TextBox <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.btnDelete = New System.Windows.Forms.Button Me.Label5 = New System.Windows.Forms.Label Me.Label4 = New System.Windows.Forms.Label Me.DataGrid = New System.Windows.Forms.DataGrid Me.btnExit = New System.Windows.Forms.Button Me.btnCancel = New System.Windows.Forms.Button Me.btnSave = New System.Windows.Forms.Button Me.GroupBox2 = New System.Windows.Forms.GroupBox Me.Label7 = New System.Windows.Forms.Label Me.txtStationName = New System.Windows.Forms.TextBox Me.Label1 = New System.Windows.Forms.Label Me.GroupBox1 = New System.Windows.Forms.GroupBox Me.txtStationID = New System.Windows.Forms.TextBox Me.Label3 = New System.Windows.Forms.Label Me.btnSearch = New System.Windows.Forms.Button Me.txtDesc = New System.Windows.Forms.TextBox CType(Me.DataGrid, System.ComponentModel.ISupportInitialize).BeginInit() Me.GroupBox2.SuspendLayout() Me.GroupBox1.SuspendLayout() Me.SuspendLayout() '

Page 152 of 227

Page 153: Nilambar-Shipping Management Report

'btnDelete ' Me.btnDelete.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnDelete.Location = New System.Drawing.Point(96, 184) Me.btnDelete.Name = "btnDelete" Me.btnDelete.Size = New System.Drawing.Size(80, 32) Me.btnDelete.TabIndex = 62 Me.btnDelete.Text = "&Delete" ' 'Label5 ' Me.Label5.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label5.Location = New System.Drawing.Point(376, 8) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(288, 32) Me.Label5.TabIndex = 61 Me.Label5.Text = "Previous Records" Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'Label4 ' Me.Label4.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label4.Location = New System.Drawing.Point(24, 8) Me.Label4.Name = "Label4" Me.Label4.Size = New System.Drawing.Size(288, 32) Me.Label4.TabIndex = 60 Me.Label4.Text = "Station Information" Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'DataGrid ' Me.DataGrid.DataMember = "" Me.DataGrid.HeaderForeColor = System.Drawing.SystemColors.ControlText Me.DataGrid.Location = New System.Drawing.Point(360, 48) Me.DataGrid.Name = "DataGrid" Me.DataGrid.Size = New System.Drawing.Size(344, 176) Me.DataGrid.TabIndex = 59 ' 'btnExit ' Me.btnExit.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnExit.Location = New System.Drawing.Point(272, 184) Me.btnExit.Name = "btnExit" Me.btnExit.Size = New System.Drawing.Size(80, 32) Me.btnExit.TabIndex = 58 Me.btnExit.Text = "&E&xit"

Page 153 of 227

Page 154: Nilambar-Shipping Management Report

' 'btnCancel ' Me.btnCancel.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnCancel.Location = New System.Drawing.Point(184, 184) Me.btnCancel.Name = "btnCancel" Me.btnCancel.Size = New System.Drawing.Size(80, 32) Me.btnCancel.TabIndex = 57 Me.btnCancel.Text = "&Cancel" ' 'btnSave ' Me.btnSave.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnSave.Location = New System.Drawing.Point(8, 184) Me.btnSave.Name = "btnSave" Me.btnSave.Size = New System.Drawing.Size(80, 32) Me.btnSave.TabIndex = 56 Me.btnSave.Text = "&Save" ' 'GroupBox2 ' Me.GroupBox2.Controls.Add(Me.txtDesc) Me.GroupBox2.Controls.Add(Me.Label7) Me.GroupBox2.Controls.Add(Me.txtStationName) Me.GroupBox2.Controls.Add(Me.Label1) Me.GroupBox2.Location = New System.Drawing.Point(8, 104) Me.GroupBox2.Name = "GroupBox2" Me.GroupBox2.Size = New System.Drawing.Size(344, 72) Me.GroupBox2.TabIndex = 55 Me.GroupBox2.TabStop = False ' 'Label7 ' Me.Label7.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label7.Location = New System.Drawing.Point(16, 40) Me.Label7.Name = "Label7" Me.Label7.Size = New System.Drawing.Size(96, 24) Me.Label7.TabIndex = 6 Me.Label7.Text = "Description:" Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtStationName ' Me.txtStationName.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtStationName.Location = New System.Drawing.Point(120, 16) Me.txtStationName.Name = "txtStationName" Me.txtStationName.Size = New System.Drawing.Size(208, 20) Me.txtStationName.TabIndex = 1

Page 154 of 227

Page 155: Nilambar-Shipping Management Report

Me.txtStationName.Text = "" ' 'Label1 ' Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label1.Location = New System.Drawing.Point(16, 16) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(96, 24) Me.Label1.TabIndex = 0 Me.Label1.Text = "Station Name:" Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'GroupBox1 ' Me.GroupBox1.Controls.Add(Me.txtStationID) Me.GroupBox1.Controls.Add(Me.Label3) Me.GroupBox1.Controls.Add(Me.btnSearch) Me.GroupBox1.Location = New System.Drawing.Point(8, 40) Me.GroupBox1.Name = "GroupBox1" Me.GroupBox1.Size = New System.Drawing.Size(344, 56) Me.GroupBox1.TabIndex = 54 Me.GroupBox1.TabStop = False ' 'txtStationID ' Me.txtStationID.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtStationID.Location = New System.Drawing.Point(120, 24) Me.txtStationID.Name = "txtStationID" Me.txtStationID.Size = New System.Drawing.Size(144, 20) Me.txtStationID.TabIndex = 7 Me.txtStationID.Text = "" ' 'Label3 ' Me.Label3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label3.Location = New System.Drawing.Point(16, 24) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(96, 24) Me.Label3.TabIndex = 6 Me.Label3.Text = "Station ID" Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'btnSearch ' Me.btnSearch.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnSearch.Location = New System.Drawing.Point(272, 16) Me.btnSearch.Name = "btnSearch"

Page 155 of 227

Page 156: Nilambar-Shipping Management Report

Me.btnSearch.Size = New System.Drawing.Size(64, 32) Me.btnSearch.TabIndex = 5 Me.btnSearch.Text = "&Search" ' 'txtDesc ' Me.txtDesc.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtDesc.Location = New System.Drawing.Point(120, 40) Me.txtDesc.Name = "txtDesc" Me.txtDesc.Size = New System.Drawing.Size(208, 20) Me.txtDesc.TabIndex = 7 Me.txtDesc.Text = "" ' 'frmStation ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(712, 230) Me.Controls.Add(Me.btnDelete) Me.Controls.Add(Me.Label5) Me.Controls.Add(Me.Label4) Me.Controls.Add(Me.DataGrid) Me.Controls.Add(Me.btnExit) Me.Controls.Add(Me.btnCancel) Me.Controls.Add(Me.btnSave) Me.Controls.Add(Me.GroupBox2) Me.Controls.Add(Me.GroupBox1) Me.Name = "frmStation" Me.Text = "Station Information" CType(Me.DataGrid, System.ComponentModel.ISupportInitialize).EndInit() Me.GroupBox2.ResumeLayout(False) Me.GroupBox1.ResumeLayout(False) Me.ResumeLayout(False)

End Sub

#End Region Dim objStation As ShippingDataLogic.BLStation Dim dsStation As DataSet

Private Sub ClearFields() txtStationID.Text = vbNullString txtStationName.Text = vbNullString txtDesc.Text = vbNullString txtStationID.Focus() End Sub

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click objStation = Nothing dsStation = Nothing Me.Dispose() End Sub

Page 156 of 227

Page 157: Nilambar-Shipping Management Report

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click If btnSave.Text = "&Save" Then SaveStation() ClearFields() objStation = New ShippingDataLogic.BLStation DataGrid.DataSource = objStation.GetStation Else UpdateStation() ClearFields() objStation = New ShippingDataLogic.BLStation DataGrid.DataSource = objStation.GetStation End If End Sub

Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click ClearFields() objStation = New ShippingDataLogic.BLStation DataGrid.DataSource = objStation.GetStation End Sub

Private Sub frmStation_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing objStation.Dispose() objStation = Nothing End Sub Private Sub SaveStation() Try objStation = New ShippingDataLogic.BLStation

dsStation = objStation.GetStation '**** Below line in important. Otherwise ' We will get message of Primary key violation dsStation.Tables("Station").Rows.Clear() Dim objDataRow As DataRow = dsStation.Tables("Station").NewRow objDataRow.Item("StationNo") = txtStationID.Text.Trim objDataRow.Item("StationName") = txtStationName.Text.Trim objDataRow.Item("RouteID") = txtStationName.Text.Trim

dsStation.Tables("Station").Rows.Add(objDataRow)

If Not objStation.AddStation(dsStation) Then Throw New Exception("Insert Station failed!!!") End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

Finally ClearFields() End Try End Sub Private Sub UpdateStation() Try

Page 157 of 227

Page 158: Nilambar-Shipping Management Report

objStation = New ShippingDataLogic.BLStation dsStation = objStation.GetStation '**** Below line in important. Otherwise ' We will get message of Primary key violation dsStation.Tables("Station").Rows.Clear() Dim objDataRow As DataRow = dsStation.Tables("Station").NewRow objDataRow.Item("StationNo") = txtStationID.Text.Trim objDataRow.Item("StationName") = txtStationName.Text.Trim objDataRow.Item("RouteID") = txtStationName.Text.Trim

dsStation.Tables("Station").Rows.Add(objDataRow)

If Not objStation.UpdateStation(dsStation) Then Throw New Exception("Update Station failed!!!") End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

Finally ClearFields() End Try End Sub Private Sub DeleteStation() Try objStation = New ShippingDataLogic.BLStation

If Not objStation.DeleteStation(txtStationID.Text) Then Throw New Exception("Delete Station Failed!") End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try ClearFields()

End Sub

Private Sub SearchStation() Try objStation = New ShippingDataLogic.BLStation dsStation = objStation.GetStation(txtStationID.Text.Trim) txtStationName.Text = dsStation.Tables("Station").Rows(0).Item("StationName") txtDesc.Text = dsStation.Tables("Station").Rows(0).Item("RouteID")

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Sub

Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click SearchStation() End Sub

Page 158 of 227

Page 159: Nilambar-Shipping Management Report

Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click Dim Ans As Long Ans = MsgBox("Do you really want to delete the Record?", MsgBoxStyle.Critical + MsgBoxStyle.YesNo, "Delete Record") If Ans = vbYes Then DeleteStation() Else ClearFields() End If

End SubEnd Class

frmRoute.vb

Public Class frmRoute Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

Public Sub New() MyBase.New()

'This call is required by the Windows Form Designer. InitializeComponent()

'Add any initialization after the InitializeComponent() call

End Sub

'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub

'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer

'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Friend WithEvents btnDelete As System.Windows.Forms.Button Friend WithEvents Label5 As System.Windows.Forms.Label Friend WithEvents Label4 As System.Windows.Forms.Label Friend WithEvents DataGrid As System.Windows.Forms.DataGrid

Page 159 of 227

Page 160: Nilambar-Shipping Management Report

Friend WithEvents btnExit As System.Windows.Forms.Button Friend WithEvents btnCancel As System.Windows.Forms.Button Friend WithEvents btnSave As System.Windows.Forms.Button Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox Friend WithEvents Label7 As System.Windows.Forms.Label Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox Friend WithEvents Label3 As System.Windows.Forms.Label Friend WithEvents btnSearch As System.Windows.Forms.Button Friend WithEvents txtRouteName As System.Windows.Forms.TextBox Friend WithEvents txtRouteID As System.Windows.Forms.TextBox Friend WithEvents txtStartingPoint As System.Windows.Forms.TextBox Friend WithEvents Label2 As System.Windows.Forms.Label Friend WithEvents txtEndiingPoint As System.Windows.Forms.TextBox Friend WithEvents txtDistance As System.Windows.Forms.TextBox Friend WithEvents Label6 As System.Windows.Forms.Label <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.btnDelete = New System.Windows.Forms.Button Me.Label5 = New System.Windows.Forms.Label Me.Label4 = New System.Windows.Forms.Label Me.DataGrid = New System.Windows.Forms.DataGrid Me.btnExit = New System.Windows.Forms.Button Me.btnCancel = New System.Windows.Forms.Button Me.btnSave = New System.Windows.Forms.Button Me.GroupBox2 = New System.Windows.Forms.GroupBox Me.Label7 = New System.Windows.Forms.Label Me.txtRouteName = New System.Windows.Forms.TextBox Me.Label1 = New System.Windows.Forms.Label Me.GroupBox1 = New System.Windows.Forms.GroupBox Me.txtRouteID = New System.Windows.Forms.TextBox Me.Label3 = New System.Windows.Forms.Label Me.btnSearch = New System.Windows.Forms.Button Me.txtStartingPoint = New System.Windows.Forms.TextBox Me.Label2 = New System.Windows.Forms.Label Me.txtEndiingPoint = New System.Windows.Forms.TextBox Me.txtDistance = New System.Windows.Forms.TextBox Me.Label6 = New System.Windows.Forms.Label CType(Me.DataGrid, System.ComponentModel.ISupportInitialize).BeginInit() Me.GroupBox2.SuspendLayout() Me.GroupBox1.SuspendLayout() Me.SuspendLayout() ' 'btnDelete ' Me.btnDelete.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnDelete.Location = New System.Drawing.Point(96, 232) Me.btnDelete.Name = "btnDelete" Me.btnDelete.Size = New System.Drawing.Size(80, 32) Me.btnDelete.TabIndex = 62 Me.btnDelete.Text = "&Delete" ' 'Label5 '

Page 160 of 227

Page 161: Nilambar-Shipping Management Report

Me.Label5.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label5.Location = New System.Drawing.Point(376, 8) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(288, 32) Me.Label5.TabIndex = 61 Me.Label5.Text = "Previous Records" Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'Label4 ' Me.Label4.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label4.Location = New System.Drawing.Point(24, 8) Me.Label4.Name = "Label4" Me.Label4.Size = New System.Drawing.Size(288, 32) Me.Label4.TabIndex = 60 Me.Label4.Text = "Route Information" Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'DataGrid ' Me.DataGrid.DataMember = "" Me.DataGrid.HeaderForeColor = System.Drawing.SystemColors.ControlText Me.DataGrid.Location = New System.Drawing.Point(360, 48) Me.DataGrid.Name = "DataGrid" Me.DataGrid.Size = New System.Drawing.Size(344, 216) Me.DataGrid.TabIndex = 59 ' 'btnExit ' Me.btnExit.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnExit.Location = New System.Drawing.Point(272, 232) Me.btnExit.Name = "btnExit" Me.btnExit.Size = New System.Drawing.Size(80, 32) Me.btnExit.TabIndex = 58 Me.btnExit.Text = "&E&xit" ' 'btnCancel ' Me.btnCancel.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnCancel.Location = New System.Drawing.Point(184, 232) Me.btnCancel.Name = "btnCancel" Me.btnCancel.Size = New System.Drawing.Size(80, 32) Me.btnCancel.TabIndex = 57 Me.btnCancel.Text = "&Cancel" ' 'btnSave

Page 161 of 227

Page 162: Nilambar-Shipping Management Report

' Me.btnSave.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnSave.Location = New System.Drawing.Point(8, 232) Me.btnSave.Name = "btnSave" Me.btnSave.Size = New System.Drawing.Size(80, 32) Me.btnSave.TabIndex = 56 Me.btnSave.Text = "&Save" ' 'GroupBox2 ' Me.GroupBox2.Controls.Add(Me.txtDistance) Me.GroupBox2.Controls.Add(Me.Label6) Me.GroupBox2.Controls.Add(Me.txtEndiingPoint) Me.GroupBox2.Controls.Add(Me.txtStartingPoint) Me.GroupBox2.Controls.Add(Me.Label2) Me.GroupBox2.Controls.Add(Me.Label7) Me.GroupBox2.Controls.Add(Me.txtRouteName) Me.GroupBox2.Controls.Add(Me.Label1) Me.GroupBox2.Location = New System.Drawing.Point(8, 104) Me.GroupBox2.Name = "GroupBox2" Me.GroupBox2.Size = New System.Drawing.Size(344, 120) Me.GroupBox2.TabIndex = 55 Me.GroupBox2.TabStop = False ' 'Label7 ' Me.Label7.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label7.Location = New System.Drawing.Point(16, 40) Me.Label7.Name = "Label7" Me.Label7.Size = New System.Drawing.Size(96, 24) Me.Label7.TabIndex = 6 Me.Label7.Text = "Starting Point:" Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtRouteName ' Me.txtRouteName.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtRouteName.Location = New System.Drawing.Point(120, 16) Me.txtRouteName.Name = "txtRouteName" Me.txtRouteName.Size = New System.Drawing.Size(208, 20) Me.txtRouteName.TabIndex = 1 Me.txtRouteName.Text = "" ' 'Label1 ' Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label1.Location = New System.Drawing.Point(16, 16) Me.Label1.Name = "Label1"

Page 162 of 227

Page 163: Nilambar-Shipping Management Report

Me.Label1.Size = New System.Drawing.Size(96, 24) Me.Label1.TabIndex = 0 Me.Label1.Text = "Route Name:" Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'GroupBox1 ' Me.GroupBox1.Controls.Add(Me.txtRouteID) Me.GroupBox1.Controls.Add(Me.Label3) Me.GroupBox1.Controls.Add(Me.btnSearch) Me.GroupBox1.Location = New System.Drawing.Point(8, 40) Me.GroupBox1.Name = "GroupBox1" Me.GroupBox1.Size = New System.Drawing.Size(344, 56) Me.GroupBox1.TabIndex = 54 Me.GroupBox1.TabStop = False ' 'txtRouteID ' Me.txtRouteID.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtRouteID.Location = New System.Drawing.Point(120, 24) Me.txtRouteID.Name = "txtRouteID" Me.txtRouteID.Size = New System.Drawing.Size(144, 20) Me.txtRouteID.TabIndex = 7 Me.txtRouteID.Text = "" ' 'Label3 ' Me.Label3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label3.Location = New System.Drawing.Point(16, 24) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(96, 24) Me.Label3.TabIndex = 6 Me.Label3.Text = "Route ID:" Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'btnSearch ' Me.btnSearch.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnSearch.Location = New System.Drawing.Point(272, 16) Me.btnSearch.Name = "btnSearch" Me.btnSearch.Size = New System.Drawing.Size(64, 32) Me.btnSearch.TabIndex = 5 Me.btnSearch.Text = "&Search" ' 'txtStartingPoint ' Me.txtStartingPoint.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))

Page 163 of 227

Page 164: Nilambar-Shipping Management Report

Me.txtStartingPoint.Location = New System.Drawing.Point(120, 40) Me.txtStartingPoint.Name = "txtStartingPoint" Me.txtStartingPoint.Size = New System.Drawing.Size(208, 20) Me.txtStartingPoint.TabIndex = 8 Me.txtStartingPoint.Text = "" ' 'Label2 ' Me.Label2.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label2.Location = New System.Drawing.Point(16, 64) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(96, 24) Me.Label2.TabIndex = 7 Me.Label2.Text = "Ending Point:" Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtEndiingPoint ' Me.txtEndiingPoint.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtEndiingPoint.Location = New System.Drawing.Point(120, 64) Me.txtEndiingPoint.Name = "txtEndiingPoint" Me.txtEndiingPoint.Size = New System.Drawing.Size(208, 20) Me.txtEndiingPoint.TabIndex = 10 Me.txtEndiingPoint.Text = "" ' 'txtDistance ' Me.txtDistance.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtDistance.Location = New System.Drawing.Point(120, 88) Me.txtDistance.Name = "txtDistance" Me.txtDistance.Size = New System.Drawing.Size(208, 20) Me.txtDistance.TabIndex = 12 Me.txtDistance.Text = "" ' 'Label6 ' Me.Label6.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label6.Location = New System.Drawing.Point(16, 88) Me.Label6.Name = "Label6" Me.Label6.Size = New System.Drawing.Size(96, 24) Me.Label6.TabIndex = 11 Me.Label6.Text = "Total Distance" Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'frmRoute ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)

Page 164 of 227

Page 165: Nilambar-Shipping Management Report

Me.ClientSize = New System.Drawing.Size(712, 270) Me.Controls.Add(Me.btnDelete) Me.Controls.Add(Me.Label5) Me.Controls.Add(Me.Label4) Me.Controls.Add(Me.DataGrid) Me.Controls.Add(Me.btnExit) Me.Controls.Add(Me.btnCancel) Me.Controls.Add(Me.btnSave) Me.Controls.Add(Me.GroupBox2) Me.Controls.Add(Me.GroupBox1) Me.Name = "frmRoute" Me.Text = "Route Information" CType(Me.DataGrid, System.ComponentModel.ISupportInitialize).EndInit() Me.GroupBox2.ResumeLayout(False) Me.GroupBox1.ResumeLayout(False) Me.ResumeLayout(False)

End Sub

#End Region Dim objRoute As ShippingDataLogic.BLRouteDetails Dim dsRoute As DataSet

Private Sub ClearFields() txtRouteID.Text = vbNullString txtRouteName.Text = vbNullString txtDistance.Text = vbNullString txtRouteID.Focus() End Sub

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click objRoute = Nothing dsRoute = Nothing Me.Dispose() End Sub

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click If btnSave.Text = "&Save" Then SaveRoute() ClearFields() objRoute = New ShippingDataLogic.BLRouteDetails DataGrid.DataSource = objRoute.GetRouteDetails Else UpdateRoute() ClearFields() objRoute = New ShippingDataLogic.BLRouteDetails DataGrid.DataSource = objRoute.GetRouteDetails End If End Sub

Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click ClearFields() objRoute = New ShippingDataLogic.BLRouteDetails

Page 165 of 227

Page 166: Nilambar-Shipping Management Report

DataGrid.DataSource = objRoute.GetRouteDetails End Sub

Private Sub frmRoute_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing objRoute.Dispose() objRoute = Nothing End Sub Private Sub SaveRoute() Try objRoute = New ShippingDataLogic.BLRouteDetails

dsRoute = objRoute.GetRouteDetails '**** Below line in important. Otherwise ' We will get message of Primary key violation dsRoute.Tables("Route").Rows.Clear() Dim objDataRow As DataRow = dsRoute.Tables("Route").NewRow objDataRow.Item("RouteNo") = txtRouteID.Text.Trim objDataRow.Item("RouteName") = txtRouteName.Text.Trim objDataRow.Item("RouteID") = txtRouteName.Text.Trim

dsRoute.Tables("Route").Rows.Add(objDataRow)

If Not objRoute.AddRouteDetails(dsRoute) Then Throw New Exception("Insert Route failed!!!") End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

Finally ClearFields() End Try End Sub Private Sub UpdateRoute() Try

objRoute = New ShippingDataLogic.BLRouteDetails dsRoute = objRoute.GetRouteDetails '**** Below line in important. Otherwise ' We will get message of Primary key violation dsRoute.Tables("Route").Rows.Clear() Dim objDataRow As DataRow = dsRoute.Tables("Route").NewRow objDataRow.Item("RouteNo") = txtRouteID.Text.Trim objDataRow.Item("RouteName") = txtRouteName.Text.Trim objDataRow.Item("RouteID") = txtRouteName.Text.Trim

dsRoute.Tables("Route").Rows.Add(objDataRow)

If Not objRoute.UpdateRouteDetails(dsRoute) Then Throw New Exception("Update Route failed!!!") End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

Finally ClearFields()

Page 166 of 227

Page 167: Nilambar-Shipping Management Report

End Try End Sub Private Sub DeleteRoute() Try objRoute = New ShippingDataLogic.BLRouteDetails

If Not objRoute.DeleteRouteDetails(txtRouteID.Text) Then Throw New Exception("Delete Route Failed!") End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try ClearFields()

End Sub

Private Sub SearchRoute() Try objRoute = New ShippingDataLogic.BLRouteDetails dsRoute = objRoute.GetRouteDetails(txtRouteID.Text.Trim) txtRouteName.Text = dsRoute.Tables("Route").Rows(0).Item("RouteName") txtDistance.Text = dsRoute.Tables("Route").Rows(0).Item("RouteID")

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Sub

Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click SearchRoute() End Sub

Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click Dim Ans As Long Ans = MsgBox("Do you really want to delete the Record?", MsgBoxStyle.Critical + MsgBoxStyle.YesNo, "Delete Record") If Ans = vbYes Then DeleteRoute() Else ClearFields() End If

End SubEnd Class

frmConsignment.vb

Public Class frmConsignment

Page 167 of 227

Page 168: Nilambar-Shipping Management Report

Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

Public Sub New() MyBase.New()

'This call is required by the Windows Form Designer. InitializeComponent()

'Add any initialization after the InitializeComponent() call

End Sub

'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub

'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer

'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Friend WithEvents btnDelete As System.Windows.Forms.Button Friend WithEvents Label5 As System.Windows.Forms.Label Friend WithEvents Label4 As System.Windows.Forms.Label Friend WithEvents DataGrid As System.Windows.Forms.DataGrid Friend WithEvents btnExit As System.Windows.Forms.Button Friend WithEvents btnCancel As System.Windows.Forms.Button Friend WithEvents btnSave As System.Windows.Forms.Button Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox Friend WithEvents Label8 As System.Windows.Forms.Label Friend WithEvents Label7 As System.Windows.Forms.Label Friend WithEvents Label2 As System.Windows.Forms.Label Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox Friend WithEvents Label3 As System.Windows.Forms.Label Friend WithEvents btnSearch As System.Windows.Forms.Button Friend WithEvents Label6 As System.Windows.Forms.Label Friend WithEvents Label11 As System.Windows.Forms.Label Friend WithEvents Label12 As System.Windows.Forms.Label Friend WithEvents GroupBox3 As System.Windows.Forms.GroupBox Friend WithEvents Label19 As System.Windows.Forms.Label Friend WithEvents Label18 As System.Windows.Forms.Label Friend WithEvents Label13 As System.Windows.Forms.Label Friend WithEvents Label14 As System.Windows.Forms.Label Friend WithEvents Label15 As System.Windows.Forms.Label Friend WithEvents Label16 As System.Windows.Forms.Label

Page 168 of 227

Page 169: Nilambar-Shipping Management Report

Friend WithEvents Label17 As System.Windows.Forms.Label Friend WithEvents Label20 As System.Windows.Forms.Label Friend WithEvents Label21 As System.Windows.Forms.Label Friend WithEvents Label22 As System.Windows.Forms.Label Friend WithEvents Label23 As System.Windows.Forms.Label Friend WithEvents Label24 As System.Windows.Forms.Label Friend WithEvents Label25 As System.Windows.Forms.Label Friend WithEvents txtAmount As System.Windows.Forms.TextBox Friend WithEvents txtValue As System.Windows.Forms.TextBox Friend WithEvents txtQuantity As System.Windows.Forms.TextBox Friend WithEvents txtConsignmentID As System.Windows.Forms.TextBox Friend WithEvents txtDesc As System.Windows.Forms.TextBox Friend WithEvents txtWeight As System.Windows.Forms.TextBox Friend WithEvents txtHeight As System.Windows.Forms.TextBox Friend WithEvents txtBreadth As System.Windows.Forms.TextBox Friend WithEvents txtLength As System.Windows.Forms.TextBox Friend WithEvents DOC As System.Windows.Forms.DateTimePicker Friend WithEvents DOA As System.Windows.Forms.DateTimePicker Friend WithEvents DOD As System.Windows.Forms.DateTimePicker Friend WithEvents TOA As System.Windows.Forms.DateTimePicker Friend WithEvents cmbConsignorID As System.Windows.Forms.ComboBox Friend WithEvents cSMStationID As System.Windows.Forms.ComboBox Friend WithEvents comDestination As System.Windows.Forms.ComboBox <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.btnDelete = New System.Windows.Forms.Button Me.Label5 = New System.Windows.Forms.Label Me.Label4 = New System.Windows.Forms.Label Me.DataGrid = New System.Windows.Forms.DataGrid Me.btnExit = New System.Windows.Forms.Button Me.btnCancel = New System.Windows.Forms.Button Me.btnSave = New System.Windows.Forms.Button Me.GroupBox2 = New System.Windows.Forms.GroupBox Me.txtAmount = New System.Windows.Forms.TextBox Me.Label8 = New System.Windows.Forms.Label Me.Label7 = New System.Windows.Forms.Label Me.txtValue = New System.Windows.Forms.TextBox Me.Label2 = New System.Windows.Forms.Label Me.txtQuantity = New System.Windows.Forms.TextBox Me.Label1 = New System.Windows.Forms.Label Me.GroupBox1 = New System.Windows.Forms.GroupBox Me.txtConsignmentID = New System.Windows.Forms.TextBox Me.Label3 = New System.Windows.Forms.Label Me.btnSearch = New System.Windows.Forms.Button Me.Label6 = New System.Windows.Forms.Label Me.Label11 = New System.Windows.Forms.Label Me.txtDesc = New System.Windows.Forms.TextBox Me.Label12 = New System.Windows.Forms.Label Me.GroupBox3 = New System.Windows.Forms.GroupBox Me.Label19 = New System.Windows.Forms.Label Me.txtWeight = New System.Windows.Forms.TextBox Me.Label18 = New System.Windows.Forms.Label Me.txtHeight = New System.Windows.Forms.TextBox Me.Label13 = New System.Windows.Forms.Label Me.txtBreadth = New System.Windows.Forms.TextBox Me.Label14 = New System.Windows.Forms.Label Me.Label15 = New System.Windows.Forms.Label

Page 169 of 227

Page 170: Nilambar-Shipping Management Report

Me.txtLength = New System.Windows.Forms.TextBox Me.Label16 = New System.Windows.Forms.Label Me.Label17 = New System.Windows.Forms.Label Me.DOC = New System.Windows.Forms.DateTimePicker Me.Label20 = New System.Windows.Forms.Label Me.Label21 = New System.Windows.Forms.Label Me.DOA = New System.Windows.Forms.DateTimePicker Me.Label22 = New System.Windows.Forms.Label Me.DOD = New System.Windows.Forms.DateTimePicker Me.Label23 = New System.Windows.Forms.Label Me.Label24 = New System.Windows.Forms.Label Me.TOA = New System.Windows.Forms.DateTimePicker Me.Label25 = New System.Windows.Forms.Label Me.cmbConsignorID = New System.Windows.Forms.ComboBox Me.cSMStationID = New System.Windows.Forms.ComboBox Me.comDestination = New System.Windows.Forms.ComboBox CType(Me.DataGrid, System.ComponentModel.ISupportInitialize).BeginInit() Me.GroupBox2.SuspendLayout() Me.GroupBox1.SuspendLayout() Me.GroupBox3.SuspendLayout() Me.SuspendLayout() ' 'btnDelete ' Me.btnDelete.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnDelete.Location = New System.Drawing.Point(96, 272) Me.btnDelete.Name = "btnDelete" Me.btnDelete.Size = New System.Drawing.Size(80, 32) Me.btnDelete.TabIndex = 53 Me.btnDelete.Text = "&Delete" ' 'Label5 ' Me.Label5.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label5.Location = New System.Drawing.Point(40, 312) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(288, 32) Me.Label5.TabIndex = 52 Me.Label5.Text = "Previous Records" Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'Label4 ' Me.Label4.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label4.Location = New System.Drawing.Point(40, 8) Me.Label4.Name = "Label4" Me.Label4.Size = New System.Drawing.Size(288, 24) Me.Label4.TabIndex = 51 Me.Label4.Text = "Consignment"

Page 170 of 227

Page 171: Nilambar-Shipping Management Report

Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'DataGrid ' Me.DataGrid.DataMember = "" Me.DataGrid.HeaderForeColor = System.Drawing.SystemColors.ControlText Me.DataGrid.Location = New System.Drawing.Point(8, 352) Me.DataGrid.Name = "DataGrid" Me.DataGrid.Size = New System.Drawing.Size(712, 152) Me.DataGrid.TabIndex = 50 ' 'btnExit ' Me.btnExit.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnExit.Location = New System.Drawing.Point(272, 272) Me.btnExit.Name = "btnExit" Me.btnExit.Size = New System.Drawing.Size(80, 32) Me.btnExit.TabIndex = 49 Me.btnExit.Text = "&E&xit" ' 'btnCancel ' Me.btnCancel.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnCancel.Location = New System.Drawing.Point(184, 272) Me.btnCancel.Name = "btnCancel" Me.btnCancel.Size = New System.Drawing.Size(80, 32) Me.btnCancel.TabIndex = 48 Me.btnCancel.Text = "&Cancel" ' 'btnSave ' Me.btnSave.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnSave.Location = New System.Drawing.Point(8, 272) Me.btnSave.Name = "btnSave" Me.btnSave.Size = New System.Drawing.Size(80, 32) Me.btnSave.TabIndex = 47 Me.btnSave.Text = "&Save" ' 'GroupBox2 ' Me.GroupBox2.Controls.Add(Me.Label20) Me.GroupBox2.Controls.Add(Me.DOC) Me.GroupBox2.Controls.Add(Me.txtAmount) Me.GroupBox2.Controls.Add(Me.Label8) Me.GroupBox2.Controls.Add(Me.Label7) Me.GroupBox2.Controls.Add(Me.txtValue) Me.GroupBox2.Controls.Add(Me.Label2) Me.GroupBox2.Controls.Add(Me.txtQuantity) Me.GroupBox2.Controls.Add(Me.Label1)

Page 171 of 227

Page 172: Nilambar-Shipping Management Report

Me.GroupBox2.Location = New System.Drawing.Point(8, 136) Me.GroupBox2.Name = "GroupBox2" Me.GroupBox2.Size = New System.Drawing.Size(344, 120) Me.GroupBox2.TabIndex = 46 Me.GroupBox2.TabStop = False ' 'txtAmount ' Me.txtAmount.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtAmount.Location = New System.Drawing.Point(120, 88) Me.txtAmount.Name = "txtAmount" Me.txtAmount.Size = New System.Drawing.Size(208, 20) Me.txtAmount.TabIndex = 9 Me.txtAmount.Text = "" ' 'Label8 ' Me.Label8.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label8.Location = New System.Drawing.Point(16, 88) Me.Label8.Name = "Label8" Me.Label8.Size = New System.Drawing.Size(96, 24) Me.Label8.TabIndex = 8 Me.Label8.Text = "Bill Amount:" Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label7 ' Me.Label7.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label7.Location = New System.Drawing.Point(16, 40) Me.Label7.Name = "Label7" Me.Label7.Size = New System.Drawing.Size(96, 24) Me.Label7.TabIndex = 6 Me.Label7.Text = "Consignment Date:" Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtValue ' Me.txtValue.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtValue.Location = New System.Drawing.Point(120, 64) Me.txtValue.Name = "txtValue" Me.txtValue.Size = New System.Drawing.Size(208, 20) Me.txtValue.TabIndex = 3 Me.txtValue.Text = "" ' 'Label2 '

Page 172 of 227

Page 173: Nilambar-Shipping Management Report

Me.Label2.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label2.Location = New System.Drawing.Point(16, 64) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(96, 24) Me.Label2.TabIndex = 2 Me.Label2.Text = "Item Value:" Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtQuantity ' Me.txtQuantity.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtQuantity.Location = New System.Drawing.Point(120, 16) Me.txtQuantity.Name = "txtQuantity" Me.txtQuantity.Size = New System.Drawing.Size(208, 20) Me.txtQuantity.TabIndex = 1 Me.txtQuantity.Text = "" ' 'Label1 ' Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label1.Location = New System.Drawing.Point(16, 16) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(96, 24) Me.Label1.TabIndex = 0 Me.Label1.Text = "No. Of Items:" Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'GroupBox1 ' Me.GroupBox1.Controls.Add(Me.cSMStationID) Me.GroupBox1.Controls.Add(Me.cmbConsignorID) Me.GroupBox1.Controls.Add(Me.Label11) Me.GroupBox1.Controls.Add(Me.Label6) Me.GroupBox1.Controls.Add(Me.txtConsignmentID) Me.GroupBox1.Controls.Add(Me.Label3) Me.GroupBox1.Controls.Add(Me.btnSearch) Me.GroupBox1.Location = New System.Drawing.Point(8, 40) Me.GroupBox1.Name = "GroupBox1" Me.GroupBox1.Size = New System.Drawing.Size(344, 96) Me.GroupBox1.TabIndex = 45 Me.GroupBox1.TabStop = False ' 'txtConsignmentID ' Me.txtConsignmentID.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtConsignmentID.Location = New System.Drawing.Point(120, 16) Me.txtConsignmentID.Name = "txtConsignmentID"

Page 173 of 227

Page 174: Nilambar-Shipping Management Report

Me.txtConsignmentID.Size = New System.Drawing.Size(144, 20) Me.txtConsignmentID.TabIndex = 7 Me.txtConsignmentID.Text = "" ' 'Label3 ' Me.Label3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label3.Location = New System.Drawing.Point(24, 16) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(96, 24) Me.Label3.TabIndex = 6 Me.Label3.Text = "Consignment ID:" Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'btnSearch ' Me.btnSearch.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.btnSearch.Location = New System.Drawing.Point(272, 16) Me.btnSearch.Name = "btnSearch" Me.btnSearch.Size = New System.Drawing.Size(64, 32) Me.btnSearch.TabIndex = 5 Me.btnSearch.Text = "&Search" ' 'Label6 ' Me.Label6.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label6.Location = New System.Drawing.Point(24, 40) Me.Label6.Name = "Label6" Me.Label6.Size = New System.Drawing.Size(96, 24) Me.Label6.TabIndex = 8 Me.Label6.Text = "Consignor ID:" Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label11 ' Me.Label11.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label11.Location = New System.Drawing.Point(24, 64) Me.Label11.Name = "Label11" Me.Label11.Size = New System.Drawing.Size(96, 16) Me.Label11.TabIndex = 10 Me.Label11.Text = "Station ID:" Me.Label11.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtDesc '

Page 174 of 227

Page 175: Nilambar-Shipping Management Report

Me.txtDesc.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtDesc.Location = New System.Drawing.Point(120, 16) Me.txtDesc.Multiline = True Me.txtDesc.Name = "txtDesc" Me.txtDesc.Size = New System.Drawing.Size(208, 80) Me.txtDesc.TabIndex = 13 Me.txtDesc.Text = "" ' 'Label12 ' Me.Label12.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label12.Location = New System.Drawing.Point(16, 16) Me.Label12.Name = "Label12" Me.Label12.Size = New System.Drawing.Size(96, 24) Me.Label12.TabIndex = 12 Me.Label12.Text = "Description:" Me.Label12.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'GroupBox3 ' Me.GroupBox3.Controls.Add(Me.comDestination) Me.GroupBox3.Controls.Add(Me.Label24) Me.GroupBox3.Controls.Add(Me.TOA) Me.GroupBox3.Controls.Add(Me.Label22) Me.GroupBox3.Controls.Add(Me.DOD) Me.GroupBox3.Controls.Add(Me.Label21) Me.GroupBox3.Controls.Add(Me.DOA) Me.GroupBox3.Controls.Add(Me.Label19) Me.GroupBox3.Controls.Add(Me.txtWeight) Me.GroupBox3.Controls.Add(Me.Label18) Me.GroupBox3.Controls.Add(Me.txtDesc) Me.GroupBox3.Controls.Add(Me.Label12) Me.GroupBox3.Controls.Add(Me.txtHeight) Me.GroupBox3.Controls.Add(Me.Label13) Me.GroupBox3.Controls.Add(Me.txtBreadth) Me.GroupBox3.Controls.Add(Me.Label14) Me.GroupBox3.Controls.Add(Me.Label15) Me.GroupBox3.Controls.Add(Me.txtLength) Me.GroupBox3.Controls.Add(Me.Label16) Me.GroupBox3.Controls.Add(Me.Label17) Me.GroupBox3.Controls.Add(Me.Label23) Me.GroupBox3.Location = New System.Drawing.Point(368, 40) Me.GroupBox3.Name = "GroupBox3" Me.GroupBox3.Size = New System.Drawing.Size(344, 304) Me.GroupBox3.TabIndex = 54 Me.GroupBox3.TabStop = False ' 'Label19 ' Me.Label19.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))

Page 175 of 227

Page 176: Nilambar-Shipping Management Report

Me.Label19.Location = New System.Drawing.Point(16, 248) Me.Label19.Name = "Label19" Me.Label19.Size = New System.Drawing.Size(96, 24) Me.Label19.TabIndex = 16 Me.Label19.Text = "Destination:" Me.Label19.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtWeight ' Me.txtWeight.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtWeight.Location = New System.Drawing.Point(120, 224) Me.txtWeight.Name = "txtWeight" Me.txtWeight.Size = New System.Drawing.Size(208, 20) Me.txtWeight.TabIndex = 15 Me.txtWeight.Text = "" ' 'Label18 ' Me.Label18.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label18.Location = New System.Drawing.Point(16, 224) Me.Label18.Name = "Label18" Me.Label18.Size = New System.Drawing.Size(96, 24) Me.Label18.TabIndex = 14 Me.Label18.Text = "Weight:" Me.Label18.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtHeight ' Me.txtHeight.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtHeight.Location = New System.Drawing.Point(120, 200) Me.txtHeight.Name = "txtHeight" Me.txtHeight.Size = New System.Drawing.Size(208, 20) Me.txtHeight.TabIndex = 11 Me.txtHeight.Text = "" ' 'Label13 ' Me.Label13.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label13.Location = New System.Drawing.Point(16, 200) Me.Label13.Name = "Label13" Me.Label13.Size = New System.Drawing.Size(96, 24) Me.Label13.TabIndex = 10 Me.Label13.Text = "Height:" Me.Label13.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtBreadth

Page 176 of 227

Page 177: Nilambar-Shipping Management Report

' Me.txtBreadth.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtBreadth.Location = New System.Drawing.Point(120, 176) Me.txtBreadth.Name = "txtBreadth" Me.txtBreadth.Size = New System.Drawing.Size(208, 20) Me.txtBreadth.TabIndex = 9 Me.txtBreadth.Text = "" ' 'Label14 ' Me.Label14.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label14.Location = New System.Drawing.Point(16, 176) Me.Label14.Name = "Label14" Me.Label14.Size = New System.Drawing.Size(96, 24) Me.Label14.TabIndex = 8 Me.Label14.Text = "Breadth:" Me.Label14.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label15 ' Me.Label15.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label15.Location = New System.Drawing.Point(16, 128) Me.Label15.Name = "Label15" Me.Label15.Size = New System.Drawing.Size(96, 24) Me.Label15.TabIndex = 6 Me.Label15.Text = "Arrival Time:" Me.Label15.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'txtLength ' Me.txtLength.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtLength.Location = New System.Drawing.Point(120, 152) Me.txtLength.Name = "txtLength" Me.txtLength.Size = New System.Drawing.Size(208, 20) Me.txtLength.TabIndex = 3 Me.txtLength.Text = "" ' 'Label16 ' Me.Label16.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label16.Location = New System.Drawing.Point(16, 152) Me.Label16.Name = "Label16" Me.Label16.Size = New System.Drawing.Size(96, 24) Me.Label16.TabIndex = 2 Me.Label16.Text = "Length:"

Page 177 of 227

Page 178: Nilambar-Shipping Management Report

Me.Label16.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label17 ' Me.Label17.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label17.Location = New System.Drawing.Point(16, 104) Me.Label17.Name = "Label17" Me.Label17.Size = New System.Drawing.Size(96, 24) Me.Label17.TabIndex = 0 Me.Label17.Text = "Arrival Date:" Me.Label17.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'DOC ' Me.DOC.CustomFormat = "dd/MM/yyyy" Me.DOC.Format = System.Windows.Forms.DateTimePickerFormat.Custom Me.DOC.Location = New System.Drawing.Point(120, 40) Me.DOC.Name = "DOC" Me.DOC.Size = New System.Drawing.Size(112, 20) Me.DOC.TabIndex = 14 ' 'Label20 ' Me.Label20.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label20.Location = New System.Drawing.Point(240, 40) Me.Label20.Name = "Label20" Me.Label20.Size = New System.Drawing.Size(88, 24) Me.Label20.TabIndex = 15 Me.Label20.Text = "DD/MM/YYYY" Me.Label20.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label21 ' Me.Label21.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label21.Location = New System.Drawing.Point(240, 104) Me.Label21.Name = "Label21" Me.Label21.Size = New System.Drawing.Size(88, 24) Me.Label21.TabIndex = 19 Me.Label21.Text = "DD/MM/YYYY" Me.Label21.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'DOA ' Me.DOA.CustomFormat = "dd/MM/yyyy" Me.DOA.Format = System.Windows.Forms.DateTimePickerFormat.Custom Me.DOA.Location = New System.Drawing.Point(120, 104) Me.DOA.Name = "DOA"

Page 178 of 227

Page 179: Nilambar-Shipping Management Report

Me.DOA.Size = New System.Drawing.Size(112, 20) Me.DOA.TabIndex = 18 ' 'Label22 ' Me.Label22.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label22.Location = New System.Drawing.Point(240, 272) Me.Label22.Name = "Label22" Me.Label22.Size = New System.Drawing.Size(88, 24) Me.Label22.TabIndex = 21 Me.Label22.Text = "DD/MM/YYYY" Me.Label22.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'DOD ' Me.DOD.CustomFormat = "dd/MM/yyyy" Me.DOD.Format = System.Windows.Forms.DateTimePickerFormat.Custom Me.DOD.Location = New System.Drawing.Point(120, 272) Me.DOD.Name = "DOD" Me.DOD.Size = New System.Drawing.Size(112, 20) Me.DOD.TabIndex = 20 ' 'Label23 ' Me.Label23.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label23.Location = New System.Drawing.Point(16, 272) Me.Label23.Name = "Label23" Me.Label23.Size = New System.Drawing.Size(96, 24) Me.Label23.TabIndex = 16 Me.Label23.Text = "Delivery Date:" Me.Label23.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'Label24 ' Me.Label24.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label24.Location = New System.Drawing.Point(240, 128) Me.Label24.Name = "Label24" Me.Label24.Size = New System.Drawing.Size(88, 24) Me.Label24.TabIndex = 23 Me.Label24.Text = "HH:MM:SS" Me.Label24.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'TOA ' Me.TOA.CustomFormat = "" Me.TOA.Format = System.Windows.Forms.DateTimePickerFormat.Time Me.TOA.Location = New System.Drawing.Point(120, 128) Me.TOA.Name = "TOA"

Page 179 of 227

Page 180: Nilambar-Shipping Management Report

Me.TOA.Size = New System.Drawing.Size(112, 20) Me.TOA.TabIndex = 22 ' 'Label25 ' Me.Label25.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.Label25.Location = New System.Drawing.Point(392, 8) Me.Label25.Name = "Label25" Me.Label25.Size = New System.Drawing.Size(288, 24) Me.Label25.TabIndex = 55 Me.Label25.Text = "Consignment Details" Me.Label25.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'cmbConsignorID ' Me.cmbConsignorID.Location = New System.Drawing.Point(120, 40) Me.cmbConsignorID.Name = "cmbConsignorID" Me.cmbConsignorID.Size = New System.Drawing.Size(144, 21) Me.cmbConsignorID.TabIndex = 12 ' 'cSMStationID ' Me.cSMStationID.Location = New System.Drawing.Point(120, 64) Me.cSMStationID.Name = "cSMStationID" Me.cSMStationID.Size = New System.Drawing.Size(144, 21) Me.cSMStationID.TabIndex = 13 ' 'comDestination ' Me.comDestination.Location = New System.Drawing.Point(120, 248) Me.comDestination.Name = "comDestination" Me.comDestination.Size = New System.Drawing.Size(208, 21) Me.comDestination.TabIndex = 24 ' 'frmConsignment ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(728, 510) Me.Controls.Add(Me.Label25) Me.Controls.Add(Me.GroupBox3) Me.Controls.Add(Me.btnDelete) Me.Controls.Add(Me.Label5) Me.Controls.Add(Me.Label4) Me.Controls.Add(Me.DataGrid) Me.Controls.Add(Me.btnExit) Me.Controls.Add(Me.btnCancel) Me.Controls.Add(Me.btnSave) Me.Controls.Add(Me.GroupBox2) Me.Controls.Add(Me.GroupBox1) Me.Name = "frmConsignment" Me.Text = "Consignment Details" CType(Me.DataGrid, System.ComponentModel.ISupportInitialize).EndInit() Me.GroupBox2.ResumeLayout(False)

Page 180 of 227

Page 181: Nilambar-Shipping Management Report

Me.GroupBox1.ResumeLayout(False) Me.GroupBox3.ResumeLayout(False) Me.ResumeLayout(False)

End Sub

#End Region

Dim objConsignment As ShippingDataLogic.BLConsignmentDetails Dim dsConsignment As DataSet

Private Sub ClearFields() txtConsignmentID.Text = vbNullString txtValue.Text = vbNullString txtQuantity.Text = vbNullString txtConsignmentID.Focus() End Sub

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click objConsignment = Nothing dsConsignment = Nothing Me.Dispose() End Sub

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click If btnSave.Text = "&Save" Then SaveConsignment() ClearFields() objConsignment = New ShippingDataLogic.BLConsignmentDetails DataGrid.DataSource = objConsignment.GetConsignmentDetails Else UpdateConsignment() ClearFields() objConsignment = New ShippingDataLogic.BLConsignmentDetails DataGrid.DataSource = objConsignment.GetConsignmentDetails End If End Sub

Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click ClearFields() objConsignment = New ShippingDataLogic.BLConsignmentDetails DataGrid.DataSource = objConsignment.GetConsignmentDetails End Sub

Private Sub frmConsignment_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing objConsignment.Dispose() objConsignment = Nothing End Sub Private Sub SaveConsignment() Try objConsignment = New ShippingDataLogic.BLConsignmentDetails

Page 181 of 227

Page 182: Nilambar-Shipping Management Report

dsConsignment = objConsignment.GetConsignmentDetails '**** Below line in important. Otherwise ' We will get message of Primary key violation dsConsignment.Tables("Consignment").Rows.Clear() Dim objDataRow As DataRow = dsConsignment.Tables("Consignment").NewRow objDataRow.Item("ConsignmentNo") = txtConsignmentID.Text.Trim objDataRow.Item("ConsignmentName") = txtValue.Text.Trim objDataRow.Item("ConsignmentID") = txtValue.Text.Trim

dsConsignment.Tables("Consignment").Rows.Add(objDataRow)

If Not objConsignment.AddConsignmentDetails(dsConsignment) Then Throw New Exception("Insert Consignment failed!!!") End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

Finally ClearFields() End Try End Sub Private Sub UpdateConsignment() Try

objConsignment = New ShippingDataLogic.BLConsignmentDetails dsConsignment = objConsignment.GetConsignmentDetails '**** Below line in important. Otherwise ' We will get message of Primary key violation dsConsignment.Tables("Consignment").Rows.Clear() Dim objDataRow As DataRow = dsConsignment.Tables("Consignment").NewRow objDataRow.Item("ConsignmentNo") = txtConsignmentID.Text.Trim objDataRow.Item("ConsignmentName") = txtValue.Text.Trim objDataRow.Item("ConsignmentID") = txtValue.Text.Trim

dsConsignment.Tables("Consignment").Rows.Add(objDataRow)

If Not objConsignment.UpdateConsignmentDetails(dsConsignment) Then Throw New Exception("Update Consignment failed!!!") End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

Finally ClearFields() End Try End Sub Private Sub DeleteConsignment() Try objConsignment = New ShippingDataLogic.BLConsignmentDetails

Page 182 of 227

Page 183: Nilambar-Shipping Management Report

If Not objConsignment.DeleteConsignmentDetails(txtConsignmentID.Text) Then Throw New Exception("Delete Consignment Failed!") End If Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try ClearFields()

End Sub

Private Sub SearchConsignment() Try objConsignment = New ShippingDataLogic.BLConsignmentDetails dsConsignment = objConsignment.GetConsignmentDetails(txtConsignmentID.Text.Trim) txtValue.Text = dsConsignment.Tables("Consignment").Rows(0).Item("ConsignmentName") txtQuantity.Text = dsConsignment.Tables("Consignment").Rows(0).Item("ConsignmentID")

Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException)

End Try End Sub

Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click SearchConsignment() End Sub

Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click Dim Ans As Long Ans = MsgBox("Do you really want to delete the Record?", MsgBoxStyle.Critical + MsgBoxStyle.YesNo, "Delete Record") If Ans = vbYes Then DeleteConsignment() Else ClearFields() End If

End SubEnd Class

4.2. Comments and Description

Page 183 of 227

Page 184: Nilambar-Shipping Management Report

While coding it is necessary from the programmer’s point of view to write

comments and the description for the piece of code being used. It can be

easily done in VB.NET. Just put a single cote (‘) and write the purpose of the

code. It is very handy when we want to understand the purpose of the code.

The sample is given below for the subroutine OpenDB.

Public Sub OpenDB(ByVal Table As String) 'Subroutine to open the database

ConnString =

server=localhost; integrated security=sspi; database=Shipping '

Connection string to connect the database

Connection = New OleDbConnection(ConnString) ' initializing the

connection

DataAdapter = New OleDbDataAdapter("Select * from " & Table,

Connection) ' Opening the connection

DT = New DataTable ' Creating new data table object

DataAdapter.Fill(DT) ' Populating the Data Table with data

End Sub

4.3. Standardization of the coding/Code Efficiency

While coding, it is seen that there are some sorts of code, which are being

used so frequently in each module. So it is not feasible to write the same

code again and again. So, it is better to make a function, may be private or

public, and call that piece of code whenever necessary. In the piece of code

below, the “ClearFields” function can be used to clear the text boxes used

the form whenever necessary. Again in the subroutine “OpenDB” can be

used to connect the database any it needs to connect the database. These

codes are called several times in the program, hence the code is optimized.

Private Sub ClearFields()

Page 184 of 227

Page 185: Nilambar-Shipping Management Report

txtStaffId.Text = ""

txtName.Text = ""

txtAddress.Text = ""

txtPhone.Text = ""

txtDoj.Text = ""

cmbType.Text = ""

txtSpecialization.Text = ""

txtQualification.Text = ""

cmbLevel.Text = ""

cmbActive.Text = ""

txtStaffId.Focus()

End Sub

Public Sub OpenDB(ByVal Table As String)

ConnString = "

server=localhost; integrated security=sspi; database=Shipping “

Connection = New OleDbConnection(ConnString)

DataAdapter = New OleDbDataAdapter("Select * from " & Table,

Connection)

DT = New DataTable()

DataAdapter.Fill(DT)

End Sub

4.4. Error handling

Error can be done is various way. The best method can be followed is using

the try-catch-finally method. Using Try-Catch-Finally blocks we can easily

handle errors that might occur during code execution. When exceptions are

thrown, they are handled in the Catch block before code in the Finally block is

executed.

Page 185 of 227

Page 186: Nilambar-Shipping Management Report

Try

OpenDB(Table)

DataAdapter.InsertCommand = New OleDb.OleDbCommand(SQL,

Connection)

DR = DT.NewRow

DT.Rows.Add(DR)

DataAdapter.Update(DT)

Catch

MessageBox.Show(Err.Description.ToString, "Save error...",

MessageBoxButtons.OK, MessageBoxIcon.Error)

Finally

CloseDB()

ClearFields()

End Try

The other ways VB.NET support are On Error Resume Next and On Error

Go To FlagName keywords to handle error or exception in a piece of code.

4.5. Parameter Calling/Passing

In some functions it needs to pass some objects to do a specific work. As for

example in the code below we write a function named PassRead, which is

used to read password from the database. The password varies as the user

name changes. So, it is better to pass the name of the user to the function as

parameter and retrieve the required password. Besides, the function OpenDB

can be used to open any table passing the name of the table as parameter to

the function.

Public Function PassRead(ByVal UserName As String) As String

Page 186 of 227

Page 187: Nilambar-Shipping Management Report

Dim STR As String

Dim i As Integer

SQL = "Select Password from Login where UserName=" & "'" & UserName

& "'"

OpenDB("Login")

DT = New DataTable()

DataAdapter = New OleDbDataAdapter(SQL, Connection)

DataAdapter.Fill(DT)

STR = DT.Rows(0).Item(0).ToString

ReDim Preserve Password(Len(STR))

For i = 1 To Len(STR)

Password(i) = Chr((Asc(Mid(STR, i, 1)) + 15) Xor 34)

Next

Dim l As Integer

l = Len(STR)

STR = ""

For i = 1 To l

STR = STR + Password(i)

Next

PassRead = STR

End Function

4.6. Validation Checks

The validation checks for each of the forms are as follows:

Form 1. Login Form

In this form a user has to type his/her name. No blank name

followed by ok button click is accepted. An error message flashes if user

Page 187 of 227

Page 188: Nilambar-Shipping Management Report

does this. Only cancel button click is accepted at any time to abort the

process.

Form 2. Vehicle Entry Form

In this form user has to input the details of the Vehicle. In the

name field no number like 1 2 3 is allowed. Similarly, the vehicle number

should be in numbers only, no character is allowed. The data will not be

saved unless the user inputs each and every fields of the form.

Form 3. Vehicle Edit Form

This form is used to update the data of the Vehicle. In this

form user has to input the vehicle id of the vehicle and search the record.

In the name field no number like 1 2 3 is allowed. Similarly, the vehicle

number should be in numbers only, no character is allowed. The data will

not be saved unless the user inputs each and every fields of the form.

5. Testing

The aim of the testing process is to identify all defects existing in a

software product or we can say that testing is a process of executing a

program with the intent of finding an error. Testing a program consists of

providing the program with a set of test inputs and observing if the program

behaves as expected. A successful test is one that uncovers an as-yet-

undiscovered error. Exhaustive testing of almost any non-trivial system is

impractical due to the fact that the domain of input data values to most

practical software systems is either extremely large or infinite. Therefore

we must design an optimal test suite that is of reasonable size and can

uncover as many errors existing in the system as possible. A good test

Page 188 of 227

Page 189: Nilambar-Shipping Management Report

case is one that has a high probability of finding an as-yet-undiscovered

error. A testing involves lot of creative thinking.

5.1. Testing techniques and Testing strategies

Testing is an integral part in software development. It is broadly deployed in

every phase in the software development cycle. Typically, more than 50%

percent of the development time is spent in testing. Testing is usually

performed for the following purposes:

To improve quality

For Verification & Validation (V&V)

For reliability estimation

Taxonomy

Functionality

(exterior quality)

Engineering

(interior quality)

Adaptability

(future quality)

Correctness Efficiency Flexibility

Reliability Testability Reusability

Usability Documentation Maintainability

Integrity Structure

Good testing provides measures for all relevant factors. The importance of

any particular factor varies from application to application.

After the generation of code the testing process of the project begins. It

focuses on the logical internals of the functional externals; that is conducting

Page 189 of 227

Page 190: Nilambar-Shipping Management Report

tests to uncover errors to ensure that desired coding will be produced in the

sender side along with accurate decoding on the receiver side.

The following steps are considered to design effective test of the project:

My entire test is traceable to coding and encoding activities and my

entire test is based on detecting errors in the process logic.

Tests were planned long before testing began. The test started and

continued along with the development of the modules. This not only helped in

saving the extra amount of time but also helped in fixing the logical errors

which were unknown during the concept development time.

Applied Pareto principal applies to my software testing. Applying

Pareto principal I allotted 40 percent of my time in concept development

which included devising of algorithms, testing of space/time complexities etc.,

then 20 percent to coding and rest to testing and implementation purpose.

Test techniques applied and a schedule for my testing strategy is given

below:

Correctness testing:

Correctness is the minimum requirement of software, the essential

purpose of testing Correctness testing will need some type of oracle, to tell

the right behavior from the wrong one. The tester may or may not know the

inside details of the software module under test, e.g. control flow, data flow,

etc. Therefore, either a white-box point of view or black-box point of view can

be taken in testing software. We must note that the black-box and white-box

ideas are not limited in correctness testing only.

Unit Testing:

Unit Testing started with the completion of each unit module, for example

I first completed the Consignee Addition module. In this module I add a data

for a new Consignee. After this I checked the database whether the

Page 190 of 227

Page 191: Nilambar-Shipping Management Report

Consignee is added or not. Thus I have checked all the other modules in

similar fashion.

White Box Testing:

In practice White Box testing should not be done by the designer

hSMSelf, it must be done by the client, though I myself have done the White

Box Testing. At fist glance it would seem that very thorough white box testing

would lead to "100 percent correct programs," All I needed to do all logical

paths to exercise them and evaluates results. For even small program the

number of possible paths can be very large.

Black Box Testing:

In this Black Box Testing or behavioral testing, focuses on the functional

requirements of the program. That is, Black Box Testing enables to me to

derive sets of input conditions that will fully exercise all functional

requirements for my program. I found it is not an alternative to White Box

techniques. Rather it is complimentary approach that is likely to uncover

different Route errors than White Box methods.

In this testing technique I attempted to find errors in the following

categories: (1) Incorrect or missing function (2) Interface error (3) errors in

data structure and external data base access. (4) Behavior or performance

errors and (5) initialization and termination errors. I have applied some

question for this testing technique, they are as follows:

What type of input format will make good test cases?

How is system behavior and performance tested?

How is functional validity tested?

What effect will specific combinations of message formats have

on system operations for particular encoding/decoding

technique.

What data rates and data volume can the system tolerate?

Page 191 of 227

Page 192: Nilambar-Shipping Management Report

Top-down Integration Testing :

After the development of all the modules I start integrating the modules

with the main module. I carried out integration testing at the interface of the

two modules. The context of testing is described as follows:

The program is constructed and tested in small increments where errors

are easier to isolate and correct; interfaces are more likely to be tested

completely. And a systematic test approach may be applied. I followed only

the Top down Integration Testing. It is an incremental approach to

construction of program structure.

Alpha and Beta Testing:

It is really impossible for me to foresee how my project will perform during

the peak work load time of the network.

The beta test conducted at one or more Consignee sites (the project

would be delivered). So that recognition process works properly with different

users.

Testing GUI's:

Graphical user interfaces (GUIs) offer interesting challenges to a software

engineer. Due to reusable components in of GUI development environments,

the creation of the user interface has become less time-consuming and more

precise. But also the complexity of the GUI has grown with more difficulty in

design and execution of test cases.

GUIs have in general same look and feel. Hence, series of standard tests

have been defined. The following checks have been done to test the GUIs.

1) For Windows:

* Window opens properly as related to typed or menu based command.

* Data content contained within the window is properly addressable with a

mouse, function keys, directional arrows and keyboard.

* Window properly regenerates when it is overwritten and recalled.

Page 192 of 227

Page 193: Nilambar-Shipping Management Report

* All components such as Buttons, List Box, and Textbox etc. are

displaying properly.

* The active window is properly highlighted.

* Window properly closes.

2) Full pull-down menus and mouse operations:

* Appropriate menu bar is displayed in the appropriate context.

* Pull-down operation work properly.

* Mouse operations are properly recognized throughout the interactive

text.

* Multiple clicks are properly recognized in context.

* Multiple buttons of mouse are properly recognized context.

* The cursor, processing indicator and text pointer properly change as

different operations are invoked.

3) Data Entry:

* Alphanumeric data entry is properly echoed and input to the system.

* Graphical modes of data entry (e.g., a slide bar) work properly.

* Invalid data is properly recognized.

* Data are input messages intelligible.

In addition, finite state modeling graphs are used to derive a series of

tests that address specific data and program objects that are relevant to

the GUIs.

Performance testing:

Not all software systems have specifications on performance explicitly. But

every system will have implicit performance requirements. The software

should not take infinite time or infinite resource to execute. "Performance

bugs" sometimes are used to refer to those design problems in software

that cause the system performance to degrade.

Page 193 of 227

Page 194: Nilambar-Shipping Management Report

The typical method of doing performance testing is using a benchmark, a

program, workload or trace designed to be representative of the typical

system usage.

Using Task manager in win XP/200/2003 it is noted that the system is not

taking infinite recourses. Further, using benchmarking tool like system

mechanic and dr.hardware the performance of the system is stated ok.

Reliability testing:

Software reliability refers to the probability of failure-free operation of a

system. It is related to many aspects of software, including the testing

process. Directly estimating software reliability by quantifying its related

factors can be difficult. Testing is an effective sampling method to

measure software reliability. Guided by the operational profile, software

testing (usually black-box testing) can be used to obtain failure data, and

an estimation model can be further used to analyze the data to estimate

the present reliability and predict future reliability. Variances of reliability

testing are

Robustness testing

Stress testing

There are no machine crashes, process hangs or abnormal

termination. So it is passed ok in robustness testing.

There is no resource exhaustion, bursts of activities, and system

can sustained high loads. So it is also passed ok in stress testing.

Security testing:

Software quality, reliability and security are tightly coupled. Flaws in

software can be exploited by intruders to open security holes. With the

development of the Internet, software security problems are becoming

even more severe.

Security is tested in both application wise and database wise and the

security test is positive in both.

Page 194 of 227

Page 195: Nilambar-Shipping Management Report

Functionality Testing:

Functionality testing is performed to verify that a software application

performs and functions correctly according to design specifications.

Whether you are in need of basic functionality tests to ensure that primary

features function properly or you are in need of in depth verification of

complex operations, SMS can meet your needs.

For Functionality testing of SMS, I analyze the application and develop a

comprehensive test plan that outlines all features and functional areas of

the application that will be tested. The Test Plan includes Test Cases that

outline how each feature and functional area will be tested.

Some of the functional tests that we perform include:

Simple Functional Testing

Task Feature Testing

Boundary Testing

Forced Error Condition Testing

Exploratory Testing

Compatibility Testing:

Compatibility Testing services test the functionality and performance of a

software application across multiple platform configurations. This type of

testing typically uncovers compatibility issues with operating systems,

other software applications, and hardware components. I execute the Test

Plan and Test Cases on multiple platform configurations.

SMS system will be tested:

Using various client hardware configurations

Using the minimum memory and hard drive space required

Using various client Operating System combinations

Using different network environments, when applicable

Page 195 of 227

Page 196: Nilambar-Shipping Management Report

Using different printers and peripherals (i.e. zip drives, USBS, etc.)

Using specified third-party software

Installation Testing:

Installation testing is often an overlooked component of testing. This type

of testing is performed to ensure that all Install features and options

function properly and to verify that all necessary components of the

application are installed. I perform several tests on the installation of an

application to verify that the application can be installed with the minimum

hard drive space required, with the minimum RAM required, onto

removable drives (Zip and Jazz), and onto a drive other than the default

drive. We also install the product on CLEAN systems (configurations with

no other software installed) and DIRTY systems (configurations with other

programs installed i.e. Virus checkers). We perform testing of all

navigational buttons (Logon, Back, Exit, etc.), and user input fields to

ensure that they function properly and yield the expected result.

SMS Un-installation also needs to be tested to ensure that all data,

executables, and .DLLs are removed. The un-installation of the application

is tested using DOS command line.

Usability Testing:

For Usability Testing, we read and review every screen and dialog box of

the software application, checking for spelling and grammatical errors as

well as the overall design and layout. If Help files are included with the

software application, we review the files to verify that the information

contained in the files is correct and easy to understand and follow.

Regression Testing:

After the first round of testing is completed, regression testing needs to be

performed to ensure that the reported errors are indeed fixed. Testing also

needs to be performed to ensure that the fixes made to the application do

not cause new errors to occur

Page 196 of 227

Page 197: Nilambar-Shipping Management Report

System Test Report Cover Sheet

Name:  Nilambar Misra

Number of test cases:  17

Number of failures found:  3

Number of faults identified: 2

System Report Grade

Category Total Points

Completeness  8(10)  8(10)

Failures  3(0)   6(10)

Faults  2(0) 7(10)

Test cases  17(25)  8(10)

Specifications  14(20)   7(10)

Critical-Evaluation  7(10)   7(10)

Presentation  7(10)  7(10)

Total 50(70)

Test Plan:

Logon screen Test CaseExpected

OutputObserved Output Remarks

1 Blank Id Error Error Passed

2 Blank Password Error Error Passed

3 Non-existing Id Error Error Passed

4 Non-existing Password Error Error Passed

5 Both valid Id &

Password

Allow Entry Allow Entry Passed

Page 197 of 227

Page 198: Nilambar-Shipping Management Report

6 Length mismatch Error Error Passed

7 Press Exit Button Application

close

Application close Passed

Consignee

addition

screen

Test Case Expected Output Observed Output Remarks

1 Blank fields Error Error Passed

2 Duplicate record Error Error Passed

3 Bad data Error Error Passed

4 Valid data Data Entry Data Entry Passed

5 Length mismatch Error Error Passed

6 Press Exit Button Application close Application close Passed

7 Pressing Back

button

Back to Choice Back to Choice Passed

Consignee

updation

screen

Test Case Expected OutputObserved

OutputRemarks

1 Blank search field Error Error Passed

2 Non-existing data Error Error Passed

3 Valid data Allow Entry Allow Entry Passed

Page 198 of 227

Page 199: Nilambar-Shipping Management Report

4 Blank fields Error Error Passed

5 Bad data Error Error Passed

6 Valid data Data updation Data updation Passed

7 Length mismatch Error Error Passed

8 Press Exit Button Application close Application

close

Passed

9 Pressing Back

button

Back to Choice Back to Choice Passed

Consignee

deletion

screen

Test Case Expected Output Observed Output Remarks

1 Blank search field Error Error Passed

2 Non-existing data Error Error Passed

3 Valid data Data deletion Data deletion Passed

5 Length mismatch Error Error Passed

6 Press Exit Button Application close Application close Passed

7 Pressing Back

button

Back to Choice Back to Choice Passed

Consignor

Details

addition

screen

Test Case Expected Output Observed Output Remarks

1 Blank fields Error Error Passed

Page 199 of 227

Page 200: Nilambar-Shipping Management Report

2 Duplicate record Error Error Passed

3 Bad data Error Error Passed

4 Valid data Data Entry Data Entry Passed

5 Length mismatch Error Error Passed

6 Press Exit Button Application close Application close Passed

7 Pressing Back

button

Back to Choice Back to Choice Passed

Consignor

Details

updation

screen

Test Case Expected OutputObserved

OutputRemarks

1 Blank search field Error Error Passed

2 Non-existing data Error Error Passed

3 Valid data Allow Entry Allow Entry Passed

4 Blank fields Error Error Passed

5 Bad data Error Error Passed

6 Valid data Data updation Data updation Passed

7 Length mismatch Error Error Passed

8 Press Exit Button Application close Application

close

Passed

9 Pressing Back Back to Choice Back to Choice Passed

Page 200 of 227

Page 201: Nilambar-Shipping Management Report

button

Consignor

Details

deletion

screen

Test Case Expected Output Observed Output Remarks

1 Blank search field Error Error Passed

2 Non-existing data Error Error Passed

3 Valid data Data deletion Data deletion Passed

5 Length mismatch Error Error Passed

6 Press Exit Button Application close Application close Passed

7 Pressing Back

button

Back to Choice Back to Choice Passed

Consignor

addition

screen

Test Case Expected Output Observed Output Remarks

1 Blank fields Error Error Passed

2 Duplicate record Error Error Passed

3 Bad data Error Error Passed

4 Valid data Data Entry Data Entry Passed

5 Length mismatch Error Error Passed

6 Press Exit Button Application close Application close Passed

Page 201 of 227

Page 202: Nilambar-Shipping Management Report

7 Pressing Back

button

Back to Choice Back to Choice Passed

Consignor

updation

screen

Test Case Expected OutputObserved

OutputRemarks

1 Blank search field Error Error Passed

2 Non-existing data Error Error Passed

3 Valid data Allow Entry Allow Entry Passed

4 Blank fields Error Error Passed

5 Bad data Error Error Passed

6 Valid data Data updation Data updation Passed

7 Length mismatch Error Error Passed

8 Press Exit Button Application close Application

close

Passed

9 Pressing Back

button

Back to Choice Back to Choice Passed

Consignor

deletion

screen

Test Case Expected Output Observed Output Remarks

1 Blank search field Error Error Passed

2 Non-existing data Error Error Passed

3 Valid data Data deletion Data deletion Passed

Page 202 of 227

Page 203: Nilambar-Shipping Management Report

5 Length mismatch Error Error Passed

6 Press Exit Button Application close Application close Passed

7 Pressing Back

button

Back to Choice Back to Choice Passed

Consignme

nt addition

screen

Test Case Expected Output Observed Output Remarks

1 Blank fields Error Error Passed

2 Duplicate record Error Error Passed

3 Bad data Error Error Passed

4 Valid data Data Entry Data Entry Passed

5 Length mismatch Error Error Passed

6 Press Exit Button Application close Application close Passed

7 Pressing Back

button

Back to Choice Back to Choice Passed

Consignme

nt updation

screen

Test Case Expected OutputObserved

OutputRemarks

1 Blank search field Error Error Passed

2 Non-existing data Error Error Passed

3 Valid data Allow Entry Allow Entry Passed

Page 203 of 227

Page 204: Nilambar-Shipping Management Report

4 Blank fields Error Error Passed

5 Bad data Error Error Passed

6 Valid data Data updation Data updation Passed

7 Length mismatch Error Error Passed

8 Press Exit Button Application close Application

close

Passed

9 Pressing Back

button

Back to Choice Back to Choice Passed

Consignme

nt deletion

screen

Test Case Expected Output Observed Output Remarks

1 Blank search field Error Error Passed

2 Non-existing data Error Error Passed

3 Valid data Data deletion Data deletion Passed

5 Length mismatch Error Error Passed

6 Press Exit Button Application close Application close Passed

7 Pressing Back

button

Back to Choice Back to Choice Passed

Route

addition

screen

Test CaseExpected

OutputObserved Output Remarks

1 Blank fields Error Error Passed

Page 204 of 227

Page 205: Nilambar-Shipping Management Report

2 Duplicate record Error Error Passed

3 Bad data Error Error Passed

4 Valid data Data Entry Data Entry Passed

5 Length mismatch Error Error Passed

6 Press Exit Button Application

close

Application close Passed

7 Pressing Back button Back to

Choice

Back to Choice Passed

Route

updation

screen

Test Case Expected OutputObserved

OutputRemarks

1 Blank search field Error Error Passed

2 Non-existing data Error Error Passed

3 Valid data Allow Entry Allow Entry Passed

4 Blank fields Error Error Passed

5 Bad data Error Error Passed

6 Valid data Data updation Data updation Passed

7 Length mismatch Error Error Passed

8 Press Exit Button Application close Application

close

Passed

9 Pressing Back button Back to Choice Back to Choice Passed

Page 205 of 227

Page 206: Nilambar-Shipping Management Report

Route deletion

screenTest Case Expected Output

Observed

OutputRemarks

1 Blank search field Error Error Passed

2 Non-existing data Error Error Passed

3 Valid data Data deletion Data deletion Passed

5 Length mismatch Error Error Passed

6 Press Exit Button Application close Application

close

Passed

7 Pressing Back

button

Back to Choice Back to Choice Passed

Sample Test Outputs:

Fig. 1: The Login window test case with wrong password.

Page 206 of 227

Page 207: Nilambar-Shipping Management Report

Fig. 2: The Change Password window test case with wrong password.

Page 207 of 227

Page 208: Nilambar-Shipping Management Report

Fig. 3: The Edit Consignor window test case with wrong Consignor ID.

5.2. Debugging and Code improvement

Programming errors are inevitable. Even very experienced programmers

occasionally introduce errors, also known as bugs, while writing code.

Debugging is the process of locating and fixing these errors.

Types of Errors

There are three basic types of errors you might encounter when writing code.

Syntax errors represent code that cannot be understood by the compiler. Run-

time errors are errors that occur when an attempt is made to perform an

operation that is impossible to carry out. Logical errors are errors that result when

code compiles and executes correctly, but returns an unexpected result. In this

section, we will examine each error type in turn.

Syntax Errors

A syntax error occurs when the compiler cannot compile the code it is given. For

example, a syntax error occurs when keywords are typed incorrectly, punctuation

is omitted, or an incorrect construct is parsed.

Run-Time Errors

Run-time errors occur when the application attempts to perform an operation that

is not allowed. This includes operations that are impossible to carry out, such as

division by zero, and operations that are not allowed, as in the case of security

exceptions. When a run-time error occurs, an exception describing the error is

thrown. Exceptions are special classes that are used to communicate error states

Page 208 of 227

Page 209: Nilambar-Shipping Management Report

between different parts of the application. You can write code to handle

exceptions so that they do not halt execution of your application.

Logical Errors

Logical errors occur when the application compiles and executes correctly, but

does not produce the expected results. These can be the most difficult type of

errors to track down, because there might not be any indication as to the source

of the error. Logical errors can result from something as innocuous as a

misplaced decimal point.

You can use Break mode to examine your code line-by-line to identify and

correct errors. Visual Studio .NET provides several options for stepping

through code, including:

o Step Into.

To step through each line of code as it executes, including calls to

other functions

o Step Over.

To step through each line of code as it executes, but step over calls

to other functions

o Step Out.

To execute the remainder of code in the current function and stop

at the next line in the function that called it, if applicable

o Run To Cursor.

To designate a line with the cursor and execute all the code leading

up to that line

o Set Next Statement.

Page 209 of 227

Page 210: Nilambar-Shipping Management Report

To set the next statement to be executed, skipping and not

executing any intermediate lines

Breakpoints, used for debugging, are designated lines of code where

execution halts and the application enters Break mode. Breakpoints can

have conditions attached that determine whether the application will break

or not. The Breakpoints window is where you manage, create, disable, or

clear breakpoints.

Visual Studio .NET provides several tools for evaluating your program.

The Locals, Autos, and Watch windows allow you to observe program

variables while the application is running. The Command window allows

you to execute code and print variable and property values to the window.

Additional windows allow you to observe a variety of data regarding your

application.

To identify and correct syntax errors

From the Build menu, click Build Solution. Syntax errors appear in the

Task List window.

1. For Visual Basic .NET, double-click the error that reads “Select Case must

end with a matching End Select”. You are taken to the end of the Select

Case block. Examine the code and correct the error by correcting the

syntax in the End Select line. Note that only two errors are displayed in the

Task List window.

2. Double-click the first error in the Task List. You are taken to an error that

cannot find a member named CurretOperation. Change this statement to

read CurrentOperation to correct the error.

3. Double-click the final error in the Task List. Correct the spelling of Regiter2

to correct the error.

4. From the Build menu, choose Build Solution. Note that no further errors

are discovered.

Page 210 of 227

Page 211: Nilambar-Shipping Management Report

Now that we have rid our code of syntax errors, we can tackle the run-time errors

and logical errors.

To identify and correct a run-time error

1. Locate the NumberHandler method. This is a fairly simple method with

minimal data path branching. This method builds a string of numbers as

buttons 1 through 9 are pressed on the calculator face.

2. Develop a test plan for this method. Our test plan should explore all

possible data branches and test the method with a variety of input and

application variable values. Determine the expected results of each test

case in advance. Table demonstrates some of the test cases you might

use.

Table. Test Cases for the NumberHandler Method

Button

Pressed

Value of

LabelDisplay.Text

Value of

CurrentNumberString

Value of

CurrentNumberString

expected

1 “0” “” “1”

4 “44” “44” “444”

9 “1266345578456” “1266345578456” “12663455784569”

9 “-3446.222231” “-3446.222231” “-3446.2222319”

3 “6” “6” “63”

3. Execute our tests. Use the Locals, Autos, and Watch windows to observe

the values of variables as the program executes. Use the Immediate

window to assign values to variables. We can use Set Next Statement to

rerun code multiple times.

4. Log your results and correct any run-time errors you find.

Page 211 of 227

Page 212: Nilambar-Shipping Management Report

Logical errors are the most difficult types of errors to identify. It frequently takes

repeated testing to observe a problem and additional testing to identify the

source of the error.

To identify and correct a logical error

1. Locate the method named EqualsHandler. This method handles

operations for the calculator when the equals (=) button is pressed. The

number contained by the variable Register1 is added to, subtracted from,

multiplied by, or divided into the number contained by Register2, and the

value of that operation is assigned to Result. The user interface is then

updated.

2. Execute the test plan shown in Table. Although incomplete, the plan does

test every logical path through the method and should be sufficient to find

a logical error. Note that boundary analysis and in-depth testing has been

omitted for the purpose of brevity.

Table. Test Cases for the EqualsHandler Method

Current Operation Register1 Register2 Expected Value of Result

Operation.Plus 442 5789 6231

Operation.Minus 400000 222222 177778

Operation.Multiply 23 12 276

Operation.Divide 3345 34 98.3823529411765

3. Diagnose and resolve any logical errors we encounter.

6. System Security Measures

6.1. Database/data Security

Page 212 of 227

Page 213: Nilambar-Shipping Management Report

The security is implemented in the system in two ways:

a) Password: The system requires a valid password to open the

application. Unauthorized access to the system is prevented by password

security. The database is also requiring a password to login.

b) Encryption: The data in the database is saved in encrypted form

so that even if somebody sees the data, he will never be in a position to

interpret the data saved in the database. When require, the data will be

decrypted into readable form.

6.2. Creation of user profile and access rights

There will be two types of users, viz. Administrator and User. The

Administrator can do all the jobs designed in the system who can even

deleted the records and change the passwords also, whereas the user

has only the privilege of Data Entry Operator.

7. Cost Estimation

Cost in a project is due to requirements for Software, Hardware and Human

Resource. Hardware resources are such things as the computer time, terminal

time and memory requirement for the project, where as Software-resources

include the tools and compilers needed during development. The bulk of the

cost of Software development is due to the Human-resources needed, and

most cost estimation procedures focus on the aspect. Most cost estimates are

determined in turns of Person - Months (PM). By properly including

“Overheads’ (i.e. the cost of order, software, office space, etc.) in the Rupees

cost of the person-month(PM), besides including the direct cost of the person-

Page 213 of 227

Page 214: Nilambar-Shipping Management Report

month, most cost for a project can be inFlight by using PM as the basic

measure.

Estimates can be based on subjective opinion of some person or

determined through the use of the models. Though, there are approaches to

structure the opinion of the persons for achieving a consensus on the Cost-

Estimate, it is generally accepted that it is important to have a more scientific

approach to estimation through the use of models.

Uncertainties in Cost-Estimation The cost of the project depends on the

nature and characteristics of the project, at any point, the accuracy of the

estimate will depend on the amount of reliable information we have about the

final product. Clearly, when the product is delivered, the cost can be accurately

determined, as all the data about the project and the resources spent can be

fully known by then. This cost estimation with complete knowledge about the

project. There is a great deal of uncertainties about the actual specification of

the system. Specifications with uncertainties represent a range of possible final

products, not one precisely denied product. Hence, the cost estimation based

on this type of information cannot be accurate. Estimates at the phase of the

project can be off by as much as a factor of four from the actual final cost.

The accuracy of the actual cost estimates will depend on the

effectiveness and accuracy of the cost estimation procedures or models

employed and process. Cost estimation models have matured considerably and

generally given fairly accurate estimates. For example, when the “COCOMO”

model was checked with data from the projects it was found that the estimates

were within 20% of the actual cost 68% of the time. It should also be mentioned

that achieving a cost estimate after the requirements have been specified within

20% is actually quite good.

Building Cost Estimation Models Any cost estimation model can be

viewed as a “Function” that outputs the cost estimate. As the cost of a project

depends on the nature of the project, clearly this cost estimation function will

needed inputs about the project, from which it can produce the estimate. The

Page 214 of 227

Page 215: Nilambar-Shipping Management Report

basic idea of having a model or procedure for cost estimation is that it reduce

the problem of estimation to estimating or determining the value of the “key

parameters” that characterize the project, based on which the cost can be

estimated. The problem of the estimation, not yet fully solved, is determining

the key parameters whose value can be easily determined and how to get the

cost estimate from the value of these.

The most common approach for estimating effort is to make it a

function of a single variable. Often these variables are the project size, and the

equation of effort is considered:

EFFORT = a * SIZE b

Where ‘a’ and ‘b’ are constants Values for these constants for a particular

process are determined through regression analysis, which is applied to data

about the projects that has been performed in the past.

On size estimation The single variable cost models with size as

depended variable results in simple looking models that can be easily obtained

from completed projects, applying them for estimation is not simple. The reason

is that these models now require size as the input, and the size of the project is

not known early in development and has to be estimated. This is particularly

true if LOC is used as the measure of size in the model. One size estimates for

components are available to get the overall size estimate for the system, the

estimates of all the components can be added.

With the size based model, if the size estimate is inaccurate, the cost

estimate produced by the models will also be incorrect. Hence, it is important

that good estimates for the size of the software be obtained. When estimating

software size, the best way may be to get as much detail as possible about the

software to be developed and to be aware of four basics when estimating the

size of the various components. By obtaining details and using them for size

estimation, the estimates are likely to be closer to the actual size of the final

software.

Page 215 of 227

Page 216: Nilambar-Shipping Management Report

Here, we will discuss about the COCOMO model called as

“CONSTRUCTIVE COST MODEL. This model estimates the total effort in

terms of person – months of the technical project staff. The effort estimates

includes development, management, and support task but does not include the

cost of the secretarial and other staff that might be needed in an organization.

The basic steps in this model are:

i) Obtain an initial estimate of the development effort from the estimates of

thousand delivered lines of source code (KDLCOC).

ii) Determine a set of 15 multiplying factors from different attributes of project.

iii) Adjust effort estimates by multiplying the initial estimate with all the

multiplying factors.

The multiplying factors for all 15 cost drivers are multiplied to get the effort

adjustment factor (EAF). The final effort estimate, E, is obtained by multiplying

the initial estimate by EAF:

E = EAF * Ei.

The overall cost of the project can be estimated. For planning and monitoring

purposes, estimates of the efforts required for the different phase is also

desirable. In COCOMO, efforts for a phase are considered a defined

percentage of the overall effort.

COCOMO provides three levels of models of increasing complexity: basic,

inter-mediate, and detailed. The model described earlier is the intermediate

COCOMO model. The detailed model is the most complex. It has different

multiplying factors for the different phases for a given cost driver. The set of

cost drivers applicable to a system or module is also not the same as the

drivers applicable to a system or module is also not the same as the drivers for

the system level. However, it might be too detailed for many applications. We

will follow the intermediate model described earlier, even for detailed estimates.

COCOMO also provides help in determining the rating of different attributes

and performing sensitivity and trade-off analysis.

Page 216 of 227

Page 217: Nilambar-Shipping Management Report

Using the COCOMO Model we can make the Cost-estimation of this project is

like as follows:

Project type = Organic.

ConsConsignmentts for Organic Project are a=3.2, b=1.05

From the requirements, four major modules in the system are: data entry, data

update, query, and report generator. It is also clear from the requirements that

the project category is organic. The sizes for the different modules and the

overall system are estimated to be

Logon 0.1 KDLOC

Choice 0.1 KDLOC

Add/Update/Delete 0.5 KDLOC

SMS-Query 0.3 KDLOC

Reports 0.4 KDLOC

Others 0.2 KDLOC

TOTAL 1.6 KDLOC

From the requirements, the ratings of the different cost driver attributes are

assessed. These ratings, along with their multiplying factors, are:

Complexity Nominal 1.05

Storage Nominal 1.10

Experience Nominal 1.15

Programmer Capability Nominal 1.00

All other factor had a nominal rating. From these, the effort adjustment factor

(EAF) is

EAF (Effort Adjustment Factor) = 1.02 * 1.10 * 1.14* 1.02 = 1.30.

The initial effort (Ei) estimate for the project is obtained from the relevant

equation which is: a * KDLOC b.

Page 217 of 227

Page 218: Nilambar-Shipping Management Report

We have, a = 3.2 and b = 1.05. Now putting into the above mentioned equation

we get:

Ei = 3.2 * (1.6) 1.05 PM.

= 5.24 PM.

Using the EAF, the adjusted effort estimate is

E = EAF * Ei

=1.30 * 5.24 PM.

= 6.81 = 7 PM (approx).

According to COCOMO model the effort estimated for different phases

are:

System Design = 0.16 * 7 = 1.12

Detail Design = 0.258 * 7 = 1.80

Code and Unit test = 0.417 * 7 = 2.91

Integration = 0.97

The duration for the Project estimate for the project is obtained from the

relevant equations:

2.5 * E 0.38

= 2.5 * (7) 0.38

= 2.5 * 2.09

= 5.22Months.

The duration of the difference phases is:

System design = .19 * 5.22 = 0.99 Months

Programming =.623 * 5.22 = 3.25 Months.

Integration = .19 * 5.22 = 0.99 Months.

The nominal productivity for the Project is:

Page 218 of 227

Page 219: Nilambar-Shipping Management Report

(Lines of Code (in thousand)* Effort (PM))

= 1.6 / 5.24 = 8.38

Average staff required for different phases is

System design = 0.94 / 0.93 = 1.01 Persons = 1 person (approx.)

Programming = 3.98 / 3.05 = 1.30 Persons = 1 person (approx.)

Integration = 0.97 / 0.92 = 1.05 Persons = 2 persons (approx.)

Using the productivity and EAF the effort estimate for different models can be

determined as follow:

Logon 0.1/.41 * 1.32 = 0.32 PM

Choice 0.1/.41 * 1.32 = 0.32 PM

Add/Update/Delete 0.5/.41 * 1.32 = 1.56 PM

SMS-Query 0.3/.41 * 1.32 = 0.96 PM

Reports 0.4/.41 * 1.32 = 1.28 PM

Others 0.2/.41 * 1.32 = 0.64 PM

So, at last this has been traced out that to complete the Project (SMS),

The total time required = 5.08 = 5 Months (approx)

If we assume the uniform wage amount and other installation equipment as the

initial cost of the Project, as Rs. 3,000/-.

So, the initial cost of my Project is = 5 X 3,000 = Rs. 15,000/-.

If an extra amount of Rs. 500/- is added as the setup cost

Hence, total cost of the project is Rs. 20, 000/-.

The starting date of this Project is: 15th March, 2010.

And, the ending date of this Project is: 15th September, 2010.

Page 219 of 227

Page 220: Nilambar-Shipping Management Report

8. Reports

Various Reports

Fig14: Screen for the Report of Routes

This screen is only for printing the Routes.

Fig15: Screen for the Report of Station

Page 220 of 227

Page 221: Nilambar-Shipping Management Report

This screen is only for printing the Station of the Shipping.

Fig16: Screen for the Report of Consignor

This screen is only for printing the Consignor Information.

Fig17: Screen for the Report of Tariff

This screen is only for printing the Tariff Information.

Page 221 of 227

Page 222: Nilambar-Shipping Management Report

9. Pert Chart

PERT Chart is a network of boxes (or circles) and arrows. There are

different variations of PERT charts. The boxes in PERT chart can be

decorated with their starting dates for the boxes at their heads. Some boxes

can be designated as milestones.

The timeline PERT chart for the work structure:

Total Project time = 151 days

Page 222 of 227

Start Design Plan

Forms

Build DB

Coding

Documentation

Integration & Testing

Finish

15/03/2010 20/03/2010

25/03/2010

31/03/2010

10/04/2010

15/07/2010

25/07/2010

15/09/2010

12/09/2010

Page 223: Nilambar-Shipping Management Report

10. Gantt Chart

11. Future Scope

The Shipping Management system can gradually replace the manual systems of

Ship Yards. Since it is less-cost software hence the Shipping Companies can

own it easily for the convenience of maintaining Database, for fast searching

(availability) of Route, Container etc. This software can be upgraded as online

system where anyone can search the availability of the information remotely. But

before going for a web based networking the security features should be

reviewed.

Page 223 of 227

Page 224: Nilambar-Shipping Management Report

12. Bibliography

The reference books are:

1. Software Engineering, A practitioner’s approach- Roger S. Pressman.

2. Visual Basic .NET Programming Bible- Eric A.Smith, Valor Whisler, and

Hank Morquis IDG Books Worldwide, Inc.

3. Mastering Visual Basic .NET Evangelos Petroutsos BPB Publications

4. Database Programming with ADO .NET Evangelos Petroutsos BPB

Publications

5. Oracle 8i, The Complete Reference-Kevin Loney and George Koch

Tara McGraw-Hill Edition: ‘Cover Releases 8i’

13. Appendices

Abbreviations and Acronyms

Sl.

No.

Term/

Abbreviations

Description

1 VB Visual Basic

2 MS Microsoft Corporation

3 SQL Structured Query Language

4 SDLC Software Development Life Cycle

5 SRS Software Requirement Specification

Page 224 of 227

Page 225: Nilambar-Shipping Management Report

6 PERT Program Evaluation and Review Technique

7 COCOMO Constructive Cost Model

8 EAF Effort Adjustment Factor

9 LOC Line of Code

10 DFD Data Flow Diagram

14. Glossary

ADO.NET: The data access architecture for the Microsoft .NET Framework.

ADO.NET is built around a disconnected data access model that uses a set of

classes called a Data Provider to retrieve data from a data source.

Common Language Runtime (CLR): The environment in which managed code

executes. The common language runtime provides just-in-time compilation,

enforces type safety, and manages memory through garbage collection.

Data Provider: A set of classes that work together to provide managed data

access.

DataSet: A class that contains an application copy of data that has been

retrieved from a data source.

Exception: Any class that derives from System.Exception. Exceptions are

thrown in response to run-time errors. See also throwing.

Exception handling: The process of dealing with unusual occurrences within

code so that it does not cause the program to crash or lose data.

Foreign Key: In a data table, a column that contains a key value that uniquely

identifies a record in a related table.

Page 225 of 227

Page 226: Nilambar-Shipping Management Report

Form: The primary unit of the user interface in a Windows Forms application. A

form serves as a nexus for data display and user input, and can host controls.

Graphic Device Interface (GDI): In Windows, a graphics display system used by

applications to display or print bitmapped text (TrueType fonts), images, and

other graphical elements. GDI+ is the name given to the .NET Framework’s

managed implementation of the GDI.

Interface: A contract for behavior that can be implemented by a class. Classes

that implement the same interface can be expected to provide the members

defined by the interface.

Microsoft Intermediate Language (MSIL): A low-level language that is just-in-

time compiled to native code at run time. All .NET assemblies are represented in

the MSIL.

.NET Framework: A managed environment for the development and execution

of code. It consists of the common language runtime and .NET Framework base

class library.

.NET Framework base class library: A collection of object-oriented types and

interfaces that provides object models to assist in the development of your

applications.

Object: The base class for all types in the .NET Framework. More generically,

any instance of a class or structure.

Object-Oriented programming: The process of creating applications by using

programmatic constructs to represent real-world objects.

Optimization: The process of examining your application and modifying it to be

more efficient in terms of either speed or size of the deployed application.

Page 226 of 227

Page 227: Nilambar-Shipping Management Report

Project: The collection of Visual Studio .NET source files that make up an

application.

Registry: The system repository for information about a computer’s settings. The

registry can contain configuration information about programs and system

components.

Structured exception handling: Using Try…Catch…Finally blocks to handle

errors that might occur during code execution. When exceptions are thrown, they

are handled in the Catch block before code in the Finally block is executed.

Structured Query Language (SQL): It is the standard language used for issuing

commands to databases.

Transaction: A group of commands (treated as a single unit) that change the

data stored in a database. The transaction ensures that the commands are

handled in an all-or-nothing fashion—if one of the commands fails, all of the

commands fail, and any data that was written to the database by the commands

is backed out. In this way, transactions maintain the integrity of data in a

database.

Unicode: The universal character encoding scheme for characters and text.

Each character is represented by a unique numeric value.

User control: A user-defined control that encapsulates other Windows Forms

controls with custom functionality in a common container.

XML Schema: A description of the data elements contained in an XML file. The

XML Schema provides the names of the elements, their types, whether or not

they are key fields, and other information.

Page 227 of 227


Recommended