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

数据结构实用教程(JAVA版)

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

课程表类:

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

时间: 2024-08-01 19:34:48

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

集合书写图书管理系统(C#程序)

图书管理系统的需求: 用结构体来实现图书管理系统,需要在cmd中运行 用MonoDevelop或者VS进行编码 用结构体写图书管理系统,此代码可以在Monodevelop上或者在VS上运行 需要实现的第一个功能是能够进行图书的添加将图书的信息保存到一个数组中,数组的类型为结构体所命名的类型 第二个功能能够进行图书的删除 第三个功能能够进行图书的修改 第四个功能能够进行图书的查询 第五个功能能够进行图书系统的退出 以下是两种不一样的编程思想(一一遍吗列举了出来) 第一种: using System

【WPF on .NET Core 3.0】 Stylet演示项目 - 简易图书管理系统(4) - 图书列表界面

在前三章中我们完成了登录窗口, 并掌握了使用Conductor来切换窗口, 但这些其实都是在为我们的系统打基础. 而本章中我们就要开始开发系统的核心功能, 即图书管理功能了. 通过本章, 我们会接触到以下知识点: 使用Stylet内置IoC 使用ViewModel First解耦UI 让我们开始吧! 关于UI 有朋友说我们的系统界面有点简陋, 有点辜负WPF的美名. 其实UI并不是本系列文章主要关注的内容. 但是既然有朋友指出来, 那么这里就稍微美化一下UI, 这样看起来也赏心悦目一些. WPF

java课堂测试样卷-----简易学籍管理系统

程序设计思路:分别建立两个类:ScoreInformation类(用来定义学生的基本信息以及设置set和get函数)ScoreManagement类(用来定义实现学生考试成绩录入,考试成绩修改,绩点计算等功能的函数)和一个主函数Text类 (通过输入的数字选项进行功能的实现,因为退出系统代码量极少,所以在主函数中实现此功能) 程序源代码及注释 ScoreInformation类: 1 //信1805-3 20183658 王兵兵 2 package adc; 3 4 public class S

手把手实现Java图书管理系统(附源码)

基于SSM的图书管理系统的设计与实现 一.系统简介 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群. 详细介绍了图书管理系统的实现,包括:1.环境搭建2.系统功能3.技术实现4.项目运行5.功能演示6.系统扩展 以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用. 二.技术实现 1.后台框架:Spring.SpringMVC.MyBatis2.UI界面:BootStr

用结构体书写图书管理系统(C#程序)

图书管理系统的需求: 用结构体来实现图书管理系统,需要在cmd中运行 用MonoDevelop或者VS进行编码 用结构体写图书管理系统,此代码可以在Monodevelop上或者在VS上运行 需要实现的第一个功能是能够进行图书的添加将图书的信息保存到一个数组中,数组的类型为结构体所命名的类型 第二个功能能够进行图书的删除 第三个功能能够进行图书的修改 第四个功能能够进行图书的查询 第五个功能能够进行图书系统的退出 代码如下: using System; using System.Threading

Java图书管理系统(用Java常用集合实现)

图书管理系统 一.需求说明 1.功能:登录,注册,忘记密码,管理员管理,图书管理. 2.管理员管理:管理员的增删改查. 3.图书管理:图书的增删改查. 4.管理员属性包括:id,姓名,性别,年龄,家庭住址,手机号码,登录名称,登录密码,状态. 5.图书属性包括:id,图书名称,作者,单价,出版社,出版日期,类别. 6.技术:通过用集合来模拟数据库实现该系统,建议采用List集合实现,集合模拟数据库只是一个数据的临时保存. 二.功能说明 1.注册功能 描述:注册需要用户输入所有的必须的用户信息.

Java版本:识别Json字符串并分隔成Map集合

前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些小问题: 1:C#的ref:这个参数的主要意图是: 就算方法内部重新对参数重新(new)赋值,也能保证外部的参数指向新的值. Java木有了,不知道新的方案是什么?还是说只能避免方法内部重新(new)赋值? 2:C#的out:这个参数的主要意图是: 处理多值返回的问题. Java木有了,只能改返回数

Java版本:图书管理系统

实验目的:掌握数据库编程技术.能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 实验内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出版日期.书号.价格字段.设计一个GUI界面进行书目管理.在该界面上有四个选项卡,分别是查询.插入.删除.修改.点击查询选项卡,出现的界面上有书名.作者.出版社.书号四个文本框,一个按钮和一个只读文本区.文本框内容可以为空,输入相应的查询信息后(例如根据书名查询可以仅输入书名),点击界面上的"查询"按钮,可以在界面下方的文本区中显

使用Java开发OpenCV3程序-3.OpenCV的组件结构以及java版本的数据结构

OpenCV组件结构 关于OpenCV的组件结构“浅墨”大神给出了详细的解释,详细的参照:一览众山小:OpenCV 2.4.8 or OpenCV 2.4.9组件结构全解析 但在OpenCV3.1中还是有些变化的,在opencv/build/include/opencv2目录下有OpenCV的所有模块, 一共有这么多模块,在浅墨的文章中也做了详细的介绍,有些模块已经没有了.然后再看看java中所包含的模块,可以从opencv.jar中看到所实现的模块: 明显看到跟C++版本的少了很多模块,但是基