数据结构(JAVA版本)练习之集合 简易图书管理系统

简介: 数据结构(JAVA版本)练习之集合 简易图书管理系统

看完第一章  集合   结合书中代码 稍微修改做个小练习:



E盘根目录下 table.txt内容:

C001 程序设计基础 4 蒋建设

C002 微机原理与应用 5 张钢

C003 高等数学 6 李明  

C004 离散数学 5 赵学会

C005 世界近代史 2 陈晓



课程表类:


package com.chujianyun.com;

public class Table

{

private String key;

private String rest;



public Table()

{

 

}

public Table(String key, String rest)

{

 super();

 this.key = key;

 this.rest = rest;

}



public String getKey()

{

 return key;

}

public void setKey(String key)

{

 this.key = key;

}

public String getRest()

{

 return rest;

}

public void setRest(String rest)

{

 this.rest = rest;

}


@Override

public boolean equals(Object obj)

{  

 return key.equals(((Table)obj).key);

}

@Override

public String toString()

{

 return "Table [key=" + key + ", rest=" + rest + "]";

}


}

文件操作类:


package com.chujianyun.com;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.util.HashSet;

import java.util.LinkedHashSet;

import java.util.Scanner;

import java.util.Set;

public class FileOperator

{

private static String filePath = "E:\\table.txt";



public static Set<Table> readFile( )

{

 Set<Table> set = new LinkedHashSet<Table>();

  File file = new File(filePath);

  BufferedReader bf = null;

  try {

 

     bf = new BufferedReader(new InputStreamReader(new FileInputStream(file),"GBK"));

      String str,key,rest;

            Table tbl =null;

  while((str=bf.readLine())!=null)

  {

   key = str.substring(0,4);

   rest = str.substring(5);

   tbl = new Table(key,rest);

 

   set.add(tbl);

  }

 

 

} catch (FileNotFoundException e) {

 System.out.println("没有找到文件!");

 //e.printStackTrace();

}catch(IOException e) {

 System.out.println("打开或者访问文件异常"+e.getMessage());

 //e.printStackTrace();

}finally

{

 

 try {

  bf.close();

 } catch (IOException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

 }

}

 

  return set;

 

}

public static void writeFile(Set<Table> set)

{

 File file = new File(filePath);

 BufferedWriter bw = null;

 //Table tbl = null;

 try {

  bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "GBK"));

  for(Table tbl:set)

  {

      bw.write(tbl.getKey()+" "+tbl.getRest()+"\r\n");

 

  }

  bw.flush();

 } catch (IOException e) {

  System.out.println("打开或者访问文件异常"+e.getMessage());

 }finally

 {

  try {

   bw.close();

  } catch (IOException e) {

   System.out.println("写缓冲流关闭异常"+e.getMessage());

  }

 }

 

}



public static void select()

{

 

     System.out.println("\n-----------------------------------------");

  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("-1:退出");

   System.out.println("-----------------------------------------");

   System.out.print("功能选择:");

 

 

}


//根据 key 和 SET查找

public static Table findTable(String key,Set<Table> tbls)

{

 

 for(Table tbl : tbls)

 {

   if(tbl.getKey().equals(key))

   {

    return tbl;

   }

 }

 return null;

}

public static void findTableInput(Set<Table> tbls,Scanner in)

{

 

 

 

 String input ="";

 System.out.print("请输入要查找的课程表:");


 input =in.next();


 Table tbl = findTable(input, tbls);

 

 if(tbl==null)

 {

  System.out.println("没有找到该课程号对应的课程表");

 }else

 {

  System.out.println("对应的课程表为:"+tbl);

 }

 

 

 

}


public static void editTableInput(Set<Table> tbls,String input)

{

 

 String key = input.substring(0,4);

 String rest = input.substring(5);

 

 for(Table tbl:tbls)

 {

 

  if(tbl.getKey().equals(key))

  {

   tbl.setRest(rest);

 

    System.out.println("修改编号为["+key+"]的课程成功!");

  }

 }

}

public static void editTableInput(Set<Table> tbls,Scanner in)

{

 

 

 

 String input ="";

 System.out.print("请输入要修改的课程表:");

       input=in.nextLine();

       input=in.nextLine();

 

       editTableInput(tbls,input);

 

 

 

 

}


public static void deleteTable(String key,Set<Table> tbls)

{

 Table tblRemove = findTable(key, tbls);

 if(tblRemove!=null)

 {

  tbls.remove(tblRemove);

  writeFile(tbls);

  System.out.println("删除编号为:["+key+"]的课程成功!");

 }else

 {

  System.out.println("未检索到,课程编号:["+key+"]对应的课程,删除失败!");

 }

 

}


public static void deleteTableInput(Set<Table> tbls,Scanner in)

{


 

 String input ="";

 System.out.print("请输入要删除的课程表:");

 input =in.next();

 

 

 deleteTable(input, tbls);

 

}


public static void addTable(Set<Table> tbls,Scanner in)

{

        String input="";

        System.out.print("请输入要添加的课程表:");

     

        input=in.nextLine();

        input=in.nextLine();

 String key = input.substring(0,4);

 String rest = input.substring(5);

 

 tbls.add(new Table(key,rest));

 writeFile(tbls);

   System.out.print("添加课程表:"+key+"成功!");

}


public static void printTables(Set<Table> tbls)

{

 

 for(Table tbl:tbls)

 {

  System.out.println(tbl);

 }

}




}


测试类:

package com.chujianyun.com;

import java.util.Scanner;

import java.util.Set;

public class SetDemo {

public static void main(String[] args)

{

 Set<Table> tbls = FileOperator.readFile();

 

/* for(Table tbl:tbls)

 {

  System.out.println(tbl);

 }*/

 Scanner in = new Scanner(System.in);

 

 

  FileOperator.select();

  int choice =0;

 

 while((choice =in.nextInt())!=-1)

 {

 


  switch(choice)

  {

   case -1: System.exit(0); break;

   case 1:

 

    FileOperator.findTableInput(tbls,in); break;

   case 2:

 

    FileOperator.deleteTableInput(tbls,in);break;

   case 3:

 

    FileOperator.addTable(tbls,in);break;

   case 4:

    FileOperator.printTables(tbls); break;

   case 5:

    FileOperator.editTableInput(tbls, in); break;

   default:

    System.out.println("输入的数字错误请重新输入");


  }

   FileOperator.select();

 }

 }

}


效果:


-----------------------------------------


输入编号进行功能选择:


1:根据课程号查找课程;


2:根据课程号删除课程:


3:向课程表里面追加一个课程记录:


4:显示课程表里面所有课程记录


5:修改课程表里面的课程记录


-1:退出


-----------------------------------------


功能选择:4


Table [key=C001, rest=程序设计基础 4 蒋建设]


Table [key=C002, rest=微机原理与应用 5 张钢]


Table [key=C003, rest=高等数学 6 李明  ]


Table [key=C004, rest=离散数学 5 赵学会]


Table [key=C005, rest=世界近代史 2 陈晓]


Table [key=C006, rest=数据结构(JAVA版) 8 王凯]



-----------------------------------------


输入编号进行功能选择:


1:根据课程号查找课程;


2:根据课程号删除课程:


3:向课程表里面追加一个课程记录:


4:显示课程表里面所有课程记录


5:修改课程表里面的课程记录


-1:退出


-----------------------------------------


功能选择:2


请输入要删除的课程表:C006


删除编号为:[C006]的课程成功!



-----------------------------------------


输入编号进行功能选择:


1:根据课程号查找课程;


2:根据课程号删除课程:


3:向课程表里面追加一个课程记录:


4:显示课程表里面所有课程记录


5:修改课程表里面的课程记录


-1:退出


-----------------------------------------


功能选择:1


请输入要查找的课程表:C005


对应的课程表为:Table [key=C005, rest=世界近代史 2 陈晓]



-----------------------------------------


输入编号进行功能选择:


1:根据课程号查找课程;


2:根据课程号删除课程:


3:向课程表里面追加一个课程记录:


4:显示课程表里面所有课程记录


5:修改课程表里面的课程记录


-1:退出


-----------------------------------------


功能选择:3


请输入要添加的课程表:C006 中国近代史 1 林冲


添加课程表:C006成功!


-----------------------------------------


输入编号进行功能选择:


1:根据课程号查找课程;


2:根据课程号删除课程:


3:向课程表里面追加一个课程记录:


4:显示课程表里面所有课程记录


5:修改课程表里面的课程记录


-1:退出


-----------------------------------------


功能选择:4


Table [key=C001, rest=程序设计基础 4 蒋建设]


Table [key=C002, rest=微机原理与应用 5 张钢]


Table [key=C003, rest=高等数学 6 李明  ]


Table [key=C004, rest=离散数学 5 赵学会]


Table [key=C005, rest=世界近代史 2 陈晓]


Table [key=C006, rest=中国近代史 1 林冲]



-----------------------------------------


输入编号进行功能选择:


1:根据课程号查找课程;


2:根据课程号删除课程:


3:向课程表里面追加一个课程记录:


4:显示课程表里面所有课程记录


5:修改课程表里面的课程记录


-1:退出


-----------------------------------------


功能选择:5


请输入要修改的课程表:C006 JAVA程序设计 8 林冲


修改编号为[C006]的课程成功!



-----------------------------------------


输入编号进行功能选择:


1:根据课程号查找课程;


2:根据课程号删除课程:


3:向课程表里面追加一个课程记录:


4:显示课程表里面所有课程记录


5:修改课程表里面的课程记录


-1:退出


-----------------------------------------


功能选择:4


Table [key=C001, rest=程序设计基础 4 蒋建设]


Table [key=C002, rest=微机原理与应用 5 张钢]


Table [key=C003, rest=高等数学 6 李明  ]


Table [key=C004, rest=离散数学 5 赵学会]


Table [key=C005, rest=世界近代史 2 陈晓]


Table [key=C006, rest=JAVA程序设计 8 林冲]



-----------------------------------------


输入编号进行功能选择:


1:根据课程号查找课程;


2:根据课程号删除课程:


3:向课程表里面追加一个课程记录:


4:显示课程表里面所有课程记录


5:修改课程表里面的课程记录


-1:退出


-----------------------------------------


功能选择:-1


相关文章
|
1月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
70 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
27天前
|
存储 Java
Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。
【10月更文挑战第19天】本文详细介绍了Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。HashMap以其高效的插入、查找和删除操作著称,而TreeMap则擅长于保持元素的自然排序或自定义排序,两者各具优势,适用于不同的开发场景。
42 1
|
30天前
|
存储 Java
告别混乱!用Java Map优雅管理你的数据结构
【10月更文挑战第17天】在软件开发中,随着项目复杂度增加,数据结构的组织和管理至关重要。Java中的Map接口提供了一种优雅的解决方案,帮助我们高效、清晰地管理数据。本文通过在线购物平台的案例,展示了Map在商品管理、用户管理和订单管理中的具体应用,有效提升了代码质量和维护性。
81 2
|
30天前
|
存储 Java 开发者
Java Map实战:用HashMap和TreeMap轻松解决复杂数据结构问题!
【10月更文挑战第17天】本文深入探讨了Java中HashMap和TreeMap两种Map类型的特性和应用场景。HashMap基于哈希表实现,支持高效的数据操作且允许键值为null;TreeMap基于红黑树实现,支持自然排序或自定义排序,确保元素有序。文章通过具体示例展示了两者的实战应用,帮助开发者根据实际需求选择合适的数据结构,提高开发效率。
61 2
|
13天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
35 6
|
18天前
|
存储 Java 索引
Java中的数据结构:ArrayList和LinkedList的比较
【10月更文挑战第28天】在Java编程世界中,数据结构是构建复杂程序的基石。本文将深入探讨两种常用的数据结构:ArrayList和LinkedList,通过直观的比喻和实例分析,揭示它们各自的优势与局限,帮助你在面对不同的编程挑战时做出明智的选择。
|
22天前
|
Java Linux Windows
如何查看已安装的 Java 版本
要查看已安装的 Java 版本,打开命令提示符或终端,输入 `java -version`,回车后即可显示当前系统中 Java 的版本信息。
|
22天前
|
Ubuntu Java Linux
如何检查 Java 版本是否兼容
要检查Java版本是否兼容,可在命令行输入“java -version”查看当前安装的Java版本,然后对比目标应用所需的Java版本,确保其满足要求。
|
26天前
|
存储 算法 Java
Java 中常用的数据结构
【10月更文挑战第20天】这些数据结构在 Java 编程中都有着广泛的应用,掌握它们的特点和用法对于提高编程能力和解决实际问题非常重要。
25 6
|
27天前
|
存储 Java 开发者
Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效
【10月更文挑战第19天】在软件开发中,随着项目复杂度的增加,数据结构的组织和管理变得至关重要。Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效。本文通过在线购物平台的案例,展示了Map在商品管理、用户管理和订单管理中的具体应用,帮助开发者告别混乱,提升代码质量。
27 1
下一篇
无影云桌面