一.吃货联盟系统(集合+面向对象)
1.系统的菜单类
public class Menu {
private String dishNames; //菜品名称
private double prices ; //菜品单价
private int praiseNums; //点赞数
public Menu(String dishNames, double prices, int praiseNums) {
this.dishNames = dishNames;
this.prices = prices;
this.praiseNums = praiseNums;
}
public Menu() {
}
public String getDishNames() {
return dishNames;
}
public void setDishNames(String dishNames) {
this.dishNames = dishNames;
}
public double getPrices() {
return prices;
}
public void setPrices(double prices) {
this.prices = prices;
}
public int getPraiseNums() {
return praiseNums;
}
public void setPraiseNums(int praiseNums) {
this.praiseNums = praiseNums;
}
}
2.系统的订餐类
public class Order {
private String names;//保存订餐人姓名
private String dishMegs;// 保存所选菜品名
private int dishNums;// 保存所选菜品份数
private int times;// 保存送餐时间
private String addresse;// 保存送餐地址
private int states;// 保存订单状态:0表示已预订,1表示已完成
private double sumPrices;// 保存订单的总金额
public Order() {
}
public Order(String names, String dishMegs, int dishNums, int times, String addresse, int states, double sumPrices) {
this.names = names;
this.dishMegs = dishMegs;
this.dishNums = dishNums;
this.times = times;
this.addresse = addresse;
this.states = states;
this.sumPrices = sumPrices;
}
public String getNames() {
return names;
}
public void setNames(String names) {
this.names = names;
}
public String getDishMegs() {
return dishMegs;
}
public void setDishMegs(String dishMegs) {
this.dishMegs = dishMegs;
}
public int getDishNums() {
return dishNums;
}
public void setDishNums(int dishNums) {
this.dishNums = dishNums;
}
public int getTimes() {
return times;
}
public void setTimes(int times) {
this.times = times;
}
public String getAddresse() {
return addresse;
}
public void setAddresse(String addresse) {
this.addresse = addresse;
}
public int getStates() {
return states;
}
public void setStates(int states) {
this.states = states;
}
public double getSumPrices() {
return sumPrices;
}
public void setSumPrices(double sumPrices) {
this.sumPrices = sumPrices;
}
}
3.系统的方法类
import java.util.ArrayList;
import java.util.Scanner;
public class Method {
public Method() {
}
Scanner sc = new Scanner(System.in);
//初始化信息
public void csh(ArrayList<Order> order, ArrayList<Menu> menu) {
Order order1 = new Order("小方", "鱼香肉丝", 3, 10, "207", 0, 60);
Order order2 = new Order("小方", "鱼香肉丝", 3, 10, "207", 0, 60);
//将元素录入到order集合中
order.add(order1);
order.add(order2);
Menu menu1 = new Menu("红烧带鱼", 40, 0);
Menu menu2 = new Menu("鱼香肉丝", 20, 0);
Menu menu3 = new Menu("时令鲜蔬", 10, 0);
//将元素录入到menu集合中
menu.add(menu1);
menu.add(menu2);
menu.add(menu3);
}
//功能菜单
public void gncd() {
System.out.println("************************");
System.out.println("1、我要订餐");
System.out.println("2、查看餐袋");
System.out.println("3、签收订单");
System.out.println("4、删除订单");
System.out.println("5、我要点赞");
System.out.println("6、退出系统");
System.out.println("************************");
System.out.print("请选择:");
}
//循环控制
public void loopKZ(ArrayList<Order> order, ArrayList<Menu> menu) {
int num = 1;// 用户输入0返回主菜单否则退出系统
boolean isExit = false;// 标记用户是否退出系统,true为退出
Scanner sc = new Scanner(System.in);
System.out.println("欢迎使用“吃货联盟订餐系统”");
// 循环控制用户输入选择并执行
do {
gncd();
num = sc.nextInt();
switch (num) {
case 1://我要订餐
CustomerOrders(order, menu);
break;
case 2://查看餐袋
show(order);
break;
case 3:// 签收订单
signIn(order);
break;
case 4:// 删除订单
delete(order);
break;
case 5:// 我要点赞
wellReceived(menu);
break;
case 6:
isExit = true;
break;
}
num = loop(isExit, num);
} while (num == 0);
}
//判断是否循环
public int loop(boolean isExit, int num) {
int x = num;
if (!isExit) {
System.out.print("输入0返回:");
x = sc.nextInt();
}
return x;
}
//显示菜品信息
public void showMenu(ArrayList<Menu> menu) {
System.out.println("序号" + "\t" + "菜名" + "\t\t\t" + "单价" + "\t\t" + "点赞数");
for (int j = 0; j < menu.size(); j++) {
System.out.println((j + 1) + "\t" + menu.get(j).getDishNames() + "\t\t" + menu.get(j).getPrices() + "元" + "\t" + menu.get(j).getPraiseNums());
}
}
//订餐功能
public void CustomerOrders(ArrayList<Order> order, ArrayList<Menu> menu) {
System.out.println("***我要订餐***");
boolean isAdd = false;
for (int i = 0; i < order.size(); i++) {
showMenu(menu);
System.out.print("请输入订餐人姓名:");
String name = sc.next();
System.out.print("请选择您要点的菜品编号:");
int chooseDish = sc.nextInt();
// if (chooseDish+1>3){
// break;
// }
//保存所选择的菜名
String dishMeg = menu.get(chooseDish - 1).getDishNames();
System.out.print("请选择您需要的份数:");
int number = sc.nextInt();
System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送餐):");
int time = sc.nextInt();
while (time < 10 || time > 20) {
System.out.print("您的输入有误,请输入10-20间的整数");
time = sc.nextInt();
}
System.out.print("请输入送餐地址:");
String address = sc.next();
// 默认可以预定,不用写订单状态
System.out.println("订餐成功!");
System.out.println("您定的是:" + menu.get(chooseDish - 1).getDishNames() + number + "份");
System.out.println("送餐时间:" + time + "点");
double sumPrice = menu.get(chooseDish - 1).getPrices() * number;// 计算餐费
double sendMoney = (sumPrice >= 50) ? 0 : 5;// 计算送餐费
System.out.println("餐费:" + sumPrice + "元," + "送餐费" + sendMoney + "元," + "总计:"
+ (sumPrice + sendMoney) + "元。");
//将客户输入信息录入订单中
Order order3 = new Order(name, dishMeg, number, time, address, 0, sumPrice);
break;
}
}
//查看餐袋
public void show(ArrayList<Order> order) {
System.out.println("***查看餐袋***");
System.out.println("序号\t订餐人\t餐品名称\t餐品数量\t送餐时间\t送餐地址\t总金额\t订单状态");
for (int i = 0; i < order.size(); i++) {
if (order.get(i) != null) {
String state = (order.get(i).getStates() == 0) ? "已预订" : "已完成";
System.out.println((i + 1) + "\t" + order.get(i).getNames() + "\t\t" + order.get(i).getDishMegs() + "\t" + order.get(i).getDishMegs() + "份"
+ "\t" + order.get(i).getTimes() + "\t" + order.get(i).getAddresse() + "\t\t" + order.get(i).getSumPrices() + "元" + "\t" + state);
}
}
}
// 签收订单
public void signIn(ArrayList<Order> order) {
System.out.println("***签收订单***");
System.out.print("请选择要签收的订单序号:");
int sign = sc.nextInt();
if (order.get(sign - 1) == null && sign < order.size()) {
System.out.println("未找到订单信息");
} else if (order.get(sign - 1).getStates() == 0 && sign < order.size() && sign > 0) {
order.get(sign - 1).setStates(1);
System.out.println("订单签收成功!");
} else if (order.get(sign - 1).getStates() == 1 && sign < order.size() && sign > 0) {
System.out.println("您选择的订单已完成签收,不能再次签收!");
}
}
// 删除订单
public void delete(ArrayList<Order> order) {
System.out.println("***删除订单***");
System.out.print("请输入要删除的订单序号:");
int delID = sc.nextInt();
if ( delID >order.size()|| delID < 1) {
System.out.println("未找到订单信息");
} else if (delID<= order.size() && delID-1 > 0 && order.get(delID - 1).getStates() == 1) {
order.remove(delID-1);
show(order);
System.out.println("删除订单成功!");
} else if (order.get(delID - 1).getStates() == 0) {
System.out.println("您选择的订单未签收,不能删除!");
}
}
//菜品点赞
public void wellReceived(ArrayList<Menu> menu) {
System.out.println("***我要点赞***");
showMenu(menu);
System.out.print("请选择您要点赞的菜品序号:");
int number = sc.nextInt();
if (number > menu.size() || number < 0) {
System.out.println("输入错误");
} else {
menu.get(number - 1).setPraiseNums(menu.get(number - 1).getPraiseNums() + 1);
System.out.println("点赞成功");
}
}
public void end() {
System.out.println("谢谢惠顾,欢迎您再次使用!");
sc.close();
}
}
4.系统的测试类
public static void main(String[] args) {
ArrayList<Menu> menu=new ArrayList<>();
ArrayList<Order> order=new ArrayList<>();
//功能对象
Method method = new Method();
method.csh(order,menu);
// 实现菜单切换
method.loopKZ(order,menu);
//结束控制
method.end();
}
二.图书管理系统(集合+面向对象)
1.系统的图书类
public class BookInformation {
// 图书相关信息,最多只能存储6个图书信息
String name; // 图书名称
int state; // 借阅状态,0:可借阅 ;1:已借出
int date ; // 借出日期
int count; // 借出次数
public BookInformation(String name, int state, int date, int count) {
this.name = name;
this.state = state;
this.date = date;
this.count = count;
}
public BookInformation() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public int getDate() {
return date;
}
public void setDate(int date) {
this.date = date;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
2.图书管理系统的方法类
import java.util.ArrayList;
import java.util.Scanner;
public class Method {
Scanner input = new Scanner(System.in);
//循环
public void loopZong(ArrayList<BookInformation> book) {
boolean flag = true;
int num = -1;
// 循环操作
do {
// 输出欢迎菜单
cd();
int choose = input.nextInt();
switch (choose) {
case 1:
//新增图书
addBook(book);
break;
case 2:
showBook(book);
// 查看图书
break;
case 3:
delete(book);
showBook(book);
// 删除图书
break;
case 4:
// 借出图书
lend(book);
break;
case 5:
// 归还图书
returnBook(book);
break;
case 6:
// 退出图书
flag = false;
break;
default:
flag = false;
break;
}
num = end(flag, num);
} while (num == 0);
System.out.println("谢谢使用!");
}
//菜单
public void cd() {
System.out.println("欢迎使用迷你图书管理器");
System.out.println("-------------------------");
System.out.println("1.新增图书");
System.out.println("2.查看图书");
System.out.println("3.删除图书");
System.out.println("4.借出图书");
System.out.println("5.归还图书");
System.out.println("6.退出图书");
System.out.println("-------------------------");
System.out.println("请选择:");
}
public void info(ArrayList<BookInformation> list) {
// 初始化第一本本图书
BookInformation book1 = new BookInformation("罗马假日", 1, 1, 15);
// 初始化第二本图书
BookInformation book2 = new BookInformation("白雪公主", 0, 0, 12);
// 初始化第三本图书
BookInformation book3 = new BookInformation("葫芦兄弟", 0, 0, 30);
//将元素放入集合中
list.add(book1);
list.add(book2);
list.add(book3);
}
//新增图书
public void addBook(ArrayList<BookInformation> book) {
System.out.println("-->新增图书\n");
System.out.println("请输入增加的图书名:");
String BookName = input.next();
// 判断添加书的书名是否重复
boolean flag2 = false;
// 循环查找图书馆里的可存放书的地方
for (int i = 0; i < book.size(); i++) {
if (book.get(i).getName().equals(BookName)) {
System.out.println("该书已上架");
flag2=true;
break;
}
}
if (!flag2) {
BookInformation addBook = new BookInformation();
addBook.setName(BookName);
book.add(addBook);
System.out.println("新增《" + BookName + "》成功!");
}
System.out.println("*****************************************");
}
//查看图书
public void showBook(ArrayList<BookInformation> book) {
System.out.println("-->查看图书\n");
System.out.println("序号\t状态\t\t名称\t\t借出日期\t借出次数");
for (int i = 0; i < book.size(); i++) {
// 三目运算符
String BookState = (book.get(i).getState() == 0) ? "可借阅" : "已借出";
String dateStr = (book.get(i).getDate() == 0) ? "" : (book.get(i).getDate() + "日");
System.out.println(
(i + 1) + "\t" + BookState + "\t" + book.get(i).getName() + "\t" + dateStr + "\t\t" + book.get(i).getCount() + "次");
}
System.out.println("*****************************************");
}
// 删除图书
public void delete(ArrayList<BookInformation> book) {
System.out.println("-->删除图书\n");
System.out.println("请输入要删除图书的名称:");
String delete = input.next();
boolean flag3 = false;
for (int i =0; i <book.size(); i++) {
if (book.get(i).getName().equals(delete) && book.get(i).getState() == 0) {
flag3=true;
book.remove(i);
System.out.println("删除成功");
break;
} else if (book.get(i).getName().equals(delete) && book.get(i).getState() == 1) {
flag3 = true;
System.out.println("该图书已被借出,目前无法删除!");
}
}
if (!flag3) {
System.out.println("没有找到匹配信息!");
}
}
// 借出图书
public void lend(ArrayList<BookInformation> book) {
System.out.println("-->借出图书\n");
System.out.print("请输入图书名称:");
String want = input.next(); // 要借出的图书名称
for (int i = 0; i < book.size(); i++) {
if (book.get(i).getName().equals(want) && book.get(i).getState() == 0) {
book.get(i).setState(1);//修改书籍状态为已借出
System.out.print("请输入借出日期:");
book.get(i).setDate(input.nextInt());
while (book.get(i).getDate() < 1 || book.get(i).getDate() > 31) { // 当输入借出的日期不满足1-31时
System.out.println("必须输入大于等于1且小于等于31的数字,请重新输入:");
book.get(i).setDate(input.nextInt());
}
System.out.println("借出《" + want + "》成功!");
book.get(i).setCount(book.get(i).getCount() + 1);
break;
} else if (book.get(i).getName().equals(want) && book.get(i).getState() == 1) {
System.out.println("《" + want + "》已被借出!");
break;
} else {
}
if (i == book.size() - 1) {
System.out.println("未找到所需的图书");
System.out.println("*****************************************");
}
}
}
// 归还图书
public void returnBook(ArrayList<BookInformation> book) {
System.out.println("-->归还图书\n");
int charge = 0; // 租金
System.out.print("请输入归还图书名称:");
String want = input.next();
for (int i = 0; i < book.size(); i++) {
if (book.get(i).getName().equals(want) && book.get(i).getState() == 1) {
book.get(i).setState(0);//修改书籍状态为可借阅
System.out.print("请输入归还日期:");
int redate = input.nextInt();
while (book.get(i).getDate() < 1 || book.get(i).getDate() > 31) { // 当输入借出的日期不满足1-31时
if (redate < book.get(i).getDate()) {
System.out.println("归还日期不能小于借出日期,请重新输入:");
} else {
System.out.println("一个月只有31天,请重新输入:");
}
redate = input.nextInt();
}
charge = redate -book.get(i).getDate();
System.out.println("\n归还《" + want + "》成功!");
System.out.println("借出日期为:" + book.get(i).getDate() + "日");
System.out.println("归还日期为:" + redate + "日");
System.out.println("应付租金(元):" + charge);
book.get(i).setDate(0);
break;
} else if (book.get(i).getName().equals(want) && book.get(i).getState() == 1) {
System.out.println("该图书尚未借出,无法进行归还操作!");
break;
}
if (i == book.size()) {
System.out.println("未找到需要归还的图书");
System.out.println("*****************************************");
break;
}
}
}
public int end(boolean flag, int num) {
int x = num;
if (flag) {
System.out.println("输入0返回:");
x = input.nextInt();
return x;
} else {
return x;
}
}
}
3.图书管理系统的测试类
public static void main(String[] args) {
//创建集合
ArrayList<BookInformation> list=new ArrayList();
// 图书相关信息,最多只能存储6个图书信息
Method method=new Method();
method.info(list);
method.loopZong(list);
}