# 数据结构（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.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.FileWriter;

import java.io.IOException;

import java.io.OutputStreamWriter;

import java.util.HashSet;

import java.util.Scanner;

import java.util.Set;

public class FileOperator

{

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

{

File file = new File(filePath);

try {

String str,key,rest;

Table tbl =null;

{

key = str.substring(0,4);

rest = str.substring(5);

tbl = new Table(key,rest);

}

} 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);

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)

{

/* 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:

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：退出

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

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：根据课程号查找课程；

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

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

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

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

-1：退出

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

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

1：根据课程号查找课程；

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

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

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

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

-1：退出

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

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

1：根据课程号查找课程；

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

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

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

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

-1：退出

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

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：退出

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

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

1：根据课程号查找课程；

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

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

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

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

-1：退出

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

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：退出

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

|
25天前
|
Java
【Java集合类面试二十八】、说一说TreeSet和HashSet的区别
HashSet基于哈希表实现，无序且可以有一个null元素；TreeSet基于红黑树实现，支持排序，不允许null元素。
29 2
|
15天前
|
Java

25 5
|
15天前
|

Java中的集合框架：从入门到精通
【8月更文挑战第30天】在Java的世界里，集合框架是一块基石，它不仅承载着数据的存储和操作，还体现了面向对象编程的精髓。本篇文章将带你遨游Java集合框架的海洋，从基础概念到高级应用，一步步揭示它的奥秘。你将学会如何选择合适的集合类型，掌握集合的遍历技巧，以及理解集合框架背后的设计哲学。让我们一起探索这个强大工具，解锁数据结构的新视角。
32 0
|
16天前
|

Java中的集合框架深度解析云上守护：云计算与网络安全的协同进化
【8月更文挑战第29天】在Java的世界中，集合框架是数据结构的代言人。它不仅让数据存储变得优雅而高效，还为程序员提供了一套丰富的工具箱。本文将带你深入理解集合框架的设计哲学，探索其背后的原理，并分享一些实用的使用技巧。无论你是初学者还是资深开发者，这篇文章都将为你打开一扇通往高效编程的大门。
24 1
|
23天前
|

Java 中的同步集合和并发集合
【8月更文挑战第22天】
20 5
|
23天前
|

13 1
|
25天前
|

【Java集合类面试二十九】、说一说HashSet的底层结构
HashSet的底层结构是基于HashMap实现的，使用一个初始容量为16和负载因子为0.75的HashMap，其中HashSet元素作为HashMap的key，而value是一个静态的PRESENT对象。
24 2
|
25天前
|
Java
【Java集合类面试三十】、BlockingQueue中有哪些方法，为什么这样设计？
BlockingQueue设计了四组不同行为方式的方法用于插入、移除和检查元素，以适应不同的业务场景，包括抛异常、返回特定值、阻塞等待和超时等待，以实现高效的线程间通信。
23 1
|
14天前
|

Java中的集合框架深度解析与实践
【8月更文挑战第31天】在Java编程的海洋中，集合框架扮演着不可或缺的角色。本文将带你领略Java集合框架的魅力，从理论到实践，深入浅出地探索List、Set和Map等核心接口的使用技巧。我们将通过具体代码示例，展示如何在日常开发中高效运用这些工具，让你的代码更加优雅和高效。无论你是初学者还是有经验的开发者，这篇文章都将为你打开一扇通往Java集合世界的大门。
37 0
|
14天前
|

JAVA集合
【8月更文挑战第31天】
12 0