收藏 分销(赏)

图书馆管理系统总体设计与部分代码设计.doc

上传人:天**** 文档编号:2627194 上传时间:2024-06-03 格式:DOC 页数:31 大小:605.50KB 下载积分:12 金币
下载 相关 举报
图书馆管理系统总体设计与部分代码设计.doc_第1页
第1页 / 共31页
图书馆管理系统总体设计与部分代码设计.doc_第2页
第2页 / 共31页


点击查看更多>>
资源描述
题 目:图书馆管理系统总体设计与部分代码设计 专 业: 学 号: 姓 名: 成 绩: 指导教师: 31 目 录 一.总体设计 3 1.设计过程 3 2、设计原理 3 1、 工具---word绘图+代码流程图分析工具 4 Bookadd.java 5 Bookdelete.java 6 Bookquery.java 7 BookUpdata.java 9 Borrow,java 10 Login.java 12 ReaderAdd.java 13 Readerdelete.java 14 Readerquery.java 15 ReaderUpdata.java 16 ShowMian.java 17 UpdataPassword.java 17 Book.java 18 Bookselect.java 19 GlobalVar.java 19 IfBorrowBack.java 19 DbOp.java 20 Reader.java 21 ReaderSelect.java 21 二. 部分代码 22 a.书籍归还// Back.java 22 三. 感想体会 28 一.总体设计 1.设计过程 a、系统应该如何实现?将划分出组成系统的物理元素,例如程序、文件、数据库等。 数据库有图书,读者, 用户信息。 程序有 用户登录程序,修改密码程序;读者查询程序;图书添加,删除,修改,查询;读者信息添加,删除,修改,借书,还书。 b、设计软件的总体结构,即确定系统中的每个程序是有哪些模块组成的,每个模块的功能以及模块和模块之间的借口、调用关系等。但所以这些都不要求涉及模块内部过程的细节。 用户登录模块由修改密码模块,登录界面模块组成,可调用读者模块,图书模块进行查询。 图书模块由查询,添加,删除,修改组成,可调用读者模块进行查询是否可借书,是否还书。 读者模块由读者信息添加,删除,修改,借书,还书组成,可调用图书模块。 2、设计原理 基于Java语言、Access数据库的开发软件。 Java是一种编程语言,拥有跨平台、面向对象、泛型编程的特性。Java编程语言的风格十分接近C++语言。继承了C++语言面向对象技术的核心,java舍弃了C++语言中容易引起错误的指针,改以引用取代,同时移除原C++与原理运算符重载,也移除多重继承特性,改用接口取代,增加垃圾回收器功能。在Java SE 1.5版本中引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱特性。所以Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言 Microsoft Office Access(前名Microsoft Access)是微软发布的关系数据库管理系统。通过使用Access Basic可以增加应用程序的执行速度,减少编码量,同时也减少在为Microsoft Windows应用程序接口编程时、在开发应用程序中遇到的问题的技术。谨慎地使用变量和它所占用的存储空间能有效地减少一个应用程序所消耗的资源,同时也全面提高了它的性能。 因java可跨平台的特性,access的简单易用,本系统使用java,access进行开发图书管理,将上述所有模块进行实现。以下数据流程图划分模块的功能。 1、 工具---word绘图+代码流程图分析工具 Back.java 创建日期变量,其内容为当前日期,使还书按钮有效,填写还书记录 如果图书编号或读者编号两者均为空,或者有一个为空,则返回 按编号查询图书,结果存入book对象中 按编号查询读者,结果存入reader对象中 查询指定读者是否借阅过指定图书,且未归还 如果查询到结果,将其显示在各文本框中 如果查询到结果,将其显示在各文本框中 Bookadd.java 异常 出版时间格式错误 异常 库存数量和价格错误,应为数字 清空全部文本框 异常 无法正常读取数据库 判断Book表中是否存在指定编号的图书,如果存在,返回true,否则,返回false 图书添加成功 清空全部文本框 检查日期是否有效。如果日期无效,则会 产生ParseException异常 将记录保存到book表中 如果图书编号重复,则记录无效,需修改图书编号 如果图书编号为空,则终止保存记录操作 Bookdelete.java 图书编号有误,查无此书 清空全部文本框 如果查询到结果,将其显示在各文本框中 按编号查询图书,结果存入book对象中 如果图书编号为空,则查询操作终止 图书编号不能为空 提示 图书信息删除成功 图书信息删除失败 如果图书编号为空,则删除操作终止 Bookquery.java 如果出版社不空,生成sql3字句 如果书名和作者有一项不为空 如果出版日期不空,生成sql4字句 如果书名、作者或出版社有一项不为空 如果作者不空,生成sql2字句 如果书名不为空 创建一条基本的SQL语句,表示选出表中全部记录 如果书名不空,生成sql1字句 创建一个表格 出版时间格式错误 数据库不存在,或存在错误 将查询结果赋予Book数组 执行查询 如果已设置任意一项条件,则修改SQL语句 为了便于调试程序,特别创建main方法 BookUpdata.java 清空全部文本框 出版时间格式错误 价格或库存数量错误,应为数字 数据有误,图书信息修改失败 图书信息修改成功 清空全部文本框 程序用于检查日期是否有效 如果查询到结果,将其显示在各文本框中 保存修改的记录 如果图书编号为空,则终止保存记录操作 图书编号有误,查无此书 按编号查询图书,结果存入book对象中 如果图书编号为空,则查询操作终止 Borrow,java 统计读者所借图书数量 查询指定读者是否已借过指定图书且未归还 读者编号有误,查无此人 按编号查询读者,结果存入reader对象中 如果查询到结果,将其显示在各文本框中 图书已无库存,无法借阅 重新初始化各参数并禁止借出按钮 图书编号有误,查无此书 按编号查询图书,结果存入book对象中 如果查询到结果,将其显示在各文本框中 图书和读者查询 如果图书编号或读者编号两者均为空,或者有一个为空,则返回 初始化各参数项并禁止借出按钮 增加main()方法,主要为了调试程序界面 数据库统计失败 填写借出图书记录 统计某个读者当前已借图书且未归还的数量 该读者借书过多,无法继续借阅 如果读者已借图书尚未超出其允许最大借书量,则允许其继续借阅所选图书 Login.java 记录登录的用户名 调用主程序 只有管理员才能使用"基础管理"和"借阅管理"菜单 释放登录窗体 如果此用户存在,则记录其状态(否:不是管理员,是:是管理员) 核对用户名和密码 如果用户名或密码任一为空,则终止后续操作 异常 用户数据库有误 ReaderAdd.java 判断Reader表中是否存在指定编号的读者,如果存在,返回true,否则,返回false 异常;最大可借天数错误,应为整数 读者添加成功; 清空全部文本框 读者编号重复 如果读者编号重复,则记录无效,需修改读者编号 如果读者编号为空,则终止保存记录操作 清空全部文本框 Readerdelete.java 清空全部文本框 异常 读者编号有误,查无此人 按编号查询读者,结果存入reader对象中 如果查询到结果,将其显示在各文本框中 读者编号不能为空 异常 读者编号有误,查无此人 读者信息删除成功 清空全部文本框 如果读者编号为空,则终止删除操作 Readerquery.java 如果已设置任意一项条件,则修改SQL语句 执行查询 将查询结果赋予Book数组 创建一个表格 异常:数据库不存在,或存在错误 如果作者不空,生成sql2字句 如果读者姓名不空,生成sql1字句 创建一条基本的SQL语句,表示选出表中全部记录 ReaderUpdata.java 清空全部文本框 如果读者编号为空,则终止保存记录操作 修改读者信息 最大可借数或最大可借 如果读者编号为空,则终止查询操作 按编号查询读者,结果存入reader对象中 如果查询到结果,将其显示在各文本框中 ShowMian.java 如果不是管理员,则禁止用户维护图书信息和读者信息 以及禁止进行借阅管理,即只能查询 UpdataPassword.java 修改密码 如果两个密码输入框中输入的内容不一致,则显示错误提示信息并返回 如果两个密码输入框中有一个为空,则显示错误提示信息并返回 Book.java 获得书的ID号 获得书的书名 获得书的类型 获得书的作者 获得书的翻译者 获得书的出版社 获得书的发行日期 获得书的股价 获得书的价格 并全部返回 Bookselect.java 异常 无法正常读取数据库 按图书编号查询,查询结果保存在Book类的对象中 GlobalVar.java 保存登录用户名 IfBorrowBack.java 查指定读者是否借过指定图书且未归还 DbOp.java 关闭数据库 执行数据库更新操作。如果有问题,则返回-1 执行数据库查询工作。如果出现异常,返回null 构造方法。如果数据库未打开,则通过创建连接打开数据库 Reader.java 获得读者的ID号 获得读者的名字 获得读者的类型 获得读者的性别 获得读者最大借书数 获得读者的还书日期 并全部返回 ReaderSelect.java 按读者编号查询,结果保存在Reader类的对象中 二. 部分代码 a.书籍归还// Back.java package MainPro; import java.awt.*; import java.awt.event.*; import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.JOptionPane; import PublicModule.*; public class Back extends Frame { private static final long serialVersionUID = -1036076990599464079L; String SepLine = "-------------------------------------------------"; Label lbbookid = new Label("图书编号"); Label lbreaderid = new Label("读者编号"); TextField tf_bookid = new TextField(); TextField tf_readerid = new TextField(); Button queryBtn = new Button("查询"); Label lbbookinfo = new Label(SepLine + "图书信息" + SepLine); Label lbbookname = new Label("图书名称:"); Label tf_bookname = new Label("xx"); Label lbauthor = new Label("作者:"); Label tf_author = new Label("xx"); Label lbpublisher = new Label("出版社:"); Label tf_publisher = new Label("xx"); Label lbpublish_time = new Label("出版时间:"); Label tf_publish_time = new Label("xx"); Label lbprice = new Label("定价:"); Label tf_price = new Label("xx"); Label lbstock = new Label("库存数量:"); Label tf_stock = new Label("xx"); Label lbreaderinfo = new Label(SepLine + "读者信息" + SepLine); Label lbreadername = new Label("读者姓名:"); Label tf_readername = new Label("xx"); Label lbreadertype = new Label("读者类型:"); Label tf_readertype = new Label("xx"); Label lbmax_num = new Label("最大可借数:"); Label tf_max_num = new Label("xx"); Label lbdays_num = new Label("最大可借天数:"); Label tf_days_num = new Label("xx"); Label lbbackinfo = new Label(SepLine + "还书信息" + SepLine); Label lbback_date = new Label("还书日期:"); Label tf_back_date = new Label("xx"); Button backBtn = new Button("还书"); Button closeBtn = new Button("关闭"); public Back() { setLayout(null); setTitle("还回图书"); setSize(500, 310); this.setForeground(Color.BLACK); // 设置前景色为黑色 lbbookid.setBounds(30, 40, 50, 20);// 图书编号 tf_bookid.setBounds(90, 40, 90, 20); lbreaderid.setBounds(200, 40, 50, 20);// 读者编号 tf_readerid.setBounds(260, 40, 90, 20); queryBtn.setBounds(370, 40, 80, 20); // 查询按钮 lbbookinfo.setBounds(30, 70, 440, 20); // 图书信息提示条 lbbookname.setBounds(30, 90, 60, 20); // 图书名称 tf_bookname.setBounds(90, 90, 200, 20); lbauthor.setBounds(310, 90, 60, 20); // 作者 tf_author.setBounds(370, 90, 90, 20); lbpublisher.setBounds(30, 110, 60, 20);// 出版社 tf_publisher.setBounds(90, 110, 200, 20); lbpublish_time.setBounds(310, 110, 60, 20);// 出版时间 tf_publish_time.setBounds(370, 110, 90, 20); lbprice.setBounds(30, 130, 60, 20); // 定价 tf_price.setBounds(90, 130, 200, 20); lbstock.setBounds(310, 130, 60, 20); // 库存数量 tf_stock.setBounds(370, 130, 90, 20); lbreaderinfo.setBounds(30, 150, 440, 20); // 读者信息提示条 lbreadername.setBounds(30, 170, 60, 20); // 读者姓名 tf_readername.setBounds(90, 170, 90, 20); lbreadertype.setBounds(310, 170, 60, 20); // 读者类型 tf_readertype.setBounds(370, 170, 90, 20); lbmax_num.setBounds(30, 190, 75, 20); // 最大可借数 tf_max_num.setBounds(105, 190, 90, 20); lbdays_num.setBounds(310, 190, 85, 20); // 最大可借天数 tf_days_num.setBounds(395, 190, 70, 20); lbbackinfo.setBounds(30, 210, 440, 20); // 还书信息提示条 lbback_date.setBounds(30, 230, 60, 20);// 还书日期 tf_back_date.setBounds(90, 230, 100, 20); backBtn.setBounds(160, 260, 80, 25);// 还书按钮 backBtn.setEnabled(false); // 开始时禁用还书按钮 closeBtn.setBounds(260, 260, 80, 25);// 关闭按钮 queryBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { btn_querywActionPerformed(e); } }); backBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { btn_backActionPerformed(e); } }); closeBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setForeground(Color.BLACK); // 设置前景色为黑色 dispose(); // 关闭窗体 } }); /* 关闭窗口*/ this.addWindowListener(new WindowAdapter() { // 重写windowClosing()方法 public void windowClosing(WindowEvent e) { setForeground(Color.BLACK); // 设置前景色为黑色 dispose(); // 关闭窗体 } }); add(lbbookid); add(lbreaderid); add(queryBtn); add(lbbookinfo); add(lbbookname); add(lbauthor); add(lbpublisher); add(lbpublish_time); add(lbprice); add(lbstock); add(lbreaderinfo); add(lbreadername); add(lbreadertype); add(lbmax_num); add(lbdays_num); add(lbbackinfo); add(lbback_date); add(backBtn); add(closeBtn); setLocationRelativeTo(null); // 使窗体在屏幕上居中放置 setVisible(true); // 使窗体可见 setForeground(Color.RED); // 设置前景色为红色 add(tf_bookid); add(tf_readerid); add(tf_bookname); add(tf_author); add(tf_publisher); add(tf_publish_time); add(tf_price); add(tf_stock); add(tf_readername); add(tf_readertype); add(tf_max_num); add(tf_days_num); add(tf_back_date); } // 图书和读者查询 private void btn_querywActionPerformed(ActionEvent e) { String bookid = tf_bookid.getText(); String readerid = tf_readerid.getText(); // 如果图书编号或读者编号两者均为空,或者有一个为空,则返回 if (bookid.equals("") || readerid.equals("")) { JOptionPane.showMessageDialog(null, "图书编号和读者编号均不能为空!"); init(); // 重新初始化各参数并禁止还书按钮 return; } // 按编号查询图书,结果存入book对象中 Book book = BookSelect.SelectBookById(bookid); // 如果查询到结果,将其显示在各文本框中 if (book != null) { tf_bookname.setText(book.getBookname()); tf_author.setText(book.getAuthor()); tf_publisher.setText(book.getPublisher()); tf_publish_time.setText(book.getPublish_time().toString()); tf_price.setText(String.valueOf((book.getPrice()))); tf_stock.setText(String.valueOf(book.getStock())); } else { JOptionPane.showMessageDialog(null, "图书编号有误,查无此书!"); init(); // 重新初始化各参数并禁止还书按钮 return; } // 按编号查询读者,结果存入reader对象中 Reader reader = ReaderSelect.selectReaderById(readerid); // 如果查询到结果,将其显示在各文本框中 if (reader != null) { tf_readername.setText(reader.getReadername()); tf_readertype.setText(reader.getReadertype()); tf_max_num.setText(String.valueOf(reader.getMax_num())); tf_days_num.setText(String.valueOf(reader.getDays_num())); } else { JOptionPane.showMessageDialog(null, "读者编号有误,查无此人!"); init(); // 重新初始化各参数并禁止还书按钮 return; } // 查询指定读者是否借阅过指定图书,且未归还 if (!IfBorrowBack.findbook(bookid,readerid)){ JOptionPane.showMessageDialog(null, "该读者没有借过此种图书!"); init(); // 重新初始化各参数并禁止还书按钮 return; } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 创建日期变量,其内容为当前日期 Date currentdate = new Date(); // 将日期按指定格式输出 String borrowdate = sdf.format(currentdate); tf_back_date.setText(borrowdate); backBtn.setEnabled(true); // 使还书按钮有效 } // 填写还书记录 private void btn_backActionPerformed(ActionEvent e) { String sql; String bookid = tf_bookid.getText(); String readerid = tf_readerid.getText(); String backdate = tf_back_date.getText(); // 更新borrow表记录 sql = "update borrow set if_back='是',back_date='"; sql = sql + backdate + "' where "; sql = sql + " book_id='" + bookid + "' and "; sql = sql + "reader_id='" + readerid + "' and "; sql = sql + "if_back='否'"; DbOp.executeUpdate(sql); // 将图书库存数量加 int istock = Integer.parseInt(tf_stock.getText()) + 1; String cstock = String.valueOf(istock); // 更新画面中的图书库存数量 tf_stock.setText(cstock); // 更新数据库中的图书库存数量 sql = "update book set stock='" + cstock; sql = sql + "' where id='" + bookid + "'"; DbOp.executeUpdate(sql); JOptionPane.showMessageDialog(null, "还书成功!"); init(); // 重新初始化各参数并禁止还书按钮 } // 初始化各参数项并禁止还书按钮 private void init() { tf_bookname.setText("xx"); tf_author.setText("xx"); tf_publisher.setText("xx"); tf_publish_time.setText("xx"); tf_price.setText("xx"); tf_stock.setText("xx"); tf_readername.setText("xx"); tf_readertype.setText("xx"); tf_max_num.setText("xx"); tf_days_num.setText("xx"); tf_back_date.setText("xx"); backBtn.setEnabled(false); // 禁止还书按钮 } // 增加main()方法,主要为了调试程序界面 public static void main(String[] args) { new Back(); } } 三. 感想体会 通过java程序,总体设计的编写,对软件开发有了深刻的了解。总体设计中,对于流程图的制作也熟练了点,最初是不太了解软件的使用而困难了点,过程艰难,结果是学好了流程图的制作。根据功能分好模块,对后来的功能实现,设计有了明确的方向,编程程序也明确了功能,接口,易于实现。 这次经验有利于以后的软件开发过程中出现的问题,比如技术是否可实现,经济是否可盈利,分工合作是否明确等等。 目 录 一.总体设计 3 1.设计过程 3 2、设计原理 3 1、 工具---word绘图+代码流程图分析工具 4 Bookadd.java 5 Bookdelete.java 6 Bookquery.java 7 BookUpdata.java 9 Borrow,java 10 Login.java 12 ReaderAdd.java 13 Readerdelete.java 14 Readerquery.java 15 ReaderUpdata.java 16 ShowMian.java 17 UpdataPassword.java 17 Book.java 18 Bookselect.java 19 GlobalVar.java 19 IfBorrowBack.java 19 DbOp.java 20 Reader.java 21 ReaderSelect.java 21 二. 部分代码 22 a.书籍归还// Back.java 22 三. 感想体会 28 目 录 第一章 总 论 4 1.1 项目概况 4 1.2 编制依据 5 1.3 项目建设内容及规模 5 1.4 项目投资概算及资金筹措 14 1.5 产品方案 15 1.6 原材料及动力 16 1.7 主要技术经济指标 17 1.8 项目实施进度 18 1.9 研究结论 18 第二章 项目建设背景和必要性 19 2.1 项目建设背景 19 2.2 项目建设必要性 20 第三章 市场分析和预测 22 3.1 市场现状 22 3.2 **县市场 23 3.3 全国市场 23 3.4 鸡肉市场分析 24 3.5 鸡蛋市场分析 24 3.6 有机肥市场分析 24 3.7 销售预测 25 第四章 项目区概况 26 4.1 项目区基本情况 26 4.2 项目区畜牧业生产现状 27 4.3 水、电、路、通讯、技术等条件 27 第五章 项目建设方案 29 5.1 项目建设原则 29 5.2 项目设计依据的规范与规程 29 5.3 项目设计方案 30 5.4 工程设计标准 33 5.5 技术标准 36 5.6 设备选型 53 第六章 消防安全 57 6.1 消防依据 57 6.2 消防工作程序 57 6.3 消防安全流程 59 第七章 节水与节能 60 7.1 节水工程与科技措施 60 7.2 养殖节能措施 61 7.3 饲料加工节能措施 61 7.4 电气节能措施 62 7.5 减排 62 第八章 环境影响和保护措施 63 8.1 环境保护依据 63 8.2 项目区环境现状 63 8.3 环境影响评价 64 8.4 工程环境
展开阅读全文

开通  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 

客服