main
chenhaodong 2024-12-22 18:00:46 +08:00
commit c671790341
10 changed files with 407 additions and 0 deletions

8
.idea/.gitignore vendored 100644
View File

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

13
.idea/compiler.xml 100644
View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="duolaxingqiu" />
</profile>
</annotationProcessing>
</component>
</project>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>
</project>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
</component>
</project>

14
.idea/misc.xml 100644
View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

29
pom.xml 100644
View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>duolaxingqiu</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>14</source>
<target>14</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,246 @@
package org.example;
import org.example.model.Satellite;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
private static ArrayList<Satellite> satellites = new ArrayList<>();
public static void main(String[] args) {
// 初始化五个卫星对象
satellites.add(new Satellite("1999-025A", "卫星一号", 7000, true));
satellites.add(new Satellite("2000-036A", "卫星二号", 8000, false));
satellites.add(new Satellite("2001-047A", "卫星三号", 9000, true));
satellites.add(new Satellite("2002-058A", "卫星四号", 10000, false));
satellites.add(new Satellite("2003-069A", "卫星五号", 11000, true));
Scanner scanner = new Scanner(System.in);
displayMenu();
do {
String choose = scanner.next();
switch (choose) {
//1-----显示目前活动卫星列表。
case "1" -> showSatelliteList();
//2-----注册新卫星。
case "2" -> addNewSatellite(scanner);
//3-----删除旧卫星。
case "3" -> delOldSatellite(scanner);
//4-----激活卫星。
case "4" -> activeSatellite(scanner);
//5-----封锁(失活)卫星。
case "5" -> blockSatellite(scanner);
//6-----显示失活卫星列表。
case "6" -> showBlockSatelliteList();
//7-----按名称模糊查找卫星。
case "7" -> querySatelliteByNameLike(scanner);
//8-----修改卫星信息。
case "8" -> modStatelliteInfo(scanner);
//9-----退出!
case "9" -> {
System.out.println("退出");
System.exit(0);
}
default -> System.out.println("没有这个选项");
}
displayMenu();
} while (scanner.hasNext());
}
//1-----显示目前活动卫星列表。
private static void showSatelliteList() {
for (Satellite satellite : satellites) {
if (satellite.isActivated()) {
System.out.println(satellite);
}
}
}
//2-----注册新卫星。
private static void addNewSatellite(Scanner scanner) {
String cosparId = readString(scanner, "请输入卫星的COSPARID: ");
String name = readString(scanner, "请输入卫星的名称: ");
double r = readDouble(scanner, "请输入卫星的半径: ");
boolean activated = readBoolean(scanner, "请输入卫星的状态 (true/false): ");
Satellite newSatellite = new Satellite(cosparId, name, r, activated);
satellites.add(newSatellite);
System.out.println("卫星已添加: " + newSatellite);
}
//3-----删除旧卫星。
private static void delOldSatellite(Scanner scanner) {
String cosparId = readString(scanner, "请输入要删除的卫星COSPARID: ");
boolean flag = false;
for (Satellite se : satellites) {
if (se.getCOSPARID().equals(cosparId)) {
satellites.remove(se);
System.out.println("卫星已删除: " + se);
flag = true;
break;
}
}
if (!flag) {
System.out.println("无效的COSPARID");
}
}
//4-----激活卫星。
private static void activeSatellite(Scanner scanner) {
String cosparId = readString(scanner, "请输入要激活的卫星COSPARID: ");
boolean flag = false;
for (Satellite se : satellites) {
if (se.getCOSPARID().equals(cosparId)) {
if (se.isActivated()) {
System.out.println("卫星已处于激活状态,无需重新激活: " + se);
flag = true;
break;
}
se.setActivated(true);
System.out.println("卫星已激活: " + se);
flag = true;
break;
}
}
if (!flag) {
System.out.println("无效的COSPARID");
}
}
//5-----封锁(失活)卫星。
private static void blockSatellite(Scanner scanner) {
String cosparId = readString(scanner, "请输入要封锁的卫星COSPARID: ");
boolean flag = false;
for (Satellite se : satellites) {
if (se.getCOSPARID().equals(cosparId)) {
if (!se.isActivated()) {
System.out.println("卫星已处于失活状态,无需重新封锁: " + se);
flag = true;
break;
}
se.setActivated(false);
System.out.println("卫星已封锁: " + se);
flag = true;
break;
}
}
if (!flag) {
System.out.println("无效的COSPARID");
}
}
//6-----显示失活卫星列表。
private static void showBlockSatelliteList() {
for (Satellite satellite : satellites) {
if (!satellite.isActivated()) {
System.out.println(satellite);
}
}
}
//7-----按名称模糊查找卫星。
private static void querySatelliteByNameLike(Scanner scanner) {
String keyword = readString(scanner, "请输入要查找的卫星名称关键字: ");
for (Satellite satellite : satellites) {
if (satellite.getName().contains(keyword)) {
System.out.println(satellite);
}
}
}
//8-----修改卫星信息。
private static void modStatelliteInfo(Scanner scanner) {
String cosparId = readString(scanner, "请输入要修改的卫星COSPARID: ");
boolean flag = false;
for (Satellite se : satellites) {
if (se.getCOSPARID().equals(cosparId)) {
String newCosparId = readString(scanner, "请输入卫星的COSPARID: ");
se.setCOSPARID(newCosparId);
String newName = readString(scanner, "请输入卫星的名称: ");
se.setName(newName);
double newR = readDouble(scanner, "请输入卫星的半径: ");
se.setR(newR);
boolean newActivated = readBoolean(scanner, "请输入卫星的状态 (true/false): ");
se.setActivated(newActivated);
System.out.println("卫星信息已修改: " + se);
flag = true;
break;
}
}
if (!flag) {
System.out.println("无效的COSPARID");
}
}
//显示菜单
public static void displayMenu() {
System.out.println("**************************");
System.out.println("\t1-----显示目前活动卫星列表。");
System.out.println("\t2-----注册新卫星。");
System.out.println("\t3-----删除旧卫星。");
System.out.println("\t4-----激活卫星。");
System.out.println("\t5-----封锁(失活)卫星。");
System.out.println("\t6-----显示失活卫星列表。");
System.out.println("\t7-----按名称模糊查找卫星。");
System.out.println("\t8-----修改卫星信息。");
System.out.println("\t9-----退出!");
System.out.println("**************************");
System.out.print("选择:");
}
// 读取字符串输入并校验
private static String readString(Scanner scanner, String prompt) {
String input;
do {
System.out.print(prompt);
input = scanner.next();
if (input.trim().isEmpty()) {
System.out.println("输入不能为空,请重新输入。");
}
} while (input.trim().isEmpty());
return input;
}
// 读取双精度浮点数输入并校验
private static double readDouble(Scanner scanner, String prompt) {
double input;
while (true) {
System.out.print(prompt);
if (scanner.hasNextDouble()) {
input = scanner.nextDouble();
if (input <= 0) {
System.out.println("半径必须大于0请重新输入。");
} else {
break;
}
} else {
System.out.println("输入无效,请输入一个数字。");
scanner.next(); // 清除无效输入
}
}
return input;
}
// 读取布尔值输入并校验
private static boolean readBoolean(Scanner scanner, String prompt) {
boolean input;
while (true) {
System.out.print(prompt);
if (scanner.hasNextBoolean()) {
input = scanner.nextBoolean();
break;
} else {
System.out.println("输入无效,请输入 true 或 false。");
scanner.next(); // 清除无效输入
}
}
return input;
}
}

View File

@ -0,0 +1,70 @@
package org.example.model;
/**
* @author : [chd]
* @version : [v1.0]
* @description : []
* @createTime : [2024/12/22 17:27]
* @updateUser : [chd]
* @updateTime : [2024/12/22 17:27]
* @updateRemark : []
*/
public class Satellite {
//卫星id
private String COSPARID;
//卫星名称
private String name;
//半径
private double r;
//状态
private boolean activated=false;
public Satellite(String COSPARID, String name, double r, boolean activated) {
this.COSPARID = COSPARID;
this.name = name;
this.r = r;
this.activated = activated;
}
@Override
public String toString() {
return "Satellite{" +
"COSPARID='" + COSPARID + '\'' +
", name='" + name + '\'' +
", r=" + r +
", activated=" + activated +
'}';
}
public String getCOSPARID() {
return COSPARID;
}
public void setCOSPARID(String COSPARID) {
this.COSPARID = COSPARID;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
public boolean isActivated() {
return activated;
}
public void setActivated(boolean activated) {
this.activated = activated;
}
}

Binary file not shown.