1. 程式人生 > >JAVA資料管理系統(用ArrayList實現增刪改查等操作)

JAVA資料管理系統(用ArrayList實現增刪改查等操作)

通過查詢大量有關ArrayList操作的文章,終於將這個小東西寫完了。感覺心累。

//import java.util.ArrayList;
//import java.util.List;
//import java.util.Scanner;// I/O庫函式
//import java.util.Comparator;
//import java.util.Collections;//集合庫,在此程式中的作用是用來對ArrayList排序
//以上庫函式可以直接用 import java.util.*;
import java.util.*; 
class Stu{
	private int id;	//編號
	private String name;	//姓名
	private boolean sex;	//性別
	private int bornDate;	//出生日期
	private int edu;     //學歷
	private long phone;	//電話
	private float salary;		//工資

//	public void qtu(int id,String name,boolean sex,int bornDate,int edu,long phone,float salary)
//	{
//		this.id=id;
//		this.name=name;
//		this.sex=sex;
//		this.bornDate=bornDate;
//		this.edu=edu;
//		this.phone=phone;
//		this.salary=salary;
//	}
	
	public int getid()	//返回輸入資料的值
	{
		return id;
	}
	
	public void setid(int id)	//因為定義的型別為私有,所以需要為資料的輸入提供一個供外部訪問的介面
	{
		this.id=id;
	}
	
	public String getname()
	{
		return name;
	}
	
	public void setname(String name)
	{
		this.name=name;
	}
	
	public boolean getsex()
	{
		return sex;
	}
	
	public void setsex(boolean sex)
	{
		this.sex=sex;
	}
	
	public int getbornDate()
	{
		return bornDate;
	}
	
	public void setbornDate(int bornDate)
	{
		this.bornDate=bornDate;
	}
	
	public int getedu()
	{
		return edu;
	}
	
	public void setedu(int edu)
	{
		this.edu=edu;
	}
	
	
	public long getphone()
	{
		return phone;
	}
	
	public void setphone(long phone)
	{
		this.phone=phone;
	}
	
	public float getsalary()
	{
		return salary;
	}
	
	public void setsalary(float salary)
	{
		this.salary=salary;
	}
	
	
}
class Operate{
	List<Stu> list=new ArrayList<Stu>();

	Scanner cin=new Scanner(System.in);
	
	
//輸入部分可以先將型別定義為String,再通過list.父型別.parse資料型別()轉換為指定型別	
public void input() throws Exception//新增工程師資訊
{
	int student_number=1;
	System.out.println("********* 新增學生資訊,停止新增輸入0 **********");

	while(true)
	{
	Stu stu=new Stu(); //這條語句一定要放在迴圈結構裡,否則list中的值不會更新
	System.out.println("正在錄入第 "+student_number+" 個工程師的資訊....\n");
	System.out.println("******請輸入工程師的編號******");
	stu.setid(Integer.parseInt(cin.next()));	//這裡不能用的輸入不能用 cin.nextLine() 原因應該與C語言的gets()後+scanf()差不多
	if(stu.getid()==0) {System.out.println("******成功退出輸入******\n");break;}
	System.out.println("******請輸入工程師的名字******");
	stu.setname(cin.next());
	System.out.println("******請輸入工程師的性別******");
	stu.setsex(Boolean.parseBoolean(cin.next()));
	System.out.println("******請輸入工程師的出生日期******");
	stu.setbornDate(Integer.parseInt(cin.next()));
	System.out.println("******請輸入工程師的學歷******");
	stu.setedu(Integer.parseInt(cin.next()));
	System.out.println("******請輸入工程師的聯絡電話******");
	stu.setphone(Long.parseLong(cin.next()));
	System.out.println("******請輸入工程師的工資******");
	stu.setsalary(Float.parseFloat(cin.next()));
	list.add(stu);
//	stu.id=cin.nextInt();
//	stu.name=cin.nextLine();
//	stu.sex=cin.nextBoolean();
//	stu.bornDate=cin.nextInt();
//	stu.edu=cin.nextInt();
//	stu.phone=cin.nextInt();
//	stu.salary=cin.nextFloat();
	System.out.println("第"+student_number+"個工程師的資訊錄入成功!\n");
	student_number++;
}
	
}

public void select()	//查詢並打印出指定工程師資訊
{
	System.out.println("************請輸入要查詢的工程師編號******");
	int num=cin.nextInt();
	int number=0;
	for(int i=0;i<list.size();i++)
	{
		if(num==list.get(i).getid())
		{
            System.out.println("**************************************************************************************");
            System.out.println(" 編號	姓名		性別		出生日期		學歷		電話		工資");
            System.out.println(list.get(i).getid()+"\t"+list.get(i).getname()+"\t"+list.get(i).getsex()+"\t"+list.get(i).getbornDate()+"\t"+list.get(i).getedu()+"\t"+list.get(i).getphone()+"\t"+list.get(i).getsalary());
            System.out.println("**************************************************************************************");
            number++;
		}
	}
	if(number==0)
		System.out.println("************你要查詢的工程師編號不存在************");
}

public void  delete()	//刪除指定工程師資訊
{
	System.out.println("******請輸入要刪除的工程師編號******");
	int num=cin.nextInt();
	for(int i=0;i<list.size();i++)
	{
	if(num==list.get(i).getid())
	{
		System.out.println("成功刪除編號為"+list.get(i).getid()+"的工程師");
		list.remove(i);//刪除下標為i的資訊
	}
	}
}

public void update()	//修改指定工程師資訊
{
	int rm=0;
	int id1;
	String name1;
	boolean sex1;
	int borndate1;
	int edu1;
	long phone1;
	float salary1;
	System.out.println("******請輸入要修改的工程師編號******");
	int num=cin.nextInt();
	for(int i=0;i<list.size();i++)
	{
	if(num==list.get(i).getid())
	{
			rm=1;
			System.out.println("請輸入修改後的編號");
			id1=Integer.parseInt(cin.next());
			list.get(i).setid(id1);//通過訪問函式介面來完成修改功能
			System.out.println("請輸入修改後的名字");
			name1=cin.next();
			list.get(i).setname(name1);
			System.out.println("請輸入修改後的性別");
			sex1=Boolean.parseBoolean(cin.next());
			list.get(i).setsex(sex1);
			System.out.println("請輸入修改後的出生日期");
			borndate1=Integer.parseInt(cin.next());
			list.get(i).setbornDate(borndate1);
			System.out.println("請輸入修改後的學歷");
			edu1=Integer.parseInt(cin.next());
			list.get(i).setedu(edu1);
			System.out.println("請輸入修改後的電話");
			phone1=Long.parseLong(cin.next());
			list.get(i).setphone(phone1);
			System.out.println("請輸入修改後的工資");
			salary1=Float.parseFloat(cin.next());
			list.get(i).setsalary(salary1);
			System.out.println("********資訊修改完成**************");
			break;
	}
	}
	if(rm==0)
		System.out.println("無此編號工程師!");
}

public static class idComparator implements Comparator //自定義比較器類
{
	public int compare(Object o1,Object o2)
	{
	Stu s1,s2;
	s1=(Stu)o1;
	s2=(Stu)o2;
	return new Integer(s1.getid()).compareTo(new Integer(s2.getid()));//將s.getid()包裝為Integer物件後進行比較
	}
}


public void sort()  //排序工程師資訊
{
	Comparator cmp=new idComparator();//建立比較器物件
	Collections.sort(list,cmp);//集合排序函式Collections.sort(集合列表,比較器)
	System.out.println("*******編號排序成功**********");
}

public void output()	//輸出所有工程師資訊
{
	System.out.println("============列印工程師資訊===========");
    System.out.println("**************************************************************************************");
    System.out.println(" 編號\t姓名\t性別\t出生日期\t\t學歷\t電話\t\t工資(元)");
    System.out.println("**************************************************************************************");
	for( Stu u:list)
	{
		System.out.println(u.getid()+"\t"+u.getname()+"\t"+u.getsex()+"\t"+u.getbornDate()+"\t\t"+u.getedu()+"\t"+u.getphone()+"\t"+u.getsalary());
	}
    System.out.println("**************************************************************************************");
	System.out.println("======================================================================================");
}

public void clear() throws Exception	//清除所有工程師資訊
{
	System.out.println("確認刪除? true/false");
	boolean s=cin.nextBoolean();
	if(s)list.clear();
	if(!s) return ;
	System.out.println("******成功清除所有工程師資訊******");
}
}

public class Ims{
	public static void main(String[] args)throws Exception{
		Scanner sc=new Scanner(System.in);
		Operate pt=new Operate();

		System.out.println("==============工程師資訊管理系統===============\n");
		System.out.println("請選擇:   1: 錄入工程師資訊  2: 查詢指定工程師資訊    3: 刪除指定工程師資訊    4: 修改指定工程師資料   5: 對工程師資料排序   6: 輸出所有工程師資料   7: 清除所有工程師資料  8: 退出");
		while(sc.hasNextInt())
		{
		int n=sc.nextInt();
		if(n==8)
			break;
		switch(n)
		{
		case 1: pt.input();break;
		case 2: pt.select();break;
		case 3: pt.delete();break;
		case 4: pt.update();break;
		case 5: pt.sort();break;
		case 6: pt.output();break;
		case 7: pt.clear();break;
		}

		System.out.println("請選擇:   1: 錄入工程師資訊  2: 查詢指定工程師資訊    3: 刪除指定工程師資訊    4: 修改指定工程師資料   5: 對工程師資料排序   6: 輸出所有工程師資料   7: 清除所有工程師資料  8: 退出");
		}
		System.out.println("歡迎您下次繼續使用本資訊管理系統!");
		
	}
}

此程式碼僅供初學者參考=.=