资源描述
西 安 邮 电 大 学
(计算机学院)
软件工程课程设计报告
题 目: 图书馆管理系统
专业名称: 信息与计算科学
班 级: 信息1101
学生姓名: 王凯祥
学号(8位): 07111027
指引教师: 周元哲
设计起止时间:6月3日~6月13日
一. 设计目
随着人类文明发展,人们对于知识需求也在不断地增长,书籍作为传播文明重要工具,人们对其数量规定也越来越高,但是近几年来,随着书量不断增长,导致了书库空间极度局限性,图书挤压,管理不善。这些都直接影响了读者对图书馆藏书充分运用。这时图书馆就特别需要开发一套图书馆管理系统,通过该系统来提高图书馆管理效率,从而减少管理方面工作流和成本。因而有一种智能化、系统化、信息化图书管理系统十分重要。充分运用计算机功能实现对读者管理、书籍管理,借阅管理等自动化控制,将会使图书馆工作大大削弱。
二. 设计内容
本图书馆管理系统是采用Java+ SQL Server 分别作为前台和后台方式,本系统提供3个功能模块,分别是图书信息管理模块、读者信息管理模块、图书借阅管理模块。这3个模块里又有许多子模块,通过这些模块之间互相连接与配合,满足使用者各种需求。
本系统使用人员也分为两类,一类是读者,可以查看自己信息以及借阅信息;一类是管理员,除了读者所有功能外,还可以对书籍列表、书籍信息、读者信息、借阅和还书信息等进行管理。
三.概要设计
主界面
1.功能模块图;
惯用工具
读者留言
读者管理
借阅管理
图书管理
添加读者
删除读者
修改读者
查询读者
罚款信息
还书
借书
修改图书
删除图书
添加图书
查询图书
2. 各个模块详细功能描述
先附上数据库设计中E-R图:
姓名
管理员
ID编号
密码
出版日期
图书价格
图书编号
图书信息
出版社
ISBN号
图书名称
图书作者
借阅时间
借阅号
归还时间
借阅
读者编号
时间
借阅号
读者编号
罚款信息
读者类型
限借数量
缴费
罚款金额
读者信息
性别
登录密码
姓名
编号
图书管理模块:可以进行图书查询,图书添加、删除和修改,读者只能进行图书查询操作,查询图书可以按照图书名和ISBN码进行查询,添加图书规定输入图书各种信息,详细参照上面E-R图,即可完毕添加操作,删除图书和修改图书只需输入图书编号就可以对其进行修改和删除操作。
借阅管理模块:可以进行借书、还书以及查看罚款信息操作,固然,借书和还书权限属于管理员,输入图书编号以及读者ID即可完毕操作,读者可以在罚款信息模块查看自己与否有超期未还图书,以及如果有话需缴纳多少逾期费信息。
读者管理模块:和图书同样,同样具备读者信息查询、删除、修改以及添加功能,读者只具备访问查询功能权限。查询功能,输入读者编号即可查询读者基本信息以及借阅信息,可以看到已借阅图书名称,借阅时间和应当归还时间。删除功能,只要输入编号就可以删除相应读者所有信息;修改功能,输入读者编码就可以对读者基本信息进行修改;添加功能,可以增长新读者到数据库,规定对的输入其基本信息。
四.详细设计
1.各功能函数数据流程图
注:由于构造较复杂,在此使用microsoft visio画出流程图并导入
2.重点设计及编码
在此贴出登录数据库功能核心代码:
public void actionPerformed(ActionEvent e) {
Connection con;
PreparedStatement sql;
// Statement sql;
ResultSet rs;
//MainFream zjm = new MainFream();
boolean boo = false;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException f) {
}
try {
con = DriverManager.getConnection("jdbc:odbc:tushuguan");
if (JRb1.isSelected()) {
sql = con
.prepareStatement("SELECT * FROM reader where rid=?and pass=?");
boo = true;
} else {
sql = con
.prepareStatement("SELECT * FROM guanliyuan where gid=?and gpass=?");
//zjm.mll2.setEnabled(false);
}
String bh,password;
bh = Jt1.getText();
password = Jt2.getText();
sql.setString(1,bh);
sql.setString(2,password);
rs = sql.executeQuery();
if (rs.next()) {
this.dispose();// 撤销当前窗口,并释放当前窗口使用资源
MainFream zjm = new MainFream();
if (boo) {
zjm.mi2.setEnabled(false);
zjm.mi3.setEnabled(false);
zjm.mi4.setEnabled(false);
zjm.mj2.setEnabled(false);
zjm.mj3.setEnabled(false);
zjm.mj4.setEnabled(false);
zjm.mk3.setEnabled(false);
zjm.mk4.setEnabled(false);
zjm.ml2.setEnabled(false);
zjm.bborrow.setEnabled(false);
zjm.breturn.setEnabled(false);
zjm.mll1.setEnabled(false);
zjm.bborrow.setEnabled(false);
zjm.breturn.setEnabled(false);
}
//zjm.show();
} else {
Jt1.setText("");
Jt2.setText("");
JOptionPane.showMessageDialog(this,"你输入帐号错误!","警告对话框",
JOptionPane.WARNING_MESSAGE);
}
} catch (SQLException e2) {
System.out.println(e2);
}
}
五.测试数据及运营成果
1.正常测试数据和运营成果
第一组:如图1所示,测试读者查询功能时候,输入已经录入读者编号,点击基本信息,会浮现该读者基本信息;点击借阅信息,正常弹出读者已借阅书籍信息,如图2;
图1
图2
第二组:图书借阅功能,输入已录入读者编号以及对的图书编号,正常弹出“借阅成功信息”,并且可以在读者信息中查询到,如图2及图3;
图3
第三组:修改图书信息功能,打开界面后输入已经录入图书编号,即可对其信息进行修改,完毕后,点击修改按钮,弹出“修改图书成功”信息,如图4所示。
图4
2.异常测试数据及运营成果
第一组:图书借阅功能,输入一种没有录入读者编号,图书编号也不存在,弹出报错信息“你输入读者不存在”,如图5;
图5
第二组:图书查询功能,输入并未录入图书编号,弹出异常信息“查询图书不存在”,如图6所示。
图6
六.调试状况,设计技巧及体会
1.改进方案
这次图书管理系统设计,真是让我使出浑身解数,把所学到功能都用到了,这次设计,总体来说还是比较满意,固然,必定同步也有着许多局限性之处,例如数据库设计不够完整,没有新书订购功能,只能对已有图书进行管理等,这些问题需要学习更多知识去完善,例如采用jsp编程通过网络对新书进行订购管理,可以采用B/S架构,更加直观便捷。
2.体会
本系统是一种最基本图书馆管理系统,可扩展性很大,系统执行效率也比较高。这些天设计,我深刻体会到软件开发是相称辛苦,但成功后来喜悦也是非常美妙,投入越多,获得高兴与充实感越多。
本课题在选题及研究过程中得到周教师亲切关怀和悉心指引下完毕。她严肃科学态度,严谨治学精神,精益求精工作作风,深深地感染和勉励着我。让我可以以更加认真严谨态度去设计,调试,完善。在此谨向周教师致以诚挚谢意和崇高敬意。
七.参照文献
[1]《数据库原理及应用》 周佩德等 电子工业出版社
[2]《数据库系统概论》 萨师煊等 电子工业出版社
[3]《Java面向对象程序设计》 张桂珠等 北京邮电大学出版社
[4]《Java程序设计实例教程》 毕光吉 冶金工业出版社
[5]《软件工程导论第四版》 张海潘 清华大学出版社
八.附录:(源代码)
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(mk3) || e.getSource().equals(bborrow)) { // 借阅管理
Borrow js = new Borrow();
js.show();
}
if (e.getSource().equals(mk4) || e.getSource().equals(breturn)) {
Return hs = new Return();
hs.show();
}
if (e.getSource().equals(mk1)) { // 借阅管理
Fakuan fa = new Fakuan();
fa.show();
}
if (e.getSource().equals(mi1) || e.getSource().equals(bread)) { // 读者管理
Search_reader zt = new Search_reader();
zt.show();
}
if (e.getSource().equals(mi2)) {
Add_reader zj = new Add_reader();
zj.show();
}
if (e.getSource().equals(mi3)) {
Del_reader scd = new Del_reader();
scd.show();
}
if (e.getSource().equals(mi4)) {
Rework_reader rr = new Rework_reader();
rr.show();
}
if (e.getSource().equals(mi4)) {
Rework_reader re = new Rework_reader();
re.show();
}
if (e.getSource().equals(mj3)) { // 图书管理
Del_book sct = new Del_book();
sct.show();
}
if (e.getSource().equals(mj1) || e.getSource().equals(bbook)) {
Search_book cx = new Search_book();
cx.show();
}
if (e.getSource().equals(mj2)) {
Add_book zj = new Add_book();
zj.show();
}
if (e.getSource().equals(mj3)) {
Del_book sct = new Del_book();
sct.show();
}
if (e.getSource().equals(mj4)) {
Rework_book xg = new Rework_book();
xg.show();
}
if (e.getSource().equals(ml)) { // 惯用工具 万年历
WanNianLi mf = new WanNianLi();
mf.show();
}
if (e.getSource().equals(ml2)) { // 工作日记
NotePad note = new NotePad();
note.show();
}
if (e.getSource().equals(mll1)) { // 在线征询
Server server = new Server();
server.show();
}
}
展开阅读全文