java学生成绩管理程序课程设计.doc_第1页
java学生成绩管理程序课程设计.doc_第2页
java学生成绩管理程序课程设计.doc_第3页
java学生成绩管理程序课程设计.doc_第4页
java学生成绩管理程序课程设计.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

高级语言程序设计(2)课程设计任务书题 目学生成绩管理程序 学生姓名黄涛学号201001030126专业班级数学1001设计内容与要求【问题描述】 本学期我班共有6门课程,期末要对每个学生的成绩进行统计处理。每个学生都有相同的信息,适合用java的类来描述。student包含的信息有学号、姓名和6科成绩(初等数论、经济学、数值计算、思政原理、java语言和抽象代数)。定义一个student类创建对应方法,实现对student对象的操作(增、删、改、查询、成绩排序、成绩统计等功能)供其对象调用。前者可以定义为student类的成员变量,后者可以定义为student类的成员函数。【软件功能】1. 定义student类。2. 能进行学生信息和各科成绩信息的录入。3. 能进行对student对象的操作(增、删、改、查询、成绩排序、成绩统计等功能)。5. 利用swing实现良好的gui界面。6. 能响应鼠标或者键盘事件。【基本要求】1. 对student对象的操作(增、删、改、查询、成绩排序、成绩统计等功能)依靠编写的成员方法实现。2. 采用用户界面采用图形用户界面,响应鼠标事件。3. 编写主方法,对所编写的student类进行全面测试。需要输入的student数据通过键盘输入,同时显示在屏幕上。得到的处理结果数据通过i/o流写入磁盘文件保存,同时显示在屏幕上。4. 源程序中要有充分的注释,报告中要有详细的流程图和文字材料。5. 运行的结果以及图形用户界面要进行屏幕拷贝,插入报告中。【提交成果】1. “高级语言程序设计(2)课程设计任务书”和“高级语言程序设计(2)课程设计报告”打印件各一份;2. 先将上面两项内容的word文档,通过电子邮件交到指导教师,待许可后,打印装袋。起止时间2012 年 12 月 24 日 至 2012 年12月 30 日指导教师签名李元觉 2012年 12 月 22 日系(教研室)主任签名郝华宁 2012 年 12月 22 日学生签名年 月 日高级语言程序设计(2)课程设计报告 专业:数学与应用数学 班级:数学1001 学号:201001030126 姓名: 黄涛 完成日期:2012.12.30 指导教师:李元觉1、 程序设计说明书【设计题目】 学生成绩管理程序 【问题描述】 本学期我班共有6门课程,期末要对每个学生的成绩进行统计处理。每个学生都有相同的信息,适合用java的类来描述。student包含的信息有学号、姓名和6科成绩(初等数论、经济学、数值计算、思政原理、java语言和抽象代数)。定义一个student类创建对应方法,实现对student对象的操作(增、删、改、查询、成绩排序、成绩统计等功能)供其对象调用。前者可以定义为student类的成员变量,后者可以定义为student类的成员函数。【软件功能】1. 定义student类。2. 能进行学生信息和各科成绩信息的录入。3. 能进行对student对象的操作(增、删、改、查询、成绩排序、成绩统计等功能)。5. 利用swing实现良好的gui界面。6. 能响应鼠标或者键盘事件。7. 为学成成绩信息建立文件操作信息管理和相应的文件源,可以方便的调用上一保存的数据。还可以对数据进行其他操作。【算法思想】 1. 创建student类,把学生的信息和成绩通过这个类对应到每个学生。既把学生的基本情况封装到这个student类中。2. 创建变长数组列表arraylist ,将所有的学生信息按每个人为单位放入到这个数组中,利用数组的循环便于对学生成绩的各种操作。3. 创建stuc类,student管理类stuc创建对应方法,实现对student对象的操作(增、删、改、查询、成绩排序、成绩统计等功能)供其对象调用。既把所有的对学生成绩的操作处理方法封装到这个类中。4. 创建文件流对信息的输入输出管理。保存上次进行操作的信息,为程序建立存贮的数据源,可以方便的调用和修改。5. 为登陆界面插入图片用mypanel1的类来实现,为教师主界面和学生主界面添加图片背景。6. 把每个学生的信息看成是一个一维数组,通过对每个学生数组的每门课程成绩的访问求出每个人的总成绩。7. 利用每个学生的总成绩利用冒泡排序法对学生的成绩从高到底排序,统计输出时按新排好的成绩由高到低输出统计结果。【类的设计】1. student类student属性: name(姓名) num(学号) shulun(初等数论成绩) jingji(经济学成绩) shuzhi(数值计算方法成绩) sizheng(思政概论成绩) java(java成绩) daishu(近世代数成绩) sum(成绩总和)操作: student(),getname(),setname(string name),getnum(),setnum(),getshulun(),setshulun(),getjingji(),setjingji(int jingji),getshuzhi(),setshuzhi(int shuzhi),getjava(),setjava(int java),getdaishu(),getsum(),setdaishu(int daishu),setsum(int sum),getsizheng(),setsizheng(int sizheng) 2. stuc类,student管理类stuc创建对应方法,实现对student对象的操作(增、删、改、查询、持久化、成绩排序、成绩统计等功能)供其对象调用。stuc属性: al(学生类数组arraylist al=new arraylist();) file(文件)操作: adds(student s)(将学生s添加到数组al中去),del(int n),sum(),sort()(实现排序功能),tostring(),paint(),stor()(输出流),read(),student find(int n)3. login类,登陆界面要求输入登陆者输入用户名和密码,分别设教师登陆和学生登陆两个登陆选项。login属性: 用户名 密码 退出登陆 教师登陆 学生登陆操作:teacherenter(),studententer(),close()4. teachermainform类,教师登陆主界面teachermainform属性:增加 查询 修改 删除 统计 保存 退出操作:actionperformed(actionevent e)(按钮事件响应) shutdown()(保存)5. studentmainform类,学生登陆进入主界面,窗口通过菜单只能实现学生成绩的查询功能,其他功能权限被限制。6. addfi类,学生成绩添加类权限仅限用于教师可见可操作,在此类中教师可以添加学生成绩信息。7. delet类,学生成绩删除类权限仅限于教师可见可操作,教师通过此类可以对学生成绩信息做删除处理。8. xiugai类,学生成绩修改类权限仅限于教师可见可操作,教师通过此类可对学生的成绩基本情况进行修改。9. sidfind类,按学生学号查询学生成绩类权限对教师和学生都可见可操作,学生和教师可以通过学生学号对学生的基本成绩进行查询。10.tongji类,统计类是班级学生总体成绩及依据总分大小排名情况的统计,权限仅限于教师。【用户界面】1. 用户登录界面2. 教师主界面 3.学生主界面 【程序技巧】1. 设置登录界面,需要用户名和相符的密码才能进入,设置了访问权限。2. 为不同的用户设置不同的登陆界面,既保证了权限又方便了用户的需求。3. 教师主界面采用窗体菜单和按钮结合的组合界面,将主要功能按钮放在窗口上便于操作,并为每个主要功能按钮添加了按钮图片和注释,视窗美观易操作。4. 介于学生窗口的权限限制,专门为学生创建学生界面,学生界面只有访问权没有管理操作权。符合生活实际需要。5. 程序创建student类,创建arraylist 数组列表对学生类中的信息进行存储,student管理类stuc的创建对学生信息的管理。6. 采用文件io流,对数据进行保存。7. 用类将所有的功能封装成为一个公用类,通过主类对其他类进行调用。【模块划分及调用关系】1. 模块划分:程序开始系统登陆教师登陆退出登陆学生登陆增加查询成绩查询退出修改删除退出保存统计退出程序程序结束2. 主要模块之间的调用关系及各自功能:(1)主要模块1模块一:登录模块2模块二:教师登陆模块3模块三:学生登陆模块4模块四:学生成绩添加模块5模块五:学生成绩查询模块6模块六:学生成绩修改模块7模块七:学生成绩删除模块8模块八:学生成绩统计模块9模块九:退出模块登陆模块模块一10模块十:保存模块 (2)模块调用关系如下图学生登陆模块模块三教师登陆模块模块二退出模块模块九成绩查询模块模块五保存模块模块十成绩统计模块模块八成绩添加模块模块四成绩修改模块模块六成绩删除模块模块七【模块流程图】 1. 登陆模块流程图开始输入用户名密码选择登陆选项退出登陆教师登陆学生登陆结束2. 教师主界面模块流程图开始教师主界面退出统计修改删除查询增加退出成绩系统输入查询学生学号统计学生成绩对学生成绩修改输入删除这学号输出查询学生信息输出统计结果确认删除添加学生成绩信息退出结束 3.学生主界面模块流程图开始学生主界面退出查询输入学号退出学生登陆界面输出查询学生信息退出结束【运行说明】1. 安装运行eclipse。2. 在eclipse中新建黄涛为项目名的java项目,将程序打包放入src中,再在项目下创建img文件件存放需要用到的图片。3. 运行login.java程序,运行程序进入登陆界面;4. 输入用户名和登陆密码,选择登陆用户类型。5. 进入教师主界面或学生主界面。6. 进入教师主界面后有对学生成绩添加,查询,修改,删除和统计等操作,对学生成绩的录入与管理。退出教师登陆界面前必须对本次的所有操作进行一个整体保存,才能保证下一次打开时上次所操作的数据能显示,保存功能在窗口菜单的系统菜单下。7. 进入学生登陆界面,学生只能对学生成绩进行查看没有对成绩的管理的权限。8. 本次操作的文件路径为file file = new file(e:/java/1208/mydata.txt);2、 程序上机调试报告【语法错误及其排除】1. 关于static关键字修饰类方法的问题,用static修饰方法称为类方法,不用static修饰的称为实例方法。类方法可以相互调用,但不能调用实例的方法。2. 在编写类方法时,方法明后忘记“()”,导致编译错误。3. 在输程序过程中,由于不断的中英文切换,致使一些标点符号不合法。在复查程序时也特别注意到此环节。4. 在程序输入时单词的拼写错误如panel容易写成panle等。在复查时我也特别注意到此环节。5.在添加图片时,没有输入正确的路径和名称,导致程序无法显示运行图片。【算法错误及其排除】1. 在为登陆界面添加图片时没有添加成功,通过为登陆界面创建一个新的平面类实现,实现代码如下。class mypanel1 extends jpanel /插入登陆界面图片image img=toolkit.getdefaulttoolkit().getimage(img/121.png);public void paint(graphics g) g.drawimage(img,0,0,this);2. 实现不了对学生成绩的保存,只能对本次操作的数据进行数据处理。当下次再打开时上一次的数据已不存在。解决办法:利用io文件流对数据建立文件流。file file = new file(e:/java/1208/mydata.txt);/创建文件 objectoutputstream out = null;/为文件创建输出流try /可能出现异常的语句out = new objectoutputstream(new fileoutputstream(file);out.writeobject(al);out.close(); objectinputstream in = null;/为文件创建输入流try /可能出现异常的语句in = new objectinputstream(new fileinputstream(file); try /可能出现异常的语句al = (arraylist)in.readobject(); catch (classnotfoundexception e) /异常捕获处理al=null;in.close(); catch (filenotfoundexception e) /异常捕获处理file file = new file(e:/java/1208/mydata.txt);/创建文件并指定其存储路径 catch (ioexception e) /异常捕获处理e.printstacktrace();/输出异常栈堆3、 程序测试结果【测试数据】1. 教师学生用户登陆,用户名:黄涛,密码:1234562. 选择教师登陆,进入教师登陆界面。3. 添加学生成绩学号姓名初等数论经济学数值计算思政概论java抽象代数101王二小897869787889102张小三686585858986103李小四787878769587104王麻子9198686493914. 查询学号103的成绩信息。5. 修改学号为104的成绩,将数值计算成绩68改成86。6. 删除102号的成绩信息。7. 统计学生成绩信息。8. 保存本次操作信息。9. 显示软件信息。10. 我是王小二我要查我的成绩。学生用户登陆进入学生登陆界面。【输出结果】1. 登陆测试2.教师登陆界面3. 添加学生成绩 1对学生成绩的添加 2如果添加成功弹出提示信息,如果已存在弹出提示信息。 4. 查询学号103的学生成绩信息。5. 修改学号为104的成绩,将数值计算成绩68改成86.修改成功提示6. 删除102号的成绩信息。删除成功提示7. 统计学生成绩信息。8. 保存本次操作信息。 菜单/系统/保存9. 显示软件信息。 菜单/帮助/软件信息 10. 学生用户登陆进入学生登陆界面。 王小二进入学生界面查询自己的成绩,王小二的学号为101.点击:菜单/成绩查询/各科成绩查询【收获及体会】 通过本次课程设计我对java有了更深入的了解,从理论到实际操作,我觉得完全靠理论是学不好java的,必须通过大量的上机才能深入体会其中的奥妙。本次我的课程设计为学生成绩管理程序,我先通过大量的查阅资料,先看了些人家的成绩管理是咋做的,再和自己想要做的成绩管理进行对比,吸取人家的优点,最后我将其它参考程序的所有优点集结于我这个程序的一身。最终做出了我的这个学生成绩管理程序。在程序设计过程中遇到了好多自己没有学过得知识,通过自己的阅读和查阅书籍资料学会并运用。巩固和加深了我对高级语言程序设计课程的基本知识的理解和掌握,掌握java语言编程和程序调试的基本技能,利用java语言进行基本的软件设计,提高运用java语言解决实际问题的能力。 本次java课程设计我最大的收获用一句话来概括,那就是:纸上得来终觉浅,绝知此事要躬行!4、源程序代码import static java.awt.borderlayout.south;import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.io.*;import java.util.arraylist;/定义学生类class student implements serializable private string name; /定义姓名private long num; /定义学号private int shulun; /定义课程初等数论private int jingji; /定义课程经济学private int shuzhi; /定义课程数值计算方法private int sizheng; /定义课程思政原理private int java; /定义课程java高级程序设计语言private int daishu; /定义课程近世代数private int sum=0; public student() public student( string name,long num, int shulun, int jingji,int shuzhi,int sizheng,int java,int daishu) super(); = name;this.num = num;this.shulun = shulun;this.jingji = jingji;this.shuzhi = shuzhi;this.sizheng= sizheng;this.java= java;this.daishu = daishu;/成员函数定义public string getname() return name;public void setname(string name) = name;public long getnum() return num;public void setnum(long num) this.num = num;public int getshulun() return shulun;public void setshulun(int shulun) this.shulun = shulun; public int getjingji() return jingji;public void setjingji(int jingji) this.jingji = jingji;public int getshuzhi() return shuzhi;public void setshuzhi(int shuzhi) this.shuzhi= shuzhi;public int getsizheng() return sizheng;public void setsizheng(int sizheng) this.sizheng = sizheng;public int getjava() return java;public void setjava(int java) this.java = java;public int getdaishu() return daishu;public void setdaishu(int daishu) this.daishu = daishu;public int getsum() return sum;public void setsum(int sum) this.sum = sum;public string tostring() return student name= + name + , num= + num + , shulun= + shulun+ , jingji= + jingji + shuzhi= + shuzhi + sizheng= + sizheng+ ,java= + java + daishu= + daishu + , sum= + sum+ ;/创建学生管理类class stuc arraylist al=new arraylist();/arraylist是一个变长对象数组,称为一个数组列表file file = new file(e:/java/1208/mydata.txt);/创建文件public void adds(student s) al.add(s);/添加public void del(int n) /删除for(int i=0;ial.size();i+) if(al.get(i).getnum()=n)al.remove(i);public void sum() /求总分for(int i=0;ial.size();i+) al.get(i).setsum(al.get(i).getshulun()+al.get(i).getjingji()+al.get(i).getshuzhi()+al.get(i).getsizheng()+al.get(i).getjava()+al.get(i).getdaishu();public void sort() /排序 for (int i = 0; i al.size(); i+) for (int j = 0; j al.size()-1-i; j+) if (al.get(j).getsum() al.get(j+1).getsum() object o=al.get(j); al.set(j, al.get(j+1); al.set(j+1, (student) o); public void paint() for(int i=0;ial.size();i+) system.out.println(al.get(i);public string tostring() return stuc al= + al + ;public void stor() /输出流objectoutputstream out = null;try /可能出现异常的语句out = new objectoutputstream(new fileoutputstream(file);out.writeobject(al);out.close(); catch (filenotfoundexception e) e.printstacktrace();/输出异常栈堆 catch (ioexception e) e.printstacktrace();/输出异常栈堆public void read() /输入流objectinputstream in = null;try /可能出现异常的语句in = new objectinputstream(new fileinputstream(file);try /可能出现异常的语句al = (arraylist)in.readobject(); catch (classnotfoundexception e) /异常捕获处理al=null;in.close(); catch (filenotfoundexception e) /异常捕获处理file file = new file(e:/java/1208/mydata.txt);/创建文件并指定其存储路径 catch (ioexception e) /异常捕获处理e.printstacktrace();/输出异常栈堆public student find(int n) /查找for(int i=0;ial.size();i+) if(al.get(i).getnum()=n) return al.get(i);return null;/插入主界面图片class mypanel extends jpanel image img=toolkit.getdefaulttoolkit().getimage(img/112.png);/获取图片public void paint(graphics g) g.drawimage(img,0,0,this);/画图片class mypanel1 extends jpanel /插入登陆界面图片image img=toolkit.getdefaulttoolkit().getimage(img/121.png);public void paint(graphics g) g.drawimage(img,0,0,this);/登陆界面public class login extends jframe private textfield f1;private textfield f2;private jbutton b1;private jbutton b2;private jbutton b3;private jbutton b4;stuc scs=new stuc();/定义学生类public login() /setbackground(new color(20,56,225);container cp=getcontentpane();/获取容器cp.setlayout(new gridlayout(4,1);/设置布局管理为网格四行一列label l1=new label(用户名);/创建标签了l1,l2label l2=new label(密 码); panel p1=new panel();/创建平面平,p1,p2,ppanel p2=new panel();panel p3=new panel();mypanel1 p4=new mypanel1();/创建插入图片平面p4f1=new textfield(10);f2=new textfield(10);f2.setechochar(*);/回显字符为*b1=new jbutton(教师登陆);/新建按钮b1,b2,b3b2=new jbutton(学生登陆);b3=new jbutton(退出登陆);p1.add(l1);/第一行添加label 1p1.add(f1);p2.add(l2);p2.add(f2);p3.add(b1);p3.add(b2);p3.add(b3);cp.add(p4);/面板p4,p1,p2,p3分别加入容器cpcp.add(p1);cp.add(p2);cp.add(p3);b1.addactionlistener(new teacherenter();/添加按钮事件响应b2.addactionlistener(new studententer();b3.addactionlistener(new close();class teacherenter implements actionlistener /教师进入登陆响应public void actionperformed(actionevent e) if(f1.gettext().equals(黄涛)&(f2.gettext().equals(123456) scs.read();/初始化,从文件读入信息 teachermainform frame1 = new teachermainform();/新建教师界面 else joptionpane.showmessagedialog(null, 用户名或密码错误,请重新登录!);class studententer implements actionlistener /学生进入登陆响应public void actionperformed(actionevent e) if(f1.gettext().equals(黄涛)&(f2.gettext().equals(123456) scs.read();/初始化,从文件读入信息 studentmainform frame1 = new studentmainform();/新建学生界面 else joptionpane.showmessagedialog(null, 用户名或密码错误,请重新登录!);class close implements actionlistener /关闭登陆按钮响应public void actionperformed(actionevent e) jbutton bt=(jbutton)e.getsource();if(bt=b3) system.exit(0);/退出/主函数 程序开始public static void main(string args) login log=new login(); log.settitle(系统登录); log.setbounds(500, 200, 300, 300); log.setbackground(color.blue); log.setvisible(true);/教师登陆界面class teachermainform extends jframe implements actionlistenerjmenu msystem=new jmenu(系统);/系统菜单 jmenuitem mexit=new jmenuitem(退出); jmenuitem msave=new jmenuitem(保存); jmenu mhelp=new jmenu(帮助);/帮助菜单 jmenuitem mabout=new jmenuitem(软件信息); jmenubar mbar=new jmenubar(); jpanel panel;jbutton button1,button2,button3,button4,button5,button6;/按钮组件jlabel label,labeltitle,label1,label2,label3,label4,label5,label6;/标签组件 /添加背景imageicon 背景;/背景为整个界面的背景,通过添加图片设置为背景 icon icon1,icon2,icon3,icon4,icon5,icon6;/按钮图标 box basebox,boxv1,boxv2,boxv3,boxv4,boxv5,boxv6;/box组件 teachermainform() super(数学1001班2012至2013学年学生期末成绩管理系统-教师界面); setsize(561,495); setlocation(350,110); msystem.add(msave);/为菜单添加菜单项目 msystem.add(mexit); mhelp.add(mabout); mbar.add(msystem);/将菜单添加到菜单条 mbar.add(mhelp); setjmenubar(mbar);/设置菜单条 mexit.addactionlistener(this);/为菜单按钮添加监听事件 mabout.addactionlistener(this); msave.addactionlistener(this); setresizable(true); /添加背景,添加标题,设置按钮图标 labeltitle=new jlabel(成绩管理系统);/添加标题 font font=new font(华文行楷, font.bold+font.truetype_font+font.layout_left_to_right,70); labeltitle.setfont(font);/为标题添加字体 labeltitle.setforeground(new color(255,0,0); 背景 = new imageicon(img/102.jpg);/设置背景图片 label = new jlabel(背景); label.setbounds(0, 0, 背景.geticonwidth(),背景.geticonheight(); this.getlayeredpane().setlayout(null); icon1=new imageicon(img/1_.png);/为按钮添加图片 button1 = new jbutton(icon1); button1.setcontentareafilled (false); icon2=new imageicon(img/2_.png); button2 = new jbutton(icon2); button2.setcontentareafilled (false); icon3=new imageicon(img/3_.png); button3 = new jbutton(icon3); button3.setcontentareafilled (false); icon4=new imageicon(img/4_.png); button4 = new jbutton(icon4); button4.setcontentareafilled (false); icon5=new imageicon(img/5_.png); button5 = new jbutton(icon5); button5.setcontentareafilled (false); icon6=new imageicon(img/6_.png); button6 = new jbutton(icon6); button6.setcontentareafilled (false); /设置按钮的解释文字的字体和颜色,并把按钮和其对应的文字说明用boxlayout布局 /设置为上下对其形式 font font1=new font(华文行楷, font.bold+font.truetype_font+font.layout_left_to_right,20);/设置字体 label1=new jlabel( 查询);/标签注释按钮 label2=new jlabel( 增加); label3=new jlabel( 删除); label4=new jlabel( 修改); label5=new jlabel( 统计); label6=new jlabel( 退出); label1.setfont(font1);/为标签设置字体 label2.setfont(font1); label3.setfont(font1); label4.setfont(font1); label5.setfont(font1); label6.setfont(font1); label1.setforeground(new color(0,0,255);/为标签设置颜色 label2.setforeground(new color(0,0,255);/为标签设置颜色 label3.setforeground(new color(0,0,255);/为标签设置颜色 label4.setforeground(new co

温馨提示

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

评论

0/150

提交评论