java学生成绩管理系统+课程设计文档格式.docx
《java学生成绩管理系统+课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《java学生成绩管理系统+课程设计文档格式.docx(54页珍藏版)》请在冰豆网上搜索。
![java学生成绩管理系统+课程设计文档格式.docx](https://file1.bdocx.com/fileroot1/2023-2/1/247cdbf4-6abf-4102-829c-10e3072738e9/247cdbf4-6abf-4102-829c-10e3072738e91.gif)
2.先将上面两项内容的word文档,通过电子邮件交到指导教师,待许可
后,打印装袋。
起止时间2012年12月24日至2012年12月30日
指导教师签名李元觉2012年12月22日
系(教研室)主任签名郝华宁2012年12月22日学生签名年月日
《高级语言程序设计
(2)》课程设计报告
专业:
数学与应用数学班级:
数学1001学号:
201001030126
姓名:
黄涛完成日期:
2012.12.30指导教师:
李元觉
1、程序设计说明书
【设计题目】学生成绩管理程序
每个学生
都有相同的信息,适合用Java的类来描述。
Student包含的信息有学号、姓名和6
科成绩(初等数论、经济学、数值计算、思政原理、Java语言和抽象代数)。
定义
一个Student类创建对应方法,实现对Student对象的操作(增、删、改、查询、
成绩排序、成绩统计等功能)供其对象调用。
前者可以定义为Student类的成员变
量,后者可以定义为Student类的成员函数。
3.能进行对Student对象的操作(增、删、改、查询、成绩排序、成绩统计等功能)。
.利用swing实现良好的GUI界面。
5
7.为学成成绩信息建立文件操作信息管理和相应的文件源,可以方便的调用上一
保存的数据。
还可以对数据进行其他操作。
【算法思想】
1.创建Student类,把学生的信息和成绩通过这个类对应到每个学生。
既把学生的
基本情况封装到这个Student类中。
2.创建变长数组列表ArrayList<
Student>
,将所有的学生信息按每个人为单位放
入到这个数组中,利用数组的循环便于对学生成绩的各种操作。
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(Stringname),getNum(),setNum(),
getShuLun(),setShuLun(),getJingJi(),setJingJi(intJingJi),getShuZhi(),setShuZhi(intShuZhi),getJava(),setJava(intJava),getDaiShu(),getsum(),setDaiShu(intDaiShu),setsum(intsum),
getSiZheng(),setSiZheng(intSiZheng)
2.StuC类,Student管理类StuC创建对应方法,实现对Student对象的操作(增、删、改、查询、持久化、成绩排序、成绩统计等功能)供其对象调用。
StuC
属性:
al(学生类数组ArrayList<
al=newArrayList<
();
)
file(文件)
adds(Students)(将学生s添加到数组al中去),del(intn),sum(),sort()(实现排序功能),toString(),paint(),stor()(输出流),read(),Studentfind(int
n)
3.Login类,登陆界面要求输入登陆者输入用户名和密码,分别设教师登陆和学生登陆两个登陆选项。
Login
用户名密码退出登陆
教师登陆学生登陆
TeacherEnter(),StudentEnter(),Close()
4.TeacherMainForm类,教师登陆主界面
TeacherMainForm
增加查询修改删除
统计保存退出
actionPerformed(ActionEvente)(按钮事件响应)
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.学生主界面模块流程图
学生主界面
退出查询
输入学号
退出学
生登陆
界面输出查询
学生信息
【运行说明】
安装运行eclipse。
1.
2.在eclipse中新建黄涛为项目名的java项目,将程序打包放入src中,再在项
目下创建img文件件存放需要用到的图片。
3.运行Login.java程序,运行程序进入登陆界面;
4.输入用户名和登陆密码,选择登陆用户类型。
5.进入教师主界面或学生主界面。
6.进入教师主界面后有对学生成绩添加,查询,修改,删除和统计等操作,对学生成绩的录入与管理。
退出教师登陆界面前必须对本次的所有操作进行一个整体保存,才能保证下一次打开时上次所操作的数据能显示,保存功能在窗口菜单的系统菜单下。
7.进入学生登陆界面,学生只能对学生成绩进行查看没有对成绩的管理的权限。
8.本次操作的文件路径为Filefile=newFile("
e:
/JAVA/1208/mydata.txt"
);
2、程序上机调试报告
【语法错误及其排除】
1.关于static关键字修饰类方法的问题,用static修饰方法称为类方法,不用static修饰的称为实例方法。
类方法可以相互调用,但不能调用实例的方法。
2.在编写类方法时,方法明后忘记“()”,导致编译错误。
3.在输程序过程中,由于不断的中英文切换,致使一些标点符号不合法。
在复查程序时也特别注意到此环节。
4.在程序输入时单词的拼写错误如Panel容易写成Panle等。
在复查时我也特别注意到此环节。
5.在添加图片时,没有输入正确的路径和名称,导致程序无法显示运行图片。
【算法错误及其排除】
1.在为登陆界面添加图片时没有添加成功,通过为登陆界面创建一个新的平面类实现,实现代码如下。
classMyPanel1extendsJPanel{//插入登陆界面图片
Imageimg=Toolkit.getDefaultToolkit().getImage("
img/121.png"
publicvoidpaint(Graphicsg){
g.drawImage(img,0,0,this);
}
2.实现不了对学生成绩的保存,只能对本次操作的数据进行数据处理。
当下次再打开时上一次的数据已不存在。
解决办法:
利用IO文件流对数据建立文件流。
Filefile=newFile("
//创建文件
ObjectOutputStreamout=null;
//为文件创建输出流
try{//可能出现异常的语句
out=newObjectOutputStream(newFileOutputStream(file));
out.writeObject(al);
out.close();
ObjectInputStreamin=null;
//为文件创建输入流
in=newObjectInputStream(newFileInputStream(file));
al=(ArrayList<
)in.readObject();
}catch(ClassNotFoundExceptione){//异常捕获处理
al=null;
in.close();
}catch(FileNotFoundExceptione){//异常捕获处理
//创建文件并指定其存储路径
}catch(IOExceptione){//异常捕获处理
e.printStackTrace();
//输出异常栈堆
3、程序测试结果
【测试数据】
1.教师学生用户登陆,用户名:
黄涛,密码:
123456
2.选择教师登陆,进入教师登陆界面。
3.添加学生成绩
学号姓名初等数论经济学数值计算思政概论Java抽象代数101王二小897869787889102张小三686585858986103李小四787878769587104王麻子9198686493914.查询学号103的成绩信息。
5.修改学号为104的成绩,将数值计算成绩68改成86。
6.删除102号的成绩信息。
7.统计学生成绩信息。
8.保存本次操作信息。
9.显示软件信息。
10.我是王小二我要查我的成绩。
学生用户登陆进入学生登陆界面。
【输出结果】
1.登陆测试
2.教师登陆界面
对学生成绩的添加
如果添加成功弹出提示信息,如果已存在弹出提示信息。
4.查询学号103的学生成绩信息。
5.修改学号为104的成绩,将数值计算成绩68改成86.
修改成功提示
删除成功提示
菜单/系统/保存
菜单/帮助/软件信息
10.学生用户登陆进入学生登陆界面。
王小二进入学生界面查询自己的成绩,王小二的学号为101.
点击:
菜单/成绩查询/各科成绩查询
【收获及体会】
通过本次课程设计我对Java有了更深入的了解,从理论到实际操作,我觉得完
全靠理论是学不好Java的,必须通过大量的上机才能深入体会其中的奥妙。
本次我
的课程设计为学生成绩管理程序,我先通过大量的查阅资料,先看了些人家的成绩
管理是咋做的,再和自己想要做的成绩管理进行对比,吸取人家的优点,最后我将
其它参考程序的所有优点集结于我这个程序的一身。
最终做出了我的这个学生成绩
管理程序。
在程序设计过程中遇到了好多自己没有学过得知识,通过自己的阅读和
查阅书籍资料学会并运用。
巩固和加深了我对高级语言程序设计课程的基本知识的
理解和掌握,掌握java语言编程和程序调试的基本技能,利用java语言进行基本的
软件设计,提高运用java语言解决实际问题的能力。
本次java课程设计我最大的收获用一句话来概括,那就是:
纸上得来终觉浅,绝
知此事要躬行~
4、源程序代码
importstaticjava.awt.BorderLayout.SOUTH;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjava.io.*;
importjava.util.ArrayList;
//定义学生类
classStudentimplementsSerializable{
privateStringname;
//定义姓名
privatelongnum;
//定义学号
privateintShuLun;
//定义课程初等数论
privateintJingJi;
//定义课程经济学
privateintShuZhi;
//定义课程数值计算方法
privateintSiZheng;
//定义课程思政原理
privateintJava;
//定义课程java高级程序设计语言
privateintDaiShu;
//定义课程近世代数
privateintsum=0;
publicStudent(){
publicStudent(Stringname,longnum,intShuLun,intJingJi,intShuZhi,int
SiZheng,intJava,intDaiShu){
super();
this.name=name;
this.num=num;
this.ShuLun=ShuLun;
this.JingJi=JingJi;
this.ShuZhi=ShuZhi;
this.SiZheng=SiZheng;
this.Java=Java;
this.DaiShu=DaiShu;
}//成员函数定义
publicStringgetName(){returnname;
publicvoidsetName(Stringname){this.name=name;
publiclonggetNum(){returnnum;
publicvoidsetNum(longnum){this.num=num;
publicintgetShuLun(){returnShuLun;
publicvoidsetShuLun(intShuLun){this.ShuLun=ShuLun;
}
publicintgetJingJi(){returnJingJi;
publicvoidsetJingJi(intJingJi){this.JingJi=JingJi;
publicintgetShuZhi(){returnShuZhi;
publicvoidsetShuZhi(intShuZhi){this.ShuZhi=ShuZhi;
publicintgetSiZheng(){returnSiZheng;
publicvoidsetSiZheng(intSiZheng){this.SiZheng=SiZheng;
publicintgetJava(){returnJava;
publicvoidsetJava(intJava){this.Java=Java;
publicintgetDaiShu(){returnDaiShu;
publicvoidsetDaiShu(intDaiShu){this.DaiShu=DaiShu;
publicintgetsum(){returnsum;
publicvoidsetsum(intsum){this.sum=sum;
publicStringtoString(){
return"
Student[name="
+name+"
num="
+num+"
shulun="
+ShuLun
+"
jingji="
+JingJi+"
shuzhi="
+ShuZhi+"
sizheng="
+SiZheng
java="
+Java+"
daishu="
+DaiShu+"
sum="
+sum
]"
;
//创建学生管理类
classStuC{
ArrayList<
//ArrayList是一个变长对象
数组,称为一个数组列表
publicvoidadds(Students){al.add(s);
}//添加
publicvoiddel(intn){//删除
for(inti=0;
i<
al.size();
i++){
if(al.get(i).getNum()==n)
al.remove(i);
publicvoidsum(){//求总分
al.get(i).setsum(al.get(i).getShuLun()+al.get(i).getJingJi()+al.get(i).get
ShuZhi()+al.get(i).getSiZheng()+al.get(i).getJava()+al.get(i).getDaiShu());
publicvoidsort(){//排序
for(inti=0;
i<
al.size();
i++){
for(intj=0;
j<
al.size()-1-i;
j++){
if(al.get(j).getsum()<
al.get(j+1).getsum()){
Objecto=al.get(j);
al.