编译原理网上教学系统的设计与实现本科学位论文.docx
《编译原理网上教学系统的设计与实现本科学位论文.docx》由会员分享,可在线阅读,更多相关《编译原理网上教学系统的设计与实现本科学位论文.docx(32页珍藏版)》请在冰豆网上搜索。
编译原理网上教学系统的设计与实现本科学位论文
编译原理网上教学系统的设计与实现
摘要
互联网时代的到来加速了我国高校信息化、网络化的发展步伐,以数字化为核心的信息技术在高校教学、科研等各个领域得到越来越广泛的应用。
随着校园网基础设施的不断完善和网络信息资源的开发利用,高校网站建设与发展倍受师生的关注。
编译原理教学网站和论坛的设计和开发的意义在于:
一方面利用网络这一强大的工具,使编译原理学科的各种教学信息得到更大程度的共享;另一方面,学生和教师在实践教学中更好、更便利地通过网络获取、传授知识和交流与沟通。
基于Java语言的JSP因为其优良的性能、良好的可扩展性和强大的支持功能而成为Web编程的首选技术。
本系统利用JSP技术,建立一个功能齐全,操作简单的B/S架构的编译原理教学网站和论坛系统。
使得学生可以方便的阅读学习编译原理的各章节知识和通过论坛来学习和交流,同时也为管理员提供一个方便简洁的管理平台。
关键词:
管理信息系统JavaEEB/S架构
ABSTRACT
ThearrivalofInternetagesacceleratedanourcountryahighschoolinformation-based,thenetworkturnofdevelopmentstep,changeintotheinformationtechniqueofcorebynumeraltogetamoreandmoreextensiveapplicationineachrealmofthehighschoolteaching,researchandsoon.Alongwithcampusnettheinfrastructureiscontinuouslyperfecttodoublybesubjectedtotheteachersandthestudents'concernwiththedevelopmentmakeuseofhighwebsiteconstructionintheschoolanddevelopmentofnetworkinformationresources.
Themeaningwhicheditsandtranslatethedesignofthewebsiteandforumoftheprincipleteachinganddevelopmentonlinemakeuseofnetworkthisstrongtool,makevariousteachinginformationofeditandtranslatetheprincipleacademicsgettheshareoflargerdegree.Ontheotherhand,thestudentandteacherisbettertointhefulfillmenttheteachingandmoreconvenientlyobtainthroughanetwork,inductionknowledgeandexchangesandcommunication.
AccordingtotheJSPofJavalanguagebecauseitgoodfunction,goodlycanexpandsexwithstrongsupportfunctionbutbecometheheadofwebplaitdistancetochooseatechnique.ThissystemmakesuseofaJSPtechniqueandbuildupafunctionwell-found,theoperationissimpleoftheB/Sconfiguringofeditandtranslatewebsiteandforumsystemoftheprincipleteaching.Makestudentcantheconvenientreadingstudyeditandtranslateeachchapterknowledgeofprinciplewithpassaforumtostudyandcommunicate,alsoprovideaconvenientsimpleanddirectmanagementterraceforthemanagingpersoninthemeantime.
Keywords:
ManagementInformationSystem(MIS)JavaEEB/Sstructure
目录
一前言1
二需求分析2
2.1功能需求分析2
2.2数据需求分析3
2.3性能需求分析4
2.4出错处理需求分析4
2.5界面需求分析5
三系统总体设计6
3.1设计目标6
3.2功能总体设计6
3.2.1系统的功能特点6
3.2.2系统功能总体设计6
3.3数据库总体设计8
四系统详细设计及实现10
4.1技术背景10
4.1.1B/S架构10
4.1.2选用JAVA和JSP的原因10
4.2开发平台的选择10
4.3系统功能详细设计10
五系统测试21
5.1编译原理教学子系统测试21
5.2编译原理论坛子系统测试22
六总结25
谢辞26
参考文献27
附录28
一前言
1.1研究背景与意义
互联网时代的到来加速了我国高校信息化、网络化的发展步伐,以数字化为核心的信息技术在高校教学、科研等各个领域得到越来越广泛的应用。
随着校园网基础设施的不断完善和网络信息资源的开发利用,高校网站建设与发展倍受师生的关注。
编译原理教学网站和论坛的设计和开发的意义在于:
一方面利用网络这一强大的工具,使编译原理学科的各种教学信息得到更大程度的共享;另一方面,学生和教师在实践教学中更好、更便利地通过网络获取、传授知识和交流与沟通。
1.2国内外研究现状
随着网络技术的发展,近年来国内出现了涌现出了大量优秀的基于Web的项目。
其中,教学网站和论坛也占据有一席之地。
这些教学网站和论坛内容丰富,会员人数庞大,提供了丰富的学习资料和信息,有效地帮助了人们去学习知识和解决问题。
比如说我国的CSDN网站就是很流行的程序员交流论坛。
1.3研究内容
本课题作为JavaWeb的应用,研究内容涉及两大方面。
一方面作为JavaWeb应用,研究内容包括系统的客户端逻辑及显示、服务器端的逻辑及安全性设计、整个系统的设计模式及数据库结构的设计。
另一方面内容是教学系统及论坛业务逻辑的设计。
包括如何设计美观的页面使用户使用本系统时能有较好的用户体验、如何组织大量课程的展示、如何突出编译原理课程的重点难点、如何让用户方便的通过使用该系统进行学习和交流。
1.4论文组织与安排
本论文系统记录了该系统开发的流程,融入了整个系统设计与开发的相关文档:
需求分析、系统总体设计、系统详细设计、软件测试用例文档。
二需求分析
2.1功能需求分析
2.1.1编译原理教学网站子系统
如图2-1,编译原理教学网站子系统功能图[1]。
在课程目录模块,显示编译原理课程的各章及目录及附录;正文模块根据用户在课程目录或显示菜单的选择,显示指定的内容,如:
指定章节课程内容;显示菜单提供课程帮助(包括:
知识结构、重点难点和词汇表)、课程信息(包括:
教师简介、课程简介和课程目标)、论坛。
图2-1编译原理教学网站子系统功能图
2.1.2编译原理教学网站子系统
如图2-2,编译原理论坛子系统功能图。
用户登录模块提供用户的登录和退出;账号管理支持用户账号注册和已注册用户的密码修改;文章管理模块的发布文章支持用户和管理员的文章发布,管理文章模块提供管理员登录入口,管理员登录后就有删除文章的权限;文章搜索模块提供三种文章搜索的方式:
按标题搜索、按作者搜索和按文章类型搜索;文章列表显示支持两种列表的显示:
所有文章列表和指定条件的文章列表;文章浏览与回复模块提供浏览文章和回复文章两种功能。
图2-2编译原理论坛子系统功能图
2.2数据需求分析
1、学生信息表用于记录系统的普通用户。
普通用户身份的注册与验证、文章的提交与恢复等模块均涉及到该表的读取操作。
表2-1学生信息表简述
学生信息表
属性名
属性意义
学生ID
表的主键,唯一标识
学生姓名
记录学生的姓名
密码
学生登录系统的密码
2、系统管理员信息表用于记录系统的管理员信息。
系统管理员的登陆与修改密码涉及
到对该表的操作。
表2-2系统管理员信息表简述
系统管理员信息表
属性名
属性意义
系统管理ID
表的主键,唯一标识
密码
管理员后台登录系统的密码
3、文章信息表用于记录所有文章的相关信息。
文章的发布、搜索和删除涉及到对该表的操作。
表2-3文章信息表简述
文章信息表
属性名
属性意义
文章ID
表的主键,唯一标识
标题
文章的标题
文章类型
代表文章的类型
作者
文章的作者
时间
文章发表时间
浏览数
该文章被浏览的次数
回复数
该文章被回复的次数
内容
文章的正文内容
4、文章回复信息表用于记录所有文章的回复信息。
回复文章涉及到对该表的操作。
表2-4文章回复信息表简述
文章回复信息表
属性名
属性意义
文章回复ID
表的主键,唯一标识
文章ID
被回复的文章的主键(对应于文章信息表)
作者
回复文章的作者
时间
回复文章时间
2.3性能需求分析
系统要求能够满足多个用户的同时访问,具备大批量数据处理能力,并能快速地将用户需要的信息返回给用户浏览,系统接口要整洁、美观以及合理,用户能够使用方便。
2.4出错处理需求分析
对于因用户操作引发的业务逻辑错误,系统均给出了相应的提示信息,并以友好的形式返回给用户。
对于系统内部运行错误,系统打印错误信息,以便在系统运行时能够便于运行、维护、推广和升级。
当用户通过盗取的链接试图跳过权限直接访问页面时,需要做出警告并且不显示任何用户权限之外的内容,防止用户越权操作。
2.5界面需求分析
1、编译原理教学网站子系统主接口示意图如图2-3所示:
显示菜单
课程目录
正文
版权信息
图2-3编译原理教学网站子系统主接口
2、编译原理论坛子系统主接口示意图如图2-4所示:
系统标志顶:
宽778px,高130px
系统功能树
左:
宽178px
高350px
系统功能操作页
右:
宽600px
高350px
图2-4编译原理论坛子系统主接口
三系统总体设计
3.1设计目标
建立编译原理教学网站和论坛系统,实现编译原理课程的发布和编译原理学习经验的交流与共享,使该系统成为学习编译原理知识的平台。
通过该系统的实现,帮助学生更好的学习编译原理知识,同时也是学生和教师在实践教学中更好、更便利地通过网络交流与沟通。
3.2功能总体设计
3.2.1系统的功能特点
1、操作简单、接口友好:
合理的页面布局,使得用户可以轻松的找到所需的详细知识与信息。
2、功能完善:
系统对编译原理课程知识进行了整理和细化,帮助用户更好的学习知识;同时论坛子系统为用户提供发布文章、浏览、搜索和回复文章的功能,便于知识的交流与共享。
3、易于维护:
系统采用了JavaEE标准的多层分布式[2]开发模式[3]。
各模块分工明确,各尽其责,程序代码结构清晰,模块之间耦合程度低,便于以后的维护和升级。
3.2.2系统功能总体设计
编译原理教学网站和论坛系统主要分为编译原理教学子系统、编译原理论坛子系统。
编译原理教学子系统通过页面左侧的课程目录选择所需浏览的课程;论坛子系统在用户登录系统后在左侧功能树选择自己所需的操作,下面介绍其总体设计方案:
1、编译原理教学子系统:
编译原理教学子系统提供了编译原理所有内容的展示,同时各部分内容对页面左侧的课程目录,以便于在需要时能迅速找到所需课程,针对性地展开编译原理知识的学习。
(1)顶部菜单
提供了教师简介、课程简介、学习目标、学习帮助、考试系统和论坛的链接。
其中鼠标移至论坛帮助上方是将显示出论坛帮助的子菜单,该子菜单又包括词汇表、重点难点和知识结构子节点。
页面设计如图3-1所示。
(2)课程目录
用于列出各章课前索引、各节标题、本章小结和课后习题及课程附录。
页面设计如图3-1所示。
(3)课程正文
对应于左侧课程目录选中项正文内容的显示。
为了更好的帮助同学们去理解课程,每一章知识都加入了大量的图片及flash,同时也提供了课前索引、课后习题及本章小结。
页面设计如图3-1所示。
图3-1编译原理教学子系统页面
2、编译原理论坛子系统:
为了方便用户的使用,编译原理论坛子系统提供了用户登录模块、账号管理模块、文章管理模块、文章搜索模块、管理员模块。
除此之外还提供了的功能有:
浏览文章,文章回复,点击及回复次数统计。
(1)用户登录模块
成功注册过的学生根据学号和密码在这里登陆编译原理论坛子系统。
页面设计见图3-2。
(2)账号管理模块
账号管理模块有两个功能:
账号注册功能和注册过的账号的密码修改功能。
页面设计见图3-2。
(3)文章管理模块
文章管理模块有两个功能:
发表文章功能和管理文章功能,其中点击管理文章后进入管理员登陆页面,作为后台管理的入口。
页面设计如图3-2所示。
(4)文章搜索模块
支持三种类型的搜索:
按文章标题、按文章类型和按文章作者。
页面设计如图3-2所示。
(5)管理员模块
管理员成功登陆后,系统删除文章的功能。
(6)其它功能
编译原理论坛子系统还提供了:
浏览文章,文章回复,点击及回复次数统计功能。
图3-2编译原理论坛子系统页面
3.3数据库总体设计
所有数据库表[4]均包括ID这个通用字段,作为所属数据库表的主键。
本系统设计了四个数据库表,如下所示:
1、用户信息表
用户信息表用来存储系统需要保存的普通用户信息,ID代表学生学号,作为该表的主键,总体设计如表3-1所示。
字段名
类型
可否为空
描述
ID
INT(11)
否
学号
USERNAME
VARCHAR(20)
否
学生姓名
PASSWORD
VARCHAR(20)
否
登录密码
表3-1用户信息表
2、管理员信息表
管理员信息表用来存储系统需要保存的系统管理员信息,id代表管理员账号,作为该表的主键,总体设计如表3-2所示。
表3-2管理员信息表
字段名
类型
可否为空
描述
ID
INT(11)
否
账号
PASSWORD
VARCHAR(20)
否
密码
3、文章信息表
文章表用来存储系统的所有文章信息,ID作为主键。
总体设计如表3-3所示。
表3-3文章信息表
字段名
类型
可否为空
描述
ID
INT(10)
否
文章ID
TITLE
VARCHAR(300)
否
文章标题
KIND
VARCHAR(30)
否
文章分类
AUTHOR
VARCHAR(50)
是
作者
TIME
DATETIME
是
文章发表时间
CLICKCOUNT
INT(10)
是
文章浏览次数
REPLAYCOUNT
INT(10)
是
文章回复次数
TEXT
TEXT
否
文章内容
4、文章回复信息表
文章回复表用来存储系统的所有文章回复信息,ID作为主键,ATICLEID代表回复内容所属的文章的ID即ATICLEID是本表关联文章信息表的外键。
总体设计如表3-4所示。
表3-4文章回复信息表
字段名
类型
可否为空
描述
ID
INT(10)
否
文章回复ID
ATICLEID
INT(10)
否
所属文章的ID
AUTHOR
VARCHAR(50)
是
作者
TIME
DATETIME
是
文章回复发表时间
TEXT
TEXT
否
文章回复内容
四系统详细设计及实现
4.1技术背景
4.1.1B/S架构
系统采用的是B/S架构,即浏览器/服务器端模式。
该模式是随着Internet技术的兴起,对C/S架构(即客户/服务器端模式)进行改进之后形成的新架构。
在B/S架构下,客户端界面是通过浏览器来实现的,省去了C/S架构还要必须安装客户端的步骤。
因此,软件系统的升级就可以只在服务器端进行,这样就大大减轻了系统维护和升级所要花费的成本和工作量,很适合大型系统的开发。
4.1.2选用JAVA和JSP的原因
Java[5]是由SunMicrosystems公司于1995年推出的一种类似于C++的语言,它具有平台无关性、安全性、分布式、面向对象[6]、健壮性、简单易学的特点。
随着Internet的流行,Java凭借在网络方面的优势以及自身的特点已经在网络开发的市场上占据了无可比拟的优势,并且已经成为许多商业系统的首选开发语言。
JSP(JavaServerPages)是由SunMicrosystems公司倡导、许多公司一起建立的一种动态网页技术标准。
与其它语言相比,JSP具有如下几个优点:
一次编写,到处运行;系统的多平台支持;强大的可伸缩性;多样化和功能强大的开发工具的支持,并且大部分工具都是为免费提供给用户的。
4.2开发平台的选择
系统采用的数据库是MySQL[7]关系数据库。
作为目前世界上最流行的开放源代码关系数据库管理系统,MySQL数据库几乎席卷了整个产业界。
MySQL数据库就有的跨平台支持、独立存储引擎、查询高速缓存、高级权限与安全系统、全文索引与检索等特性,是MySQL数据库得意取胜的法宝。
可见现,MySQL数据库很适合在本编译原理教学和论坛系统中执行数据存储任务。
Tomcat[8]是用于开发、集成、部署和管理分布式Web应用、网络应用和数据库应用的Java应用服务器,拥有处理关键Web应用系统问题所需的性能、可扩展性和高可用性,为Web应用系统建设提供了完善的解决方案。
Tomcat的配置方式也很简单,一般只需要修改conf目录下的server.xml[9]文件即可。
系统的开发工具采用了非常优秀的集成开发环境Eclipse,它是一个开放源代码的、基于Java语言的整合型可扩展开发平台,也是目前最著名的开源项目之一,它由IBM公司开发。
凭借着开源、免费、多样化的插件、强大的扩展能力,Eclipse已经成为当前JAVA语言系统开发的首选工具。
4.3系统功能详细设计
在系统的设计过程中,对于一些常用代码模块进行了代码复用,与数据库的交互采用了持久层技术及Hibernate框架,核心代码请见附录,因此,对所有用例不再一一详细介绍,只是挑选小部分用例进行介绍。
1、编译原理教学系统课程目录
功能描述:
显示编译原理课程的所有章节(包括各章的索引、小节及课后习题)和附录。
本功能通过JavaScript脚本语言来实现。
主要代码举例如下:
……
tree=newTree();//实例化课程目录树
vardirectory=newNode("课程目录");//课程目录根节点
directory.fontbold=true;//字体加粗显示
directory.fontcolor="#ABAEE2";//设置字体颜色
directory.expanded=true;//默认展开所有子节点显示
tree.add(directory);//将课程目录根节点添加到目录树
varchapter1=newNode("第一章编译程序概述");//第一章子节点
chapter1.fontcolor="#ABAEE2";//设置子节点字体颜色
directory.add(chapter1);//将第一章子节点添加到课程目录根节点
varindex1=newNode("课前索引","lessonDoc/chap01/index1.html");
//章索引子节点
index1.fontcolor="#ABAEE2";//设置第一章索引子节点字体颜色
chapter1.add(index1);//将第一章索引子节点添加到第一章节点
……
页面详细设计[10]如图4-1所示。
图4-1编译原理教学系统课程目录页面
2、课程正文显示
功能描述:
用户点击课程目录树选择需要浏览的课程名,右侧正文部分显示指定的课程内容。
主要代码举例如下:
……
varlesson7_1=newNode("7.1LR分析概述","lessonDoc/chap07/lesson7_1.html");
//课程目录中设置节点链结到的网页相对路径
Chapter7.add(lesson7_1);//将第七章第一节添加到所属第七章
……
页面详细设计如图4-2所示
图4-2编译原理教学系统课程正文显示页面
3、页面顶部菜单
功能描述:
当用户将鼠标悬浮在“学习帮助”上时将显示出弹出菜单,弹出菜单提供的子链结由:
词汇表、重点难点和知识结构。
主要代码:
//为菜单项定义鼠标事件
startList=function()
{
if(document.all&&document.getElementById){
hcbMenubarRoot=document.getElementById("mynav2");
varcount=0;
for(j=0;j{
node=hcbMenubarRoot.childNodes[j];
count=j;
if(node.nodeName=="LI"){
node.onmouseover=function(){
this.className+="over";
}
node.onmouseout=function(){
this.className=this.className.replace("over","");
}
}
}
}
}
window.onload=startList;//载入页面是初始化该函数
页面详细设计如图4-3、图4-4所示:
图4-3鼠标没有悬浮在“学习帮助”上时的编译原理教学系统页面顶部菜单图
图4-4鼠标悬浮在“学习帮助”上时的编译原理教学系统页面顶部菜单图
4、论坛子系统主页面显示
功能描述:
论坛子系统主页面主要由三部分组成:
顶部菜单(点击论坛首页则链结会论坛首页面)、左侧功能菜单和文章列表或文章正文显示。
主要代码如下: