整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

日本国立国会图书馆借阅全攻略(附资料远程复印方法)

日本国立国会图书馆借阅全攻略(附资料远程复印方法)

对于在日留学生来说,日本国立国会图书馆绝对是个绕不开的地方。无论是初初考学时写研究计划,还是后来考上心仪院校,开始了正式的学习、研究,国会图书馆都是一个好伙伴,它像一个巨大的宝库,总能挖到你所需的“宝藏”,还能替你省下一大笔购置书籍的开销——特别是些昂贵的绝版旧书。

希望这篇文章能给即将开启自己学术生涯,或是在国内要做日本方面的研究,对里面的资料有需求的各位提供一点点帮助和参考。

?国立国会图书馆概况

首先,向对于这个地方不甚了解的同学们做一个简单的介绍。

国立国会图书馆之所以如此特别,主要是因为它是唯一隶属于国会的国立图书馆,也是日本唯一实行“呈缴本制度”(又称“法定送存”,日语为“納本制度”)的图书馆。呈缴本制度,指的是法律规定所有出版机构或负有出版责任的单位,凡出版一种出版物,必须向指定的图书馆或出版主管机关免费缴送一定数量的样本。所以在这里,你能找到日本国内全部出版物。不仅如此,这里还不断补充着海外发行的各类书籍,亦或是各种对于研究、调查有用的资料。

国立国会图书馆的东京本馆和关西馆组成了它的中央图书馆。另外还有支部图书馆,由国际儿童图书馆、东洋文库以及分布在各行政、司法机关内的图书馆组成。

接下来的使用攻略,主要针对的是在东京本馆内以及一些远程使用的情况。

东京本馆

△从永田町2号口往国会图书馆走能看到这个大门,但现在一般都是从侧门进,侧门在面向这栋建筑物时的右手边

[ 交通 ]

东京本馆的地址是千代田区永田町1-10-1

比较方便的是乘坐有乐町线到永田町,从2号出口出去后左手边的马路穿过去后,就已经能看到东京本馆的建筑物了。另外也可以坐半藏门线南北线坐到永田町,或者千代田线丸内线坐到“国会議事堂前”。

△秋天的国会图书馆前的银杏树超好看

[ 开放时间 ]

周一~周五:9:30~19:00;周六:9:30~17:00

由于疫情原因,馆内虽然在7月1日之后取消了周一至周五的抽选制度,但每日场馆内还是会限流,超过1000人之后就不会再让人进了,所以有需要的朋友尽量早上开馆的时候就去。

另外周六仍旧保持着之前的抽选制度,需要提前申请参与抽选,被抽中的人周六才能去。详情可见国会图书馆首页。

(国会图书馆主页:https://www.ndl.go.jp/index.html

[ 休馆日 ]

周日,法定节假日,年始年末,每个月的第三个周三(资料整理休馆日)皆为休馆日。

具体详情可以查看下图(红色部分为休日)。

[ 入馆流程 ]

?(1)图书卡办理

国会图书馆虽然对所有人都开放,但和国内大多数图书馆一样,需要办理图书卡才能进入。如果要长期利用或者是查阅书库内的资料的话,一定要办他们的图书卡(登録利用者カード)

△登録利用者カード,后文简称图书卡

如果只是去一天,并且只希望看看开架书,那可以去办理一张“当日利用カード”。但是,由于国会图书馆里大部分的书籍都不是放在书架上,而是收在书库里,借阅都是需要工作人员取出来给你。另外,远程复印也是需要图书卡的,所以最好还是直接办张“登録利用カード”。

这边先说一下办卡流程

首先办卡需要年满18岁(未满18岁的同学需要事先联络图书馆,具体详情可见:https://www.ndl.go.jp/jp/help/useguideunder18.pdf)。带好自己的身份证明,留学生的话带着在留卡就行了。

办理时间和每天图书馆的开放时间不一样,要注意。

[办理柜台开放时间]

周一~周五:9:20~18:30;周六:9:20~16:30

[办理需要材料]

① 申请表

申请表可以当场填写,也可以自己打印一张填完了带过去。表格:https://www.ndl.go.jp/jp/registration/tourokushinsei.pdf

② 身份证明

有效期间内的身份证明,上面的内容需和你填的表格上的需要一致。所以填表时,建议在留卡上有汉字的同学再填汉字,如果只有英文的,最好直接填英文。

登录也可以不去柜台,而是通过邮寄的方式提出申请。请将上述①的表格填写好之后,和②的复印件一起加上返送信封(不用贴邮票)一起用信封装好之后,邮寄到下述地址。邮寄的时候注意,信封上要用红笔写上「利用者登録申請書在中」。

国立国会図書館関西館 文献提供課複写貸出係

〒619-0287 京都府相楽郡精華町精華台8-1-3

(2)存包

有了图书卡以后就能进入馆内啦。

国会图书馆是不能带自己的包进去的,包需要寄存在门口的储物柜里。储物柜本身是免费的,但用的时候需要放个100日元硬币进去,这个钱在你最后取东西的时候会退给你。记得带个100日元哦。

不能拿进去的东西有:B5以上的不透明的袋子或包包(电脑套最好不要带,如果要带的话也是允许的,但是离开的时候需要打开来给前台那边看一下);照相机、录像机之类的能拍照、扫描类的东西(手机可以带,但不要拍照呀);刀具之类的尖锐物体;伞(折叠伞也不行),伞可以放在入口伞架处;动植物(这个就不需要说了吧);其他一切可能会损害资料和馆内环境的东西。

瓶装水和吃的可以带进去,但是喝水只能在指定的区域(水分補給エリア或是小花园、食堂),吃东西只能在食堂和“喫茶スペース”吃。

(3)进入

放好包以后,走到闸机入口处,拿图书卡在闸机口的感应区上刷一下,门就打开了。

(4)借书

[ 书籍借阅情况 ]

平常我们去的图书馆,书籍大部分都直接放在书架上,可以自己随意取阅。但国会图书馆不一样。它的藏书大多被保存在内部书库里,而书库是不能随意进入的,只有工作人员能进去。所以这边的书籍借阅方式就会有所不同。

[ 书籍借阅流程 ]

?登录系统

利用图书馆内的电脑或是自己的电脑搜索所需资料

图书馆内的电脑使用时都需要前面说的“登録利用カード”。电脑屏幕前会有一个读卡器,只需要把卡放在上面,输入密码,就能登录系统。

检索

这是它的系统主页面,左上第一个“資料を検索して申し込む”。点进去后,在搜索栏输入作者名或者资料名等就能检索到对应资料。

△以夏目漱石为例,这是检索后的页面

借阅申请

点进其中某一个条目,能看到这本书或文章的详细内容。下方会显示藏有该书的场馆,如果要现场借阅的情况,记得选择自己所在场馆,再点击“閲覧”将它添加进购物车里。

△书籍详情页面

全部选好了以后,进入到购物车中(在页面右上角处),可以一次性申请。借阅的时候需要确认一下这个资料是属于图书还是杂志(论文也算杂志),图书的话一次可以借5本,杂志的话一次可以借10本。超出的话需要归还一部分再重新申请借阅。

(5)取书

等申请好以后,需要等待一段时间,工作人员会从书库里将你申请的书取出,送到“受取”柜台。当系统里提示你的书已经被送到柜台后,只要拿上图书卡就能去取了。取书时把图书卡递给工作人员,或是直接放置在读卡器上。工作人员会把已到达柜台的书籍拿给你。走的时候别忘了拿走图书卡哦。

还书的地方和借阅的柜台是相连的两个不一样的柜台,注意看一下。需要推车的可以看一下借阅柜台附近,有需要的直接去推就可以了。

图书的柜台和杂志柜台是分开的,图书在本馆,杂志在新馆,两边场馆内部是相通的,但是走来走去也很费事,所以为了节约时间,当天选座位的时候可以根据自己该日需要借阅的文献类别来选座位。如果参考的论文集比较多,会比较建议新馆二楼的座位,里面有一个玻璃门围起来的厅,座位很宽,可以插充电器,很适合坐一天赶论文;如果需要参考的文献大多数图书的话,那就直接坐在本馆吧!

[ 复印流程 ]

国会图书馆所有的书籍都只能在馆内阅读,不会向个人外借,所以如果有想要带回家参考的资料就只能利用它的复印服务。

东京本馆的复印区在新馆的1楼和本馆2楼,任意一处都可完成全部申请流程。

(1)网上申请

复印流程基本上就是先在电脑上提交申请。还是刚才的系统登录页面,在资料搜索的按键下方有“複写申込書作成”,点进去后能直接看到已借阅的书籍。选择“即日”或“後日郵送”,意思就是今天申请的复印资料是当天取还是之后给你送到家里。一般这种都直接选当日取就好了。

(2)打印申请书

按电脑上的提示提交申请后,就可以拿上自己的图书卡,放到旁边的打印机前的读卡器上,打印机就会自动打印刚才填写的申请书。

(3)填写申请书

拿着申请书和要复印的书,到旁边有放置笔的小台子上。桌上有放一些裁好的纸条,要拿两张,分别夹在你需要复印的书的起始页和最终页处。并在申请书上按要求填写好页数,和使用目的。

(4)受理

之后只需要将自己的图书卡,标注好起始页和最终页的书,以及填好的申请书一起交给复印柜台的工作人员就可以了。

工作人员会跟你确认页数和使用纸张的大小等,确认好之后会告诉你大概所需时间。是否复印完成都是能在系统上看到的,在图书馆使用wifi的时候,自己的电脑也能直接看到系统内申请借阅书籍是否到达,复印是否完成等信息。

(5)取复印资料

当提示复印完成后,就可以带着图书卡去取。

复印服务的收取柜台和刚才“受付”柜台也是相连的两个不一样的地方。把图书卡交给工作人员或直接放在读卡器上,工作人员会把复印好的东西拿过来,并结算。

这里支付方式可以用现金也可以用各类“電子マネー”,目前应该还不能用支付宝或微信,所以进图书馆前可以留些现金在身上,或者跟我一样直接带suica(后来手机上可以绑定suica之后,我就只带手机了)。包括楼上食堂和小卖部都是可以直接刷suica的,全程一定要现金的地方只有门口存包处(100日元)。

[ 复印服务申请时间 ]

平日10:00~18:00;周六10:00~16:00

[复印件递交时间]

平日10:00~18:40;周六10:00~16:40

[可复印页数]

纸质资料1次可申请10本以内,共计150页的内容。一般,根据著作法,每本书最多只能复制全部内容的1半。


远程复印流程

想要远程复印首先要有图书卡。在家申请图书卡的流程已在上文详细记述过了。

在家找到自己需要的资料之后,在这个资料的详细页面上就能找到“遠隔複写”的选项。

点进去后,就需要你填写一下需要复印的部分。

书籍的话只需要填写页数就可以了。论文的话因为都是收录在论文集或杂志中,所以需要填论文名、作者名、杂志的卷号,以及具体页数。这些都能在该论文的详情页中找到。

填写好之后,就可以追加进购物车。可以几个需要复印的一起填写申请,都加入购物车,全选后,点击“申込手続に進む”,会进入确认环节。

主要需要确认的地址和邮箱是否正确,使用目的直接勾选“調査研究の用に供するため”就可以了。按照电脑操作指示点击到最后即可。万一有申请不通过的特殊情况,工作人员会以邮件告知。复印费用的请求书会和资料一起寄到家里,收到后20天以内拿到便利店或者是去银行支付就可以了。

支付时如需要付手续费,这部分需要我们自己承担。申请后的5个工作日左右东西一般就会寄出,如果15天后都没收到,或者是收到的资料不完整,可以电话咨询图书馆工作人员。

[ 联系方式 ]

関西館:文献提供課複写貸出係

〒619-0287 京都府相楽郡精華町精華台8-1-3

0774-98-1313(関西館開館日の9時30分~18時)

東京本館所蔵資料の複写についてのお問い合わせ

東京本館:利用者サービス部複写課遠隔複写係

03-3581-2534(東京本館開館日の9時30分~17時45分)

国際子ども図書館所蔵資料の複写についてのお問い合わせ

国際子ども図書館:資料情報課情報サービス係

〒110-0007 東京都台東区上野公園12-49

03-3827-2053(代表)(国際子ども図書館開館日の9時30分~17時)

?

最后的话

以上就是国会图书馆大致的一些使用情况。

如果有不清楚的部分,或者是其他想要了解的内容,可以在国会图书馆的官网查询到相关信息。祝大家考学,写论文都顺利!

、简介

1.1、开发目的和背景


在过去的几年里,企业面临了信息碎片化、流程繁琐、管理效率低下的挑战。因此,我们深入理解了企业用户对于统一、便捷、透明的管理工具的需求,开发了此智能系统。它集成了多项核心功能模块,如部门管理、财务管理等,旨在提供一站式的解决方案,帮助各业务部门实时监控、跟踪和分析关键业务数据,提高决策速度和准确性。


例如,通过服务评价管理和投诉建议管理,我们可以快速响应用户反馈,改进服务质量;合同管理和资产管理部门则确保法律合规性和资源的有效利用。日志管理和权限管理确保数据安全,而应急预案管理和知识库管理则能在突发情况下提供应急响应策略。


总的来说,《办事指南智慧管理系统》的开发目标是简化复杂的行政事务,提升工作效率,降低运营成本,同时增强组织内部的信息共享与协同工作能力,以适应现代企业对高效、智能化办公环境的需求。我们相信,通过使用这款软件,每个用户都能体验到工作方式的革新,享受到科技带来的便利。

1.2、软件的目标用户


"办事指南智慧管理系统"是一款专为大型企事业单位和政府机构设计的高效办公工具,它集成了众多关键业务流程,旨在提升组织内部的运营效率和管理水平。想象一下,一个繁忙的行政部门,日常需要处理各种部门间的协调、财务审核、合同签订、会议安排,以及客户服务满意度的追踪。这个系统就像是一个智能中枢,员工只需登录,即可在统一平台上一站式完成上述所有任务。


例如,部门管理员可以快速查看和调整人员配置,进行权限分配;财务部门可通过系统实现预算管理、报销流程自动化,极大地减少了人工操作的错误和时间成本;会议管理模块支持在线预约和记录,确保信息的及时传递;而服务评价管理则能实时反馈客户意见,帮助企业持续改进。


我们的目标用户主要包括各级政府机关、企事业单位的行政管理人员、财务人员、项目经理、客户服务团队、法规政策研究者等。他们可能是需要管理复杂行政流程的行政主管,或是关注公司财务状况的财务专家,或者是需要维护公司声誉的服务团队负责人。此外,对于政策制定和执行的决策者,知识库管理和政策法规管理模块也将成为他们的得力助手。无论是在日常办公还是应对突发事件时,办事指南智慧管理系统都能提供强大的支持,帮助他们提高工作效率,优化工作流程,实现数字化转型。

二、软件总体设计

2.1、系统概述


"办事指南智慧管理系统"是一款全面集成的管理软件,专为提高组织运营效率而设计。其基于Java开发,依托于SpringMVC框架,确保了系统的稳定性和可扩展性,而MySQL数据库则提供了高效的数据存储和处理能力。


该软件的核心功能模块丰富多样,旨在实现精细化管理。部门管理模块帮助组织清晰划分职责,提升协作效率;财务管理模块涵盖预算控制、资金流跟踪等,实现财务透明化;调查统计管理模块通过数据分析,为决策提供有力支持。服务评价管理模块鼓励用户反馈,持续优化服务质量;合同管理确保合同流程合规,降低法律风险。


会议管理和借阅管理提供便捷的资源调配工具,权限管理则严格控制用户访问权限,确保信息安全。日志管理和手续流程管理确保操作的可追溯性,通知公告管理确保信息即时传达。投诉建议管理用于收集改进意见,文件归档管理保障文档有序存放,项目管理和应急预案则确保项目顺利进行。


用户管理模块便于管理员对用户进行管理,预算管理助力成本控制,政策法规管理保持合规性,知识库管理则是知识共享的平台,资产管理则负责实物和无形资产的追踪。


总的来说,"办事指南智慧管理系统"是一个集成了企业管理各个方面的重要工具,旨在通过智能化手段,简化操作,提升组织运营效率,满足现代企业多元化、精细化的需求。

2.2、系统架构

一、总体架构


"办事指南智慧管理系统"采用B/S(Browser/Server)架构设计,这是一种客户端-服务器端的架构模式,用户通过标准的Web浏览器访问,所有的业务逻辑和数据处理都集中在服务器端执行,从而极大地降低了系统的复杂性和对用户设备的要求。


二、核心组件


1. 前端界面(User Interface, UI):基于HTML、CSS和JavaScript构建,采用响应式设计,适应不同终端设备的屏幕尺寸,提供直观易用的图形用户界面。主要模块有各个功能列表、数据展示、操作界面等。


2. 后端服务(Business Logic, BL):使用Java作为主要编程语言,结合Spring MVC框架,提供稳定、高效且可扩展的服务。每个功能模块对应一个或多个控制器,处理用户的请求,调用业务逻辑层处理具体操作,并将结果返回给前端。


3. 数据库管理(Database Management, DM):采用关系型数据库如MySQL或Oracle,存储所有的业务数据,包括部门信息、财务记录、用户信息等,支持事务处理和安全访问控制。


4. 服务层(Service Layer, SL):作为BL与DM之间的桥梁,封装数据库操作,提供易于维护和扩展的业务服务接口。


三、模块间协作


各部门功能模块之间通过接口进行通信,实现数据共享和协同工作。例如,用户管理与权限管理相互联动,确保只有经过授权的用户才能访问特定功能;财务管理与项目管理通过预算和资金流动进行关联。


四、安全性设计


系统采用了多层安全措施,包括用户身份验证、数据加密传输、访问权限控制等,以保护敏感信息不被非法获取或篡改。


五、性能优化


考虑到大数据量处理和并发访问,系统设计了负载均衡和缓存机制,以提高响应速度和系统稳定性。


总的来说,"办事指南智慧管理系统"是一个集成、模块化、可扩展的系统,旨在提供高效、安全、易用的管理服务,满足组织内部多样化的办公需求。

三、软件使用说明

3.1、系统登录


在浏览器中输入系统网址,打开登录界面后输入登录账号、登录密码、验证码即可登录。

3.2、工作台


工作台包含:部门管理、财务管理、调查统计管理、服务评价管理、合同管理、会议管理、借阅管理、权限管理、日志管理、手续流程管理、通知公告管理、投诉建议管理、文件归档管理、项目管理、应急管理、用户管理、预算管理、政策法规管理、知识库管理、资产管理,根据不同角色权限菜单展示会有所区别。

3.2.1、部门管理


管理功能主要字段信息包含:管理编码、部门名称、上级部门、负责人、联系方式等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


针对管理,系统精心设置了全方位功能模块,涵盖新增、编辑、删除、导出、条件检索以及查看详情等核心操作。用户在使用过程中,仅需紧密跟随页面内直观且详尽的操作提示,即可轻松驾驭各项流程。我们秉持化繁为简的理念,打造出简约明快的界面风格与逻辑清晰的操作流程,旨在让用户在高效管理数据,享受到愉悦、无压力的操作体验。

3.2.2、财务管理


管理功能主要字段信息包含:管理编码、收支类型、收入/支出金额、收支对象、收支时间、经办人等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


为实现对管理,系统精心配备了丰富的功能组件,包括新增、编辑、删除、导出、条件搜以及详情查看等实用操作。用户在操作过程中,只需遵循页面上清晰易懂的引导提示,即可顺畅地完成各项任务。我们注重用户体验,以简约而不失专业的界面设计,辅以直观且高效的流程布局,旨在助力用户在轻松管理数据同时,全面提升操作满意度与工作效率。

3.2.3、调查统计管理


管理功能主要字段信息包含:管理编码、调查问题、选项、调查人、调查日期、统计结果等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


为满足管理的多元需求,系统配置了一系列操作功能:新增、编辑、删除、导出、搜索、详情。用户在实际操作中,仅需按照页面上直观且详尽的操作提示,即可轻松驾驭各项流程。系统界面设计简约清爽,操作逻辑清晰明了,旨在让用户在高效管理数据的同时,尽享流畅、无压力的操作体验,大幅提升工作效率与满意度。

3.2.4、服务评价管理


管理功能主要字段信息包含:管理编码、评价人、评价日期、评价对象、评价内容、评价结果等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


管理设置新增、编辑、删除、条件搜索、查看详情等操作,可按照页面提示进行操作执行,界面结构设计简单,操作流程简洁明了,可提升用户操作体验。

3.2.5、合同管理


管理功能主要字段信息包含:管理编码、合同名称、合同编号、签约单位、签约时间、合同金额等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


系统为管理提供了全面支持,包括新增记录、编辑信息、删除条目、数据导出、条件检索及详情查看等功能。用户只需遵循页面清晰的操作指引,即可轻松完成各项任务。界面设计遵循极简原则,布局直观,交互流畅,旨在营造无负担的操作环境,显著提升用户的使用体验与工作效率。

3.2.6、会议管理


管理功能主要字段信息包含:管理编码、会议名称、会议地点、会议时间、参会人员、会议议程等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


针对管理,系统精心设置了全方位功能模块,涵盖新增、编辑、删除、导出、条件检索以及查看详情等核心操作。用户在使用过程中,仅需紧密跟随页面内直观且详尽的操作提示,即可轻松驾驭各项流程。我们秉持化繁为简的理念,打造出简约明快的界面风格与逻辑清晰的操作流程,旨在让用户在高效管理数据,享受到愉悦、无压力的操作体验。

3.2.7、借阅管理


管理功能主要字段信息包含:管理编码、借阅人、借阅日期、借阅图书、借阅数量、归还日期等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


为实现对管理,系统精心配备了丰富的功能组件,包括新增、编辑、删除、导出、条件搜以及详情查看等实用操作。用户在操作过程中,只需遵循页面上清晰易懂的引导提示,即可顺畅地完成各项任务。我们注重用户体验,以简约而不失专业的界面设计,辅以直观且高效的流程布局,旨在助力用户在轻松管理数据同时,全面提升操作满意度与工作效率。

3.2.8、权限管理


管理功能主要字段信息包含:管理编码、角色名称、权限设置、角色描述等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


为满足管理的多元需求,系统配置了一系列操作功能:新增、编辑、删除、导出、搜索、详情。用户在实际操作中,仅需按照页面上直观且详尽的操作提示,即可轻松驾驭各项流程。系统界面设计简约清爽,操作逻辑清晰明了,旨在让用户在高效管理数据的同时,尽享流畅、无压力的操作体验,大幅提升工作效率与满意度。

3.2.9、日志管理


管理功能主要字段信息包含:管理编码、用户、操作时间、操作内容、操作结果等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


管理设置新增、编辑、删除、条件搜索、查看详情等操作,可按照页面提示进行操作执行,界面结构设计简单,操作流程简洁明了,可提升用户操作体验。

3.2.10、手续流程管理


管理功能主要字段信息包含:管理编码、流程名称、所属部门、流转节点、申请材料等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


系统为管理提供了全面支持,包括新增记录、编辑信息、删除条目、数据导出、条件检索及详情查看等功能。用户只需遵循页面清晰的操作指引,即可轻松完成各项任务。界面设计遵循极简原则,布局直观,交互流畅,旨在营造无负担的操作环境,显著提升用户的使用体验与工作效率。

3.2.11、通知公告管理


管理功能主要字段信息包含:管理编码、通知标题、发布人、发布日期、通知内容、附件等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


针对管理,系统精心设置了全方位功能模块,涵盖新增、编辑、删除、导出、条件检索以及查看详情等核心操作。用户在使用过程中,仅需紧密跟随页面内直观且详尽的操作提示,即可轻松驾驭各项流程。我们秉持化繁为简的理念,打造出简约明快的界面风格与逻辑清晰的操作流程,旨在让用户在高效管理数据,享受到愉悦、无压力的操作体验。

3.2.12、投诉建议管理


管理功能主要字段信息包含:管理编码、投诉人、投诉时间、投诉问题、投诉结果、解决方案等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


为实现对管理,系统精心配备了丰富的功能组件,包括新增、编辑、删除、导出、条件搜以及详情查看等实用操作。用户在操作过程中,只需遵循页面上清晰易懂的引导提示,即可顺畅地完成各项任务。我们注重用户体验,以简约而不失专业的界面设计,辅以直观且高效的流程布局,旨在助力用户在轻松管理数据同时,全面提升操作满意度与工作效率。

3.2.13、文件归档管理


管理功能主要字段信息包含:管理编码、文件名称、文件编号、文件分类、文件内部编号、归档责任人等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


为满足管理的多元需求,系统配置了一系列操作功能:新增、编辑、删除、导出、搜索、详情。用户在实际操作中,仅需按照页面上直观且详尽的操作提示,即可轻松驾驭各项流程。系统界面设计简约清爽,操作逻辑清晰明了,旨在让用户在高效管理数据的同时,尽享流畅、无压力的操作体验,大幅提升工作效率与满意度。

3.2.14、项目管理


管理功能主要字段信息包含:管理编码、项目名称、负责人、项目类型、起始日期、截止日期等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


管理设置新增、编辑、删除、条件搜索、查看详情等操作,可按照页面提示进行操作执行,界面结构设计简单,操作流程简洁明了,可提升用户操作体验。

3.2.15、应急管理


管理功能主要字段信息包含:管理编码、应急预案名称、应急措施、执行人、执行时间、应急联系方式等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


系统为管理提供了全面支持,包括新增记录、编辑信息、删除条目、数据导出、条件检索及详情查看等功能。用户只需遵循页面清晰的操作指引,即可轻松完成各项任务。界面设计遵循极简原则,布局直观,交互流畅,旨在营造无负担的操作环境,显著提升用户的使用体验与工作效率。

3.2.16、用户管理


管理功能主要字段信息包含:管理编码、用户名、密码、角色、电话、邮箱等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


针对管理,系统精心设置了全方位功能模块,涵盖新增、编辑、删除、导出、条件检索以及查看详情等核心操作。用户在使用过程中,仅需紧密跟随页面内直观且详尽的操作提示,即可轻松驾驭各项流程。我们秉持化繁为简的理念,打造出简约明快的界面风格与逻辑清晰的操作流程,旨在让用户在高效管理数据,享受到愉悦、无压力的操作体验。

3.2.17、预算管理


管理功能主要字段信息包含:管理编码、预算名称、预算类型、预算金额、审批人、审批时间等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


为实现对管理,系统精心配备了丰富的功能组件,包括新增、编辑、删除、导出、条件搜以及详情查看等实用操作。用户在操作过程中,只需遵循页面上清晰易懂的引导提示,即可顺畅地完成各项任务。我们注重用户体验,以简约而不失专业的界面设计,辅以直观且高效的流程布局,旨在助力用户在轻松管理数据同时,全面提升操作满意度与工作效率。

3.2.18、政策法规管理


管理功能主要字段信息包含:管理编码、标题、发文单位、发布日期、文号、内容等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


为满足管理的多元需求,系统配置了一系列操作功能:新增、编辑、删除、导出、搜索、详情。用户在实际操作中,仅需按照页面上直观且详尽的操作提示,即可轻松驾驭各项流程。系统界面设计简约清爽,操作逻辑清晰明了,旨在让用户在高效管理数据的同时,尽享流畅、无压力的操作体验,大幅提升工作效率与满意度。

3.2.19、知识库管理


管理功能主要字段信息包含:管理编码、知识库名称、知识点分类、知识点描述、上传人员、上传时间等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


管理设置新增、编辑、删除、条件搜索、查看详情等操作,可按照页面提示进行操作执行,界面结构设计简单,操作流程简洁明了,可提升用户操作体验。

3.2.20、资产管理


管理功能主要字段信息包含:管理编码、资产名称、资产编号、规格型号、资产类别、存放位置等。使用表格形式展示这些信息,方便用户查看和编辑,方便用户进行管理信息的管理。


系统为管理提供了全面支持,包括新增记录、编辑信息、删除条目、数据导出、条件检索及详情查看等功能。用户只需遵循页面清晰的操作指引,即可轻松完成各项任务。界面设计遵循极简原则,布局直观,交互流畅,旨在营造无负担的操作环境,显著提升用户的使用体验与工作效率。

四、注意事项


系统支持唯一登录,一个账号同时只能由一人使用。信息展示顺序如果特殊说明,按照排序索引值从大到小进行排序。数据删除之后,其关联的数据将不可用使用,或无法正常显示。内容状态一般为正常时,表示数据可正常使用操作,如果为异常或者未审核,则表示在关联数据调用时,不会显示。

网站是个人网站,设计目的展现个人风采,设计风格是根据个人喜好设计,简约唯美的风格图片以及图标现个人特色。主要功能要注册登录、个人简介、个人爱好、个人收藏、留言管理,完善个人信息等功能模块


其他主要模块的定义


页面

作用

Login.jsp

登录,检验用户名是否为空,Ajax网页的异步刷新

Do.jsp

验证账号密码是否和数据库相同,显示错误信心

Index.jsp

指引页面

Customer.java

用户的用户名,密码

CustomerDao.java

链接数据库 ,获得数据库里用户的密码

EncodingFilter.java

文字过滤器

ValidateServlet.Java

检查验证码是否正确

validateMix.jsp

验证码生成页面

ftz.java。

该页面用于防止用户绕过登录直接跳转到其他页面进行操作




  • 素材的创作与编辑

网站图片来源:wps画报,百度,web实验,表情包图片

音乐:酷狗音乐下载,通过audacity剪辑其中部分

  • 开发环境及使用技术

开发环境搭建

Myeclipse2018和mysql和navicat for mysql(可视化mysql工具)

运行工具

2345加速浏览器(IE模式 超速模式) chrome浏览器均可运行

使用主要技术

  1. 前端采用HTML+CSS+JavaScript+bootsrap实现。

javaScript技术:表单验证关键字,滚动字幕 逐字显示(index2.jsp),显示日期时间JavaScript HTML DOM 事件(collection.jsp index.jsp等)

Boostrap实现响应式布局

(2)作品后端要求采用JSP、JavaBean、Servlet以及数据库等技术实现

JSP内置对象:本网站主要运用了 request, response, session三个。request主要用来获取用户输入的基本信息以及具体页面进行的操作中需要的数据。利用response来进行重定向,以及实现目的页面跳转用法为 response.setHeader("refresh","刷新时间间隔;目的页面地址");

验证码技术的使用:避免重复登录。是服务器随机产生验证码字符串,保存在session中,并写入图片,将图片连同表单发给客户端。用户输入账号密码验证码,将获取的验证码与随机产生的验证码进行比较,相同则继续进行,不同将错误信息返回客户端,避免程序的继续运行。

JavaBean:将用户登录的信息封装在JavaBean中,在需要时从JavaBean中读出。DAO本次主要用CustomerDao.java链接数据库 ,获得数据库里用户的密码

servlet这里主要用的是doGet()和doPost()。本实例主要用来验证验证码是否准确。以及使用Filter来解决常常会出现中文乱码情况。ftz.java:该页面用于防止用户绕过登录直接跳转到其他页面进行操作。该页面主要用了Filter过滤器来实现防止跳转的功能。该过滤器进行跳转页面之前进行判断是否有用户名,若有用户名则代表用户进行登录操作,过滤器放行;若用户名为NULL,则过滤器不放行,直接跳转到登录页面。

Ajax用于网页的异步刷新和只刷新网页的一小部分,可以带来更好的用户体验,减轻服务器负担,

MYSQL数据库:用JDBC将JAVAWEB和数据库连接,在数据库中创建一个用户登录信息表来判断是否存在该登录用户以及实现用户注册功能。

  • 功能实现

数据库设计 用户密码表和留言信息表



目录

1.前言 3

  1. 实验目的 3
  2. 实验的基本要求 ..3
  3. 系统分析与设计 ..3
    1. 系统功能描述(简单需求分析) ..3
    2. 系统功能流程 ..3
    3. 数据库设计 4


  1. 数据表的构建 ..4

3.系统的实现与测试 ..5

  1. 系统采用的关键技术 ..5
  2. 关键程序流程 ..6
  3. 关键代码分析 ..7
  4. 出现的问题及解决 ..18
    1. 向数据库中插入数据出现乱码以及界面显示有中文乱码问题: 18
    2. 弹出提示框问题 ..19
    3. 系统界面 19


  1. 进入系统界面 (登录界面) ..19
  2. 管理员模块界面: ..19
  3. 添加图书界面: ..20
  4. 罚金设置界面: ..20
  5. 用户管理界面: ..20
  6. 用户模块界面: ..21
  7. 图书检索、借阅界面: ..21
  8. 续借图书界面: ..22
  9. 归还界面: ..22
  10. 安全退出界面: ..23

5.操作方法 23

  1. 登录 23
  2. 图书检索,借阅 ..23
  3. 图书归还,续借 ..23
  4. 图书,用户的添加 ..23
  5. 图书,用户的删除操作 ..24
  6. 图书,用户的更新操作 ..24

6.分析与总结 24

  1. 实验分析与总结 ..24
  2. 附录: 25

7.1 参考文献: ..25

  1. MVC 架构模式的认识 ..25
  2. / 27

南昌大学软件学院 java web 大作业 实验报告

1.前言

  1. 实验目的
    学习 Web应用程序的开发,以 B/S方式, JSP编程技术开发图书管理系统;
    通过编程实践掌握 JSP的动态网页与 sql2012 数据库相结合的技术;
    通过 MVC(模型 -视图-控制 )架构模式,使其在开发过程中得以应用,并了解 Web 编程模式下
    的 Model1 和 Model2 的区别;了解 Struts 框架的具体含义及在 Struts 模式下的开发。
  2. 实验的基本要求
    数据库表不少于 3 个,且表之间必须存在关联。
    页面设计布局合理,颜色使用恰当,风格统一,页面应不少于 10 个。
    系统功能不少于 6 个,且能正确运行。
    系统采用面向对象的方式设计,尽量使界面、业务、数据之间的耦合关系降低。
    代码实现尽量使用事件处理、事务处理。
    系统应对一些常见的异常进行适当的处理。
    数据的操作以事务的方式实现,要求处理并发问题。
  3. 系统分析与设计
  4. 系统功能描述(简单需求分析)
    图书管理系统是典型的信息管理系统 (MIS),本系统是根据现代化校园的发展而设计的基
    于 jsp的图书管理系统,本系统就是为了管理好图书信息和借阅等一系列操作而设计的。
    图书管理系统需要满足来自两方面的需求, 这三个方面分别是学生和管理员。 学生的需求是
    查询图书馆的藏书,借阅图书,和退换图书等功能;管理员的功能最为复杂,包括对学生、
    图书进行管理,及系统状态的查看、维护并。学生要使用图书管理系统,需要进行登陆,登
    陆之后则可以进行一系列的操作,例如:查询图书,借阅图书,归还图书等功能。而作为管
    理员,则可以对学生进行添加,只有已添加有卡号的学生才可以进行图书管理系统的登陆,
    管理员还可以对图书进行增,删,改,查。亦可以对用户进行增,删,改查等功能。
  5. 系统功能流程

为了满足以上的需求,系统分成了两大模块,普通用户模块和管理员模块。

  1. / 27

南昌大学软件学院 java web 大作业 实验报告

功能模块图如图所示。

相应 Struts 页面流程如下所示(电子版可自行放大) :

  1. 数据库设计
    1. 数据表的构建


本系统采用如下的数据表:

用户信息表 users:用于记录用户信息数据表

  1. / 27

南昌大学软件学院 java web 大作业 实验报告

字段名 类型 长度 是否为主键 可否为空 说明

ID nchar 10 是 否 用户 ID

username nchar 10 否 否 用户姓名

password nchar 10

cardnum int 10


否 否 用户密码

否 否 卡号信息

userlevel int 10 否 否 用户级别

coater int 10 否 否 借阅限额

borrowed int 10 否 否 已借阅数

can_borrow int 10 否 否 可借阅数

图书信息表 books: (用于存储图书相关信息 )

字段名 类型 长度 是否为主键 可否为空 说明

b_ID int 10 是 否 图书 ID

b_name nvarchar 50 否 否 图书名称

b_author nchar 10 否 否 图书作者

b_publish nvarchar 50 否 否 图书出版社

b_type nchar 10 否 否 图书类型

b_count int 10

b_hot int 10

借阅表 borrowbook: ( 用于表示借阅信息 )


否 否 拥有数量

否 否 欢迎度

字段名 类型 长度 是否为主键 可否为空 说明

brid int 10 是 否 借阅表 id

cardnum int 10 是 否 用户表外键

b_ID int 10 是 否 图书表外键

borrowday nchar 10 否 否 借阅日期

shouldreturn nchar 10 否 否 应还日期

罚金表 fine: (用于设置罚金 )

字段名 类型 长度 是否为主键 可否为空 说明

fine float 10 是 否 罚金

3.系统的实现与测试

3.1 系统采用的关键技术

本系统采用的是 Model2 模型,Model2 表示的是基于 MVC模式的框架。MVC是 Model-View

-Controller 的简写。 "Model" 代表的是应用的业务逻辑(通过 JavaBean,), "View" 是应

用的表示面(由 JSP页面产生) ,"Controller" 是提供应用的处理过程控制(一般是一个

Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些

组件可以进行交互和重用。从而弥补了 Model1 的不足。

  1. / 27

南昌大学软件学院 java web 大作业 实验报告

Model2 具有组件化的优点从而更易于实现对大规模系统的开发和管理, 但是开发 MVC系统

比简单的 JSP开发要复杂许多, 它需要更多的时间学习和掌握。 同时新东西的引入会带来新

的问题(这让我想起来关于 "自动计算 "的一篇文章,中间提到为了降低系统的复杂度,却导

致更高的复杂度) 。必须基于 MVC组件的方式重新思考和设计应用结构。 原来通过建立一个

简单的 JSP页面就能实现的应用现在变成了多个步骤的设计和实现过程。 所有的页面和组

件必须在 MVC 框架中实现,所以必须进行附加地开发工作。 MVC 本身就是一个非常复杂

的系统,所以采用 MVC 实现 Web 应用时,最好选一个现成的 MVC框架,在此之下进行开

发,从而取得事半功倍的效果。现在有很多可供使用的 MVC 框架,由于 Struts 有完整的文

档并且相对来讲比较简单,所以用它开发 MVC 系统还是比较方便地。

3.2 关键程序流程

本实验的总体流程如下:

本系统应用 3 层架构模型,现分别对其进行阐述:

第一层架构为数据库层,也是程序的最底层 (主要由 DataBase.java 实现 ),它的功能实现

sql2012 数据库的连接,函数里封装了几个操作。

public boolean query(String s) ( 用于查询数据表操作 );

public ResultSet getlist(String s) (用于获取数据的可以滚动结果集 ) ;

public int update(String s) (用于简单的数据更新操作)

public boolean executebatch(String a[]) (批处理,用于处理多条 sql);

第二层为 JavaBean层和 DAO层,主要实现对数据表的信息及对其进行操作的信息进行封装

(主要 由文 件 Books.java、 Fine.java、 borrowbook.java 、 Users.java、BookService.java 、borrowbookSevice.java、FineService.java 和 UserService.java 来实现的)。在相应的 JavaBean

层封装了所有数据表的信息,在上述的实体类中 (Books.java、Fine.java、borrowbook.java 、

Users.java)仅包含对属性的 set和 get 方法,在相应的 DAO层主要包含对数据表的相关操作,

如获得该数据表的全部信息或部分信息,增加、删除、修改、查询相应的数据表;

第三层为业务逻辑层, 主要由 Struts 和其的 action 来实现, 实现页面的控制和跳转到相应的

jsp 页面,其中 action 主要包括 BooksAction.java、LoginAction.java、ResetfineAction.java、UserAction.java。

  1. / 27

南昌大学软件学院 java web 大作业 实验报告

相应的程序架构如图所示:

  1. 关键代码分析

数据库的连接和相关一些操作函数 (在文件 DataBase.java中实现的 ):

package com.wk.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class DataBase {

private Connection conn=null;

private Statement stmt;

ResultSet rs=null;

// 数据库的 url

  1. / 27

南昌大学软件学院 java web 大作业 实验报告

private String url="jdbc:sqlserver://localhost:1433;DatabaseName=Book";

// 数据库的用户名密码

String user="sa";

String pass="123";

// 用于验证查询操作

public boolean query(String s) throws SQLException{

try{

// 加载驱动

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

}catch(ClassNotFoundException e){

System.out.println("加载驱动器类时异常 ");

}

try{

// 创建链接

conn=DriverManager.getConnection(url, user, pass); stmt=conn.createStatement();

rs=stmt.executeQuery(s);

}catch(SQLException e){

System.out.println("query 连接数据库的过程中出现 SQL异常 <br>");

}

return(rs.next());

}

// 用于结果集可滚动的操作

public ResultSet getlist(String s) throws SQLException{

try{

  1. / 27
    南昌大学软件学院 java web 大作业 实验报告


// 加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}catch(ClassNotFoundException e){
System.out.println("加载驱动器类时异常 ");
}
try{
// 建立连接
conn=DriverManager.getConnection(url, user, pass);
// 得到 statement 对象
stmt=conn.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
// 得到一个可滚动但不可以更新的结果集 rs
rs=stmt.executeQuery(s);
}catch(SQLException e){
System.out.println("更新操作连接数据库的过程中出现 SQL异常
<br>");
}
return rs;
}
// 用于对数据库的更新
public int update(String s) throws SQLException{
int msg=0;
try{
// 加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}catch(ClassNotFoundException e){
System.out.println("加载驱动器类时异常 ");

  1. / 27
    南昌大学软件学院 java web 大作业 实验报告


}
try{
// 创建链接
conn=DriverManager.getConnection(url, user, pass); stmt=conn.createStatement();
msg=stmt.executeUpdate(s);
}catch(SQLException e){
System.out.println("连接数据库的过程中出现 SQL异常 <br>");
}
return(msg);
}
// 批处理,用于处理多条 sql
public boolean executebatch(String a[]){
try {
// 创建链接
conn=DriverManager.getConnection(url, user, pass); conn.setAutoCommit(false);//关闭自动提交,进行事物处理 stmt=conn.createStatement();
for(int i=0;i<a.length;i++){
stmt.addBatch(a[i]);
}
int [] number=stmt.executeBatch();// 开始批处理,返回被执行的 sql 语句的序号
conn.commit();
System.out.println("共有 "+number.length+"sql语句被执行 "); stmt.clearBatch();//清空 batch
conn.close();
return true;

  1. / 27
    南昌大学软件学院 java web 大作业 实验报告


} catch (SQLException e) {
// TODO Auto-generated catch block try {
conn.rollback();
return false;
} catch (SQLException e1) {
// TODO Auto-generated catch block e1.printStackTrace();
}
e.printStackTrace();
}
return false;
}
// 关闭数据流
public void close() throws SQLException{
conn.close();
stmt.close();
rs.close();
}
}
管理员操作用户 (在文件 UserService.java 中实现的 )
// 管理员对用户的添加操作
public boolean adduser(String a[]) throws SQLException{
// 将密码明文转换为密文存入数据库
a[2]=ead.encrypt(a[2]);
// 利用字符串的拼接组成 sql语句

  1. / 27
    南昌大学软件学院 java web 大作业 实验报告


sql="insert into users
values('"+a[0]+"','"+a[1]+"','"+a[2]+"',"+a[3]+","+a[4]+","+a[5]+","+a[6]+")";
System.out.println("添加的 sql"+sql);
// 调用数据库的更新数据的操作函数
int result=db.update(sql);
if(result!=0)
return true;
return false;
}
// 管理员对用户的删除操作
public boolean deluser(String id) throws SQLException{
sql="delete from users where ID='"+id+"'";
System.out.println("del sql="+sql);
int result=db.update(sql);
if(result!=0)
return true;
return false;
}
// 管理员对用户的更新操作
public boolean updateusers(String a[]) throws SQLException{
sql="update users set username='"+a[1]+"',userlevel="+a[2]+" where ID='"+a[0]+"'";
System.out.println("更新 sql="+sql);
int result=db.update(sql);
if(result!=0)
return true;
return false;
}
这里管理员对图书的操作和对用户的操作很类似,这里就不再赘述了。
用户对图书的查询,借阅和续借和归还 (主要在 BooksService.java 和
borrowbookService.java 实现的)
BooksService.java 部分代码:
/
/模糊查询,获取用户的关键词,以此为查询条件进行搜索,默认按人气高至低排列
public ArrayList getbook(String a[]) throws SQLException{
ArrayList al=new ArrayList();

  1. / 27
    南昌大学软件学院 java web 大作业 实验报告


for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
if(a[0].equals("")){
sql="select * from books where "+a[2]+" LIKE '%"+a[1]+"%' order by b_hot desc";
}else{
sql="select * from books where "+a[2]+" LIKE '%"+a[0]+"%' order by b_hot desc";
}
System.out.println("sql:"+sql);
// 调用 DataBase.java的函数,获取相应的图书列表
rs=db.getlist(sql);
while (rs.next()) {
Books bk=new Books();
bk.setB_ID(rs.getInt(1)); bk.setB_name(rs.getString(2));
bk.setB_author(rs.getString(3));
bk.setB_publish(rs.getString(4));
bk.setB_type(rs.getString(5)); bk.setB_count(rs.getInt(6));
bk.setB_hot(rs.getInt(7));
al.add(bk); //al放到 arrayList
}
return al;}
borrowbookService.java 部分代码:
// 归还图书,
public boolean returnbook(String brid,String cardnum,String b_ID) throws SQLException{
String sql1="update users set borrowed=borrowed-1 , can_borrow=
can_borrow+1 where cardnum="+cardnum;
String sql2="update books set b_count=b_count+1 where b_ID="+b_ID;
String sql3="delete from borrowbook where brid="+brid; String a[]={sql1,sql2,sql3};
// 处理多条语句时,使用事务处理和使用批处理进行处理。
if(db.executebatch(a))
return true;
return false;
}
// 续借图书

  1. / 27
    南昌大学软件学院 java web 大作业 实验报告


public boolean renewbook(String brid) throws SQLException{
// 将当前时间获得,拼接之 sql,进行数据库表的更新操作
sql="update borrowbook set borrowday='"+new
Day().getnowdate()+"',shouldreturn='"+new Day().getdate()+"' where brid="+brid;
System.out.println("sql="+sql);
int r=db.update(sql);
if(r!=0){
return true;
}
return false;
}
管理员对罚金的设置(主要由 FineService.java和Resetfine.java完成的)FineService.java代码:
package com.wk.service;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.wk.util.DataBase;
public class FineService {
DataBase db=new DataBase();
ResultSet rs=null;
String sql="";
// 管理员设定罚金金额
public boolean setfine(float f){
// 字符拼接将设置的金额拼接成 sql
sql="update fine set fine="+f; System.out.println(sql);
try {
// 调用 database.java的更新函数进行数据库操作int r=db.update(sql);
if(r!=0){
System.out.println("设置罚金成功! "); return true;
}else{
System.out.println("设置罚金失败! ");
}
} catch (SQLException e) {
// TODO Auto-generated catch block e.printStackTrace();
}

  1. / 27
    南昌大学软件学院 java web 大作业 实验报告


return false;
}
// 获取上一次设定的罚金金额
public float getlastfine(){
float m=0;
sql="select fine from fine";
try {
// 获取当前设定的金额
rs=db.getlist(sql);
while(rs.next()){
m=rs.getFloat(1);
}
} catch (SQLException e) {
// TODO Auto-generated catch block e.printStackTrace();
}
return m;
}
}
Resetfine.java部分代码:
// 设置罚金
if("y".equals(isfirst)){
f.setFine(fs.getlastfine()); request.setAttribute("oldfine", f.getFine());
return mapping.findForward("success");
}else{
f.setFine(fs.getlastfine()); System.out.println("oldfine="+f.getFine());
request.setAttribute("oldfine", f.getFine());
// 获取表单输入的罚金金额,转为 float类型fs.setfine(Float.parseFloat(fineForm.getFine()));
f.setFine(fs.getlastfine());
System.out.println("newfine="+f.getFine()); request.setAttribute("newfine", f.getFine());
// 跳转至成功界面
return mapping.findForward("success");
}

  1. / 27
    南昌大学软件学院 java web 大作业 实验报告


辅助工具包(实现用户密码的加密和时间的计算转换问题)Day.java
/*
* 换算时间
* 计算两个日期之间相差的天数
* 计算一个日期在 n天之后的日期字符串
*/
package com.wk.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Day {
// 传入两个时间字符串,计算其中相差的天数
public int getlaterday(String d1,String d2) throws ParseException{
Date a=new SimpleDateFormat("yyyy-MM-dd").parse(d1); Date b=new SimpleDateFormat("yyyy-MM-dd").parse(d2);
// 获取相减后天数
long day=(a.getTime()-b.getTime())/(24*60*60*1000);
System.out.println(day+"");
return (int) day;
}
// 获取两个月后时间字符串
public String getdate(){
SimpleDateFormat formatDate=new SimpleDateFormat("yyyy-MM-dd");
// 字符串转换
Calendar c=Calendar.getInstance();
//new Date().getTime(); 这个是获得当前电脑的时间,你也可以换成一个 随意的时间
c.setTimeInMillis(new Date().getTime());
c.add(Calendar.DATE, 60);//天后的日期
Date date=new Date(c.getTimeInMillis()); //c转换成 Date
System.out.println("date="+formatDate.format(date)); return formatDate.format(date);
}
// 获取当前的时间

  1. / 27
    南昌大学软件学院 java web 大作业 实验报告


public String getnowdate(){
Date dt=new Date();
SimpleDateFormat matter1=new SimpleDateFormat("yyyy-MM-dd");
System.out.println(matter1.format(dt)); return matter1.format(dt);
}
}
EncryptAndDecrypt.java
package com.wk.util;
public class EncryptAndDecrypt {
/**
* 加密String明文输入 ,String密文输出
*
* @param
* @return
*/
public String encrypt(String sourceString){
char [] p="图书管理 ".toCharArray();
int n=p.length;
char [] c=sourceString.toCharArray();
int m=c.length;
for(int k=0;k<m;k++){
int mima=c[k]+p[k%n];
c[k]=(char)mima;//加密
}
return new String (c);//返回密文
}
/**
* 输入加密后的 String,返回原本的 String
*
* @param
* @return
*/
public String decrypt(String sourceString){
char [] p="图书管理 ".toCharArray();
int n=p.length;

  1. / 27

南昌大学软件学院 java web 大作业 实验报告

char [] c=sourceString.toCharArray();

int m=c.length;

for(int k=0;k<m;k++){

int mima=c[k]-p[k%n];

c[k]=(char)mima;//解密

}

return new String (c);//返回明文

}

}

  1. 出现的问题及解决
    1. 向数据库中插入数据出现乱码以及界面显示有中文乱


码问题:

问题描述: 当需要将数据插入数据库时, 会发现插入的数据有乱码。 在界面的表单进行数据输入时,传出传入的中文数据也会出现乱码。

1、JSP显示中文乱码的问题,一般都是没有设置页面编码,注意添加以下这样一段代码

<%@ page pageEncoding=”-U8TF%>


<%@ page language="java" contentType="text/html; charset=UTF-8"%>

"pageEncoding"指定了当前 jsp文件存储使用的编码方式, “contentType用来”指定响应头消息

中的 "Content-Type"

当服务端的响应头消息中没有指定 charset 时,客户端会依据上面代码中的 charset 指定的编

码方式解码页面。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

并且 JSP都以 UTF-8的编码方式保存, 把所有可能出现的问题通通抹杀。 http://www.linuxidc.com 如

果你使用 Myeclipse,可以设置 Myeclipse 的默认参数,使 Myeclipse 新建 JSP文件时,可以

自 动 是 用 UTF-8 的 编 码 方 式 。 方 法 : Windows-Preference-Myeclipse-File and

Editor-JSP-Encoding,选择 ISO 10646/Unicode(UTF-8)。

2、从表单获取的数据有中文乱码,在 Struts 里面,一般都使用过滤器进行数据的过滤,保

证数据的编码格式与你自己页面设置的一致。关键代码如下:

public void doFilter(ServletRequest arg0, ServletResponse arg1,

FilterChain arg2) throws IOException, ServletException {

// TODO Auto-generated method stub

// 这里设置接受编码

arg0.setCharacterEncoding("utf-8");

// 继续让它前进,这句话必须要有

arg2.doFilter(arg0, arg1);

}

值得一提的是, arg0.doFilter(arg0,arg1); 这句话一定要有, 不然过滤器不会向前执行, 会停止 不前,这样程序就没法运行了!

  1. / 27
    南昌大学软件学院 java web 大作业 实验报告


3、读取数据时,在 Servlet 中添加 request.setCharacterEncoding("UTF-8"); 可以很好地解决从JSP页面接受中文参数乱码。

  1. 弹出提示框问题
    问题描述:由于对 Struts 还不是完全的熟悉,对于其该怎样使用弹出框还是有点困扰,
    其不能再 action 里弹出一个弹出框后再进行 return mapping 的操作,这样写并不会有提示
    框,而是直接执行了 return mapping 语句。
    解决方法:使用 servlet 和 jsp结合来弹出提示框,即在 servlet 里给 jsp 传递一个参数,
    然后在 jsp 里进行该参数的判断,然后根据判断结果看是否弹出提示框,因为在 jsp 里可以
    直接写 js代码,这样弹出框会方便很多,只要用 alert(“我是弹出框! ”);这一句就可以了。
  2. 系统界面
  3. 进入系统界面 (登录界面)
  4. 管理员模块界面:
  5. / 27

南昌大学软件学院 java web 大作业 实验报告

  1. 添加图书界面:
  2. 罚金设置界面:
  3. 用户管理界面:
  4. / 27

南昌大学软件学院 java web 大作业 实验报告

  1. 用户模块界面:
  2. 图书检索、借阅界面:
  3. / 27

南昌大学软件学院 java web 大作业 实验报告

  1. 续借图书界面:
  2. 归还界面:
  3. / 27

南昌大学软件学院 java web 大作业 实验报告

4.9 安全退出界面:

5.操作方法

  1. 登录
    首先,输入正确网址即可打开系统登录界面,输入正确账号密码,系统会根据账号的级别,相应的进入不同的操作界面。
  2. 图书检索,借阅
    登录成功,点击左侧导航栏的检索、 借阅,即可进入相应界面。 输入关键词,或选择类别,点击搜索,会出现相应内容。
  3. 图书归还,续借

登录成功后,点击左侧相应的归还或续借菜单,即可进入相关界面,点击归还或续借按钮即可完成操作。

  1. 图书,用户的添加

管理员界面,点击左侧菜单的添加用户和添加图书,输入相关信息,点击添加即可。

  1. / 27

南昌大学软件学院 java web 大作业 实验报告

  1. 图书,用户的删除操作
    管理员界面,点击左侧菜单的删除用户和删除图书,找到想要删除的用户或图书,当然也可以通过 id 号或卡号进行搜索,然后进行操作。
  2. 图书,用户的更新操作

管理员界面,点击左侧菜单的更新用户和更新图书,找到想要更新的用户或

图书,当然也可以通过 id 号或卡号进行搜索,然后在该用户的这一条记录的相

应位置填写修改后的数据(当然有些字段是不能修改的) ,点击更新按钮即可。

6.分析与总结

  1. 实验分析与总结

在这一节中,我主要讨论了两个问题,一个是系统的联机文档,另一个是系

统的测试,下面我们分别加以说明。 作为一个完整的系统, 联机文档是其中不可

缺少的部分也是相当重要的部分。 好的文档能够使用户快速了解并准确的使用系

统的各项功能。 减少误操作, 减少错误产生的可能, 这对用户和开发人员都有很多的好处。所以在开发本系统中, 也加入了不少的文档, 除了对于几大模块的详细说明外,对于易出错和不易操作的地方 (如多条件查询部分) 又作了详细的说明。

由于本身能力的局限性,所以做编写的代码,即使经过反复检查也难免出错

所以在本阶段力求使用有限的时间找出尽可能多的错误, 力求系统尽量正确。 我们在本系统的测试中使用了黑盒法 (即不关心程序内部的逻辑结构, 而是根据程序的功能来设计是检测) 请一位不熟悉本系统的人来进行随意性的操作, 打破习

惯的操作顺序,从中发现错误,在此阶段系统的大量错误得到了改正 .

信息管理系统所涉及的数据库设计的重要步骤加载测试。 加载测试工作贯穿于程序测试工作的全过程,整个录入、修改、查询、处理工作均可视为对数据库

的加载测试工作。 要设计出一个好的信息管理系统数据库, 除满足系统所要求的

功能外,还必须遵守下列原则: 1)基本表的个数越少越好。 2) 主键的个数越少越好。键是表间连接的工具,主键越少,表间的连接就越简单。 3)字段的个数越

少越好。 4) 所有基本表的设计均应尽量符合第三范式。数据库的设计中,如何

处理多对多的关系和如何设计主键, 是两个有着较大难度、需要重点考虑的问题。

最后,希望自己在以后的空闲时间,能将该系统逐渐完美,将 bugs一个一

个的消除,将界面重新设计,使其符合当代的审美潮流。

  1. / 27

南昌大学软件学院 java web 大作业 实验报告

  1. 附录:

7.1 参考文献:

[1]JSP 编程技巧 /清宏计算机工作室编著 . 北京:机械工业出版社, 2001.1

[2]JAVA EE工程实训教程 /朱俊炎,吴英培编著 .天津科学技术出版社 ., 2010.2 [3] 深入 JAVA Servlet 网络编程 . 清华大学出版社

[4]Struts 开发入门与项目实践 . 北京:人民邮电出版社 , 2005.8

[5]J2EE 应用开发实例精解 . 清华大学出版社

7.3 MVC架构模式的认识

模型 -视图 -控制器( MVC )是 80 年代 Smalltalk-80 出现的一种软件设计模式,现在已经被

广泛的使用。

1、模型( Model)

模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑 .

2、视图( View )

视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。

3、控制器( controller)

控制器工作就是根据用户的输入,控制用户界面数据显示和更新 model 对象状态。

  1. / 27
    南昌大学软件学院 java web 大作业 实验报告


MVC 式的出现不仅实现了功能模块和显示模块的分离, 同时它还提高了应用系统的可
维护性、可扩展性、可移植性和组件的可复用性
早期的程序中, 如果不注意对数功能和显示的解耦合, 常常会导致程序的复杂及难以维
护。很多 VB,Delphi 等 RAD 程序都有这种问题。甚至现在的 C#,Java 有时候也会出现把业
务逻辑写在显示模块中的现象
管 MVC 设计模式很早就提出, 但在 Web 项目的开发中引入 MVC 却是步履维艰。 主要
原因:一是在早期的 Web 项目的开发中,程序语言和 HTML 的分离一直难以实现。 CGI 程
序以字符串输出的形式动态地生成 HTML 内容。后来随着脚本语言的出现,前面的方式又
被倒了过来,改成将脚本语言书写的程序嵌入在 HTML 内容中。这两种方式有一个相同的
不足之处即它们总是无法将程序语言和 HTML 分离。二是脚本语言的功能相对较弱,缺乏
支持 MVC 设计模式的一些必要的技术基础。 直到基于 J2EE 的 JSP Model 2 问世时才得以改观。 它用 JSP 技术实现视图的功能, 用 Servlet 技术实现控制器的功能, 用 JavaBean 技
术实现模型的功能
JSP Model 1 与 JSP Model 2
SUN 在 JSP 出现早期制定了两种规范, 称为 Model1 和 Model2 。虽然 Model2 在一定程度上实现了 MVC ,但是它的应用用并不尽如人意
JSP Model 1
JSP Model 2

  1. / 27
    南昌大学软件学院 java web 大作业 实验报告


model2 容易使系统出现多个 Controller ,并且对页面导航的处理比较复杂
有些人觉得 model2 仍不够好,于是 Craig R. McClanahan 2000 年 5 月 提交了一个
WEB framework 给 Java Community. 这就是后来的 Struts.
2001 年 7 月, Struts1.0 ,正式发布。该项目也成为了 Apache Jakarta 的子项目之一
Struts 质上就是在 Model2 的基础上实现的一个 MVC 架构。它只有一个中心控制器, 他采用 XML 定制转向的 URL。采用 Action 来处理逻辑。