基于JAVA的学生成绩管理系统的设计与实现.docx

上传人:b****5 文档编号:11629327 上传时间:2023-03-29 格式:DOCX 页数:38 大小:948.21KB
下载 相关 举报
基于JAVA的学生成绩管理系统的设计与实现.docx_第1页
第1页 / 共38页
基于JAVA的学生成绩管理系统的设计与实现.docx_第2页
第2页 / 共38页
基于JAVA的学生成绩管理系统的设计与实现.docx_第3页
第3页 / 共38页
基于JAVA的学生成绩管理系统的设计与实现.docx_第4页
第4页 / 共38页
基于JAVA的学生成绩管理系统的设计与实现.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

基于JAVA的学生成绩管理系统的设计与实现.docx

《基于JAVA的学生成绩管理系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于JAVA的学生成绩管理系统的设计与实现.docx(38页珍藏版)》请在冰豆网上搜索。

基于JAVA的学生成绩管理系统的设计与实现.docx

基于JAVA的学生成绩管理系统的设计与实现

西安电子科技大学

长安学院

课程设计报告

课程名:

基于java的学生成绩查询系统的设计

专业:

软件工程

***********

班级号:

09421

学号:

********

*********

 

一.题目分析或需求分析..........................................(4)

二.设计方案...........................................................(6)

三.编程开发和调试过程..........................................(14)

四.效果分析或课题小结..........................................(16)

五.设计开发心得体会...............................................(16)

六.参考文献.............................................................(17)

七.附件....................................................................(17)

引言

通过本课程设计,使自己更加系统地理解和掌握数据结构的基本概念;能自如地根据实际要求,设计相应的数据结构,并运用java语言和SQL语言实现所设计的算法,编写较大型的程序,分析和解决实际应用问题,进一步加深、巩固所学专业课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。

掌握java语言或sqlserver语言独立的编写、调试应用程序和进行其它相关设计的技能。

此项目主要是考察我们对结构体、数组、文件等具体操作,以及对java语言语法的掌握,所以做成此项目要求比较高的设计要求,对整体有很熟悉的概括,同时调试过程也是很重要的,对程序界面的要求也比较高,要设计的合理同时也要美观一点,能够人性化的描述清楚你的各个功能,一目了然,对其他用户使用本程序简单易懂,这才能成本程序或本系统是成功的。

对于学生成绩管理系统,此项目每年都有学生去做,但是能够在其他项目中脱颖而出,还要有自己的设计特色,用简单的语言详细描述系统的功能,这才是关键。

这个设计能够练习我们的理解和运用结构化程序设计的思想和方法,掌握开发一个小型实用系统的基本方法,学会调试一个比较长的程序的基本方法,同时掌握书写程序设计开发文档的能力。

一.题目分析或需求分析

1.题目分析

学生成绩管理系统可以实现管理员对整个学成绩的添加,修改,删除,查询等操作,对教师用户的添加,修改,删除,查询等操作。

可以将学生成绩的数据库发布到网上,教师的信息发布到网上,方便学生,教师进行查询,达到资源共享的目的。

教师能够在一定的权限内对所有学生成绩的查询,所有教师信息的查询,留言信息的添加,删除,修改是,查看等,对的自己的联系信息进行更新,登录密码的修改.学生可以在自己的权限内对对自己成绩的查询,以及个人信息的查询,登录密码的修改,留言的查看,提交留言信息的相关操作。

在21世纪的科技时代,科学技术突飞猛进,信息社会的高科技时代,商品经济化的高效益,计算机的应用已普及到经济和社会生活的各个领域.计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作不方便继续用手工劳动.为了适应现代社会人们高度强烈的时间观念,学生成绩管理系统为教学办公带来了极大的方便.该学生成绩管理系统是以JAVA语言和SQL数据查询语言编写,其系统功能在内部IIS服务器上运行.系统管理员,教师,学生只需通过简单的操作,用户都可以了解本系统软件的基本工作原理.用户只需进行输入一些简单的汉字,数字,或用鼠标点击即可达到自己想要的目标。

2.需求分析

(1)需求分析概述

需求分析是开发软件系统的重要环节,是系统开发的第一步和基础环节。

通过需求分析充分认识系统的目标、系统的各个组成部分、各部分的任务职责、业务范畴、工作流程、工作中使用的各种数据及数据结构、各部门的业务关系和数据流程等,为系统设计打下基础。

需求分析的好坏往往决定了系统开发的成败。

需求分析从系统的调查研究入手,需求分析要对系统的各个方面有全面的了解,既包括系统内部的各个方面,也包括与系统有联系的各种外部因素。

通过调查研究和分析,对系统产生比较深刻的认识。

需求分析阶段的最终结果是“需求分析说明书”,它涵盖了对用户环境、事务处理和信息流程分析的一切成果,供项目开发组和用户共同遵守。

如果采用瀑布模型,就要对“需求分析说明书”进行冻结,使它成为凝固可靠的基线。

万一要求变更基线,开发者和用户双方,都必须执行基线变更程序,此变更程序在合同中已做了明确规定。

现针对“学生成绩查询系统”的组织结构、业务流程、用户角色职能、系统数据流进行分析。

利用结构化分析和UML中的用例从大到小、从粗到细进行系统建模。

(2)组织结构调查

系统的组织结构,反映了单位内部各个部门的职责划分和它们之间的关系。

为了对系统有一个全貌性的了解,首先要对系统内部部门结构、人员组织及用户情况有所了解。

对系统组织结构的调查,是从总的方面对系统进行宏观了解和分析。

信息的流动关系是以组织结构为背景的,而且总是伴随着组织部门之间的资金流和物流的传递而产生。

学生成绩查询系统的组织结构图如下:

 

 

(3)系统需求分析

此系统需要实现的功能如下:

A.按照教师,学生,管理员三种角色设计系统功能。

B.学生成绩查询(学生):

查询自己每门课的成绩,单科成绩,成绩平均分,成绩总分。

C.学生成绩查询(教师):

登记,修改,删除某班某个学生的成绩,可以一次输入入某班全部学生的成绩。

D.管理员查询(管理员):

登记,对学生,老师进行管理,可以添加某个学生,删除某个学生,添加某个老师,删除某个老师。

(4)系统用户分析

“学生信息查询系统”主要是针对学生和教师查询工作而开发的应用软件。

通常有系统管理员、教师和学生三种用户,他们的使用权限如下:

系统管理员:

计算机人员,对系统、数据库进行维护,主要对不同人员赋予不同的权限。

教师:

对学生的成绩进行查询,增加,修改。

学生:

一般操作水平,能够在本系统查询个人的学习才成绩。

(5)其他需求分析

a.性能要求

查询服务部分:

读者通过本地计算机,从提交查询命令到返回结果不超过8秒钟。

数据管理部分:

图书管理员从提交一次录入到结果返回不超过8秒钟。

b.灵活性要求

如果要为数据项设计编码,尽可能采用行业标准,自行编码也应合乎规范,并留有扩充余地,还要征得相关业务部门认可。

数据库设计也应考虑可扩充性,以适应今后图书馆发展和系统升级的需要。

c.故障处理要求

正常使用时不应出错,一般性错误时应给出错误提示。

应提供定期自动备份数据库的功能,当遇到不可恢复的系统错误,可以保证数据库完好无损。

在系统出错后,应能恢复最近一次备份数据库的状态。

d.其他要求

①安全性。

不同的用户具有不同的使用权限,只有具有最高权限的系统管理员才能修改、注销数据库中的信息,具有一般权限的人员只能读取与自己相关的内容。

②一致性。

系统的数据要保证一致性、准确性,当某一数据库中记录改变时,与之相关联的数据库也会随之变化。

③易操作性。

界面设计要符合大多数用户的操作习惯,系统还要提供操作指南,便于用户操作使用。

二.设计方案

1.系统开发方案的选择

在开发方案的选择上,选择了演绎式原型法与生命周期法相结合的方案。

具体来说,就是在系统开发之前对系统有一个总体框架设想,各功能单元的结构和功能也比较清楚,但是还没有具体实现。

系统完成什么功能,分成哪几个部分,各个部分又有哪几个模块,都已理解掌握,且以后不需要做更大的变动,只是具体到每个模块,还没有全部实现。

具体地设计可能是完全实现一个模块,也可能是用一个效率高地模块代替一个旧模块。

信息系统的开发是一项比较复杂的工作,我们必须选用科学的有效的开发方法。

近年来,国内外已逐步总结出一些开发信息系统的方法和技术,但是,从目前的情况来看,系统的开发技术仍是一个比较薄弱的环节。

那么根据本系统开发的要求,本系统选择了生命周期法和原型法相结合的方法。

2.系统开发环境

(1)开发平台

学生成绩查询系统是在windows系统上开发的,我选择的开发工具是eclipse-SDK-3.5.2-win32,eclipse是一个开放源代码的、基于Java的可扩展的开发平台。

就其本身而言,它只是一组框架和和一组服务,用于通过插件组件构建开发环境。

幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。

虚拟机是jdk-6u24-windows-i586。

(2)程序设计语言选择

程序设计语言,我选择的是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开始就支持多线程。

类和接口用来分解一个程序成为不同的线程。

语言简单的对重要的数据作同步或者锁定处理。

3.学生成绩查询系统的功能

(1)软件的具体功能

学生通过学号作为用户名可以进入学生查询子系统,可以查询自己的所有科目的成绩,单科成绩,成绩总分,成绩平均分。

教师可以通过自己的教师号进入教师管理系统,教师可以录入自己学生的成绩,可以查询学生的成绩,可以修改学生的成绩。

管理员可以对教师和学生进行管理。

(2)软件模块划分

A.登陆模块

登录窗体功能:

用户选择自己的用户名并输入正确密码登录系统。

(1)输入项:

用户名及该用户所对应的密码。

(2)输出项:

相应的系统登录提示信息。

登陆信息寻找信息

用户登陆操作数据库

错误信息返回信息返

B.学生查询模块

学生可以通过自己的学号进入系统,可以查询自己的所有成绩,单科成绩,平均成绩,总成绩。

 

操作演示效果图:

 

C.教师查询模块

教师可以用自己的教师号进入此系统,教师在此系统里面可以完成查询,删除,修改,增加等操作。

 

操作演示效果图:

D.管理员管理模块

管理员可以通过系统认可进入该系统,管理员可以对学生和老师进行增加,删除,修改学生,教师信息,还可以对学生成绩进行增,删,改,查。

 

操作效果演示图:

4.数据库设计

在学生成绩查询系统中功能模块主要牵涉到的信息包括:

学生信息表(Smessage),学生成绩表(Sgrade),教师表(Teacher),管理员表(Administrator)。

A.学生信息表:

列名

标识

数据类型

数值位数

约束

学号

Sno

int

Primarykey

姓名

Sname

nvarchar

30

Notnulll

班级

Sclass

nvarchar

15

Notnull

B.学生成绩表

列名

标识

数据类型

数值位数

约束

学号

Sno

int

Foreignkey

课程名

Scourse

nvarchar

30

Notnull

成绩

Sgrade

int

C.教师表

列名

标识

数据类型

数据位数

约束

教师号

Tno

int

Primarykey

姓名

Tname

nvarchar

30

D.管理员表

列名

标识

数据类型

数值位数

约束

管理员号

Ano

int

Primarykey

姓名

Aname

nvarchar

30

三.编程开发和调试过程

在账户登录界面设置不同账户的登录。

系统运行截图如下:

本系统在账户登录时将有三种不同权限的登录:

管理员、教师、学生。

系统登录的第一步是选择与自己相符的种类用户,即上图中的学生/教师/管理员。

在选择结束后再输入账户名和密码,系统将自动比对数据库中已存在的学生/教师/管理员ID和密码。

如果用户名和密码不匹配或者相应账户种类选择错误,则出现如下提示:

学生进入系统后只能查看自己的成绩,不能查看别人的成绩,例如查看学号为9421001学生的成绩,则截图如下:

在添加新账户过程中,系统将自动比对新账户ID是否与已有账户ID重合,以避免账户管理混乱、账户数据错误等问题。

下图为系统添加新账户成功:

四.效果分析或课题小结

学生成绩管理系统整体上的效果并没有我提前预想的效果好,有些功能还没有完善,由于时间的问题,就做了个大概,没有完善的模块和那些已经完成的模块基本上相同。

本系统开发的技术难点主要有两个方面:

一是否业务逻辑的理解;二是数据库逻辑结构的设计。

业务逻辑是依据空警管理系统的行业特点及其特殊的应用领域需要来进行设计的。

只有在准确不理解一个系统的业务逻辑之后才可能开发出适应其应用的应用系统来,并且在系统之间模块的科学划分与结构组织都是在正确不理解实际应用的业务逻辑需求的前提下完成的.

数据库设计是应用系统开发的另一个难点,只有科学的数据库设计才能使系统具有良好的结构及良好的可编程性,可扩展性.数据库设计是直接影响系统运行情况及程序设计的一个重要因素.因此,在开发相关数据库方面的管理系统时,都需要充分考虑到科学性,结构性,规范性,安全性,可扩展等相关问题.

本系统自完成时即投入到系统测试中,如系统中的各个漏洞以及即时弥补。

首先本系统在目前的调试中,基本达到了当初的设计要求,设计上基本合理,能够做到各项的查询,删除,添加,修改等基本功能。

代码的主要轮廓应该比较清晰。

通过对java编程的学习,以及应用工具对java的学习,我们初步掌握了通过编程实现学生信息管理系统的主要核心,实现了一个简单的学生成绩管理系统。

在这个学生成绩管理系统的页面设计中,也有许多的不足,页面设计很简单,但不够精致,这些都需要去完善的,同时还应该再增加些通告栏,让学生及教师及时的知道最新的信息。

对于这个系统的种种不足之处需要我们更进一步的去完善。

其中的不足有待更进一步的弥补,这些都需要在使用发现与修改。

五.设计开发心得体会

我的题目是学生成绩查询系统,在设计的过程中,遇到问题能做到不懂就问,积极解决。

通过本次设计,感觉自己所掌握知识的不足。

在今后的学习工作过程中,将会认真对待。

课程设计是对本次项目的书面文档作以总结,通过这次学生成绩查询系统的设计是我又把以前老师讲的知识串了一下,又熟悉了许多,很多以前没有弄明白的知识点,通过这次课程设计,差不多都掌握了,增长了我的见识,锻炼了我的实际工作和学习能力。

因此在以后的生活学习中,我会慢慢将学习得到的知识运用到实用项目制作中,做到真正让所需要系统的完善功能和谐的系统。

做此课程设计过程中,得到老师和同学的大力支持和帮助,在此特别感谢。

六.参考文献

参考文献有:

《Java范

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1