增删改查+排序的小系统

简介: 1、创建主播实体类(ps:实体类:存储信息和相关行为建模的类)2、创建主播管理类,显示操作菜单和操作主播数组,封装主播系统的核心业务3、在main方法中调用主播管理类

逻辑分析:

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

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

目录
相关文章
|
1月前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
74 3
|
29天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
28 1
|
2月前
|
SQL 存储 关系型数据库
数据储存数据库管理系统(DBMS)
【10月更文挑战第11天】
106 3
|
2月前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
36 2
|
2月前
|
安全 NoSQL 关系型数据库
阿里云数据库:构建高性能与安全的数据管理系统
在企业数字化转型过程中,数据库是支撑企业业务运转的核心。随着数据量的急剧增长和数据处理需求的不断增加,企业需要一个既能提供高性能又能保障数据安全的数据库解决方案。阿里云数据库产品为企业提供了一站式的数据管理服务,涵盖关系型、非关系型、内存数据库等多种类型,帮助企业构建高效的数据基础设施。
75 2
|
2月前
|
前端开发 Java 数据库连接
javamvc配置,增删改查,文件上传下载。
【10月更文挑战第4天】javamvc配置,增删改查,文件上传下载。
39 1
|
2月前
|
存储 NoSQL API
使用Py2neo进行Neo4j图数据库的增删改查操作
使用Py2neo进行Neo4j图数据库的增删改查操作
79 5
|
2月前
|
存储 NoSQL 关系型数据库
数据库管理系统
【10月更文挑战第8天】
72 1
|
2月前
|
数据可视化 API PHP
低代码开发工具-学生管理系统-老师管理增删改查实现
低代码开发工具-学生管理系统-老师管理增删改查实现
34 5
|
2月前
|
SQL JSON 关系型数据库
MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
【10月更文挑战第3天】MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
157 5