Java课程设计学生成绩分析论文源程序.doc_第1页
Java课程设计学生成绩分析论文源程序.doc_第2页
Java课程设计学生成绩分析论文源程序.doc_第3页
Java课程设计学生成绩分析论文源程序.doc_第4页
Java课程设计学生成绩分析论文源程序.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

交通运输学院课程设计目 录引言2设计目的2设计任务2设计要求21、需求分析31.1需求分析31.2 功能设计32、概要设计32.1程序设计思路32.2程序中类与方法的说明42.3程序相关说明42. 3. 1运用缓冲流来读取数据42. 3. 2捕获异常52. 3. 3保存对象数据62. 3. 4主函数63、程序详细设计与分析83.1初始化组件83.2异常处理84、测试分析94.1编写目的94.2背景说明94.3术语94.4参考资料94.5分析摘要94.6评价105、源程序清单106、课程设计总结106.1心得体会106.2设计过程中的难点和存在的问题107、参考文献128、附录138.1完整代码148.2程序流程图17引 言设计目的 巩固和提高一学期来对Java的学习,提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼分析解决实际问题的能力。提高适应实际,实践编程的能力,同时随着社会的进步和科学技术的不断提高,尤其在进入二十一世纪以来,计算机科学发展迅猛,日趋成熟,其强大的功能已被人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生成绩信息进行分析管理,有着手工管理所无法比拟的优点。设计任务学生成绩分析系统能够方便用户快速、准确处理学生的成绩,得到想要的结果数据并能将学生的信息以文档的形式保存。本文介绍了简易学生成绩分析系统在MyEclipse6.0.1环境下的实现过程:数据的读取,数据的输出,按照各种要求计算出各种数据。本系统的主要功能有全班学生成绩的读取、分析、显示,能计算出各分数段的人数以及全班的通过率,和保存信息到文件以及从文件中读取信息等功能。设计要求在本程序设计中,因为需要开发的是一个简易的学生成绩分析程序,规模较小,内容较少,所以选择了适合初学者使用的MyEclipse开发工具。Java 课 程 设 计 学生成绩分析程序的设计1、需求分析1.1需求分析 随着科学技术的发展,计算机管理在日常生活中的地位变得越来越重要。它能够代替人做各种重复、繁琐的劳动,并且拥有操作简单、可信度好、不易出错等优点,大大减少了不必要的人力消耗,提高个人的工作效率。学生成绩分析系统是每个教师必须面临的问题,所以,如何开发一个应用方便、界面友好、容易操作、数据安全性好的成绩分析系统就成为非常重要的技术问题。学生成绩分析系统的设计与实现,是在学校数据库的基础上,只对一个教学班学生成绩进行分析计算的一个应用系统,是对学校教师管理成绩的帮助,主要是针对任课教师的需要,主要包括以下三个方面:数据的读入、数据的输出、计算等。1.2 功能设计 通过读取保存在文本文档中的学生成绩,然后再利用程序进行计算所需要的信息,最后将所得结果保存为txt文件。2、概要设计2.1程序设计思路定义构造方法Reader()创建一个Reader类在主函数中创建Reader类的对象并调用构造方法在Reader方法中读取文本文件、计算所需数据图1程序设计思路2.2程序中类与方法的说明表1程序中所用到的类类名称功能T7_ScoreOfStudent主类Reader读取文本、计算所需信息、同时将结果保存在指定文件中IOException当发生某种 I/O 异常时,抛出此异常BufferedReader缓冲指定文件的输入Scanner读入一个文件进入流 表2程序中所用到的方法方法名称功能Reader()构造方法parseInt(String str2)将形参 srt2 转化为整数 FileReader()读取字符文件substring()截取字符串中一段,一个参数时,参数是指截取的起始位置,两个参数时,第一个是起始位置,第二个是子串的长度 printStackTrace()在命令行打印异常信息在程序中出错的位置及原因 PrintWriter()写入数据同时对写入的数据进行格式化 2.3程序相关说明2. 3. 1运用缓冲流来读取数据BufferedReader in=new BufferedReader(new FileReader(D:javachengji.txt);for(int i=0;iR;i+)int j=0;if(str2=in.readLine()!=null)/根据所读取的一行文本去操作System.out.println(str2);while(jstr2.length() a.str1k=str2.substring(j, j+2); j=j+3;k+; 其中BufferedReader是缓冲指定文件的输入,缓冲流是一个增加了内部缓存的流。当一个简单的写请求产生后,数据并不马上写到所连接的输出流文件中,而是写入告诉缓存。当缓存写满后或关闭流时,再一次性的从缓存中写入输出流或文件中,这样可以减少实际写请求的次数,以此提高将数据写入文件中的效率。类似地,从一个带有缓存的输入流读数据,也可先把缓存杜曼,随后的读请求直接从缓存中而不是从文件中读取,这种方式大大提高了读取数据的速度。在此通过该类创建一个对象in,然后利用for循环从该文本文档中读取相关数据,保存在数组str1中,最后打印出所得到的数据。2. 3. 2捕获异常当一个异常被抛出时,应该有专门的语句来识别这个被抛出的异常对象,这个过程称为捕获异常。当一个异常类的对象被抛出后,用户程序就会发生流程的跳转,系统终止当前的流程而跳转至专门与这个异常对象匹配的异常处理语句块,或直接跳出当前程序和Java虚拟机,退回操作系统。专门与这个异常对象匹配的过程称为异常的捕获1。异常的捕获和处理语句是同时定义的。在Java程序里,异常对象依靠try/catch语句来捕获和处理。以下就是异常捕获与处理的一个过程:tryBufferedReader in=new BufferedReader(new FileReader(D:javachengji.txt);/读取字符文件for(int i=0;iR;i+)int j=0;if(str2=in.readLine()!=null)/根据所读取的一行文本去操作System.out.println(str2);while(jstr2.length() a.str1k=str2.substring(j, j+2); j=j+3;k+; in.close();catch(IOException e)/捕获IO异常e.printStackTrace();2. 3. 3保存对象数据 果要保存和读取整个对象,则需要创建一些存储对象成员变量和读取成员变量的方法,而且对象中的成员变量最好能够自动地被保存和读取。Java支持将对象作为一个整体通过流进行传输和存储,但必须将ObjectInputStream和ObjectOutputStream两个类与接口Serializable结合起来使用才能保证有效地存储和读取对象。System.out.println(请输入要保存文件的文件名:); /输入要保存文件的文件名 不要扩展名 Scanner in3 = new Scanner(System.in); String fn=in3.next(); tryFile f=new File(D:+fn+.txt);PrintWriter pw=new PrintWriter(f);/将所得分析结果保存到指定的.txt文件中pw.write(该平均成绩:+Math.round(average)+,最高分:+max+,最低分:+min+rn);pw.write(通过率为: + Math.round(p * 100) + %+rn);pw.write(各分数段的人数分布如下:rn);pw.write(059分的人数为:+n1+rn);pw.write(6069分的人数为:+n2+rn);pw.write(7079分的人数为:+n3+rn);pw.write(8089分的人数为:+n4+rn);pw.write(90100分的人数为:+n5+rn);pw.close();catch(IOException e)e.printStackTrace();2. 3. 4主函数public static void main(String args)Reader ps=new Reader();ps.Reader();在主函数中new出一个Reader类的对象ps,然后通过这个对象调用构造方法来实现所得结果。2.4程序运行界面图2未输入文件名时的运行结果图 图3未输入文件名时的D盘图4输入要保存的文件名时 图5输入要保存的文件名时D盘的变化图6记事本里的内容 首次运行是的结果如图2,在输入要保存的文件名时(以记事本的形式保存)的结果图为图4,输入后回车,在D盘中自动生成一个记事本文件,且文件里面的内容是分析结果,如图6。3、程序详细设计与分析3.1初始化组件static int N=30;/班级人数static int R=5;/文本文件中所有成绩所占的行数static String str1=new StringN;/定义String数组用来保存全班学生的成绩Int max=0,min=100;/最高分、最低分double sum = 0;/成总和double average = 0;/平均成绩String str2=null;/每个学生的成绩int n1 = 0,n2 = 0,n3 = 0,n4 = 0,n5=0,n6=0;/各分数段的人数3.2异常处理由于Java程序常常在网络环境中运行,安全按成为首先考虑的重要因素之一。为了能够及时有效地处理程序中的运行错误,Java中引入了异常和异常类,并提供了丰富的处理错误与异常的措施。Java中所有的异常类都是系统类库中的Exception类的子类。Exception类的层次结构如图1:ThrowableExceptionErrorRuntimeExceptionIOExceptionIllegalAccessExceptionInterruptedExceptionAWT Exception 图7 Exception类的层次结构表3中的异常与I/O操作有关,通常发生在从磁盘或者链接的网络上读取数据的时候2。一般 无法防止它们发生,但可以阻止它们产生更大的破坏。 表3包Java.io中的异常异常类异常类的含义EOFException在读取数据时,指针已经到文件或流的尾部,。通常数据输入流使用这种异常,而其他的输入流一般在达到流的尾部是返回一个特殊的值FileNotFoundException文件无法找到IOException某种类型的I/O异常发生InterruptedIOExceptionI/O操作被终断4、测试分析4.1编写目的主要目的是为了能够更方便的帮助大学老师分析一个教学班的考试结果而设计的程序。4.2背景说明被测试程序的名称:学生成绩分析程序测试环境与实际运行环境之间存在一些差异造成使用不方便,如全班学生的成绩必须要放在记事本文档中,而不能从Excell中读取3。4.3术语变量、数组、类、构造方法、主函数、输入输出缓冲流、引用。4.4参考资料 Java中的构造方法、异常类。4.5分析摘要本程序主要用于学生成绩的简单分析,包括数据的读取、结果的输出、文件的建立等功能。通过该程序的开发,基本上实现了一个教学班的成绩分析的的功能,能够计算出一些常用的结果,并且符合需求。本程序采用MyEclipse6.0.1作为开发工具,设计步骤采用自顶向下的方法4。 4.6评价该程序已经达到了基本的使用要求,但是还不够完善,需要进行进一步的改善。5、源程序清单 public class T7_ScoreOfStudent :这是整个程序的主类,类是面向对象的程序基本构件。一个程序可以包含许多类,这些类之间的结构就构成程序的主要框架。 static class Reader:这是这个程序中的唯一一个静态类,该程序的所有运算都是在这个类的下面实现的,然后在主函数中new译个这个类的对象,再利用这个对象调用构造方法来执行所有的运算。 public void Reader():是构造方法,在该方法中实现了数据的读取、计算分析和和最后的结果数据保存。BufferedReader in=new BufferedReader(new FileReader(D:javachengji.txt):运用缓冲流来读取文件中的数据。 Integer.parseInt(str1i):该方法是将String类型的形参转化成整型,读取数据的时候是以字符串的形式读取的,通过该函数的调用,输出时就以数值的形式输出。Scanner in3 = new Scanner(System.in):输入要保存的文件名,不包含括扩展名。pw.write(各分数段的人数分布如下:rn):在记事本中显示所得结果。6、 课程设计总结 6.1心得体会经过两个多星期的努力,我基本上完成我的Java课程设计简单的学生成绩分析程序,也基本上实现了我在需求分析时所预期的功能。通过这次的课程设计,使将我从书本上学习到的理论知识用到了实践上,从而进一步巩固和丰富了我所学过的知识,让我更深层次地认识到Java及其强大的功能。同时,做这门课程设计也进一步加强了我的动手能力。为了完成好这次课程设计,我提前做了较多的准备,一边上网查找相关资料,另一方面查阅相关书籍。在这过程中也无形中锻炼了我的思维分析、遇到问题及想方设法通过各种途径解决问题的能力。6.2设计过程中的难点和存在的问题在设计过程中的难点是不能够熟练使用GUI界面5来设计更好的功能,比如在需要某些信息时可通过点击相应的按钮来显示在界面,那样具有实用性;存在的问题是程序思路不够清晰,比较混乱繁琐,本来一开始想从excel表格中读取数据,但是由于本人知识浅陋以及各种其他原因,使得这些想法没有实现,这是这次课程设计的一点遗憾。7、参考文献1.孙全党 赵枫朝. Java程序设计应用教程. 北京:电子工业出版社,2006年2月2.雷之宇. Java项目开发实践网络篇. 北京:中国铁道出版社,2005年5月3.赵玉阳. Java从入门到精通. 北京:清华大学出版社,2006年8月 4.李茏怡. Java编程实例讲解. 北京:高等教育出版社,2005年11月5.朱福喜. 面向对象与Java程序设计. 北京:清华大学出版社,2009年3月指导教师评语及成绩指导教师评语 成绩 导师签字: 年 月 日 8、附录8.1完整代码package MyPackage;import java.io.*;import java.util.Scanner;public class T7_ScoreOfStudent static int N=30;/班级人数static int R=5;/文本文件中所有成绩所占的行数static String str1=new StringN;/定义String数组用来保存全班学生的成绩static class Readerint k=0,max=0,min=100;double sum = 0;double average = 0;String str2=null;public void Reader()T7_ScoreOfStudent a=new T7_ScoreOfStudent();tryBufferedReader in=new BufferedReader(new FileReader(D:javachengji.txt);/读取字符文件for(int i=0;iR;i+)int j=0;if(str2=in.readLine()!=null)/根据所读取的一行文本去操作System.out.println(str2);while(jstr2.length() a.str1k=str2.substring(j, j+2); j=j+3;k+; in.close();catch(IOException e)/捕获IO异常e.printStackTrace();/求平均成绩for (int i = 0; i N; i+) sum += Integer.parseInt(str1i);average = sum / N;/求最高成绩int max = Integer.parseInt(str10);for (int i = 0; i max)max = Integer.parseInt(str1i);/求最低成绩int min = Integer.parseInt(str10);for (int i = 0; i N; i+) if (Integer.parseInt(str1i) min)min = Integer.parseInt(str1i); /求个分数段的人数int n1 = 0,n2 = 0,n3 = 0,n4 = 0,n5=0,n6=0;for (int i = 0; i = 0 & Score =60& Score=70 & Score =80&Score =90&Score= 60)n6+;dou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论