package in;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class Demo extends JFrame {
/*
* 界面設計
* */
public Demo(){
Container c = getContentPane(); //定義一個頂級容器c
setAlwaysOnTop(true); //窗體置頂
JPanel jp = new JPanel(); //新建JPanel面板--jp
JButton button1 = new JButton("新建聯系人");
JButton button2 = new JButton("刪除聯系人");
JButton button3 = new JButton("編輯聯系人");
JButton button4 = new JButton("查找聯系人");
JButton button5 = new JButton("顯示所有聯系人");
JButton button6 = new JButton("保存聯系人到本地");
JButton button7 = new JButton("讀取本地聯系人");
jp.setLayout(new GridLayout(3,4,5,5));//新建網格布局管理器(行數,列數,組件間的水平垂直間距)
jp.add(button1);
jp.add(button2);
jp.add(button3);
jp.add(button4);
jp.add(button5);
jp.add(button6);
jp.add(button7);
c.add(jp);//將JPanel面板jp添加到頂級容器c中
setSize(600,150);
setTitle("*通 訊 錄 管 理 系 統*");
setVisible(true);
setResizable(false);//窗體大小由程序員決定,用戶不能自由改變大小
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
/*
*按鍵響應
*
* */
button1.addActionListener(new ActionListener(){//添加功能實現
public void actionPerformed(ActionEvent arg0){
Infro.addFunction();
}
});
button2.addActionListener(new ActionListener(){//刪除功能實現
public void actionPerformed(ActionEvent arg0){
Infro.deleteFunction();
}
});
button3.addActionListener(new ActionListener(){//修改功能實現
public void actionPerformed(ActionEvent arg0){
Infro.reditFunction();
}
});
button4.addActionListener(new ActionListener(){//查詢功能實現
public void actionPerformed(ActionEvent arg0){
try {
Infro.searchFunction();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
button5.addActionListener(new ActionListener(){//顯示功能實現
public void actionPerformed(ActionEvent arg0){
Infro.showFunction();
}
});
button6.addActionListener(new ActionListener(){//保存功能實現
public void actionPerformed(ActionEvent arg0){
try {
Infro.writeFunction();
} catch (IOException e) {
e.printStackTrace();
}
}
});
button7.addActionListener(new ActionListener(){//讀取功能實現
public void actionPerformed(ActionEvent arg0){
try {
Infro.readFunction();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Demo();
Infro a = new Infro("", "", "", "", "", "");
}
}
package in;
import java.applet.Applet;
import java.awt.Graphics;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
import javax.swing.JPanel;
class Infro {
public String Name;
public String Sex;
public String Unit;
public String Homephone;
public String Telephone;
public String E_mail;
static int index = 0;
static ArrayList<Infro> list = new ArrayList();
static int len = list.size();
//構造函數
public Infro(String Name,String Sex,String Unit,String Homephone,String Telephone,String E_mail){
this.Name = Name;
this.Sex = Sex;
this.Unit = Unit;
this.Homephone = Homephone;
this.Telephone = Telephone;
this.E_mail = E_mail;
}
public String toString(){
return "姓名:"+Name+"\t性別:"+Sex+"\t單位:"+Unit+"\t住宅電話:"+Homephone
+"\t移動電話:"+Telephone+"\tE_mail:"+E_mail;
}
/*
* 添加功能
* */
public static void addFunction(){//添加功能
Infro infro = new Infro("","","","","","");
System.out.println("請輸入添加的數據:");
Scanner in = new Scanner(System.in);
System.out.println("輸入姓名:");
infro.Name = in.next();
System.out.println("輸入性別:");
infro.Sex = in.next();
System.out.println("輸入單位:");
infro.Unit = in.next();
System.out.println("輸入住宅電話:");
infro.Homephone = in.next();
System.
out.println("輸入移動電話:");
infro.Telephone = in.next();
System.out.println("輸入E_mail:");
infro.E_mail = in.next();
list.add(index,infro);
index++;
if(list.isEmpty()){
System.out.println("數據添加失敗啦");
}else{
System.out.println("數據添加成功啦");
len++;//list集合長度加一
// System.out.println(list.get(0).toString());
}
System.out.println("是否繼續添加?1.是 2.否");
Scanner e=new Scanner(System.in);
int e1=e.nextInt();
if(e1==1){
Infro.addFunction();
}else{
return;
}
}
/*
* 刪除功能
* */
public static void deleteFunction(){
System.out.println("輸入要刪除的聯系人的姓名");
Scanner in_2 = new Scanner(System.in);
String d1 = in_2.nextLine();
java.util.Iterator<Infro> it = list.iterator();
while (it.hasNext()){
Infro infro = it.next();
if (infro.Name.equals(d1)){
it.remove();
--index;//一定要加這個,否則當做了刪除操作再做添加操作的時候會出現異常(類似於指針,棧)
System.out.println("刪除完畢"+"此時通訊錄記錄條數為:" + --len);
}
}
System.out.println("是否繼續刪除?1.是 2.否");
Scanner e=new Scanner(System.in);
int e1=e.nextInt();
if(e1==1){
Infro.deleteFunction();
}else{
return;
}
}
/*
* 修改功能
* */
public static void reditFunction(){
System.out.println("輸入要修改的通訊錄的姓名");
Scanner in_r = new Scanner(System.in);
String r1 = in_r.nextLine();
for(int a = 0; a < len;a++){
if(r1.equals(list.get(a).Name)){
System.out.println("輸入修改後的性別:");
String Sex_1 = in_r.next();
list.get(a).Sex = Sex_1;
System.out.println("輸入修改後的單位:");
String Unit_1 = in_r.next();
list.get(a).Unit = Unit_1;
System.out.println("輸入修改後的住宅電話:");
String Homephone_1 = in_r.next();
list.get(a).Homephone = Homephone_1;
System.out.println("輸入修改後的移動電話:");
String Telephone_1 = in_r.next();
list.get(a).Telephone = Telephone_1;
System.out.println("輸入修改後的E_mail:");
String E_mail_1 = in_r.next();
list.get(a).E_mail = E_mail_1;
System.out.println("數據修改完畢");
}
}
System.out.println("是否繼續修改?1.是 2.否");
Scanner e=new Scanner(System.in);
int e1=e.nextInt();
if(e1==1){
Infro.reditFunction();
}else{
return;
}
}
/*
* 查詢功能
* */
public static void searchFunction() throws Exception{//查詢功能
System.out.println("請選擇查詢方式: ");
System.out.println("1.姓名 2.性別 3.單位 4.住宅電話 5.移動電話 6.E_mail ");
Scanner in_0=new Scanner(System.in);
int s0=in_0.nextInt();
if(s0==1){
System.out.println("請輸入要查詢的姓名:");
Scanner in_1 = new Scanner(System.in);
String s1=in_1.nextLine();
for(int a= 0; a<len;a++){//切記,,這裡不能用a<=list.size(),否則會數組越界異常
if(s1.equals(list.get(a).Name)){
System.out.println(list.get(a).toString());
}
}
}
else if(s0==2){
System.out.println("請輸入要查詢的性別:");
Scanner in_2 = new Scanner(System.in);
String s2=in_2.nextLine();
for(int a= 0; a<len;a++){//切記,,這裡不能用a<=list.size(),否則會數組越界異常
if(s2.equals(list.get(a).Sex)){
System.out.println(list.get(a).toString());
}
}
}
else if(s0==3){
System.out.println("請輸入要查詢的單位:");
Scanner in_3 = new Scanner(System.in);
String s3=in_3.nextLine();
for(int a= 0; a<len;a++){//切記,,這裡不能用a<=list.size(),否則會數組越界異常
if(s3.equals(list.get(a).Unit)){
System.out.println(list.get(a).toString());
}
}
}
if(s0==4){
System.out.println("請輸入要查詢的住宅電話:");
Scanner in_4 = new Scanner(System.in);
String s4=in_4.nextLine();
for(int a= 0; a<len;a++){//切記,,這裡不能用a<=list.size(),否則會數組越界異常
if(s4.equals(list.get(a).Homephone)){
System.out.println(list.get(a).toString());
}
}
}
else if(s0==5){
System.out.println("請輸入要查詢的移動電話:");
Scanner in_5 = new Scanner(System.in);
String s5=in_5.nextLine();
for(int a= 0; a<len;a++){//切記,,這裡不能用a<=list.size(),否則會數組越界異常
if(s5.equals(list.get(a).Telephone)){
System.out.println(list.get(a).toString());
}
}
}
else if(s0==6){
System.out.println("請輸入要查詢的E_mail:");
Scanner in_6 = new Scanner(System.in);
String s6=in_6.nextLine();
for(int a= 0; a<len;a++){//切記,,這裡不能用a<=list.size(),否則會數組越界異常
if(s6.equals(list.get(a).E_mail)){
System.out.println(list.get(a).toString());
}
}
}
}
/*
* 顯示功能
* */
public static void showFunction(){
for(int i = 0 ;i<len;i++){
System.out.println(list.get(i).toString());
}
}
/*
* 保存功能
* */
public static void writeFunction() throws IOException{
FileWriter writer = new FileWriter("通訊錄管理.txt");
for(int i = 0 ;i<len;i++){
String []strwriter = new String[len];
strwriter[i]=list.get(i).toString();
writer.write(strwriter[i]);
writer.write("\r\n");
System.out.println("成功寫入一行數據到 通訊錄管理.txt 中");
}
writer.close();//關閉寫入流,釋放資源
}
/*
* 讀取功能
* */
public static void readFunction() throws IOException{
FileReader reader = new FileReader("通訊錄管理.txt");
BufferedReader br = new BufferedReader(reader);
String str;
while((str = br.readLine()) != null){//每次讀取一行文本,判斷是否到達文件尾
System.out.println(str);
}
br.close();
}
}
課程設計中遇到了問題… 在運行時輸入,可以查詢,編輯等操作。可是保存到本地後退出運行,第二次再運行時讀取本地聯系人,就沒辦法執行查詢操作了。我改了好久還是不行,請各位哥哥姐姐幫忙看一下,拜托~因為還沒有學數據庫,只能用文件了。
超過20個分屏顯示就不要了,因為貌似java沒有分屏顯示……其他的功能,按姓名排序也希望你們能給些思路,謝謝謝謝
這是題目:
3. 以本班同學的具體數據為背景,設計一個本班同學通訊錄(3人)
通訊錄要求存儲姓名、性別、單位、住宅電話、移動電話、E-mail地址等內容。系統功能要求如下:
(1)通訊錄記錄按姓名排序存放,顯示時每屏不超過20個記錄,超過時分屏顯示。
(2)增加某人的通訊錄。
(3)修改某人的通訊錄。
(4)刪除某人的通訊錄。
(5)按多種方式查詢符合條件的信息。
你重新打開新的程序 必須先執行加載功能 把文件裡的數據加載到list中
因為你的查詢代碼遍歷的是list 如果你不執行加載 遍歷一個空的list當然就沒有數據了。
並且 我發現 你再次打開一個 重新新增會把原來的文件覆蓋掉。所以我覺得必須寫一個static靜態塊,加載文件中內容對list進行初始化