面向对象-软件工程系课程设计-图书管理系统报告_第1页
面向对象-软件工程系课程设计-图书管理系统报告_第2页
面向对象-软件工程系课程设计-图书管理系统报告_第3页
面向对象-软件工程系课程设计-图书管理系统报告_第4页
面向对象-软件工程系课程设计-图书管理系统报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

面向对象_软件工程系课程设计_图书管理系统报告一、引言1.1项目背景随着信息技术的飞速发展,图书管理工作的信息化需求日益增长。传统的手工图书管理方式效率低下、易出错,已难以满足现代图书馆的管理需求。为了提高图书管理的效率和准确性,实现图书信息的快速查询、借阅登记、归还管理等功能,开发一个功能完善、操作简便的图书管理系统具有重要的现实意义。

1.2项目目标本次课程设计旨在开发一个面向对象的图书管理系统,实现以下目标:1.实现图书信息的录入、查询、修改和删除功能。2.完成读者信息的管理,包括读者信息的添加、查询、修改和删除。3.支持图书的借阅和归还操作,记录借阅时间和归还时间,并能进行逾期提醒。4.提供简单的统计功能,如统计图书数量、读者数量、借阅情况等。5.具有良好的用户界面,操作方便、快捷,易于使用。

1.3项目概述本图书管理系统采用面向对象的编程思想进行设计和实现,使用Java语言作为开发工具,采用MySQL数据库存储数据。系统主要包括图书管理模块、读者管理模块、借阅管理模块和统计查询模块等功能模块,各模块之间相互协作,共同完成图书管理系统的各项任务。

二、需求分析2.1功能需求1.图书管理能够添加新的图书信息,包括图书编号、书名、作者、出版社、出版日期、价格、库存数量等。可以根据图书编号、书名等条件查询图书信息。支持对图书信息的修改和删除操作。2.读者管理允许添加读者信息,如读者编号、姓名、性别、联系方式、注册日期等。能够根据读者编号、姓名等查询读者信息。可对读者信息进行修改和删除。3.借阅管理实现图书的借阅功能,记录借阅图书的读者编号、图书编号、借阅日期。支持图书的归还操作,记录归还日期,并自动计算逾期天数(如有逾期)。能够查询借阅记录,包括已借阅图书的读者信息、图书信息、借阅日期和归还日期等。4.统计查询统计图书总数、不同类别图书数量。统计读者总数。按时间段统计借阅次数。

2.2性能需求1.系统响应时间应在合理范围内,对于一般的操作(如查询、添加等),响应时间不超过3秒。2.系统应具备较高的稳定性,在并发操作较少的情况下,能够连续运行较长时间而不出现崩溃现象。3.数据准确性要求高,确保图书信息、读者信息和借阅记录等数据的准确性和一致性。

2.3界面需求1.系统界面应简洁美观,布局合理,易于用户操作。2.提供清晰的菜单和导航栏,方便用户快速找到所需功能。3.操作提示信息明确,当用户进行某项操作时,应给出相应的提示,告知操作结果或下一步操作要求。

三、总体设计3.1系统架构设计本图书管理系统采用分层架构设计,主要包括表示层、业务逻辑层和数据访问层,各层之间相互独立又相互协作,架构图如下:

```++|表示层|++|界面组件|++|业务逻辑层|++|业务逻辑处理类|++|数据访问层|++|数据访问接口及实现类|++|数据库|++```

3.2模块划分1.图书管理模块:负责图书信息的录入、查询、修改和删除操作。2.读者管理模块:实现读者信息的管理功能,包括添加、查询、修改和删除。3.借阅管理模块:处理图书的借阅和归还业务,记录借阅和归还信息。4.统计查询模块:提供图书数量、读者数量、借阅情况等统计查询功能。

3.3数据库设计1.图书表(books)图书编号(book_id):主键,唯一标识图书。书名(title):图书的名称。作者(author):图书的作者。出版社(publisher):图书的出版社。出版日期(publication_date):图书的出版时间。价格(price):图书的价格。库存数量(stock_quantity):图书的库存数量。

2.读者表(readers)读者编号(reader_id):主键,唯一标识读者。姓名(name):读者的姓名。性别(gender):读者的性别。联系方式(contact):读者的联系方式。注册日期(registration_date):读者的注册时间。

3.借阅记录表(borrows)借阅记录编号(borrow_id):主键,唯一标识借阅记录。读者编号(reader_id):外键,关联读者表。图书编号(book_id):外键,关联图书表。借阅日期(borrow_date):图书的借阅时间。归还日期(return_date):图书的归还时间。

四、详细设计4.1图书管理模块1.图书添加功能界面:提供一个图书信息录入界面,用户输入图书编号、书名、作者、出版社、出版日期、价格、库存数量等信息。业务逻辑:检查输入信息的合法性,如图书编号是否唯一,价格是否为正数等。然后将图书信息插入到图书表(books)中。数据访问:调用数据访问层的方法,执行SQL插入语句。

2.图书查询功能界面:提供查询条件输入框,用户可以根据图书编号、书名等条件进行查询。业务逻辑:根据用户输入的条件构建查询语句。数据访问:调用数据访问层的方法,执行SQL查询语句,并返回查询结果。

3.图书修改功能界面:显示要修改的图书信息,用户可修改相应字段。业务逻辑:检查修改后的信息合法性,然后更新图书表(books)中相应的记录。数据访问:调用数据访问层的方法,执行SQL更新语句。

4.图书删除功能界面:显示要删除的图书信息,用户确认删除。业务逻辑:检查该图书是否有未归还的借阅记录,如有则提示不能删除。然后删除图书表(books)中相应的记录。数据访问:调用数据访问层的方法,执行SQL删除语句。

4.2读者管理模块1.读者添加功能界面:提供读者信息录入界面,用户输入读者编号、姓名、性别、联系方式、注册日期等信息。业务逻辑:检查输入信息的合法性,如读者编号是否唯一等。然后将读者信息插入到读者表(readers)中。数据访问:调用数据访问层的方法,执行SQL插入语句。

2.读者查询功能界面:提供查询条件输入框,用户可以根据读者编号、姓名等条件进行查询。业务逻辑:根据用户输入的条件构建查询语句。数据访问:调用数据访问层的方法,执行SQL查询语句,并返回查询结果。

3.读者修改功能界面:显示要修改的读者信息,用户可修改相应字段。业务逻辑:检查修改后的信息合法性,然后更新读者表(readers)中相应的记录。数据访问:调用数据访问层的方法,执行SQL更新语句。

4.读者删除功能界面:显示要删除的读者信息,用户确认删除。业务逻辑:检查该读者是否有未归还的借阅记录,如有则提示不能删除。然后删除读者表(readers)中相应的记录。数据访问:调用数据访问层的方法,执行SQL删除语句。

4.3借阅管理模块1.图书借阅功能界面:提供图书编号和读者编号输入框,用户输入要借阅的图书编号和读者编号。业务逻辑:检查图书库存数量是否大于0,读者是否有未归还的逾期图书等。然后记录借阅信息到借阅记录表(borrows)中,并更新图书表的库存数量。数据访问:调用数据访问层的方法,执行SQL插入语句和更新语句。

2.图书归还功能界面:提供借阅记录编号输入框,用户输入要归还的借阅记录编号。业务逻辑:根据借阅记录编号查询借阅记录,检查是否逾期,计算逾期天数(如有逾期)。然后更新借阅记录表的归还日期,并更新图书表的库存数量。数据访问:调用数据访问层的方法,执行SQL更新语句。

3.借阅记录查询功能界面:提供查询条件输入框,用户可以根据读者编号、图书编号、时间段等条件进行查询。业务逻辑:根据用户输入的条件构建查询语句。数据访问:调用数据访问层的方法,执行SQL查询语句,并返回查询结果。

4.4统计查询模块1.图书数量统计功能业务逻辑:执行SQL查询语句,统计图书表中的记录数量。数据访问:调用数据访问层的方法,返回统计结果。

2.读者数量统计功能业务逻辑:执行SQL查询语句,统计读者表中的记录数量。数据访问:调用数据访问层的方法,返回统计结果。

3.借阅情况统计功能业务逻辑:根据用户选择的时间段,执行SQL查询语句,统计该时间段内的借阅次数等信息。数据访问:调用数据访问层的方法,返回统计结果。

五、编码实现5.1关键类设计1.Book类包含图书的属性,如图书编号、书名、作者等。提供相应的getters和setters方法。

```javapublicclassBook{privateintbookId;privateStringtitle;privateStringauthor;//其他属性及方法省略publicintgetBookId(){returnbookId;}publicvoidsetBookId(intbookId){this.bookId=bookId;}publicStringgetTitle(){returntitle;}publicvoidsetTitle(Stringtitle){this.title=title;}publicStringgetAuthor(){returnauthor;}publicvoidsetAuthor(Stringauthor){this.author=author;}}```

2.Reader类包含读者的属性,如读者编号、姓名、性别等。提供相应的getters和setters方法。

```javapublicclassReader{privateintreaderId;privateStringname;privateStringgender;//其他属性及方法省略publicintgetReaderId(){returnreaderId;}publicvoidsetReaderId(intreaderId){this.readerId=readerId;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){=name;}publicStringgetGender(){returngender;}publicvoidsetGender(Stringgender){this.gender=gender;}}```

3.Borrow类包含借阅记录的属性,如借阅记录编号、读者编号、图书编号等。提供相应的getters和setters方法。

```javapublicclassBorrow{privateintborrowId;privateintreaderId;privateintbookId;privateDateborrowDate;privateDatereturnDate;//其他属性及方法省略publicintgetBorrowId(){returnborrowId;}publicvoidsetBorrowId(intborrowId){this.borrowId=borrowId;}publicintgetReaderId(){returnreaderId;}publicvoidsetReaderId(intreaderId){this.readerId=readerId;}publicintgetBookId(){returnbookId;}publicvoidsetBookId(intbookId){this.bookId=bookId;}publicDategetBorrowDate(){returnborrowDate;}publicvoidsetBorrowDate(DateborrowDate){this.borrowDate=borrowDate;}publicDategetReturnDate(){returnreturnDate;}publicvoidsetReturnDate(DatereturnDate){this.returnDate=returnDate;}}```

5.2部分代码示例1.图书添加方法

```javapublicclassBookManager{publicvoidaddBook(Bookbook){//数据访问层操作BookDaobookDao=newBookDao();bookDao.addBook(book);}}```

```javapublicclassBookDao{publicvoidaddBook(Bookbook){Stringsql="INSERTINTObooks(book_id,title,author,publisher,publication_date,price,stock_quantity)VALUES(?,?,?,?,?,?,?)";try(Connectionconn=DBUtil.getConnection();PreparedStatementpstmt=conn.prepareStatement(sql)){pstmt.setInt(1,book.getBookId());pstmt.setString(2,book.getTitle());pstmt.setString(3,book.getAuthor());//设置其他参数pstmt.executeUpdate();}catch(SQLExceptione){e.printStackTrace();}}}```

2.图书查询方法

```javapublicclassBookManager{publicList<Book>queryBooks(Stringcondition){BookDaobookDao=newBookDao();returnbookDao.queryBooks(condition);}}```

```javapublicclassBookDao{publicList<Book>queryBooks(Stringcondition){Stringsql="SELECT*FROMbooks"+condition;List<Book>books=newArrayList<>();try(Connectionconn=DBUtil.getConnection();PreparedStatementpstmt=conn.prepareStatement(sql);ResultSetrs=pstmt.executeQuery()){while(rs.next()){Bookbook=newBook();book.setBookId(rs.getInt("book_id"));book.setTitle(rs.getString("title"));book.setAuthor(rs.getString("author"));//设

温馨提示

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

评论

0/150

提交评论