逻辑分析:
主播系统(增删改查+排序)
1、创建主播实体类(ps:实体类:存储信息和相关行为建模的类)
2、创建主播管理类,显示操作菜单和操作主播数组,封装主播系统的核心业务
3、在main方法中调用主播管理类
主播实体类:
基本属性:id、name、技能、介绍、粉丝数、颜值、头像
初始化(构造方法)、访问(set、get方法)
+:控制主播对象打印格式toString
主播管理类:(封装主播核心业务)增删改查+排序
1、增减主播
2、查看主播信息(查看所有主播、或者:根据主播id查找主播)
3、主播粉丝排序
4、主播线上圈粉
5、主播拉黑(删除主播)
基本属性:管理的主播数组、当前数组主播数量、数组最大容量、主播系统名称、scanner、MaxOfShower(static final)
方法:1、addShower(){
(1).输入(动作重复)--设置为一个变量(属性),并且其初始化,scanner = new Scanner(System.in);可以放在默认构造中
(2).增加到主播数组中--初始化主播数组(默认构造初始化):showerArray = new Shower[MaxOfShower];--+static final变量
(3)增加,因为考虑数组容量--判断一下数组容量问题--(且一开始增加前九应该先判断)
2、查看所有主播(显示)
测试驱动开发
3、圈粉(生成随机数字(固定数字范围中)--主播类的粉丝)
测试驱动开发
4、排序:
(1)前提:数组中至少有一个元素,需要判断一下
测试驱动开发
5、删除主播
测试驱动开发
增加:欢迎界面:欢迎进入**************--(初始化)放到管理类默认构造中
增加:整个程序的执行结构--上面方法测试成功后,在主方法中给出整个程序的执行结构,来完成整个程序:(循环+选择结构:while+switch)
}
代码:
主播实体类:
package com.xuetang9.kenny.showerdemo; /** * 类说明:anchor 主播实体类,基本属性+打印格式toString * @author: Yu * @version: 1.0 * 创建时间:2021年2月2日 下午6:57:13 */ public class anchor { private long id; //主播id private String name; //主播姓名 private String skill; //主播技能 private String intro; //主播介绍 private long fansCount; //主播粉丝数 private double face; //主播颜值 private String imagePath;//主播头像路径 public anchor() { this(0, "默认主播", "天生我才", "我就是彪悍"); } public anchor(long id, String name, String skill, String intro) { this.id = id; this.name = name; this.skill = skill; this.intro = intro; this.fansCount = (int)(Math.random() * 10000)% 1001 + 1000; } //用来控制主播的打印格式 public String toString() { String str = String.format("%d\t%s\t%s\t%s\t%d", id, name, skill, intro, fansCount); return str; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSkill() { return skill; } public void setSkill(String skill) { this.skill = skill; } public String getIntro() { return intro; } public void setIntro(String intro) { this.intro = intro; } public long getFansCount() { return fansCount; } public void setFansCount(long fansCount) { this.fansCount = fansCount; } public double getFace() { return face; } public void setFace(double face) { this.face = face; } public String getImagePath() { return imagePath; } public void setImagePath(String imagePath) { this.imagePath = imagePath; } }
主播管理类:
package com.xuetang9.kenny.showerdemo; import java.util.Scanner; /** * 类说明: 主播管理类,用来实现主播管理的核心业务逻辑,操作主播数组和显示操作菜单 * @author: Yu * @version: 1.0 * 创建时间:2021年2月2日 下午7:07:02 */ public class anchorManager { private anchor[] anchorArray; //管理类管理的主播数组 private int count; //主播数组中当前主播数 private static final int MaxOfAnchor = 1024;//主播数组最大容量 private String sysName; //管理系统的名字 Scanner scanner; public anchorManager() { anchorArray = new anchor[MaxOfAnchor]; count = 0; scanner = new Scanner(System.in); } public anchorManager(String sysName) { this(); this.sysName = sysName; } //1、增加主播 //2、删除主播 //3、查看所有主播 //4、主播排序 //5、主播圈粉 /** * 1、增加主播 */ public void addAnchor() { //首先,判断主播数组空间容量 if(count == MaxOfAnchor) { System.out.println("主播数组已经满了,添加主播失败!"); return; } System.out.println("请输入主播信息:"); System.out.println("主播id:"); //输入动作重复,--设置为一个变量 long id = scanner.nextLong(); System.out.println("主播姓名:"); String name = scanner.next(); System.out.println("主播技能:"); String skill = scanner.next(); System.out.println("主播介绍:"); String intro = scanner.next(); anchorArray[count] = new anchor(id, name, skill, intro); //主播数量+1 count++; } /** * 2、删除主播 */ public void deleteAnchor() { System.out.println("请输入要删除主播id:"); long delId = scanner.nextLong(); int deleteId = findId(delId); if(deleteId == -1) { System.out.println("当前主播已经下播,删除失败!"); return; } //删除操作:删除数组元素,数组元素前移一位 for(int i = deleteId; i < count; i++) { anchorArray[i] = anchorArray[i + 1]; } //主播数量-1 count--; } private int findId(long delId) { for(int i = 0; i < count; i++) { if(delId == anchorArray[i].getId()) { //找到了要主播数组下标 return i; } } //循环正常结束,没有找到主播数组下标 return -1; } /** * 3、查看所有主播 */ public void ShowAll() { System.out.println("查看当前主播系统:"); System.out.println("编号\t姓名\t技能\t介绍\t粉丝数"); for(int i = 0; i < count; i++) { System.out.println(anchorArray[i]); } } /** * 4、主播排序 */ public void SortById() { //首先,判断一下主播数组当前元素个数是否大于等于1 if(count <= 0) { System.out.println("当前没有主播在线!"); return; } //选择排序法 long minFansCount = 0; int minIndex = -1; for(int i = 0; i < count; i++) { minFansCount = anchorArray[i].getFansCount(); minIndex = i; for(int j = i + 1; j < count; j++) { if(minFansCount > anchorArray[j].getFansCount()) { minIndex = j; minFansCount = anchorArray[j].getFansCount(); } } if(minIndex > i) { //交换 anchor tempAnchor = anchorArray[i]; anchorArray[i] = anchorArray[minIndex]; anchorArray[minIndex] = tempAnchor; } } } }
Main方法:
package com.xuetang9.kenny.showerdemo; /** * 类说明: 主方法调用管理类,实现测试驱动开发 * @author: Yu * @version: 1.0 * 创建时间:2021年2月2日 下午7:39:07 */ public class Main { public static void main(String[] args) { anchorManager anchorManager = new anchorManager("soga"); anchorManager.addAnchor(); // anchorManager.addAnchor(); // anchorManager.ShowAll(); // anchorManager.deleteAnchor(); // anchorManager.ShowAll(); anchorManager.addAnchor(); anchorManager.addAnchor(); anchorManager.SortById(); anchorManager.ShowAll(); } }
最后Main中需要自己写一下循环结构+选择结构啦