




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JAVA 2课程设计报告图书信息管理系统指导教师:谢小林姓名:罗轩学号:201140130232班级:1141302日期:2012.01.09目录一、需求分析2二、程序的主要功能及程序运行平台2三、程序总框架图3四、系统模块分析3五、较具特色的函数4六、存在的不足与对策5七、参考文献5八、附录(主要源代码及程序类的说明)5一、需求分析当今时代是飞速发展的信息时代,而图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对
2、于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的
3、工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。基于这些问题,有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。二、程序的主要功能及程序运行平台本次课程设计的要求使用图形界面,用数据库建立图书信息表。(1)针对学生:1. 能按各种方式(比如书名、编号、作者)查询图书馆的藏书情况。2. 能够方便地借阅图书、续借图书、归还图书。3
4、. 能够查询自己的基本资料、借阅图书情况。4. 能够熟悉图书管理系统的使用。(2)针对图书管理员:1. 能方便的对图书进行录入登记,注销陈旧的书籍。2. 能够方便地对新生进行登记,或注销已经毕业的学生信息(基本信息,借阅信息)。3. 能够随时发布一些诸如各学院学生借阅图书超期情况、馆内藏书情况、借情况息,以便各学院能够随时获知本院学生的一些借书信息。(3)程序运行平台:在java虚拟机上,使用软件eclipse编程三、程序总框架图图书信息管理系统图书管理员学生查询书籍系统说明查询资料借阅归还录入登记发布公告图书管理系统中包
5、含书籍的采购、入库、编目、出借、归还、淘汰等功能,以及读者信息的管理。本系统对前期的工作进行了简化,删掉了书籍的采购、入库、编目等繁琐的工作,仅对系统主要部分进行分析。为了提高服务效果,图书馆系统实行开架阅览,并为读者提供客户端,读者可以查询到馆藏书目和个人在借图书的信息。这项功能也可以通过互联网实现。图书管理员通过系统记录图书的出借和归还,以及书目的维护和读者信息的维护。四、系统模块分析1.新书入库模块:新书入库界面包括图书相关的属性:编号、书名、作者、类别、出版日期、出版社、定价、数量、备注等。2.图书整理模块:(1)图书整理界面包括:图书修改删除、图书类别编辑 图书修改删除界面除了包括图
6、书的相关属性还包括图书修改功能。 图书类别编辑界面包括对类别编号、类别名称进行添加、删除、修改的功模块。3.办借书卡模块:办借书卡界面包括借书卡编号、持借书卡人的姓名、性别、组名、证件号。4.查询模块:(1)借阅信息查询:根据查询方式如按借书证号、按姓名等在文本框中输入相关内容即可查询还可查询到期图书(2)图书信息查询:查询方式有:按书号、按书名、按作者、按类别、按出版社。在关键字中输入相关内容,点击“开始查询”按钮,在DataList中列出查询结果。如果选中“模糊查询”可查询更多的相关信息。(3)用户信息查询: 查询方式有:按借书证号、按姓名。在关键字框中输入借书证号或者读者姓名。 组用户管
7、理模块:(4)组用户管理界面: 操作方式包括:修改、删除、添加。 组用户信息包括:组编号、组名称、最长天数、最多本数。5.图书借还模块:图书借阅界面包括图书编号、书名、类别、出版社、出版日期、借书证号等归还图书界面包括图书的属性、归还者的信息。五、较具特色的函数/图书管理员public class SimpleBookManagerpublic static void main(String args)SetFont.setFont(new Font("楷体", 0, 12);Connection con=null;trycon=SqlUtil.acquireConnect
8、ion("","1433","bookTest","admin","xyz");catch(Exception e)System.out.println(e);System.exit(-1);if(con!=null)JFrame f=new JFrame();f.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););f.getContentPa
9、ne().add(new BookManager(f,con);f.setSize(600,400);f.show();通过图书管理员来区别与学生功能的区别,增添的功能更具有针对性。使用管理员来进行对学生的管理。六、存在的不足与对策在开发图书管理系统的过程当中,也遇到了许多技术上或者其他方面的困难。如:开始编程的无从下手,编程时遇到的语法问题等,但是也算经过自己的努力,加上eclipse软件上的提示与指导老师指导,使之基本上克服了这些困难。在这次设计过程中,培养了我的自学能力,在遇到困难的时候,能够认真的对待,不放弃,无论是查看各种书籍还是到图书馆中查找各种资料,想尽一切办法将这个问题解决。我
10、总结了许多编程经验,这将在以后的学习生活中有很大的帮助。这次课程设计还让我学会了eclipse软件的运行方法,使得我的编程能力又有了一个显著地提高。七、参考文献1 耿祥义、张跃平Java 2实用教程(第三版)北京:清华大学出版社,2006年8月 八、附录(主要源代码及程序类的说明)import javax.swing.*; import java.awt.*;import java.awt.event.*; import javax.swing.table.*;import java.sql.*;import edu.njust.cs.*;/图书管理员public class SimpleBo
11、okManagerpublic static void main(String args)SetFont.setFont(new Font("楷体", 0, 12);Connection con=null;trycon=SqlUtil.acquireConnection("","1433","bookTest","admin","xyz");catch(Exception e)System.out.println(e);System.exit(-1);if(
12、con!=null)JFrame f=new JFrame();f.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););f.getContentPane().add(new BookManager(f,con);f.setSize(600,400);f.show();class BookManager extends JPanel implements ActionListenerprivate String columnNames="图书编号&qu
13、ot;,"书名","定价","出版社"private Class dataType=String.class,String.class,Double.class,String.class;private CustomTableModel model=null;private JTable table=null;private Connection con=null;private JButton btnAdd=new TextAndPicButton("image/addrow20.gif"," 增 加
14、");private JButton btnSearch=new TextAndPicButton("image/search20.gif"," 查 询 ");private JButton btnDelete=new TextAndPicButton("image/deleterow20.gif"," 删 除 ");private JButton btnExit=new TextAndPicButton("image/exit20.gif"," 退 出 ");pr
15、ivate JFrame f=null;public BookManager(JFrame f,Connection con)this.f=f;this.con=con;/构建工具条JToolBar toolBar=new JToolBar();toolBar.add(btnAdd);toolBar.add(btnSearch);toolBar.add(btnDelete);toolBar.add(btnExit);/注册事件侦听器btnAdd.addActionListener(this);btnSearch.addActionListener(this);btnDelete.addActi
16、onListener(this);btnExit.addActionListener(this);/构建表格model=new CustomTableModel(0,columnNames.length,columnNames,dataType); table = new JTable(model); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION );/设定表格每列的宽度setTableColumnWidth(0,100);se
17、tTableColumnWidth(1,200);setTableColumnWidth(2,100);setTableColumnWidth(3,250);/布局工具条及表格this.setLayout(new BorderLayout();this.add(toolBar,BorderLayout.NORTH);this.add(new JScrollPane(table),BorderLayout.CENTER);/设置表格指定列的宽度public void setTableColumnWidth(int column,int width)if(column<columnNames
18、.length&&column>=0)TableColumn col=table.getColumn(columnNamescolumn);col.setPreferredWidth(width);public void actionPerformed(ActionEvent e)Object s=e.getSource();if(s=this.btnAdd) add();else if(s=this.btnSearch)search();else if(s=this.btnDelete) delete();else if(s=this.btnExit) System.e
19、xit(0);/增加一条记录到数据库public void add()BookEditor be=new BookEditor(f,"增加",true);be.show(); /只有点击了信息对话框中的确定按钮,才增加记录if(be.getActionCode()=be.OK)String insertSql="insert into bookInfo VALUES (?,?,?,?)"Object lineForDBAdd=be.getID(),be.getBookName(), be.getBookPrice(),be.getBookPress();
20、if(SqlUtil.addRowToDB(con,insertSql,lineForDBAdd) /成功写入数据库的记录,追加到表格的末行显示Object lineForTable= SqlUtil.getLineForTableFromLineForDB(lineForDBAdd,dataType);model.insertRow(model.getRowCount(),lineForTable);/将表格的最后一行选中table.changeSelection(model.getRowCount()-1,0,false,false);elseJOptionPane.showMessage
21、Dialog(this,"新增时出错!","提示",JOptionPane.INFORMATION_MESSAGE);/查询数据库public void search()SearchDialog sd=new SearchDialog(f,"查询",true);sd.show();if(sd.getActionCode()=sd.OK)String readSql=sd.getSQL();SqlUtil.readDBToTable(con,readSql,model,dataType);/删除选定的记录public void dele
22、te()int selected=table.getSelectedRow();if(selected>=0&&selected<model.getRowCount()int result=JOptionPane.showConfirmDialog (f,"您确定要删除该条图书信息吗?" ,"确认",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if (result!=JOptionPane.YES_OPTION)return ;String deleteSql
23、="delete from bookInfo where bookID=?"Object keys=model.getValueAt(selected,0).toString();if(SqlUtil.deleteFromDB(con,deleteSql,keys)model.removeRow(selected);elseJOptionPane.showMessageDialog(f,"请选定要删除的一行!","提示",JOptionPane.INFORMATION_MESSAGE);/内部类,用于显示/编辑图书信息的一个模式对话框
24、class BookEditor extends JDialog implements ActionListenerfinal int OK=1; final int CANCEL=-1; final int CLOSE=0;private int actionCode=CANCEL;private JLabel labID=new JLabel(" 图书编号 ");private JTextField txtID=new JTextField();private JLabel labBookName=new JLabel(" 图书名称 ");priva
25、te JTextField txtBookName=new JTextField();private JLabel labBookPrice=new JLabel(" 单 价 ");private JTextField txtBookPrice=new JTextField();private JLabel labBookPress=new JLabel(" 出 版 社 ");private JTextField txtBookPress=new JTextField();private JButton btnPre=new JButton("
26、上一个");private JButton btnNext=new JButton("下一个"); private JButton btnOk=new JButton("确定");private JButton btnCancel=new JButton("取消");private JFrame f=null;public BookEditor(JFrame f,String s,boolean b)super(f,s,b);this.f=f;/面板p中显示图书信息JPanel p=new JPanel();p.setLay
27、out(new GridBagLayout();LayoutUtil.add(p,GridBagConstraints.NONE, GridBagConstraints.CENTER,0,0,0,0,1,1,labID);LayoutUtil.add(p,GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER,100,0,1,0,1,1,txtID);LayoutUtil.add(p,GridBagConstraints.NONE, GridBagConstraints.CENTER,0,0,2,0,1,1,labBookName);L
28、ayoutUtil.add(p,GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER,100,0,3,0,1,1,txtBookName);LayoutUtil.add(p,GridBagConstraints.NONE, GridBagConstraints.CENTER,0,0,0,1,1,1,labBookPrice);LayoutUtil.add(p,GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER,100,0,1,1,1,1,txtBookPrice);Layo
29、utUtil.add(p,GridBagConstraints.NONE, GridBagConstraints.CENTER,0,0,2,1,1,1,labBookPress);LayoutUtil.add(p,GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER,100,0,3,1,1,1,txtBookPress);/注册事件侦听器btnOk.addActionListener(this);btnCancel.addActionListener(this);btnPre.addActionListener(this);btnNe
30、xt.addActionListener(this);btnOk.setIcon(new ImageIcon("image/ok20.gif");btnCancel.setIcon(new ImageIcon("image/cancel20.gif");btnPre.setIcon(new ImageIcon("image/pre20.gif");btnNext.setIcon(new ImageIcon("image/next20.gif");btnNext.setHorizontalTextPosition(S
31、wingConstants.LEFT);/在增加模式下前后移动按钮置为不可用/读者扩展该程序具有编辑功能时,可以将前后移动按钮置为可用if(s.equals("增加")btnPre.setEnabled(false);btnNext.setEnabled(false);/面板ap中显示4个按钮JPanel ap=new JPanel();ap.setLayout(new GridBagLayout();LayoutUtil.add(ap,GridBagConstraints.NONE, GridBagConstraints.CENTER,0,0,0,0,1,1,this.b
32、tnPre);LayoutUtil.add(ap,GridBagConstraints.NONE, GridBagConstraints.CENTER,0,0,1,0,1,1,this.btnNext);LayoutUtil.add(ap,GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER,100,0,2,0,1,1,new JLabel();LayoutUtil.add(ap,GridBagConstraints.NONE, GridBagConstraints.CENTER,0,0,3,0,1,1,this.btnOk);Lay
33、outUtil.add(ap,GridBagConstraints.NONE, GridBagConstraints.CENTER,0,0,4,0,1,1,this.btnCancel); getContentPane().add(p,BorderLayout.CENTER);getContentPane().add(ap,BorderLayout.SOUTH);/将对话框窗口定位在父窗口的居中位置setSizeAndPosition(550,120);this.addWindowListener(new WindowAdapter()public void windowClosing(Win
34、dowEvent e)actionCode=CLOSE;);/将对话框窗口定位在父窗口的居中位置public void setSizeAndPosition(int w,int h)this.setSize(w,h);Dimension d=f.getSize();Point pp=f.getLocation();this.setLocation(pp.x+(d.width-w)/2,pp.y+(d.height-h)/2);public void actionPerformed(ActionEvent e)Object s=e.getSource();if(s=this.btnCancel)
35、this.actionCode=this.CANCEL;this.setVisible(false);else if(s=this.btnOk) okClicked();public String getID()return txtID.getText().trim();public String getBookName()return txtBookName.getText().trim();/将图书单价由字符串类型转化为Double类型/如果不是合法的数值字符串,取值Double.NEGATIVE_INFINITYpublic Double getBookPrice()double res
36、ult=Double.NEGATIVE_INFINITY;tryresult=Double.parseDouble(this.txtBookPrice.getText().trim();catch(Exception e)result=Double.NEGATIVE_INFINITY;return new Double(result);public String getBookPress()return txtBookPress.getText().trim();public int getActionCode()return this.actionCode;public void okCli
37、cked()/图书编号不为空,且价格为数值类型时 隐藏对话框if(!this.txtID.getText().trim().equals("")try Double.parseDouble(this.txtBookPrice.getText().trim();catch(Exception e)JOptionPane.showMessageDialog(f,"价格非法!","提示",JOptionPane.INFORMATION_MESSAGE); return ;this.actionCode=this.OK;this.setVis
38、ible(false);elseJOptionPane.showMessageDialog(f,"请设定图书编号!","提示", JOptionPane.INFORMATION_MESSAGE); class SearchDialog extends JDialog implements ActionListenerfinal int OK=1; final int CANCEL=-1; final int CLOSE=0;private int actionCode=CANCEL;private JRadioButton radID=new JRadi
39、oButton(" 图书编号 ");private JTextField txtID=new JTextField();private JRadioButton radBookName=new JRadioButton(" 图书名称 ");private JTextField txtBookName=new JTextField();private JRadioButton radBookPress=new JRadioButton(" 出 版 社 ");private JTextField txtBookPress=new JTex
40、tField();private JButton btnOk=new JButton("确定(Yes)");private JButton btnCancel=new JButton("取消(Esc)"); private JFrame f=null;public SearchDialog(JFrame f,String s,boolean b)super(f,s,b);this.f=f;ButtonGroup group=new ButtonGroup();group.add(radID);group.add(radBookName);group.ad
41、d(radBookPress);txtID.setEditable(false);radBookName.setSelected(true);txtBookPress.setEditable(false);radID.addActionListener(this);radBookName.addActionListener(this);radBookPress.addActionListener(this);/面板p中显示查询条件JPanel p=new JPanel();p.setLayout(new GridBagLayout();LayoutUtil.add(p,GridBagConst
42、raints.NONE, GridBagConstraints.CENTER,0,0,0,0,1,1,radID);LayoutUtil.add(p,GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER,100,0,1,0,1,1,txtID);LayoutUtil.add(p,GridBagConstraints.NONE, GridBagConstraints.WEST,0,0,0,1,1,1,radBookName);LayoutUtil.add(p,GridBagConstraints.HORIZONTAL, GridBagC
43、onstraints.CENTER,100,0,1,1,1,1,txtBookName);LayoutUtil.add(p,GridBagConstraints.NONE, GridBagConstraints.CENTER,0,0,0,2,1,1,radBookPress);LayoutUtil.add(p,GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER,100,0,1,2,1,1,txtBookPress);btnOk.setIcon(new ImageIcon("image/ok20.gif");btn
44、Cancel.setIcon(new ImageIcon("image/cancel20.gif");btnOk.addActionListener(this);btnCancel.addActionListener(this);/面板ap中显示确定 取消按钮JPanel ap=new JPanel();ap.add(btnOk);ap.add(btnCancel);getContentPane().add(p,BorderLayout.CENTER);getContentPane().add(ap,BorderLayout.SOUTH);setSizeAndPositio
45、n(300,200);this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)actionCode=CLOSE;);/将对话框窗口定位在父窗口的居中位置public void setSizeAndPosition(int w,int h)this.setSize(w,h);Dimension d=f.getSize();Point pp=f.getLocation();this.setLocation(pp.x+(d.width-w)/2,pp.y+(d.height-h)/2);pub
46、lic void setTxtEditable(boolean b1,boolean b2,boolean b3)txtID.setEditable(b1);txtBookName.setEditable(b2);txtBookPress.setEditable(b3);public void actionPerformed(ActionEvent e)Object s=e.getSource();if(s=this.radID)setTxtEditable(true,false,false);else if(s=this.radBookName)setTxtEditable(false,tr
47、ue,false);else if(s=this.radBookPress)setTxtEditable(false,false,true);else if(s=this.btnOk)this.actionCode=this.OK;this.setVisible(false);else if(s=this.btnCancel)this.actionCode=this.CANCEL;this.setVisible(false);public int getActionCode()return actionCode;public String getSQL()String sql="se
48、lect * from bookInfo where "if(radID.isSelected()sql=sql+" bookID like '%"+txtID.getText().trim()+"%'"else if(radBookName.isSelected()sql=sql+" bookName like '%"+txtBookName.getText().trim()+"%'"else if(radBookPress.isSelected()sql=sql+&qu
49、ot; bookPress like '%"+txtBookPress.getText().trim()+"%'"return sql;package edu.njust.cs;import java.sql.*;import javax.swing.*;import java.util.*;import java.io.*;public class SqlUtil/读入配置文件public static Properties loadProperty(String fileName)Properties prop=new Properties()
50、;tryFileInputStream in=new FileInputStream( System.getProperties().get("user.dir")+"/"+fileName);prop.load(in);in.close();catch(IOException e)e.printStackTrace();JOptionPane.showMessageDialog(null, "配置文件丢失!n建议重新安装程序", "信息", JOptionPane.ERROR_MESSAGE);prop=null
51、;return prop;/建立和MS SQL SERVER的连接public static Connection acquireConnection(String host,String port,String dbName,String user,String pwd) throws ClassNotFoundException,SQLExceptionConnection connection=null;tryClass.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");String url ="
52、jdbc:microsoft:sqlserver:/"+host+":"+port+"User="+user+"Password="+pwd; connection= DriverManager.getConnection(url);connection.setCatalog(dbName);catch(ClassNotFoundException e)e.printStackTrace();throw e;catch(SQLException e)e.printStackTrace();throw e;return connection;/使用指定的SQL语句和数据,向数据库插入一条记录public static boolean addRowToDB( Connection con,String insertSql,Object lineForDBAdd)boolean flag=true;PreparedStatement update=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 急性病患者护理试题及答案考点
- 医学研究与临床实践中的医疗AI价值
- 2025年医保知识考试题库及答案:医保谈判药品管理实务操作高频题库
- 烟草重庆公司笔试试题2024
- 烟草海南公司笔试试题2024
- 2025年执业医师考试临床基础科学试题及答案
- 临床技能2025年考试试题及答案
- 行政管理情境模拟试题及答案总结
- 行政管理人际沟通试题及答案总结
- 2025年行政管理教育语文试题及答案
- 项目部临时动火作业审批表
- 饮料生产公司应急预案汇编参考范本
- 高效水泥助磨剂PPT课件(PPT 66页)
- 生物防治第三讲
- 旁站监理实施细则(完整版)
- 学业水平考试复习高中语文文言文课本翻译
- 苏教版二年级(下册)科学全册单元测试卷含期中期末(有答案)
- 常用原料净料率参照表
- 高低温试验报告
- 第一章 混凝土拌合站组织机构框图及岗位职责
- 指南预应力简支t形梁桥
评论
0/150
提交评论