图书管理系统代码  8AddBookFrame …

简介: 图书管理系统代码  8AddBookFrame …


import java.awt.BorderLayout;


import java.awt.Dimension;


import java.awt.FlowLayout;


import java.awt.GridBagLayout;


import java.awt.Image;


import java.awt.Toolkit;


import java.awt.event.ActionEvent;


import java.awt.event.ActionListener;


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.InvalidClassException;


import java.io.NotSerializableException;


import java.io.ObjectInputStream;


import java.io.ObjectOutputStream;




import javax.swing.ImageIcon;


import javax.swing.JButton;


import javax.swing.JComboBox;


import javax.swing.JFrame;


import javax.swing.JLabel;


import javax.swing.JOptionPane;


import javax.swing.JPanel;


import javax.swing.JTextField;


import javax.swing.SwingUtilities;


import javax.swing.UIManager;


import javax.swing.UnsupportedLookAndFeelException;






public class AddBookFrame extends InitFrame


{

public AddBookFrame(){

super("图书管理系统—添加书目","Library.png",460,340);


//设置布局


this.setLayout(new BorderLayout());


this.setResizable(false);


panel_north = new JPanel();


       panel_north.setLayout(new GridBagLayout());


this.add(panel_north,BorderLayout.CENTER);


panel_south = new JPanel();


panel_south.setLayout(new FlowLayout());


this.add(panel_south,BorderLayout.SOUTH);


this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);


//设置标签


label_book_class = new JLabel("分类:");


label_number = new JLabel("编号:");


label_name = new JLabel("书名:");


label_author = new JLabel("作者:");


label_press = new JLabel("出版社:");


label_count = new JLabel("数量:");


//设置 下拉列表框 (书籍分类)


File file_Library= new File("E:\\图书管理系统\\分类");


file_class = file_Library.listFiles();


comBoBox= new JComboBox(file_class);


// 设置接受输入的文本域


field_number = new JTextField(WIDTH );


field_name  = new JTextField(WIDTH );


field_author = new JTextField(WIDTH );


field_author = new JTextField(WIDTH );


field_press = new JTextField(WIDTH );


field_count = new JTextField(WIDTH );


button_ok = new JButton("确定",new ImageIcon("ok.png"));


button_ok.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e)


{

//f1表示的是分类文件夹下的各个分类文件夹("文学","计算机"等等)


File f1 =AddBookFrame.this.getClassName();


File file_write = new File(f1.getPath()+"\"+"bookinfo.dat");//获取选中的分类的文件夹下  存放该类下书籍的文件


//将屏幕的输入转换成Book 类型的对象并写入对应分类下的文件


Book book_add = new Book(AddBookFrame.this.getNumber(),AddBookFrame.this.getName(),AddBookFrame.this.getAuthor(),AddBookFrame.this.getPress(),AddBookFrame.this.getCount());


try {

//建立对该文件的文件流


FileOutputStream fr = new FileOutputStream(file_write,true);


//用对象输出流包装该文件输出流


ObjectOutputStream obo = new ObjectOutputStream(fr);


// 将该输入的对象写入 对应分类的文本文件中


obo.writeObject(book_add);


// 关闭流


fr.close();


obo.close();


}catch(NotSerializableException e3)


{

e3.printStackTrace();


}catch(InvalidClassException e2)


{

e2.printStackTrace();


}


catch (IOException e1) {

System.out.println("写入异常");


e1.printStackTrace();


}




// 将该类下的书籍对象个数写入文件


File f3 = new File(f1.getPath()+"\"+"booknum.dat");


try {

FileInputStream fis = new FileInputStream(f3);


ObjectInputStream oji = new ObjectInputStream(fis);


int temp_int =oji.readInt();//该类下读出存放书籍对象个数的整数


fis.close();


oji.close();


temp_int++;//对其进行加加操作


System.out.println(temp_int);




// 将变化后的添加书籍对象个数,重新写入文件中


FileOutputStream fos = new FileOutputStream(f3,false);


ObjectOutputStream oos = new ObjectOutputStream(fos);


oos.writeInt(temp_int);


// 在这里需要特别特别注意!!


// oos必须先flush()才能关闭 否则老师报错!!


oos.flush();


fos.close();


oos.close();



} catch (FileNotFoundException e1) {

e1.printStackTrace();


}catch (IOException e1) {

e1.printStackTrace();


}


JLabel label_result = new JLabel("图书添加成功!!");


JOptionPane.showConfirmDialog(AddBookFrame.this, label_result,"图书管理系统-图书添加", JOptionPane.INFORMATION_MESSAGE,JOptionPane.OK_OPTION, new ImageIcon("succes.png"));


}


});


//取消键


button_cancel = new JButton("取消",new ImageIcon("cancel.png"));


button_cancel.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e)


{

AddBookFrame.this.setVisible(false);//隐藏窗体


AddBookFrame.this.dispose();//释放窗体资源


}


});


panel_north.add(label_book_class,new GBC(0,0).setInsets(2));


panel_north.add(comBoBox,new GBC(1,0).setInsets(2));


panel_north.add(label_number,new GBC(0,1).setInsets(2));


panel_north.add(field_number,new GBC(1,1).setInsets(2));


panel_north.add(label_name,new GBC(0,2).setInsets(2));


panel_north.add(field_name,new GBC(1,2).setInsets(2));


panel_north.add(label_author,new GBC(0,3).setInsets(2));


panel_north.add(field_author,new GBC(1,3).setInsets(2));


panel_north.add(label_press,new GBC(0,4).setInsets(2));


panel_north.add(field_press,new GBC(1,4).setInsets(2));


panel_north.add(label_count,new GBC(0,5).setInsets(2));


panel_north.add(field_count,new GBC(1,5).setInsets(2));


panel_south.add(button_ok);


panel_south.add(button_cancel);


}


public File getClassName()


{

return (File)comBoBox.getSelectedItem();


}


public int getNumber()


{

String num =field_number.getText();


int number = Integer.parseInt(num);


return number;


}


public String getName()


{

return field_name.getText();


}


public String getAuthor()


{

return field_author.getText();


}


public String getPress()


{

return field_press.getText();


}


  public int getCount()


  {

 String cou = field_count.getText();


 int count = Integer.parseInt(cou);


 return count;


  }


 






private static final int WIDTH = 20;//文本域的宽度


private JPanel panel_north;


private JPanel panel_south;


private JLabel label_number;


private JLabel label_book_class;


private JLabel label_name;


private JLabel label_author;


private JLabel label_press;


private JLabel label_count;


private JTextField field_number;


private JComboBox combo_class;


private JTextField field_name;


private JTextField field_author;


private JTextField field_press;


private JTextField field_count;


private File[] file_class;


private JComboBox comBoBox;


private JButton button_ok;


private JButton button_cancel;


}

————————————————

版权声明:本文为CSDN博主「明明如月学长」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/w605283073/article/details/46572409

相关文章
|
2月前
|
人工智能 机器人 芯片
人工智能|YOLOv8实战
本内容为安全帽检测实战项目,基于YOLOv8模型,涵盖Kaggle数据获取、自定义yaml配置、模型训练(yolo_train.py)与测试(yolo_test.py),并提供服务器(FastAPI+Docker)、边缘(Jetson+TensorRT)及国产嵌入式(RK3588+RKNN)三类部署方案,支持工业场景实时智能识别。(239字)
449 1
|
8月前
|
弹性计算 人工智能 搜索推荐
阿里云服务器租用费用:最新价格整理,38元一年起
阿里云服务器优惠汇总:轻量应用服务器200M带宽38元/年起,ECS云服务器2核2G 99元/年,2核4G 199元/年,4核16G 89元/月,8核32G 160元/月,香港轻量服务器25元/月起。支持按小时计费,爆款低至1折,新老用户同享,续费同价,配置丰富,适合建站、游戏、AI等多种场景。
|
存储 供应链 监控
如何开发一套采购供应链管理系统?(附架构图+流程图+代码参考)
采购供应链管理系统通过整合采购、供应商、库存及物流管理,助力企业提升效率、降低成本。系统涵盖采购订单、库存监控、供应商评估及物流追踪等核心模块,支持全流程自动化与数据驱动决策。本文详解系统开发要点,提供代码示例,帮助企业快速构建高效供应链管理体系,增强市场竞争力。
|
8月前
|
人工智能 自然语言处理
构建AI智能体:四十一、大模型思维链提示工程:技术原理与行业应用案例分析
本文介绍了思维链提示技术及其应用。思维链提示是一种引导大模型进行逐步推理的提示工程技术,通过结构化提示模拟人类解决问题的逻辑分析路径,使模型能够显式化中间推理步骤,从而提升推理准确性与可解释性。文章详细阐述了思维链提示的关键特征(步骤可解释性、逻辑链条完整性、问题分解能力)和工作原理,并通过数学推理、逻辑分析和多轮复杂问题三个案例展示了其具体应用流程。该技术在教育辅导、商业决策和科研分析等领域具有重要价值,能够突破传统大模型的黑箱推理瓶颈,提高AI系统的决策透明度和可靠性。
1024 13
|
Java Android开发
Android系统 修改无源码普通应用为默认Launcher和隐藏Settings中应用信息图标
Android系统 修改无源码普通应用为默认Launcher和隐藏Settings中应用信息图标
3093 0
|
人工智能 自然语言处理 Java
快速带你上手通义灵码 2.0,体验飞一般的感觉
通义灵码个人版为开发者免费提供智能编码能力,专业版限免期内开放更多功能。使用需先注册阿里云账号,支持JetBrains IDEs、Visual Studio Code等开发工具。以Visual Studio Code为例,安装插件并登录后即可体验其强大功能。通义灵码2.0在代码生成、需求理解及单元测试自动化等方面有显著提升,支持多语言和复杂场景,大幅提高开发效率。
236437 39
快速带你上手通义灵码 2.0,体验飞一般的感觉
|
机器学习/深度学习 人工智能 自然语言处理
一文彻底讲透GPT架构及推理原理
本篇是作者从开发人员的视角,围绕着大模型正向推理过程,对大模型的原理的系统性总结,希望对初学者有所帮助。
|
传感器 机器学习/深度学习 自动驾驶
未来出行的智能革命:自动驾驶技术的进展与挑战
自动驾驶技术正逐步改变我们的交通方式,从辅助驾驶到完全自动化,每一次技术跃迁都带来了新的可能。本文将探讨自动驾驶的发展历程、关键技术里程碑及其面临的主要挑战和未来趋势。
1012 4
qiankun框架中基于actions机制实现主应用与子应用间的双向通信
qiankun框架中基于actions机制实现主应用与子应用间的双向通信
1603 0