1、摘 要:由于教育大众化,学生数量不断扩大,学校管理者的负担也不断增加。为减轻学校负担并提高管理效率,学校可以利用网站对学生和教师等进行管理。该系统主要包括三个部分:学生、教师和管理员。其中学生的功能有学生登录、个人信息维护和教师信息查询。教师的功能有教师登录、个人信息维护等。管理员部分的主要内容有管理员登录、课程信息管理、学生信息管理和教师信息管理等。通过分析,本系统采用JAVA语言和Struts框架开发。为节省费用,数据库采用SQLServer 2000。最后结合自己编写的教学管理系统,给出一个完整的,可实际使用的系统。虽然系统功能不是很完善,但是本系统采用模块化编程技术,将来系统维护和升级
2、会很容易。关键词:教学管理系统;Struts;Java;SQLServerThe Design and implementation of WEB-based teaching managementsystemAbstract: Because education popularization, the number of students is growing, the burden of school administrators continue to increase. In order to alleviate the burden and improve the efficienc
3、y of school management, schools can use the site to manager students and teachers . The system includes three parts: students, teachers and administrators. Students can log in, maintenance of personal information and find out the information of teachers . Teachers can log in, safeguard personal info
4、rmation. Administrator of the main contents of an administrator to log in, management the information of curriculum, management the information of all the students and management the information of all the teachers. Through analysis, the system uses JAVA language and framework for the development of
5、 Struts. To save costs, the database used SQLServer 2000. Finally, prepared by their own teaching management systems, is a comprehensive, practical use of the system. The system is not perfect, but this system is modular programming technology, system maintenance and upgrading will be very easy in t
6、he future. Keywords:Teaching Management System; Struts;Java;SQLServer目 录第1章 引 言11.1 开发背景11.2 开发目标1第2章 系统简介22.1 系统的开发环境22.2 运行环境22.3 开发工具简介22.3.1 JAVA、JSP及Struts 的介绍22.3.2 SQL Server 2000数据库的介绍2第3章 系统分析33.1 可行性分析33.2 性能分析33.3 业务流程分析3第4章 系统设计54.1 系统结构设计54.1.1 学生模块54.1.2 教师模块54.1.3 管理员模块64.2 数据库设计8第5章
7、系统实现125.1 学生模块125.1.1学生登录125.1.2学生查询成绩135.1.3个人信息维护155.1.4课程信息165.2 教师模块185.2.1 教师登录185.2.2 个人信息维护185.2.3 选课处理195.3 管理员模块215.3.1 管理员登录215.3.2 课程信息管理225.3.3 学生信息管理235.3.4 教师信息管理24第6章 结束语27参考文献28第1章 引 言1.1 开发背景随着社会的发展,教育面向大众化,越来越多人可以进入学校去学习,学校和学生的规模不断扩大,学校需要管理的东西越来越多,越来越复杂,如果单靠人力去管理,很容易出现差错。因此,本系统的任务就
8、是开发一个教学管理系统,由计算机进行一系列的操作,比如学生修改自己的信息、根据课程名查询成绩、查询本学期的成绩、查询不及格的成绩、以及选课、查看选课结果和查看自己教师信息等;教师也可以修改自己信息、查看选自己课程的学生并且接受或则拒绝学生选课和登记学生考试分数;另外还有管理员,管理员可以维护系统的基本信息,比如添加和修改学生信息,添加和修改教师信息,添加和修改课程信息等。这样就减轻了学校管理人员的负担,方便了师生之间的交流,促进了了学生之间的学习。1.2 开发目标本系统设计的目的主要有两个:1.方便学校的管理,提高工作效率。随着教育的大众化,学校的规模不断扩大,学生不断增多,如果还是采用人工的
9、方法去管理,会消耗很多的人力和财力,也很容易出错。但是,如果使用计算机管理就很方便,可以减轻学校管理人员的负担,减少财政开支。2.方便学生与教师的交互。以为使用这个系统,教师可以很容易的看到自己的学生,并录入成绩,可以接受或拒绝学生选课。学生也可以很容易找到自己教师的信息,以便及时与学生联系,这就加强了学生与教师之间的交流,有利于学习进步。第2章 系统简介2.1 系统的开发环境操作系统:Windows xpDBMS:SQLServer2000服务器:tomcat 5.5 版本2.2 运行环境服务器:pentium4 1.7 GHZ以上,512M内存,windows xp或2000系统客户机:p
10、entium41.7GHA以上,256M内存,windows xp或2000系统2.3 开发工具简介2.3.1 JAVA、JSP及Struts JAVA是最近几年流行起来的编程语言,由于它具有很多优点,比如平台独立,安全稳定,动态下载,实时互动等,被迅速推广,为很多程序员所接受,学习的人越来越多。随着服务器端的应用日益受到重视,大家发现JAVA在服务器端的应用的优异特性,时至今日,除微软外,近乎所有的服务器都用JAVA作为标准。JAVA作为软件开发的一种革命性的技术,其地位已经确定下来1。JSP是以JAVA为基础的一种网页技术。它继承了JAVA的优势,是一种与平台无关的动态网页开发技术,它在H
11、TML网页中调用JavaBean。在逻辑关系比较复杂的大型站点中,可以借助Servlet和JSP的交互关系及JavaBean的协助,将这两个结构分开开实现2。当服务器遇到JSP网页请求时,通过这些JavaBean访问数据库,然后将需要的结果再发送到HTML上,让用户看到自己需要的结果。由于本国的IT行业发展很快,ASP技术已经不能满足社会需求。还有网站技术的迅速发展,其技术从ASP开始转到JSP技术,这个时候可以处理一定的业务逻辑。但是在JSP中,其层次很混淆,即使使用JSP处理浏览器的请求,再调用JavaBean代码去处理业务逻辑,仍然摆脱不了页面中夹杂着JAVA代码的命运,而且JSP很难把
12、视图层,控制层和业务逻辑层真正的分开。如果让其他的人去维护和修改这些代码,那将是非常头疼的事情。然而Struts的出现却改变了这种情况,它能把这三个层次彻底的分开,其中提供很多技术,比如其封装了Servlet去控制页面的流程,提供很多的标签库方便程序员调用,还有就是它提供了用于国际化的框架,可以根据不同的配置文件等3。由于其适合中大型企业,具有很大的使用价值,被迅速推广,并不断得到升级。2.3.2 SQL Server 2000数据库SQL Server 2000数据库是一种关系型数据库。这种关系型数据库有很多优点,我们能将有相向属性的对象对立的存储在表中。对每个表来说,我们可以新增,删除,修
13、改表中的任何数据而不会影响表中的其他数据。第3章 系统分析3.1 可行性分析 本系统应能体现出信息化建设,方便学校的管理和使用,同时在费用上可以节约开支。可以从四个方面对系统进行可行性分析:1)技术可行性:本人学习JAVA已有2年时间,在大学的几年中,本人先后学习过JAVA,JSP,Struts等,并经常写一些小代码。对这几种语言比较熟悉,可以熟练应用。一些常遇到的错误也能自己解决。经过调查和研究,对于教学系统的流程本人也有较深刻的理解,能够较快的进行系统分析和设计,并用程序实现。2)经济可行性:由于JAVA的很多资料和插件都是开员源的,可以免费在网上下载到,比如Tomcat是免费的、开源的W
14、EB服务器,支持运行Servlet/JSP的WEB容器4。另外本系统运用SQL Server 2000数据库。它们具有强大的可以跨平台的特点,部署和运行的费用几乎为零,可以实行。3)运行可行性:由于以前的学校网络很多都采用的ASP技术,这种技术已经不能满足社会的需求,而JAVA有很多优点,符合当前的应用条件,是当前主要的WEB编写语言。4)社会可行性:在现在的社会中,很多软件都是使用传统的技术。而使用传统的JSP来生成HTML页面,业务逻辑和显示逻辑混淆在一起,代码维护量大,开发效率低5。.而以前的代码没有或很少使用MVC结构,对其升级和维护有很大的麻烦,很多学校都在考虑采用新的技术来代替以前
15、的技术。3.2 性能分析“教学管理系统”是专门针对学校,方便学校管理设计的。该软件对学生部分,教师部分,课程部分,选课部分,管理员部分分别进行了设置。功能强大:该软件以学校为应用对象,结合当前和未来发展的管理需求提供实用的管理模式,提高学校的管理效率。用户界面操作简洁:考虑到管理人员可能计算机知识较少,本系统采用业务人员熟悉的业务流程、简单的提示和操作方式,能够让不熟悉此软件的管理人员也能快速使用这个软件去完成自己需要做的工作。系统性能稳定:本系统遵守规范软件工程管理,采用面向对象技术,用SQLServer 作为后台数据库,在技术上和应用上保证了系统的稳定性通过使用教学管理系统,能够减轻教务人
16、员负担,减少学校的开支,促进学生与教师以及学生之间的交流,达到提高管理效率的目的。3.3 业务流程分析为了让用户更加了解这个软件是如何运行的,本人在这里简要介绍一下业务流程。什么叫业务流程呢?简单的说不论做什么事情,都有一个过程,把这个过程的主要步骤记下来,就是业务流程。在现实生活中,很多流程是不能也很难清楚的说出来,但是如果用图表来表示就容易了,下面我们就用图表来说明:我们先来看学生的业务流程,如图3.1: 图3.1 学生业务流程接着,我们来看教师的业务流程,如图3.2: 图3.2 教师业务流程最后,我们来看下管理员的业务流程,如图3.3: 图3.3 管理员业务流程第4章 系统设计4.1 系
17、统结构设计“教学管理系统”主要有三个部分组成,它们是管理员模块,教师模块和学生模块。其中每个模块又包含若干小的功能。4.1.1 学生模块在学生模块中包括很多子功能,学生可以根据自己的用户名和密码登录,然后操作其中的板块部分。比如学生登录、个人信息维护、按课程名查询成绩、本学期成绩查询、不及格成绩查询、选课和教师信息查询,这几个功能之间的关系可以用图4.1来表示:图4.1 学生部分的子模块4.1.2 教师模块在教师模块中包括很多子功能,教师可以根据自己的用户名和密码登录,然后进行相关的操作。比如个人信息维护、查看哪些学生申请选修自己的课程、拒绝学生选课、同意学生选课和录入分数。这几个功能之间的关
18、系可以用图4.2来表示:图4.2 教师部分的子模块4.1.3 管理员模块在管理员模块中包括很多子功能,管理员可以根据自己的用户名和密码登录,然后进行一系列操作。比如添加课程信息,修改课程信息,添加学生信息,修改学生信息,添加教师信息,修改教师信息等。它们之间的关系也可以用下图4.3的关系来表示:图4.3 管理员部分的子模块当然,学生模块、教师模块、课程模块和管理员模块都属于教学管理系统,它们之间也存在一定的关系,这个关系也可以用下面的图4.4表示图4.4 管理员和各模块的关系本系统的程序流程图如图4.5:图4.5 本系统程序流程图4.2 数据库设计数据库模块是这个系统的最重要的模块,所有的JS
19、P页面的编写都离不开数据库,以为所有的数据的存储和取出都是与数据库进行交互的。数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及应用系统,使之能够有效的存储数据,满足各种用户的应用要求6。数据库的设计方法有很多,主要为新奥而良方法,基于E-R模型的设计方法和3NF的设计方法。由于学校数据处理的数据比较多,考虑到实用及费用问题,本系统采用SQLServer作为数据库。另外本系统采用面向对象的技术和模块化的方法,把每个对象作为一个单独的类封装起来,使它与外部分开,当以为维护或升级代码需要改动代码时,更加容易修改。所谓模块化技术是指把程序划分成独立命名且可独立访问的模块,每个模
20、块完成一个子功能,把这些模块集成来构成一个整体,可以完成指定的功能,满足用户的要求7。经分析,这个系统中的实体有课程、学生、教师和管理员。其中学生的属性有姓名学号、密码、性别、年龄和电话。教师的属性有教师号、姓名、密码、性别、年龄、职称、电话和邮箱。课程的属性有课程号、课程名、教师号和备注。管理员的属性有职工号、姓名、密码、性别、年龄和电话。其中学生与教师是多对多的关系,学生与课程是多对多 的关系,管理员与教师为多对多关系,管理员与学生为多对多关系,管理员与课程为多对多关系,这些关系可以用E-R图表示出来,如图4.6。图4.6 E-R图本系统数据库中共有6张表,它们分别是:管理员表 manag
21、er;学生表student;教师表 teacher;课程表 course;选课表 choosecourse;中间表middle。下面本人们将列出具体的表及其表结构:表4.1 管理员表(manager)字段名类型长度关键字备注idvarvhar50是管理员职工号namevarvhar50否管理员姓名passwordvarvhar50否管理员密码sexvarvhar50否性别agevarvhar50否年龄telvarvhar50否电话表4.2 学生表(student)字段名类型长度关键字备注stuidvarvhar50是学号stunamevarvhar50否学生姓名passwordvarvhar5
22、0否学生密码sexvarvhar50否性别agevarvhar50否年龄classnamevarvhar50否班级telvarvhar50否电话表4.3 教师表(teacher)字段名类型长度关键字备注teaidvarvhar50是教师职工号teanamevarvhar50否教师姓名passwordvarvhar50否教师密码sexvarvhar50否性别agevarchar50否年龄jobvarvhar50否职称telvarvhar50否电话emailvarchar50否邮箱表4.4 课程表(course)字段名类型长度关键字备注couidvarvhar50是课程号counamevarvha
23、r50否课程名teaidvarvhar50否教师号shuomingvarvhar50否备注表4.5 选课表(choosecourse)字段名类型长度关键字备注stunamevarvhar50是学生名counamevarvhar50是课程名teaidvarvhar50否教师号itemvarvhar50否学期表4.6 中间表(middle)字段名类型长度关键字备注stunamevarvhar50是学生号counamevarvhar50是课程名markkvarvhar50否标志teaidvarvhar50否教师号第5章 系统实现本系统主要有三个模块,分别是学生模块,教师模块和管理员模块。但每个模块中
24、又分很多小的子功能,下面是这些模块的实现方法。当用户打开网页时,先进入主页面:学生,教师和管理员可以从这里进入各自的登录界面,其截图为图5.1:图5.1 主页面5.1 学生模块5.1.1学生登录学生登录录界面如图5.2:图5.2 学生登录页面当学生输入用户名和密码并登录时,它会根据用户名去数据库中查找相应的密码,并与学生输入的密码比较。如果相同则登录成功,否则登录失败。 其中在数据库中搜寻密码的主要代码为:String strMySql = select * from student where stuname = + name+ ;验证从页面取得密码是否与从数据库中取得的密码是否相同时的主要
25、代码为: if(password.equals(studentdao.getPassword(name) session.setAttribute(studentlogin, name)当学生输入的姓名和密码都正确后,可以跳到学生功能选择页面,其界面如图5.3: 图5.3 学生功能选择页面可以看出,学生功能选择页面中也分几个部分,每个部分还可细分。5.1.2学生查询成绩1当学生把鼠标放在成绩查询上时,会有好几个选项,当点击按课程名查询,会跳到另一页面,其界面为图5.4:图5.4 按课程名查询页面 当学生输入课程名时,会显示出课程名和分数,其界面如图5.5:图 5.5 本学期成绩查询结果页面这个
26、功能的主要实现代码为:String strMySql = select * from chooosecourse where stuname = + stuname+ and +couname+;2.当学生把鼠标放在成绩查询上时,会有好几个选项,当点击不及格成绩查询时,会跳到另一个页面,并查出所有不及格成绩,并列出来,其界面为图5.6:图5.6 不及格成绩查询结果页面这个功能的主要实现代码为:String strMySql = select * from choosecourse where stuname = +name+ and mark60;3当学生把鼠标放在本学期成绩查询上时,会跳到另
27、一个页面,并查出本学期所有成绩,并列出来,其界面为图5.7:图5.7 本学期成绩查询结果页面这个功能的主要实现代码为:String strMySql = select * from choosecourse where stuname=+name+ and item=+itemm+;5.1.3个人信息维护当学生把鼠标放在个人信息维护模块上时,会跳到另一个页面,并列出自己的所有信息,但并不是所有的信息都能够修改,只能修改自己的密码和联系方式,其界面为图5.8:图5.8:修改个人信息页面其主要实现代码分为2步,先找到这个学生的信息:String strMySql = select * from s
28、tudent where stuname = + name, + ;然后在修改自己的信息:String sql = update student set stuid= + stuid + ,stuname= + stuname+ , password=+password+,sex= + sex+ ,age=+age+,classname=+classname+, tel=+tel+ where stuid= + stuid + ;5.1.4课程信息1.当学生点击课程信息时,也会出现很多选项,可以分别选着。当点击选课时,会跳到选课页面,当学生输入课程号并提交时,即可选课。其界面为图5.9:图5.
29、9 选课界面其主要代码也分为2步实现,先找到选修课程及带课教师的信息: String strMySql = select * from student s,choosecourse cc,course c,teacher t where s.stuname=cc.stuname and cc.couname=c.couname and c.teaid=t.teaid and c.shuoming=+item+;然后再进行选课,其主要的实现代码为:String sql = insert into middle values( + stuname+ , + couname+ ,+markk+, +
30、teaid+ );2当学生点击选课结果查询时,可以看到自己申请选课是否选上。其界面为图5.10:图5.10 选课结果页面其主要实现代码为:String strMySql = select * from middle where stuname=+name+3.当学生点击教师信息查询模块时,可以看到教师信息,包括各种联系方式,但是教师的其他信息是不允许学生看到的,所以查不到。其界面为图5.11:图5.11 教师信息查询页面当学生需要查询自己教师的信息并联系教师时,可以使用这个功能。其主要代码为:String strMySql = select * from student s,choosecou
31、rse cc,course c,teacher t where s.stuname=cc.stuname and cc.couname=c.couname and c.teaid=t.teaid and s.stuname=+stuname+5.2 教师模块5.2.1 教师登录用户进入教师登录页面时,可以从这里登录,其界面为图5.12:图 5.12 教师登录页面当教师输入用户名和密码并登录时,它会根据用户名去数据中查找相应的密码,并与教师输入的密码比较。如果相同则登录成功,否则登录失败。 其中在数据库中搜寻密码的主要代码为: String strMySql = select * from te
32、acher where teaname = + name+ ; 当用户从教师界面登录时,可以进入教师功能选择页,其主页面如图5.13所示:图5.13 教师功能选择页面5.2.2 个人信息维护当教师从个人信息维护进入时,可以修改自己的个人信息,其界面为图5.14: 图5.14 修改个人信息页面当教师使用这个功能时,可以修改自己的相关信息,但不是所有信息,其主要实现代码分为2步,先获得这个教师的信息,其主要代码为:String strMySql = select * from teacher where teaname = + name+ ;然后修改自己的信息,但不是全部修改,只可以修改部分信息,
33、其主要代码为:String sql = update teacher set teaid= + teaid + ,teaname= + teaname+ , password=+password+,sex= + sex+ ,age=+age+, tel=+tel+ where teaid= + teaid + ;5.2.3 选课处理1当从选课处理进入时,会看到有哪些学生申请选修自己的课程,其截图如图5.15:图5.15 选课处理页面当教师查看有哪些学生申请自己课程时,可以使用这个功能。这个功能也分为2步来实现。首先根据教师名获得教师号,其主要实现代码为:String strMySql = se
34、lect * from student s,choosecourse cc,course c,teacher t where s.stuname=cc.stuname and cc.couname=c.couname and c.teaid=t.teaid + and c.shuoming=+item+然后根据教师号查找选修自己课程信息的学生,其主要代码为:String strMySql = select * from middle where teaid=+teaidd+ and markk=+n+2当老师同意时,学生选课成功, 将需要信息插入数据库中的选课表。其主要实现代码为:String
35、 sql = insert into choosecourse values( + stuname+ , + couname+ ,+markk+, +teaid+ );当选课人数过多或其他原因老师可以拒绝学生选课,其主要代码为:String sql = update middle set markk=+m+ where stuname=+stuname+ and couname=+couname+;3.当教师点击成绩录入时,会进入成绩录入页面,里面有学生的姓名和课程名,其界面如图5.16:图5.16 即将录入成绩的学生信息页面其主要实现代码为:String sql = select * fro
36、m student s, choosecourse cc,course c,teacher t where cc.couname=c.couname and c.teaid=t.teaid and cc.stuname= s.stuname and t.teaname=+teaname+;当教师点击录入成绩时,会跳到另一个页面,由于刚开始时设置学生的成绩为零,在这里可以录入学生成绩,其界面为图5.17:图5.17 成绩录入页面教师可以在这里录入学生成绩,其主要实现代码为:String sql = update choosecourse set mark=+mark+ where stuname
37、=+stuname+ and couname=+couname+;5.3 管理员模块5.3.1 管理员登录当管理员输入用户名和密码并登录时,它会根据用户名去数据中查找相应的密码,并与管理员输入的密码比较。如果相同则登录成功,否则登录失败其界面如图5.18为:图5.18 管理员登录页面其中在数据库中搜寻密码的主要代码为:String strMySql = select * from manager where name = + name+验证从页面取得密码是否与从数据库中取得的密码是否相同时的主要代码为:if(password.equals(managerdao.getPassword(name
38、)session.setAttribute(managerlogin, name)登录成功后就进入管理员主页面,其界面如图5.19:图5.19 管理员功能选择页面5.3.2 课程信息管理从这个页面进入课程信息管理页面可以对课程进行管理,其界面如图5.20:图5.20 课程信息管理页面从添加课程进入后,可以对课程进行添加,其界面如图5.44: 图5.21 添加课程页面管理员可以根据这个功能进行相应的课程添加,以适应学校新开的课程。其主要代码为: String sql = insert into course values( + couid+ , + couname+ , +teaid+ , +
39、shuoming+ );管理员也可以修改课程信息,其界面如图5.22:图5.22 修改课程信息页面当需要修改课程信息时,可以使用这个功能,这个步骤份2步进行,首先要把所有的课程信息列出来,其主要代码为:String sql=select * from course;然后对相应的课程信息进行修改,其主要代码为:String sql = update course set couid= + couid + ,couname= + couname+ , teaid=+teaid+,shuoming= + shuoming+ where couid=+couid+;5.3.3 学生信息管理从这个页面进
40、入学生信息管理页面可以对学生进行管理,进入是的界面如图5.23:图5.23 管理学生信息页面从添加学生信息进入,可以添加新的学生信息,其界面入图5.24:图5.24 添加学生界面其主要代码为:String sql = insert into student values( + stuid+ , + stuname+ , +password+ , + sex+ ,+age+,+classname+,+tel+);当学生忘记自己密码或其他原因需要修改自己密码时,管理员也可以修改学生信息, 这个功能可以分为2个步骤,首先获得所有学生信息,其主要实现代码为:String sql=select * fr
41、om student;然后对相应的学生信息进行修改,其主要实现代码为:String sql = update student set stuid= + stuid + ,stuname= + stuname+ , password=+password+,sex= + sex+ ,age=+age+,classname=+classname+, tel=+tel+ where stuid= + stuid + ;5.3.4 教师信息管理 管理员可以管理教师信息,比如修改或添加教师信息。其先进入的界面如图5.25: 图5.25 管理教师信息界面 当有教师从别处转来时,管理员可以从添加教师信息进入,
42、添加教师信息,其界面如图5.26:图5.26 添加教师界面这个功能的主要实现代码为:String sql = insert into teacher values( + teaid+ , + teaname+ , +password+ , + sex+ ,+age+,+job+,+tel+,+email+);当由于某种原因需要修改教师信息时,管理员可以从修改页面进入,其界面如图5.27:图5.27 修改教师信息界面这个功能可以分为2个步骤,首先获得所有教师信息,其主要代码为:String sql=select * from teacher;然后对相应的教师信息进行修改,其主要实现代码为:Str
43、ing sql = update teacher set teaid= + teaid + ,teaname= + teaname+ , password=+password+,sex= + sex+ ,age=+age+, tel=+tel+ where teaid= + teaid + ;参考文献1 阎毓杰编著,JSP数据库编程入门,吉林,吉林电子出版社 2005年,P42 岳元媛、池雅庆等编著,JSP项目开发实践,北京,中国铁道出版社 2006年,P103 戎伟、张双编著,JAVA流行服务器、框架、工具及整合应用,北京,人民邮电出版社 2006 年4付京周编著, JAVA 数据库持久层开发实践,北京,人民邮电出版社 2007年5王国辉编著,JSP数据库系统开发完全手册,北京,人民邮电出版社 2006年6王珊, 萨师煊数据库系统概论,北京,高等教育出版社出版 2006年7 Steven John Metsker编著,JAVA 设计模式,北京,人民邮电出版社 2007年 9 张永常编著,JAVA程序设计实用