图书管理系统模板附代码.docx
《图书管理系统模板附代码.docx》由会员分享,可在线阅读,更多相关《图书管理系统模板附代码.docx(29页珍藏版)》请在冰豆网上搜索。
图书管理系统模板附代码
中山大学南方学院
课程设计报告
图书管理系统的
设计与实现
系名:
电子通信与软件工程系
专业:
计算机科学与技术
学号
姓名
任务
112011095
项目经理数据库设计程序员
112011086
需求分析PPT
112011074
界面设计总体设计
112011151
可行性分析、测试
112011163
详细设计、测试
指导教师:
二○一三年十二月
第1章可行性分析
1.1经济可行性
自21世纪开始,随着信息技术的飞速发展,越来越多的信息进入人们的生活,普通的人工技术记录已经难以满足人们的正常需求,这便出现了计算机记录管理信息。
我们所做的图书馆管理系统,只需一个管理者便可以操作大量的数据信息,省下大量的人力物力。
相比之下经济可行性很好。
技术可行性
目前,我们绝大多数的图书馆都已经普及了图书管理系统。
由此证明,技术上是十分可行的。
1.2法律可行性
目前,在国内外是允许的,并没有触碰法律。
知识产权受法律保护。
第2章需求分析
2.1图书馆管理系统开发的目的
图书馆提供的物质资源越来越丰富,如何高效准确地对馆藏资料进行整理、借还、盘点成为困扰图书馆管理人员的问题。
2.2图书馆管理系统开发的背景
图书管理系统可以降低了管理人员的劳动强度、大幅提高了图书盘点及错架图书整理效率、使错架图书的查找变得更为快捷便利、安全门摆放距离更加宽阔,使读者进出更加自如,有效简化了读者借还书手续,提高了图书借阅率,避免了读者与管理人员之间发生不必要争执,融洽了读者与管理人员之间的关系
开发软件系统的名称:
图书馆管理系统
软件开发者:
麦泽明刘志锋廖坤城
面向对象(用户):
中山大学南方学院全体师生及外来参观人员
2.3图书馆管理系统开发任务概述
软件开发的意图:
使中山大学南方学院的全体师生方便借阅、归还图书。
管理人员方便管理。
应用目标:
中山大学南方学院的全体师生及外来参观人员;
作用范围:
中山大学南方学院校内。
2.4系统(或用户)的特点
1,界面更加简约。
2,功能更加全面。
图2-1层次方框图
2.5 假定和约束
目标在17周内完成,经费尚无
2.6软件功能说明
图2-2系统实体-联系图
图2-3系统的状态图
2.7 对功能的一般性规定
本处仅列出对开发产品的所有功能(或一部分)的共同要求,如要求界面格式统一,统一的错误声音提示,要求有在线帮助等。
1精度的要求:
账号、密码信息输入一定要正确才能登陆。
2灵活性:
当输入发生某些变化时,该系统对这些变化的适应能力。
3输入输出要求:
输入账号,密码一定要正确
④故障处理要求:
软件卡死不会影响数据库信息。
2.8运行环境规定
该软件所需要的硬件设备要求:
1,CPUInterPentium1.600MHz以上
2,内存1024MB以上
3,磁盘空间20GB以上
2.9支撑软件
数据库管理系统软件:
SQLMyeclipse
运行平台:
WindowsXPwin7
软件开发语言:
JAVA、SQL语言
2.10 接口
外部接口
1。
用户接口:
采用窗口化,菜单式进行设计,在操作时响应热键。
2。
硬件接口:
扫描仪器等
内部接口
通过面向对象语言设计类
、
第3章总体设计
3.1系统设计
顶层数据流图:
第0层图:
第1层图:
登录子系统
管理子系统:
查询子系统:
第二层图:
(1)入库管理:
(2)处理学生借书:
(3)处理学生还书:
(4)处理学生信息查询:
(5)处理注销信息查询:
(6)处理图书信息查询:
图3-1软件结构图
3.2结构设计
3.2.1总体模块
模块1:
主界面
名称
主界面
标识
Book
子系统名称
系统
名称
接 口
说 明
输入
访问者、管理员
输出
系统数据
功 能
说 明
运行环
境说明
SQLServer2005,WindowsXP
调用关
系说明
调用模块
无
被调用模块
模块2:
登陆系统
名称
登陆系统
标识
Login
子系统名称
登陆子系统
系统
名称
接 口
说 明
输入
访问者
输出
系统数据
功 能
说 明
登陆系统进行操作
运行环
境说明
SQLServer2005,WindowsXP
调用关
系说明
调用模块
登陆模块
被调用模块
模块3:
查询系统
名称
查询系统
标识
QueryBook
子系统名称
查询子系统
系统
名称
*
接 口
说 明
输入
访问者
输出
系统数据(输出图书、读者信息)
功 能
说 明
读者查询图书信息、个人信息。
运行环
境说明
SQLServer2005,WindowsXP
调用关
系说明
调用模块
被调用模块
模块8:
数据备份
名称
数据备份
标识
copy
子系统名称
系统管理
系统
名称
接 口
说 明
输入
系统数据
输出
系统数据
功 能
说 明
实现系统数据的备份
运行环
境说明
调用关
系说明
调用模块
无
被调用模块
系统管理
3.2.3系统角色设计
1.系统管理员
图3-3系统管理员用例图
2.操作用户
图3-3用户用例图
3.3接口设计
3.3.1用户界面设计规则
符合用户需求的、美观大方的用户界面。
3.3.2内部接口设计
由于SQLServer数据库的独特性,其数据库内部不需要特别设计接口,各模块根据文档内部控制域值提取其所需的数据。
3.3.3外部接口设计
与硬件之间的接口:
无
与软件之间的接口:
数据库接口,资源库接口
3.3.4出错处理设计
出错处理:
在错误发生时,给出出错的原因。
3.3.5系统维护设计
采用模块化的设计,方便维护。
第4章详细设计
4.1数据库设计
4.1.1数据库概念结构设计
图1-3系统E-R图
4.1.2数据库逻辑结构设计
(1)书签表数据项:
收藏ID、图书ID、图书名称、索书号
(2)图书表数据项:
id、图书id、图书书名、图书作者、图书馆isbn码、图书页码、图书价格、图书出版日期、图书出版社、图书分类、图书索书号
(3)图书类别表数据项:
图书分类号、图书分类名
4.2客户端模块
4.2.1程序界面
登录界面
系统主界面
菜单预览
新书登记
图书查询
图书删除
预览图书
4.3服务器模块
4.3.1程序界面
4.3.2功能说明
主界面提供访问者操作:
1查询图书
2借阅图书
3归还图书
4修改个人信息
4.4改进计划
当前版本由于时间关系未作程序界面上的修饰,存在的界面不美观,上手难,
不具亲和力等问题,这对于一款用于商业软件来说是一个非常严重的问题。
幸好,目前当前版本是为了向大家演示本程序功能,对界面方面的要求也就相对较低。
在后续版本中,会采用多窗口轮换显示,降低操作的复杂性;
每个窗口,底层采用图画,在其上层添加透明的命令控件,来达到程序控制的目的。
后续版本中也将采用类似的方式以增强美观性。
4.5支持软件
服务器
Windows2000或Windows2000Advancedserver,Microsoft.SQLServer.
客户端
WindowsXP,IE6.0
4.6使用说明
1.安装、配置服务器端软件
(1)在服务器上安装好Windows2003后,配置TCP/IP协
议中IP为192.168.0.1,工作组为WORKGROUP,计算机
名为Server,设置打印机与文件共享。
(2)安装图书管理系统,将图书管理系统快捷方式加入启动项。
(3)安装SQLServer2005,将用户名、密码设为:
123、
456。
导入位于数据库备份文件。
使用图书管理系统添加一条信息以供测试。
(4)安装、配置Windowsxp,安装客户机应用软件,安装、调试网络共享,
(5)全面测试
2.安装客户机应用软件
同样安装好系统后,配置TCP/IP协议中IP为192.168.0.2~192.168.0.255,
设置工作组为WORKGROUP,计算机名为房间号。
安装图书管理系统客户端,将图书管理系统快捷方式加入启动项。
3.安装调试
运行服务器端图书管理系统,运行客户机端图书管理系统看是否能正常运行,检查设置以及网络共享是否良好。
4.7出错和恢复
一般情况下,如遇客户端出错,重启客户机即可,不影响服务器及其它客户
机的工作。
如遇服务器出错,重启电脑,如不能解决,重装服务器端程序即可,如遇其它网络问题需自行解决。
如遇数据库出现问题,将数据库备份文件重新导入,注意,数据库需经常备份。
4.8版权说明
4.8.1开发团队
第19小组:
麦泽明、刘志锋、廖坤城、张俊城、郑志远
4.8.2版权信息
版权所有.第19小组保留所有权力。
图书管理系统由麦泽明、刘志锋、廖坤城、张俊城、郑志远共同开发,全部核心技术归属第19小组。
4.8.3免责条约
由于该程序是免费加以许可的,因而也就无法保证该程序符合可用性准则。
任何情况下,程序的质量风险和性能风险完全由您承担。
第5章编码与测试
5.1编码阶段
5.1.1连接数据库代码
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundExceptione){System.out.println("加载驱动程序失败!
");}
try{
Stringurl="jdbc:
mysql:
//localhost:
3306/book";
Connectioncon=DriverManager.getConnection(url,"root","root");
Statementsql;
5.1.2登录代码
importjava.awt.event.*;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.Container;
importjava.util.*;
importjava.sql.*;
classLoginextendsJFrameimplementsActionListener
{Containercp=null;
JFramef=null;
JButtonj1,j2;
JTextFieldname;
JPasswordFieldpwd;
JLabeljlable1,jlable2;
JPaneljp;
Login(){
jp=newJPanel();
f=newJFrame();
jp.setLayout(newGridLayout(3,2));
addComponents();
this.setLayout(newBorderLayout(50,50));
this.add(BorderLayout.NORTH,newJLabel(""));
this.add(BorderLayout.SOUTH,newJLabel(""));
this.add(BorderLayout.EAST,newJLabel(""));
this.add(BorderLayout.WEST,newJLabel(""));
this.add(jp);
this.setTitle("用户登录界面");
this.setSize(350,220);
this.setVisible(true);
}
voidaddComponents(){
JLabeljlbu=newJLabel();
jlbu.setText("用户名");
name=newJTextField();
JLabeljlbp=newJLabel();
jlbp.setText("密码");
pwd=newJPasswordField();
//pwd.setEchoChar("*");
j1=newJButton("登录");
j2=newJButton("取消");
j1.addActionListener(this);
j2.addActionListener(this);
jp.add(jlbu);
jp.add(name);
jp.add(jlbp);
jp.add(pwd);
jp.add(j1);
jp.add(j2);
f.add(jp);
}
publicvoidconfirm()
{
try{
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundExceptione)
{System.out.println("加载驱动程序失败!
");
}
try{
Stringurl="jdbc:
mysql:
//localhost:
3306/book";
Connectioncon=DriverManager.getConnection(url,"root","root");
Statementsql=con.createStatement();
Stringuname=name.getText().trim();
StringMima=pwd.getText().trim();
StringqueryMima="select*fromuserwhereuser_name='"+uname+"'andpassword='"+Mima+"'";
ResultSetrs=sql.executeQuery(queryMima);
if(rs.next())
{
newBook(uname);
f.hide();
con.close();
}
else{
JOptionPane.showMessageDialog(null,"该用户不存在","提示!
",
JOptionPane.YES_NO_OPTION);
}
name.setText("");
pwd.setText("");
}
catch(SQLExceptiong)
{
System.out.println(g.getErrorCode());
System.out.println(g.getMessage());}
}
publicvoidactionPerformed(ActionEvente)
{
Stringcmd=e.getActionCommand();
if(cmd.equals("登录")){
confirm();
}
elseif(cmd.equals("取消")){
f.dispose();
}
}
publicstaticvoidmain(String[]arg){
Logina=newLogin();
}
}
5.1.3注册代码
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
publicvoidactionPerformed(ActionEvente)
{
Stringcmd=e.getActionCommand();
if(cmd.equals("确定"))
{
f.hide();
}
if(cmd.equals("返回"))
f.hide();
}
5.1.4违规处理代码
try{
Stringurl="jdbc:
mysql:
//localhost:
3306/book";
Connectioncon=DriverManager.getConnection(url,"root","root");
Statementsql;
Stringql=(String)(ar[index][1]);
Strings="delete*frombookwherebook_no='"+ql+"'";
sql=con.createStatement();
intdel=sql.executeUpdate(s);
if(del==1)
{JOptionPane.showMessageDialog(null,"删除成功!
",
"信息",JOptionPane.YES_NO_OPTION);
}
con.close();
f.repaint();
}
catch(SQLExceptiong)
{
System.out.println(g.getErrorCode());
System.out.println(g.getMessage());
}
5.2软件测试报告
5.2.1引言
5.2.2测试步骤
1打开****系统并选择测试类型及其他参数
2设置URL
3浏览器设置
4开始测试
5.2.3测试结果
1 测试结果概况
2测试结果视图
参考文献
[1]张海藩.软件工程导论.计算机应用技术,2018
开发心得体会
姓名麦泽明:
我认为,这门课实在获益良多,并且有一些心得体会:
相信团队合作才可能把项目做好。
从整个项目的过程来看,团队合作中需要沟通、分工、协作和监督。
在设计过程中,确实遇到了不少问题,但经过组员的沟通以及组长的领导问题得到了很好的解决,工作得以顺利完成。
还有对问题思考的严谨性,我们换位思考,一个好的软件应当包含了更加人性化的,更完整的功能,在细节上的处理同样也是很重要的,更能得到用户的青睐。
姓名刘志锋:
这学期软件工程我们组项目是图书管理系统,给我最大的感受是:
做一项项目必须制定详细计划,并严格按照计划来执行。
由于日常还有别的学习任务,也不能把所有工作都堆期末再来完成,所以计划就尤为重要。
让我们有更充裕的时间进行修改,进行问题的考虑以及解决。
当然,我的沟通能力也得到了很好的加强,小组成员的相互讨论更好的促进了项目进度的推进,增加了彼此之间的了解。
感谢老师的悉心教导,在以后的学习工作,我也应当更加努力,更为耐心的解决问题,与人交流。
姓名廖坤城:
做每一件事都有自己的所获所得。
通过这次软件工程,虽然花了很多时间完成组长派下来的一些小任务,但是对于我来说意义是很重要的。
激起了对本专业的兴趣。
虽然有时候在一个小小的错误中耽误了大量时间,但是最后找出原因后内心是充满着快乐与开心。
所以通过这次图书管理系统的设计,通过不懂就要问,让我更多明白的是只有亲自参与其中项目的设计,才能在其中学到东西,品尝到Java的魅力。
同时也能够感受到搭档的团结,共同接受与挑战困难,共同分享其中的苦与乐。
姓名张俊城:
经过几个星期的努力,我们的项目终于基本算完成了。
在这几个星期的学习里,让我懂的了很多。
我很感谢我的团队,特别是我们机智组长,他用他那充满智慧的大脑把我们都征服了,我们在他的安排下有条不紊的进行着项目设计,利用我们各自的特长,把项目更好的完善。
在这也让我懂的了团队合作的重要,因为合作让我们更加懂的自己的不足,让我们在做项目的同时也收获着快乐。
我感谢这次项目设计让我们走在一起,希望还有下次合作的机会。
姓名郑志远:
不知不觉,学习了软件工程这门课程已经一个学期了,获益良多。
通过对课本知识的逐渐了解,我们小组进行了图书管理系统的设计的工作。
激发了对学习的积极性,更重要的是让我们培养了团队协作的精神,通过分工合作,查找资料书籍解决了许多设计时遇到的问题。
在今后的学习中要注意多读书、多思考、多练习,不断熟悉书本的基础,并以此为基础将其扩散开来,通过实践来应用开来。
感谢老师辛勤的教导,让我们对软件工程这方面有了更深入的认识,并且通过做项目来获得更深刻的认识。