package 机考2;
public class Adult extends Person {
@Override
public double getPrice() {
// TODO Auto-generated method stub
return 2000;
}
@Override
public void printInfo() {
System.out.println("姓名是"+super.getName()+",年龄是"+super.getAge()+"类型:成人,价格是"+getPrice());
}
}
package 机考2;
public class Aged extends Person{
@Override
public double getPrice() {
// TODO Auto-generated method stub
return 1000;
}
@Override
public void printInfo() {
System.out.println("姓名是"+super.getName()+",年龄是"+super.getAge()+"类型:老人,价格是"+getPrice());
}
}
package 机考2;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
import 机考1.Traveler;
public class App {
//存放所有订单的集合
private List olist=new ArrayList();
Scanner input=new Scanner(System.in);
private Adult adult;
//打印菜单的方法
public void print() {
System.out.println("***********欢迎光临阳光旅游网**********");
System.out.println("1.添加出行订单\t2.查看我的出行订单\t3.修改订单信息\t4.删除出行人\t5.查看行程\t6.退出系统");
System.out.println("请选择(1-6)");
}
//增加订单
public void addOrder() {
//创建order对象 将对象添加集合中
System.out.println("请输入出行日期:");
String date=input.next();
System.out.println("请输入联系号码:");
String phone=input.next();
//创建一个空的出行人集合
List plist = new ArrayList();
//定义订单的总金额
double total=0;
System.out.println("**********添加出行人信息***********");
String flag="y";
do {
System.out.println("1,成人 \t 2,儿童 \t 3,老人 请选择类别:");
int choose=input.nextInt();
System.out.println("请输入姓名:");
String name=input.next();
System.out.println("请输入年龄:");
int age=input.nextInt();
Person person=null;
switch (choose) {
case 1:
Adult adult2 = new Adult();
break;
case 2:
System.out.println("是否占座(true/false)");
boolean result=input.nextBoolean();//true false
person=new Children(result);
break;
case 3:
Aged aged = new Aged();
break;
}
person.setAge(age);
person.setName(name);
double price = person.getPrice();
total=total+price;
person.printInfo();
plist.add(person);
System.out.println("是否继续添加(y,n):");
flag=input.next();
}while(flag.equalsIgnoreCase("y"));
//创建order对象 将对象添加集合中
Oreder order=new Oreder(phone, date, plist, total);
olist.add(order);
order.show();
}
//查询订单
public void showOrder() {
for (Oreder oreder : olist) {
System.out.println("出行日期:"+oreder.getDate());
System.out.println("联系人手机号码:"+oreder.getPhone());
System.out.println("*****详细信息*****");
System.out.println("姓名 年龄 金额");
List plist = oreder.getPlist();
for (Person person : plist) {
person.printInfo();
}
}
}
//修改订单
public void replace() {
System.out.println("请输入新的出行日期");
String date1 = input.next();
System.out.println("请输入新的联系人号码");
String phone1=input.next();
int a = 11;
if (phone1.toString().length()==a) {
for (Oreder oreder : olist) {
oreder.setDate(date1);
oreder.setPhone(phone1);
}
System.out.println("新的日期"+date1);
System.out.println("新的联系人号码"+phone1);
}
}
public void delete() {
System.out.println("请输入要删除的出行人姓名");
String str=input.next();
List plist =null;
for (int i = 0; i < olist.size(); i++) {
Oreder oreder = olist.get(i);
plist = oreder.getPlist();
}
for (int i = 0; i < plist.size(); i++) {
Person person = plist.get(i);
if (person.getName().equals(str)) {
plist.remove(i);
System.out.println("删除成功");
}else {
System.out.println("该订单信息不存在");
}
}
}
public void line() {
System.out.println("1、游船全线一日游︰");
System.out.println("①下关码头——小普陀——南诏风情岛——蝴蝶泉——大理古城");
System.out.println("②大理古城龙龛码头——小普陀——南诏风情岛——蝴蝶泉——大理古城");
System.out.println("2、游船半线游︰大理古城龙龛码头——金梭岛景区、罗荃半岛景区——大理古城");
System.out.println("3、自驾游1(租车)∶大理古城——崇圣寺三塔——蝴蝶泉");
System.out.println("4、自驾游2(租车)∶远观三塔——蝴蝶泉——双廊古镇");
System.out.println("休闲度假游");
System.out.println("1、逛大理古城——游天龙八部影视城——苍山大索道洗马塘");
System.out.println("2、自驾环洱海(租车)∶大理古城——喜洲——双廊——挖色——小普陀——观音阁——下");
System.out.println("3、大理古城——洱源地热国");
System.out.println("4、逛大理古城——桃溪谷");
}
}
package 机考2;
public class Children extends Person {
private boolean flag;//是否占座
public Children() {
super();
// TODO Auto-generated constructor stub
}
public Children(boolean flag) {
super();
this.flag=flag;
}
public Children(String name, int age,boolean flag) {
super(name, age);
this.flag=flag;
}
@Override
public double getPrice() {
if(flag) {
return 30;
}else {
return 0;
}
}
@Override
public void printInfo() {
System.out.println("姓名是"+super.getName()+",年龄是"+super.getAge()+"类型:儿童,价格是"+getPrice()+",是否占座:"+flag);
}
}
package 机考2;
import java.util.List;
import 机考1.Traveler;
public class Oreder {
private String date;//订单时间
private String phone;//联系号码
private List plist;//出行人集合
private double total;//订单总金额
public Oreder(String date, String phone, List plist, double total) {
super();
this.date = date;
this.phone = phone;
this.plist = plist;
this.total = total;
}
public Oreder() {
super();
// TODO Auto-generated constructor stub
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public List getPlist() {
return plist;
}
public void setPlist(List plist) {
this.plist = plist;
}
public double getTotal() {
return total;
}
public void setTotal(double total) {
this.total = total;
}
//打印订单信息的方法
public void show() {
System.out.println("*******订单信息*******");
System.out.println("出行日期:"+date);
System.out.println("联系人手机号码:"+phone);
System.out.println("订单总金额:"+total);
}
}
package 机考2;
public abstract class Person {
private String name;//名字
private int age;//年龄
public Person() {
super();
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//计算出行的价格
public abstract double getPrice();
//显示自身信息的方法
public abstract void printInfo();
}
package 机考2;
import java.util.Scanner;
public class TestDemo {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
App app = new App();
while(true) {
app.print();//打印菜单
int choose=input.nextInt();
switch (choose) {
case 1:
app.addOrder();
break;
case 2:
app.showOrder();
break;
case 3:
app.replace();
break;
case 4:
app.delete();
break;
case 5:
app.line();
break;
case 6:
System.out.println("退出系统");
return;
}
}
}
}
10月机试题
一、语言和环境 |
|
A、实现语言 |
|
Java |
|
B、环境要求 |
|
Eclipse 10 |
|
二、功能要求 |
开发阳光旅行网app中用户下单功能,可实现用户添加订单并完善出行人信息、修改订单,删除订单以及打印行程信息等功能。
具体功能要求如下:
(1)显示系统主菜单
包括添加出行订单、查看我的出行订单、修改订单信息、删除出行人、查看行程、退出系统6项功能,其他功能本项目不做要求,当用户选择功能编号后可进入执行相应功能。执行结果如图1所示。
(2)添加出行订单
填写出行日期、联系人手机号码、循环录入出行人信息。
出行人信息包括:
每成功录入一条出行人信息后,显示出其详细信息,并计算出行金额。定价如下:
当一条出行人信息录入完毕后,提示“是否继续添加(Y/N)?”,此处不区分大小写,当输入y或Y时继续录入下一条,否则显示订单信息,包括:
最后显示主菜单。执行效果如图2所示。
(3)查看我的出行订单信息
查看我的出行订单:查看所录入的订单信息。包括出行日期、联系人手机号码、所有出行人信息,运行效果如图3所示。
(4)修改行程信息
可修改出行日期、联系人手机号码,要求手机号码必须为11位,否则抛出异常信息,提示“手机号码必须为11位”,运行效果如果4所示。
正确修改后,显示修改后的信息,并提示“修改成功!”。如图5所示。
(5)删除出行人
填写要删除的出行人姓名,执行删除操作,删除成功后给出提示“删除成功!”,如图6所示。如果输入姓名错误,则提示“对不起,定单中不包含此游客信息!”如图7所示。
(6)查看行程
显示本次旅行行程信息。运行效果如图8所示。
(7)退出系统
退出当前系统,显示“欢迎下次再来。”如图9所示。
三、要求与实现步骤
(一)不使用数据库,使用对象和集合存储数据
(二)定义实体类(成人订单、儿童订单、老人订单),儿童订单、老人订单为成人订单的子类。实体类至少包含但不局限于以上3个。
(三)在各实体类中均需实现各自计算订单价格、显示订单信息的方法,使用方法的重写。
(四)定义工具类,实现查看我的出行订单、添加订单、修改行程信息、删除出行人、查看行程等方法。需使用到对象传参。
(五)使用泛型集合存储所有出行人信息,使用集合的遍历实现查看订单信息、统计订单总金额、删除出行人等功能。
(六)显示信息时,只有儿童出行人需显示是否占座,需使用面向对象多态实现。
(七)修改行程信息时,当手机号码录入错误时需使用throw手动抛出异常。
(八)定义测试类,完成项目功能菜单以及整体流程,调用相应方法实现具体功能。