java面向对象编写宠物商店管理系统,控制台输出和输入,使用map集合和list集合存储输入的数据信息。
宠物抽象类:
public class Pet {
private String name;
private int age;
private String sex;
private String strain;
private int inPrice;
private int outPrice;
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 String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getStrain() {
return strain;
}
public void setStrain(String strain) {
this.strain = strain;
}
public int getInPrice() {
return inPrice;
}
public void setInPrice(int inPrice) {
this.inPrice = inPrice;
}
public int getOutPrice() {
return outPrice;
}
public void setOutPrice(int outPrice) {
this.outPrice = outPrice;
}
public Pet() {
}
public Pet(String name, int age, String sex, String strain, int inPrice, int outPrice) {
this.name = name;
this.age = age;
this.sex = sex;
this.strain = strain;
this.inPrice = inPrice;
this.outPrice = outPrice;
}
public void play() {
System.out.printf("宠物:%stt年龄:%dtt性别:%stt品种:%stt购入价格:%dtt售出价格:%dtt利润:%dn",
this.name, this.age, this.sex, this.strain, this.inPrice, this.outPrice, (this.outPrice - this.inPrice));
}
}
宠物管理接口:
import java.util.ArrayList;
//宠物管理接口
public interface PetAdministration {
/**
void showAllPets(ArrayList<Pet>pets);
/**
void findPetByName(String name,ArrayList<Pet>pets);
/**
void deletePetByName(String name,ArrayList<Pet>pets,ArrayList<Pet> pets1);
/**
Pet petInformation();
/**
void addPets(Pet pet,ArrayList<Pet>pets);
/**
void updatePets(String name,ArrayList<Pet>pets);
/**
void sortByInprice(ArrayList<Pet>pets);
/**
void sortByOutPrice(ArrayList<Pet>pets);
/**
void sortByProfit(ArrayList<Pet>pets);
/**
void findDeletePets(ArrayList<Pet>pets1);
}
接口实现类:
import org.junit.Test;
import java.util.*;
import java.util.stream.Collectors;
/**
public class PetBiz implements PetAdministration {
Scanner input = new Scanner(System.in);
Pet pet4 = new Pet();
/**
@Override
public void showAllPets(ArrayList<Pet> pets) {
if (pets.size() == 0) {
System.out.println("没有查询到宠物信息!!您的宠物商店还没有宠物!!");
}
for (Pet pet : pets) {//遍历集合 调用play方法输出
if (pet.getName() != null) {
pet.play();
}
}
}
/**
@Override
public void findPetByName(String name, ArrayList<Pet> pets) {
boolean flag = false;//标志位 flag
for (Pet pet1 : pets) {//遍历集合
if (pet1.getName().equals(name)) {//如果传递的参数(name)和集合中的name相同
pet1.play();//调用显示方法
flag = true;//修改标志位
break;//跳出循环
}
}
if (!flag) {//如果遍历后标志位没有变,输出该宠物不存在
System.out.println(name + "不存在!!");
}
}
/**
@Override
public void deletePetByName(String name, ArrayList<Pet> pets, ArrayList<Pet> pets1) {
boolean flag = false;//标志位
for (Pet pet2 : pets) {
if (pet2.getName().equals(name)) {
pet4 = pet2;
pets1.add(pet4);
pets.remove(pet2);
flag = true;
System.out.println("宠物删除成功!!");
break;
}
}
if (!flag) {
System.out.println("删除失败!!! 宠物" + name + "不存在!!");
}
}
/**
@Override
public Pet petInformation() {
System.out.print("宠物名字:");
String name = input.next();
System.out.print("年龄:");
int age = input.nextInt();
System.out.print("性别:");
String sex = input.next();
System.out.print("品种:");
String strain = input.next();
System.out.print("购入价格:");
int inPrice = input.nextInt();
System.out.print("售出价格:");
int outPrice = input.nextInt();
return new Pet(name, age, sex, strain, inPrice, outPrice);
}
/**
@Override
public void addPets(Pet pet, ArrayList<Pet> pets) {
pets.add(pet);//对象.add(对象)
}
/**
@Override
public void updatePets(String name, ArrayList<Pet> pets) {
boolean flag = false;//标志位
for (Pet pet2 : pets) {
if (pet2.getName().equals(name)) {//对比集合中的宠物姓名和输入的宠物姓名 如果相同删除该宠物信息
pets.remove(pet2);
System.out.println("请输入要修改的宠物信息:");
Pet pet3 = petInformation();//调用输入宠物信息的方法
pets.add(pet3);
flag = true;//修改标志位
System.out.println("修改成功!!");
break;
}
}
if (!flag) {
System.out.println(name + "不存在!!");
}
}
/**
@Override
public void sortByInprice(ArrayList<Pet> pets) {
/* //Collections是一个工具类,sort是其中的静态方法,是用来对List集合进行排序的
//当集合中的元素为某个类的实例时,则必须传入比较器,比较器无法省略
//compare(类名 o1,类名 o2) 返回值为
//当值>0时,相邻的两个元素o1和o2不交换位置;值<0时,相邻的两个元素o1和o2交换位置。
// 需要注意的是,o1是List中下标较大的那个元素,o2是List中下标较小的那个元素
Collections.sort(pets, (o1, o2) -> o1.getInPrice() - o2.getInPrice());*/
/*双冒号(::)运算符在Java 8中被用作方法引用(method reference)*/
Collections.sort(pets, Comparator.comparingInt(Pet::getInPrice).reversed());
}
/**
@Override
public void sortByOutPrice(ArrayList<Pet> pets) {
Collections.sort(pets, Comparator.comparingInt(Pet::getOutPrice));
}
/**
@Override
public void sortByProfit(ArrayList<Pet> pets) {
Collections.sort(pets, Comparator.comparingInt(o -> (o.getOutPrice() - o.getInPrice())));
}
/**
@Override
public void findDeletePets(ArrayList<Pet> pets1) {
if (pets1.size() == 0) {
System.out.println("还没有删除数据哦!!!");
} else {
for (Pet pet : pets1) {
pet.play();
}
}
}
}
工具类:
import org.junit.Test;
import java.text.SimpleDateFormat;
import java.util.*;
public class Tool1 {
//属性
String userName;//用户名
String password;//密码
Map<String, String> map = new HashMap<>();
Scanner input = new Scanner(System.in);
@Test
public void register() {//注册
map.put("zsss1", "111111");//初始化信息
map.put("admin1", "123456");
map.put("admin", "111111");
System.out.println("*****欢迎使用宠物商店管理系统!!!*****");
while (true) {
System.out.println("请选择要进行的操作:1、注册 2、登录");//菜单
int num3 = input.nextInt();
if (num3 == 1) {//注册
while (true) {
System.out.print("请输入用户名:");
userName = input.next();
System.out.print("请输入密码:");
password = input.next();
System.out.print("请再次输入密码:");
String password1 = input.next();
boolean flag = false;//标志位
//执行分支 判断用户名和密码长度是否满足
if (userName.length() > 3 && password1.length() >= 6) {//判断信息长度是否满足设置的要求
//判断用户名是否已存在 用map集合中的键和用户名对比,用户名不存在,将其加入到集合中,存在给出提示
// Set keySet = map.keySet();//key的set集合,即map集合中所有的userName
//只需要对比用户名即可,如果用户名存在,修改标志位,不存在继续执行下一步操作
String[] str = map.keySet().toArray(new String[map.keySet().size()]);
for (int i = 0; i < str.length; i++) {
if (str[i].equals(userName)) {//用户名与map集合中的键相同
flag = true;//修改标志位
break;
}
}
if (flag) {//flag==true 对比标志位,如果存在,即执行了上述循环中的if语句
System.out.println("用户已存在!!");//输出提示信息后继续执行循环
} else {//flag为false,即集合中不存在对应的用户名,可以注册
if (password.equals(password1)) {//对比两次输入的密码是否一致 如果一致,将其存入集合
map.put(userName, password);//键值对,键为用户名,值为密码
System.out.println("注册成功,请牢记用户名和密码!!");
break;
} else {//前后密码不一致,不用跳出循环
System.out.println("两次密码不相同!!");
//用户名与map集合中的元素不相同,判断密码是否相同
}
}
} else {//最开始执行的判断密码和用户名长度是否满足需求中的不满足需求,不满足跳出循环,执行外层循环,继续询问
System.out.println("用户名长度不能小于3,密码长度不能小于6!!");
break;
}
}
} else if (num3 == 2) {//登录
Date date = new Date();//时间类
System.out.println("请输入用户名和密码进行登录!!");
System.out.print("请输入用户名:");//输入登录账户
String userName2 = input.next();
System.out.print("请输入密码:");
String password2 = input.next();//输入密码
SimpleDateFormat sd = new SimpleDateFormat("HH");//时间格式化后输出获取时间的小时,根据小时数来判断时间段
String str = sd.format(date);//将格式化后的时间(小时)转为字符串
int a = Integer.parseInt(str);//parseInt() 方法用于将字符串参数作为有符号的十进制整数进行解析,返回用十进制参数表示的整数值
String time = "";
if (a >= 0 && a <= 6) {
time = "凌晨";
} else if (a >= 7 && a < 12) {
time = "上午";
} else if (a >= 13 && a < 19) {
time = "下午";
} else if (a >= 20) {
time = "晚上";
}
if (map.get(userName2) == null) {//map集合中获取输入的用户名返回值为null,用户不存在
System.out.println("用户不存在");
} else if (map.get(userName2).equals(password2)) {//返回值非空,用户存在,对比输入的密码和集合中获取的密码
//System.out.println(map.get(userName2)+"***"+password2);
System.out.println("登录成功!!");
System.out.println(userName2 + time + "好 欢迎登录宠物商店管理系统!!!");
break;
} else {//用户不存在 用户存在但是密码不匹配 用户存在且密码匹配
System.out.println("登录失败,密码错误!!!");
}
} else {
System.out.println("您的输入有误!!!");
continue;
}
}
}
}
测试类:
import java.util.ArrayList;
import java.util.Scanner;
/**
public class TestPet {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//注册和登录
Tool1 tool1 = new Tool1();//新建对象
tool1.register();//调用方法
PetBiz petBiz = new PetBiz();
ArrayList<Pet> pets = new ArrayList<>();
ArrayList<Pet> pets1 = new ArrayList<>();
System.out.println("********宠物商店管理系统********");
//初始化数据
pets.add(new Pet("小白", 1, "F", "狗", 100, 200));
pets.add(new Pet("张三", 2, "M", "猫", 200, 400));
pets.add(new Pet("小小", 3, "F", "狗", 900, 876));
while (true) {
System.out.println("请选择要执行的操作:1.查看所有宠物 2.按名字查找宠物 3.删除宠物 4.添加宠物 " +
"5.修改宠物信息 6.按购入价格排序 7.按出售价格排序 8.按利润排序 9.查看删除记录 0.退出");
try {
int num = input.nextInt();
switch (num) {//分支选择要进行的操作
case 1:
petBiz.showAllPets(pets);//查看所有宠物信息
break;
case 2:
System.out.print("请输入要查找的宠物名字:");
String name = input.next();
petBiz.findPetByName(name, pets);//按名字查找宠物
break;
case 3:
System.out.print("请输入要删除的宠物的名字:");
String name1 = input.next();
petBiz.deletePetByName(name1, pets, pets1);//按名字删除宠物
break;
case 4:
Pet pet = petBiz.petInformation();//添加宠物信息
pets.add(pet);//将传递的宠物信息添加到集合中
System.out.println("添加成功!!");//输出提示信息
break;
case 5:
System.out.print("请输入要修改的宠物名字:");
String name2 = input.next();//录入需要修改的宠物信息
petBiz.updatePets(name2, pets);//调用修改宠物信息的方法,传递参数为录入的宠物姓名
break;
case 6:
petBiz.sortByInprice(pets);//调用按进价排序的方法
petBiz.showAllPets(pets);//将排序后的集合输出
break;
case 7:
petBiz.sortByOutPrice(pets);
petBiz.showAllPets(pets);
break;
case 8:
petBiz.sortByProfit(pets);
petBiz.showAllPets(pets);
break;
case 9:
petBiz.findDeletePets(pets1);//查看已经删除的数据信息
break;
case 0:
System.out.println("再见,欢迎再次使用宠物管理系统!!!");
System.exit(1);
default:
System.out.println("您的选择有误!!!请重新选择!!!");
}
} catch (Exception e) {
System.out.println("输入错误!!!");
break;
}
}
}
}
实现注册登录功能后进行宠物管理,有一些异常因为没有重写异常类,只能抛出异常,没有进行处理
相关知识
[附源码]java毕业设计宠物商店管理系统
java宠物商店管理系统
java宠物商店项目
jsp宠物商店管理系统0ueh8
springboot+vue宠物商店管理系统【开题+程序+论文】
宠物商店管理系统功能详解与操作指南
jsp宠物商店管理系统3apmj
Java实现简单的宠物商店管理系统
java基于springboot+vue的宠物商店领养挂失管理系统 element 前后端分离
Java宠物商店项目案例分析与实践
网址: java宠物商店管理系统 https://m.mcbbbk.com/newsview551483.html
上一篇: 耐养便宜的宠物排行榜(最适合懒人 |
下一篇: 宠物商店管理系统 |