写点什么

Java 通讯录管理系统

  • 2022-11-28
    河南
  • 本文字数:5751 字

    阅读完需:约 19 分钟

一、实验目的:

综合应用类的设计、集合的使用等知识解决实际问题。学会查找 document 学习类的使用。

二、实验仪器设备及实验环境:

Windows 10 专业版

IntelliJ IDEA 2021.1.3

Jdk 版本: 1.8.0_91

三、总的设计思想、实验原理等

用户类用于记录用户属性

class People {static int num=0;

//用来记录成员数量

private int ID;

//用来记录用户

IDprivate String Name;

//用户名字

private int Age;

//用户年龄 private String Gender;

//用户

private String Telephone;

//电话

private String Address;

//地址}

工具类,对一些常用函数进行封装,方便程序进行调用。

Main 类,用于通讯录的主要架构,保证程序正常运行。主要实现的功能是对通讯录的增删改查的实现。

四、实验步骤设计:(流程和代码)流程图如下:


代码见文末

五、实验结果及分析:(运行结果)

1.界面初始化


2.添加成员


3.删除成员


4.修改成员


5.查询成员


6.导出成员信息


7.导入成员信息


8.退出


六、自我评析与总结:

Java 语言是一门计算机语言,有助于我们更好地理解与编程思维,所以 Java 语言学习对我们来说尤为重要。虽然在调试程序的过程中遇到了许多困难,有时候甚至觉得一点头绪都没有,无从下手,但最终都通过各种渠道,各种方式,一一解决了。从中也让我知道了要学好这门课程,仅学习课本上的知识,掌握理论是不够的,还要有较强的实践能力。只有多实践,多编写程序,多调试才能更好地学地掌握书本上的知识,从而学好这门课。此外,在上机调试的过程中一定要有耐心,耐心地去寻找错误并改正错误;还要记住经常犯的错误,保下次不再犯同样的错误;遇到自己不能解决问题要勤于翻书,查找资料,或者问别人,不要怕麻烦。七、遇到的问题及创新之处问题:加载数据的时候,类的内容过多,提取数据过于繁琐。创新之处:采用序列化与反序列化保存数据,序列化在传递和保存对象时,保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。反序列化根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。加载数据较为方便。同时添加工具类,如延时函数,退格功能,是程序更加完善,条理更加清晰。功能更加强大。

代码如下:

本代码用了三个类,一个 Main 用于存放逻辑结构,一个 People 类,用来定义通讯录的属性,一个 Tools 类,用于创建一些工具类,方便操作 Main 类


import java.io.*;import java.util.Collection;import java.util.HashSet;import java.util.Iterator;import java.util.Scanner;
public class Main { //静态代码块记载6 static { System.out.println("=====欢迎使用yimo37的通讯录管理系统====="); System.out.println("正在加载中,请稍等!"); Tools.Loading();}

public static void Dist(Collection<People> book){ int num; Scanner sc =new Scanner(System.in); while(true){ Show(); num=sc.nextInt(); switch (num){ case 1: Add(book); Tools.Pause(); break; case 2: Del(book); Tools.Pause(); break; case 3: Change(book); Tools.Pause(); break; case 4: Qurey(book); Tools.Pause(); break; case 5: Save(book); Tools.Pause(); break; case 6: Load(book); Tools.Pause(); break; case 7: System.out.println("退出"); return; default: Default(); } System.out.println("===================================="); }}
private static void Save(Collection<People> book) { Scanner sc =new Scanner(System.in); try { System.out.println("请输入您想导出的文件名"); FileOutputStream output=new FileOutputStream(sc.nextLine()); ObjectOutputStream objectOutputStream=new ObjectOutputStream(output); for (People e:book ) { objectOutputStream.writeObject(e); } System.out.println("正在导出中..."); Tools.Loading(); System.out.println("导出成功!"); objectOutputStream.close(); } catch (IOException e) { e.printStackTrace(); }}
private static void Load(Collection<People> book) { Scanner sc =new Scanner(System.in); People ex =null; System.out.println("请输入您想导入的文件名"); try { FileInputStream input=new FileInputStream(sc.nextLine()); ObjectInputStream objectInputStream =new ObjectInputStream(input); while (input.available() > 0) {//代表文件中还有内容 ex =(People)objectInputStream.readObject(); book.add(ex); } System.out.println("正在导入中..."); Tools.Loading(); System.out.println("导入完成!"); objectInputStream.close(); input.close(); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); }
}
public static void Show(){ 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("请输入您需要的命令:");}//增public static void Add(Collection<People> book){ People e =new People(); Scanner sc = new Scanner(System.in); System.out.println("您是第"+People.num+"位"); System.out.println("请输入您的姓名:"); e.setName(sc.nextLine()); System.out.println("请输入您的年龄:"); e.setAge(sc.nextInt()); System.out.println("请输入您的性别:"); e.setGender(sc.next()); System.out.println("请输入您的电话:"); e.setTelephone(sc.next()); System.out.println("请输入您的地址:"); e.setAddress(sc.next()); book.add(e); System.out.println("保存成功"); System.out.println("您的注册信息为\n"+e.toString());
}//删public static void Del(Collection<People> book){ Scanner sc =new Scanner(System.in); int flag=0; System.out.println("请输入您要删除的联系人的姓名"); String name = sc.nextLine(); Iterator it =book.iterator(); while(it.hasNext()) { People e = (People) it.next(); if(name.equals(e.getName())) { flag = 1; book.remove(e); System.out.println("删除成功"); } } if(flag==0){ System.out.println("找不到该联系人!"); }
}//改public static void Change(Collection<People> book){ Scanner sc =new Scanner(System.in); System.out.println("请输入您要修改的联系人的姓名"); String name = sc.nextLine(); for (People e:book ) { if(name.equals(e.getName())){ 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("请输入您要修改的内容"); int num = sc.nextInt(); switch (num){ case 1: System.out.println("请输入修改后的姓名:"); e.setName(sc.next()); System.out.println("修改成功!"); break; case 2: System.out.println("请输入修改后的年龄:"); e.setAge(sc.nextInt()); System.out.println("修改成功!"); break; case 3: System.out.println("请输入修改后的性别:"); e.setGender(sc.next()); System.out.println("修改成功!"); break; case 4: System.out.println("请输入修改后的电话:"); e.setTelephone(sc.next()); System.out.println("修改成功!"); break; case 5: System.out.println("请输入修改后的地址:"); e.setTelephone(sc.next()); System.out.println("修改成功!"); break; default: System.out.println("您未作出任何改变"); } } }
}//查询public static People Qurey(Collection<People> book){
Scanner scanner =new Scanner(System.in); int Flag=0; System.out.println("请输入您想要的查询的姓名:"); String Name = scanner.nextLine(); for (People p:book ) { if(Name.equals(p.getName())){ Flag=1; System.out.println("查询联系人的信息如下:\n"+p.toString()); return p; } } if(Flag==0){ System.out.println("很遗憾,未找到该联系人!"); } return null;}
public static void Default(){ System.out.println("您输入的有问题!!!"); for (int i = 3; i >0; i--) { System.out.println(i+"秒后,返回首页"); Tools.Sleep(1000); }}
复制代码


Tools 类


import java.io.File;import java.io.IOException;import java.util.Scanner;
public class Tools { public static void Sleep(int time){ try { Thread.sleep(time); } catch (InterruptedException e) { System.out.println("系统异常!请尝试重启操作!"); } } public static void Back(int num){ for (int i = 0; i < num; i++) { System.out.print("\b"); } } public static void Loading(){ String str="[ ]"; for (int i = 0; i < 31; i++) { System.out.print(str); str = str.replaceFirst(" ", "="); Tools.Sleep(100); Tools.Back(35); } } public static void Pause(){ Scanner sc = new Scanner(System.in); System.out.print("按任意键返回主菜单!"); sc.nextLine();
}}
复制代码

People 类


import java.io.Serializable;
class People implements Serializable { static int num=0; private int ID; private String Name; private int Age; private String Gender; private String Telephone; private String Address;

@Override public String toString() { return "ID:" + ID + "\n您的姓名:" + Name + "\n您的年龄:" + Age + "\n您的性别:" + Gender + "\n您的电话:" + Telephone + "\n您的地址:" + Address; }
@Override public int hashCode() { return super.hashCode(); }
@Override public boolean equals(Object obj) { return super.equals(obj); }
public People() { num++; this.ID=num; }
public People(String Name, int Age, String Gender, String Telephone, String Address) { num++; this.ID=num; this.Name = Name; this.Age = Age; this.Gender = Gender; this.Telephone = Telephone; this.Address = Address; }
public String getName() { return this.Name; }
public void setName(String Name) { this.Name = Name; }
public int getAge() { return this.Age; }
public void setAge(int Age) { this.Age = Age; }
public String getGender() { return this.Gender; }
public void setGender(String Gender) { this.Gender = Gender; }
public String getTelephone() { return this.Telephone; }
public void setTelephone(String Telephone) { this.Telephone = Telephone; }
public String getAddress() { return this.Address; }
public void setAddress(String Address) { this.Address = Address; }
public int getID() { return ID; }
public void setID(int ID) { this.ID = ID; }}




复制代码


}

发布于: 刚刚阅读数: 6
用户头像

还未添加个人签名 2022-11-01 加入

还未添加个人简介

评论

发布
暂无评论
Java通讯录管理系统_Java_我是一个茶壶_InfoQ写作社区