基于JAVA的学生成绩管理系统含源文件Word格式文档下载.docx
- 文档编号:18584568
- 上传时间:2022-12-28
- 格式:DOCX
- 页数:15
- 大小:447.44KB
基于JAVA的学生成绩管理系统含源文件Word格式文档下载.docx
《基于JAVA的学生成绩管理系统含源文件Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于JAVA的学生成绩管理系统含源文件Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
通过调查研究和分析,对系统产生比较深刻的认识。
需求分析阶段的最终结果是“需求分析说明书”,它涵盖了对用户环境、事务处理和信息流程分析的一切成果,供项目开发组和用户共同遵守。
如果采用瀑布模型,就要对“需求分析说明书”进行冻结,使它成为凝固可靠的基线。
万一要求变更基线,开发者和用户双方,都必须执行基线变更程序,此变更程序在合同中已做了明确规定。
现针对“学生成绩查询系统”的组织结构、业务流程、用户角色职能、系统数据流进行分析。
利用结构化分析和UML中的用例从大到小、从粗到细进行系统建模。
1.2.2组织结构调查
系统的组织结构,反映了单位内部各个部门的职责划分和它们之间的关系。
为了对系统有一个全貌性的了解,首先要对系统内部部门结构、人员组织及用户情况有所了解。
对系统组织结构的调查,是从总的方面对系统进行宏观了解和分析。
信息的流动关系是以组织结构为背景的,而且总是伴随着组织部门之间的资金流和物流的传递而产生。
学生成绩查询系统的组织结构图如下:
图1-1学生成绩查询的组织结构
1.2.3系统需求分析
此系统需要实现的功能如下:
A.按照教师,学生,管理员三种角色设计系统功能。
B.学生成绩查询(学生):
查询自己每门课的成绩,单科成绩,成绩平均分,成绩总分。
C.学生成绩查询(教师):
登记,修改,删除某班某个学生的成绩,可以一次输入入某班全部学生的成绩。
D.管理员查询(管理员):
登记,对学生,老师进行管理,可以添加某个学生,删除某个学
生,添加某个老师,删除某个老师。
1.2.4系统用户分析
“学生信息查询系统”主要是针对学生和教师查询工作而开发的应用软件。
通常有系统管理员、教师和学生三种用户,他们的使用权限如下:
系统管理员:
计算机人员,对系统、数据库进行维护,主要对不同人员赋予不同的权限。
教师:
对学生的成绩进行查询,增加,修改。
学生:
一般操作水平,能够在本系统查询个人的学习才成绩。
1.2.5其他需求分析
a.性能要求
查询服务部分:
读者通过本地计算机,从提交查询命令到返回结果不超过8秒钟。
数据管理部分:
图书管理员从提交一次录入到结果返回不超过8秒钟。
b.灵活性要求
如果要为数据项设计编码,尽可能采用行业标准,自行编码也应合乎规范,并留有扩充余地,还要征得相关业务部门认可。
数据库设计也应考虑可扩充性,以适应今后图书馆发展和系统升级的需要。
c.故障处理要求
正常使用时不应出错,一般性错误时应给出错误提示。
应提供定期自动备份数据库的功能,当遇到不可恢复的系统错误,可以保证数据库完好无损。
在系统出错后,应能恢复最近一次备份数据库的状态。
d.其他要求
①安全性。
不同的用户具有不同的使用权限,只有具有最高权限的系统管理员才能修改、注销数据库中的信息,具有一般权限的人员只能读取与自己相关的内容。
②一致性。
系统的数据要保证一致性、准确性,当某一数据库中记录改变时,与之相关联的数据库也会随之变化。
③易操作性。
界面设计要符合大多数用户的操作习惯,系统还要提供操作指南,便于用户操作使用。
2设计方案
系统开发方案的选择
在开发方案的选择上,选择了演绎式原型法与生命周期法相结合的方案。
具体来说,就是在系统开发之前对系统有一个总体框架设想,各功能单元的结构和功能也比较清楚,但是还没有具体实现。
系统完成什么功能,分成哪几个部分,各个部分又有哪几个模块,都已理解掌握,且以后不需要做更大的变动,只是具体到每个模块,还没有全部实现。
具体地设计可能是完全实现一个模块,也可能是用一个效率高地模块代替一个旧模块。
信息系统的开发是一项比较复杂的工作,我们必须选用科学的有效的开发方法。
近年来,国内外已逐步总结出一些开发信息系统的方法和技术,但是,从目前的情况来看,系统的开发技术仍是一个比较薄弱的环节。
那么根据本系统开发的要求,本系统选择了生命周期法和原型法相结合的方法。
系统开发环境
2.2.1程序设计语言选择
程序设计语言,我选择的是JAVA语言和SQL语言。
JAVA语言的简介:
A.Java在虚拟机上运行
Java源代码并不是被编译成为普通的机器代码。
而是被翻译成为虚拟机可以执行的代码。
一个Java解释器最终执行这些代码。
这其中没有连接的过程;
解释在需要的时候动态的加载一些类;
B.Java是完全面向对象的
Java是一种完全面向对象的语言。
这意味着你对任何一个Java对象所做的动作都是通过一个方法实现的。
第一点就是,再也没有没有主函数这样的孤立的东西了。
取而代之的是,你必须开始用一个对象的看法看待一个程序,一个类的对象。
但是这个对象又什么对象呢大多数Java程序只是简单的通过继承Java基础类Object来实现所需要的东西,但是你可以通过创建程序基础类用于多个特性相似的应用程序来节省时间。
严格的面向对象的规定意味着理用原有的C/C++代码不可以直接不加改动的使用;
系统调用也是这样的。
C++中,你可以通过在C++正常的命名空间外声明extern"
C"
来使用原有的C的过程调用,包括系统调用。
在Java中,只有一个类似的安全回溯的方法,但是并不是十分简单的方法。
你必须定义一个本地方法,其目的是为C语言提供接口,然后提供连接的介质。
Java环境提供了完成这种任务的工具,但是整个过程和C++中提供的extern比微不足道,完成使用C++类的过程则更加复杂,因为这样会引入对C的借口和C函数和C++成员函数的问题。
幸运的是,许多常用的系统实用工具函数已经在系统类中的方法中提供出来,但是这些明显没有包含经过许多年来你所创建的那些类和过程。
所以,在你需要的时候你应该去钻研一下。
C.Java中没有独立的头文件
在Java中,关于类的一切东西都被放到一个单独的文件中。
方法的位置只可能在一个地方出现,一个方法的实现必须在它的定义过程中同时进行。
这样做得优点是在实现程序的时候不容易因为文件的非同步错误而失败,或者获取到一个没有实现的声明。
类的声明可以被Java解释器利用甚至是从一个编译过的单元中获取,所以不再需要有头文件,只要有编译过的文件。
这样做的缺点与我们编程的过程有关。
许多C++程序员喜欢用头文件来代替文档。
要看一个成员函数的接口参数,只需要看头文件中的声明即可。
你可以经常的看头文件即可了解怎样去使用这个类。
在Java中,没有这样的总结。
因为实现类方法的代码必须在方法定义的时候出现,而且,对于一个单独的函数的代码来说就经常占据了一整页乃至更多。
这样,很难通过看Java的代码就初步了解类是怎样使用的。
你必须为你需要的类准备足够多的文档。
不言而喻,再处理非商业类库的时候文档是极度缺乏的。
在当先的Java环境中提供了两个工具来补偿这些,javap来打印类标识,javadoc为嵌入式程序提供HTML文档。
D.用Package来分解Java命名空间
在大的C++工程中经常遇到的一个问题是命名空间--怎样保证工程的一些程序员不会创建和另一些程序员一样名字的类更糟糕的是,供应商可能会提供一个包含和你的类一样名字的类的库。
有许多方法可以解决这一问题,但是很可能在问题发现之前工程已经启动,改正错误是需要付出许多痛苦的。
Java通过"
Package"
这个概念解决了这个问题,Package有效地通过通过集合类划分了命名空间。
在不同包内的两个同名的类仍然是不同的。
关键问题就变成了类是否放置到相应的包中。
记住,Java并没有解决命名冲突的问题。
扩展一个基类而引起了派生类的冲突。
比如说,如果你最喜欢的供应商提供了一些类,然后你把它们用做基类并且派生有一个foo方法的类,当供应商提供一个新版本的类的时候就可能出现,如果供应商业也在新类中提供了一个foo的方法。
E.异常是Java的重要特性
在C++中,异常和异常处理是十分深奥的事情;
许多C++程序员从没有处理过它们甚至不知道它们是何物。
异常是在正常的过程中出现的未预料的错误,因此,它们不会从方法中返回,或者作为参数传入;
但是,它们不能被忽略!
这里的一个例子是计算一个书的方根的方法。
正常的接口形式是将一个正数作为参数传入方法,然后方法会返回一个正实数作为结果,方法可以检验这些并且在异常产生的时候抛出异常。
在大多数系统中,程序员并不是必须这样做,这样,一个没有考虑到的异常可以使程序不正常的退出。
在Java中,异常已经成为语言中非常成熟的部分。
方法的说明中就包含了异常的信息,程序处理器也强制检验如果你使用了一个能够产生异常的方法,你就必须检查异常是否发生。
几乎所有的Java程序员都会遇到异常的情况,因为许多非常有用的库中的类都会抛出异常。
处理异常并不难,但是在一些时候是需要注意的。
一个方法的文档会指明方法抛出的异常的类型。
如果你忘了,不要紧,编译器会提醒你的。
F.字符串不再是字符数组
Java中包括了一个字符串的对象,并且是个常量。
字符串不像字符数组一样,虽然可以简单的从一个字符数组构造一个字符串。
你应该尽可能的用字符串代替字符数组,因为他们不会因为误操作而被覆盖。
G.Java限制了常量对象和方法
在C++中,你可以正式的声明一个函数参数或者函数返回值为const类型,这样可以有效的防止对参数或者返回值的不正当修改。
另外,你可以声明一个成员函数为const,表明它不可以修改任何他操作的对象。
Java支持常量操作符,只读变量,这些通过final关键字实现。
但是Java没有支持强制的使一个可写变量在函数传递、返回的过程中变为只读。
或者定义一个不操作修改对象的常量方法。
在Java中,这个省略带来的影响和在C++中相比就非常小了,这很大程度上因为字符串变量和字符数组的不同,但是这也带来一个引起错误的隐患。
特别地,没有办法检验一个方法是否可以改动对象。
H.Java没有指针
理解指针的概念是一个C或C++程序员最难应付的问题。
指针也是错误产生的一大根源。
Java中没有指针,对象的句柄直接作为参数传递,而不是传递指针。
另外,你必须通过索引使用数组。
这些都不是什么大问题。
然而,没有指针是在写含有函数指针或者成员函数指针的系统的时候引起很大麻烦。
这个问题在处理回调函数的时候更加显着。
I.Java没有参数化类型
参数化类型提供了用一段程序处理许多相似程序的方法。
一个例子就是开平方根的方法,它可以对int或者float操作。
在C++中,这一特性是由模板提供的。
Java中不包含C++中的模板的等价物。
如果你经常使用模板来简化程序,比如说构造许多使用相似参数类型的函数,这简直就是灾难。
这意味着更多使用复制、粘贴的过程来手动的完成。
然而,如果你使用模板来生成类的话,没有简单的方法。
J.Java使用垃圾回收
在垃圾回收的语言中,运行时环境一直监测哪些内存不被使用。
当一块内存不用的时候,系统自动的回收内存。
比如说,一个对象在一个方法中生成,但是没有被调用着返回或者没有储存为全局变量,不能在方法外部使用。
系统自己会知道哪些变量是你用不到的,哪些是可以用到的。
因此,你不必再为破坏对象回收内存而担心。
在C++中,很多的调试时间都被使用到检查内存漏洞中。
Java的这种方法很大程度上降低了这种错误的可能。
但是他依然不能处理逻辑混乱的程序,他们不能够被回收。
许多C++的类中的析构函数是用来释放对象引用的内存的。
Java使垃圾回收的事实说明在Java中不是必需写析构函数了。
但是并不意味着你可以忘记为你的类写析构函数。
比如,一个对象打开了网络连接就必须被恰当的清理来关闭这个连接。
在Java中,析构函数被称作"
finalization"
方法。
K.Java不支持多重继承
在任何一个复杂的面向对象的系统中,实现一个有更多方法的新类是十分经常遇到的事情。
比如说,一个Manager类,需要被作为一个连表的表头,但是一个Manager又必须是一个Employee。
有许多方法来处理这样的问题。
一个方法是允许从多个类继承。
在这个例子中,Manager需要从LinkedList和Employee继承。
Java没有多重继承。
但是你可以声明接口--来描述实现一些功能的编程接口。
一个类可以由多个接口实现,包括他唯一的功能。
不同的类可以由同样的接口实现。
方法的参数既可以声明为类,也可以声明为接口。
如果是接口的话,实现接口的类就可以作为参数传入方法。
接口的概念要比多继承容易理解一些,但是他有一定的局限性。
特别地,你必须在类中实现接口的时候编码去重新实现类的功能。
L.Java支持多线程
多线程可以使你写出在同一时刻完成多种任务的程序。
比如说,你可以在完成读取一个大文件之间允许用户对已经读取的部分进行编辑。
你需要把程序分为多线程来执行。
为安全起见。
你的程序要被精心的设计,因为可能不止一个线程需要对数据进行访问、修改。
Java开始就支持多线程。
类和接口用来分解一个程序成为不同的线程。
语言简单的对重要的数据作同步或者锁定处理。
学生成绩管理系统的功能
2.3.1软件的具体功能
学生通过学号作为用户名可以进入学生查询子系统,可以查询自己的所有科目的成绩,单科成绩,成绩总分,成绩平均分。
教师可以通过自己的教师号进入教师管理系统,教师可以录入自己学生的成绩,可以查询学生的成绩,可以修改学生的成绩。
管理员可以对教师和学生进行管理。
2.3.2软件模块划分
A.登陆模块
登录窗体功能:
用户选择自己的用户名并输入正确密码登录系统。
(1)输入项:
用户名及该用户所对应的密码。
(2)输出项:
相应的系统登录提示信息。
登陆信息寻找信息
用户登陆操作数据库
错误信息返回信息
图2-1用户登录系统
B.学生查询模块
学生可以通过自己的学号进入系统,可以查询自己的所有成绩,单科成绩,平均成绩,总成绩。
图2-2学生成绩查询
演示效果图:
图2-3学生成绩查询系统
C.教师查询模块
教师可以用自己的教师号进入此系统,教师在此系统里面可以完成查询,删除,修改,增加等操作。
图2-4教师查询系统
图2-5教师管理系统
D.管理员管理模块
管理员可以通过系统认可进入该系统,管理员可以对学生和老师进行增加,删除,修改学生,教师信息,还可以对学生成绩进行增,删,改,查。
图2-6管理员管理功能图
操作效果演示图:
图2-7管理员管理系统
3数据库设计
成绩查询系统中功能模块主要牵涉到的信息包括:
学生信息表(Smessage),学生成绩表(Sgrade),教师表(Teacher),管理员在学生表(Administrator)。
表3-1学生信息表
列名
标识
数据类型
数值位数
约束
学号
Sno
int
Primarykey
姓名
Sname
nvarchar
30
Notnulll
班级
Sclass
15
Notnull
表3-2学生成绩表
Foreignkey
课程名
Scourse
成绩
Sgrade
表3-3教师表
数据位数
教师号
Tno
Tname
表3-4管理员表
管理员号
Ano
Aname
4编程开发和调试过程
在账户登录界面设置不同账户的登录。
本系统在账户登录时将有三种不同权限的登录:
管理员、教师、学生。
系统登录的第一步是选择与自己相符的种
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 JAVA 学生 成绩管理系统 源文件