Java课程设计--奖学金评定.docx

上传人:夺命阿水 文档编号:900966 上传时间:2024-01-10 格式:DOCX 页数:18 大小:120.05KB
返回 下载 相关 举报
Java课程设计--奖学金评定.docx_第1页
第1页 / 共18页
Java课程设计--奖学金评定.docx_第2页
第2页 / 共18页
Java课程设计--奖学金评定.docx_第3页
第3页 / 共18页
Java课程设计--奖学金评定.docx_第4页
第4页 / 共18页
Java课程设计--奖学金评定.docx_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《Java课程设计--奖学金评定.docx》由会员分享,可在线阅读,更多相关《Java课程设计--奖学金评定.docx(18页珍藏版)》请在课桌文档上搜索。

1、第1章课题概述1Ll课题的目的11.2课题的要求11. 2.1系统的性能需求1L2.2系统的功能需求1第2章概要设计21 .1整个程序的模块结构及流程22 .2各个功能模块的描述22. 2.1编辑信息22. 4.2查询信息23. 4.3统计信息22. 4.4获奖信息3第3章程序功能的实现43. 1主要功能模块的实现43. 1.1编辑信息的实现43. 1.2查询信息的实现44. 1.3统计信息的实现73.1.4获奖信息的实现8第4章调试及发现问题的解决H第5章程序测试及分析12第6章总结16参考文献17第1章课题概述本次java课程设计的题目是以本校学生手册中奖学金的评定办法为背景,设计的一个学

2、生奖学金评定系统。Ll课题的目的奖学金管理工作是高校学生管理工作的重要组成部分。高校为鼓励学生在校期间刻苦学习,设立了多种奖学金,同时为了做好奖学金的评审与管理工作,投入了大量的人力、物力和财力。奖学金管理工作特别是评审工作具有涉及面广、工作量大、发生时间相对集中的特点。高校的奖学金评定工作每学年都要开展,传统的评审工作主要是以手工方式进行的,存在着效率地下、容易出错等弊端。因此,实现奖学金评定管理的信息化是十分必要的。1.2课题的要求1.2.1 系统的性能需求由于对系统中学生的基本信息,学习成绩等,不允许随意增加、修改和删除,因此在系统设计中主要是保证系统的可行性,并在保证可行性的前提下满足

3、数据录入的准确性和高效性。1、准确性:为确保数据录入的准确性,系统提出了采取双工录入比较法和多次校对来确保录入数据正确性的策略。2、高效性:系统设计要能高效的完成对学生基本信息和学科成绩进行录入。3、可行性:对学生成绩的录入与管理系统要能够及时对重要的数据进行备份,当数据遭到灾难性的毁坏后能及时重建和恢复。对学生成绩和信息的录入与管理系统是通过信息的正确录入,在系统内进行分析处理输出新的信息并利用反馈信息对相关事物进行有效控制的具有一定特殊功能的人机交互系统。1.2. 2系统的功能需求设计一个奖学金评定系统,该系统要能够进行信息和成绩的录入、修改、删除、查询。具体功能需求如下:1、由于大多数系

4、统操作人员的都是非计算机专业,要求系统要有良好的人机界面;2、能对学生成绩进行准确、高效的录入、校对和分析,并支持多条件查询与修改;3、能够及时地对重要数据进行备份和恢复,方便的导出数据文件;4、数据操作方便简单,稳定性好,数据计算及成绩分析要能够自动完成。第2章概要设计1. 1整个程序的模块结构及流程根据课题要求,奖学金评定系统由编辑信息、查询信息、统计信息、获奖信息四大模块组成。程序各功能模块的划分,及主要流程如图2-1所示。图2-1整个程序各功能模块间的流程2. 2各个功能模块的描述3. 2.1编辑信息输入学生信息并以文件SCOre.dat保存,具有输入新增学生基本信息,学生学科成绩,以

5、及成绩的添加、删除和修改的功能。4. 4.2查询信息可以按学号或姓名查询某学生的所有成绩,以及按学号或姓名修改指定学生的相关成绩。5. 4.3统计信息(1)具有能够读取Score.dat文件并显示所有学生的所有成绩的功能;(2)具有显示输出60分以下、6079、8089、90分以上各分数段的学生信息的功能。2.4.4获奖信息(1)具有按各门课程的学分和分数计算所有同学的绩点,并根据绩点排名得出各等级奖学金的名单的功能;(2)具有将各等级奖学金获得者的名单写入文件Bonus.dat的功能。第3章程序功能的实现3.1 主要功能模块的实现3.1.1 编辑信息的实现此模块具有三个功能,能够新增学生信息

6、,删除学生信息,修改学生信息、,新增学生,通过自己的输入,把相关的数据写入指定的文件中,需要用到对流的操作,在写入文件前,需要先保存到自己定义的集合里,再把集合的数据全部写入文件进行保存,修改信息,删除信息也是如此。新增学生信息的代码实现如下:publicvoidactionPerformed(ActionEvente)if(e.getSource()=confirm)Stringclassno=Classnotf.getTet();Stringstuid=Stuidtf.getText();Stringname=nametf.getText();Stringclan=cIantf.getTe

7、xt();Stringmath=mathtf.getText();StringEnglish=Englishtf.getTet();Stringphysics=physicstf.getTet();Stringmaphil=maphiltf.getText();s=newStUdent(CIaSSno,stuid,name,clanjmath,Englishjphysicsjmaphil);Classnotf.setTet();StuidtfsetText();nametf.setTet();clantf.setTet();mathtf.setTet();Englishtf.setTet();

8、physicstf.setTet();maxphiltf.setTet();List.add(s);sve();elseif(e.getSource()=save)this.dispose();)3.1.2 查询信息的实现查询信息中有两大功能,一个是根据指定的学号和姓名,查询其相关的各项成绩以及及其绩点。这是自己输入的学号和姓名,与集合中的对应的数据进行对比,当发现一致时,就输出其成绩与绩点。另一个是根据自己输入的学号姓名,对其相关的成绩进行修改,如果一项成绩需要修改,就在集合中修改指定的数据,其他不改变,结束后,在把集合中的数据全部写入到文件中。查询成绩与绩点的代码实现如下:publicvo

9、idactionPerformed(ActionEvente)ArrayListlist=InternalFrame.list;Strings=null;Stringclangrade=null;Stringmathgrade=null;StringEnglishgrade=null;Stringphysicsgrade=null;Stringmaphilgrade=null;if(e.getSource()=confirm)for(inti=0;ilist.size();i+)if(jtf2.getTet().equals(list.get(i).stuid)IIjtf3.getText()

10、.equals(list.get(i).name)s=C语言:+list.get(i).clan+“t高数:”+list.get(i).math+“t大英:“+list.get(i).English+”t大物+list.get(i).physics+,t马哲:“+list.get(i).maphil;list.get(i).calgrade();Doubleclanl=Double.valuef(list.get(i).clangrade);Doublemathl=Double.valuef(list.get(i).mathgrade);DoubleEnglishl=Double.valuef

11、(list.get(i).Englishgrade);Doublephysicsl=Double.valuef(list.get(i).physicsgrade);Doublemaphill=Double.valuef(list.get(i).maphilgrade);clangrade=clanl.toString();mathgrade=mathl.toString();Englishgrade=Englishl.toString();physicsgrade=physicsl.toString();maphilgrade=maphill.toString();jtf4.setText(,

12、ci三W:+clangrade+mathgrade+”t大英:+Englishgrade+,t大物:”+physicsgrade+t马哲:+maxphilgrade);jtf4.setEditable(false);jtf4.setEditable(false);jtfl.setEditable(false);jtfl.setText(s);jtfl.setEditable(false);)修改个人成绩的代码实现如下:publicvoidactionPerformed(ActionEvente)ArrayListlist=InternalFrame.list;Stringm=确定要修改该学生成

13、绩吗?”;if(e.getSource()=confirm)intok=JOptionPane.ShowConfirmDialog(this,m,确认”,JOptionPane.YES_NO_OPTIONJJOptionPane.QUESTION_MESSAGE);if(ok=JOptionPane.YES_OPTION)Stringclan=clantf.getText();Stringmath=mathtf.getText();StringEnglish=Englishtf.getTet();Stringphysics=physicstf.getText();Stringmaphil=ma

14、xphiltf.getTet();for(inti=0;ilist.size();i+)if(nametf.getText().equals(list.get(i).classno)IIstuidtf.getText().equals(list.get(i).stuid)if(!clan.trim().equals()list.get(i).clan=clan;)if(!math.trim().equals()list.get(i).math=math;)if(!English,trim().equals(,)list.get(i).English=English;)if(!physics.t

15、rim().equals()list.get(i).physics=physics;)if(!maphil.trim().equals()list.get(i).maphil=maphil;)list.get(i).calgrade();InternalFrame.save();)try(setClosed(true);catch(PropertyVetoExceptionel)el.printStackTrace();)elseclantf.setText();mathtf.setText(,);Englishtf.setText();Physicstf.setText();maxphilt

16、f.setText();)3.1.3 统计信息的实现统计信息之中具有显示所有学生成绩,以及各项科目各分数段的人的相关信息。显示所有学生的成绩时,利用集合,把集合中的各个学生的成绩输出来,同样在统计各分数段的人的相关信息也是从集合中的对象的属性中获取。显示所有学生成绩的代码实现如下:publicShowInternalFrame(Stringtitle)super();setTitle(title);setBounds(50j20,700,500);SetResizable(true);setClosable(true);setlconifiable(true);SetMaXimiZabIe(t

17、rue);list=InternalFrame.list;jp=new3Panel(newGridLayout(list.size()j1,1,1);Strings=“班级学号“姓名JC语言“,”高数“,”大英J大物”J马哲);Stringss=newStringlist.size()s.length;JTablejt;for(inti=0;ilist.size();i+)ssi0=list.get(i).classno;ssil=list.get(i).stuid;ssi2=list.get(i).name;ssi3=Iistget(i)clan;ssi4=list.get(i).math;

18、ssi5=listget(i)physics;ssi6=listget(i)-English;ssi7=list.get(i).maxphil;)jt=new3Table(ss,s);jsp=newJScrollPane(jt);jsp.SetverticaiscrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);this.add(jsp);setVisible(true);)3.1.4 获奖信息的实现获奖信息中主要是得到各等奖的名单,通过比较每个学生的绩点,进行排名,根据人数的比例,计算各等奖的人数,在根据排名确定人选,这些获奖人的信息依

19、然是在集合中得到的。(1)获奖名单的主体代码实现如下:publicAwardInternalFrame(Stringtitle)super();setTitle(title);setBounds(50,20,650,500);SetResizable(true);setClosable(true);setlconifiable(true);setMaximizable(true);jll=newJLabe1(“一等奖:”);jl2=newJLabe1(“二等奖:“);jl3=newJLabe1(“三等奖:“);jtal=newJTextArea(8,50);jta2=newJTeXtArea(

20、8,50);jta3=newJTextArea(8,50);jp=new3Panel(newGridLayout(3,1,li1);jpl=newJPanel();jp2=newJPanel();jp3=newJPanel();list=(ArrayList)InternalFrame.list.clone();grade=newdoublelist.size();for(inti=0;ilist.size();i+)list.get(i).calgrade();gradei=list.get(i).allgrade;)nolnum=list.size()*0.05;no2num=list.s

21、ize()*0.1;no3num=list.size()*0.15;bdl=newBigDecimal(nolnum).setScale(0,BigDecimal.ROUND_HALF_UP);bd2=newBigDecimal(no2num).setScale(0jBigDecimal.ROUND_HALF_UP);bd3=newBigDecimal(no3num).setScale(0,BigDecimal.ROUND_HALF_UP);bdlint=bdl.intValue();bd2int=bd2.intValue();bd3int=bd3.intValue();Arrays.sort

22、(grade);for(inti=0;ibdlint;i+)gradenol=gradelist.size()-1;for(intj=0;jlist.size();j+)if(gradenol=list.get(j).allgrade)jtagrl+=list.get(j).getinf();list.remove(j);break;)for(inti=0;ibd2int;i+)gradeno2=gradelist.size()-1;for(intj=0;jlist.size();j+)if(gradeno2=list.get(j).allgrade)jtagr2+=list.get(j).g

23、etinf();list.remove(j);break;)for(inti=0;ibd3int;i+)gradeno3=gradelist.size()-1;for(intj=0;j37314129巴德827952857?141210杰斯53927869j88141211泰隆87897278|64141212亚索7089648855141213侵伦58678192I66141214麓91689088;75141215波比66607880田8141216赵信78768357(79141217李青8083508971141218番森67598173|74141219贾克斯919578848514

24、1220菲奥娜75709189|66141221茸皇99999999|99141223张山3223222222141225张三60709080100图5-5显示所有学生信息统计信息过程中的显示C语言各个分数段的信息功能界面,过程如图5-6所示。BC语言各分款段学生信息口 Er区60以下:班级:1412姓名劫字号2然1412姓名:库奇字号:6; 级1412姓名:波比字号15:级1412姓名:菲奥娜字号20:班级:1412姓名薇恩字号:4;班级:1412姓名迦那学号:7;班级:1412姓名赵信学号:16:班级:1412姓名:张三学号:25;班级:1412姓名:艾希字号:5:班级1412姓名亚索字号

25、:12;班级1412姓名潘森字号:18;.班班班O:1412姓名娜美字号8班级:1412姓名:杰斯学号:10:班级:1412姓名:盖伦字号:13;班级1412姓名张山字号23;班级:1412姓名易学号1班级:1412姓者慎学号:3;班缴1412姓名巴德字号9班级1412姓名:泰隆字号11:班级:1412姓名:李青学号:17;.班级1412姓名:瑞雯学号14;班级:1412姓名贾克斯字号:19;班级:1412姓名满皇字号:21:90以上:获奖信息中的获奖名单的功能界面,过程如图5-7所示。旦_躲奖名单:口Fli班级:1412姓名:落皇学号21;班级:1412姓名:贾克斯学号:19;班级:1412

26、姓名瑞雯学号:14:二等奖:班级1412姓名易学号1;班缴1412姓名泰隆学号:11.班缎1412姓名菲奥娜字号20:图5-7获奖名单第6章总结通过二周的课程设计,终于独立写出了超过一千多行代码的程序,还学会了如何实现图形界面,学会了如何正确地布局,正确运用了集合与流的操作。总结起来,主要有以下几点体会:1、要想做好这个课程设计,程序设计语言的基础一定要扎实。良好的程序设计语言基础是写出一个完满的程序的保证。程序语言设计的基础的高低关系到课程设计任务能否顺利完成。2、程序的编写过程,不能一蹴而就,它应该是一个循环渐进,不断完善直至完美的过程,编写程序,特别是编写功能庞大,不要妄想一口气将所有的

27、功能都非常完美地实现。一般是先将整个程序的框架先搭建起来,然后分出各个功能模块,各个功能模块单独地实现其中的方法,每个模块中有时需要多个类,之中需要建立起相关的联系。3、不仅要用严谨细致的态度去编写程序,而且要有足够的耐心去调试程序;测试程序时,应重点关注边界条件和特殊细节。绝大多数程序不是只要编写完就能运行,所以当程序编写完一定要进行细地测试。如果发现测试结果不对或不够完美,则需要沉下心来,仔细检查程序中的每一个环节和漏洞。测试和调试程序时不能有懒惰思想。比如在奖学金评定的调试过程中,我在编写程序的过程中,刚开始就并没有考虑到当我没有输入信息时,系统需要给我提示或者在输入相同的信息时,系统给

28、我相关的提示,还有就是在查询信息时,当输入并不存在的信息时,系统自动给我一个警告的提示。这些问题都是程序的测试阶段才逐步发现并逐步解决的。4、养成良好的学习态度和学习习惯,培养正确的学习方法。编写复杂的计算机程序必须学会独立思考,不懂的地方可以上网或到图书馆查阅资料,遇到实在无法理解或解决的问题时,要主动向老师请教。对于任何一个程序功能,不仅能够基本地完成实现,还能够对于可能会产生的异常可以产生相应的提示,进行及时地纠正与调整,亦即保证程序的健壮性。最后,感谢在此过程中帮助过我的指导老师和各位同学!参考文献1张跃平,JAVA实用教程,清华大学出版社,20062李鑫,黄卓,戴金波,王胜峰.课程设计案例精编M.北京:中国水利水电出版社,2006.3周之英编著,现代软件工程,科学出版社,20034邵丽萍,JAVA语言程序设计,清华大学,2006.

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

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号