西华大学数据结构与算法B综合课程设计图书馆管理系统_第1页
西华大学数据结构与算法B综合课程设计图书馆管理系统_第2页
西华大学数据结构与算法B综合课程设计图书馆管理系统_第3页
西华大学数据结构与算法B综合课程设计图书馆管理系统_第4页
西华大学数据结构与算法B综合课程设计图书馆管理系统_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数学与计算机学院课程设计说明书课 程 名 称:数据结构与算法B综合课程设计课 程 代 码: 6013799 题 目: 图书管理系统 年级/专业/班: 2011/计算机科学与技术/04班学 生 姓 名: 学 号: 开 始 时 间: 2011 年 12 月 08 日完 成 时 间: 2011 年 12 月 24 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书撰写质量(45)总 分(100)指导教师签名: 年 月 日目 录 摘要1 前言11.1 问题的提出11.2 任务与分析12.软件总体设计32.1 开发工具32.2 系统框图32.3 模块功能5 2.3.1

2、图书入库.5 2.3.2 清楚图书5 2.3.3 显示库存5 2.3.4 读者借阅.5 2.3.5 读者归还.5 2.3.6 借阅查询.53 软件界面设计63.1 控件介绍63.2 窗体63.3 文本编辑框63.4 下拉列表框63.5 密码框63.6 表格63.7 菜单栏组件74 功能详细设计84.1 界面登陆84.2 新书录入94.3 清楚图书库存104.4 图书借阅114.5 图书归还134.6 借阅显示154.7 软件使用说明155 软件测试17结 论28致 谢29参考文献30摘 要随着计算机及网络技术的飞速发展,Internet/Intranet应用在全球范围内日益普及,当今社会正快速

3、向信息化社会前进,信息自动化的作用也越来越大。从而使我们从繁杂的事务中解放出来,提高了我们的工作效率。目前学校图书馆的借阅工作部分还是手工管理,工作效率很低,并且不能及时了解图书的种类和学生们比较需求的图书等,不能更好的适应当前学生的借阅要求。手工管理还存在这许多弊端,由于不可避免的人为因素,造成数据的遗漏、误报。计算机信息化管理有着储存量大,速度快等许多优点,提供给我们的处理信息及时快捷,因此我们利用计算机提供给我们的信息对学生们的借阅过程形成一整套动态的管理。本系统将会涉及到图书馆日常管理工作的基本常见细节,诸如新图书的入库登记,图书馆所有书籍的分类管理,图书的查询,图书的借阅、退还手续的

4、登记,费旧图书的清理撤除等,本系统所要实现的这些功能基本上涵盖了图书馆的日常管理工作,基本能够满足校园图书馆的工作人员的管理需要。在对本系统的具体开发过程当中,将采用Java语言进行开发,以文本文件实现后台数据库,本系统是完全基于图形化用户界面(GUI)的单机版本。关键词:信息化 软件工程 软件生命周期 图形化用户界面AbstractThe full name of our System is: The Management Information System of Campuss Library. At present, the computer technology is develop

5、ing ever-growing, and the campuss information construction also have pushing on, by contrast, the method of management in many university library is still by man, the libraryworkers must face to the large number of books, and also face to fall into the trouble. Actually, the work can be done by the

6、computer which have a management information system. Then the heavy work will not be done by people, the libraryworkers can use computer to manage the books, and the everyday work will be easy.This is the goal which our system want to achieve finally.The principle of development to our system will b

7、e following with Software Engineering, we use the traditional model which be called Waterfall, and the course of development will be divided into six stage. We will develop the system in sequence.Our system contains many operations about librarys everyday work, such as Register New Books, Classify B

8、ooks according to their subjects, Find Books, Dispose old books, and so on, our system can finish all of the work, and can meet the requirements of the librarysworkers.During the development of our system, we use the tool of JAVA to develop it, our system is on the basis of the Access Database.1 前言

9、1.1 问题的提出首先,图书馆的管理直接关系到我们大学生如何更好的使用图书,更充分的利用现有资源学习,提高自身素质。针对当今的大学图书馆藏书越来越多,学生借书越来越频繁,图书管理较为繁琐,图书馆管理工作人员付出的工作时间越来越多,得到的效率却很低这个现状。为提高工作效率,减轻图书馆工作人员的工作负担,决定开发学校图书馆管理系统软件,以帮助更好的实现图书馆的管理,让我们能更便捷的借阅图书,让老师能花最少的时间办理好借阅图书手续。开发此图书馆管理系统软件,也是对实现数字化图书馆管理的支持,现今各大学普遍存在着一个现象,图书的借阅手续都是由专门的老师来实现办理的,每当借阅高峰期时,排队借书的场面屡见

10、不鲜,这样即耗费时间又使原本不太大的借书大厅拥挤不堪。图书馆管理系统的实现,可以着眼于数字化借阅,简化学生图书查询流程,简化图书外借登记手续,即提高借阅效率又可实现图书借阅的完整进出记录,保证图书的合理使用,让广大师生受益。1.2 任务与分析本课题主要的任务是设计一个图书管理系统,实现对图书的采编入库,清除,查找,借阅,归还以及显示功能1.基于图形用户界面(GUI)的标准“Windows” 应用程序。2.初始输入数据:自由输入。3.基本要求: (1)每种书的登记内容至少包括书号、书名、著者、现存量和总库存量等五项。 (2)由于图书管理的基本业务活动都是通过书号(即关键字)进行的,所以要用对书号

11、 索引,以获得高效率。系统应实现的基本功能有: (1)采编入库:新购入一种书,经分类和确定书号之后登记到图书帐目中去。如果这两种书在帐中已有,则只将总库存量增加。 (2)清除库存:某种书已无保留价值,将它从图书帐目中注销。 (3)借阅:如果一种书的现存量大于零,则借出一本,登记借阅者的图书证号和归还期限。 (4)归还:注销对借阅者的登记,改变该书的现存量。 (5)显示:以凹入表的形式显示B树。这个操作是为了调试和维护的目的而设置的。4.界面设计总要求 (1)操作流程简便合理,操作界面美观自然,符合用户一般操作习惯。 (2)界面简洁美观,配色和谐,比例合适,符合大多数人的审美趣向。5.菜单设置“

12、使用说明”,介绍本软件开发者、特色、各项功能以及如何使用。2.系统总体设计2.1 开发工具eclipse优点: 1,从编写、查错、编译、帮助等等各方面为Java语言贴身定做。 2,可无限扩展的强大插件功能。 3,众多公司、厂商、组织的鼎立支持。 4,开放,自由,免费。 开发环境:Win7运行环境:Win7。2.2 系统框图(1)系统组成框图:如图2-1所示图书管理系统 管理员 学生清除库存新书入库借阅查询图书归还图书借阅 图2-1 系统组成框图(2) 系统流程图: 如图2-2-1,图2-2-2所示 图2-2-1 系统流程图 图2-2-1 系统流程图2.3 模块功能2.3.1 图书入库输入编采入

13、库图书的书号,书名,著作,现存量,以及总入库量,入库成功后,将其图书信息保存在文本文档中2.3.2 清除图书输入图书的编号对其进行删除,删除成功后,将其文本文档中的现存量和中库存量置为02.3.3 显示库存罗列出所有库存图书的书号,书名,著作,现存量,以及总库存量2.3.4 读者借阅 输入所需借阅图书的编号,书名和借书日期,借阅成功后,将其借阅信息保存值文本文档中2.3.5 读者归还 输入所归还图书的书号,归还成功后,将其以前借阅信息中的借阅日期置为0-0-02.3.5 借阅查询 罗列出读者所借阅图书的记录3 人机界面设计3.1 控件介绍 控件是对数据和方法的封装。控件可以有自己的属性和方法。

14、属性是控件数据的简单访问者。事件则是控件的一些简单而可见的功能。 所有的控件都有很多属性,用于处理控件的操作 3.2 窗体(以下逐个阐述:你选用的控件的截图、特点、选用理由) 窗口JFrame一个底层容器,其他组件必须添加到底层容器中,以便借助这个底层容器和操作系统进行信息交互. 使用了菜单条,菜单与菜单项,实现窗口间的切换.3.3 文本编辑框文本框特点是允许用户在文本框中输入单行文本3.4 密码框文本密码框允许用户在密码框内输入单行密码,密码框的回显字符是*.3.5 按钮与标签在按钮上设置点击事件.3.6 表格表格以行和列的形势显示数据,允许对表格的数据进行编辑,表格的模型功能强大,灵活并易

15、于执行3.7 菜单组件(必须有菜单,在此讲述菜单组件及其设计)窗口中的菜单条,菜单,菜单项是非常熟悉的组件,菜单放在菜单条里面,菜单项放在菜单里面4 功能详细设计4.1 登录界面 用户从登录界面输入用户名与密码,输入管理员的用户与密码,并验证密码正确后,进入管理员管理板块.输入学生的用户名与密码,并验证正确后,进入学生板块.核心代码: jbn2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) System.exit(0);); jbn1.addActionListener(

16、new ActionListener()public void actionPerformed(ActionEvent e) String usernameinput = jtf1.getText();String pwdstrinput = String.valueOf(jpf.getPassword();if (usernameinput.equals(username)&& (pwdstrinput.equals(pwdstr) && true=r1.isSelected() JOptionPane.showMessageDialog(null, &quo

17、t;登陆成功!");new ListenGUI2();setVisible(false);jtf1.grabFocus();jpf.grabFocus();return; else if (usernameinput.equals(username2)&& (pwdstrinput.equals(pwdstr2) && true=r2.isSelected() JOptionPane.showMessageDialog(null, "登陆成功!");new ListenGUI1();setVisible(false);jtf1.gr

18、abFocus();jpf.grabFocus();return;else if (pwdstrinput = null | "".equals(pwdstrinput) JOptionPane.showMessageDialog(null, "密码不能为空");jpf.grabFocus();return; else if (pwdstrinput.length() < 6) JOptionPane.showMessageDialog(null, "密码不能小于6位");jpf.grabFocus();return; else

19、 JOptionPane.showMessageDialog(null, "登陆失败!"); );4.2 新书的录入 管理员输入所需录入新书的编号,书名,著作,现存量和中库存量后,点击录入,则系统自动将录入的新书信息保存在文本文档中. 用文本文档操作不方面管理员的后台管理,查看书的信息不能直接打开文本文档进行查看,而是必须进入管理界面才能进行查看.核心代码:public void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif(f.exists()FileInputStream fi;tr

20、y fi = new FileInputStream(f);ObjectInputStream oi=new ObjectInputStream(fi); bookslist=(LinkedList<Books>)oi.readObject(); fi.close(); oi.close(); Books books=new Books(); String s1=no.getText(); String s2=name.getText(); String s3=actor.getText(); String s4=save.getText(); String s5=allsave.

21、getText(); while(i<bookslist.size() Books bo=(Books)bookslist.get(i); if(s1.equals(bo.getNo()&&s2.equals(bo.getName()&&s3.equals(bo.getActor() int a,b; a=Integer.parseInt(bo.getAllsave()+Integer.parseInt(s5); b=Integer.parseInt(bo.getSave()+Integer.parseInt(s5); bo.setAllsave(Stri

22、ng.valueOf(a); bo.setSave(String.valueOf(b); break; i+; if(i=bookslist.size() books.setNo(s1); books.setName(s2); books.setActor(s3); books.setSave(s4); books.setAllsave(s5); bookslist.add(books); FileOutputStream fo=new FileOutputStream(f); ObjectOutputStream out=new ObjectOutputStream(fo); out.wri

23、teObject(bookslist); out.close(); catch (Exception ee) elsetryf.createNewFile();Books books=new Books(); books.setNo(no.getText(); books.setName(name.getText();books.setActor(actor.getText();books.setSave(save.getText();books.setAllsave(allsave.getText();bookslist.add(books);FileOutputStream fo=new

24、FileOutputStream(f);ObjectOutputStream out=new ObjectOutputStream(fo);out.writeObject(bookslist);out.close();catch(Exception e1) 4.3 清除图书库存管理员输入所需删除图书的编号,如库存中有此编号的书,则将此书的现存量与总库存量赋值为零.主要用到的数据结构是链表,方便对其的删除操作.其确实是从链表的头依次遍历,直到找到所需的图书编号或者到链表尾部.这样遍历的时间效率比较低,对于大量的图书需要遍历的话,此算法的时间效率低核心代码:public void actionPe

25、rformed(ActionEvent e) if(file.exists()try fi = new FileInputStream(file); ObjectInputStream oi=new ObjectInputStream(fi); bookslist1=(LinkedList<Books>)oi.readObject(); fi.close(); oi.close(); Books books=new Books(); String s=no.getText(); while(i<bookslist1.size() Books bo=(Books)booksli

26、st1.get(i); if(s.equals(bo.getNo() int a,b; a=0; b=0; bo.setAllsave(String.valueOf(a); bo.setSave(String.valueOf(b); JOptionPane.showMessageDialog(null, "删除成功!"); break; i+; FileOutputStream fo=new FileOutputStream(file); ObjectOutputStream out=new ObjectOutputStream(fo); out.writeObject(b

27、ookslist1); fo.close(); out.close(); catch (Exception ee) 4.4 图书的借阅学生输入所需借阅图书的编号,书名和借阅日期,如果此书的现存量大于零,则将其现存量减一,读者借书成功.并且在读者信息中记录读者借阅了此图书,将借阅信息写入文本文件.主要的数据结构是链表,从链表的头依次遍历,直到找到所需的图书编号或者到链表尾部.这样遍历的时间效率比较低,对于大量的图书需要遍历的话,此算法的时间效率低核心代码:public void actionPerformed(ActionEvent e) try FileInputStream fi=new F

28、ileInputStream(file); ObjectInputStream oi=new ObjectInputStream(fi); bookslist1=(LinkedList<Books>)oi.readObject(); fi.close(); oi.close(); Books books=new Books(); books.setNo(rno.getText(); while(i<bookslist1.size() Books bo=(Books)bookslist1.get(i); if(books.getNo().equals(bo.getNo()&am

29、p;&Integer.parseInt(bo.getSave()>0) int a; a=Integer.parseInt(bo.getSave()-1; bo.setSave(String.valueOf(a); JOptionPane.showMessageDialog(null, "借阅成功!"); break; if(Integer.parseInt(bo.getSave()=m&&books.getNo().equals(bo.getNo() JOptionPane.showMessageDialog(null, "此书全部

30、借出!"); System.exit(0); i+; if(i=bookslist1.size() JOptionPane.showMessageDialog(null, "此书图书馆无库存!"); System.exit(0); FileOutputStream fo=new FileOutputStream(file); ObjectOutputStream out=new ObjectOutputStream(fo); out.writeObject(bookslist1); out.close(); if(file1.exists() try FileIn

31、putStream fi1 = new FileInputStream(file1); ObjectInputStream oi1=new ObjectInputStream(fi1); readerlist1=(LinkedList<Reader>)oi1.readObject(); fi1.close(); oi1.close(); Reader readers=new Reader(); String s1=rno.getText(); String s2=rname.getText(); String s3=borrowdate.getText(); readers.set

32、Rno(s1); readers.setRname(s2); readers.setBorrowdate(s3); readerlist1.add(readers); FileOutputStream fo1=new FileOutputStream(file1);ObjectOutputStream out1=new ObjectOutputStream(fo1);out1.writeObject(readerlist1);out1.close(); catch(Exception ee) elsetryfile1.createNewFile(); Reader readers=new Re

33、ader(); String s1=rno.getText(); String s2=rname.getText(); String s3=borrowdate.getText(); readers.setRno(s1); readers.setRname(s2); readers.setBorrowdate(s3); readerlist1.add(readers); FileOutputStream fo1=new FileOutputStream(file1);ObjectOutputStream out1=new ObjectOutputStream(fo1);out1.writeOb

34、ject(readerlist1);out1.close();catch(Exception e1) catch(Exception ee)4.5 图书的归还学生输入需要归还图书的编号,如果归还成功则将读者的借书日期置为0-0-0.主要的数据结构是链表,从链表的头依次遍历,直到找到所需的归还图书的编号或者到链表尾部.这样遍历的时间效率比较低,对于大量的图书需要遍历的话,此算法的时间效率低核心代码:public void actionPerformed(ActionEvent e) try FileInputStream fi=new FileInputStream(file); ObjectI

35、nputStream oi=new ObjectInputStream(fi); bookslist1=(LinkedList<Books>)oi.readObject(); fi.close(); oi.close(); Books books=new Books(); books.setNo(rno.getText(); while(i<bookslist1.size() Books bo=(Books)bookslist1.get(i); if(books.getNo().equals(bo.getNo() int a; a=Integer.parseInt(bo.ge

36、tSave()+1; bo.setSave(String.valueOf(a); JOptionPane.showMessageDialog(null, "归还成功!"); i+; FileOutputStream fo=new FileOutputStream(file); ObjectOutputStream out=new ObjectOutputStream(fo); out.writeObject(bookslist1); out.close(); FileInputStream fi1 = new FileInputStream(file1);ObjectInp

37、utStream oi1=new ObjectInputStream(fi1); readerlist1=(LinkedList<Reader>)oi1.readObject(); fi1.close(); oi1.close(); Reader readers=new Reader(); readers.setRno(rno.getText(); while(j<readerlist1.size() Reader bo1=(Reader)readerlist1.get(j); if(readers.getRno().equals(bo1.getRno() bo1.setBo

38、rrowdate("0-0-0"); j+; FileOutputStream fo1=new FileOutputStream(file1);ObjectOutputStream out1=new ObjectOutputStream(fo1);out1.writeObject(readerlist1);out1.close(); catch(Exception ee)4.6 借阅显示 显示出所有学生借阅的书籍,并能得知这些书籍时候归还. 核心代码:public void actionPerformed(ActionEvent e) if(e.getSource()=显示

39、) try FileInputStream fi=new FileInputStream(file); ObjectInputStream oi=new ObjectInputStream(fi); LinkedList<Reader> readerList=(LinkedList<Reader>)oi.readObject(); fi.close(); oi.close(); int length=readerList.size(); 表格单元=new Objectlength3; table=new JTable(表格单元,列名); pCenter.removeAl

40、l(); pCenter.add("显示",new JScrollPane(table); pCenter.validate(); Iterator<Reader> iter=readerList.iterator(); int i=0; while(iter.hasNext() Reader read =iter.next(); 表格单元i0= read.getRno(); 表格单元i1=read.getRname(); 表格单元i2=read.getBorrowdate(); i+; table.repaint(); catch(Exception ee) 4.7 软件使

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论