图书馆管理系统系统管理模块的设计与实现.docx
《图书馆管理系统系统管理模块的设计与实现.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统系统管理模块的设计与实现.docx(18页珍藏版)》请在冰豆网上搜索。
图书馆管理系统系统管理模块的设计与实现
课程设计报告
图书馆管理系统系统管理模块的设计与实现
班级:
*****
学号:
********
姓名:
*****
教师评语:
教师签名:
2010年7月
课程设计题目
图书馆管理系统系统管理模块的设计与实现
目的和背景
图书馆管理系统作为图书馆开展业务和服务读者的基础,在相当大的程度上代表和体现了图书馆自动化的水平,利用现代计算机网络技术和数据库开发技术建立图书馆管理系统,规范图书资料,提高信息流通的便捷性和时效性,并能够最大限度的利用现有图书馆的各种资源,更好的为教学、科研服务。
图书馆管理系统分为若干大模块,本模块为图书馆管理系统系统管理模块的设计与实现,目的在于方便用户对图书馆管理系统的使用,提供用户登录、用户信息修改、使用用户设置、系统参数设定、操作日志查询、系统初始化等功能。
主要内容
根据图书馆管理系统的需要主要设计实现以下功能:
1.系统登录界面的设计
2.实现根据登录用户的权限来动态生成系统菜单
3.实现操作用户密码的修改
4.实现操作用户的查看、增加、修改、删除
5.实现操作用户权限的设定和修改
6.实现操作日志的查询
7.实现系统初始化和用户初始化
采用的工具方法
开发语言:
Java
JDK版本:
JDK1.60
框架结构:
Struts1.2/1.3+hibernate3.2
开发平台:
MyEclipse6.5、Tomcat6.0
数据库:
MySQL5.0
运行系统:
Windows7
进度安排
系统管理模块的设计和实现共用16天,具体安排如下:
1.需求分析共用1天
2.概要设计和详细设计共用3天
3.编码共用9天
3a.模块功能的实现共用6天
3b.界面设计和美化共用3天
4.测试、维护和发布共用3天
参考资料
1.Struts开发入门与项目实践
2.系统设计与分析
3.Struts+Web设计与开发大全
4.网络程序设计基础
5.课程设计题目的具体要求
1引言
1.1编写目的
本课程设计报告是对系统管理模块的进行简单的需求分析和总体设计,对课程设计过程进行描述,总结在课程设计过程中学习到的知识,分析错误吸取教训,最后对本次课程设计的心得和体会进行总结。
1.2项目背景
随着社会信息量的与日俱增,作为信息存储的主要媒体之一图书,数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方式来管理自己的书籍。
在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多,这也充分应用硬件资源;对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,为了便于图书资料的管理更为需要有效的图书管理软件。
本次课程设计的课题是图书馆管理系统系统管理模块的设计与实现。
在使用了已经实现了的部分图书馆管理系统软体后,对此模块的设计功能有了进一步的认识。
1.3开发环境
本模块选用Java作为开发语言,配合使用JSP、JavaScript等技术手段,利用现在流行的Struts+hibernate框架开发,采用经典的MVC(模型-视图-控制)的设计模式,将模块整体分为三层(表示层、业务层、持久层)。
平台选用MyEclipse6.5版本,它的便捷性、功能强大和完善的结构包最适合MVC的设计模式。
服务器选用Tomcat6.0,该版本免费、功能强大并且能够在Windows7下稳定运行。
美化页面用AdobeDreamweaverCS3和AdobePhotoshopCS5等计算机辅助软件。
数据库采用MySQL5.0,结构简洁、功能完善、稳定性好,配合使用MySQLFront-v5.1使数据层的数据表结构清晰直观,用3.2版本Hibernate与数据库连接进行持久化连接。
2需求分析和系统总体设计
2.1需求分析
2.1.1系统目标
模块的总目标是:
通过本模块在图书馆管理系统中的运用能够对整个图书馆资源得以科学、规范的管理,便于系统的维护和升级,有效提高管理工作的质量与效率。
对每一项数据进行类型判断和空值判断,有筛选数据合理性的功能。
用户界面友好风格一致、操作简易,系统安全、数据库稳定。
2.1.2系统功能需求
(1)登录图书馆管理系统时根据用户的权限动态生成系统菜单
(2)操作用户可以修改自己的登录密码
(3)可以对系统用户信息库进行查看、添加、删除操作
(4)可以设定和修改其他用户的权限
(5)可以对条形码最大流水号、图书罚款金额等变动性强的信息进行直接修改
(6)可以有条件和无限定条件两种方式查询系统的操作日志
(7)可以实现系统初始化和用户初始化
2.1.3系统性能需求
(1)系统是Web应用系统,在互联网或局域网内安装运行
(2)系统具有准确、完善的特点,能够使用户的操作方便快捷
(3)系统具有可靠性和冗错能力,对数据有保护作用
(4)具有安检机制,未登录的用户不能操作
(5)登录时间超过一定的范围应当退出重新登录
2.1.4系统运行环境
系统运行操作系统:
WindowsServer2003/WindowsXP/Windows7
系统运行Java环境:
JDK1.6
系统运行服务器:
ApacheTomcat6.0
系统运行数据库:
MySQL5.0及MySQLFront-v5.1
系统运行分辨率:
最佳效果1280x800像素
2.2系统总体设计
2.2.1系统计算模式
图书馆管理系统系统管理模块采取B/S计算模式。
如图2-1所示。
图2-1系统B/S模式
2.2.2系统功能结构
工程项目管理系统操作日志查询模块功能结构如图2-2所示。
图2-2系统功能结构图
2.2.3系统操作流程图
2.2.4系统数据库设计
本模块共涉及到数据库中的五张表,即用户信息表、操作日志表、系统信息表、图书类别表、图书信息初始化表。
详细描述如表2-1~2-5所示:
如表2-1:
操作用户信息表Ulist
列名
数据类型
约束条件
描述
Uid
Int(11)
主键
序号,作为主键,无实际意义
Umark
Varchar(255)
操作用户登录代码
Uname
Varchar(255)
操作用户姓名
Upassword
Varchar(255)
操作用户密码
Urow
Varchar(255)
操作用户职务
Uproid
Varchar(255)
操作用户权限代码
如表2-2:
操作日志表Userlog
列名
数据类型
约束条件
描述
Id
Int(11)
主键
序号,作为主键,无实际意义
Logtime
Varchar(255)
操作时间
Logperson
Varchar(255)
操作用户姓名
Logpart
Varchar(255)
操作功能
Logmain
Varchar(255)
操作内容
Logrow
Varchar(255)
操作用户职务
如表2-3:
系统信息表Xtshezhi
列名
数据类型
约束条件
描述
Id
Int(11)
主键
序号,作为主键,无实际意义
Xtlsh
Varchar(255)
条形码最大流水号窗体底端
Xtprice
Float
图书罚款(元/天)
Xtdays
Int(11)
提前续借的天数
如表2-4:
图书类别表Author
列名
数据类型
约束条件
描述
Aid
Int(11)
主键
图书类别编号
Aname
Varchar(255)
图书条形码
如表2-5:
图书信息初始化表Book
列名
数据类型
约束条件
描述
Bid
Int(11)
主键
图书序号
Bname
Varchar(50)
图书名称
price
Double(9,2)
图书定价
Aid
Int(11)
外键
图书类别编号
3系统实现
3.1界面实现
系统登录界面如下图所示:
修改密码界面如下图所示:
用户管理界面如下图所示:
增加用户界面如下图所示:
删除用户界面如下图所示:
删除结束返回列表界面如下图所示:
点击修改用户后跳转的如下图所示:
修改结束后返回列表界面如下图所示:
系统设置界面如下图所示:
操作日志查询界面如下图所示:
搜索后显示的结果界面如下图所示:
初始化功能界面如下图所示:
3.2子模块设计
3.2.1根据权限生成菜单的实现
在用户登录时根据用户名查出用户的权限代码,将权限代码放到session中,在jsp页面用<%Stringrc=session.getAttribute("Dl_proid").toString();%>取出代码。
<%if(rc.substring(0,1).equals("a")){%>基础设置 <%}else%>
<%if(rc.substring(10,11).equals("b")){%>借还管理 <%}else%>
<%if(rc.substring(13,14).equals("c")){%>图书查询 <%}else%>
<%if(rc.substring(23,24).equals("d")){%>系统管理<%}%>实现动态菜单的生成。
二级菜单原理同上。
3.2.2用户库数据增删改查的实现
A.增加功能:
通过页面的卡片读取输入数据,通过Form中的构造器读取到Action中,调用UlistDAO中的save()方法完成写入数据库。
B.删除功能:
在删除页面通过IndexAction中的使用request.getParameter("myid");
取出对应的数据id,在DeluserAction中调用UlistDAO中的delete()方法完成删除操作。
C.修改功能:
与删除类似,在GaiserAction中调用UlistDAO中的attachDirty()方法。
D.查看功能:
在登陆时调用UlistDAO中的findAll()方法,将结果ulist放入session中,在JSP也页面用${ulist.字段名}取出数据库对应的值。
3.2.3系统操作日志查询的实现
将下面代码放到每一个Action中实现操作日志写入数据库。
Stringdate=newSimpleDateFormat("yyyy-MM-ddHH:
mm:
ss").format(Calendar.getInstance().getTime());ug.setLogtime(date);ug.setLogrow(request.getSession().getAttribute("Dl_row").toString());ug.setLogperson(request.getSession().getAttribute("Dl_name").toString());
ug.setLogmain("XXXX");
ug.setLogpart("XXXX");
Transactiontr=ugo.getSession().beginTransaction();
ugo.save(ug);
mit();
最终利用UserlogDAO内的findByLogpart()和findByLogperson()来实现查找最总将结构利用setAttribute方法放到session中,利用write>在JSP页面上读出来并显示。
4总结
在制作系统管理模块的课程设计过程中,我收获非常大!
所有代码都是亲手编制,出现的问题和遇到的困难都被我一一解决,让我懂得了实践的重要性。
第一次这么正式的制作项目,要一个人把握软件的整体体系结构,要一个人完整的经历软件开发的全过程。
在刚刚进行需求分析的时候,我分析和使用了本校的图书馆管理系统和邢老师的图书馆管理系统,得出了系统的整体设计思路,但是在项目实施的过程中却与想象中不同,下面我将分为几个方面来谈我的心得体会。
动态菜单的生成。
在概要设计的时候,我认为所谓的动态生成菜单是我做若干个JSP页面,根据用户的权限判断来读取不同的JSP页面就可以了,但是在详细设计的过程中我发现这种方法效率不高,灵活性不够。
于是上网和看书需求没有找到核实的解决方法,最终回归JSP编程的层面来,选择了这样一种简单高效的JSP页面级上显示和隐藏的判断,这种方法的好处是:
1便于理解和应用2将来需求变化时不需要更改数据库,只要在表示层的页面上面进行修改,最大程度的方便扩展和改进。
操作日志的实现。
在编码阶段,由于之前没有接触过系统日志,上网查得的结果是利用java中的log4j相关知识可以直接解决,所以我认为记录操作日志将、而且还要实现有条件和无条件两种方式查询,将会是非常困难的,一直到了开始美化界面的时候都没有找不出解决方案。
经请教邢老师后豁然开朗,操作记录本身就是客观存在的我们是知道的,只是电脑不知道而已,那么我们在每一个Action提交前将具体操作记录明白的告诉电脑,执行一步写入数据库就实现了操作日志的采集就可以解决这个问题,同时设计起来不是很复杂,这种“小聪明式”的灵感需要不断的锻炼的同时也要多多接触专业领域的深层次的问题,提高自己的编程能力。
界面美化的收获。
我选用的是Struts1+hibernate的框架设计,jsp、form、action用的是自动生成的办法,为了加强系统的稳定性和整体性,在表示层的页面上没有选用HTML的标签,而是统一用了Struts的标签。
但是在美化的过程中,发现Struts标签的美化工作与HTML标签差别很大,在美化界面的三天时间里,不得不现学现做。
经过连续3个通宵的奋斗,最终实现了所有页面BUtton用图片代替,所有图片自己Photoshop,解决了页面重置的问题,个人认为系统的页面做到了界面友好美观,结构简单易用。
本模块用到的技术非常全面,我会进一步完善现有模块的同时,把图书馆管理系统的其他模块实现,让这个成为自己第一个完整的软件作品。
我发现了实践对于软件工程专业学生的重要性,只有动手起来才能掌握、才能熟悉、才能进步!
感谢*老师的不吝指导,和您的交谈让我明白了很多道理。
*老师对我们的要求很高,我体会到老师的良苦用心,赞美之词也就不再赘述了。
我只用一句来结束我的总结:
感谢您的耐心和信任,我会继续努力为自己正名!
5参考文献
[1]张桂元,贾燕枫.Struts开发入门与项目实践[M].北京:
人民邮电出版社,2005.
[2]李继蕊.Struts和Hibernate多层架构的研究与应用[J].武汉理工大学学报,2007.
[3]王青松.基于Hibernate实现MVC中的模型框架[J].辽宁大学学报,2007.
[4]邢薇.系统设计与分析[M].哈尔滨工程大学,2007.