Java大作业要求.docx
- 文档编号:3546362
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:65
- 大小:511.25KB
Java大作业要求.docx
《Java大作业要求.docx》由会员分享,可在线阅读,更多相关《Java大作业要求.docx(65页珍藏版)》请在冰豆网上搜索。
Java大作业要求
大作业一在线购物系统
一、实验目的
1.结合前面的知识编写网上购物系统
2.进一步掌握自定义类的编写
3.进一步掌握Stack类的一些常用消息
4.掌握通过List类定义列表对象的方法
5.掌握通过ScrollPane类定义滚动窗口对象的方法
6.进一步掌握GridLayout布局管理器
7.进一步掌握事件监听器的使用;
二、准备工作
1.复习教材中的有关内容;
2.完成实验一到实验七;
3.预习将要用到的类和消息;
三、实验内容
今天,我们浏览Internet时会看见许多在线商店。
在作业一中,你将要定义一个简单的applet,该applet将会给顾客提供“在线购物”的界面。
假设“电子商店”的购货清单里只包括4件不同的商品供顾客选择,还有4个按钮供顾客操作。
它们是:
“购买项目”按钮(给购货车添加所选项目),“删除项目”按钮(从购货车删除所购项目),“结帐”按钮(结算顾客应交款额)和“重置”按钮(购货车清空)。
顾客每轮最多只能买5件商品,即:
购货车一次最多只能装5件商品。
如果顾客想购买更多的商品,必须得先“结帐”—>“重置”,然后再开始新一轮的购物。
如果顾客结帐时所付款额小于$100.00,则除了要交纳税款(GST)外,再另加$2.00运送费。
如果顾客结帐时所付款额多于$100.00,则免去运送费。
1.程序设计注意事项及规则
你不能创建,除了在该文档描述的类之外的任何类。
你不能在你的任何类创建,除了在该文档描述的非私有方法之外的任何非私有方法。
你不能修改任何public方法的属性(变量名可以改)
你不能定义任何非私有实例变量或非私有静态变量。
2.完成作业的步骤
在开始编程之前,请仔细阅读以下说明:
该作业只允许你创建一个项目,且项目名只能为:
asn1,否则我们不会批改你的作业,你的成绩为0分。
跟该项目有关的类都必须存放在项目文件夹中,确保项目中包括ShoppingCart.java(购货车类)、ShoppingCart.class、和Estore.java、Estore.class、Estore.html文件。
该作业包括3部分,包括2个类的编写任务。
它们是:
ShoppingCart(购货车)和Estore(电子商店)类。
在你没有完成下列实验前,你不能着手做各部分。
完成实验五之后,你可以开始做作业的第一部分。
完成实验六之后,你可以开始做作业的第二部分。
完成实验七之后,你可以开始做作业的第三部分。
3.购物过程演示
applet运行后,应出现如图1所示的用户界面,项目列表中不能有被选择的项目。
图1系统启动时的界面
现在,顾客从项目列表中选择了商品"UofACAP",然后单击按钮“购买商品”,即:
"PurchaseItem"按钮。
购货车里,就有总计价格为$10.00的商品。
界面如图2所示:
图2往购物框中添加商品时的界面
购完"UofACAP","WINTERCOAT"和"LONGSLEEVESHIRT"后,总价格变为$85.50,当用"RemoveItem"按钮,删除被选项"UofACAP"后,总价格立即变为$75.50。
界面如图3所示:
图3从购物框删除商品时的界面
若想开始新一轮的购物,请单击"RESET"按钮。
结帐后界面如图4所示:
图4结帐时的界面
现在,顾客通过点击"CheckOut"按钮,进行结帐。
屏幕上输出:
感谢信息和当前的总价格。
结帐后的总价格包括:
GST和运输费(如果total<$100.00)。
界面如图5所示。
图5重置购物框时的界面
4.大作业第一部分
(1)完成第一部分应具备的条件
你应该具备能够完成作业的第一部分的能力,当你已经:
∙完成实验5并开始做实验6。
(2)第一部分的任务
在第一部分,你要实现:
ShoppingCart类。
ShoppingCart是一个允许我们创建ShoppingCart对象的一个类。
该对象将模拟一个虚拟的购物篮。
ShoppingCart对象将会跟踪计算被购买商品的价格—换句话说,它将不断地计算被购买商品的价格,直到客户结帐。
该类不涉及任何跟applet,按钮,及用户在屏幕上的点击操作等有关内容(这些问题将会在第二部分的Estore类中解决)。
ShoppingCart.java只考虑到有关购物篮的一些概念。
编写该类的代码时,请牢记这一点。
现在,在第一部分你要实现的任务有:
∙建立一名为asn1的applet项目,切记必须为asn1,如果你起名为Asn1,asn1或其他任何名称,你的作业成绩将会为0。
∙开始编写ShoppingCart类。
(你只能从作业的第二部分开始编写Estore类)。
(3)ShoppingCart类
现在你可以开始编写ShoppingCart类。
用文件名ShoppingCart.java保存你的文件 (你必须将其保存在你的项目文件夹Asn1中)。
现在你可以将以下的骨架代码拷贝到你的ShoppingCart.java文件里,开始编辑代码。
重要!
!
我们已经提供了ShoppingCart.java的“骨架”代码。
你的任务是在“骨架”的周围填充“肉”!
你必须分析我们给你提供的实例变量和常量,并仔细阅读方法中的注释,按照注释陈述的功能编写代码,将语句写在方法体中,当它们被执行时,能够实现注释语句中指定的功能。
因为没有认真阅读红色的注释语句,有些学生可能不太理解每个方法应该完成的任务,时常会陷入问题中,所以编写代码前必须认真阅读注释语句!
也很重要!
!
当你给每个方法填充完语句,请测试一下你的类。
你可以通过运行该页低部的连接中的代码,测试ShoppingCart.java。
importjava.util.Stack;
/*
*该类的一个实例将会:
模拟一个购物篮,该购物篮里将会保存在“在线购物商店”中所购买的商品(最多可以容纳5件商品)以及购物总额。
publicclassShoppingCart{
//常量
privatestaticfinalfloatTAX=0.07f;
privatestaticfinalfloatSHIPPING=2.00f;
privatestaticfinalintCARTSIZE=5;
//实例变量
privateStackcart;
privateintcount;
privatefloattotal;
privatebooleancheckedOut;
publicShoppingCart(){
/*构造方法:
*初始化购物篮的状态:
购物总额(total)为0.00f,结帐状态(checkedOut)为false,购物总数(count)为0。
*/
cart=newStack();
this.total=0;
this.checkedOut=false;
this.count=0;
}
publicbooleanadd(Stringitem,floatprice){
/*
*如果购物篮非空(例如:
小于5件商品),就把该商品添加到购物篮并修改购物总额(total)*的值,然后返回true,否则返回false。
*/
if(count<5)
{cart.add(item);
this.total+=price;
count++;
returntrue;
}
elsereturnfalse;
}
publicbooleanremove(Stringitem,floatprice){
/*
*如果购物篮里有该商品,就删除该商品并修改购物总额(total)的值,然后返回true,
*否则返回false。
*/
if
}
publicvoidcheckOut() {
/*
*如果购物篮里的商品还没有被结帐,对其进行结帐,并修改购物总额的值:
此处购物总额中要
*包括GST和运输费(如果total<$100)。
*/
}
publicbooleanisCheckedOut(){
/*
*返回当前购物篮的结帐状态(true或false)。
*/
}
publicfloatgetTotal(){
/*
*返回购物总额,保留2位小数。
*/
}
publicvoidreset(){
/*
*重新初始化该购物篮,以便于开始新一轮的购物。
*/
}
}
(4)第一部分测试代码
完成第一部分后,将下列代码拷贝到名为test.java的文件中,并将其添加到你的项目文件夹里用来测试你的ShoppingCart类。
/**
*Test.java
*说明:
作业一第一部分测试代码。
*/
publicclassTest{
publicstaticvoidmain(String[]arg){
ShoppingCartcart=newShoppingCart();
System.out.println(cart.getTotal()+"<>0.0");
cart.add(“UofACAP”,10);
cart.remove(“UofACAP”,10);
System.out.println(cart.isCheckedOut()+"<>false");
System.out.println(cart.getTotal()+"<>0.0");
cart.reset();
//......
//......
//为测试购物篮的各项功能,你可以多次调用ShoppingCart的各个方法。
}
}
(5)第一部分结束后,你的项目文件夹应包含:
∙名为asn1的项目文件
∙一名为ShoppingCart.java的,通过编译的类。
∙在开始第二部分前,测试第一部分。
现在,可以开始阅读该作业的第二部分。
5.购物过程操作有误时,程序应提示的信息
顾客没有从列表中选择商品就单击"PurchaseItem"来购买商品,界面中提示的信息如图6所示。
图6没有选择任何项目时的界面
如果顾客购买了4个"UofACAP"后,但选择一双"LEATHERSHOES"来进行删除。
注意以下出错的信息。
只能删除预先放在购货车里的商品。
界面中提示的信息如图7所示。
图7删除购物框中没有的商品时的界面
假设购货车里已经有4个帽子,顾客继续试着购买两件冬季大衣,将会产生以下出错信息:
"Yourcartisfull,checkoutthenstartagain",即:
“你的购货车以满,请先结帐,再重新开始购物”。
界面中提示的信息如图8所示。
图8购物框满时的界面
如果顾客想对一个空的购货车进行结帐,将会显示如图9所示的信息:
图9对一个空的购货车进行结帐时的界面
6.程序风格要求
(1)应该给所有的变量和私有方法使用描述性的名称。
(对表示某一点的坐标值:
x和y时,可以使用x和y作为变量名,但这是一个例外)
(2)在定义的每个类和方法的开头加上简洁的注释语句,以说明类和方法的功能。
(3)应该尽可能地让每个方法只完成一件事情,即:
编写轻巧简短的方法。
如果你认为你的方法太长,那就定义私有的实例方法,把一些代码写在私有方法内。
如果你程序里的私有方法太少,将会被扣分。
*
(4)应该对左缩进,空格和空行使用一致、易读的方案。
(5)如果一个变量只局部使用于一个方法,那么就应该把它定义成局部变量而不是实例变量。
(6)应该尽可能少地使用实例变量,尽可能多地使用参数。
(7)不能更改任务说明中给出的任何公共方法(publicmethod)的属性。
(8)必须适当地使用关键字this:
1.必须在所有私有实例变量前加上this。
2.在调用私有实例方法时,必须在所有私有实例方法前面加上this。
该规则只使用于在当前类中定义的私有实例方法前。
(9)你的代码中不能有除了0,1,true,false和null之外的任何文字常量。
如果你需要使用其它的常量,你需要定义一个privatestaticfinalconstant(私有的静态final常量):
/*实验5*/
privatestaticfinalintWIDTH=190;
privatestaticfinalintROOF_HEIGHT=50;
privatestaticfinalStringA_STRING="Justanexample";
/*作业一*/
privatestaticfinalStringRED="Red";
privatestaticfinalStringYELLOW="Yellow";
privatestaticfinalStringBLUE="Blue";
/*作业2*/
privatestaticfinalStringQUESTION="Doyoureallywanttoquit?
";
(10)前述的privatestaticfinalconstants只是个例子,这些常量并没有出现在实验五,作业一或作业二中。
(11)当比较两个对象时(不是简单类型,如:
int,float),要使用消息equals而不是==,(而且使用!
equals而不是!
=)。
(12)如果完成一件事有两种不同方法,请挑选较容易理解的哪一个。
(13)作业一的第一部分,不需要你定义任何实例变量,因为我们已经替你定义好了。
但在第二部分,第三部分中你需要定义自己的实例变量。
(14)如果需要,你可以定义静态final常量staticfinalconstants。
(15)你不能定义任何自己的公共方法publicmethods,你只能使用任务描述中给出的公共方法,但如果需要你可以定义自己的私有方法。
7.大作业第二部分
(1)完成第二部分的应具备的条件
你应该能够完成该作业的第二部分,当你已经:
∙完成了实验5
∙并阅读了每个实验中要你预习的材料
∙完成了作业的第一部分
(2)第二部分的任务
在第一部分,你已经定义了ShoppingCart类。
在第二部分,你将要编写另外一个类(Estore类),在该类中将要创建一个小应用程序(Applet)。
小应用程序Estore将要显示所有的图形用户部件。
第二部分结束时,applet将显示所有的用户部件,但各部件到第三部分结束时才起作用。
(3)EStore类
现在,你可以开始编写Estore类。
将你的文件保存为Estore.java。
(确保将其填加到你的项目文件夹中——它应该出现在项目的程序列表当中)。
将下列程序“骨架”拷贝下来后,你可以开始编辑Estore.java。
请仔细阅读红色的注释语句,先搞明白每个方法中要完成的功能。
importjava.awt.*;
/*
*E-Store
*如果所购商品总额大于$100,免费运送,否则加 $2.00的运送费。
*/
publicclassEStoreextendsApplet{
//常量
privatestaticfinalfloatCOAT_PRICE=50.00f;
privatestaticfinalfloatSHIRT_PRICE=25.50f;
privatestaticfinalfloatSHOES_PRICE=39.99f;
privatestaticfinalfloatHAT_PRICE=10.00f;
privatestaticfinalStringTOTAL_STR="Yourcurrenttotal=$";
privatestaticfinalStringRESET="RESET";
privatestaticfinalStringPURCHASE="PurchaseItem";
privatestaticfinalStringREMOVE="RemoveItem";
privatestaticfinalStringCHECK_OUT="Checkout";
privatestaticfinalStringCOAT_STR="WINTERCOAT";
privatestaticfinalStringSHIRT_STR="LONGSLEEVESHIRT";
privatestaticfinalStringSHOES_STR="LEATHERSHOE";
privatestaticfinalStringHAT_STR="UofACAP";
privatestaticfinalStringWELCOME="WelcometoCMPUT114E-Store";
privatestaticfinalintMAX_ITEMS=5;//购物篮中最多能容纳的商品件数
//实例变量
publicvoidinit(){
/*
*这是被applet调用的第一个方法
*初始化Applet:
初始化变量,添加部件等
*/
}
/*为完成你的类,你可以创建一些私有方法
*/
privatePanelmakeButtonPanel(){
/*
*定义按钮并将其添加到面板(Panel)里,并返回该面板
*/
}
privateScrollPanemakeListPanel(){
/*为列表定义一个滚动窗口(ScrollPane),并返回该滚动窗口
*/
}
privatevoidmakeMainPanel(){
/*
*给主面板添加所有的组件:
标签,列表,按钮面板等。
*/
}
privateListmakeList(){
/*
*给4件商品定义一个列表,一次只能选择一件商品
*/
}
}
(4)HTML文件
将你的HTML文件保存为EStore.html。
其内容如下:
(5)Applet的布局
为帮你形象化并理解applet中组件的布局,我们给你提供以下的图10所示的界面:
图10购物框布局图
(6)第二部分结束后,你的VISUALJ++项目文件夹中应该包含:
∙有一名为asn1.mcp的项目文件
∙有一名为EStore.html的HTML文件
∙有一名为ShoppingCart.java的编译过的java文件
∙有一名为EStore.java的编译过的java文件
第二部分结束后,当你运行你的applet时,它应该能在屏幕上显示所有的组件(但并没有编写响应用户操作的任何代码)。
现在你可以开始阅读作业的第三部分。
8.大作业第三部分
(1)完成第三部分应具备的条件
你应该能够完成作业的第三部分,当你已经:
∙完成实验7
∙阅读完每次实验的预习资料
∙已完成作业的第一部分和第二部分
(2)第三部分的任务
在第一部分和第二部分中,你已经定义了ShoppingCart类和EStore类。
在第三部分你将要继续编辑Estore类,使得该 applet能够响应用户的行为(例如:
当用户/客户点击按钮时,它的确能做一些事情)。
作业的这一部分比较难,因为你必须使得每个按钮都生效。
你将会用栈(Stack)对象来保存购物篮中的商品。
例如,当用户购买一件商品时,该商品将会被押入栈对象内,当用户删除一件商品时,该商品会被弹出栈外。
你可以假设栈对象代表你的购物篮,该购物篮最多只能存放5件商品。
完成作业的第三部分后,你应该实现了EStore和ShoppingCart类的所有功能。
ShoppingCart.java类中的变化:
你将要在ShoppingCart类中增加一个方法,以便客户结帐。
publicvoidcheckOut(){
/*如果购物篮中的商品还没有被结帐的话,给其结帐:
*修改total的值
*计算GST和运输费(如果total<$100)
*/
}
EStore.java类中的变化:
你将要对Estore类进行如下改变,以便你的applet:
∙让applet做各个组件的监听器。
∙实现一个actionPerformed()方法。
由于这些变化,你将要增加几个import语句,并且编辑Estore类的第一行,如下所示:
importjava.awt.*;
importjava.awt.event.*;
importjava.util.Stack;
importjava.applet.Applet;
/*
*E-Store
*如果所购商品总额大于$100,免费运送,否则加 $2.00的运送费及GST。
*/
publicclassEStoreextendsAppletimplementsActionListener{
你必须增加并编写下列方法:
privatevoidaddListeners(){
/*
*让Applet作为各个组件的事件监听器(ActionListener)。
*
}
publicvoidactionPerformed(ActionEventevent){
/*
*对所点击的任何按钮作出适当的响应。
*购买商品
*点击购买按钮之前:
选择预购商品
*不允许选择多件商品
*还没有给当前所购商品结帐
*点击购买按钮之后:
更新购物总额(total标签)的值
*往栈对象添加所购商品
*
*从购物篮中删除商品
*点击删除按钮之前:
选择一件预删商品
*只能删除已经放在购物篮里的商品
*还没有给当前所购商品结帐
*点击删除按钮之后:
要从商品总额(total)中减去被删除商品的价格。
更新
*购物篮中商品总额(total)的值,修改total标签的值,从栈对象中删除所选商*品
*结帐
*点击结帐按钮之前:
购物篮中至少有一件商品,还没有给购物篮中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 作业 要求