




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGEII《面向对象程序设计》课程设计报告学生姓名:张学阳学号:1009300132陈洋1009300109刘睿1009300122学院:理学院班级:数学与应用数学题目:图书管理系统胡建平胡建平副教授指导教师:职称:尚宝欣讲师尚宝欣讲师方向实验师方向实验师2012年12月2日I-目录目录 I一、选题背景 1二、算法设计 22.1功能要求 22.2功能的实现 2三、程序及功能说明 33.1图书基本结构 33.2函数信息 43.3系统基本结构 5四、结果分析 6五、总结 12六、课程设计心得体会 13参考文献 14源程序 15PAGE1一、选题背景在调研农村中学时发现这些农村中学图书室都藏书达六、七万余册,但其现行图书管理工作都是采用传统的手工管理,经过对其图书管理工作中的图书信息、读者管理及借阅管理工作做全面调查研究,其现行手工流程具体分析如下:(1)图书登记:对上级分配、学校购入和社会捐赠的图书进行图书信息登记;(2)读者登记:图书管理员根据学校档案室提供的教师花名册和学生花名册进行读者登记,然后填发借书证,学生毕业和教师调出时将其借书证注销。(3)借阅管理:读者特别是学生读者持借书证到图书室借阅图书,图书管理员将借阅日期填写在书籍卡片上,将卡片夹在借书证中间,存放在图书室,学生看完后,送还所借书籍,收回借书证或另借其它书籍。传统人工管理图书方式存在着许多缺点,如:效率低、保密性差,一方面导致借书者对图书室藏书情况不了解,图书室究竟有哪些图书也不知道;另一方面图书管理员对图书管理工作倍感头痛,因为时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难,耗费劳动力大,难于避免错误的产生。如今计算机已经普及,管理者可以通过计算机来实现对图书的管理,借书者也可以通过计算机来查询自己想看的图书是否已被借走,因此给管理者和借书者都带来很大的方便,因此图书管理系统便产生了,它对图书的管理发挥着重要的作用,其原因有以下几个方面:(1)计算机可以代替人工进行许多繁杂的劳动;(2)计算机可以大大的提高管理者的工作效率;(3)计算机可以使敏感文档更加安全;(4)可以存储图书室的图书信息、读者信息和借阅信息,安全、高效;(5)只需一名图书管理员即可操作系统,节省大量人力;(6)可以迅速查到所需信息,图书管理系统可以为借书者提供充足的信息和快捷的查询手段,借书者能够及时查询图书信息,更好地为借书者服务。
二、算法设计2.1功能要求我们设计的图书管理系统主要用于对图书馆日常工作的管理,主要任务是用计算机图书各种信息进行日常管理,如查询、修改、增加、删除图书的管理等。本系统实现了图书馆的信息化管理,完成了图书馆管理系统的基本功能。根据上述系统功能分析,按照结构化程序设计的要求,得到系统的功能结构图,如下图所示。功能要求功能要求输入图书信息手动输入连接数据库删除图书信息给定图书编号删除查询图书信息给定出版社查询给定作者查询给定出版号查询结果转化为表格2.2功能的实现我们所要建立的系统主体思想是建立两个类,一个建立用户对象,另一个用来建立图书对象,图书的建立都是建立在用户对象基础上的,也就是说,建立用户对象后才能建立图书对象,一个用户对应多个图书对象,通过方法对图书信息实现查询、删除、插入等一些基本操作。在此过程中我们实现了数据库的连接,将数据库中的信息导入到图书对象数组中并保存,反过来将图书对象的信息插入到数据库中,将数据库中的数据转化成电子表格的形式,实现了数据的导出。三、程序及功能说明3.1图书基本结构对于图书对象,我们定义了6个属性,结构图和信息表如下所示:图书图书书名作者出版社出版号是否借走图书总量图书属性结构图图书信息表属性变量名变量类型变量修饰符初始值书名bookNameStringprivateNoinformation作者authorStringprivateNoinformation出版社pressStringprivateNoinformation出版号ISBNStringprivateNoinformation是否借走borrowedStringprivateNo图书总量numberintprivate-1Access表字段名称数据类型是否为主码导入数据1导入数据2书名文本否jifenshuxue作者文本否liuzhang出版社文本否renmingaodengISBN文本是123-012234-5313.2函数信息程序中用到的函数及函数的信息如下表和下图所示函数信息表BookInfo()构造函数初始化setNum(intn)设置图书数量函数setBookName(Stringn)设置图书作者函数setAuthor(Stringa)设置图书作者函数setPress(Stringp)设置出版社函数setISBN(Stringi)设置出版号函数setBorrowed(Stringi)判断图书是否被借走函数getNum()获得图书数量函数getBookName()获得书名函数getAuthor()获得图书作者函数getPress()获得出版社函数getISBN()获得出版号函数getBorrowed()获得借走信息函数disp()输出函数Menus()初始化函数mainMenu()界面输出函数deleteMenu()删除函数borrowedMenu()借书函数restoreMenu()还书函数addMenu1()手动添加图书信息函数addMenu2()连接数据库添加信息函数searchByAuthor()按作者查询函数searchByPress()按出版社查询函数searchByISBN()按出版号查询函数图书管理系统图书管理系统设置图书数量是否被借走获得出版号设置书名设置图书作者设置出版社设置出版号获得图书数量获得书名获得图书作者获得出版社数据初始化输出函数删除图书借书函数还书函数手动添加图书信息连接数据库添加信息按作者查询函数按出版社查询函数按出版号查询函数获得借走信息函数结构示意图3.3系统基本结构通过与数据库的连接实现信息的导入和导出,基本结构图如下所示图书的对象图书的对象数据库将图书信息插入数据库中连接并导入信息电子表格转化创建用户创建图书对象四、结果分析Access原始数据导入后的数据数据库连接时有如下操作,选择“控制面板”“管理工具”“数据源(ODBC)”,有如下界面在“ODBC数据源管理器”中,单击“添加”按钮,并选择“MicrosoftAccessDriver(*.mdb)”驱动程序在“数据源名”中填入employee然后单击“选择”按钮,选择创建的Access表,并保存。选择3显示出现有图书信息,选择1添加图书信息,其中添加方式分为两种,手动输入和数据库连接输入,具体结果如下选择数据库连接添加了数据库里的图书信息,选择3查询如下选择手动输入图书信息,将图书基本信息输入保存,选择y或Y继续添加,任意键返回上一界面选择4通过输入出厂号删除图书信息选择2查询图书信息,分3种方式查询,选择1按作者查询,选择2按出版社查询,选择3按出版号查询,选择0返回上界面,查询结果如下选择5借阅书籍,将是否借出属性的值改为“yes”,选择3显示结果如下选择6归还图书,将是否借出属性的值改为“no”,选择3显示结果如下五、总结图书管理系统主要是要求实现对图书信息的查询、插入、删除等功能,后来又自己添加了连接数据库功能和借还书显示功能。整体里思想是首先建立用户类,在用户类的基础上又建立了图书类,通过图书类建立图书对象数组,每一个对象包括图书名称、图书作者、图书出版社、图书出版号、是否已经借出、图书总量属性,查询功能可以将这些信息显示出来,查询功能可以显示全部的图书信息,也可以通过给定图书出版号、作者姓名、出版社查询图书信息,通过给定图书编号删除图书信息,可以手动输入图书的信息,也可以连接数据库,将数据库里面的数据插入到图书对象中,反过来也可以将图书信息插入到数据库中,在通过数据库将图书信息转化为电子表格,实现了数据的导出,在借还书过程中,是否已经借出属性会发生相应的改变,插入和删除图书信息后,图书总量也会改变。每一个功能都包含在一个方法中,通过调用来实现。在完成系统的过程中也遇到了很多问题,比如连接数据库时,数据库的某些语句Java无法识别造成连接出错,还有一些由于Java语句本身的局限性,造成的一些错,比如有些属性需要赋值给其他变量才能实现一些要求等等只有对Java语句了解才能将错误排除,最终经过我们共同商讨,将这些错误都一一解决。完成课程设计的过程中,也有一些很好的想法,由于自身能力不足复杂性,没能得到实现,比如在电子表格的导出时,通过查询资料了解到可以添加一些包,经过Java语句来实现,但包需要下载,语句又太多,因此没有采用,还有在数据向数据库插入时,我们采用的方法是逐条插入,本意是全部一次性插入,通过查询资料也没有得到解决,要实现这些功能,系统会更加完善。六、课程设计心得体会刚开始拿到题目时感觉思路很混乱,要实现的功能很多,不知从何下手,后来经过仔细的思考后发现也没有那么那,只要把思路理清楚还是很容易上手的,由于之前做过C语言、数据结构、数据库的课程设计,整体的流程还是很清楚的,重点的Java功能的实现,还有就是如何连接数据库,将这些问题解决后完成课程设计就没什么问题了,当然要解决这些问题也不是很容易,与平时的课内试验相比要实现的功能增加很多,类里面的方法也增多,写程序时会有更多的错误存在,有时一个很简单的错误隐藏的很深,要花很长的时间才会发现,数据库的连接之前没有接触过,通过查阅书籍后知道了它的连接方式和一些基本的Java的连接程序,连接成功后通过数据库的查询、插入、删除等操作就可以对实验功能的实现。要完成课程设计。光靠一个人的力量是不够的,需要一个组的共同努力才能完成,因为一个人的能力是有限的,一个人查找错误肯定没有三个人快,一个人的思路也没有三个人的思路广阔。在完成课程设计的过程中,我们分工明确,出现问题共同讨论,找出解决问题的最佳方法。基本功能实现后,我们对程序反复修改不断完善,最后将系统做到尽量完善。通过这次课程设计,我们学会的不只是知识,更学会了完成一个系统的流程和团队合作。由于之前没有学过C++,初次接触Java时感觉很不好学,后来经过深入的学习和不断的练习发现Java语言也并不是很难,只要了解它的规则就行了,而且Java的功能很强大,感觉很有意思,在图书管理系统的完成中,对Java有了更深一步的了解,而且还学会的数据库的连接,感觉收获很大。有一些事情我们不做永远也不知道自己能完成,不要被它吓到,勇敢的去尝试,你会发现没有什么事情是可怕的,可怕的是自己没有去做的勇气。参考文献[1]曲朝阳,郭晓利,王晓慧,孙鸿飞.C程序设计(第三版).北京:清华大学出版社,2005[2]印旻,王行言.Java语言与面向对象程序设计.北京:清华大学出版社,2007.11.[3]耿祥义.Java大学实用教程.电子工业出版社,2005.3.[4]张跃平,耿祥义.高等学校计算机系列规划教材.清华大学出版社,2012.5源程序importjava.util.*;importjava.sql.*;//创建类publicclassDatabase{ publicstaticvoidmain(Stringargs[]) { Menusmy=newMenus(); my.mainMenu(); }}//创建构造函数类包括图书信息的改变和获取classBookInfo{privateintnum;privateStringbookName;//书名privateStringauthor;//作者privateStringpress;//出版社privateStringISBN;//每本书有唯一的ISBN号码privateStringborrowed;//是否被借出 BookInfo(){num=-1;bookName="Noinformation";author="Noinformation";press="Noinformation";ISBN="Noinformation";borrowed="No";}BookInfo(Stringsbn,Stringsa,Stringsp,StringsISBN){intn=3;num=n;bookName=sbn;author=sa;press=sp;ISBN=sISBN;borrowed="No";}publicvoidsetNum(intn){num=n;}publicvoidsetBookName(Stringn){bookName=n;}publicvoidsetAuthor(Stringa){author=a;}publicvoidsetPress(Stringp){press=p;}publicvoidsetISBN(Stringi){ISBN=i;}publicvoidsetBorrowed(Stringi){borrowed=i;}publicintgetNum(){returnnum;}publicStringgetBookName(){returnbookName;}publicStringgetAuthor(){returnauthor;}publicStringgetPress(){returnpress;}publicStringgetISBN(){returnISBN;}publicStringgetBorrowed(){returnborrowed;}publicvoiddisp(){System.out.println(getNum()+"\t"+getBookName()+"\t\t"+getAuthor()+"\t\t"+getPress()+"\t\t"+getISBN()+"\t\t"+getBorrowed());}}//创建类实现插入图书信息、删除图书信息、查找图书信息等一些基本操作classMenus{ intMAX=20; intNUMBER=0; BookInfo[]numOfInfo;Scanners=newScanner(System.in);Menus(){numOfInfo=newBookInfo[MAX];numOfInfo[NUMBER++]=newBookInfo("Java","wang","qinghua","123-421");numOfInfo[NUMBER++]=newBookInfo("C++","zhang","renmin","321-421");numOfInfo[NUMBER++]=newBookInfo("C#","liu","beida","214-521");for(inti=NUMBER;i<MAX;++i){numOfInfo[i]=newBookInfo();}}publicvoidmainMenu(){System.out.println("\n**************图书管理系统***************");System.out.println("1.添加书籍信息");System.out.println("2.查询书籍信息");System.out.println("3.显示书籍信息");System.out.println("4.删除书籍信息");System.out.println("5.借阅书籍");System.out.println("6.归还书籍");System.out.println("0.退出");System.out.println("*****************************************");System.out.print("请选择相应的选项:");intchoose=-1;try{Stringsc=s.nextLine();choose=Integer.parseInt(sc);System.out.println();}catch(Exceptione){System.out.println("输入有误!");mainMenu();}switch(choose){case1:addMenu();break;case2:searchMenu();break;case3:dispMenu();break;case4:deleteMenu();break;case5:borrowedMenu();break;case6:restoreMenu();break;case0:System.exit(0);break;default:System.out.println("请输入0到6的整数!");mainMenu();}}publicvoiddeleteMenu(){ booleanb1=false; try { System.out.print("请输入ISBN号码:"); StringsISBN=s.nextLine(); for(inti=0;i<NUMBER;i++) { b1=false; b1=numOfInfo[i].getISBN().equals(sISBN); if(b1==true) { for(intj=i;j<NUMBER;j++) numOfInfo[j]=numOfInfo[j+1]; --NUMBER; for(intk=0;k<NUMBER;k++) numOfInfo[k].setNum(NUMBER); } } } catch(Exceptione) {System.out.println("错误,请重新输入!");deleteMenu();} mainMenu();}publicvoidborrowedMenu(){ booleanb2=false; try { System.out.print("请输入ISBN号码:"); StringsISBN=s.nextLine(); for(inti=0;i<NUMBER;i++) { b2=false; b2=numOfInfo[i].getISBN().equals(sISBN); if(b2==true&&numOfInfo[i].getBorrowed()=="No") { numOfInfo[i].setBorrowed("yes"); } elseif(b2==true&&numOfInfo[i].getBorrowed()=="yes") { System.out.println("图书已被借走:"); } } } catch(Exceptione) {System.out.println("错误,请重新输入!");borrowedMenu(); } mainMenu();}publicvoidrestoreMenu(){ booleanb3=false; try { System.out.print("请输入ISBN号码:"); StringsISBN=s.nextLine(); for(inti=0;i<NUMBER;i++) { b3=false; b3=numOfInfo[i].getISBN().equals(sISBN); if(b3==true) { numOfInfo[i].setBorrowed("No"); } } } catch(Exceptione) {System.out.println("错误,请重新输入!");restoreMenu();} mainMenu();}publicvoidaddMenu(){ try { System.out.print("请选择输入方式:"); System.out.print("1.手动输入"); System.out.print("2.连接数据库"); System.out.print("3.返回"); Stringsc=s.nextLine();intchoose=Integer.parseInt(sc);switch(choose){case1:addMenu1();break;case2:addMenu2();break;case3:mainMenu();break;default:System.out.println("请输入1到3的整数!");addMenu();}System.out.println(); } catch(Exceptione){}}publicvoidaddMenu1(){if(NUMBER>=MAX){System.out.println("最多只能存储"+MAX+"本书籍的信息!");mainMenu();}else{intn=++NUMBER;try{System.out.print("请输入书名:");Stringsbn=s.nextLine();System.out.println();System.out.print("请输入作者:");Stringa=s.nextLine();System.out.println();System.out.print("请输入出版社:");Stringp=s.nextLine();System.out.println();System.out.print("请输入ISBN号码:");StringsISBN=s.nextLine();System.out.println();numOfInfo[n-1].setNum(n);numOfInfo[n-1].setBookName(sbn);numOfInfo[n-1].setAuthor(a);numOfInfo[n-1].setPress(p);numOfInfo[n-1].setISBN(sISBN);for(intk=0;k<NUMBER;k++) numOfInfo[k].setNum(NUMBER);}catch(Exceptione){System.out.println("错误,请重新输入!");--NUMBER;addMenu();}while(true){try{System.out.print("--是否继续输入(y或Y为继续):");Stringsin=s.nextLine();System.out.println();if(sin.equals("y")||sin.equals("Y"))addMenu();elsemainMenu();break;}catch(Exceptione){System.out.println("错误,请重新输入!");}}}}publicvoidaddMenu2()throwsException{ Stringa,b,c,d; intn=++NUMBER; Connectioncon; Statementstmt; ResultSetrs; DriverManager.registerDriver(newsun.jdbc.odbc.JdbcOdbcDriver()); con=DriverManager.getConnection("jdbc:odbc:employee"); stmt=con.createStatement(); rs=stmt.executeQuery("select*FROMemp"); while(rs.next()) { System.out.print(a=rs.getString("书名")); System.out.print("\t"); System.out.print(b=rs.getString("作者")); System.out.print("\t"); System.out.print(c=rs.getString("出版社")); System.out.print("\t"); System.out.println(d=rs.getString("ISBN")); numOfInfo[n-1].setNum(n); numOfInfo[n-1].setBookName(a);numOfInfo[n-1].setAuthor(b);numOfInfo[n-1].setPress(c);numOfInfo[n-1].setISBN(d);n=n+1;NUMBER=n; } NUMBER--;for(intk=0;k<NUMBER;k++) numOfInfo[k].setNum(NUMBER);mainMenu(); Stringsql="INSERTINTOempVALUES('Java','wang','qinghua','123-421')"; Stringsql1="INSERTINTOempVALUES('C++','zhang','renmin','321-421')"; Stringsql2="INSERTINTOempVALUES('C#','liu','beida','214-521')";stmt.executeUpdate(sql);stmt.executeUpdate(sql1);stmt.executeUpdate(sql2);mainMenu();}publicvoiddispMenu(){ System.out.println("数量"+"\t"+"书名"+"\t\t"+"作者"+"\t\t"+"出版社"+"\t\t"+"ISBN"+"\t\t"+"是否借出"); for(inti=0;i<NUMBER;i++) { numOfInfo[i].disp(); } mainMenu();}publicvoidsearchMenu(){if(NUMBER==0){System.out.println("没有任何信息!");mainMenu();}else{System.out.println("\n查询书籍信息:");System.out.println("1--按作者查询");System.out.println("2--按出版社查询");System.out.println("3--按ISBN查询");System.out.println("0--返回上级菜单");System.out.print("请选择相应的选项:");intchoose=-1;try{Stringsc=s.nextLine();choose=Integer.parseInt(sc);System.out.println();}catch(Exceptione){System.out.println("输入有误!");searchMenu();}switch(choose){case1:searchByAuthor();break;case2:searchByPress();break;case3:searchByISBN();break;case0:mainMenu();break;default:System.out.println("请输入0到3的整数!");searchMenu();}}}publicvoidsearchByAuthor(){ try{System.out.print("请输入要查询书的作者:");Stringsc=s.nextLine();System.out.println(); inti=0; booleanexist=false,exist1=false; System.out.println("数量"+"\t"+"书名"+"\t\t"+"作者"+"\t\t"+"出版社"+"\t\t"+"ISBN"+"\t\t"+"是否借出"); System.out.println(""); for(i=0;i<NUMBER;i++) { exist1=false; exist1=numOfInfo[i].getAuthor().equals(sc); if(exist1==true) { numOfInfo[i].disp(); System.out.println(""); exist=true; } } if(exist==false) System.out.println("没有这个序号的信息!");}catch(Exceptione){System.out.println("输入有误!");searchByAuthor();} searchMenu();}publicvoidsearchByPress(){ Stringt=""; try{System.out.print("请输入要查询的出版社名称:");Stringsc=s.nextLine();t=(String)sc;System.out.println();}catch(Exceptione){System.out.println("输入有误!");searchByPress();} inti=0; Stringv; booleanexist=false,exist1=false; System.out.println("数量"+"\t"+"书名"+"\t\t"+"作者"+"\t\t"+"出版社"+"\t\t"+"ISBN"+"\t\t"+"是否借出"); System.out.println(""); for(i=0;i<NUMBER;i++) { exist1=false; v=numOfInfo[i]
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 亚洲货物运输合同
- 油轮货物运输合同协议
- 2025年度西部数码对象存储服务合同细则
- 家居采购合同样本
- 糖尿病患者饮食指导
- 2《做负责任的人》表格式公开课一等奖创新教学设计-6
- 全国人教版初中信息技术七年级上册第二单元第7课三、应用设计模板教学设计
- 英语三年级下册Lesson 20 Hamburgers and Hot Dogs.教案
- 人教版小学二年级上册数学 第7单元 第2课时 认识时间(2) 教案
- 2025村新教学楼照明系统改造合同协议书
- 租赁活动板房协议书
- 管道燃气安全培训课件
- (四调)武汉市2025届高中毕业生四月调研考试 英语试卷(含答案)
- 国网四川省电力公司电网工程设备材料补充信息参考价2025
- 慢性病管理的护理方法试题及答案
- 2025年高级考评员职业技能等级认定考试题(附答案)
- 安徽省A10联盟2023-2024学年高一下学期期中数学试卷
- GB/T 10739-2023纸、纸板和纸浆试样处理和试验的标准大气条件
- “育鲲”轮转叶式舵机工作原理和电气控制以及故障分析
- 最新.尔雅批判与创意思考--冯林答案
- 宿州光伏玻璃项目可行性研究报告(范文模板)
评论
0/150
提交评论