Project Phase II
Due Oct 30, Nov 10, and Nov 17, 2003
Goal
In this phase you form groups of 3 students, one from each domain of
Phase I. Together, each group forms an E-Business
company. Your company will provide a web shopping interface to
clients, and a decision support workbench to managers in the company.
Finally,
you will provide certain web services for further use in Phase III.
Through this project, you will learn:
- How to implement applications that use several databases. The operations on the databases may or may not be
simultaneous
- How to handle queries that are across different databases
- How to build simple web services
- How to coordinate with project group members and implement new
functions based on previous work
- Most importantly, you will face the same data management
problems often seen in the Real World.
Milestones/Turnins
This phase in divided into 3 parts:
- By October 30, decide your group and email Tessa your group name.
- In the second part, due November 10, you will implement the
web-shopping site and the managers query interface.
You need to email Tessa
the URLs of your web-shopping webpage and your query webpage.
- In the third part, due November 17, you will provide the web service and
can run the remote process call we provide.
Details
Most of you have web-shopping experiences, so it's easy to
understand what needs to be done. In this part, you'll
generate your own web-shopping site.
The details of web shopping includes:
- Browsing: A customer can browse books and music CDs in
store. The browsing methods are either (1) find by title, (2) find
by author or musician, and (3) view all products. Your work in
Phase 1 should have prepared you well for this.
- Log-in: Customers can register for customer accounts. During
registration, the customer provides their basic information and
the customer's address.
Associated with each account, there is a shopping
cart. Afterwards, the customer needs
to log in using that account for any transaction. He can also manage his
account and change his information.
- Shopping Cart Arrangement: A customer can add certain
products to the shopping cart, change the quantity of a
chosen book or music CD in the cart, and delete items in the shopping
cart. Once the customer has chosen to buy, the entire shopping
cart is shipped. You don't have to maintain more than one active
shopping cart for customer.
- Transaction: A customer can make a transaction of all the items in his/her shopping cart. There are several
sub-tasks for each transaction:
- The customer chooses a shipping company and a shipping method. When making
his choices, he can browse information on different shipping vendors and
shipping methods (as supported by Shipping Domain, Phase I). Besides, he fills in delivery date and
special delivery instructions, if any. You can assume that all the
products in the cart are shipped to the customer's address.
- Warehouses from which the prodcuts are shipped are assigned
automatically. Preferably, all products are shipped from a
single
warehouse, which contains enough quantities of all bought items. If no single
warehouse can provide that quantity of items, it
can be shipped from several warehouses. Whenever we have a
choice between different warehouses, we give higher priority to the warehouses
that are in the same city as the delivery address.
- The price for purchased items, discounts, shipping and tax
are provided and the customer
verifies them. We assume the same local tax rate for different cities.
- The customer chooses a payment method. If she chooses to pay
by credit card, she needs to provide the credit card
information. Here we omit the authentication of credit cards.
- After the transaction, the shopping cart is reset to empty
- Delivery Status Tracing: After making a transaction, the
customer can trace the
delivery status of each item in his invoice by providing the invoice number.
Besides, he can check his shopping history.
You should implement web-shopping based on the 3 separate databases for the
3 domains.
- You may need to generate several new tables in appropriate
databases.
- You need to ensure the consistency of data in different databases.
- Considering the huge cost of schema structure change and table
duplication, you are strongly advised to work on current databases you
created for Phase I. If you feel that it's necessary to make
modifications to existing
schemas, you need to write a petition to the cse444 staff (suciu@cs, mgubanov@cs, and tessa@cs)
as you need to do in real life. The petition needs to specify the
change you want to make to the schema,
the drawbacks of the old design, the benefits of the new version,
the expected cost of the change, and the time needed for making the change.
You will built a tool that helps the
managers in the company
get certain information
for further business analysis and decision making.
You should provide a simple front-end to answer the following 3 queries.
Even though you are asked to provide answers only to the three queries
below, you should try to figure out a general solution for the problem
of querying across multiple databases.
- For each book or CD, give the sale amount made so far.
- For each city, give the shipping method and the shipping vendor that are most preferred
for delivery addresses in that city.
- For each city, give the number of items shipped from the warehouses in
that city.
Based on your web-shopping and query web pages, provide the web service that can run the remote process call
as below. Your web service class should be: [your_group_name]_webService.
For example, RBM_webService.
In addition, write a simple client for each of your web service method to
demonstrate the functionality. The client should have an INVOKE button and a bunch of
text boxes on the page for users to type in the input data. After the web
service is invoked, the output is presented on the page. You can give an example
by setting default values for input boxes.
- Given the book title, or music CD album name, return the price, the
discount, and how many books or CDs are in store in all the warehouses in
your company.
struct commodityInfo{
int
quantity,
float
price,
float
discount
}
public commodityInfo availableAmount(
int
commodityType, // type = 0 - book; 1 - CD
string
title
// book title or music album name
)
- Your web service accept an order requirement, which includes the
information about the commodity, shipping company and method, delivery
option, shipping and billing customer, payment and credit card. Then it makes the transaction and returns the
invoice number.
public string transaction(
int
commodityType,
// type = 0 - book; 1 - CD
string title,
// book title or music album name
int
quantity,
// quantity to buy
string shippingCompanyName,
// shipping company name
string shippingMethodType,
// shipping method
int
deliveryYear,
// delivery time
int
deliveryMonth,
int
deliveryDate,
string deliveryInstruction,
// special delivery instruction
string shippingCustormerName,
// shipping customer info
string shippingCustormerPhone,
string shippingCustormerEmail,
string shippingAddrStreet,
string shippingAddrCity,
string shippingAddrState,
string shippingAddrZip,
string billingCustomerName,
// billing customer info
string billingCustomerPhone,
string billingCustomerEmail,
string billingAddrStreet,
string billingAddrCity,
string billingAddrState,
string billingAddrZip,
string paymentMethod,
// payment method
string creditCardType,
// credit card info
string creditCardNo,
int
creditCardExpirationYear,
int
creditCardExpirationMonth
)
- Given the invoice number, trace the delivery status of each item included
and return an array with tracking information.
struct trackingInfo{
string title,
// book title or music CD album title
string
state // delivery status
}
struct trackingInfoArray{
int
size, // the size of the array
trackingInfo
tInfo[]
}
public
trackingInfoArray deliveryStatus(string invoiceID)