增删改查+排序的小系统

逻辑分析:

主播系统(增删改查+排序)

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中需要自己写一下循环结构+选择结构啦

以上来自老九学堂个人整理的上课笔记啦啦啦

 

 

 

     

posted @ 2021-02-02 20:20  一乐乐  阅读(90)  评论(0编辑  收藏  举报