收藏 分销(赏)

《JAVA-》课程设计报告图书信息管理系统.doc

上传人:精*** 文档编号:2221721 上传时间:2024-05-23 格式:DOC 页数:23 大小:831.54KB 下载积分:10 金币
下载 相关 举报
《JAVA-》课程设计报告图书信息管理系统.doc_第1页
第1页 / 共23页
《JAVA-》课程设计报告图书信息管理系统.doc_第2页
第2页 / 共23页


点击查看更多>>
资源描述
《JAVA 》课程设计报告图书信息管理系统 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 2 个人收集整理 勿做商业用途 《JAVA 2》课程设计报告 图书信息管理系统 指导教师:谢小林 姓名:罗轩 学号:201140130232 班级:1141302 日期:2012。01.09 目录 一、需求分析……………………………………………………2 二、程序的主要功能及程序运行平台…………………………2 三、程序总框架图………………………………………………3 四、系统模块分析………………………………………………3 五、较具特色的函数……………………………………………4 六、存在的不足与对策…………………………………………5 七、参考文献……………………………………………………5 八、附录(主要源代码及程序类的说明)……………………5 一、需求分析 当今时代是飞速发展的信息时代,而图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。 数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。 基于这些问题,有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况. 二、程序的主要功能及程序运行平台 本次课程设计的要求使用图形界面,用数据库建立图书信息表。 (1)针对学生: 1.   能按各种方式(比如书名、编号、作者)查询图书馆的藏书情况。 2。   能够方便地借阅图书、续借图书、归还图书. 3。  能够查询自己的基本资料、借阅图书情况。 4。  能够熟悉图书管理系统的使用。 (2)针对图书管理员: 1。   能方便的对图书进行录入登记,注销陈旧的书籍。 2. 能够方便地对新生进行登记,或注销已经毕业的学生信息(基本信息,借阅信息). 3。   能够随时发布一些诸如各学院学生借阅图书超期情况、馆内藏书情况、借情况息,以便各学院能够随时获知本院学生的一些借书信息。 (3)程序运行平台:在java虚拟机上,使用软件eclipse编程 三、程序总框架图 图书信息管理系统 图书管理员 学生 查询书籍 系统说明 查询资料 借阅归还 录入登记 发布公告 图书管理系统中包含书籍的采购、入库、编目、出借、归还、淘汰等功能,以及读者信息的管理。本系统对前期的工作进行了简化,删掉了书籍的采购、入库、编目等繁琐的工作,仅对系统主要部分进行分析。为了提高服务效果,图书馆系统实行开架阅览,并为读者提供客户端,读者可以查询到馆藏书目和个人在借图书的信息。这项功能也可以通过互联网实现。图书管理员通过系统记录图书的出借和归还,以及书目的维护和读者信息的维护. 四、系统模块分析 1。新书入库模块: 新书入库界面包括图书相关的属性:编号、书名、作者、类别、出版日期、出版社、定价、数量、备注等. 2.图书整理模块: (1)图书整理界面包括:图书修改删除、图书类别编辑 图书修改删除界面除了包括图书的相关属性还包括图书修改功能。 图书类别编辑界面包括对类别编号、类别名称进行添加、删除、修改的功模块。 3.办借书卡模块: 办借书卡界面包括借书卡编号、持借书卡人的姓名、性别、组名、证件号。 4。查询模块: (1)借阅信息查询: 根据查询方式如按借书证号、按姓名等在文本框中输入相关内容即可查询还可查询到期图书 (2)图书信息查询: 查询方式有:按书号、按书名、按作者、按类别、按出版社。在关键字中输入相关内容,点击“开始查询”按钮,在DataList中列出查询结果。如果选中“模糊查询"可查询更多的相关信息。 (3)用户信息查询: 查询方式有:按借书证号、按姓名。在关键字框中输入借书证号或者读者姓名. 组用户管理模块: (4)组用户管理界面: 操作方式包括:修改、删除、添加。 组用户信息包括:组编号、组名称、最长天数、最多本数。 5.图书借还模块: 图书借阅界面包括图书编号、书名、类别、出版社、出版日期、借书证号等 归还图书界面包括图书的属性、归还者的信息。 五、较具特色的函数 //图书管理员 public class SimpleBookManager{ public static void main(String []args){ SetFont。setFont(new Font(”楷体”, 0, 12)); Connection con=null; try{ con=SqlUtil.acquireConnection("127.0.0。1”, "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.getContentPane()。add(new BookManager(f,con)); f。setSize(600,400); f.show(); } } } 通过图书管理员来区别与学生功能的区别,增添的功能更具有针对性。使用管理员来进行对学生的管理。 六、存在的不足与对策 在开发图书管理系统的过程当中,也遇到了许多技术上或者其他方面的困难。如:开始编程的无从下手,编程时遇到的语法问题等,但是也算经过自己的努力,加上eclipse软件上的提示与指导老师指导,使之基本上克服了这些困难。 在这次设计过程中,培养了我的自学能力,在遇到困难的时候,能够认真的对待,不放弃,无论是查看各种书籍还是到图书馆中查找各种资料,想尽一切办法将这个问题解决。我总结了许多编程经验,这将在以后的学习生活中有很大的帮助。 这次课程设计还让我学会了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 SimpleBookManager{ public static void main(String []args){ SetFont.setFont(new Font("楷体", 0, 12)); Connection con=null; try{ con=SqlUtil。acquireConnection("127。0.0.1", ”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.getContentPane()。add(new BookManager(f,con)); f.setSize(600,400); f.show(); } } } class BookManager extends JPanel implements ActionListener{ private String [] columnNames={”图书编号","书名”,”定价”,”出版社”}; 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”,” 增 加 "); private JButton btnSearch=new TextAndPicButton("image/search20.gif”,” 查 询 ”); private JButton btnDelete=new TextAndPicButton("image/deleterow20。gif”,” 删 除 ”); private JButton btnExit=new TextAndPicButton(”image/exit20.gif”,” 退 出 ”); private 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。addActionListener(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); setTableColumnWidth(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。length&&column〉=0){ TableColumn col=table.getColumn(columnNames[column]); 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。exit(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()}; 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); } else JOptionPane.showMessageDialog(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 delete(){ 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="delete from bookInfo where bookID=?"; Object []keys={model。getValueAt(selected,0).toString()}; if(SqlUtil.deleteFromDB(con,deleteSql,keys)) model。removeRow(selected); } else JOptionPane。showMessageDialog(f,”请选定要删除的一行!" ,"提示”,JOptionPane。INFORMATION_MESSAGE); } //内部类,用于显示/编辑图书信息的一个模式对话框 class BookEditor extends JDialog implements ActionListener { final 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(” 图书名称 ”); private 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("上一个”); 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。setLayout(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); LayoutUtil。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); LayoutUtil.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); btnNext.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(SwingConstants。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.btnPre); 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); LayoutUtil.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(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); } public void actionPerformed(ActionEvent e){ Object s=e.getSource(); if(s==this。btnCancel) { 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_INFINITY public Double getBookPrice(){ double result=Double。NEGATIVE_INFINITY; try{ result=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 okClicked() { //图书编号不为空,且价格为数值类型时 隐藏对话框 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。setVisible(false); } else JOptionPane.showMessageDialog(f,"请设定图书编号!”,"提示", JOptionPane。INFORMATION_MESSAGE); } } } class SearchDialog extends JDialog implements ActionListener{ final int OK=1; final int CANCEL=—1; final int CLOSE=0; private int actionCode=CANCEL; private JRadioButton radID=new JRadioButton(" 图书编号 ”); private JTextField txtID=new JTextField(); private JRadioButton radBookName=new JRadioButton(” 图书名称 "); private JTextField txtBookName=new JTextField(); private JRadioButton radBookPress=new JRadioButton(” 出 版 社 ”); private JTextField txtBookPress=new JTextField(); 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。add(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,GridBagConstraints.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, GridBagConstraints。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")); btnCancel。setIcon(new ImageIcon(”image/cancel20。gif")); btnOk。addActionListener(this); btnCancel。add
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服