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;
}
}
}
版权声明: 本文为 InfoQ 作者【我是一个茶壶】的原创文章。
原文链接:【http://xie.infoq.cn/article/9041996911f82024f68a790fb】。未经作者许可,禁止转载。
我是一个茶壶
还未添加个人签名 2022-11-01 加入
还未添加个人简介
评论