要求:
图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
试设计一图书信息管理系统,使之能提供以下功能:
1、系统以菜单方式工作
2、图书信息录入功能--输入
3、图书信息浏览功能--输出
4、图书信息查询功能--算法
查询方式
按书名查询
按作者名查询
5、图书信息的删除与修改(可选项)
源代码:
Library.java:
class Library {
String Login_number;
String Book_name;
String Author_name;
String Classification_name;
String Publish_unit;
String Publish_time;
double Price;
Library(String login_number,String book_name,String author_name,String classification_name,String publish_unit,String publish_time,double price)
{
Login_number = login_number;
Book_name = book_name;
Author_name = author_name;
Classification_name = classification_name;
Publish_unit = publish_unit;
Publish_time = publish_time;
Price = price;
}
public String getlogin_number()
{
return Login_number;
}
public String getBook_name()
{
return Book_name;
}
public String getAuthor_name()
{
return Author_name;
}
public String getClassification_name()
{
return Classification_name;
}
public String getPublish_unit()
{
return Publish_unit;
}
public String getPublish_time()
{
return Publish_time;
}
public double getPrice()
{
return Price;
}
}
LibraryMenu.java:
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
public class LibraryMenu extends JFrame{
//private Frame f = new Frame("图书信息管理系统");
private MenuBar mb = new MenuBar();
Menu submit = new Menu("录入");
Menu scan = new Menu("浏览");
Menu search = new Menu("查询");
Menu file = new Menu("文件操作");
MenuItem BookNameSearch = new MenuItem("书名",new MenuShortcut(KeyEvent.VK_3));
MenuItem AuthorSearch = new MenuItem("作者名",new MenuShortcut(KeyEvent.VK_4));
MenuItem input = new MenuItem("录入",new MenuShortcut(KeyEvent.VK_1));
MenuItem Scan = new MenuItem("浏览",new MenuShortcut(KeyEvent.VK_2));
MenuItem delete = new MenuItem("删除");
MenuItem modify = new MenuItem("修改");
JTable table;
//主菜单
LibraryMenu() throws FileNotFoundException
{
String []columntitle = new String[]{"登入号","书名","作者名","分类号","出版单位","出版时间","价钱"};
int row = Read.read().length;
String [][]S = new String[row][7];
S = Read.read();
Object [][]Date = new String[row][7];
for(int i=0;i<row;i++)
for(int k=0;k<7;k++){
Date[i][k] = S[i][k];
}
table = new JTable(Date,columntitle);
submit.addActionListener(new Clicksumbit());//注册,添加监听器
submit.add(input);
Scan.addActionListener(new ClickScan());
scan.add(Scan);
search.addSeparator();
BookNameSearch.addActionListener(new ClicksearchBookName());
AuthorSearch.addActionListener(new ClicksearchAuthorName());
search.add(BookNameSearch);
search.add(AuthorSearch);
delete.addActionListener(new Clickdelete());
modify.addActionListener(new Clickmodify());
file.add(delete);
file.add(modify);
mb.add(submit);
mb.add(scan);
mb.add(search);
mb.add(file);
this.add(new JScrollPane (table));
//panel.add(texts);
//this.add(panel);
this.setMenuBar(mb);
}
//定义事件监听器,当点击submit时触发
class Clicksumbit implements ActionListener
{
//事件处理器,实现点击submit(录入)时,弹出录入窗口
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("录入"))//Button 用e.getSorce()==submit
{
ClickSumbit clicksumbit = new ClickSumbit();
}
}
}
class ClicksearchBookName implements ActionListener
{
JFrame f = new JFrame("按书名查询");
JButton b1 = new JButton("确认");
JButton b2 = new JButton("重置");
JTextField text1 = new JTextField(20);
JPanel panel1 = new JPanel();
//JTextArea text = new JTextArea(3,100);
//JTable table1;
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("书名"))
{
panel1.add(text1);
b1.addActionListener(new Clickb1());
b2.addActionListener(new Clickb2());
panel1.add(b1);
panel1.add(b2);
//panel1.add(text);
//f.add(new JScrollPane (table1));
f.add(panel1);
f.setBounds(250,200,800, 300);
f.setVisible(true);
}
}
class Clickb1 implements ActionListener
{
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b1)
{
try {
String []columntitle = new String[]{"登入号","书名","作者名","分类号","出版单位","出版时间","价钱"};
int row = Read.read().length;
String [][]S = new String[row][7];
S = Read.read();
Object [][]Date = new String[row][7];
int number = 0;
for(int i=0;i<row;i++)
{
if(S[i][1].equals(text1.getText()))
{
for(int k = 0;k<7;k++)
Date[number][k] = S[i][k];
number++;
}
}
DefaultTableModel model = new DefaultTableModel(Date, columntitle);
table.setModel(model);
// f.add(new JScrollPane(table1));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
class Clickb2 implements ActionListener
{
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b2)
{
text1.setText(" ");
}
}
}
}
class ClicksearchAuthorName implements ActionListener
{
JFrame f = new JFrame("按作者名查询");
JButton b1 = new JButton("确认");
JButton b2 = new JButton("重置");
JTextField text1 = new JTextField(20);
JPanel panel1 = new JPanel();
//JTextArea text = new JTextArea(10,100);
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("作者名"))
{
panel1.add(text1);
b1.addActionListener(new Clickb1());
b2.addActionListener(new Clickb2());
panel1.add(b1);
panel1.add(b2);
//panel1.add(text);
f.add(panel1);
f.setBounds(250,200, 700, 200);
f.setVisible(true);
}
}
class Clickb1 implements ActionListener
{
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b1)
{
try {
String []columntitle = new String[]{"登入号","书名","作者名","分类号","出版单位","出版时间","价钱"};
int row = Read.read().length;
String [][]S = new String[row][7];
int number = 0;
S = Read.read();
Object [][]Date = new String[row][7];
for(int i=0;i<row;i++)
{
if(S[i][2].equals(text1.getText()))
{
for(int k = 0;k<7;k++)
Date[number][k] = S[i][k];
number++;
}
}
DefaultTableModel model = new DefaultTableModel(Date, columntitle);
table.setModel(model);
}
catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
class Clickb2 implements ActionListener
{
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b2)
{
text1.setText(" ");
//text.setText(" ");
}
}
}
}
class ClickScan implements ActionListener
{
//LibrianInforManager a = new LibrianInforManager();
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("浏览"))
{
try {
String []columntitle = new String[]{"登入号","书名","作者名","分类号","出版单位","出版时间","价钱"};
int row = Read.read().length;
String [][]S = new String[row][7];
S = Read.read();
Object [][]Date = new String[row][7];
for(int i=0;i<row;i++)
for(int k=0;k<7;k++){
Date[i][k] = S[i][k];
}
//table = new JTable(Date,columntitle);
DefaultTableModel model = new DefaultTableModel(Date, columntitle);
table.setModel(model);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
class Clickdelete implements ActionListener
{
JFrame frame1 = new JFrame("删除");
JLabel label = new JLabel("请输入您想删除的登入号");
JPanel panel = new JPanel();
JButton button = new JButton("确定");
JButton button1 = new JButton("取消");
JTextField text1 = new JTextField(20);
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand()=="删除")
{
panel.add(label);
panel.add(text1);
button.addActionListener(new Clickbutton());
button1.addActionListener(new Clickbutton1());
panel.add(button);
panel.add(button1);
frame1.add(panel);
frame1.setBounds(200, 150, 400, 200);
frame1.setVisible(true);
}
}
class Clickbutton implements ActionListener
{
public void actionPerformed(ActionEvent e) {
if(e.getSource()==button)
{
try {
int row = Read.read().length;
String [][]S = new String[row][7];
S = Read.read();
for(int i=0;i<row;i++)
{
int k = i;
if(S[k][0].equals(text1.getText()))
{
for(int n = k;n<row;n++)
{
for(int j=0;j<7;j++)
{
if(n==row-1)
break;
S[n][j]=S[n+1][j];
}
}
row --;
}
}
File file = new File("Library.txt");
try {
FileWriter out = new FileWriter(file);
for(int i=0;i<row;i++)
{
for(int j=0;j<7;j++)
{
out.write(S[i][j]+" ");
}
out.write("\r\n");
}
out.flush();
out.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
class Clickbutton1 implements ActionListener
{
public void actionPerformed(ActionEvent e) {
if(e.getSource()==button1)
{
frame1.setVisible(false);
}
}
}
}
class Clickmodify implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand()=="修改")
{
Modify modify = new Modify();
}
}
}
}
Write.java:
import java.awt.Frame;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class Write {
public static void write(Library a) throws IOException {
File file = new File("Library.txt");
FileWriter out = new FileWriter(file,true); //可追加数据
out.write(a.getlogin_number()+" ");
out.write(a.getBook_name()+" ");
out.write(a.getAuthor_name()+" ");
out.write(a.getClassification_name()+" ");
out.write(a.getPublish_unit()+" ");
out.write(a.getPublish_time()+" ");
out.write(String.valueOf(a.getPrice())+" ");
out.write("\r\n");
out.flush();
out.close();
}
Read.java:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Read {
public static String[][] read() throws FileNotFoundException{
File file=new File("Library.txt");
Scanner input = new Scanner(file);
String []A = new String[10000];
int k=0;
while(input.hasNext()){
String str = String.valueOf(input.next());
A[k] = str;
k++;
}
int row = k/7;
int col = 7;
int t = 0;
String [][]B = new String[row][col];
for(int i=0;i<row;i++)
for(int r = 0;r<col;r++)
{
B[i][r] = A[t];
t++;
}
return B;
}
}
ClickSubmit.java:
import java.awt.Button;
import java.awt.Choice;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class ClickSumbit {
private JFrame frame = new JFrame("录入");
private JLabel login_number = new JLabel(" 登入号: ");
private TextField input_number1 = new TextField(10);
private JLabel book_name = new JLabel(" 书名: ");
private TextField input_number2 = new TextField(10);
private JLabel Author_name = new JLabel(" 作者名: ");
private TextField input_number3 = new TextField(10);
private JLabel Classification_name = new JLabel(" 分类号: ");
private Choice input_number4 = new Choice();
private JLabel Publish_unit = new JLabel(" 出版单位: ");
private TextField input_number5 = new TextField(10);
private JLabel Publish_time = new JLabel(" 出版时间: ");
private TextField input_number6 = new TextField(10);
private JLabel Price = new JLabel(" 价格: ");
private TextField input_number = new TextField(10);
private JLabel backnapse = new JLabel(" ");
private Button confirm = new Button("确认");
private Button reset = new Button("重置");
Box box1 = Box.createHorizontalBox();
Box box2 = Box.createHorizontalBox();
Box box3 = Box.createHorizontalBox();
Box box4 = Box.createHorizontalBox();
Box box5 = Box.createHorizontalBox();
Box box6 = Box.createHorizontalBox();
Box box7 = Box.createHorizontalBox();
Box box8 = Box.createHorizontalBox();
Box boxV = Box.createVerticalBox();
String [] a = {"A(马克思主义等)","B(哲学,宗教)","C(社会科学总论)","D(政治)","E(军事)","F(经济)"
,"G(文化,科学,教育)","H(语言)","I(文学)","J(艺术)","K(历史)","Z(综合性问题)"};
ClickSumbit() {
for(int i=0;i<a.length;i++)
{
input_number4.add(a[i]);
}
box1.add(login_number);
box1.add(Box.createHorizontalStrut(47));
box1.add(input_number1);
box1.add(Box.createHorizontalStrut(100));
box2.add(book_name);
box2.add(Box.createHorizontalStrut(60));
box2.add(input_number2);
box2.add(Box.createHorizontalStrut(100));
box3.add(Author_name);
box3.add(Box.createHorizontalStrut(47));
box3.add(input_number3);
box3.add(Box.createHorizontalStrut(100));
box4.add(Classification_name);
box4.add(Box.createHorizontalStrut(47));
box4.add(input_number4);
box4.add(Box.createHorizontalStrut(100));
box5.add(Publish_unit);
box5.add(Box.createHorizontalStrut(34));
box5.add(input_number5);
box5.add(Box.createHorizontalStrut(100));
box6.add(Publish_time);
box6.add(Box.createHorizontalStrut(34));
box6.add(input_number6);
box6.add(Box.createHorizontalStrut(100));
box7.add(Price);
box7.add(Box.createHorizontalStrut(60));
box7.add(input_number);
box7.add(Box.createHorizontalStrut(100));
confirm.addActionListener(new Clickcomfirm());
box8.add(backnapse);
box8.add(Box.createHorizontalStrut(60));
box8.add(confirm);
box8.add(Box.createHorizontalStrut(100));
reset.addActionListener(new Clickreset());
box8.add(reset);
box8.add(Box.createHorizontalStrut(100));
boxV.add(box1);
boxV.add(box2);
boxV.add(box3);
boxV.add(box4);
boxV.add(box5);
boxV.add(box6);
boxV.add(box7);
boxV.add(box8);
frame.add(boxV);
frame.setBounds(120, 100, 400, 300);
//frame.pack();
frame.setVisible(true);
}
class Clickcomfirm implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==confirm)
{
Library library = new Library(input_number1.getText(), input_number2.getText(), input_number3.getText(), input_number4.getSelectedItem(), input_number5.getText(), input_number6.getText(), Double.parseDouble(input_number.getText()));
try {
Write.write(library);
input_number1.setText(" ");
input_number2.setText(" ");
input_number3.setText(" ");
input_number5.setText(" ");
input_number6.setText(" ");
input_number.setText(" ");
System.out.println("存入成功");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
class Clickreset implements ActionListener
{
public void actionPerformed(ActionEvent e) {
if(e.getSource()==reset)
{
input_number1.setText(" ");
input_number2.setText(" ");
input_number3.setText(" ");
input_number5.setText(" ");
input_number6.setText(" ");
input_number.setText(" ");
}
}
}
}
Modify.iava:
import java.awt.Button;
import java.awt.Choice;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Modify {
private JFrame frame = new JFrame("修改");
private JLabel label = new JLabel("请输入你想要的修改其信息的登入号:");
private TextField modify = new TextField(10);
private JLabel login_number = new JLabel(" 新登入号: ");
private TextField input_number1 = new TextField(10);
private JLabel book_name = new JLabel(" 新书名: ");
private TextField input_number2 = new TextField(10);
private JLabel Author_name = new JLabel(" 新作者名: ");
private TextField input_number3 = new TextField(10);
private JLabel Classification_name = new JLabel(" 新分类号: ");
private Choice input_number4 = new Choice();
private JLabel Publish_unit = new JLabel(" 新出版单位: ");
private TextField input_number5 = new TextField(10);
private JLabel Publish_time = new JLabel(" 新出版时间: ");
private TextField input_number6 = new TextField(10);
private JLabel Price = new JLabel(" 新价格: ");
private TextField input_number = new TextField(10);
private Button confirm = new Button("确认");
private Button reset = new Button("重置");
private JLabel backnapse = new JLabel(" ");
Box box1 = Box.createHorizontalBox();
Box box2 = Box.createHorizontalBox();
Box box3 = Box.createHorizontalBox();
Box box4 = Box.createHorizontalBox();
Box box5 = Box.createHorizontalBox();
Box box6 = Box.createHorizontalBox();
Box box7 = Box.createHorizontalBox();
Box box8 = Box.createHorizontalBox();
Box box9 = Box.createHorizontalBox();
Box boxV = Box.createVerticalBox();
Modify() {
String [] a = {"A(马克思主义等)","B(哲学,宗教)","C(社会科学总论)","D(政治)","E(军事)","F(经济)"
,"G(文化,科学,教育)","H(语言)","I(文学)","J(艺术)","K(历史)","Z(综合性问题)"};
for(int i=0;i<a.length;i++)
{
input_number4.add(a[i]);
}
box9.add(label);
box9.add(Box.createHorizontalStrut(30));
box9.add(modify);
box9.add(Box.createHorizontalStrut(100));
box1.add(login_number);
box1.add(Box.createHorizontalStrut(47));
box1.add(input_number1);
box1.add(Box.createHorizontalStrut(100));
box2.add(book_name);
box2.add(Box.createHorizontalStrut(60));
box2.add(input_number2);
box2.add(Box.createHorizontalStrut(100));
box3.add(Author_name);
box3.add(Box.createHorizontalStrut(47));
box3.add(input_number3);
box3.add(Box.createHorizontalStrut(100));
box4.add(Classification_name);
box4.add(Box.createHorizontalStrut(47));
box4.add(input_number4);
box4.add(Box.createHorizontalStrut(100));
box5.add(Publish_unit);
box5.add(Box.createHorizontalStrut(34));
box5.add(input_number5);
box5.add(Box.createHorizontalStrut(100));
box6.add(Publish_time);
box6.add(Box.createHorizontalStrut(34));
box6.add(input_number6);
box6.add(Box.createHorizontalStrut(100));
box7.add(Price);
box7.add(Box.createHorizontalStrut(60));
box7.add(input_number);
box7.add(Box.createHorizontalStrut(100));
confirm.addActionListener(new Clickcomfirm());
box8.add(backnapse);
box8.add(Box.createHorizontalStrut(60));
box8.add(confirm);
box8.add(Box.createHorizontalStrut(100));
reset.addActionListener(new Clickreset());
box8.add(reset);
box8.add(Box.createHorizontalStrut(100));
boxV.add(box9);
boxV.add(box1);
boxV.add(box2);
boxV.add(box3);
boxV.add(box4);
boxV.add(box5);
boxV.add(box6);
boxV.add(box7);
boxV.add(box8);
frame.add(boxV);
frame.setBounds(120, 100, 400, 340);
//frame.pack();
frame.setVisible(true);
}
class Clickcomfirm implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==confirm)
{
try {
int row = Read.read().length;
String [][]S = new String[row][7];
S = Read.read();
for(int i=0;i<row;i++)
{
if(S[i][0].equals(modify.getText()))
{
S[i][0] = input_number1.getText();
S[i][1] = input_number2.getText();
S[i][2] = input_number3.getText();
S[i][3] = input_number4.getSelectedItem();
S[i][4] = input_number5.getText();
S[i][5] = input_number6.getText();
S[i][6] = input_number.getText();
}
}
File file = new File("Library.txt");
try {
FileWriter out = new FileWriter(file);
for(int i=0;i<row;i++)
{
for(int j=0;j<7;j++)
{
out.write(S[i][j]+" ");
}
out.write("\r\n");
}
out.flush();
out.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
input_number1.setText(" ");
input_number2.setText(" ");
input_number3.setText(" ");
input_number5.setText(" ");
input_number6.setText(" ");
input_number.setText(" ");
}
}
}
class Clickreset implements ActionListener
{
public void actionPerformed(ActionEvent e) {
if(e.getSource()==reset)
{
input_number1.setText(" ");
input_number2.setText(" ");
input_number3.setText(" ");
input_number5.setText(" ");
input_number6.setText(" ");
input_number.setText(" ");
}
}
}
}
LibrianInforManager.java
import java.io.FileNotFoundException;
public class LibrianInforManager {
public static void main(String[] args) throws FileNotFoundException {
LibraryMenu menu = new LibraryMenu();
menu.setTitle("图书管理系统");
menu.setBounds(200, 150, 800, 400);
menu.setDefaultCloseOperation(1);
menu.setVisible(true);
}
}
效果截图: