南华大学计算机科学与技术学院课程设计报告(2012 ~2013 学年度第 1 学期)课程名称JA V A编程技术题目图书管理系统小组成员:专业计算机班级11级05班教师xxx目录1.设计目的 (3)2.设计要求 (3)4.功能需求 (4)5.总体设计 (4)6.系统的具体实现 (7)7.附录:(部分程序主要代码) (18)8.总结分析 (53)9.参考文献 (53)1.设计目的软件需求分析就是软件计划期间建立的软件可行性分析求精和四化,分析各种可能的解法,并且分配给各个软件元素。
管理信息系统(MIS)的应用已深入到社会的各行各业,它是信息、软件与科学管理相结合的产物。
MIS的开发过程不仅是一个编写应用程序的过程,而且是一个以软件工程的思想为指导,从可行性研究开始,经过系统分析、系统设计、系统实施到等主要阶段的规范开发过程。
根据谭院长的要求,我们选择做一个图书管理系统,通过模拟图书馆的学生借书过程和后台管理员的操作过程,让我们在实战中的学习JAVA语言。
2.设计要求1、学会用JAVA语言做一个独立的系统;2、以小组的形式,分工明确,完成系统的设计与制作;3、利用JDBC驱动程序连接SQL数据库,修改、存储学生借书还书的基本信息。
了解最基本的数据库语句。
3.课程设计软硬件环境1)系统开发工具的选择开发语言:前台开发语言为java,后台数据库为SQL server2008运行环境:eclipse运行环境的介绍:Eclipse是著名的跨平台的自有(IDE)。
最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。
Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
许多软件开发商以Eclipse为框架开发自己的IDE。
系统开发平台和工具工具名称用途JDK 1.7.0Eclipse SQLsevers2008Java 开发工具包集成开发环境中小型关系数据库管理系统2)性能需求硬件要求:256M内存、10G硬盘或更高;软件最低要求:Microsoft Windows XP操作系统及Microsoft SQL Server 2000数据库系统。
4.功能需求实现管理员对用户的增删改查,对图书信息增删查改、图书借阅信息的修改以,实现用户对图书的查找、借阅、续借、归还以及修改密码。
该系统主要包括用户登录子系统、用户管理子系统、图书管理子系统、图书借阅与归还、图书和用户信息查询子系统四个部分,各部分主要功能如下:用户登录子系统:用于数据库的连接,主界面的设计和不同身份用户的登录管理;用户管理子系统:用于用户信息的管理,如用户添加、用户信息修改、用户删除;图书管理子系统:用于图书信息的管理,如新书入库、图书信息修改、图书信息删除;图书借阅与归还子系统:用于用户借阅和归还图书;图书和用户信息查询:图书和用户信息的查询。
5.总体设计1)软件结构设计主要页面文件清单文件名功能描述addbook.java 添加书籍界面adduser.java 添加用户界面Back.java 归还书籍界面bookinformation.java 书籍信息界面BookRecord.java 借书记录查询booksearch.java 书籍查询界面Borrow_Sure.java 确认借阅界面Borrow.java 借阅书籍界面changePassword.java 修改用户密码Log.java 系统日志mainFrame.java 主窗口Mainlead.java 主界面导航菜单ScanRecord.java 管理员查看借书历史scanuser.java 管理员查看用户信息start.java 系统开始运行界面Tableeditor.java 书籍编辑右键功能userinformation.java 用户信息界面userlogin.java 用户登陆界面UserRecord.java 用户查看借书历史用户权限介绍:用户类权限描述用户用户是该系统的重要的使用角色,他们的权限可以分为两部分:一是拥有。
二是通过该系统查询自己需要的图书信息,并可以借阅、归还图书,还可以查询自己的借书记录。
系统管理员系统管理员主要有对所有图书以及本系统进行管理的权限。
具体有登陆本系统,查询个人信息,修改密码的权限。
并拥有浏览所有用户信息,修改、添加、删除用户的权限。
还有对所有书籍信息查询、修改、添加、删除的权限。
2)系统模块设计1.用户管理功能:对用户的类型和用户档案进行管理,包括添加,修改,删除用户类型和用户用户的相关信息,管理不同类型用户借阅图书的数量。
2.图书管理功能:包括对图书类型和具体图书信息的管理,可以增加,修改,删除图书,丰富具体图书的信息,对不同图书进行分类操作。
3.图书借阅功能:可以完成对用户借阅和还书的操作。
4.图书查询功能:查询图书相关资料,借阅历史和借阅到期信息。
5.修改密码功能:可以修改自己的登录密码。
6.个人信息查询功能:可以查询目前登录用户的用户名、权限、可借书数量和已借书籍信息。
7.借阅历史查询功能:可以查询已登陆用户的结借书历史。
系统管理员登陆后,可以查询所有用户的借书历史。
3)数据库结构设计数据库是整个系统的基石,数据库的设计优劣直接影响到整个系统的设计成败,本节对数据库的设计进行专门阐述。
数据库设计是把现实世界的实体模型与需求转换成数据库的模型的过程,它是建立数据库应用系统的核心问题。
整个系统所包括的信息有图书信息、用户信息、借阅历史信息。
可将这些信息抽象为下列系统所需要的数据项和数据结构:1)图书信息(书名,作者,出版社,出版日期,书号,书籍类型,数量)2)用户信息(用户名,密码,权限,已借书籍数量)3)借阅历史信息(用户名,书名,数量,借书日期,还书日期,)图书信息表book字段名称数据类型字段长度可否为空说明bookname varchar 50 No 书名writer varchar 50 No 作者press varchar 50 No 出版社publishdate varchar 50 No 出版日期types varchar 50 No 书号ISBN varchar 50 No 书籍类型remnantnum int Default Yes 数量用户信息表users字段名称数据类型字段长度可否为空说明Username varchar 50 No 用户名password varchar 50 Yes 密码power varchar 50 Yes 权限bookamount nchar 10 Yes 已借书数量借阅历史信息表history字段名称数据类型字段长度可否为空说明username nchar 10 No 用户名bookname nchar 10 No 书名Book_borrow_count nchar 10 No 借阅数量borrowdate varchar 50 No 借书日期backdate varchar 50 Yes 还书日期6.系统的具体实现1)开发所用的类和接口a)开发图形界面所用类JFrame:Swing 的三个基本构造块:标签、按钮和文本字段;但是现在需要个地方安放它们,并希望用户知道如何处理它们。
JFrame 类就是解决这个问题的——它是一个容器,允许程序员把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。
JPanel:JPanel是一个容器,可以向其中添加其他的GUI组件(如按钮JButton组件);但是JPanel不是顶层容器,因此在屏幕上显示JPanel,必须将它添加到一个顶层容器(如JFrame)中。
JSplitPane:Split Pane(分割面版)一次可将两个组件同时显示在两个显示区中,若你想要同时在多个显示区显示组件,你便必须同时使用多个Split Pane。
JLabel: 用于短文本字符串或图像或二者的显示区。
JTextField:是一个轻量级组件,它允许编辑单行文本。
JTextArea:是一个显示纯文本的多行区域。
JPasswordField:JPasswordField 是一个轻量级组件,允许编辑单行文本,其视图指示键入内容,但不显示原始字符。
JButton: "push" 按钮的实现。
通过 Action 可配置按钮,并进行一定程度的控制。
JScrollpane:提供轻量级组件的 scrollable 视图。
JScrollPane 管理视口、可选的垂直和水平滚动条以及可选的行和列标题视口。
JComboBox:将按钮或可编辑字段与下拉列表组合的组件。
用户可以从下拉列表中选择值,下拉列表在用户请求时显示。
JRadioButton:实现一个单选按钮,此按钮项可被选择或取消选择,并可为用户显示其状态。
ButtonGroup:此类用于为一组按钮创建一个多斥(multiple-exclusion)作用域。
使用相同的 ButtonGroup 对象创建一组按钮意味着“开启”其中一个按钮时,将关闭组中的其他所有按钮。
b)开发表格接收数据并显示所使用的类Vector:可以实现可增长的对象数组。
与数组一样,它包含可以使用整数索引进行访问的组件。
但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。
DefaultTableModel:这是 TableModel 的一个实现,它使用一个 Vector 来存储单元格的值对象,该 Vector 由多个 Vector 组成。
JTable: 用来显示和编辑常规二维单元表。
c)开发数据库连接所使用的类Connection:与特定数据库的连接(会话)。
在连接上下文中执行 SQL 语句并返回结果。
Connection 对象的数据库能够提供描述其表、所支持的 SQL 语法、存储过程、此连接功能等等的信息。
Statement:Statement 对象表示基本语句,其中将单个方法应用于某一目标和一组参数,以返回结果。
ResultSet:表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
d)开发对事件响应所实现的接口ActionListener:用于接收操作事件的侦听器接口。
对处理操作事件感兴趣的类可以实现此接口,而使用该类创建的对象可使用组件的 addActionListener 方法向该组件注册。
在发生操作事件时,调用该对象的 actionPerformed 方法。
MouseListener:用于接收组件上“感兴趣”的鼠标事件(按下、释放、单击、进入或离开)的侦听器接口。
然后使用组件的 addMouseListener 方法将从该类所创建的侦听器对象向该组件注册。