基于java的教务管理系统.docx
《基于java的教务管理系统.docx》由会员分享,可在线阅读,更多相关《基于java的教务管理系统.docx(31页珍藏版)》请在冰豆网上搜索。
基于java的教务管理系统
第一章绪论
项目的背景和意义
学校中有大量教师信息,学生管理信息,教职工日常工资管理,学生成绩管理,以及学生评语的生成还有基本数据的维护都难于通过传统的方法进行管理;这就迫切需要利用计算机技术来帮助学校管理者来处理这些日常管理.电子教务管理系统是管理信息系统的一个典型用例。
管理信息系统是一个集信息技术、经济管理理论、统计学与运筹学、数据库技术为一体的综合性系统,是一个资金技术密集型、劳动密集型、智力密集型的项目。
我国拥有广阔的市场和丰富的人才资源,有几十年的技术积累和经验积累,有一定的后发优势。
管理信息系统的创新工作既不能妄自菲薄,更不能夜郎自大。
要抓住当前网络经济兴起的有利时机,以实现我国信息技术和信息产业的跨越式发展,更好地发挥信息产业对国民经济增长的拉动作用。
系统是高校教学、教务管理应用软件。
熟悉教务管理工作的全部过程,从教务工作的实际出发,解决工作中关键性的难点问题,并充分利用计算机网络功能,实现教务工作全过程的计算机管理,帮助具体管理人员从复杂烦琐工作中解放出来。
使得教务管理走向无纸化办公和规范化、现代化管理。
教务管理是大学的主要日常管理工作之一,涉及到校、系、师、生的诸多方面,随着教学体制的不断改革,尤其是学分制、选课制的展开和深入,教务日常管理工作日趋繁重、复杂。
迫切需要研制开发一台基于INTERNET网的综合网上教育管理软件。
纵观目前国内研究现状,在安全性和信息更新化方面存在有一定的不足,各现有系统资料单独建立,共享性差;在以管理者为主体的方式中,信息取舍依赖管理者对于信息的认知与喜好,较不容易掌握用户真正的需求,也因此无法完全满足用户的需求。
目前国家的教育体制也正处在不断改革、创新的阶段,我国教育部门充分吸取国外优秀的教学模式,结合国内多年的办学经验,逐步探索出适合中国特色的教学形式,国家教育部面向各级各类学校开展了全面学分制改革。
因此,教务管理软件应充分依托校园网,实现教务信息的集中管理、分散操作、信息共享,使传统的教务管理朝数字化、无纸化、智能化、综合化的方向发展,并为进一步实现完善的计算机教务管理系统和全校信息系统打下良好的基础。
开发技术
本系统所涉及的开发技术主要是指MySQL技术和Java技术。
1.2.1MySQL技术
(一)优化
对于MySQL的优化,我们可以说,主要的问题在于你的硬件条件,而非MySQL本身。
不过对于Access,(以及其他桌面数据库软件)事情就不是这样了。
没错,MicrosoftJetDatabase的确实有效率,不过它还不是最快的。
如果你的数据库设计得非常差,你的网站还是会受到影响而速度变慢的。
数据库结构设计也会影响到MySQL,例如,MySQL并不支持外键(foreignkey)。
这个缺点会影响到你的数据库设计以及网站的效率。
对于使用MySQL做数据库的网站,你应该注意的是,如何让硬盘存取IO减少到最低值、如何让一个或多个CPU随时保持在高速作业的状态、以及适当的网络带宽,而非实际上的数据库设计以及资料查询语句。
事实上,有些网站开发者将MySQL称为目前市面上跑得最快的数据库。
不过,当你的数据库有很多表格需要同时在一个事务过程(transaction)内完成更新的时候,MySQL的确跑得不怎么样。
(二)备份
如果你曾经有过抢救一个损坏的MDB档案的惨痛经验,那么你会对MySQL表示非常激赏。
这是MySQL另一个胜过Access的地方。
首先,mysqldump会产生一个比Access好很多而且也更可靠的备份档案。
相比之下,在Access中你只是将一个MDB档拷贝起来做备份。
其次,即使MySQL的备份有部分损坏,复原起来也要比一个损坏的MDB档要容易得多了。
(三)可延伸性(Scalability)以及资料处理能力
套句登山者的话来说,将Access数据库来跟MySQL相比,简直就是像把印第安那的小山丘拿来跟科罗拉多洛矶山脉的Pike'sPeak顶相比较。
事实就是这么简单∶MySQL可以处理的档案比Access所能处理的档案大很多。
如果你硬将Access数据库弄到100MB的MDB档案时,你要准备好一个字典厚的纪录本来记录来自客户对于网站效率低下的抱怨。
而类似的数据库在MySQL上面跑,就不会发生承载过重的迹象。
(四)MySQL同时提供高度多样性,能够提供很多不同的使用者介面,包括命令行客户端操作,网页浏览器,以及各式各样的程序语言介面,例如C+,Perl,Java,PHP,以及Python。
你可以使用事先包装好的客户端,或者干脆自己写一个合适的应用程序。
MySQL可用于Unix,Windows,以及OS/2等平台,因此它可以用在个人电脑或者是服务器上。
(1)MYSQL支持5000万条记录的数据仓库(版本就支持了),不知道现在MYSQL5是怎样的。
5000条是个什么概念?
这样来说吧蓝色理想的论坛大家都知道吧,里面的帖子总数加起来不过200万不到——你可以自己去数下。
所以我很难想象有什么数据库需要5000万条以上的记录,恩想到一个,给全中国13亿人都做一个登记。
不过我想在座的各位都不大有机会去做这样的项目。
(2)MYSQL适应所有平台。
你无法确定MS到底什么时候会完蛋,如同浏览器大战一样。
整个战斗过程简直是一瞬间完成的。
给自己一条后路总是好的
(3)MYSQL开源软件我这倒不是说开源怎么样好,中国人没多数人没那个条件,也没那个觉悟。
饭都吃不饱了,谁还想着奉献?
这里有一个例子就是MM.现在MM的所有产品都前途未卜,虽然我比较聪明,当WEB标准开始流行的时候,我就知道FLASH的最佳应用范围会有所改变。
后来的收购,更是加重了我的看法,LUAR说的一点没错,不要跟一家商业公司做同一根绳子上的蚂蚱。
就象宝蓝正是如此。
所以如果你选择其他商业公司的软件也多少会遇到这个问题。
即使公司不垮台,在版本更新上也会遇到一些从商业角度出发所做出的结论的影响。
而开源的东西似乎总是比较实在一点,不会有太多商业化的考虑。
(4)学起来简单,或许不能这样说,因为大多数数据库都是用的SQL语句,而且其他数据库我也没学过。
但是我想贵总有贵的道理,我想MSSQL跟O****(抱歉我又不记得全称了,甲骨文公司出的最牛X的数据库软件),的功能总是会比MYSQL要强。
排除价格不说,一般情况下越复杂功能越强的数据库,总是会比较缓慢些。
试问同一件事情三个数据库都能做到,为什么不选择又便宜又快的?
其实如果有更小的数据库我想我会选其他的。
很可惜ACCESS连SQL好象都不支持,并且如果用ACCESS跟PHP配合使用,我会认为这样使用的人是脑袋进水的人。
而SQLLITTLE(PHP5默认支持的数据库,据说跟ACCESS差不多,使用时不需要安装驱动并且支持部分SQL)又才刚起步,书也很少。
我是不追逐技术上的第一的,没那本事,英语太菜,况且也没必要。
(5)MYSQL因为是开源的,所以支持任意修改,也就是说你可以去除你不需要的功能,从而简化MYSQL,提高速度。
不得不能说这是一个非常好的功能,任何商业数据库都做不到的。
很可惜对我来说没什么用,因为我不打算当数据库程序员。
大概就这么多了,缺点我暂时还不知道,但是任何东西都有他的缺点的,所以MYSQL也不例外,至于是什么,我想多半是功能上的不够强大,但是目前我刚学,还感受不到有什么需要的功能还MYSQL不具备其他数据库具备的。
1.2.2JAVA技术
选择Java主要是因为:
1.Java是目前使用最为广泛的网络编程语言之一。
它具有简单,面向对象,稳定,与平台无关,解释型,多线程,动态等特点。
2.简单Java语言简单是指这门语言既易学有好用。
不要将简单误解为这门语言很干瘪。
你可能很赞同这样的观点英语要比阿了伯语言容易学。
但这并不意味着英语就不能表达丰富的内容和深刻的思想,许多文学若贝尔奖的作品都是英文写的。
如果你学习过C++语言,你会感觉Java很眼熟,因为Java中许多基本语句的语法和C++一样,像常用的循环语句,控制语句等和C++几乎一样,但不要误解为Java是C++的增强版,Java和C++是两种完全不同的语言,他们各有各的优势,将会长期并存下去,Java语言和C++语言已成为软件开发者应当掌握的语言。
如果从语言的简单性方面看,Java要比C++简单,C++中许多容易混淆的概念,或者被Java弃之不用了,或者以一种更清楚更容易理解的方式实现,例如,Java不再有指针的概念。
3.面向对象基于对象的编程更符合人的思维模式,使人们更容易编写程序。
在实际生活中,我们每时每刻都与对象在打交道。
我们用的钢笔,骑的自行车,乘的公共汽车等。
而我们经常见到的卡车,公共汽车,轿车等都会涉及以下几个重要的物理量可乘载的人数,运行速度,发动机的功率,耗油量,自重,轮子数目等。
另外,还有几个重要的功能加速功能,减速功能,刹车,转弯功能等。
我们也可以把这些功能称作是他们具有的方法,而物理量是它们的状态描述。
仅仅用物理量或功能不能很好的描述它们。
在现实生活中,我们用这些共有的属性和功能给出一个概念机动车类。
一个具体的轿车就是机动车类的一个实例对象的模板,它包含被创建的对象的状态描述和方法的定义。
4.与平台无关与平台无关是Java语言最大的优势。
其它语言编写的程序面临的一个主要问题是操作系统的变化,处理器升级以及核心系统资源的变化,都可能导致程序出现错误或无法运行。
Java的虚拟机成功地解决了这个问题,Java编写的程序可以在任何安装了Java虚拟机JVM的计算机上正确的运行,Sun公司实现了自己的目标“一次写成,处处运行”。
5.解释型我们知道C,C++等语言,都是只能对特定的CPU芯片进行编译,生成机器代码,该代码的运行就和特定的CUP有关。
例如,在C语言中,我们都碰到过类似下面的问题int型变量的值是10,那么下面代码的输出结果是什么呢printf(“%d,%d”,x,x=x+1)如果上述语句的计算顺序是从左到右,结果是10,11,但是,有些机器会从右到左计算,那么结果就是11,不像C++,它不针对特定的CPU芯片进行编译,而是把程序编译为称做字节码的一个“中间代码”。
字节码是很接近机器码的文件,可以在提供了Java虚拟机JVM的任何系统上被解释执行。
Java被设计成为解释执行的程序,即翻译一句,执行一句,不产生整个的机器代码程序。
翻译过程如果不出现错误,就一直进行到完毕,否则将在错误处停止执行。
同一个程序,如果是解释执行的,那么它的运行速度通常比编译为可执行的机器代码的运行速度慢一些。
但是,对Java来说,二者的差别不太大,Java的字节码经过仔细设计,很容易便能使用JIT即时编译方式编译技术将字节码直接转化成高性能的本地机器码,Sun公司在Java2发行版中提供了这样一个字节码编译器——JIT(JustInTime),它是Java虚拟机的一部分。
Java运行系统在提供JIT的同时仍具有平台独立性,因而“高效且跨平台”对Java来说不再矛盾。
如果把Java的程序比做“汉语”的话,字节码就相当于“世界语”,世界语不和具体的“国家”关,只要这个“国家”提供了“翻译”,就可以再快速地把世界语翻译成本地语言。
6.多线程Java的特点之一就是内置对多线程的支持。
多线程允许同时完成多个任务。
实际上多线程使人产生多个任务在同时执行的错觉,因为,目前的计算机的处理器在同一时刻只能执行一个线程,但处理器可以在不同的线程之间快速地切换,由于处理器速度非常快,远远超过了人接收信息的速度,所以给人的感觉好象多个任务在同时执行。
C++没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序的设计。
7.安全当你准备从网络上下载一个程序时,你最大的担心是程序中含有恶意的代码,比如试图读取或删除本地机上的一些重要文件,甚至该程序是一个病毒程序等。
当你使用支持Java的浏览器时,你可以放心地运行Java的小应用程序JavaApplet,不必担心病毒的感染和恶意的企图,Java小应用程序将限制在Java运行环境中,不允许它访问计算机的其它部分。
8.动态Java程序的基本组成单元就是类,有些类是自己编写的,有一些是从类库中引入的,而类又是运行时动态装载的,这就使得Java可以在分布环境中动态地维护程序及类库,而不像C++那样,每当其类库升级之后,相应的程序都必须重新修改,编译。
系统主要目标
在系统的实现过程中,主要工作包括:
整个系统设计和实现;经过反复论证和分析,确定了数据库表以及表与表之间的关系,建立了数据库;完成了系统的需求分析,系统设计,对象设计。
第二章需求分析
系统可行性分析
系统的可行性分析主要是技术可行性,经济可行性。
2.1.1技术可行性
在目前的网络管系统开发中,主要分成两大编程体系,一种是基于浏览器的B/S机构,另一种是C/S结构。
考虑到本系统是基于C/S模式的,作者可以通过Java+MySQL的开发体系来开发。
先在MySQL上建立好数据库,然后用Java语言编写程序实现系统功能。
2.1.2经济可行性
现在的教务管理系统大部分还处于手工阶段,手工劳作不仅耗费了大量的时间,人为出错的几率也比较大,这势必将影响到整个教学的质量,一个错误甚至可能给学生和老师带来很大的影响,直接影响到学生的成绩。
因此,建立一个合理的教务管理系统既要体现投资效益原则,也要保证系统质量和性能,尽量使用性能价格比比较高的硬件和软件,从而达到节约投资和增加效益的目的。
基于C/S模式的教务管理系统便是最佳的选择,利用先进的计算技术和强大的JAVA语言体系进行开发,不仅能提供一致的用户界面,还能实现客户端零配置和客户端平台无关性;服务器端是系统开发、维护和升级的所在,能够较容易地升级、扩展和集成系统。
这样,在提高了学生和教职工工作效率的同时,也减轻了学校在教务管理工作方面的开销。
开发此系统的价值远远超过了开发系统的成本,因此,作者认为进行此项开发是可行的。
需求概述
2.2.1设计目标
开发的系统是一个单机版的教务管理系统如表。
表设计目标表
需求
对学校教务信息进行信息化管理
用户
超级管理员
基本教务管理员
学生
用户所做的事
填写、删除用户基本信息
填写、修改、查询、删除教师信息
填写、修改、查询、删除学生信息
填写、修改、查询、删除班级信息
填写、修改、查询、删除课程信息
填写、修改、查询、删除考试信息
查询成绩信息
用户需求
管理教师的基本信息
管理学生的基本信息
管理班级的基本信息
管理课程的基本信息
管理考试的基本信息
现在已经存在的
有
最好的解决方案
用MYSQL数据库来实现,用语言是JAVA来开发
最好方案的理由
选MYSQL是因为系统简单,MYSQL成本很小,且使用普遍,一般学校均已具备。
用JAVA语言是因为我对它比较熟悉。
2.2.2用户特点
用户为非专业技术人员,对计算机技术没有详细了解,必须尽可能的提供友好的操作界面和使用提示。
需求描述
2.3.1教务管理系统的总需求目标
在计算机数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的教务管理系统,实现教师,学生,课程,班级,考试管理自动化,高效的计算机系统。
2.3.2数据需求
(1)数据录入和处理的准确性和实时性
数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。
数据的输入来源是手工输入。
手工输入要通过系统界面上的安排系统具有容错性,并且对操作人员要进行系统的培训。
在系统中,数据的输入往往是大量的,因此系统要有一定的处理能力,以保证迅速的处理数据。
(2)数据的安全性
本系统为学校教务管理设计,因此只有特定的教务管理者才能对数据实现增,删、改、查等操作。
未获授权人员不能进入系统。
(3)数据的备份
要定期对数据库中的数据进行全部或新增部分的备份工作,以保证在硬件出现故障或人为原因导致无法运行时是可以快速及时的还原到原来的正常状态。
2.3.3功能性需求概述
(1)、能够管理用户的基本信息。
(2)、能够管理教师、学生、课程、班级、考试信息。
(3)、以上这些信息都应用于查询、添加、修改、删除。
2.3.4约束
操作系统:
Windows.
数据库系统:
MySQL.
2.3.5系统模型
(1)参与者汇总
超级管理员:
负责管理用户相关信息
教务基本管理员:
管理教师、学生、课程、班级、考试信息
拥有查询成绩权限的用户:
查询考试成绩
(2)用例汇总
管理用户信息;添加教师信息;修改教师信息;删除教师信息;添加学生信息;修改学生信息;查询学生信息;删除学生信息;添加班级信息;修改班级信息;查询班级信息;删除班级信息;添加课程信息;修改课程信息;查询课程信息;删除课程信息;添加考试信息;修改考试信息;删除考试信息;查询学生成绩信息。
(3)顶层用例图
顶层用例图描述信息如图:
图顶层用例图
(5)用例描述
表用户信息管理表
用例编号
1
用例名称
用户信息管理
触发事件
超级管理员添加或删除新用户
主成功场景
步骤
活动
1
管理员选择用户管理
2
选择添加用户或删除用户
3
管理员按要求填写用户信息
4
管理员选择提交操作
5
系统保存提交操作
表教师信息管理表
用例编号
2
用例名称
教师信息管理
触发事件
管理员希望管理教师信息
主成功场景
步骤
活动
1
管理员选择教师信息管理
2
系统显示可用的功能,管理员选择其中之一执行:
添加教师信息
修改教师信息
删除教师信息
3
管理员可重复选择以上操作
4
管理员退出系统或转入其它操作
表添加教师信息表
用例编号
3
用例名称
添加教师信息
触发事件
学校有新教师加入
主成功场景
步骤
活动
1
管理员选择添加教师信息的操作
2
系统显示教师信息录入界面(内容见数据表)
3
管理员按要求填写教师信息
4
管理员选择提交操作
5
系统保存新加教师信息
表修改教师信息表
用例编号
4
用例名称
修改教师信息
触发事件
教师信息发生变动
在录入教师信息时由于误操作而将信息填错
主成功场景
步骤
活动
1
管理员选定要修改记录信息的教师
2
管理员选择修改信息操作
3
管理员修改记录信息
4
管理员选择提交操作
5
系统保存被修改教师信息的记录
表删除教师信息表
用例编号
5
用例名称
删除教师信息
触发事件
在录入教师信息时由于误操作而将信息填错
或教师辞职
主成功场景
步骤
活动
1
管理员选定要删除记录信息的教师
2
管理员选择删除信息操作
3
系统将显示操作信息
4
系统删除被选定的教师的信息
表学生信息管理表
用例编号
6
用例名称
学生信息管理
触发事件
管理员希望管理学生信息
主成功场景
步骤
活动
1
管理员选择学生信息管理
2
系统显示可用的功能,管理员选择其中之一执行:
添加学生信息
修改学生信息
删除学生信息
3
管理员可重复选择以上操作
4
管理员退出系统或转入其它操作
表添加学生信息表
用例编号
7
用例名称
添加学生信息
触发事件
学校有新学生加入
主成功场景
步骤
活动
1
管理员选择添加学生信息的操作
2
系统显示学生信息录入界面(内容见数据表)
3
管理员按要求填写学生信息
4
管理员选择提交操作
5
系统保存新加学生信息
表修改学生信息表
用例编号
8
用例名称
修改学生信息
触发事件
学生信息发生变动
在录入学生信息时由于误操作而将信息填错
主成功场景
步骤
活动
1
管理员选定要修改记录信息的学生
2
管理员选择修改信息操作
3
管理员修改记录信息
4
管理员选择提交操作
5
系统保存被修改学生信息的记录
表删除学生信息表
用例编号
9
用例名称
删除学生信息
触发事件
在录入学生信息时由于误操作而将信息填错
或学生退学
主成功场景
步骤
活动
1
管理员选定要删除记录信息的学生
2
管理员选择删除信息操作
3
系统将显示操作信息
4
系统删除被选定的学生的信息
表课程信息管理表
用例编号
10
用例名称
课程信息管理
触发事件
管理员希望管理课程信息
主成功场景
步骤
活动
1
管理员选择课程信息管理
2
系统显示可用的功能,管理员选择其中之一执行:
添加课程信息
修改课程信息
删除课程信息
3
管理员可重复选择以上操作
4
管理员退出系统或转入其它操作
表添加课程信息表
用例编号
11
用例名称
添加课程信息
触发事件
学校有新学生加入
主成功场景
步骤
活动
1
管理员选择添加课程信息的操作
2
系统显示课程信息录入界面(内容见数据表)
3
管理员按要求填写课程信息
4
管理员选择提交操作
5
系统保存新加课程信息
表修改课程信息表
用例编号
12
用例名称
修改课程信息
触发事件
课程信息发生变动
在录入课程信息时由于误操作而将信息填错
主成功场景
步骤
活动
1
管理员选定要修改记录信息的课程
2
管理员选择修改信息操作
3
管理员修改记录信息
4
管理员选择提交操作
5
系统保存被修改课程信息的记录
表删除课程信息表
用例编号
13
用例名称
删除课程信息
触发事件
在录入课程信息时由于误操作而将信息填错
或课程删除
主成功场景
步骤
活动
1
管理员选定要删除记录信息的课程
2
管理员选择删除信息操作
3
系统将显示操作信息
4
系统删除被选定的课程的信息
表班级信息管理表
用例编号
14
用例名称
班级信息管理
触发事件
管理员希望管理班级信息
主成功场景
步骤
活动
1
管理员选择班级信息管理
2
系统显示可用的功能,管理员选择其中之一执行:
添加班级信息
修改班级信息
删除班级信息
3
管理员可重复选择以上操作
4
管理员退出系统或转入其它操作
表添加班级信息表
用例编号
15
用例名称
添加班级信息
触发事件
学校有新学生加入
主成功场景
步骤
活动
1
管理员选择添加班级信息的操作
2
系统显示班级信息录入界面(内容见数据表)
3
管理员按要求填写班级信息
4