假如我是图书管理员当别人问我在学校担任的是什么职务,我会很自豪地说:“是图书管理员。”
走进图书馆,一眼望去满是书架,书架上排放着整齐的书本,一切都是那么干净,那么整洁,那么美好。我一下子有了想做图书管理员的冲动,在我那好奇心的驱使下我当了图示管理员。
在我做图书管理员的这段期间,我十分的高兴。当图书管理员我能够为同学老师服务,这种为他人服务后的感觉是很难用语言形容的,总之就是心里很甜很甜。
每次我们图书管理员总得先帮同学发好书,并且要为同学们还书,虽然这减少了我们的看书时间但是我的心里却是喜滋滋的。每次有同学还书时我总是很乐意为他服务,因为这是我图书管理员的职责。
其他同学觉得图书管理员这个职位很烦,每天要跑上跑下的累都累死了,可是我却不这么想,因为老师曾说过有许多的名人生前都是做图书管理员,我每次觉得累时总会想到当时旧社会的图书管理员勤劳为他人服务的场面,我觉得人一下子精神起来了。其实在做图书管理员以前我是个很不会做事的小女生,只会买书看书从不会保护书,但是自从当上了图书管理员我学会了整理书本,学会打扫家里的每个地方,改变我的原因只有一个:我是一名图书管理员!我要从身边做起,点滴做起。
做图书管理员不仅仅是帮同学发书还书那么简单,我们还得写作文,做读书笔记,其实我以前是很讨厌写作文的,但是为了当好图书管理员我去书店买了好多有关写作文的书,我每天积累一点,慢慢地我的作文有了提高,语文成绩也直线上升,我别提有多开心了!现在每当老师有任务交给我们了,我总是将在前头做,因为我已经把图书管理员应做的事当成了习惯。我将会永远会帮助大家,做好图书管理员。
其实图书管理员并没有想象中的那么可怕,但也并没有想象中的简单。想要做好它必须要付出很多不仅如此,我们还得有大公无私的品德,任劳任怨,真心为他人服务。
我喜欢当图书管理员是因为我想为大家服务;我想当图书管理员是因为我想和书做好朋友;我想当图书管理员是因为我有坚定的信念:我能当好图书管理员。
假如我是图书管理员
当别人问我在学校担任的是什么职务,我会很自豪地说:“是图书管理员。”走进图书馆,一眼望去满是书架,书架上排放着整齐的书本,一切都是那么干净,那么整洁,那么美好。我一下子有了想做图书管理员的冲动,在我那好奇心的驱使下我当了图示管理员。在我做图书管理员的这段期间,我十分的高兴。
当图书管理员我能够为同学老师服务,这种为他人服务后的感觉是很难用语言形容的,总之就是心里很甜很甜。每次我们图书管理员总得先帮同学发好书,并且要为同学们还书,虽然这减少了我们的看书时间但是我的心里却是喜滋滋的。每次有同学还书时我总是很乐意为他服务,因为这是我图书管理员的职责。其他同学觉得图书管理员这个职位很烦,每天要跑上跑下的累都累死了,可是我却不这么想,因为老师曾说过有许多的名人生前都是做图书管理员,我每次觉得累时总会想到当时旧社会的图书管理员勤劳为他人服务的场面,我觉得人一下子精神起来了。
其实在做图书管理员以前我是个很不会做事的小女生,只会买书看书从不会保护书,但是自从当上了图书管理员我学会了整理书本,学会打扫家里的每个地方,改变我的原因只有一个:我是一名图书管理员!我要从身边做起,点滴做起。
做图书管理员不仅仅是帮同学发书还书那么简单,我们还得写作文,做读书笔记,其实我以前是很讨厌写作文的,但是为了当好图书管理员我去书店买了好多有关写作文的书,我每天积累一点,慢慢地我的作文有了提高,语文成绩也直线上升,我别提有多开心了!现在每当老师有任务交给我们了,我总是将在前头做,因为我已经把图书管理员应做的事当成了习惯。我将会永远会帮助大家,做好图书管理员。
其实图书管理员并没有想象中的那么可怕,但也并没有想象中的简单。想要做好它必须要付出很多不仅如此,我们还得有大公无私的品德,任劳任怨,真心为他人服务。我喜欢当图书管理员是因为我想为大家服务;我想当图书管理员是因为我想和书做好朋友;我想当图书管理员是因为我有坚定的信念:我能当好图书管理员!
各位老师,下午好。
我叫高洪东,来七年一班。我是一名 活泼开朗的女生,最大的爱好就是读书。 我读书的类型也很杂:历史、幻想、文 学、名着等等等等都是我书架上的居民。 卡耐基(美国,代表作人性的弱点)曾经 说:“不要怕推销自己,只要你认为自己 有才华,你就应认为自己有资格担任这个 职务”
我心比较细,性格开朗,不怕生,有 一定的组织管理能力。我认为我有能力担 任图书管理员这个职务,我也会进到相应 的职责。图书管理员的职责,除了要保证 书没有损坏,管理好图书。我认为作为一 名图书管理员,还应该尽可能的让更多的 人喜欢上阅读。如果我当选了图书管理 员,我会向同学们宣传我校的阅览室,让 爱读书的人知道。如果有人不爱读书,我 会给他推荐几本有意思的书,让他爱上阅 读。
冰心说:读书好,多读书,读好书。 我知道已经知道了“读书好”同样也会让更 多人知道读书好。我现在读的书虽然也有 一定数量但还不过我要再接再厉“多读 书”最后我还要挑一些好的书推荐给其他 人,当然我自己也会看,做到“读好书”。
身为四中的一份子,身为一个爱读书 的人。我想竞选这个职务——图书管理 员。我会为大家做出贡献!请老师相信我 能担任这个职务!
谢谢!!
辽宁省锦州市第四中学初一:高洪东
各位老师、同学们: 大家好! 今天非常有幸能和班上的各个精英站在一起竞选图书管理员。
图书管理员——是我从未尝试过的,所以我想尝试一下当图书管理员的酸甜苦辣。 对于管理图书方面,我有一个方法:我们可以在一个角落放一个柜子,再拿一个本子来登记每天的捐书情况和借书情况,还要求把借走的书在一周内必须还回来。
如果有人把书弄破或者弄丢了,就必须要偿还两本不同的图书。最后还可以制作一个图书角借书守则,如果谁做不到,那么那个人那个星期则不能接任何书! 杜甫曾经说过:“读书破万卷,下笔如有神。”
想要把做文写好,只有多看作文、多看别人的好文章。所以我会带动大家多看一些能提高自己作文水平的书籍、作品。
因为我想,只要多看一些这些书籍,就一定会对自己的作文有帮助的。 如果我能当选图书管理员,我会尽心尽力的为大家服务;但如果我落选了,我也会做一个服从管理的好学生。
最后,我希望大家能因为相信我能做好一个称职的图书管理员而投我一票。谢谢大家。
我的理想是什么呢?我不想当科学家,不想当作家,也不想当医生……我的理想既没有老师教导的那样伟大,也不像家长期望的那样辉煌,因此我从未向别人谈起过,说出来总怕别人说我没有鸿鹄之志,又担心让人笑我太过于幻想,但我真的很希望我的理想能实现。
我长大后想有一个自己的图书馆,当一名图书管理员。不为别的,就是渴望能读遍天下的书,同时也希望每个人都热爱书,爱读书,用知识来充实自己的头脑。
我爱读书,书中的精彩片段深深地吸引着我,书中的奥秘常让我百思不得其解,书中人物的命运又曾让我无数次泪水涟涟…… 我爱读书,看到书我就像饥饿的人看到面包一样爱不释手。我就像一只勤劳的小蜜蜂,不知疲倦地在书的百花园里采集花粉,又像一块海绵,日夜不停地在知识的海洋中吸着。
小说教给我做人的道理,诗歌唤起我对美好生活的追求,散文照亮我前进的道路,童话让我辨别真假美丑和善恶-…… 我爱读书,一翻开书,我就全身心地投入另一个世界。书就像一个充满智慧的老人不断启迪我,又像是一位真诚的朋友与我面对面地交谈。
书给我打开了世界和未来的窗户,让我看到缉碃光度叱道癸权含护了广阔的天地和未来。 在我的图书馆里各种各样的书籍应有尽有,无论是世人瞩目的名著,清新似水的散文,还是富有哲理的中外诗篇读者在我的图书馆里可以自由的选择、尽情地阅读,在满室的书香中享受心灵的安逸。
在这里,没有喧闹的声音,只有轻轻的翻书声。只要你来到这里,总会有所收获。
而这,就是我快乐的源泉。 书,是精神的食粮,是引导人类进步的阶梯,是给人们带来知识欢乐的朋友。
我喜欢看书,因为好书犹如一叶轻舟载着我去遨游那浩瀚无边的知识海洋。我愿让所有人都来分享那份读书的乐趣,从书中有所收获。
周末的早晨,明媚的阳光从窗外悄悄地探了进来,轻轻柔柔的笼罩着我。
这时,一阵清脆的闹钟 *** 响了起来,一天的“我是南图小管理员活动”拉开了序幕! 到了南图后,我迫不及待地冲进“少儿阅览室”,一看,啊!今天来的小读者可真多啊!过了一会儿,老师见小管理员们都已到达了岗位后便向我们讲解了可以使我们排书更快的书号后,我们便开始了“让书回家”了。也使我尝到了一个新的小管理员的苦与喜的滋味。
第一种滋味——苦:我拿这一本书努力地一个书架一个书架地对号,终于找到了这本《八十天环游地球》的“家”,我便高高兴兴地放到了书架上。谁知!一个小弟弟跑来,拿起了《八十天环游地球》来简单的翻了翻,看不满意,便随手把书放到另一个书架上,不管他了。
我拿着书跑去跟他一本正经地说:“小同学你不能乱放书,应该不看时,从哪拿的就放哪去。这样才是一名好读者!” 小弟弟懂事的点了点头,看着我笑了笑。
随后,我回到了图书车旁。一看图书车旁的书架 上,一片混乱,仿佛刚刚经过了一场战争一样。
我赶快耐心的将书架上的图书整理好。可等我整理一圈后回到刚才的书架上一看,才发现书又被弄乱了。
第二种滋味——甜:虽然当管理员有点苦,但是我还学到了好多东西。例如:凭着书号去找书;要爱护图书;每次最多只能拿三本……。
这一次的管理员历程不仅让我懂得了一位图书管理员的辛苦,还让我懂得了要爱护图书。 这真是一个特殊的周末啊。
今天,外面的天气热得像一个大火球。
可我的心情紧张又兴奋,因为我要去宁波书城当一天的小小图书管理员。 来到书城,管理员姐姐把我们分成了中学组和小学组,讲解了工作内容以后,把我和另外一位五年级的姐姐分在了少儿文学的区域。
我来到书架前,把书都排整齐,然后再把同样的书放在一起,可是,有好几本书却孤零零的,我怎么也找不到它们的家,只好请教了管理员姐姐之后,再把它们送回了家。等我回来时,刚刚整好的书架又乱了,因为有很多人,看好书没有放到原位,大大的增加了工作人员的事情,所以,我希望自己还有别人以后能改正缺点。
一天的管理员工作结束了,虽然很累,但使我明白了一个道理:要珍惜别人的劳动成果。
各位老师、同学们:
大家好!
今天非常有幸能和班上的各个精英站在一起竞选图书管理员。
图书管理员——是我从未尝试过的,所以我想尝试一下当图书管理员的酸甜苦辣。
对于管理图书方面,我有一个方法:我们可以在一个角落放一个柜子,再拿一个本子来登记每天的捐书情况和借书情况,还要求把借走的书在一周内必须还回来。如果有人把书弄破或者弄丢了,就必须要偿还两本不同的图书。最后还可以制作一个图书角借书守则,如果谁做不到,那么那个人那个星期则不能接任何书!
杜甫曾经说过:“读书破万卷,下笔如有神。”想要把做文写好,只有多看作文、多看别人的好文章。所以我会带动大家多看一些能提高自己作文水平的书籍、作品。因为我想,只要多看一些这些书籍,就一定会对自己的作文有帮助的。
如果我能当选图书管理员,我会尽心尽力的为大家服务;但如果我落选了,我也会做一个服从管理的好学生。
最后,我希望大家能因为相信我能做好一个称职的图书管理员而投我一票。谢谢大家!
今天,外面的天气热得像一个大火球。可我的心情紧张又兴奋,因为我要去宁波书城当一天的小小图书管理员。
来到书城,管理员姐姐把我们分成了中学组和小学组,讲解了工作内容以后,把我和另外一位五年级的姐姐分在了少儿文学的区域。我来到书架前,把书都排整齐,然后再把同样的书放在一起,可是,有好几本书却孤零零的,我怎么也找不到它们的家,只好请教了管理员姐姐之后,再把它们送回了家。等我回来时,刚刚整好的书架又乱了,因为有很多人,看好书没有放到原位,大大的增加了工作人员的事情,所以,我希望自己还有别人以后能改正缺点。
一天的管理员工作结束了,虽然很累,但使我明白了一个道理:要珍惜别人的劳动成果。
1 前言 4 1.1 目的 4 1.2 范围 4 1.3 有关本系统中的定义 4 2 资料引用 4 3 设计思路 4 3.1 数据层设计 5 user_book表的触发器 5 用户续借图书的存储过程 6 到期催还表的视图 7 3.2 数据链接层设计 8 UserBook Entity Bean设计 9 UserConsumer Entity Bean设计 10 UserLogBook Entity Bean设计 11 3.3 数据逻辑层设计 12 TheBook Session Bean设计 13 TheUser Session Bean设计 14 TheLog Session Bean设计 15 3.4 网络应用层设计 15 CheckValue bean 16 EnCode bean 16 JDBCBean bean 16 Rank bean 16 SetUp bean 16 SplitPage bean 17 UserLogin bean 17 SearchBook bean 17 SearchDeadline bean 17 ValidateIMG servlet 17 GetDelete servlet servlet 17 GetBookSubmit servlet 18 GetUserSubmit servlet 18 GetRenewBook servlet 18 GetBorrowBook servlet 18 GetReturnBook servlet 18 4 程序架构 18 4.1 程序组织结构 18 4.2 功能权限划分 20 4.3 WEB程序/页面设计 21 4.4 本系统实现的功能 22 5 任务分工 22 1 前言 1.1 目的 本文档详细描述了图书管理系统的设计,主要是为开发人员提供,使其对本项目的构建和维护有深入的了解。 1.2 范围 本文档的描述只针对图书管理系统的1.0版本。 1.3 有关本系统中的定义 以下是本说明书中用到的专门术语的定义和外文首字母组词的原词组: 术语或缩写 定义与描述 booksManager 本系统的名称 Reader 系统权限:普通读者 BookAdmin 系统权限:图书管理员 UserAdmin 系统权限:用户管理员 SuperAdmin 系统权限:超级管理员(系统管理员) Undergraduate 系统用户角色:本科生 Graduate 系统用户角色:研究生 Teacher 系统用户角色:教师 2 资料引用 清华大学《应用软件平台与核心技术》讲义 顾明 清华大学《应用软件平台与核心技术》助教文档 张伟业、魏岚、陈勇、林彩荣 《精通EJB(第二版)》 《J2EE应用与BEA Web Logic Server》,刑国庆等译,电子工业出版社 2002.4 《设计模式——可复用面向对象软件的基础》,Erich Gamma等,机械工业出版社 3 设计思路 本系统严格按照4层结构设计,分为数据层(SQL server),数据链接层(entity bean),数据逻辑层(session bean),网络应用层(java bean, java servlet, java serverpage)。 四层之间完全独立,可以部署在四台服务器上运行,体现了分布式应用的思想。 数据层的功能严格来说是实现基本的数据存储(逻辑处理功能应该全部交给CMP管理),但因为学习原因,在数据库中也用到了一些逻辑处理,如使用了存储过程+系统级临时表处理读者续借图书的功能、使用触发器防止未还书的用户和未归还的图书被注销以及使用视图检测借书记录实现到期催还功能。 数据链接层实现了和数据库的连接,作用在于屏蔽数据库和平台之间的差异,做到底层无关性。本层利用了模糊查找、多表映射、Relationship等技术,通过find,select方法数据的查找功能,抛出聚集对象或远程接口对象给下一层。 数据逻辑层实现了对数据的逻辑处理,例如将远程接口对象转化为值对象、将聚集对象转化为值对象向量、利用日期类完成查找两个特定日期之间的记录等相对复杂的计算。 网络应用层完成页面跳转和页面显示等应用功能,还有一些附加功能如:图片验证,登录验证,等级控制,代码过滤,分页控制,输入值检测、借书日志打印、系统运行日志记录以及系统设置等。(使用了JDBC实现存储过程和模糊查找图书的功能) 3.1 数据层设计 数据库表 表名 功能描述 user_consumer 记录了用户的所有信息 user_book 记录了图书的所有信息 user_logBook 记录了用户使用本系统的信息,保留了所有的借书记录,可作为系统日志和报表资料 user_book表的触发器 用到的触发器之一,作用:如果要注销的图书被外借没有归还,则回滚此删除操作。 CREATE TRIGGER bookhavelog ON dbo.user_book FOR DELETE AS declare @bookISBN varchar(50) select @bookISBN=book_ISBN from deleted if exists(select * from user_logBook where logb_book_ISBN=@bookISBN and logb_backdate is null) begin rollback return end 用户续借图书的存储过程 利用存储过程实现用户续借图书的逻辑操作,根据用户的当前信息判断其是否有续借的权限,并把处理结果输出到临时表中去。 CREATE PROCEDURE user_renew_book @xxxparm int AS CREATE TABLE ##temp(statement varchar(50)) DECLARE @username varchar(50) SET @username=(select logb_cons_username from user_logBook where ID=@xxxparm) IF @username is null BEGIN INSERT INTO ##temp VALUES ('The ID is not EXIST') RETURN END DECLARE @timelimit int SET @timelimit=(select logb_timelimit from user_logBook where ID=@xxxparm) DECLARE @renewday int SET @renewday=(select cons_maxday from user_consumer where cons_username=@username) DECLARE @maxrenew int SET @maxrenew=(select cons_maxrenew from user_consumer where cons_username=@username) IF (@renewday*@maxrenew)>=@timelimit BEGIN update user_logBook set logb_timelimit=logb_timelimit+@renewday where ID=@xxxparm --update user_consumer set cons_maxrenews=cons_maxrenews-1 where cons_username=@username INSERT INTO ##temp VALUES ('renew successful') RETURN END ELSE BEGIN INSERT INTO ##temp VALUES ('You are not allowed to renew the book') RETURN END GO 到期催还表的视图 利用DATEDIFF,DATEADD,CAST,GETDATE等函数从借书记录表中计算出到期的记录,然后根据此记录找出相应的读者信息,在网页上以email形式催还。 CREATE VIEW dbo.deadline AS SELECT TOP 100 PERCENT dbo.user_logBook.logb_cons_username, dbo.user_logBook.logb_outdate, DATEADD([day], dbo.user_logBook.logb_timelimit, CAST(dbo.user_logBook.logb_outdate AS datetime)) AS deadline_date, GETDATE() AS now_date, dbo.user_consumer.cons_name, dbo.user_consumer.cons_kind, dbo.user_consumer.cons_rank, dbo.user_consumer.cons_email, dbo.user_consumer.cons_maxrenew, dbo.user_consumer.cons_maxbook, dbo.user_logBook.logb_book_ISBN, dbo.user_book.book_name, dbo.user_book.book_kind, dbo.user_book.book_storage, dbo.user_book.book_rank, dbo.user_logBook.logb_timelimit FROM dbo.user_logBook INNER JOIN dbo.user_consumer ON dbo.user_logBook.logb_cons_username = dbo.user_consumer.cons_username INNER JOIN dbo.user_book ON dbo.user_logBook.logb_book_ISBN = dbo.user_book.book_ISBN WHERE (DATEDIFF([day], DATEADD([day], dbo.user_logBook.logb_timelimit, CAST(dbo.user_logBook.logb_outdate AS datetime)), GETDATE()) >= 0) AND (dbo.user_logBook.logb_backdate IS NULL) ORDER BY dbo.user_logBook.logb_cons_username DESC 3.2 数据链接层设计 entity bean UserBook Entity Bean设计 userbook remotehome接口 方法 描述 findAllBook 得到所有的图书信息 findByISBN 通过图书的书号得到图书的信息 findSearcher 利用关键字模糊查找图书信息 selectUserByBookISBN (userbook remote) 利用select方法实现多表相关的查找 findSearcher实现模糊查找的代码: select object(p) from UserBook as p where p.bookName like concat(concat('%',?1),'%') or p.bookAuthor like ?1 or p.bookKind like ?1 or p.bookPublish like ?1 or p.bookAbstract like ?1 or p.bookISBN like concat(concat('%',?1),'%') or p.bookRemark like ?1 UserConsumer Entity Bean设计 UserConsumer remotehome接口 方法 描述 findAllUser 查找所有的用户信息 findByUsername 通过用户名查找用户信息 findSearcher 利用关键字模糊查找用户信息 selectBookByUsername (userconsumer remote) 利用select方法实现多表相关的查找 findSearcher实现模糊查找的代码: select object(p) from UserConsumer as p where p.consUsername like concat(concat('%',?1),'%') or p.consSerial like ?1 or p.consName like concat(concat('%',?1),'%') or p.consRemark like ?1 or p.consEmail like ?1 UserLogBook Entity Bean设计 UserLogBook remotehome接口 方法 描述 findallbybookISBN 查找此书所有的借阅记录 findbybookISBN 查找此书当前的借出记录 findallbyusername 查找此用户所有的借阅记录 findbyusername 查找此用户当前的借出书记录 findbacklog 得到所有已经归还图书的借书记录 findoutlog 得到所有尚未归还图书的借书记录 findbyID 通过记录流水号查找借书记录 findlogbyday 查找某一日期的借书记录 (模糊匹配,例如提交“2004-5”可得到最终记录时间——借阅或归还在2004年5月份的所有借书记录) findallog 得到所有的借书记录 FindLogByDay通过模糊匹配得到一组最终记录时间的代码: select object(p) from UserLogBook as p where ( p.logbBackdate is null and p.logbOutdate like concat(concat('%',?1),'%') ) or ( p.logbBackdate is not null and p.logbBackdate like concat(concat('%',?1),'%') ) 3.3 数据逻辑层设计 session bean TheBook Session Bean设计 TheBook bean 实现图书的增删改查以及模糊搜索、通过书查读者等功能 方法内部实现所有的逻辑处理和转化,返回到远程接口值对象或值对象向量 TheUser Session Bean设计 TheUser bean 实现用户(读者)的增删改查以及模糊搜索、通过读者查书等功能 方法内部实现所有的逻辑处理和转化,返回到远程接口值对象或值对象向量 TheLog Session Bean设计 TheLog bean 主要实现对日志(借书记录)的各项操作,提供多种获得日志的方法(按读者、按图书、按日期、按借还状态等),方法内部实现所有的逻辑处理和转化,返回到远程接口值对象或值对象向量,另外还有如下方法: 方法 功能 public boolean userBorrowBook(String username, String bookISBN) 以一个事务封装读者借书的所有逻辑操作,借书成功返回真值,无法借书返回假值,调用enCode bean对中文进行转码 public boolean userReturnBook(String logbid) 以一个事务封装读者还书的所有逻辑操作,即实现使一笔借书记录销账的功能,调用enCode bean对中文进行转码 public Vector showLogBetweenDays(String dayBegin, String dayEnd) 返回两个日期之间的所有日志,主要利用Calendar类实现 3.4 网络应用层设计 本层本着面向对象思想的封装性、数据模糊性、可重用性等原则设计。 本着系统运行错误在系统中打印(System.out.println)、用户输入和误操作错误导向友好的错误处理页并给出友好的提示的错误处理原则。 每次对会话bean的调用写入系统运行日志文件,默认路径是C:\\booksManagerLog.dat。 CheckValue bean 封装多个静态方法。 可以用于检测某表中某个字段是否已经存在某个值(可用于检测重名用户、重号图书)、检测用户名合法性、检测密码合法性、检测年龄合法性、检测电子邮件合法性、检测数字合法性、检测日期合法性等。 EnCode bean 封装编码转码工作: html显示转码,例如:将<转为<,将>转为&rt;,将数据库中的换行转为html中的换行等等,这样可以屏蔽用户提交文本中的可执行代码。 可重载的中文转码。 密码的加密和解密编码。 JDBCBean bean 封装所有的数据库操作。包括一个带结果集返回的SQL执行方法和一个不带结果集返回的SQL执行方法。 Rank bean 封装4种权限(普通读者、用户管理员、图书管理员、系统管理员)的页面访问,相当于页面加锁功能。 SetUp bean public static String title="SuperLibrary";//系统名称 public static String dbS="booksManagerDS";//数据库的JNDI名 public static String errorPage="dealError.jsp?theError=";//友好的错误处理页,用get方法传递出错原因 public static String homePage="default.jsp";//默认首页 //权限------------------------------------------------------------------------- public static String Reader="Reader";//读者 public static String UserAdmin="UserAdmin";//用户管理员 public static String BookAdmin="BookAdmin";//图书管理员 public static String SuperAdmin="SuperAdmin";//系统管理员 //等级------------------------------------------------------------------------- public static String Undergraduate="Undergraduate";//本科生 public static int UndergraduateRenew=1;//本科生可续借的次数 public static int UndergraduateMaxday=30;//本科生一次可借的天数 public static String Graduate="Graduate";//研究生 public static int GraduateRenew=2;//研究生可续借的次数 public static int GraduateMaxday=45;//研究生一次可借的天数 public static String Teacher="Teacher";//教师 public static int TeacherRenew=3;//教师可续借的次数 public static int TeacherMaxday=60;//教师一次可借的天数 //---------------------------------------------------------------------------- public static int rsPerPage=5;//每页显示记录的数量 public static int minBooks=4;//系统默认的最小借书数 SplitPage bean 将数据记录分页的逻辑实现和页面显示(最简,可在外部由样式表美化)封装在一个bean中,重用时实际只需要传递一个记录集数量的为参数即可,可重用。一般作为session级java bean在页面中被调用,在会话中保存用户对此页面的访问状态,在会话结束之前始终记忆用户访问此页对应的页码。 UserLogin bean 将用户登录的逻辑实现和页面显示(最简,可在外部由样式表美化)封装在一个bean中,包括对用户各种登录情况的处理,可重用。 SearchBook bean 利用JDBC实现模糊查找和按指定类别精确查找图书的功能。 SearchDeadline bean 利用JDBC调用视图实现到期图书的催还功能。 ValidateIMG servlet 动态生成含有随机验证码的图片,在生成图片的同时将验证码写入session中,与用户的登录输入比较。可有效的防止机器人登录。 GetDelete servlet servlet 处理图书、用户、日志的注销操作,根据返回值进行相应页面的跳转。 GetBookSubmit servlet 处理图书的入库和图书信息的修改,根据返回值进行相应页面的跳转。 GetUserSubmit servlet 处理用户的注册和用户信息的修改,根据返回值进行相应页面的跳转。 GetRenewBook servlet 处理用户续借图书的请求(JDBC调用存储过程实现),从系统临时表中读取状态值,根据状态值进行相应页面的跳转。 GetBorrowBook servlet 处理用户的借书请求,将用户借书限额已满、库存为零等错误导向友好的错误页,如果借书成功则跳转到图书信息页面,并给与相应的提示。 GetReturnBook servlet 处理用户的还书请求,如果还书成功则跳转到用户的借书记录页面,并给与相应的提示。 4 程序架构 4.1 程序组织结构 说明:图书搜索和用户登录看作系统外部功能,通过JDBC直接调用数据库,其中用户登录模块封装在一个java bean中,可重用。另外,用户续借图书是通过存储过程实现,从而绕过了使用CMP技术管理事务的实体bean。 本系统其余程序的组织结构严格按照下图实现: 程序组织结构图 4.2 功能权限划分 站点页面地图 权限名称 系统定义字符 权限 可访问页面 普通读者 Reader 查看自己的信息(还书、续借); 修改自己的信息; 查看图书(借书); userModify userView booklist 图书管理员 BookAdmin 拥有普通读者的权限; 图书的增删改查; 到期催还; userModify userView booklist bookAdder bookModify deadline 用户管理员 UserAdmin 拥有普通读者的权限; 用户的增删改查; userModify userView booklist userRegister userModify userList 系统管理员 SuperAdmin 拥有图书管理员和用户管理员的权限; 查看系统日志; 删除系统日志; 系统设置; 包括setupSYS.jsp(系统设置,利用application级java bean控制整个应用程序)在内的所有页面 4.3 WEB程序/页面设计 利用代码关闭客户端的输入法,实现用户名、密码不能出现中文的问题。 利用onfocus=this.select() onmouseover=this.focus()代码使文本框自动吸附获得焦点,方便用户输入。 利用WMODE="transparent"参数使flash的背景透明,更好的融入网页。 在每页中,利用代码: 嵌入上下导航条,使网站导航明确,方便用户浏览。 在网页头部加入代码: 使客户端不缓存网页,保证了客户每次浏览该页都从服务器获得最新的版本,以求正确显示。 提供智能搜索(获得尽可能多的匹配)和精确搜索(获得尽可能精确的匹配)图书,服务器端编程都采用模糊查找的方式。 在客户端用javascript对表单提交进行第一次验码,通过后提交到服务器端,再进行第二次验码,验码包括:用户名是否重复、年龄是不是合适的数字,两次密码输入的是否一致、电子邮件是否合法、密码是否太短、用户名是否太短、用户名密码是否为空等等。 利用随机生成JPG图片验证码的方法,防止机器人登录。 在页面中使用session级java bean实现分页,在会话中保存用户对此页面的访问状态,在会话结束之前始终记忆用户访问此页对应的页码。 在页面中使用application级java bean实现安全的系统设置,当服务器启动后,即可对系统运行参数进行应用程序级的设置,只要服务器不关闭,此设置始终有效且作用于所有用户,如果设置不慎造成系统错误或想恢复系统默认设置,则只需重新启动服务器即可。 在对会话bean的调用包ejbClient中,创建系统运行日志,通过包中的writeF类写入web服务器的C:\\booksManagerLog.dat中,可做查询用。 4.4 本系统实现的功能 确定图书的基本信息,有书名、作者、出版日期、当前借阅状态等属性 系统的使用者包括读者、图书管理员、用户管理员、系统管理员四种 读者可以查询图书;图书管理员可以完成图书管理、借阅管理;读者管理员可以完成读者管理的功能;系统管理员可以使用系统的所有功能 图书管理:新书登记,图书查询,图书注销; 借阅管理:借书,还书,查询到期读者 读者管理:增加读者、删除读者、查询读者、读者类别管理(设置研究生,本科生,教师的可借册数,可借天数,可续借次数等) 系统管理:系统管理员使用,包括用户权限管理(增加用户,删除用户,密码修改等),系统借书日志,系统运行日志,系统设置等功能 页面输入有验码,密码存取有加密 图书到期催还 体现分层设计思想,使用MVC架构 实现了多个Beans,Bean之间实现了对应的关系 使用了EJB QL,事务控制等 使用了jsp->sessionBean->entityBean->数据库模式 数据库使用了触发器和存储过程等一些高级技术
326 浏览 6 回答
337 浏览 7 回答
272 浏览 2 回答
280 浏览 2 回答
128 浏览 2 回答
326 浏览 2 回答
194 浏览 3 回答
275 浏览 2 回答
105 浏览 2 回答
288 浏览 2 回答
346 浏览 2 回答
251 浏览 2 回答
157 浏览 2 回答
110 浏览 2 回答
165 浏览 4 回答