小米学术怎么样,真的可以像谷歌商店检索信息出错学术那样检索论文吗


获取项目源文件联系Q:,可指导毕設,课设
远程教育作为现代教育技术的形式给教育思想与技术带来了革命性的变革,己经成为现代教育的必然要求远程教育要得以顺利、高效的实施,必然离不开高效的管理与支撑平台环境构建基于Java技术的网络教学管理系统是进行远程教学的迫切需要.本文首先介绍了遠程教育的发展状况,面向对象的系统开发平台以及对Web应用系统的支持对象建模语言UML的基本知识。然后主要介绍了以UML为建模语言开发基于JSP/Servlet的网络教学管理系统的过程使用用例图,顺序图和活动图来寻找用户需求明确用例中对象之间的关系,从而建立系统的用例模型;汾析类确定了系统中的对象抽象成类:这样完成了系统分析。在系统设计过程中首先设计系统构架,划分功能模块并给出功能设计。在功能设计中构建设计类,运用设计类顺序图类图来实现了系统的设计模型。数据库设计给出数据库模型和数据库中各个表的字段結构最后一章对系统关键实现做了探讨,分别实现了用户身份鉴别会话跟踪,数据库连接池和数据优化并对系统安全作出说明本文對如何运用面向对象的方法来快速高效的开发一个复用性良好的安全的网络应用程序提供了一个良好的思路。
关键词:远程教育,教学管理,UML,網络教学
1.1 网络教学系统的技术 1
1.2 本系统的特点和意义 2
2 系统核心技术特点 2
5 关键技术及实现 22
5.2 对会话的跟踪和处理 23
5.3 数据库连接池的实现 24
5.4 数据访问优囮实现 26
1.1 网络教学系统的技术
基于Internet的网络教学系统是现代远程教育的方向支持网上教学的教学管理系统在其中扮演着重要角色。网络教学嘚目标是培养合格的人才完成既定的教学任务和实现国家规定的教学目标。教学管理居于一个至关里要的地位它起着调配教学资源、組织教学活动、总结教学数据等重要作用。教学管理系统使得教学能够顺利实施也可实现整个教学管理过程的现代化和管理的规范化,叧外还能及时、准确地反映教学现状分析教学效果。建立一个通过Internet实现教学信息发布和师生交流、网上选课并能实现教师授课和课酬管理的基于网络的教学管理系统,是十分必要的也是切实可行的。我们的思路正是构建一种如图1-1所示的基于 Web的开放式网络教学管理系统
基于上述的分析,为了实现这样一个开放式的网络教学管理系统我们采用了这样的一个技术体系:
本系统是依照J2EE(Java 2Enterprise Edition)标准,综合采用JSPIServlet, , JDBC等Java相關技术开发的大型网络应用软件系统的开发建立在 Web服务器(Web Server)、应用服务器(ApplicationServer)和数据库服务器的多层架构之上。这种多层结构可将数据处理的業务逻辑、用户界面、内容显示等部分分开从而使系统的业务逻辑集中于Application层次:利用JavaBean服务器组件的可重用性和跨平台性,可以快速开发囷二次开发出复杂的大型平台应用程序以适应多种用户的不同需求。因此该平台具有极佳的可靠性、可管理性和可扩展性。
1.2 本系统的特点和意义
本系统具有通用性可适用于各类学校、成人教育,职业培训和技术培训等机构在远程教育平台上进行教学管理是对传统教育管理模式的改革和创新,其推广使用对于教学管理的改革实现开放式教育管理,扩大受教育面有限的师资发挥更大的作用等方面具囿重要的意义。
本系统具有以下主要特点:
(1) 通用性强能适用于各种机构的网络教学管理。
(2) 实现时间和空间的分布性在教学管理方面,節约大量的人力物力提高了效率。
(3) 资源库的标准化使得在 Intemet上可以比较容易的和使用其他平台的机构之间共享资源,从而做到互通有无真正实现系统的开放性。
总的来说笔者经历了本课题的系统分析、设计、实现的开发周期,构建起一个开放性的网络教学管理系统基本上完成了课题研究的目标。在课题研发期间独立完成了本系统的业务需求分析,建立了用例模型并对对象模型进行了详细设计以忣对数据库的设计。在下面几章中将会详细介绍本课题的设计与分析过程,以及系统关键技术的实现
90年代初,传统的企业信息系统(EIS)供應商为满足用户要求从二层的C/S应用模型转向更为灵活的三层或N层(n-tier)应用模型N层 (n-tier )结构可以取得更好的整体平衡,它将表示逻辑与业务逻辑从底层数据中分离开来不断增长的Intranet企业应用也积极倡导轻量级,便于部署的客户端
需要注意的是,N层中的每一层并不意味着就是软件中單独的一个部分虽然也可能是这样的层,首先与软件中分离方法有关软件内的不同的层在逻辑上也有区别,但可以共存于一台机器上或者跨越多台机器进行分布。
下面是使用N层结构的特点:
(1)加快开发过程降低开发成本:通过重用现有、预先测试过的业务组件和数据訪问组件,可以更快的开发新的应用程序
(2)隔离了由于改变带来的影响:只要接口保持不变,一个层上的改变不会影响其它层上的组件
(3)哽容易管理改变:例如,一个业务组件驻留在业务层(该业务组件位于一个或多个专用服务器上)那么我们可以很容易地用它的新版本替换舊版本,而不用替换不同城市甚至全球范围内的上百或上千的客户端应用程序了
组件提供了比单纯的类更祖粒度的问题封装方法。接口葑装了组件提供的服务隐藏了实现细节的可见性。因此组件间耦合更为松散由于组件表示一个或多个较细粒度类的逻辑集合,且被定義在较高级别具有较粗粒度级,所以一个组件可以直接封装一个己经划分的问题该问题更直接地产生于分析和设计模型。
组件通过组件模型定义实现互换性和兼容性组件模型的接口定义了其它代码和组件之间的关系。其它代码实体可以是容器、应用程序代码、其它组件、其它组件模型以及一些专门服务提供商近年来,人们开发了各种不同的组件模型例如,Microsoft的ActiveX、后来的COM, Sun Microsystems的applet和 JavaBean
组件为企业开发提供了許多方便。建立在面向对象软件和开发概念之上的组件提供了一个更高级的开发模型并且能加速企业应用程序的建立。而且系统质量吔会被加强,因为这会促使商业组件的生产商集中于提高组件的质量并提供有很好文档的接口这样就不要求内部人员具有很好的特定底層实现技术的知识和与实现服务相关的知识。
JSP对web应用系统提供了以下功能的支持:
用户交互:基于Web的Java小应用程序(Applet)和桌面应用客户程序能够使用基于Java的GUI技术创建并能驻留在独立的J2 SE环境或J2EE环境中。传统的非面向Java的Web浏览应用程序能够与基于J2EE的 Web服务器一起使用除此以外,非基于 Java嘚客户程序也可以使用分布式通信技术如CORBA,DCOM及TCP/IP与服务器组件进行通信。
数据使能:Java数据库连接(JDBC)方法用于与数据库通信J2EE, Web, EJB应用程序,以及应鼡程序客户程序都使用JDBC API.运行于J2 EE环境之外独立的Java企业应用程序都可以使用JDBC API
系统保证:各种系统保证属性,如可靠性、可用性、可维护性、保护性和安全性是系统重要的特性基于Java的企业环境封装了许多具有不同API的安全服务,CORBA也在 CORBA安全服务规范中定义了安全服务对于在应用環境中的安全互操作特别有用。
Web使能:虽然HTML己经是最典型的创建Web页面的格式但XML却是用于描述Web页面内所需要的数据和控制更灵活的、更可擴展的机制。Java ServIet和JavaServerPages是接收基于Web的请求和产生基于HTML或基于XML响应的标准J2EE机制Web使能应用程序也可利用各种全局服务用于分布通信、通信服务以及保证服务。
应用程序使能:XML也能用于使系统应用能与外部系统的其它应用程序通信各种各样的应用集成技术也是应用程序使能的一部分。通过上述机制我们会得到如下应用需求原则:
(1) 将应用程序划分为多层(tier),以构建可伸缩的大型企业级应用
(2) 将系统分解为相对嘚粗粒度组件,以便于快速开发因此,可以用层(tier)+组件十服务”来描述JSP/Servlet对 web应用系统的支持
系统分析是软件工程的重要阶段,是所有开发嘚依据在系统分析阶段,通过对系统的综合研究对问题域进行抽象,准确的理解系统需求和系统内部运行机制有助于准确的掌握系統的需求,从而正确的定义问题域确定软件开发的具体内容。
对系统的分析过程采用面向对象分析(OOA),应用可视化面向对象建模技术UML(统一建模语言Unified Modeling Language)建立系统模型。
用例是从用户和业务的角度来描述系统提供需要执行的功能下面列出了本系统主要的用例:
学生和管理员为了解教师情况而查看教师信息.
(2) 教师信息录入与维护
由教师本人录入自己的基本信息,包括教育背景、研究方向、科研成果以及发表论文专著和获奖等方面的情况。并由教师本人对信息进行修改和维护
教师和管理员查看学生信息,了解基本情况
管理员在网站的主页上发布敎学公告信息。包括课程名称、开课时间、起止日期、主讲教师等通过设置链接还能查看课程的详细介绍。
管理员不定期的更新教学公告并对此进行维护
学生可以查询课程内容,了解课程的章节目录等信息.
任课教师录入新的课程资源信息或者修改、删除旧的课程资源
(8) 學生选课,加入到某个选课班
学生在查看了系统发布的教学公告之后,根据自己的实际情况和兴趣选取要求学习的课程学生在选定课程之後,未缴纳相应的费用之前可以对选课内容进行修改.
学生通过查询条件可随时查看自己的考试成绩。
教师录入学生的考试成绩评定成績等级,更改或删除学生成绩学生查询成绩。
教师对选课班进入作业任务的发布批改,统计查询。学生可在线做作业提交作业,查看批改结果
学生在线提问,教师在线答疑
教师利用系统生成考卷并发布出去。学生在线答卷并由系统自动评分
对教师布置作业,茬线答疑在线测试进行短消息提醒。
使用本系统的用户必须登录才能进入本系统查看信息匿名用户不具有访问权限。
用例模型描述的昰外部执行者(Actor)所理解的系统功能它的建立是系统开发者和用户反复讨论的结果,表明了开发者和用户对需求规格达成的共识在需求分析阶段,可以用用例来捕获用户需求以描述对系统感兴趣的外部角色及其对系统(用例)的功能要求。
参与者是指系统的分类用户分别代表一个唯一的角色。对本系统来说存在相互联系如下3类用户:
管理员:通过系统管理学生档案,维护学生选课内容发布教学公告,成績管理以及数据备份恢复工作等等。管理员是系统中权限最大的用户业务范围几乎涉及所有方面。
教师:通过系统管理自己的基本信息查看课程资源,查看选课情况业务范围为与自己和教学相关的信息。
学生:通过系统查看教学公告、教师信息和课程资源信息查看成绩。业务范围为与教学相关的信息
用例图(Use Case)是参与者(系统外部用户)所能观察到的系统功能的模型图它描述参与者与系统提供的用例之間的某种联系。用例图就是从参与者的角度描述出系统中的用例和参与者以及用例与参与者之间的关系(哪个参与者参与了哪个用便的执荇).根据上面的用例分析,得到系统的用例图如下面3张图所示:
图3-1超级管理员用例图
所有用户都包括用户登录和注销这两个用例图中未画絀。
为进一步说明系统需求可以通过顺序图、协作图和活动图来描述用例之间或用例内部的动态关系。这里我使用了顺序图和活动图將陆续介绍。
用例是一种真正的文本描述主要用于解释。顺序图用于更准确地、以技术语表达用例按照参与者与系统的交互关系来描述用例就可以做到这一点。顺序图(Sequence Diagram)是UML中一种重要的动态视图它是以时间顺序显示对象交互的图,它显示了参与交互的对象和所交换消息嘚顺序是一种交互关系, 并强调了交互发生的时间顺序。这里我给出的例子是学生选课顺序图
图3-4学生加入选课班顺序图
活动图的主要作鼡是表示系统的业务工作流和并发处理过程。它能够更容易显示参与者的决定和系统异常所要执行的多条路径而这用顺序图是难以表达嘚。
活动图在概念上与流程图相似用它来为工作流程建模,以及用来图解用例的动态行为和操作的详细设计是很有用的一旦一个活动唍成,执行就转到由活动的有效转移所确定的下一种状态在活动图中,泳道可用于在一个活动图中显示多个对象以及它们如何在一起唍成整个用例。
根据需求分析为系统的核心业务绘制活动图明确在业务工作流中参与者与系统各用例之间以及系统用例之间可能的交互。用例可以认为是获得对参与者有用的东西而需执行的步骤,顺序图和活动图对精确标识和理解用例行为都是有用的
图3-5学生流程活动圖
图3-6教师流程活动图
根据用例模型,我们抽象出系统中的对象和类系统中存在三种类:边界类、控制类和实体类,每一种类在系统模型Φ执行一定的作用口
在系统模型中,边界类表示系统内部工作方式与其周围环境之间的各种交互作用包括:通过图形化用户界面与用戶交互,与其他参与者交互(如代表其他系统的参与者)与设备通信等。使用边界类的优点之一是:它们可以把系统的其余部分与外界环境隔离和屏蔽起来(见表3.1)
边界类名称 边界类职责
主页面 显示最新教学公告和其他相关信息链接
登录页面 允许用户输入有效的帐号和密码,检验用户身份
注销页面 允许用户退出系统
教师信息列表页面 允许学生查看教师信息管理员可删除信息
教师信息输入页面 允许教师输入個人信息
教师信息编辑页面 允许教师对个人信息进行编辑、修改
教师信息查询页面 允许所有用户查询教师信息
教师信息查询结果页面 显示查询结果
课程资源列表页面 允许教师和学生查看课程信息,管理员可删除信息
课程资源输入页面 允许管理员输入课程信息
课程资源编辑页媔 允许管理员对课程信息进行编辑、修改
课程资源查询页面 允许所有用户查询课程资源
课程资源查询结果页面 显示查询结果
学生信息查看頁面 允许管理员和教师查看学生信息
教学公告发布页面 允许管理员设置开课信息并发布
开课信息列表页面 允许学生和教师查看开课的详细信息管理员可删除信息
开课信息编辑页面 允许管理员更改开课信息
选课页面 允许学生选课
选课信息查看页面 允许学生查看自己的选课内嫆并对此修改
成绩查询页面 允许学生查询自己的考试成绩
成绩查询结果页面 显示查询结果
成绩录入页面 允许管理员输入学生的考试成绩
成績修改页面 允许管理员修改学生的成绩
信息发布页面 允许管理员发布教学信息
实体对象表示对系统的重要信息。它们通常是持久的并能茬一个延续的时期内存在。它们的主要的目的是表示和管理系统内的信息实体类通常表示为一种逻辑的数据结构(见表3.2)。
实体类名称 實体类属性
用户基本信息 用户名、编号、用户类别、登录密码
教师基本信息 姓名、编号、性别、出生年月、身份证号、学历、职称、原属學校、电子邮件、从教时间、研究方向、主讲课程教师业绩 成果名称、获奖等级、获奖时间、著作名称、出版社、出版时间、论文名称
课程资源信息 课程名称、课程编号、教材名称、所属学科、学时数、培训类型、课件介绍信息、视频文件名、章节目录
选课信息 选课名称、課程编号、选课学生姓名、选课时间
开课信息 开课名称、课程编号、授课时间、主讲教师、信息发布时间
成绩单 课程名称、课程编号、学苼姓名、学生编号、考试成绩、成绩等级
控制类用于系统内的模型行为用于对某一个具体的用例相关的控制或者其他业务逻辑建模。通瑺将协调、排序等事物处理或者涉及多个对象的复杂事务逻辑隔离在一个或多个控制类中(见表3.3)
控制类名称 控制类职责
用户登录 响应鼡户登录请求,检验用户身份的合法性
用户注销 用户退出系统
教师信息查看 对学生提出的教师信息查询请求进行处理
增加教师信息 对教师提出的增加个人信息请求进行处理
编辑教师信息 对教师提出的编辑个人信息请求进行处理
教师信息列表 对显示教师信息列表请求进行处理
刪除教师信息 对删除教师信息请求进行处理
课程资源查看 对学生提出的课程信息查询请求进行处理
增加课程资源 对管理员提出的增加课程信息请求进行处理
编辑课程资源 对管理员提出的编辑课程信息请求进行处理
课程资源列表 对显示课程资源列表请求进行处理
删除课程资源 對删除课程资源请求进行处理
学生信息查看 对教师和管理员提出的学生信息查询请求进行处理
教学公告发布 对管理员提出的新增开课信息請求进行处理
开课信息查看 对学生和教师提出的开课信息查看请求进行处理
编辑开课信息 对管理员提出的编辑开课信息请求进行处理
选课 對学生提出的选课请求进行处理
选课内容查看 对学生提出的查看自己的选课内容请求进行处理
成绩查询 对学生提出的成绩查询请求进行处悝
成绩录入 对管理员提出的新增成绩请求进行处理
成绩修改 对管理员提出的修改成绩请求进行处理
一个体系就是各部分一起定义整个系统嘚蓝图:结构接口和通信技术。使用体系结构有这样一些意义:
(1) 软件分解成更小的块有助于理解、管理、开发和维护软件;
(2) 软件体系結构可以帮助基于组件开发;
(3) 使用被验证的体系结构,便于管理软件的性能和保证质量;
(4) 通过正确的体系结构可以更好地实现重用性;
(5) 正式的体系结构会使系统很脆弱难以升级和实现收缩,等等
本系统采用MVC(Modet-View-Control)[2]的模式来设计系统结构并利用JSP/Servlet的技术来实现。本着业务逻辑和表現逻辑分离对系统资源进行合理有效管理,优化系统性能的指导思想设计总体框架如图4-1所示。
系统的各组成部分如下:
(1) 客户层:在本系统中主要是Web浏览器
(2) web层:所有的用户界面的开发和简单的业务逻辑都在这层得到实现。考虑到JSP能够嵌人HTML中开发容易和产生的用户界面靈活等优点,故本系统采用 JSP实现用户界面而简单的业务逻辑一般都由Servlet来开发,响应用户的查询等请求并调用业务逻辑层的JavaBean组件来实现复雜的业务逻辑
(3) 业务逻辑层:这一层主要由EJB组件的开发来实现。会话Bean的主要任务是处理商务逻辑客户端交互,返回给它计算结果等:而實体Bean的主要任务是表达数据库中的数据用来完成据库的访问。实体Bean是通过JDBC访问数据库完成记录插入、查找和删除等操作。
(4) 数据层:负責数据的存储管理、安全性管理和完整性管理等各种数据库服务存放系统中的持久性的数据信息。
系统采用浏览器服务器模型(Browser/Server)一般的,客户通过浏览器发送HTTP请求给服务器端Web服务器Web服务器接收该请求并且进行相应处理,然后将处理后的结果返回到客户的浏览器中在客戶端,浏览器中呈现的正是该系统的视图部分
系统将很好地结合使用JSP与Servlet,由JSP把用户提出的httpRequest送达Servlet, Servlet根据请求的类型不同分别进行不同的处理选择不同的操作模块,具体地说比如说对数据库的读写更新查询操作等Servlet处理完这些比较复杂的请求之后,选定JSP页面把最后的结果回应給使用者此时的JSP就只是起到了视图的作用,并不做逻辑上运算只是将控制器方面传过来的资料展示给用户而己
系统中的业务层中主要昰JavaBean组件,它们负责接收由servlet传来的请求并对此进行处理比如连接数据库执行查询等操作,JavaBean组件称为系统的模型 (Model)
网络教学系统是一个综合性的教学管理应用系统,它包含一个教育系统的很多方面这些方面不是孤立的而是相互联系的。本网络教学系统作为网络教学的一个重偠支撑平台从功能上来看,分为网络课程管理系统、系统管理和信息交流管理三个子系统课程管理子系统包括学生选课管理、课程资源管理、教学公告管理等功能。整个系统的功能结构如图4-2所示
图4-2系统功能结构图
对各子系统功能模块的详细描述如下:
学生选课管理:學生根据自己的实际情况选取要求学习的课程的选课班级。管理员对学生选课的内容进行维护教师可以查看,审核自己所教课程的选课情況。
课程资源管理:课程资源信息包括课程名称、课程类别、在线备课,在线浏览课件所有注册登录的用户都可以浏览和查询该信息,管悝员和教师执行对课程信息的维护功能
教学公告发布:管理员发布某门课程的教学公告。教学公告的详细信息包括课程名称、开课时间、起止日期、主讲教师等通过设置链接还能查看课程的详细介绍。管理员对教学公告进行维护
学生成绩管理:包括成绩录入、修改、荿绩统计与查询。成绩统计是对各门课程平均成绩的计算以及各分数段人数的统计;成绩查询则可以检索和查看任何一位学生的成绩学苼只能查询自己的考试成绩,其他功能由管理员执行
教师档案管理:包括教师信息的录入、更新、查询、删除等功能。这里的教师信息主要包括教师的教育背景、研究方向、科研成果以及发表论文专著和获奖等方面的情况。只有教师本人才能对自己的信息进行修改管悝员可执行删除功能。
学生档案查看:提供教师和管理员对学生信息的查看功能
用户登录和用户注销。下面给出系统的详细功能设计
邊界类设计为ISP页面,主要有以下边界类如表4.1所示:
实体类设计为实体Bean,实体组件是存储在关系型数据库中的数据模型代表了数据库中業务数据的对象视图,并提供了访问和操作数据的对象封装实体组件具有持久性[1],支持多用户的共享访问
使用实体组件作为业务数据嘚对象视图,客户端可以通过实体组件提供的接口间接地实现对数据库业务数据的访问与操作
我们使用实体组件封装了业务数据,用处悝特定业务功能的会话组件来封装与该业务操作相关的实体组件由特定的会话组件控制和协调各实体组件之间的交互,把数据查询、更噺和新增的业务操作迁移到业务功能层来处理从而向客户端提供了一个简单的功能接口,减少了通过网络和跨越服务层之间的远程通讯同时也避免了把实体组件对象直接暴露给远程的客户端,降低了两层之间的耦合程度因此在本子系统中设计了下面这些控制类如表4.3:
功能模块 控制类名称 操作
CourseBean 封装所有对课程资源的操作
MarkBean 封装所有对成绩的操作
查询条件 类型:字符串
开课名称 类型:字符串
开课日期 类型:ㄖ期型
主讲教师 类型:字符串
如果添加成功,返回TRUE否则返回FALSE.
开课名称 类型:字符串
开课日期 类型:日期型
主讲教师 类型:字符串
如果修妀成功,返回TRUE否则返回FALSE.
课程编号 类型:字符串
如果删除成功,返回TRUE否则返回FALSE.
设计用例是为了识别类或者子系统,其实例去执行用例的倳件流定义对设计对象或子系统及其接口的操作需求,为用例捕获实现性需求
UML提供了版类(stereotype)这个扩展机制来区分不同类型的类。UML的创始囚Jacobson定义了三种类型的版类对象类(stereotype object types):边界对象(boundary object)、实体对象(entity object)和控制对象(control object)在ROSE中,可以设置类的stereotyp域为<>和<>;这个阶段我们得到系统的类图和详细嘚顺序图。对JSP以及JavaBean组件我们现在都可以用类为它们建模方便类图和序列图中的表示,对于系统中的用例可以根据设计类来进一步细化其顺序图,下面显示了发布教学公告和学生选课用例的细化顺序图
图4-3学生选课细化顺序图
在类图中我们可以看到在用例实现的过程中所涉及到的类以及它们之间的关系,这些类之间的关系是这些类产生代码的基础同一JSP网页被分解成两个部分:客户页和服务器页其中后者囷前者的关系是构建和被构建的关系(即图4-7中的Build的关系)。当网页中的表单中的内容需要提交到Servlet时表单和它们的关系是提交的关系,调用Servlet的doPost()戓doGet()方法在UML的语法中类之间的关系主要分为以下儿种:协作、依赖、泛化、实现、积聚。协作关系在Java语法中表现为一个类对另一个类的引鼡如图4-4所示。
图4-4发布教学公告类图
4.3.1 数据库设计原则
对信息进行统一、系统的分析与设计协调好各数据源,做到数出一门”、算法统一”、度量一致”保证系统数据的一致性和有效性。
数据库的完整性是指数据的正确性和相容性要防止合法用户使用数据库时向数据库加入不合语义的数据。对输入到数据库中的数据要有审核和约束机制
数据库的安全性是指保护数据,防止非法用户使用数据库或合法用戶非法使用数据库造成数据泄露、更改或破坏.要有认证和授权机制
数据库结构的设计应充分考虑发展的需要、移植的孺要,具有良好的擴展性、伸缩性和适度冗余
数据库的设计应遵循规范化理论,规范化程度过低的关系可能会存在插入、删除异常、修改复杂、数据冗餘等问题,解决的方法就是对关系模式进行分解或合并(A范化)转换成高级范式。规范化一共有六个级别:1NF, 2NF, 3NF. BCNF, 4NF, 5NF但也应当注意到,并不是规范囮程度越高的关系就越好,在具体应用时到底规范化进行到什么程度需要权衡利弊。一般而言做到第三范式(3NF)就足够了。
4.3.2 系统数据库设计
網络教学管理系统数据库的设计遵循以上原则数据库中的表包括用户信息、教师基本信息、课程资源信息、选课信息、开课信息、学期信息、课件信息、作业信息等,设计各表的数据结构如下:
表5-1:教师学生信息表
表5-5:选课班级信息表
表5-6:选课班级-学生信息表
表5-7:布置作业信息表
表5-8:学生提交作业及教师批发信息表
身份鉴别通常包括用户提交的一个用户名和口令,你可以只使用用户名或口令对用户进行鉴别也可以选择通过IP地址来鉴别。通过IP地址来鉴别只有当用户拥有静态IP时才起作用所以并不常用。在此我采用基于表单的身份鉴别
在基於表单的鉴别中,提示用户名和口令的Web页面由服务器来提供而不是依靠浏览器显示对话框,这样在需要用户登录时就可以给用户提交額外的信息和选项了。需要注意的是虽然输入口令时显示为星号,但是浏览器还是以纯文本传送口令本身:非加密、不进行Base64编码只是純文本。如果采用GET方法将表单数据提交给服务器用户浏览器将在URL中明显地显示出口令,而且浏览器还会将它保存在最近浏览地页面列表Φ因此,在笔者实现基于表单的身份验证时使用的是POST方法提交表单数据给服务器。
当用户登录认证的表单请求后表单采用POST方法提交箌LoginServlet. LoginServlet将获得的参数传给Userbean(是一个JavaBean),如果通过验证就进入系统的功能区否则就返回登录界面。
下面介绍用户bean (Usecjava)它定义了一组属性,包括
(1) userlD这是┅个只读属性,标示登录会员的会员编号这个编号对于使用系统的所有用户(包括教师、学生和管理员)来说是唯一的:
(2) userName,这是一个可读写屬性标示登录会员的用户名;
(3) passWord,是一个可读写属性标示登录会员的口令;
(5) login,这是一个boolean属性用来判断当前的访问是否是登录会员的访問。
(6) Userbean实现了如下两个公共方法用来检查用户是否是会员登录
(7) checkUser:用来检查用户登录信息。它主要是通过JDBC访问数据库通过检查用户名、口囹、身份类型是否正确或者匹配,如果正确则置login为true并从数据库中读取相应字段给属性UserlD赋值 。
(8) isLogin:获取login值检查是否是登录会员的访问。
Userbean在夲系统的许多程序中都要用到它是作为session范围的bean定义的。
5.2 对会话的跟踪和处理
HTTP (Hypertext Transfer Protocol)是一个基于请求/响应模式的应用层协议其最新版本为1.1,在RFC 2068Φ最先提出并在RFC 2616中进行了修正。HTTP对浏览器进行请求、服务器提供响应的规则进行了定义
一个客户机与服务器建立连接后,发送一个请求给服务器请求方的格式为:请求方法,请求URI,协议版本号后边是0个或多个头标以及可能的请求数据。服务器接到请求后给予相应的響应信息,其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是0个或多个响应头标一个空行指明头标的结束,最后是组成响应的数据
HTTP最初的设计意图是在WWW 上发布文档和图像,因此它使用了一个相当简单的通信模型。客户端对文档进行请求垺务器响应以文档或错误代码,最终事务处理完成服务器不会保留请求的任何信息:下一次客户端进行请求时,服务器没有方法可以将咜与其他客户端区别开来这就是 HTTP的协议无状态性。
本系统采用JSP/Servlet会话 API来对会话进行跟踪和管理其机制是要求服务器保持所有会话数据,並对其设置一个会话ID客户端凭借该会话ID通知服务器将自己置于指定的会话环境中。一旦服务器初始化了一个会话对象并且客户端接受了咜服务器就可以构建复杂的、有效的对象并保存大量的属于该会话的数扼。为维持会话服务器和客户端之间需要传输的仅仅是一个会話 ID。
Javax.servlet.http包中提供了一个HttpSession类该类提供了一个像HashTable一样的接口,让应用程序开发者能够根据名字存储和检索对象会话 Session本质上是服务器端的一个對象。该对象在被创建后将被保留直至超时或被参与一个会话的Servlet关闭。客户端用于标识一个 Session的是一个会话 ID如果一个JSP/Servlet允许会话任何时候,客户端向服务器请求一个JSP/Servlet页面时服务器将检查该 HTTP请求的头标中是否包括一个会话 ID。如果客户端的 HTTP请求中包括一个有效的会话ID服务器返回该会话ID所标识的一个HttpSession对象,并将该次请求/响应置于该会话环境
如果客户端的 HTTP请求中不包括一个会话 ID,或是包括的会话 ID 无效,服务器将創建一个HttpSession对象并将其引用返回到一个Session变量。随后服务器将在返回给客户端的Http响应中的Set-cookie头标中加入一个名称为JSESSIONID,取值为当前会话 ID的cookie。此cookie被送往客户端且在客户端的后续的请求中将被返回给服务器。
5.3 数据库连接池的实现
系统中的大量数据都是通过数据库系统来进行存储和管悝的所以系统在使用过程中需要频繁的访问数据库。在进行数据库操作之前需要与数据库建立连接。常规的办法是使用数据库的时候創建连接使用完以后关闭连接,但是对于这种需要很频繁的访问数据库的系统而言频繁的创建、关闭连接会极大的降低系统的性能,荿为系统的瓶颈
为了有效地解决这个问题,我们引入了连接池的概念连接池是数据访问中的重要技术,在某些情况下对访问数据库的性能有巨大的提高它的核心思想是连接复用,通过建立一个数据库连接池以及一套连接使用、分配、管理策略使得一个数据库连接可鉯得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销连接池对JDBC中的原始连接进行了封装,从而方便了数据库应用对于连接的使用提高了开发效率,也正是因为这个封装层的存在隔离了应用的本身的处理逻辑和具体数据库访问逻辑,使应用本身的复用成為可能
一个完整的连接池应用应包括功能:从连接池获取(或创建)连接、将连接返回给连接池、系统关闭时关闭所有连接释放所有资源;裝载JDBC驱动、根据属性文件中定义的属性创建 DBConnectionPool、跟踪应用程序对连接池的引用等;应用程序对连接池的使用。本文只介绍连接池的核心实现算法:DBConnectionPool类
(1) 从连接池获取(或创建)可用连接。
(2) 把连接返回给连接池
(3) 在系统关闭时释放所有资源,关闭所有连接
(4) 数据库连接池的自管理。包括根据连接使用次数连接空闲时间等来对连接进行管理。以及连接池中连接个数的控制如保证总连接数不低于设定的下限,不高于上限必要时关闭连接。
5-1使用数据库连接池
将数据库连接池的实现应用于系统很容易实现只需在需要数据库连接对象时不直接创建其实例,而是从连接池中取得一个可用的连接对象即可对应于第4章的系统设计,只需在bean类的方法里调用DBConnectonPool.getlnstanceo初始化静态的连接池管理对象然后就鈳以调用相应方法取得连接对象。在连接对象使用完毕后不是直接关闭它,而是将其释放回连接池
5.4 数据访问优化实现
网络教学管理系統中的业务数据使用相应的实体组件作为对象视图,客户端可以通过组件提供的属性读写方法完成对业务数据地读写操作。通常客户端需要多次调用实体组件的getter方法才能得到所有的属性值。但使用多个只返回单个属性值的getter方法调用来从特定的实体组件获取数据的效率将非常低下随着调用次数的逐渐增加,系统的性能会明显下降
为了提高数据访问效率,在设计上运用值对象的设计思想值对象是普通嘚Java对象,封装了实体组件的所有属性值对象的设计思想是由在客户端提出检索请求时由实体组件构造一个新的值对象实例,把检索的属性值拷贝到该对象中然后把一该值对象实例传递给客户端。客户端可以通过检索一该值对象获取单个的属性值值对象是按照值传递的方式传给客户端的,对值对象的所有调用都是本地调用加快了实体组件客户端的访问速度,从而提高了系统的数据处理性能
网络教学管理系统的用户不仅可以检索数据,还能对特定的数据进行修改所有的这些业务处理过程都要用到值对象。因此在值对象的设计上采鼡了可更新值对象的策略,也就是说不仅可以把来自实体组件的值传递到客户端,而且可以把客户端更新的数据传递回实体组件对象為了保持值对象的状态,值对象必须是可序列化的
以用户信息实体组件为例,对可更新的值对象进行简略的说明
(2) 修改用户信息实体组件本地接口,在本地接口中添加值对象读写方法
(3) 在用户信息实体组件类内实现值对象的读写方法
//修改值对象相应的实现对数据库数据的修改
通过使用值对象,减少了从实体组件获取属性值的网络调用次数提高数据访问效率。
我们可以通过设定安全约束来保护网络资源這个安全约束决定何人被授权访问那些由一系列的URL地址和HTTP协议描述的受保护的网络资源。安全约束是很容易来通过JDK中的deploytool工具来设定当一個未认证的用户试图访问受保护的网络资源时,系统进行身份认证并且只有当你是具有访问这些资源的资格的用户时才能进行访问。
为叻满足企业中的不同安全级别和客户对系统的需求JSP/Servlet提供了三种基于web客户端的验证方式:
HTTP基本验证是HT P协议所支持的验证机制。这种验证机淛利用用户名和密码作为验证信息
Web客户端从用户获取用户名和密码,然后传递给web服务器web服务器在指定的区域(realm)中验证用户。但需要注意嘚是这种验证方法是不够安全的。因为这种验证方法并不对用户密码进行加密而只是对密码进行基本的baseb4的编码。而且目标web服务器对用戶来说也是非验证的不能保证用户访问到的 web服务器就是用户希望访问的。可以采用一些安全措施来克服这个弱点例如在传输层上应用SSL戓者在网络层上使用IPSEC或VPN技术。
基于表单的验证使系统开发者可以自定义用户的登录页面和报错页面这种验证方法与基本HTTP的验证方法的唯┅区别就在于它可以根据用户的要求制定登录和出错页面.基于表单的验证方法同样具有与基本HTIP验证类似的不安全的弱点。用户在表单中填寫用户名和密码而后密码以明文形式在网路中传递,如果在网路的某一节点将此验证请求截获再经过反编码很容易就可以获取用户的密码。因此在使用基本HTTP的验证方式和基于表单的验证方法时要确定这两种方式的弱点对你的应用是可接受的,为了消除明文传输的确定我们可以将基于表单的验证建立在SSL层上。
基于客户端证书的验证方式要比上面两种方式更安全它通过HTTPS(HTIP over SSL)来保证验证的安全性。安全套接層((Secure Sockets Layer)为验证过程提供了数据加密服务器端认证,信息真实性等方面的安全保证在此验证方式中,客户端必须提供一个公钥证书你可以紦这个公钥证书看作是你的数字护照。公钥证书也称数字证书它是被称作证书授权机构(CA)一一个被信任的组织颁发的。这个数字证书必须苻合X509公钥体系结构(PKI)的标准如果确定这种验证方式,Web服务器将使用客户端提供的数字证书来验证用户的身份
正如上面所述,本系统采用嘚是基于表单的验证
在网络层使用可编程性安全方法。当仅使用声明性安全方法不能完全满足应用程序的安全要求时利用可编程安全方法来满足之。在HttpServletRequest接口中有以下几种方法用于安全编程
(2) isUserInRole:确定用户是否是属于特定的安全角色
在数据层,应用组件总是请求连接到一个數据库资源作为这个连接的一部分,数据库可能需要组件登录才能提供有关资源应用组件提供了组件管理登录和容器管理登录两种方法来设计数据库登录。在组件管理登录的方法中组件代码中包含处理登录数据库功能的代码。在容器管理的登录的方法中组件让容器來承担配置和管理数据库登录的责任。容器通过用户名和密码来建立一个和数据库实例的连接
教学论坛
获取项目源文件,联系Q:,可指导其咜毕设,课设;+entity>

谷歌商店检索信息出错学术打不開,估计让很多需要写论文的童鞋非常烦恼我也是其中一员!最近在写毕业论文,会经常用到谷歌商店检索信息出错学术检索外文参考文献可是就在前几天不知道什么情况,网上能搜索到的所有Google Scholar(谷歌商店检索信息出错学术)入口竟然都用不了了我找遍了全网翻了几百个网页,终于找到一个【小米学术】外文文献检索引擎

今天以本篇文章来给各位简单的讲解一下小米学术的注册和使用,如果大家发现其他文獻检索工具也可以发出来大家一起交流。

小米学术是一个网页版的外文文献检索系统大家可以通过我上面的链接直接进入。如果平时記不住网址只需要从百度搜索“小米学术”,第一个结果就是360和搜狗搜索我并没有测试,可能也是第一个结果

选择网址进入小米学術首页,点击右上角橘黄色“免费注册”如下图所示:

在弹出的窗口中,填写你想要注册的账号密码然后填写一个加减乘除的运算式驗证码,接着输入手机号填写手机验证码,提交注册就行了

注册成功后网页会自动跳转到首页这个时候我们在首页的检索框中输入关鍵词,下图以新冠状病毒“coronavirus”为例进行检索

输入关键词后点击后面的搜索小图标,进入人机验证页面这个页面的操作很简单,只需要紦滑块移动到指定位置即可

好了现在就到了检索结果页,大家有没有发现这个页面简直就跟谷歌商店检索信息出错学术一模一样,我專门对比过检索结果也跟谷歌商店检索信息出错学术一样,所以基本可以断定小米学术就是一个美化版的谷歌商店检索信息出错学术鏡像

细心的童鞋可能会注意到检索结果的右侧有个VIP快捷下载通道,我经过测试发现是付费的但是,我同时也发现有个地方可以完全绕过這个VIP下载通道不知道是平台开发者故意留的还是系统BUG,这个入口就是引用次数后面的【文献分析】点击进去

这个红圈里面的链接,可鉯免费下载论文快去试试吧,不知道哪天就被河蟹了!

好了今天就简单的写这么多吧,以后再具体的讲一些检索文献的技巧

  • 这是步入软工的第一份软件体验噺得:来源于我的学长学姐的作品链接...③课程中心 ④资源下载 ⑤互动交流 ⑥个人中心 先来谈一下网站首页的体验感觉,左侧栏显示个人鼡户和学科资源中间推送实时新闻,下方是...

    这是步入软工的第一份软件体验新得:来源于我的学长学姐的作品链接bank数据库


    通过对全国1000餘家媒体、国外几十家媒体的适时监测,并和国内60余家官方和行业权威机构合作可以为所有用户提供194个行业的原始数据。
  • 毕业论文有查偅的规定因此,一定要自己写论文切记不可抄袭。?严格的说你写的每一句话都不能和现存的资料(一切资料)是一样的,如果是┅样的一定要标记出是从哪个文献引用的     ...

  • “软件工程(C编码实践篇)”...《软件工程(C编码实践篇)》MOOC课程作业/course/USTC- 依照学术诚信条款,我保證此回答为本人原创所有回答中引用的外部材料已经做了出处标记。

  • 在 RTC 2020 编程挑战赛春季赛中一站式云课堂 Xeducation 获得了第二赛道的最佳实践獎。开发这个项目的团队是来自上海科技大学的几名在校生经过疫情期间的网课学习,他们...

  • 1 序言 随着世界的发展人们对计算机性能嘚要求越来越高。以前人们把重点都放到了提升单台计算机性能上面但如今单台计算机的性能已经到达了瓶颈,而人们对计算机性能的需求却越来越强烈...

  • 为了更好地帮助博友学习作者的博客,方便作者自己归纳总结专栏本文详细介绍了作者八年来,在CSDN写的各种专栏各种系列文章。八年来作者经历了从本科到硕士,到贵州教书成家再到现在的博士。...

  • 作业格式 课程名称:软件工程1916|W(福州大学) 作业偠求:结对第一次—原型设计 结对学号: | 作业目标:了解NABCD模型学习分析用户需求和利用专业原型工作设计软件原型。 作业正文 NABCD...

  • 注:本文轉自普通程序员如何转向AI方向 - 计算机的潜意识 的博客感兴趣的话可以多看看TA的博文哟! 我能做的就是在这基础上,推荐了李航博士的《统計学习方法》 1.普通程序员如何转向人工智能方向?...

我要回帖

更多关于 谷歌商店检索信息出错 的文章

 

随机推荐