返回
打印 图书管理系统实习报告

打印 图书管理系统实习报告

时间:2013-10-1 18:07:15  [下载该文章]  [会员注册]
 软件综合实习(28)图书信息管理20112级网络112班2013年6月21日姓名:陈雄学号:3110757215[问题描述]编写一个程序实现简单的图书信息的管理功能。[基本要求](注:本程序时在java的环境中运行,并通过eclipse来协助完成相应的操作。)(1)每本图书的基本信息包括:编号,书名,作者,出版社,价格等,其中编号不允许重复。(2)可以对图书基本信息进行管理(添加、删除、查找)。(3)可以实现简单的统计功能,如统计某个出版社出版的图书,某个作者所编写的图书等。(4)提供友好的gui操作界面。[选作内容](1)提供模糊查找的功能,如输入“程序”,可以查找到所有书名包含“程序”的图书的基本信息。(2)实现组合条件的查询,如某个出版社某个作者出版的图书等,组合条件自己设计。整个程序分为6个板块分别为:administrator;book;bookinfo;lms;reader;register。其中administrator是管理员界面,可以实现图书的录入和查询,图书的录入和查询又可以进行入库,统计和删除和查找等操作。book可以实现图书的录入,统计和删除等操作,相当于administrator的子类。bookinfo可以实现图书的查询功能;可以通过作者,书名进行查询,也相当于administrator的一个子类。lms可以实现图书管理系统。提供登陆和注册等功能。只有注册过的用户才有权限访问该系统。reader是一般的用户界面,上面只能提供一般用户的查询操作。不能对数据库进行相关操作。有效的提高了数据库的安全性。本次实习用的数据库是微软的access2003/网络112班陈雄3110757215administrator.java/importjava.swing.importjava.awt.importjava.swing.event.importjava.awt.event.publicclassadministratoretendsjframeimplementsactionlistenerprivatejmenubarjmb中间容器privatejmenum1,m2publicjmenuitemmenuitem1,menuitem2publicadministratorsettitle(管理员界面)setdefaucloseoperation(jframe.eitonclose)设置关闭jframe窗口containercontent=getcontentpanecontent.setlayout(newborderlayout)创建布局jmb=newjmenubarm1=newjmenu(图书信息录入)创建菜单m2=newjmenu(图书信息查询)menuitem1=newjmenuitem(图书信息录入)menuitem2=newjmenuitem(图书信息查询)menuitem1.addactionlistener(this)监听事件menuitem2.addactionlistener(this)m1.add(menuitem1)m2.add(menuitem2)jmb.add(m1)jmb.add(m2)setjmenubar(jmb)jtoolbarjtb=newjtoolbarcontent.add(jtb,borderlayout.north)setsize(300,200)setvisible(true)publicvoidactionperformed(actionevente)if(e.getsourcemenuitem1)newbookelseif(e.getsourcemenuitem2)newbookinfopublicstaticvoidmain(stringargs)newadministrator运行结果:???? 软件综合实习(28)图书信息管理20112级网络112班2013年6月21日姓名:陈雄学号:3110757215[问题描述]编写一个程序实现简单的图书信息的管理功能。[基本要求](注:本程序时在java的环境中运行,并通过eclipse来协助完成相应的操作。)(1)每本图书的基本信息包括:编号,书名,作者,出版社,价格等,其中编号不允许重复。(2)可以对图书基本信息进行管理(添加、删除、查找)。(3)可以实现简单的统计功能,如统计某个出版社出版的图书,某个作者所编写的图书等。(4)提供友好的gui操作界面。[选作内容](1)提供模糊查找的功能,如输入“程序”,可以查找到所有书名包含“程序”的图书的基本信息。(2)实现组合条件的查询,如某个出版社某个作者出版的图书等,组合条件自己设计。整个程序分为6个板块分别为:administrator;book;bookinfo;lms;reader;register。其中administrator是管理员界面,可以实现图书的录入和查询,图书的录入和查询又可以进行入库,统计和删除和查找等操作。book可以实现图书的录入,统计和删除等操作,相当于administrator的子类。bookinfo可以实现图书的查询功能;可以通过作者,书名进行查询,也相当于administrator的一个子类。lms可以实现图书管理系统。提供登陆和注册等功能。只有注册过的用户才有权限访问该系统。reader是一般的用户界面,上面只能提供一般用户的查询操作。不能对数据库进行相关操作。有效的提高了数据库的安全性。本次实习用的数据库是微软的access2003/网络112班陈雄3110757215administrator.java/importjava.swing.importjava.awt.importjava.swing.event.importjava.awt.event.publicclassadministratoretendsjframeimplementsactionlistenerprivatejmenubarjmb中间容器privatejmenum1,m2publicjmenuitemmenuitem1,menuitem2publicadministratorsettitle(管理员界面)setdefaucloseoperation(jframe.eitonclose)设置关闭jframe窗口containercontent=getcontentpanecontent.setlayout(newborderlayout)创建布局jmb=newjmenubarm1=newjmenu(图书信息录入)创建菜单m2=newjmenu(图书信息查询)menuitem1=newjmenuitem(图书信息录入)menuitem2=newjmenuitem(图书信息查询)menuitem1.addactionlistener(this)监听事件menuitem2.addactionlistener(this)m1.add(menuitem1)m2.add(menuitem2)jmb.add(m1)jmb.add(m2)setjmenubar(jmb)jtoolbarjtb=newjtoolbarcontent.add(jtb,borderlayout.north)setsize(300,200)setvisible(true)publicvoidactionperformed(actionevente)if(e.getsourcemenuitem1)newbookelseif(e.getsourcemenuitem2)newbookinfopublicstaticvoidmain(stringargs)newadministrator运行结果:???? ??/网络112班陈雄3110757215book.java/importjava.awt.importjava.awt.event.importjava.swing.importjava.sql.publicclassbooketendsjframeimplementsactionlistenerjlabeljlabelnumber=newjlabel(编号)jlabeljlabelauthor=newjlabel(作者)jlabeljlabelbookname=newjlabel(书名)jlabeljlabelpublish=newjlabel(出版社)jlabeljlabelmoney=newjlabel(价格)jlabeljlabelcount=newjlabel(作者共有书籍)jbuttonjbuttonadd=newjbutton(入库)jbuttonjbuttoncount=newjbutton(按作者统计)jbuttonjbuttondelete=newjbutton(按编号进行删除)jbuttonjbuttoncount0=newjbutton(按出版社统计)jtetfieldjtetfieldnumber=newjtetfieldjtetfieldjtetfieldauthor=newjtetfieldjtetfieldjtetfieldbookname=newjtetfieldjtetfieldjtetfieldpublish=newjtetfieldjtetfieldjtetfieldmoney=newjtetfieldjtetfieldjtetfieldcount=newjtetfieldjtetfieldjtetfieldcount0=newjtetfieldpublicbookjbinit图书入库界面addwindowlistener(newwindowadapterpublicvoidwindowclosing(windowevente)system.eit(0))setsize(400,500)setvisible(true)tryclass.forname(sun.jdbc.odbc.jdbcodbcdriver)catch(classnotfoundeceptione)system.out.println(forname:+e.getmessage)privatevoidjbinitcontainercontentpane=getcontentpanecontentpane.setlayout(null)settitle(图书录入)jlabelnumber.setfont(newfont(dialog,0,15))jlabelnumber.sethorizontalalignment(swingconstants.right)jlabelnumber.setbounds(20,21,56,25)jlabelauthor.setfont(newfont(dialog,0,15))/设置此组件的字体,其中匿名类font根据指定的逻辑字体dialog的规范系列名称的string常量、样式0和磅值大小15,创建一个新font/jlabelauthor.sethorizontalalignment(swingconstants.right)设置标签内容沿轴的对齐方式,向右对齐jlabelauthor.setbounds(20,59,56,25)/移动组件并调整其大小。由20和21分别指定左上角的新位置的和y坐标,由56和25分别指定组件新的宽和高/jlabelbookname.setfont(newfont(dialog,0,15))jlabelbookname.sethorizontalalignment(swingconstants.right)jlabelbookname.setbounds(20,97,56,25)jlabelpublish.setfont(newfont(dialog,0,15))jlabelpublish.sethorizontalalignment(swingconstants.right)jlabelpublish.setbounds(20,135,56,25)jlabelmoney.setfont(newfont(dialog,0,15))jlabelmoney.sethorizontalalignment(swingconstants.right)jlabelmoney.setbounds(20,172,56,25)jlabelcount.setfont(newfont(dialog,0,15))jlabelcount.sethorizontalalignment(swingconstants.right)jlabelcount.setbounds(80,280,56,25)jtetfieldnumber.setbounds(90,21,150,28)jtetfieldauthor.setbounds(90,59,150,28)jtetfieldbookname.setbounds(90,97,150,28)jtetfieldpublish.setbounds(90,135,150,28)jtetfieldmoney.setbounds(90,172,150,28)jtetfieldcount.setbounds(200,220,80,28)jtetfieldcount0.setbounds(200,280,80,28)jbuttonadd.setbounds(260,172,73,28)jbuttonadd.setfont(newfont(dialog,0,15))jbuttonadd.addactionlistener(this)jbuttoncount.setbounds(20,220,150,28)jbuttoncount.setfont(newfont(dialog,0,15))jbuttoncount.addactionlistener(this)jbuttondelete.setbounds(20,330,180,28)jbuttondelete.setfont(newfont(dialog,0,15))jbuttondelete.addactionlistener(this)jbuttoncount0.setbounds(20,280,150,28)jbuttoncount0.setfont(newfont(dialog,0,15))jbuttoncount0.addactionlistener(this)contentpane.add(jlabelnumber)contentpane.add(jlabelauthor)contentpane.add(jlabelbookname)contentpane.add(jlabelpublish)contentpane.add(jlabelmoney)contentpane.add(jbuttonadd)contentpane.add(jbuttoncount)contentpane.add(jbuttondelete)contentpane.add(jbuttoncount0)contentpane.add(jtetfieldnumber)contentpane.add(jtetfieldauthor)contentpane.add(jtetfieldbookname)contentpane.add(jtetfieldpublish)contentpane.add(jtetfieldmoney)contentpane.add(jtetfieldcount)contentpane.add(jtetfieldcount0)publicvoidactionperformed(actionevente)stringstr0=jtetfieldnumber.gettetstringstr1=jtetfieldauthor.gettetstringstr2=jtetfieldbookname.gettetstringstr3=jtetfieldpublish.gettetstringstr4=jtetfieldmoney.gettet if(e.getsourcejbuttonadd)tryconnectioncon=drivermanager.getconnection(jdbc:odbc:library)statementsm=con.createstatementstringss=insertintobookvalues(+str0+,+str1+,+str2+,+str3+,+str4+)system.out.println(ss)sm.eecuteupdate(ss)sm.closecon.closecatch(sqleceptione3)system.out.println(sqleception:+e3.getmessage)if(e.getsourcejbuttoncount)tryconnectioncon=drivermanager.getconnection(jdbc:odbc:library)statementsm=con.createstatementresusetrs=sm.eecutequery(selectcountfrombookwhereauthor=+str1+)while(rs)jtetfieldcount.settet(rs.getstring(1))sm.closecon.closecatch(sqleceptione3)system.out.println(sqleception:+e3.getmessage)if(e.getsourcejbuttoncount0)tryconnectioncon=drivermanager.getconnection(jdbc:odbc:library)statementsm=con.createstatementresusetrs=sm.eecutequery(selectcountfrombookwherepublish=+str3+)while(rs)system.out.println(rs.getstring(1))jtetfieldcount0.settet(rs.getstring(1))sm.closecon.closecatch(sqleceptione3)system.out.println(sqleception:+e3.getmessage)if(e.getsourcejbuttondelete)tryconnectioncon=drivermanager.getconnection(jdbc:odbc:library)statementsm=con.createstatementstringnumber=+str0+system.out.println(ss)sm.eecuteupdate(ss)sm.closecon.closecatch(sqleceptione3)system.out.println(sqleception:+e3.getmessage)publicstaticvoidmain(stringargs)newbook运行结果:ss=deletefrombookwhere?????/网络112班陈雄3110757215bookinfo.java/importjava.swing.importjava.swing.table.importjava.awt.importjava.awt.event.importjava.sql.publicclassbookinfoetendsjframeimplementsactionlistenerprivateconnectioncon创建连接privatejtabletable创建表格privatestringcolumnnames=编号,作者,书名,出版社,价格privateobjectrowdata=newobject[50][5]创建表格的行列大小 privatejbuttonjbprivatejradiobuttonrb1,rb2单选按钮类privatejtetfieldjtet创建文本publicbookinfosuper(图书查询)containercontent=getcontentpane创建容器anelpanel=newanel创建中间容器gridbaglayoutgridbag=newgridbaglayout创建一个gridbaglayout的布局管理器gridbagconstraintsconstraints=newgridbagconstraints创建约束对象gridbagconstraintsconstraints.fill=gridbagconstraints.horizontal在水平方向上填充。constraints.weight=1在方向上的增量为1panel.setlayout(gridbag)将中间容器添加到外层中间容器中rb1=newjradiobutton(作者)创建单选按钮rb1rb1.setselected(true)gridbag.setconstraints(rb1,constraints)添加控件rb1到panel中间容器中panel.add(rb1)rb2=newjradiobutton(书名)创建单选按钮rb2gridbag.setconstraints(rb2,constraints)添加控件rb2到中间容器中panel.add(rb2)buttongroupbg=newbuttongroup将单选按钮rb1,2划分到按钮组合中。bg.add(rb1)bg.add(rb2)jtet=newjtetfield(,20)创建单行文本gridbag.setconstraints(jtet,constraints)panel.add(jtet)将文本添加到中间容器中jb=newjbutton(查询)新建一个查询按钮jb.addactionlistener(this)添加事件监听器constraints.gridwidth=gridbagconstraints.remainder指定此组件是其行或列中的最后一个组件。gridbag.setconstraints(jb,constraints)panel.add(jb)content.add(panel,borderlayout.north)table=newjtable(rowdata,columnnames)jscrollpanescrollpane=newjscrollpane(table)创建滚动条content.add(scrollpane,borderlayout.center)setsize(400,200)setvisible(true)addwindowlistener(newwindowadapterpublicvoidwindowclosing(windowevente)system.eit(0))publicvoidactionperformed(actionevente)建立监听事件resusetrsstringsqlstrinti=0stringstr=jtet.gettetstatementstmt=nulry连接数据库class.forname(sun.jdbc.odbc.jdbcodbcdriver)加载驱动con=drivermanager.getconnection(jdbc:odbc:library)stmt=con.createstatementsystem.out.println(ok)catch(classnotfoundeceptionf)system.err.println(f.getmessage)catch(sqleceptionf)system.err.println(f.getmessage)if(rb1.isselected)sqlstr=selectfrombookwhereauthor=+str+elsesqlstr=selectfrombookwherebookname=+str+system.out.println(sqlstr)tryif(e.getsourcejb)if(str.equals)joptionpane.showmessagedialog(this,tetwasnull!)选择窗口类调用显示信息对话框方法returnrs=stmt.eecutequery(sqlstr)for(intj=0jrowdata.lenhj++)for(intk=0k5k++)rowdata[j][k]=nulltable.repaintwhile(rs)if(irowdata.lenh)rowdata[i][0]=rs.getstring(number)rowdata[i][1]=rs.getstring(author)rowdata[i][2]=rs.getstring(bookname)rowdata[i][3]=rs.getstring(publish)rowdata[i][4]=rs.getstring(money)i++jtet.settetcatch(sqleceptione)system.err.println(e)publicstaticvoidmain(stringargs)newbookinfo运行结果: 本次实习大多数是在网上找的例子之后再加入自己的功能,但是学到的东西非常多的用户名和密码不一致的时候会出现警告。总结:通过自己查找资料以及请教同学和老师,让我在做这个管理系统的时候受益匪浅,我当初一看要用到gui界面的,第一时间就是选错题目了。因为我对这方面不熟悉。但是既然选了,我就打算做到底。实习的大部分时间都放在这个管理系统上了,现在总算是能把基本的功能完善了。在其中有自己的汗水在里面。这个图书管理系统能实现一般用户的注册功能,用户阅览书籍信息,管理员对数据库里面的数据的操作功能;包括增、删、查询、统计等相关功能。随着这些功能的完善也培养了我对相关项目的认识和兴趣。

>

相关推荐