电话号码检索系统升级版

一、 问题描述

实现一个许昌地区常用电话号码检索系统,其中信息包括:商家名称,联系电话,属性(可补充其它属性)。要求有合适的交互界面,方便用户操作。

主要功能:

(1)从文本文件中的数据输入建立电话号码系统。

(2)插入,删除,修改电话号码。

(3)查询电话号码,可按商家名称查询,和按电话号码查询。

(4)可按商家名称或电话号码排序。

(5)数据输出保存在文本文件中。

数据构成:12个不同属性类别的文本文档,每个文档中存储了上百条的商家姓名及电话信息。

二、 数据结构设计

本题目要求实现一个带有多个属性的商家信息的电话号码检索系统,数据结构为12个不同属性类别的文本文档,每个文档中存储了上百条商家信息,包括商家姓名、商家电话。电话检索系统需要考虑存储空间的利用率,还要实现功能的高效性,在数据存储上不能采用单链表存储,后期对数据查找效率不高,为实现数据的高效存储、查询,采用了线性表的顺序存储结构,方便后期对数据进行查找、排序操作。

三、源码如下:

----------------------------------------------------------------------------------------User.java

package zhangchunlan;

public class User {

​ public static void main(String []args)throws Exception {

​ Gongneng m=new Gongneng();

​ m.type();

​ }

}

---------------------------------------------------------------------------------------Tongxun.java

package zhangchunlan;

public class Tongxun { //创建类

​ String name; //定义字符串变量,设为私有化

​ String phoneNumber;

​ public String getName() { //构造getName方法,对私有变量进行操作

​ return name;

​ }

​ public void setName(String name) { //构造setName方法

this.name = name; //变量赋值

​ }

​ // set()是给属性赋值的,get()是取得属性值的

​ public String getPhoneNumber() {

​ return phoneNumber;

​ }

​ public void setPhoneNumber(String phoneNumber) {

​ this.phoneNumber = phoneNumber;

​ }

​ public String toString() { //对象引用toString() 方法返回该对象的字符串类型

​ String s = “姓名:” + name + “电话:” + phoneNumber;

​ return s;

​ }

}

---------------------------------------------------------------------------------------Gongneng.java

package zhangchunlan;

import java.io.*;

import java.util.*;

public class Gongneng

{

​ Scanner sc=new Scanner(System.in);

​ Tongxun[] Tongxun = new Tongxun[500];

​ int curlen=0;

​ public void type()throws Exception{//一级菜单

​ 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(" 8.企业工厂电话:");

​ System.out.println(" 9.旅游出行电话:");

​ System.out.println(" 10.农林渔牧电话:");

​ System.out.println(" 11.政党社团电话:");

​ System.out.println(" 12.其他类别电话:");

​ System.out.println("********************************************");

​ System.out.println(“请选择您要查询的类别:”);

​ int s=sc.nextInt();

​ File f;

​ String str;

​ switch(s){

​ case 1:f=new File("(1)许昌餐饮美食电话.txt");

​ xuanZe(f);break;

​ case 2:f=new File("(2)许昌商务服务电话.txt");

​ xuanZe(f);break;

​ case 3:f=new File("(3)许昌生活服务电话.txt");

​ xuanZe(f); break;

​ case 4:f=new File("(4)许昌休闲娱乐电话.txt");

​ xuanZe(f);break;

​ case 5:f=new File("(5)许昌教育培训科研电话.txt");

​ xuanZe(f);break;

​ case 6:f=new File("(6)许昌房产建材电话.txt");

​ xuanZe(f);break;

​ case 7:f=new File("(7)许昌医疗卫生电话.txt");

​ xuanZe(f);break;

​ case 8:f=new File("(8)许昌企业工厂电话.txt");

​ xuanZe(f);break;

​ case 9:f=new File("(9)许昌旅游出行电话.txt");

​ xuanZe(f);break;

​ case 10:f=new File("(10)许昌农林渔牧电话.txt");

​ xuanZe(f);break;

​ case 11:f=new File("(11)许昌党政社团电话.txt");

​ xuanZe(f);break;

​ case 12:f=new File("(12)许昌其它类别电话.txt");

​ xuanZe(f);break;

​ case 0:break;

​ }

​ }

​ public void xuanZe(File f) throws Exception{

​ boolean flag=true;

​ while(flag){

​ 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("# 8—导入 #");

​ System.out.println("# 9—导出 #");

​ System.out.println("# 0—退出 #");

​ System.out.println("###########################");

​ Scanner sc=new Scanner(System.in);

​ int a = sc.nextInt();

​ switch (a) {

​ case 1:add();break;

​ case 2:delete(); break;

​ case 3:xiuGai();break;

​ case 4:selectByName();break;

​ case 5:selectByTel();break;

​ case 6:paiXu();break;

​ case 7:selectAll();break;

​ case 8:FileReade(f);break;

​ case 9:FileWrite(f);break;
​ case 0:

​ flag=false;

​ break;

​ default:

​ System.out.println(“输入指令错误!请重新输入!”);

​ break;

​ }

​ }

​ }

​ public void FileReade(File f)throws Exception { // 导入文本文件

​ FileReader reader = new FileReader(f);

​ BufferedReader br = new BufferedReader(reader);

​ // 创建一个BufferedReader缓冲对象

​ String str;

​ while ((str = br.readLine()) != null) { // 每次读取一行文本,判断是否到文件末尾

​ // 每次读取一行文本,判断是否到文件末尾

​ String []s=str.split("?;

​ Tongxun[curlen]=new Tongxun();

​ Tongxun[curlen].setName(s[0]);

​ Tongxun[curlen].setPhoneNumber(s[1]);

​ curlen++;

​ }

​ br.close();

​ }

​ public void FileWrite(File f)throws Exception {//导出信息到文本文件

​ FileWriter writer = new FileWriter(f);

​ // 创建一个BufferdWriter缓冲区对象

​ BufferedWriter bw = new BufferedWriter(writer);

​ for(int i=0;i<=this.curlen;i++)

​ {

​ String str01=Tongxun[i].getName()+","+Tongxun[i].getPhoneNumber();

​ bw.write(str01);

​ bw.newLine(); // 写入一个换行符,该方法会根据不同的操作系统生成相应的换行符

​ }

​ bw.close();

​ }

​ public void add()throws Exception { //增加信息

​ Tongxun b = new Tongxun();

​ System.out.println("------添加电话本---------");

​ System.out.println(“请输入相关信息:”);

​ System.out.print(“姓名:”);

​ String name = sc.next();

​ b.setName(name); //变量定义

​ System.out.print(“电话:”);

​ String dianhua = sc.next();

​ b.setPhoneNumber(dianhua);

​ Tongxun[curlen++]=b;

​ System.out.println(“添加成功”);

​ System.out.println(b.toString());

​ }

​ public void delete()throws Exception {

​ System.out.println("------删除电话本----------");

​ System.out.println(“请输入你要删除的电话本:”);

​ Scanner sc=new Scanner(System.in);

​ String s = sc.next();

​ int a=-1;

​ for (int i = 0; i < curlen; i++) {

​ if (Tongxun[i] != null) {

​ if (Tongxun[i].getName().equals(s)) {

​ a=0;

​ System.out.println(“你要删除的是:” + Tongxun[i].toString());

​ System.out.println(“你确定要删除吗?\n [Y]确定,[N]取消”);

​ String s2 = sc.next();

​ if (s2.equals(“y”)) {

​ Tongxun[i] = Tongxun[curlen-1];

​ curlen–;

​ System.out.println(“删除成功!”);

​ try { //try catch 实现异常的处理

​ Thread.sleep(2000);

​ } catch (InterruptedException e) {

​ e.printStackTrace();

​ }

​ } else if (sc.next().equals(“n”)) {

​ System.out.println(“已取消,请重新选择操作”);

​ } else {

​ System.out.println(“输入指令不正确,请重新输入!”);

​ delete();

​ }

​ }

​ }

​ }

​ if(a==-1) {

​ System.out.println(“你输入的账号不存在!请重新输入!”);

​ delete();

​ }

​ }

​ public void xiuGai() {

​ System.out.println("--------修改电话本-------------");

​ System.out.println(“请输入你要修改的账号:”);

​ Scanner sc=new Scanner(System.in);

​ String s = sc.next();

​ int a=-1;

​ for (int i = 0; i < curlen; i++) {

​ if (Tongxun[i] != null) {

​ if (Tongxun[i].getName().equals(s)) {

​ System.out.println(“你要修改的是:” + Tongxun[i].toString());

​ System.out.println(“请重新输入相关信息:”);

​ System.out.print(“姓名:”);

​ String name = sc.next();

​ Tongxun[i].setName(name);

​ System.out.print(“电话:”);

​ String dianhua = sc.next();

​ Tongxun[i].setPhoneNumber(dianhua);

​ System.out.print(“修改成功!”);

​ System.out.println(“修改后为:” + Tongxun[i].toString());

​ a=0;

​ try {

​ Thread.sleep(2000);

​ } catch (InterruptedException e) {

​ e.printStackTrace();

​ }

​ }

​ }

​ }

​ if(a==-1) {

​ System.out.println(“你输入的账号不存在!请重新输入!”);

​ xiuGai();

​ }

​ }

​ public void paiXu()//直接插入排序

​ {

​ Tongxun temp;

​ int i,j;

​ for(i=1;i<this.curlen;i++)

​ {

​ temp=Tongxun[i];

​ for(j=i-1;j>=0&&temp.name.compareTo(Tongxun[j].name)>0;j–)

​ {

​ Tongxun[j+1]=Tongxun[j];

​ }

​ Tongxun[j+1]=temp;

​ }

}

​ public void selectAll()throws Exception {

​ System.out.println("--------所有电话信息---------------");

​ for (int i = 0; i < curlen; i++) {

​ if (Tongxun[i] != null) {

​ System.out.println(Tongxun[i].toString());

​ }

​ }

​ try {

​ Thread.sleep(2000);

​ } catch (InterruptedException e) {

​ e.printStackTrace();

​ }

​ }

​ public void selectByName() throws Exception { //按商家名字搜索

​ System.out.println("---------根据名字查询---------------");

​ System.out.println(“请输入你要查找的名字:”);

​ String sname=sc.next();

​ int w=0;

​ for(int i=0;i<curlen;i++){

​ if(Tongxun[i].getName().contains(sname)){

​ System.out.println(Tongxun[i].toString());

​ w=-1;

​ }

​ }

​ if(w==0)

​ System.out.println(“未找到”);

​ }

​ public void selectByTel() throws Exception {

​ System.out.println("---------根据电话查询---------------");

​ System.out.println(“请输入你要查找的电话:”);

​ String stel=sc.next();

​ int w=0;

​ for(int i=0;i<curlen;i++){

​ if(Tongxun[i].getPhoneNumber().contains(stel)){

​ System.out.println(Tongxun[i].toString());

​ w=-1;

​ }

​ }

​ if(w==0)

​ System.out.println(“未找到”);

​ }

​ public void tuiChu() {

​ System.out.println(“谢谢使用!O(∩_∩)O \n”);

​ System.gc();// 系统回收资源

​ Runtime.getRuntime().runFinalization();// 没起作用;

​ }

​ public void finalize() {// 并未被调用

​ System.out.println(“已回收资源,成功退出系统”);

​ }

}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值