JAVA图书查询系统.docx

上传人:b****2 文档编号:20125893 上传时间:2023-04-25 格式:DOCX 页数:18 大小:69.32KB
下载 相关 举报
JAVA图书查询系统.docx_第1页
第1页 / 共18页
JAVA图书查询系统.docx_第2页
第2页 / 共18页
JAVA图书查询系统.docx_第3页
第3页 / 共18页
JAVA图书查询系统.docx_第4页
第4页 / 共18页
JAVA图书查询系统.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

JAVA图书查询系统.docx

《JAVA图书查询系统.docx》由会员分享,可在线阅读,更多相关《JAVA图书查询系统.docx(18页珍藏版)》请在冰豆网上搜索。

JAVA图书查询系统.docx

JAVA图书查询系统

一、设计目的

《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。

实践教学环节是必不可少的一个重要环节。

本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

二、设计问题

图书查询系统

要求完成:

a)图书信息的添加、删除、查询、修改功能

b)使用界面操作

c)使用文件完成

设计思路:

首先设计布局管理器,完成图形用户界面,再通过事件监听器,完成各个事件的操作。

整个框架就是一个布局管理器,设置监听器,设置按钮接口,通过主函数调用主方法,完成最终的设计功能。

三、概要设计

3.1界面设计

publicLibMan()中,Containercontent=getContentPane()定义容器类对象,content.setLayout(newBorderLayout())设置布局管理器为BorderLayout,BorderLayout是一个布置容器的边界布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:

南、北、东、西和中间区域。

每个区域最多只能包含一个组件,并通过相应的常量进行标识:

NORTH、SOUTH、EAST、WEST和CENTER。

当使用边界布局将一个组件添加到容器中时,要使用这五个常量之一。

content.add(biaoti,BorderLayout.NORTH)添加“biaoti”组件,content.add(apanel,BorderLayout.CENTER)添加“apanel”组件,其中包含有标签和文本框。

content.add(bpanel,BorderLayout.SOUTH)添加“bpanel”组件,也就是按钮。

setLocation(300,200)确定界面在屏幕上的显示坐标,setResizable(false)固定窗口大小。

主函数调用publicLibMan()。

3.2事件监听及处理

LibMan类继承Jframe类,首先定义用到的文本输入框和按钮,接下来就是各个按钮事件监听器接口的设计。

PrintWritert=null创建新的PrintWriter,t=newPrintWriter(newFileWriter("Library.txt",true))把library用作此writer目标的文件名称,文件格式为txt。

如果存在该文件,则将其大小截取为零;否则,创建一个新文件。

将输出写入文件中,并对其进行缓冲处理。

t.prin

tln(shuming+";"+zuozhe+";"+chubanshe)把在文本框中输入的信息写入文件中。

这样就完成了添加功能。

BufferedReader从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。

BufferedReaderbf=null定义新的BufferedReader,bf=newBufferedReader(newFileReader("Library.

txt")),将缓冲指定文件”Library.txt”的输入,read=bf.readLine()每次从Library.txt中读取一个文本行,StringTokenizerst=newStringTokenizer

(read,";")为从文件中读取的字符串(文本行)构造一个stringtokenizer,“;”为分隔符,st.nextToken()返回所构造的stringtokenizer的下一个标记,例如:

Stringshumi=st.nextToken()执行完毕后,shumi就等于所读取文本行的书名,这样就很好的对应了起来,当shumi.equals(shuming)||zuo.equals(zuo

zhe)||chuban.equals(chubanshe),JOptionPane.showMessageDialog()告知用户某事已经发生,显示你所查找的信息,最终完成查找功能。

delete和modify按钮接口也基本上用了同样的方法,最终都是实现对文件的操作。

texts

huming.setText(null)就是把界面上的文本输入框重新置空,这样就完成了重置的功能。

publicLibMan()程序段实现了用户界面的设计和窗口的关闭,通过事件监听器完成add、delete、modify、reset以及research的功能。

四、详细设计

4.1所用到的类或接口

importjava.awt.BorderLayout;

importjava.awt.Container;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.WindowAdapter;

importjava.awt.event.WindowEvent;

importjava.io.File;

importjava.io.FileOutputStream;

importjava.io.OutputStreamWriter;

importjava.io.PrintWriter;

importjava.io.IOException;

importjava.io.FileNotFoundException;

importjava.io.BufferedReader;

importjava.io.BufferedWriter;

importjava.io.FileReader;

importjava.io.FileWriter;

importjava.io.Writer;

importjava.util.StringTokenizer;

importjavax.swing.JButton;

importjavax.swing.JFrame;

importjavax.swing.Jlabel;

importjavax.swing.JList;

importjavax.swing.JOptionPane;

importjavax.swing.JPanel;

importjavax.swing.JTextField;

父类:

Jframe

主类:

LibMan

监听器接口:

classaddimplementsActionListener;//add事件接口

classdeleteimplementsActionListener;//delete事件接口

classmodifyimplementsActionListener;//modify事件接口

classsearchimplementsActionListener;//search事件接口

classresetimplementsActionListener;//reset事件接口

4.2界面设计

JLabelbiaoti,shuming,zuozhe,chubanshe;//定义标签

Containercontent=getContentPane();//定义容器类对象

content.setLayout(newBorderLayout());//设置布局管理为BorderLayout

biaoti=newJLabel("图书信息管理系统");

shuming=newJLabel("书名:

");

zuozhe=newJLabel("作者:

");

chubanshe=newJLabel("出版社:

");

content.add(biaoti,BorderLayout.NORTH);//放置容器,位置为NORTH

JPanelapanel=newJPanel();//定义容器

textshuming=newJTextField("",25);//定义文本框

textzuozhe=newJTextField("",25);

textchubanshe=newJTextField("",25);

apanel.add(shuming);//将组件添加到容器apanel中

apanel.add(textshuming);

apanel.add(zuozhe);

apanel.add(textzuozhe);

apanel.add(chubanshe);

apanel.add(textchubanshe);

content.add(apanel,BorderLayout.CENTER);//放置容器,位置为CENTER

add=newJButton("添加");//定义、设计按钮

delete=newJButton("删除");

modify=newJButton("修改");

search=newJButton("查询");

reset=newJButton("重置");

JPanelbpanel=newJPanel();//定义容器

bpanel.add(add);//将组件添加到容器bpanel中

bpanel.add(delete);

bpanel.add(modify);

bpanel.add(search);

bpanel.add(reset);

content.add(bpanel,BorderLayout.SOUTH);//放置容器,位置为CENTERsetSize(350,400);//设置窗体大小

setTitle("图书信息管理系统");//设置窗口标题

setLocation(300,200);//设置窗口显示坐标

setResizable(false);//固定窗体大小

setVisible(true);//设置窗口可见

//关闭窗口

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

System.exit(0);

}

});

4.3按钮“添加“的监听及处理

监听:

add.addActionListener(newadd());

处理:

【该段实现图书信息的添加功能】

classaddimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

PrintWritert=null;

try{

Stringshuming=textshuming.getText();

Stringzuozhe=textzuozhe.getText();

Stringchubanshe=textchubanshe.getText();

t=newPrintWriter(newFileWriter("library.txt",true));

t.println(shuming+";"+zuozhe+";"+chubanshe);

}catch(FileNotFoundExceptione1){

}catch(IOExceptione1){

}t.close();

}

}

4.4按钮“删除”的监听及处理

监听:

delete.addActionListener(newdelete());

处理:

【该段实现图书信息的删除功能】

classdeleteimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

BufferedReaderbf;

@SuppressWarnings("unused")

BufferedWriterra;

try{

ra=newBufferedWriter(newFileWriter("library.txt"));

bf=newBufferedReader(newFileReader("library.txt"));

Stringread,rea;

Stringshuming=textshuming.getText();

Stringchubanshe=textchubanshe.getText();

Stringzuozhe=textzuozhe.getText();

intbl=0;

StringBufferre=newStringBuffer();

//线程安全的可变字符序列。

while((read=bf.readLine())!

=null){

StringTokenizerst=newStringTokenizer(read,";");

Stringshumi=st.nextToken();

Stringzuo=st.nextToken();

Stringchuban=st.nextToken();

if(shumi.equals(shuming)&&chuban.equals(chubanshe)&&zuo.equals(zuozhe)){

re.append(read+"\n");

rea=re.toString();

bf.close();

rea=rea.replaceAll(read,";");

}

else{

bl=1;

}

}

if(bl==1){

JOptionPane.showMessageDialog(null,"找不到信息");

}

bf.close();

}catch(FileNotFoundExceptione1){

}catch(IOExceptione1){

}

}

}

4.5按钮“修改”的监听及处理

监听:

modify.addActionListener(newmodify());

处理:

【该段实现图书信息的修改功能】

classmodifyimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

finalJFramejf2=newJFrame("修改页面");

jf2.setBounds(150,150,400,400);

jf2.getContentPane().setLayout(newGridLayout(4,1));

JPaneljp1=newJPanel();

jp1.setLayout(newGridLayout(1,2));

JPaneljp2=newJPanel();

jp2.setLayout(newGridLayout(1,2));

JPaneljp3=newJPanel();

jp3.setLayout(newGridLayout(1,2));

JLabeljlb1=newJLabel("请输入你的书名");

finalJTextFieldjtf11=newJTextField(20);

jtf11.getDocument().addDocumentListener(newDocumentListener(){

publicvoidchangedUpdate1(DocumentEvente){

//TODOAuto-generatedmethodstub

Stringstr4=jtf11.getText().trim();

}

publicvoidinsertUpdate1(DocumentEvente){

//TODOAuto-generatedmethodstub

Stringstr4=jtf11.getText().trim();

}

publicvoidremoveUpdate1(DocumentEvente){

//TODOAuto-generatedmethodstub

Stringstr4=jtf11.getText().trim();

}

@Override

publicvoidchangedUpdate(DocumentEventarg0){

//TODOAuto-generatedmethodstub

}

@Override

publicvoidinsertUpdate(DocumentEventarg0){

//TODOAuto-generatedmethodstub

}

@Override

publicvoidremoveUpdate(DocumentEventarg0){

//TODOAuto-generatedmethodstub

}

});

jp1.add(jlb1);

jp1.add(jtf11);

JLabeljlb2=newJLabel("请输入修改的作者");

finalJTextFieldjtf12=newJTextField(20);

jtf12.getDocument().addDocumentListener(newDocumentListener(){

publicvoidchangedUpdate(DocumentEvente){

//TODOAuto-generatedmethodstub

Stringstr5=jtf12.getText().trim();

}

publicvoidinsertUpdate(DocumentEvente){

//TODOAuto-generatedmethodstub

Stringstr5=jtf12.getText().trim();

}

publicvoidremoveUpdate(DocumentEvente){

//TODOAuto-generatedmethodstub

Stringstr5=jtf12.getText().trim();

}

});

jp2.add(jlb2);

jp2.add(jtf12);

JLabeljlb3=newJLabel("出版社");

finalJTextFieldjtf13=newJTextField(20);

jtf13.getDocument().addDocumentListener(newDocumentListener(){

publicvoidchangedUpdate(DocumentEvente){

//TODOAuto-generatedmethodstub

Stringstr6=jtf13.getText().trim();

}

publicvoidinsertUpdate(DocumentEvente){

//TODOAuto-generatedmethodstub

Stringstr6=jtf13.getText().trim();

}

publicvoidremoveUpdate(DocumentEvente){

//TODOAuto-generatedmethodstub

Stringstr6=jtf13.getText().trim();

}

});

jp3.add(jlb3);

jp3.add(jtf13);

JButtonjb=newJButton("确定");

//只允许用户修改书名,不能修改出版社和作者

jb.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

jf2.dispose();

Filef=newFile("Library.txt");

if(!

f.exists()){

System.exit(0);

}

try{

Stringstr4=null;

Filef0=newFile(f,str4);

if(!

f0.exists()){

JFramejf001=newJFrame("书名不存在");

JPaneljp001=newJPanel();

JButtonjb001=newJButton("确定");

jp001.add(jb001);

jb001.setSize(100,100);

jf001.setSize(250,120);

jf001.setLocation(240,200);

jf001.add(jp001);

jf001.setVisible(true);

jb001.addActionListener(new

ActionListener(){

publicvoidactionPerformed(ActionEvente){

}

});

}

Filef2=newFile(f0.getAbsolutePath(),"作者名"+".txt");

FileWriterfw11=newFileWriter(f2);

Filef1=newFile(f0.getAbsolutePath(),"书名"+".txt");

if(!

f1.exists()){

System.exit(0);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1