java课程设计报告-学生考勤系统的设计和实现_第1页
java课程设计报告-学生考勤系统的设计和实现_第2页
java课程设计报告-学生考勤系统的设计和实现_第3页
java课程设计报告-学生考勤系统的设计和实现_第4页
java课程设计报告-学生考勤系统的设计和实现_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、 JAVA 程序设计课程设计报告书学生考勤系统的设计和实现提交日期:2010 年 12 月1 目 录摘 要-3一、 前言-3二、设计分析-3三、实现方法-4四、调试问题,调试记录及解决-4五、系统的使用说明书-5六、结论-5致谢-5附 录-62 学生考勤系统的设计和实现摘 要:我这次的课程设计是学生考勤系统的设计和实现。具有如下功能:1、根据教师提供的 excel 考勤文件夹,统计学生出勤次数,缺勤次数,出勤分数(设考勤次数为 N 次,满勤为 100 分,缺勤 1 次扣总分的 1/N),并按分数排序。2、统计结果在屏幕上显示出来,并保存到文本文件.txt 之中。为了完成上述功能,我采用了 ja

2、va 语言,用一个 Student 类数组专门存储学生的每个学生的出勤信息,包括姓名,出勤次数,出勤分数。具体使用了 JFrame,JButton 等组件。最终我成功的完成了具有以上功能的一个小系统。该系统具有了一个较为简单的界面。在这次课程设计的过程中我第一次尝试了写图形界面系统,虽然最终系统不是很完美,但我的收获也不小。在整个过程中我熟悉了文件输入输出,类的使用,接口实现等技术,并成功的应用。总之这次课程设计让我受益颇丰。关键词:课程设计;功能;系统;函数;图形界面;一、前言本次课程设计我选的是学生考勤系统的设计和实现。刚开始看到这个题我大意的认为这个题很简单,用一些文件操作就可以完成。但

3、动笔写后才发现也不是那么简单。使得我只能小心翼翼的去写去学。总之在这次课程设计中,与其说我是在写这个系统不如说我是在学着写这个系统。二、设计分析我拿到的这个课题从名称上就可以看出来是一个统计出勤次数的系统,它的要求如下:具有如下功能:1、根据教师提供的 excel 考勤文件夹,统计学生出勤次数,缺勤次数,出勤分数(设考勤次数为 N 次,满勤为 100 分,缺勤 1 次扣总分的 1/N),并按分数排序。2、统计结果在屏幕上显示出来,并保存到文本文件.txt 之中。经过分析我知道这个系统其实就是要我们将提供给我们的数据文件,通过遍历搜索匹配来统计出各位同学的总共出勤次数并换算成出勤分数,具体显示出

4、选手的姓名、出勤次数、缺勤次数、出勤分数。而我在整个系统的制作过程中要做的和能得3 到的就是熟练地使用文件输入输出、学会读取数据的技巧,并用严密的思维保证统计的成功。三、实现方法这个系统我采用了 java 语言,用 MyEclipse 完成。我设计了以下类:StudentAttendStatistics /继承 JFrame 并实现相关功能Student/存储每位同学的信息MyCompare/实现了 Arrays 中的 java.util.Comparator 接口在 StudentAttendStatistics 中,主要实现的功能有对点名文件的读取、统计数据、对数据进行处理得到分数、然后按

5、照分数排序、最后显示统计后的结果并将结果保存到 txt 文件中。首先对于数据的处理,对于一个信息的多元素问题我采用类数组存储来解决。并给该数组开了 1000 个空间。在数据的读入时,我遇到了一定的困难,看到点名文件里正常数据每一行都是三个部分,于是我采用分割一行一行的数据,并分辨该行信息是否具有完整的三部分来判断该信息是否为有效信息,并将有效数据的学生姓名赋值给name,这样就完成了数据的读入。然后是保存信息为文件,指定保存的文件格式为 txt格式,在读取数据的文件夹和保存统计结果的文件夹采用的 JFileChooser 类的相关功能。随后是对分数的排序,排序时选用的 Arrays.sort(

6、),并实现了 java.util.Comparator 接口。在设计系统的时候,首先在选择界面时,我简单的使用了 JFrame 框架构建了一个简单的界面。在界面里简单的设计了几个标签和几个按钮,并注册监听器对按钮需要实现的功能进行设计。我还导入了java.awt.Color 类,对显示面板的背景颜色以及字体颜色进行设计,是界面更加美观。四、调试问题,调试记录及解决1 取出的数据有误,采用了判断消息是否有效的方式解决。2 JTextArea 与 JScrollPane 结合后 bounds 的设置,发现只要设置 JScrollPane即可。JFileChooser.FILES_AND_DIREC

7、TORIES 就可以实现同时可以选定文件夹和文件。五、系统的使用说明书4 1.功能该系统是针对老师提供的考勤文件存放的文件夹来进行统计。具有如下功能:1)根据教师提供的 excel 考勤文件夹,统计学生出勤次数,缺勤次数,出勤分数(设考勤次数为 N 次,满勤为 100 分,缺勤 1 次扣总分的 1/N),并按分数排序。2)统计结果在屏幕上显示出来,并保存到文本文件.txt 之中。2.使用方法:1.启动系统2.点第一个浏览选定考勤情况文件的文件夹.3点第二个浏览得到考勤情况统计文件存储路径,文件名可以写.txt 后缀不写的话会自动添加。4.选择过后,点统计就会在文本区域中显示结果并在制定文件路径

8、产生结果文件。5可以重新统计或者点退出退出系统。六、结论完成了这个课题设计,同时我感觉自己的系统设计道路才刚刚起步。前方还有更多的任务等着我去完成。系统设计对我来说还是比较陌生的,在未来的日子里我一定会一点点的进步。该系统现在时能完成老师对考勤情况统计的要求。而经过修改后就能完成更多的统计任务。相信使用得当能给我的学习生活带来便利。5 附录:系统源代码class Mycompare implements java.util.Comparator public int compare(Object o1, Object o2) Student a1 = (Student) o1;Student

9、a2 = (Student) o2;return a1.scorea2.score?1:-1;public class StudentString Sname;int Time;double score;public Student(String name)Sname=name;Time=1;score=100;import java.awt.Color;import java.awt.event.*;import java.io.*;import java.util.*;import javax.swing.*;public class StudentAttendStatistics ext

10、ends JFrameprivate JTextArea jta;private static int stucount=0;private JFileChooser fileChooser;private File dir,save;private Student stu;private int N;public StudentAttendStatistics() throws Exceptionthis.setTitle(考勤情况统计系统);fileChooser=new JFileChooser();fileChooser.setCurrentDirectory(new File(.);

11、/设置当前目录6 fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES/设置 JFileChooser,以允许用户只选择文件、只选择目录,或者可选择文);件和目录。this.setBounds(400,100,500 ,650);this.setLayout(null);/设置布局JLabel jla=new JLabel(请输入你要统计文件所在的文件夹);jla.setBounds(0, 0, 200, 20);this.add(jla);JButton jb=new JButton(浏览);jb.setBou

12、nds(200,0,150,20);jb.addActionListener(new ActionListener()public void actionPerformed(ActionEvent event)tryint res=fileChooser.showOpenDialog(null);/弹出一个Open File 文件选择器对话框。if (res = JFileChooser.APPROVE_OPTION)/选择确认(yes、ok)后返回该值。dir=newFile(fileChooser.getSelectedFile().getPath();/返回选中的文件,将此抽象路径名转换

13、为一个路径名字符串。stu=new Student1000;String str;str=dir.list();/返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。N=str.length;/需要统计的文件的个数/System.out.println(N);for(int i=0;istr.length;+i)File F=new File(dir,stri);/System.out.println(F.toString();BufferedReader br=new BufferedReader(newFileReader(F);String line;while(br.r

14、eady()/判断此流是否已准备好被读取。如7 果缓冲区不为空,或者基础字符流已准备就绪,则缓冲的字符流准备就绪。line=br.readLine();/读取一个文本行。StringTokenizer record=newStringTokenizer(line,);/字符串分词器if (record.countTokens()=3) /选择有效记录record.nextToken();String name=record.nextToken();int j;for(j=0;jstucount;+j)if (stuj.Sname.equals(name)stuj.Time+;break;if

15、(j=stucount)stustucount+=new Student(name);/System.out.println(name);br.close();catch(Exception e)e.printStackTrace(););this.add(jb);JLabel jla1=new JLabel(保存路径设定);jla1.setBounds(0,25,200,20);this.add(jla1);JButton jb1=new JButton(浏览);8 jb1.setBounds(200,25,150,20);jb1.addActionListener(new ActionLi

16、stener()public void actionPerformed(ActionEvent event)tryint res=fileChooser.showSaveDialog(null);if (res=fileChooser.APPROVE_OPTION)Stringpath=fileChooser.getSelectedFile().getPath();if (path.indexOf(.txt)=-1)path+=.txt;save=new File(path);catch(Exception e)e.printStackTrace(););this.add(jb1);JButt

17、on jb2=new JButton(统计);jb2.setBounds(400,0,100,20);jb2.addActionListener(new ActionListener()public void actionPerformed(ActionEvent event)tryfor(int i=0;istucount;+i)stui.score=(stui.Time)/(double)N)*100;Arrays.sort(stu,0,stucount,new Mycompare();/File savepath=new File(save,考勤统计情况.txt);PrintWriter

18、 pw=new PrintWriter(new BufferedWriter(newFileWriter(save);/向文本输出流打印对象的格式化表示形式。java.text.DecimalFormat df=newjava.text.DecimalFormat(0.00);pw.println(考勤统计情况:);9 for(int i=0;istucount;+i)/System.out.println(t 姓名:+stui.Sname+t 出勤次数:+stui.Time+t 缺勤次数: +(N-stui.Time)+t 出勤分数:+df.format(stui.score);jta.append(姓名:+stui.Sname+t 出勤次数:+stui.Time+t 缺勤次数: +(N-stui.Time)+t 出勤分数:+df.format(stui.score)+n);pw.println(姓名:+stui.Sname+t 出勤次数:+stui.Time+t 缺勤次数: +(N-stui.Time)+t 出勤分数:+df.format(stui.score);pw.close();catch(Exception e)e.pr

温馨提示

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

最新文档

评论

0/150

提交评论