第一章 绪论
1.1 项目的背景和意义
学校中有大量教师信息,学生管理信息,教职工日常工资管理,学生成绩管理,以及学生评语的生成还有基本数据的维护都难于通过传统的方法进行管理;这就迫切需要利用计算机技术来帮助学校管理者来处理这些日常管理.电子教务管理系统是管理信息系统的一个典型用例。
管理信息系统是一个集信息技术、经济管理理论、统计学与运筹学、数据库技术为一体的综合性系统,是一个资金技术密集型、劳动密集型、智力密集型的项目。我国拥有广阔的市场和丰富的人才资源,有几十年的技术积累和经验积累,有一定的后发优势。管理信息系统的创新工作既不能妄自菲薄,更不能夜郎自大。要抓住当前网络经济兴起的有利时机,以实现我国信息技术和信息产业的跨越式发展,更好地发挥信息产业对国民经济增长的拉动作用。
系统是高校教学、教务管理应用软件。熟悉教务管理工作的全部过程,从教务工作的实际出发,解决工作中关键性的难点问题,并充分利用计算机网络功能,实现教务工作全过程的计算机管理,帮助具体管理人员从复杂烦琐工作中出来。使得教务管理走向无纸化办公和规范化、现代化管理。
教务管理是大学的主要日常管理工作之一,涉及到校、系、师、生的诸多方面,随着教学的不断改革,尤其是学分制、选课制的展开和深入,教务日常管理工作日趋繁重、复杂。迫切需要研制开发一台基于INTERNET网的综合网上教育管理软件。
纵观目前国内研究现状,在安全性和信息更新化方面存在有一定的不足,各现有系统资料单独建立,共享性差;在以管理者为主体的方式中,信息取舍依赖管理者对于信息的认知与喜好,较不容易掌握用户真正的需求,也因此无法完全满足用户的需求。目前国家的教育也正处在不断改革、创新的阶段,我国教育部门充分吸取国外优秀的教学模式,结合国内多年的办学经验,逐步探索出适合中国特色的教学形式,国家教育部面向各级各类学校开展了全面学分制改革。因此,教务管理软件应充分依托校园网,实现教务信息的集中管理、分散操作、信息共享,使传统的教务管理朝数字化、无纸化、智能化、综合化的方向发展,并为进一步实现完善的计算机教务管理系统和全校信息系统打下良好的基础。
1.2 开发技术
本系统所涉及的开发技术主要是指MySQL技术和Java技术。
1.2.1 MySQL 技术
.
(一)优化
对于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万条记录的数据仓库(3.X版本就支持了),不知道现在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配合使用,我会认为这样使用的人是脑袋进水的人。而SQL LITTLE(PHP5 默认支持的数据库,据说跟ACCESS差不多,使用时不需要安装驱动并且支持部分SQL)又才刚起步,书也很少。我是不追逐技术上的第一的,没那本事,英语太菜,况且也没必要。
(5) MYSQL 因为是开源的,所以支持任意修改,也就是说你可以去除你不需要的功能,从而简化MYSQL,提高速度。不得不能说这是一个非常好的功能,任何商业数据库都做不到的。很可惜对我来说没什么用,因为我不打算当数据库程序员。 大概就这么多了,缺点我暂时还不知道,但是任何东西都有他的缺点的,所以MYSQL也不例外,至于是什么,我想多半是功能上的不够强大,但是目前我刚学,还感受不到有什么需要的功能还MYSQL不具备其他数据库具备的。
1.2.2 JAVA技术
选择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,11.Java不像C++,它不针对特定的CPU芯片进行编译,而是把程序编译为称做字节码的一个“中间代码”。字节码是很接近机器码的文件,可以在提供了 Java 虚拟机 JVM 的任何系统上被解释执行。Java 被设计成为解释执行的程序,即翻译一句,执行一句,不产生整个的机器代码程序。翻译过程如果不出现错误,就一直进行到完毕,否则将在错误处停止执行。同一个程序,如果是解释执行的,那么它的运行速度通常比编译为可执行的机器代码的运行速度慢一些。但是,对Java来说,二者的差别不太大,Java的字节码经过仔细设计,很容易便能使用JIT 即时编译方式 编译技术将字节码直接转化成高性能的本地机器码,Sun 公司在 Java 2发行版中提供了这样一个字节码编译器——JIT(Just In Time),它是Java虚拟机的一部分。Java运行系统在提供JIT的同时仍具有平立性,因而“高效且跨平台”对Java来说不再矛盾。如果把 Java 的程序比做“汉语”的话,字节码就相当于“世界语”,世界语不和具体的“国家”关,只要这个“国家”提
.
供了“翻译”,就可以再快速地把世界语翻译成本地语言。
6.多线程 Java 的特点之一就是内置对多线程的支持。多线程允许同时完成多个任务。实际上多线程使人产生多个任务在同时执行的错觉,因为,目前的计算机的处理器在同一时刻只能执行一个线程,但处理器可以在不同的线程之间快速地切换,由于处理器速度非常快,远远超过了人接收信息的速度,所以给人的感觉好象多个任务在同时执行。C++没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序的设计。
7.安全 当你准备从网络上下载一个程序时,你最大的担心是程序中含有恶意的代码,比如试图读取或删除本地机上的一些重要文件,甚至该程序是一个病毒程序等。当你使用支持Java的浏览器时,你可以放心地运行Java的小应用程序 Java Applet ,不必担心病毒的感染和恶意的企图,Java小应用程序将在 Java运行环境中,不允许它访问计算机的其它部分。
8.动态 Java 程序的基本组成单元就是类,有些类是自己编写的,有一些是从类库中引入的,而类又是运行时动态装载的,这就使得 Java 可以在分布环境中动态地维护程序及类库,而不像 C++那样,每当其类库升级之后,相应的程序都必须重新修改,编译。
1.3 系统主要目标
在系统的实现过程中,主要工作包括:整个系统设计和实现;经过反复论证和分析,确定了数据库表以及表与表之间的关系,建立了数据库;完成了系统的需求分析,系统设计,对象设计。
.
第二章 需求分析
2.1 系统可行性分析
系统的可行性分析主要是技术可行性,经济可行性。
2.1.1 技术可行性
在目前的网络管系统开发中,主要分成两大编程体系,一种是基于浏览器的B/S机构,另一种是C/S结构。考虑到本系统是基于C/S模式的,作者可以通过Java + MySQL的开发体系来开发。先在MySQL上建立好数据库,然后用Java语言编写程序实现系统功能。
2.1.2 经济可行性
现在的教务管理系统大部分还处于手工阶段,手工劳作不仅耗费了大量的时间,人为出错的几率也比较大,这势必将影响到整个教学的质量,一个错误甚至可能给学生和老师带来很大的影响,直接影响到学生的成绩。因此,建立一个合理的教务管理系统既要体现投资效益原则,也要保证系统质量和性能,尽量使用性能价格比比较高的硬件和软件,从而达到节约投资和增加效益的目的。基于C/S模式的教务管理系统便是最佳的选择,利用先进的计算技术和强大的JAVA语言体系进行开发,不仅能提供一致的用户界面,还能实现客户端零配置和客户端平台无关性;服务器端是系统开发、维护和升级的所在,能够较容易地升级、扩展和集成系统。这样,在提高了学生和教职工工作效率的同时,也减轻了学校在教务管理工作方面的开销。开发此系统的价值远远超过了开发系统的成本,因此,作者认为进行此项开发是可行的。
2.2需求概述
2.2.1设计目标
开发的系统是一个单机版的教务管理系统 如表2.1。
表2.1设计目标表
需求 用户 对学校教务信息进行信息化管理 超级管理员 .
基本教务管理员 学生 用户所做的事 填写、删除用户基本信息 填写、修改、查询、删除教师信息 填写、修改、查询、删除学生信息 填写、修改、查询、删除班级信息 填写、修改、查询、删除课程信息 填写、修改、查询、删除考试信息 查询成绩信息 用户需求 管理教师的基本信息 管理学生的基本信息 管理班级的基本信息 管理课程的基本信息 管理考试的基本信息 现在已经存在的 最好的解决方案 最好方案的理由 有 用MYSQL数据库来实现,用语言是JAVA来开发 选MYSQL是因为系统简单,MYSQL成本很小,且使用普遍,一般学校均已具备。用JAVA语言是因为我对它比较熟悉。 2.2.2 用户特点
用户为非专业技术人员,对计算机技术没有详细了解,必须尽可能的提供友好的操作界面和使用提示。
.
2.3需求描述
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)顶层用例图
顶层用例图描述信息 如图2.3 :
.
图2.3 顶层用例图
(5)用例描述
表2.1 用户信息管理表 用例编号 1 用例名称 用户信息管理 触发事件 超级管理员添加或删除新用户 .
主成功场景
步骤 活动 1 2 3 4 5 管理员选择用户管理 选择添加用户或删除用户 管理员按要求填写用户信息 管理员选择提交操作 系统保存提交操作 表2.2 教师信息管理表 用例编号 触发事件 主成功场景 1 2 3 4 管理员选择教师信息管理 系统显示可用的功能,管理员选择其中之一执行: 添加教师信息 修改教师信息 删除教师信息 管理员可重复选择以上操作 管理员退出系统或转入其它操作 步骤 活动 管理员希望管理教师信息 2 用例名称 教师信息管理 .
表2.3 添加教师信息表 用例编号 触发事件 主成功场景 1 2 3 4 5 管理员选择添加教师信息的操作 系统显示教师信息录入界面(内容见数据表) 管理员按要求填写教师信息 管理员选择提交操作 系统保存新加教师信息 步骤 活动 学校有新教师加入 3 用例名称 添加教师信息
表2.4 修改教师信息表 用例编号 触发事件 主成功场景 在录入教师信息时由于误操作而将信息填错 步骤 活动 教师信息发生变动 4 用例名称 修改教师信息 1 2 管理员选定要修改记录信息的教师 管理员选择修改信息操作 .
3 4 5 管理员修改记录信息 管理员选择提交操作 系统保存被修改教师信息的记录 表2.5 删除教师信息表 用例编号 触发事件 在录入教师信息时由于误操作而将信息填错 或 教师辞职 步骤 活动 5 用例名称 删除教师信息 主成功场景 1 2 3 4 管理员选定要删除记录信息的教师 管理员选择删除信息操作 系统将显示操作信息 系统删除被选定的教师的信息
表2.6 学生信息管理表 用例编号 触发事件 主成功场景 步骤 活动 管理员希望管理学生信息 6 用例名称 学生信息管理 .
1 2 3 4 管理员选择学生信息管理 系统显示可用的功能,管理员选择其中之一执行: 添加学生信息 修改学生信息 删除学生信息 管理员可重复选择以上操作 管理员退出系统或转入其它操作
表2.7 添加学生信息表 用例编号 触发事件 主成功场景 1 2 3 4 5 管理员选择添加学生信息的操作 系统显示学生信息录入界面(内容见数据表) 管理员按要求填写学生信息 管理员选择提交操作 系统保存新加学生信息 步骤 活动 学校有新学生加入 7 用例名称 添加学生信息
表2.8 修改学生信息表
.
用例编号 触发事件 主成功场景 8 用例名称 修改学生信息 学生信息发生变动 在录入学生信息时由于误操作而将信息填错 步骤 活动 1 2 3 4 5 管理员选定要修改记录信息的学生 管理员选择修改信息操作 管理员修改记录信息 管理员选择提交操作 系统保存被修改学生信息的记录
表2.9 删除学生信息表 用例编号 触发事件 在录入学生信息时由于误操作而将信息填错 或 学生退学 步骤 活动 9 用例名称 删除学生信息 主成功场景 1 2 3 管理员选定要删除记录信息的学生 管理员选择删除信息操作 系统将显示操作信息 .
4 系统删除被选定的学生的信息 表2.10 课程信息管理表 用例编号 触发事件 主成功场景 1 2 3 4 管理员选择课程信息管理 系统显示可用的功能,管理员选择其中之一执行: 添加课程信息 修改课程信息 删除课程信息 管理员可重复选择以上操作 管理员退出系统或转入其它操作 步骤 活动 管理员希望管理课程信息 10 用例名称 课程信息管理
表2.11 添加课程信息表
用例编号 触发事件 主成功步骤 活动 学校有新学生加入 11 用例名称 添加课程信息 .
场景 1 2 3 4 5 管理员选择添加课程信息的操作 系统显示课程信息录入界面(内容见数据表) 管理员按要求填写课程信息 管理员选择提交操作 系统保存新加课程信息
表2.12 修改课程信息表 用例编号 触发事件 主成功场景 1 2 3 4 5 管理员选定要修改记录信息的课程 管理员选择修改信息操作 管理员修改记录信息 管理员选择提交操作 系统保存被修改课程信息的记录 在录入课程信息时由于误操作而将信息填错 步骤 活动 课程信息发生变动 12 用例名称 修改课程信息
表2.13 删除课程信息表
.
用例编号 触发事件 13 用例名称 删除课程信息 在录入课程信息时由于误操作而将信息填错 或 课程删除 步骤 活动 主成功场景 1 2 3 4 管理员选定要删除记录信息的课程 管理员选择删除信息操作 系统将显示操作信息 系统删除被选定的课程的信息
表2.14 班级信息管理表 用例编号 触发事件 主成功场景 1 2 管理员选择班级信息管理 系统显示可用的功能,管理员选择其中之一执行: 添加班级信息 修改班级信息 删除班级信息 步骤 活动 管理员希望管理班级信息 14 用例名称 班级信息管理 .
3 4 管理员可重复选择以上操作 管理员退出系统或转入其它操作 表2.15 添加班级信息表 用例编号 触发事件 主成功场景 1 2 3 4 5 管理员选择添加班级信息的操作 系统显示班级信息录入界面(内容见数据表) 管理员按要求填写班级信息 管理员选择提交操作 系统保存新加班级信息 步骤 活动 学校有新学生加入 15 用例名称 添加班级信息
表2.16 修改班级信息表 用例编号 触发事件 主成功在录入班级信息时由于误操作而将信息填错 步骤 活动 班级信息发生变动 16 用例名称 修改班级信息 .
场景 1 2 3 4 5 管理员选定要修改记录信息的班级 管理员选择修改信息操作 管理员修改记录信息 管理员选择提交操作 系统保存被修改班级信息的记录
表2.17 删除班级信息表 用例编号 触发事件 在录入班级信息时由于误操作而将信息填错 或 班级删除 步骤 活动 17 用例名称 删除班级信息 主成功场景 1 2 3 4 管理员选定要删除记录信息的班级 管理员选择删除信息操作 系统将显示操作信息 系统删除被选定的班级的信息
表2.18 考试信息管理表 用例编号 18 用例名称 考试信息管理 .
触发事件 主成功场景
管理员希望管理考试信息 步骤 活动 1 2 3 4 管理员选择考试信息管理 系统显示可用的功能,管理员选择其中之一执行: 添加考试信息 删除考试信息 管理员可重复选择以上操作 管理员退出系统或转入其它操作 表2.19 添加考试信息表 用例编号 19 用例名称 添加考试信息 触发事件 学校有新考试成绩加入 主成功场景 1 2 管理员选择添加考试信息的操作 系统显示考试信息录入界面(内容见数据表) 管理员按要求填写考试信息 管理员选择提交操作 系统保存新加考试信息 步骤 活动
3 4 5 .
表2.20 删除考试信息表 用例编号 触发事件 在录入考试信息时由于误操作而将信息填错 或 考试信息过时,或学生信息删除 步骤 活动 20 用例名称 删除考试信息 主成功场景
1 2 3 4 管理员选定要删除记录信息的考试 管理员选择删除信息操作 系统将显示操作信息 系统删除被选定的考试的信息 表2.21查询成绩信息表 用例编号 21 用例名称 查询成绩信息 触发事件 学生用户希望查看符合某一条件的学生成绩信息 主成功场景 步骤 活动 1 2 3 学生选择查询成绩信息操作 管理员输入查询条件 系统显示符合条件的学生成绩信息 .
第三章 系统设计
3.1子系统设计
3.1.1各子系统的设计
本系统包括三个子系统:高级管理子系统,教务基本管理子系统,学生成绩查询子系统。
三个系统的关系如图3.1 :
图3.1 系统结构图
高级管理子系统如图3.2:
.
图3.2 高级管理子系统图
教务基本管理子系统如图3.3:
学生管理 课程管理
班级管理 考试管理
.
图3.3 教务基本管理子系统图
学生成绩查询子系统如图3.4:
图3.4 学生成绩查询子系统图
3.1.2软件控制流设计 (1)添加操作
系统将向数据库中添加一条新的记录,并修改相关表的信息(如在添加教师信息时,系统将自动修改教师的基本信息) (2)查询操作
系统根据查询条件在数据库中进行查询,然后把查询结果显示在界面上。 (3)修改操作
要进行修改操作,必须先执行查询操作。执行修改操作系统将更新数据库中的相应记录。 (4)删除操作
要进行删除操作,必须先执行查询操作。执行删除操作系统将删除数据库中
.
的相应记录。
3.2数据库设计
概念设计
实体——联系方法(Entity—Relationship Approach)是最常用的表示概念性数据模型的方法。这种方法使用E-R图来描述现实世界中的实体,而不涉及这些实体在系统中的实现方法,即使不熟悉计算机技术的用户也能理解它。系统的E-R图如图3.5所示。
图3.5 系统E--R图
根据E-R图中的实体,画出每个实体的属性图,如图3.6-3.10所示:
图3.6 学生实体属性图
.
图3.7 教师实体属性图
图3.8 课程实体属性图
图3.9 班级实体属性图
图3.10 考试实体属性图
.
3.2.1 数据库涉及的表
本数据库涉及到六个表,如下所示。
student ( stuID, stuName, stuSex, stuBirthday, classID, stuPhone, stuInDate, stuAddress, memo); userInfo ( userName, passwd, prio);
teacher ( teacherID, teacherName, teacherTel, memo); exam ( examID, stuID, courseID, examGrade, compGrade); course ( courseID, courseName, memo);
classInfo
(classID, teacherID, startDate, studentCount, endDate ,memo); 3.2.2 各表的物理结构
本系统所包含的六张表student, userInfo, teacher, exam, course, classInfo 的物理结构如表3.1--3.6所示:
表3.1 student 表 字段名称 stuID stuName stuSex stuBirthday classID stuPhone stuInDate stuAddress 类型 char Char Char Char Char Char Char Char 宽度 20 20 2 10 20 15 10 20 .
memo Char 60
表3.2 userInfo 表 字段名称 userName passwd prio 类型 Char Char Char 宽度 20 20 10
表3.3 teacher 表 字段名称 teacherID teacherName teacherTel memo 类型 Char Char Char Char 宽度 20 20 15 60
表3.4 exam 表 字段名称 examID stuID courseID examGrade 类型 Char Char Char Int 宽度 20 20 20 .
compGrade Int
表3.5 course 表 字段名称 courseID courseName Memo 类型 Char Char Char 宽度 20 40 60
表3.6 classInfo 表 字段名称 classID teacherID startDate studentCount endDate memo 类型 Char Char Char Int Char Char 宽度 20 20 10 10 60
.
第四章 对象设计
4.1 需求概述
教务管理系统是要求能够完成一些基本的教务管理其中包括:管理用户信息;添加教师信息;修改教师信息;删除教师信息;添加学生信息;修改学生信息;查询学生信息;删除学生信息;添加班级信息;修改班级信息;查询班级信息;删除班级信息;添加课程信息;修改课程信息;查询课程信息;删除课程信息;添加考试信息;修改考试信息;删除考试信息;查询学生成绩信息。
4.2 程序设计
4.2.1 程序包的设计
login包:包括一个调用用户登陆界面的公有函数类。 loginFrame包:提供登陆主界面类。 adminFrame包:提供超级管理员的管理类。
GBC包:提供了一个对网格组布局管理器类的包装器类。 img包:提供了系统所需要的图片资源。 jdbc包:提供了连接数据库所需要的类。
affairFram包:提供了教务基本管理所需要的类。 inquireFrame包:提供了学生查询成绩所需要的类。 具体的项目资源名定义见表5.1 :
表5.1 项目资源定义表 包名 login loginFrame GBC 资源名 Login LoginFrame GBC 资源说明 加载登陆窗口 登陆窗口 自定义布局管理器类 .
jdbc DbManager 封装了对数据库的一些基本操作的类 DbConnection adminFrame adminFrame.user AdminFrame Register Delete adminFrame.tools ConfigureFrame 获取数据库连接类 超级管理员管理类 用户注册类 删除用户类 对数据库连接信息url、 用户名、 密码进行配置类 affairFrame affairFrame.teacher AffairFrame Teacher 提供教务基本管理操作界面类 提供教师管理界面并提供一些对教师的基本操作的类 UpdateTeacher InsertTeacher affairFrame.classes UpdateClass InsertClass affairFrame.course Course Class 对教师信息进行更新的类 对教师信息进行插入的类 提供班级管理界面,并能够完成对班级的查询工作 更新班级信息类 插入新建班级信息类 提供对课程的管理界面,并能够完成对课程的查询工作 UpdateCourse InsertCourse 更新课程信息类 插入新添课程信息类 .
affairFrame.exam Exam 提供对考试操作的界面, 并能够完成对考试信息的查询,删除操作 InsertExam affairFrame.student Student 插入考试信息类 提供对学生操作的界面, 并能够完成对学生信息的查询,删除操作 UpdateStudent InsertStudent inquireFrame InquireFrame InquireExam util CenterFrame UpdatePassword img 修改学生信息类 插入新添学生信息类 提供成绩查询操作的界面类 查询考试成绩信息类 把设置窗口位置类 更新当前用户的密码类 提供系统所需要的图片
4.2.2 包中程序设计
(1) login 包中的程序设计:
类 Login :
方法: public static void main(String[] args){}//主函数用于加载登陆界面。 (2)loginFrame 包中的程序设计:
A:类 LoginFrame: 类变量:
private static int DEFAULT_WIDTH=370;//窗口的默认宽度。 private static int DEFAULT_HEIGHT=300;//窗口的默认高度。
.
private JTextField nameText = new JTextField(20);// 用户名输入文本域,用于输入用户登陆时所用的用户名。
private JPasswordField passwdText = new JPasswordField(20);// 用户密码输入域。
private JButton bLogin =new JButton();// 登陆按钮,当用户输入 完用户名和密码后,点击登陆按钮进入系统。
private JButton bCancel = new JButton();// 取消按钮,取消此次 用户的输入操作。
private DbManager dbm=new DbManager();// 数据库管理类,用于对数据库进行操作。
private JLabel nullLabel = new JLabel(\" \");// 用户界面设计,无功能和内容。
private JLabel tipLabel= new JLabel(\" \");// 当用户名或密码不对时,给出提示信息。
方法:
public LoginFrame()//构造函数,构造窗口界面。 内部类:
private class LoginButton_ActionListener implements ActionListener// 用于监听登陆按钮的动作事件,根据不同的权限进入不同的操作界面。
private class LoginButton_KeyAdapter extends KeyAdapter //用于监听登陆按钮的键盘事件。
private class NameText_FocusAdapter extends FocusAdapter // 用于监听用户名域的焦点事件,当用户名为空时给出提示“用户名不能为空”。 private class PasswdText_FocusAdapter extends FocusAdapter // 用于监听密码域的焦点事件,当密码为空时给出提示“密码不能为空”。 (3) adminFrame包中的程序设计:
A:类AdminFrame: 类变量:
private JMenuBar menuBar = new JMenuBar();//创建菜单栏。 private JMenu systemMenu = new JMenu();//创建“系统”菜单。
.
private JMenu userMenu = new JMenu();//创建“用户管理”菜单。 private JMenu teacherMenu = new JMenu();//创建“教师管理”菜单。 private JMenu affairSystemMenu =new JMenu();//创建“教务基本管理子 系统”菜单。
private JMenu studentSystemMenu = new JMenu();//创建“成绩查询子系统”菜单。
private JMenu toolMenu = new JMenu();//创建“工具”菜单。 private JMenuItem menuItem1 = new JMenuItem();//创建“系统”菜单中的“退出”菜单项。
private JMenuItem registerItem = new JMenuItem();//创建“用户管理”菜单中“注册”菜单项。
private JMenuItem = new JMenuItem();//创建“教师管理”菜单中的“教师管理”菜单项。
private JMenuItem affairManageItem = new JMenuItem();//创建“教务基本管理子系统“菜单中的”教务基本管理“菜单项。
private JMenuItem gradeItem = new JMenuItem();//创建”成绩查询子系统“菜单中的”成绩查询“菜单项。
private JMenuItem passwdItem = new JMenuItem();//创建”工具“菜单中的”修改密码“菜单项。
private JMenuItem deleteUserItem = new JMenuItem();//创建”用户管理“菜单中的”删除用户菜单项。
private JMenuItem configureItem = new JMenuItem();//创建“工具”菜单中的“配置”菜单项。
private JLabel label = new JLabel();//创建标签用于在窗口的内容窗格中显示图片。
private
ImageIcon
img1=new
ImageIcon(this.getClass().getResource(\"/img/adminFrame.jpg\"));//标签中的图标。
private String user;//当前用户。
方法:
public AdminFrame(String user)
功能:构造函数,构造超级管理员操作界面。
.
参数:登陆时的用户名。 内部类:
private class Configure_ActionListener implements ActionListener//监听“配置”菜单项的动作事件,显示配置窗口。
private class UpdatePasswdItem_ActionListener implements ActionListener //监听“修改密码”菜单项的动作事件,显示修改密码窗口。
private class DeleteUserItem_ActionListener implements ActionListener//监听“删除用户”菜单项的动作事件,显示删除用户窗口。
private class RegisterUserItem_ActionListener implements ActionListener// 监听”注册用户“菜单项的动作事件,显示注册用户窗口。 (4) adminFrame.user 包中程序设计:
A:类 Register: b 方法:
public Register()
功能:构造函数,构造注册用户界面。 c 内部类:
class OkButton_ActionListener implements ActionListener//监听确定按钮的动作事件,用于把数据写入数据库。
B:类Delete: b 方法: public Delete()
功能:构造函数,构造删除用户界面。 c 内部类:
private class DeleteButton_ActionListener implements ActionListener//监听删除按钮的动作事件,用于把要删除的用户从数据库中删除。 (5) adminFrame.tools包中的程序设计:
A:类ConfigureFrame: a 类变量:
JLabel configureLabel = new JLabel();//配置信息标签,用于提示本界面
.
的功能。
JLabel urlLabel = new JLabel();//url标签,用于提示URL文本域。 JLabel nameLabel = new JLabel();//name标签,用于提示name文本域。 JLabel passwdLabel = new JLabel();//passwd标签,用于提示passwd文本。域。
JTextField nameField = new JTextField(\"\文本域,用于输入数据库用户名。
JTextField urlField = new JTextField(\"\//URL文本域,用于输入数据库的URL。
JTextField passwdField = new JTextField(\"\//passwd文本域,用于输入数据库用户的密码。
JButton okButton = new JButton();//确定按钮,用于把用户填写的信息写入数据库。
JButton cancelButton = new JButton();//取消按钮,用于取消用户的操作。
b 方法:
public ConfigureFrame()
功能:构造函数,构造配置操作界面。 public void insert(String url,String user,String pwd) 功能:把文本域的值设置为参数值。
参数:URL 数据库连接的URL,name 数据库用户的用户名,pwd 数据库用户的密码。
c 内部类:
private class OkButton_ActionListener implements ActionListener//监听确定按钮的动作事件,用于把用户所填入的信息写入配置文件。 (6) affairFrame包中的程序设计:
A:类AffairFrame: a 类变量:
private String user;//记录当前用户。
.
b 方法:
public AffairFrame(String user) 功能:构造函数,构造操作界面。 参数:user 设置当前用户。 c 内部类: private
class
TeacherManageItem_ActionListener
implements
ActionListener //监听”教师管理“菜单项,显示教师管理窗口。
private class PaawdItem_ActionListener implements ActionListener//监听修改密码菜单项的动作事件,当用户点击修改密码菜单项时,打开修改密码窗口。
private
class
ExamManageItem_ActionListener
implements
ActionListener//监听考试管理菜单项的动作事件,当用户点击查看考试菜单项时,打开考试管理窗口。
private class CourseManageItem_ActionListener implements ActionListener//监听课程管理菜单项的动作事件,当用户点击查看课程菜单项时,打开课程管理窗口。
private
class
ClassManageItem_ActionListener
implements
ActionListener//监听班级管理菜单项的动作事件,当用户点击查看班级信息菜单项时,打开班级信息管理窗口。
private ClassManageItem _ActionListener implements ActionListener//监听学生管理菜单项的动作事件,当用户点击查看学生信息菜单项时,打开学生信息管理窗口。
(7) affairFrame.teacher 包中的程序设计:
A:类Teacher: b 方法: public Teacher()
功能:构造函数,构造教师管理操作界面。 public void refresh(String sql)
功能:当表格的信息改变时,调用它来刷新表格的信息。 参数:用此参数对数据库进行操作,用操作结果来刷新表格。 c 内部类:
.
private class InsertButton_ActionListener implements ActionListener // 监听添加按钮的动作事件,用于把用户所填写的信息写入数据库。
private class UpdateButton_ActionListener implements ActionListener//监听修改按钮的动作事件,用于把用户所修改的信息写入数据库。
private class DeleteButton_ActionListener implements ActionListener// 监听删除按钮的动作事件,用于把用户当前在表格中所选的信息从数据库中删除。
B:类UpdateTeacher: b 方法:
public UpdateTeacher(Teacher main)
功能:构造函数,构造更新教师信息的操作界面。 参数:对Teacher类的一个引用。
public void setData(String id,String name,String tel,String memo) 功能:设置当前文本域的值。
参数:id 用于设置编号,name 设置姓名,tel 用于设置电话,memo 用于设置备注。 c 内部类:
class OkButton_ActionListener implements ActionListener//监听确定按钮的动作事件,用于把用户在文本域的输入写入数据库。
C:类InsertTeacher: b 方法:
public InsertTeacher(Teacher main)
功能:构造函数,构造新增教师信息的操作界面。 参数:一个Teacher对象的引用。 c 内部类:
private class TeacherNumText_FocusAdapter extends FocusAdapter// 监听编号文本域的焦点事件,当文本域失去焦点时,提示编号的格式是否正确,当文本域获得焦点时,提示编号的正确格式。
private class OkButton_ActionListener implements ActionListener//监听确定按钮的动作事件,用于把用户在文本域的输入写入数据库。
.
(8) affairFrame.student包中的程序设计:
A:类Student: b 方法: public Student()
功能:构造函数,构造学生管理界面。 public void refresh(String sql) 功能:刷新表格内容。
参数:sql 用作数据库查询语句,用此语句的操作结果来刷新表格。 c 内部类:
class DeleteButton_ActionListener implements ActionListener// 监听删除按钮的动作事件,用于删除当前在表格中所选择的信息,当信息主键是其他表的外键时可能会级联删除。
class InsertButton_ActionListener implements ActionListener//监听添加按钮的动作事件,当用户点击按钮时,打开添加学生信息窗口。
class UpdateButton_actionAdapter implements ActionListener//监听修改按钮的动作事件,当用户点击按钮时,打开修改学生信息窗口。
class InquireButton_ActionListener implements ActionListener // 监听查询按钮的动作事件,按查询条件来刷新表格内容。
B:类InsertStudent: b 方法:
public InsertStudent(SearchStudent main) 功能:构造函数,构造插入学生操作界面。 参数:一个对SearchStudent对象的引用。 public void insert()
功能:用来初始化班级编号的值。 c 内部类:
class ResetButton_ActionListener implements ActionListener//监听重置按钮的动作事件,用于把各文本域的值设置为空。
class OkButton_ActionListener implements ActionListener // 监听确定按
.
钮的动作事件,用于把用户所填写的信息写入数据库。
C:类UpdateStudent: b 方法:
public UpdateStudent(Student main)
功能:构造函数,构造插入学生操作界面。 参数:一个对Student对象的引用。 public void insert()
功能:用来初始化班级编号的值。
public void setData(String stuID,String stuName,String stuSex,String stuBirthday,String classID,String stuPhone,String stuInDate,String stuAddress,String memo)
功能:用于设置各文本域的值。
参数:stuID 学生学号, stuName 学生姓名, stuSex 学生性别, stuBirthday 学生生日, classID 班级编号, stuPhone 学生电话号, stuAddress 学生家庭住址, memo 学生备注。
c 内部类:
class ResetButton_ActionListener implements ActionListener//监听重置按钮的动作事件,用于把各文本域的值设置为空。
class OkButton_ActionListener implements ActionListener // 监听确定按钮的动作事件,用于把用户所填写的信息写入数据库。 (9) affairFrame.classes包中的程序设计:
A:类Class: b 方法: public Class()
功能:构造函数,构造班级管理界面。 public void refresh(String sql) 功能:刷新表格内容。
参数:sql 用作数据库查询语句,用此语句的操作结果来刷新表格。 c 内部类:
.
class DeleteButton_ActionListener implements ActionListener// 监听删除按钮的动作事件,用于删除当前在表格中所选择的信息,当信息主键是其他表的外键时可能会级联删除。
class InsertButton_ActionListener implements ActionListener//监听添加按钮的动作事件,当用户点击按钮时,打开添加班级信息窗口。
class UpdateButton_ActionListener implements ActionListener//监听修改按钮的动作事件,当用户点击按钮时,打开修改班级信息窗口。
class InquireButton_ActionListener implements ActionListener // 监听查询按钮的动作事件,按查询条件来刷新表格内容。
B:类InsertClass: b 方法:
public InsertClass(Class main)
功能:构造函数,构造插入班级操作界面。 参数:一个对Class对象的引用。 public void Insert()
功能:用来初始化教师编号的值。 c 内部类:
class ResetButton_ActionListener implements ActionListener//监听重置按钮的动作事件,用于把各文本域的值设置为空。
class OkButton_ActionListener implements ActionListener // 监听确定按钮的动作事件,用于把用户所填写的信息写入数据库。
class ClassNumText_FocusAdapter extends FocusAdapter // 监听编号文本域的焦点事件,当失去焦点时检查此编号是否存在,格式是否正确, 当获得焦点时给出各个文本域的提示信息。
class EndDateText_FocusAdapter extends FocusAdapter//监听结课时间文本域的焦点事件,当失去焦点时检查日期格式是否正确,当获得焦点时给出此文本域的提示信息。
class StartDateText_FocusAdapter extends FocusAdapter//监听开课时间文本域的焦点事件,当失去焦点时检查日期格式是否正确,当获得焦点时给出此文本域的提示信息。
C:类UpdateClass:
.
b 方法:
public UpdateClass(Class main)
功能:构造函数,构造插入班级操作界面。 参数:一个对SearchStudent对象的引用。 public void Insert()
功能:用来初始化教师编号的值。
public void setData(String classID, String teacherID, String startDate,String studentCount, String endDate, String memo)
功能:用于设置各文本域的值。
参数:classID 班级编号, teacherID 教师编号, startDate 开课时间, studentCount 学生人数, endDate 结课时间, memo 班级备注。
c 内部类:
class ResetButton_ActionListener implements ActionListener//监听重置按钮的动作事件,用于把各文本域的值设置为空。
class OkButton_ActionListener implements ActionListener // 监听确定按钮的动作事件,用于把用户所填写的信息写入数据库。 (10)affairFrame.course包中的程序设计:
A:类Course: b 方法: public Course ()
功能:构造函数,构造课程管理界面。 public void refresh(String sql) 功能:刷新表格内容。
参数:sql 用作数据库查询语句,用此语句的操作结果来刷新表格。 c 内部类:
class DeleteButton_ActionListener implements ActionListener// 监听删除按钮的动作事件,用于删除当前在表格中所选择的信息,当信息主键是其他表的外键时可能会级联删除。
class InsertButton_ActionListener implements ActionListener//监听添加按
.
钮的动作事件,当用户点击按钮时,打开添加班级信息窗口。
class UpdateButton_ActionListener implements ActionListener//监听修改按钮的动作事件,当用户点击按钮时,打开修改课程信息窗口。
B:类InsertCourse: a 类变量:
private Course cousre;//一个Course对象的引用。 b 方法:
public InsertCourse(Course main) 功能:构造函数,构造课程管理界面。 参数:main一个Course对象的引用。 c 内部类:
class ResetButton_ActionListener implements ActionListener//监听重置按钮的动作事件,用于把各文本域的值设置为空。
class OkButton_ActionListener implements ActionListener // 监听确定按钮的动作事件,用于把用户所填写的信息写入数据库。
C:类UpdateCourse: a 类变量:
private Course course;//一个Course对象的引用。 b 方法:
public UpdateCourse(Course main)
功能:构造函数,构造插入课程操作界面。 参数:main一个Course对象的引用。
public void setData(String courseID,String courseName,String memo) 功能:用于设置各文本域的值。
参数:courseID 课程编号, courseName 课程名称,memo 课程备注。 c 内部类:
class ResetButton_ActionListener implements ActionListener//监听重置按钮的动作事件,用于把各文本域的值设置为空。
.
class OkButton_ActionListener implements ActionListener // 监听确定按钮的动作事件,用于把用户所填写的信息写入数据库。 (11) affairFrame.exam包中的程序设计:
A:类Exam a 类变量
private JFrame parent;// 父窗口。 b 方法:
public Exam(JFrame parent)
功能:构造函数,构造考试操作界面。 参数:parent 父窗口的引用。 public void refresh(String sql) 功能:刷新表格内容
参数:sql 用作数据库查询语句,用此语句的操作结果来刷新表格。 c 内部类
class DeleteButton_ActionListener implements ActionListener// 监听删除按钮的动作事件,用于删除当前在表格中所选择的信息。
class InsertButton_ActionListener implements ActionListener//监听添加按钮的动作事件,当用户点击按钮时,打开添加班级信息窗口。
class UpdateButton_ActionListener implements ActionListener//监听修改按钮的动作事件,当用户点击按钮时,打开修改考试信息窗口。
B:类InsertExam a 类变量
private JFrame parent;// 父窗口。 b 方法:
public InsertExam(JFrame parent)
功能:构造函数,构造插入考试操作界面。 参数:parent 父窗口的引用。 public void Insert()
.
功能:用来初始化课程编号和学生编号的值。 c 内部类:
class ResetButton_ActionListener implements ActionListener//监听重置按钮的动作事件,用于把各文本域的值设置为空。
class OkButton_ActionListener implements ActionListener // 监听确定按钮的动作事件,用于把用户所填写的信息写入数据库。 (12) inquireFrame 包中的程序设计: A:类InquireFrame:
a 方法:
public InquireFrame(String user)
功能:构造函数,构造超级管理员操作界面。 参数:登陆时的用户名。 b 内部类:
class InquireItem_ActionListerner implements ActionListener//监听查询菜单项的动作事件,用于显示成绩查询窗口。
B:类InquireExam: a 方法:
public InquireExam()
功能:构造函数,构造学生查询成绩的操作界面。 c 内部类
private class InquireText_keyAdapter extends KeyAdapter// 监听查询关键字文本域的键盘事件,用于用查询关键字查询的结果来刷新表格。
private class OkButton_ActionListener implements ActionListener// 监听确定按钮的动作事件,用于用查询关键字查询的结果来刷新表格。 (13) jdbc包中的程序设计
A:类DbConnection a 类变量:
private Connection cont=null;//数据库连接对象。
.
b 方法: public void init()
功能:初始化数据库连接。 public Connection getConnection() 功能:返回Connection对象。 B:类DbManager: a 类变量:
private Connection cont=null;//数据库连接对象。 private Statement stmt=null;
private DbConnection dbc=new DbConnection(); b 方法:
public DbManager() 功能: 构造函数。
public Connection getConection() 功能:返回数据库连接对象。 public void connect() 功能:进行数据库连接。 public void close() 功能:关闭数据库连接。 public int update(String sql)
功能:执行对数据库的删除,更新等操作,除去查询操作。 public ResultSet query(String sql) 功能:执行对数据库的查询操作。 (14) GBC包中的程序设计:
A:类GBC: b 方法:
public GBC(int gridx, int gridy)
.
功能:构造函数。
参数:gridx 在网格中x坐标的值, gridy 在网格中y坐标的值。 public GBC(int gridx, int gridy, int gridwidth, int gridheight) 功能:构造函数。
参数:gridx 在网格中x坐标的值, gridy 在网格中y坐标的值 gridwidth 在网格中组件的宽度,gridheight 在网格中组件的高度。 public GBC setAnchor(int anchor) 功能:设置组件的位置。
参数:anchor 位置参数 如:east,west等。 public GBC setFill(int fill) 功能:设置组件的填充方式。
参数:fill 组件的填充方式 如 horizon 等。 public GBC setWeight(double weightx, double weighty) 功能:设置组件的权重。
参数:weightx 设置组件x坐标上的权重,weighty 设置组件y坐标上的权重。
public GBC setInsets(int distance) 功能:设置组件的填充。
参数:distance 组件各个方向上的填充像素数。 public GBC setInsets(int top, int left, int bottom, int right) 功能:设置组件的填充。
参数:top 上方的填充像素数,left 左边的填充像素数,bottom下方的填充像素数,right 右侧的填充像素数。
public GBC setIpad(int ipadx, int ipady) 功能:设置内部填充。
参数:ipadx 设置x方向的内部填充,ipady 设置y方向的内部填充。
(15) util包中的程序设计:
.
A:类CenterFrame: b 方法
public static void center(JFrame frame) 功能:设置组件在屏幕的中间。 参数:Frame 要设置的组件。 B:类Updatepassword a 类变量:
private String user;//设置密码的用户。 b 方法:
public UpdatePassword(String user)
功能:构造函数,构造修改密码操作界面。 参数:接受传递过来的用户信息。 private void initFrame() throws Exception 功能:初始化操作界面,被构造函数调用。 c 内部类:
class ConfureText_KeyAdapter extends KeyAdapter // 监听确认密码域的键盘事件,当用户按下enter键时把用户所填写的信息写入数据库。 class OkButton_ActionListener implements ActionListener// 监听确认按钮的动作事件,把用户所填写的信息写入数据库。
.
第五章 系统测试
5.1 测试环境
硬件环境: (1) CPU: P4 2.0G (2) 内存:1G
(3) 硬盘:80G 7200转 软件环境:
(1) 操作系统:Windows
(2) 软件环境:MySQL、Java
5.2 系统功能测试
5.2.1 用户管理功能测试
对用户登录的测试用例如表5.1所示。
表5.1 学生登录测试表
测试功能 测试数据 预期实际结果 结果 比较 用户登陆 账号:root 密码:123 输入不合法 输入合法 学号和密码匹配不对,请核对 错误的密码(如图5.1所示) 用户登录 账号:admin 密码:123 输入合法,登录成功 输入的数据为正确密码,登录成功
.
图5.1 用户登陆出错图
5.2.2 教务基本管理功能测试
对添加班级的测试用例如表5.2所示。
表5.2 添加班级测试表
测试功能 测试数据 添加班级 ffsfs 预期结果 实际结果 输入不合法 格式不正确 比较 格式不正确(如图5.1所示) 添加班级 Adf20452 输入合法 格式正确 格式正确
图5.2 班级编号格式不正确图
对添加学生的测试用例如表5.3所示。
表5.3 添加学生测试表
测试功能 测试数据 添加学生 200632801044 预期结果 实际结果 编号已存在 编号已存在 比较 编号已存在(如图5.1所示) 添加学生 200632801168 输入合法 添加成功 添加成功 .
图5.3 添加学生编号已存在图
对添加成绩的测试用例如表5.4所示。
表5.4 添加学生成绩测试表
测试功能 测试数据 添加学生 234 预期结果 实际结果 数据已存在 数据已存在 比较 数据已存在(如图5.1所示) 添加学生 236 输入合法 添加成功 添加成功
图5.4 添加学生成绩已存在图
5.3. 测试结果分析
通过对系统的测试,发现部分问题,对不足之处进行了修改,在系统中为了增加实用性,对系统中数据的输入进行了要求,需要输入合法信息才能成功输入数据。
通过测试证明系统功能基本能按照预期要求得到实现。
.
第六章 总结
开始对系统进行了可行性分析、需求分析,得出了系统的模型,然后对系统进行对象设计,基本实现了教务管理的基本功能。
系统设计初期,寻找了相关资料,阅读了相关专业书籍,但由于实践经验不够,还不熟悉一些开发工具,编程能力有限,曾经一度难以入手。经过一段时间的请教老师,熟悉开发工具和进行实践以后,终于找到了切入点。
中期,因为编程能力不够也出现了一些困难,后来在老师的帮助下,论文才能得以进行。通过完成这篇论文,逐步加深了对数据库知识的了解,清楚一个管理软件的设计过程,进一步全面认识和深刻体会了数据库技术的发展过程以及数据库技术在实际工作中的应用。同时编程能力也得到了一定的提高。为了完成设计任务,在指导老师的带领下,深入调查,掌握毕业设计课程的具体流程、方法以及有关实例的原始数据资料,更加熟练掌握Windows,MyEclipse,Mysql等软件的使用,在老师的悉心指导下,从理论到实践,又从实践回到理论,进一步加深了对计算机开发技术和数据库技术的理解,为今后更进一步的掌握与运用数据库技术打下坚实的基础,同时也认识到自己所学的不足,有待今后的进一步努力,不断提高。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务