上一各版本里只设计了星城的基础类,在本次代码实现对星城系统的信息管理。作用于在城市定居某个星体之后录入星空信息系统之中。现在是将数据存储在列表中,将面向对象结合面向过程实现的部分代码(利用期末作业完成幻想之作,小娱乐小制作)
第1部分 为输出一个菜单
/**
* @menu() 菜单
*/
public static void menu(){
System.out.println("============================");
System.out.println(" 星城管理系统");
System.out.println("输入1:录入星城信息");
System.out.println("输入2:查询星城信息(根据编号查找)");
System.out.println("输入3:根据星城人口进行排序");
System.out.println("输入4:插入");
System.out.println("输入5:删除");
System.out.println("输入6:显示星城信息");
System.out.println("输入7:清空星城信息");
System.out.println("输入0:退出系统");
System.out.println("============================");
System.out.println("请输入:");
}
第2部分 通过遍历向空列表添加星城信息
/**
* @Traverse 遍历
* @param array
* @param id
* @return
*/
public static boolean Traverse(ArrayList<City> array, String id){
//遍历进行比较,有相同返回true,否则返回false
boolean flag = false;
for (int i = 0; i < array.size(); i++) {
City s = array.get(i);
if(id.equals(s.getCityId())) {
flag = true;
break;
}
}
return flag;
}
/**
* @addStarCity 添加星城
* @param array
*/
public static void addStarCity(ArrayList<City> array){
//存储(添加)星城信息
Scanner sc = new Scanner(System.in);
//后面要通过编号进行信息查找,所以要求编号不能重复
String id ;
while (true) {
System.out.println("请输入编号:");
id = sc.nextLine();
//定义一个判断方法
boolean flag = Traverse(array, id);
if (flag) {
System.out.println("编号已被使用,请重新输入!");
} else {
break; //学号有效,跳出循环
}
}
System.out.println("请输入创建年份:");
String appearYear = sc.nextLine();
System.out.println("请输入星城命名:");
String cityName = sc.nextLine();
System.out.println("请输入星城人口:");
Double population = sc.nextDouble();
//赋值给到星城
City s1 = new City();
s1.setCityId(Integer.parseInt(id));
s1.setCityName(cityName);
s1.setCityPopulation(population);
s1.setCityAppearYear(Integer.parseInt(appearYear));
//将星城给到集合中
array.add(s1);
System.out.print("添加成功!");
}
第3部分 查找星城信息
/**
* @findStarCity 根据编号查找星城
* @param array
*/
public static void findStarCity(ArrayList<City> array){
Scanner sc = new Scanner(System.in);
System.out.println("输入查找星城的编号:");
String id = sc.nextLine();
//判断编号是否存在并查找输出
int flag = -1; //定义一个判断标志,因为数组下标不会为-1.所以将flag初始化为-1
City s = new City();
for (int i = 0; i < array.size(); i++) {
s = array.get(i);
if(id.equals(s.getCityId())){
flag = i;
break;
}
}
if (flag == -1){
System.out.println("星城编号不存在!");
}else{
System.out.println("找到当前星城!");
System.out.println("星城编号\t\t星城名称\t\t出现年份\t\t星城人口");
System.out.println(s.getCityId()+"\t\t\t"+s.getCityName()+"\t\t"+s.getCityAppearYear()+"\t\t"+s.getCityPopulation());
}
}
第4部分 根据星城某项数据进行排序
/**
* @sortStudent 根据星城人口进行排序(从高到低)
* @param array
*/
public static void sortStarCity(ArrayList<City> array){
array.sort(new Comparator<City>() {
@Override
public int compare(City o1, City o2) {
return (int)(o2.getCityPopulation() - o1.getCityPopulation());
}
});
System.out.println("排序成功!");
}
第5部分 向列表某个位置中插入一项新的星城信息
/**
* @insertStudent 插入星城信息
* @param array
*/
public static void insertStarCity(ArrayList<City> array){
Scanner sc = new Scanner(System.in);
System.out.println("输入要插入的位置:");
int a = sc.nextInt();
//后面要通过星城编号进行信息查找,所以要求编号不能重复
String id ;
while (true) {
System.out.println("请输入星城编号:");
id = sc.nextLine();
//定义一个判断方法
boolean flg = Traverse( array, id);
if (flg) {
System.out.println("星城编号已存在,请重新输入!");
} else {
break; // 当编号存在时有效,跳出循环
}
}
System.out.println("请输入创建年份:");
String appearYear = sc.nextLine();
System.out.println("请输入星城命名:");
String cityName = sc.nextLine();
System.out.println("请输入星城人口:");
Double population = sc.nextDouble();
// 赋值给到星城
City s1 = new City();
s1.setCityId(Integer.parseInt(id));
s1.setCityName(cityName);
s1.setCityPopulation(population);
s1.setCityAppearYear(Integer.parseInt(appearYear));
// 将星城信息给到集合中
array.add(a,s1);
System.out.print("成功插入星城的信息!");
}
第6部分 当某项数据出现违规时,将其驱逐出星空
/**
* @deleteStarCity 删除指定违规星城信息
* @param array
*/
public static void deleteStarCity(ArrayList<City> array){
Scanner sc = new Scanner(System.in);
System.out.println("输入要删除的违规星城编号:");
String id = sc.nextLine();
for (int i = 0; i < array.size(); i++) {
if(Objects.equals(array.get(i).getCityId(), id)){
array.remove(i);
break;
}
}
System.out.println("成功删除星城编号为"+id+"的信息!");
}
所有部分都属于星城管理系统的主要实现的方法体所组成...(To be continued...)