学生管理系统java课程设计.docx
《学生管理系统java课程设计.docx》由会员分享,可在线阅读,更多相关《学生管理系统java课程设计.docx(55页珍藏版)》请在冰豆网上搜索。
学生管理系统java课程设计
《Java程序设计》课程期末作业
题目学生成绩管理系统
学院信息科学与工程学院
专业计算机科学与技术
班别09级3班
学号200901051624
姓名
2011年12月17日
目录
一、课程题目:
3
二、软件的功能描述3
三、系统的UML类图4
(一)用况图4
(二)类之间的图4
(三)数据流程图6
四、功能调试6
五、具体代码15
一、课程题目:
设计一个学生Java成绩管理系统(可以不使用界面;如果使用,则界面使用AWT或SWING),要求:
a)增添、删除、修改学生基本信息(基本信息包含学生的学号、姓名、专业分数等信息);
b)计算每门课的平均成绩;
c)统计优秀、良好、中等、及格、不及格的人数百分比,并以柱状图、饼图呈现【说明:
可以使用SWING、AWT自己绘制;也可以使用开源类库,如JFreeChar】
d)按学号查询学生及成绩;
e)按照成绩分数排序
二、软件的功能描述
1,能够实现学生信息的增删改查四项基本的操作。
此程序允许出现重名的现象出现,另外在删除的时候提供了删除所有重名同学的信息和删除指定学号的学生的两种方法,更加贴近现实。
2,能够将程序中的数据存储到data.txt文件中,另外能在程序中通过Swing中的table组件将文件中的内容进行打印出来。
可以直观的看到文件内部的结果。
3,此程序给出了“按照学号排序”“按照平均成绩排序”“按照英语成绩排序”“按照数学成绩排序”“按照专业成绩排序”等五个排序方法。
4,此程序在查询的同时又能同时显示出三科成绩的饼图分布,饼图上标出了四个成绩段的人数和百分比。
更加方便直观的体现出了单科的成绩分布。
5,程序有一个增加的功能。
能够将所有同学的信息用三维柱状图的形式全部呈现出来,能够进行纵向、横向两种比较方式。
方便人性化的进行成绩的比较。
三、系统的UML类图
(一)用况图
(二)类之间的图
①student类
②sort类
(三)数据流程图
四、功能调试
1,主界面
2,新建学生信息
3,查询成绩页面
4,修改成绩
5,删除成绩
第二种方法
6,打印文件内容
7,三科的排序
8,平均成绩排序:
9,三科的饼图分布
10,所有同学的成绩三维柱状图分析
五、具体代码
1,主界面代码(Grade.java)
publicclassGrade{
//定义主框架
privateJFrameframe=newJFrame("学生成绩管理系统");//定义菜单栏
privateJMenuBarBar=newJMenuBar();//定义菜单
privateJMenuJMedit=newJMenu("编辑");
privateJMenuJMcount=newJMenu("统计");
privateJMenuJMhelp=newJMenu("数据");//定义菜单项
privateJMenuItemJMIcreate=newJMenuItem("新建");
privateJMenuItemJMImodify=newJMenuItem("修改");
privateJMenuItemJMIsearch=newJMenuItem("寻找");
privateJMenuItemJMIdelete=newJMenuItem("删除");
privateJMenuItemJMIall=newJMenuItem("成绩排序");
privateJMenuItemJMIgraphics=newJMenuItem("图形统计");
privateJMenuItemJMIhelp=newJMenuItem("文件信息");//定义文本标签
privateJLabeltext=newJLabel();
privateJLabeltext1=newJLabel();
privateJLabeltext2=newJLabel();
privateJLabeltext3=newJLabel();
privateJLabeltext4=newJLabel();//定义面板
privateContainercon=frame.getContentPane();//定义输入框对象
//privateStudentManagerinputinfo=null;//定义查询框架对象
privateSearchsearch=null;
privateCreatecreate=null;
privateDeletedelete=null;
privateModifymodify=null;
privateDatasortsort=null;
privateBarChartsss=null;
//定义总分统计对象
//privateAllgradeCountall=null;
//定义个人统计对象
//privateSignalCountsignal=null;
//构造函数
publicGrade(){
//把菜单栏加入框架
frame.setJMenuBar(Bar);//把菜单加入菜单栏
Bar.add(JMedit);
Bar.add(JMcount);
Bar.add(JMhelp);//把菜单项加入菜单
JMedit.add(JMIcreate);
JMedit.addSeparator();
JMedit.add(JMIsearch);
JMedit.addSeparator();
JMedit.add(JMImodify);
JMedit.addSeparator();
JMedit.add(JMIdelete);//第一个下拉菜单
JMcount.add(JMIall);
JMcount.addSeparator();
JMcount.add(JMIgraphics);//第二个下拉
JMhelp.add(JMIhelp);//第三个//设置文本界面
text.setText("==============基于TXT文件的Java学生管理系统===========");
text1.setText("1.增添、删除、修改学生基本信息;并计算每门课的平均成绩;");
text2.setText("2.统计优秀、良好、中等、及格、不及格的百分比,并以图呈现");
text3.setText("3.按学号查询学生及成绩,并按照不同的成绩分数排序。
");
text4.setText("===============制作者,计算机09-3,王继重=============");//设置欢迎界面
con.setLayout(newFlowLayout(FlowLayout.LEFT,0,10));
con.add(text);
con.add(text1);
con.add(text2);
con.add(text3);
con.add(text4);//设置框架
frame.setLocation(200,200);
frame.setSize(400,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);//增加监听器
JMIcreate.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){//TODO自动生成方法存根
create=newCreate();}
});
JMIsearch.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
search=newSearch();}});
JMImodify.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){modify=newModify();}});
JMIdelete.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
delete=newDelete();
}});
JMIall.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
sort=newDatasort();}});
JMIgraphics.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
ss=newBarCharts("成绩分布柱状图");
}});
JMIhelp.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){//TODO自动生成方法存根
//JOptionPane.showMessageDialog(null,"计算机09-3王继重");Outfilea=newOutfile();}});}
publicstaticvoidmain(String[]args)
{Gradea=newGrade();}
2,新建用户的代码
publicclassCreateextendsJFrame{
/**
*当前容器
*/
ContainercurrentContainer=this;
/**
*存储的文件名
*/
StringfileName=newString("data.txt");
/**
*显示标题文本
*/
JLabeltitleLabel=newJLabel("添加成绩界面");
/**
*标题面板
*/
JPaneltitlePanel=newJPanel();
/**
*显示姓名文本
*/
JLabelnameLabel=newJLabel("学生姓名");
/**
*显示成绩文本
*/
JLabelscoreLabel=newJLabel("学生学号");
JLabelscore1Label=newJLabel("英语成绩");
JLabelscore2Label=newJLabel("数学成绩");
JLabelscore3Label=newJLabel("专业成绩");
/**
*姓名文本框
*/
JTextFieldnameTextField=newJTextField(15);
/**
*成绩文本框
*/
JTextFieldscoreTextField=newJTextField(15);
JTextFieldscore1TextField=newJTextField(15);
JTextFieldscore2TextField=newJTextField(15);
JTextFieldscore3TextField=newJTextField(15);
/**
*输入面板
*/
JPanelinputPanel=newJPanel();
/**
*添加按钮
*/
JButtoninsertBtn=newJButton("新建");
/**
*管理面板
*/
JPanelmanagePanel=newJPanel();
/**
*按钮监听器
*/
ButtonActionListenerbtnAction=newButtonActionListener();
/**
*构造器:
初始化窗体
*/
publicCreate(){
this.setSize(280,300);
this.setLocation(300,300);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setTitle("java学生成绩管理系统");
/*
*将窗体划分为上中下三个块
*/
this.setLayout(newBorderLayout());
this.add(titlePanel,"North");
this.add(inputPanel,"Center");
this.add(managePanel,"South");
/*
*第一块用来放标题面板==
*/
titlePanel.setLayout(newFlowLayout(FlowLayout.CENTER,0,10));
titlePanel.add(titleLabel);
titleLabel.setFont(newFont("黑体",Font.PLAIN,16));
/*
*第二块放输入面板
*/
inputPanel.setLayout(newFlowLayout(FlowLayout.CENTER,20,10));
inputPanel.add(nameLabel);//姓名
inputPanel.add(nameTextField);
inputPanel.add(scoreLabel);//成绩
inputPanel.add(scoreTextField);//?
?
?
?
?
inputPanel.add(score1Label);//成绩1
inputPanel.add(score1TextField);//?
?
?
?
?
inputPanel.add(score2Label);//成绩2
inputPanel.add(score2TextField);//?
?
?
?
?
inputPanel.add(score3Label);//成绩3
inputPanel.add(score3TextField);//?
?
?
?
?
/*
*第三块是管理面板
*/
managePanel.setLayout(newFlowLayout(FlowLayout.CENTER,5,10));
managePanel.add(insertBtn);
/*
*为按钮注册按钮监听器
*/
insertBtn.addActionListener(btnAction);
/*
*显示窗体
*/
this.setVisible(true);}
/**
*按钮监听类
*/
classButtonActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
/*
*检查是否输入了姓名
*/
Stringname=nameTextField.getText().trim();
if(name.length()==0){
JOptionPane.showMessageDialog(currentContainer,"输入的姓名为空!
",
"操作失败",JOptionPane.ERROR_MESSAGE);
return;
}
/*
*是否要求查询
*/
intscore=0;
intscore1=0;
intscore2=0;
intscore3=0;
/*
*检查是否输入了成绩,输入不同的成绩
*/
try{
score=Integer.parseInt(scoreTextField.getText().trim());
}catch(Exceptione1){
JOptionPane.showMessageDialog(currentContainer,"输入的成绩不是数字!
",
"操作失败",JOptionPane.ERROR_MESSAGE);
return;}
try{
score1=Integer.parseInt(score1TextField.getText().trim());
}catch(Exceptione1){
JOptionPane.showMessageDialog(currentContainer,"输入的成绩不是数字!
",
"操作失败",JOptionPane.ERROR_MESSAGE);
return;}
try{
score2=Integer.parseInt(score2TextField.getText().trim());
}catch(Exceptione1){
JOptionPane.showMessageDialog(currentContainer,"输入的成绩不是数字!
",
"操作失败",JOptionPane.ERROR_MESSAGE);
return;
}
try{
score3=Integer.parseInt(score3TextField.getText().trim());
}catch(Exceptione1){
JOptionPane.showMessageDialog(currentContainer,"输入的成绩不是数字!
",
"操作失败",JOptionPane.ERROR_MESSAGE);
return;
}
/*
*是否要求录入
*/
if(e.getSource()==insertBtn){
booleanflag=insert(name,score,score1,score2,score3);//执行方法,进行录入操作
if(flag){
JOptionPane.showMessageDialog(currentContainer,"录入成功!
");
scoreTextField.setText("");//清空成绩框
score1TextField.setText("");
score2TextField.setText("");
score3TextField.setText("");
}else{
JOptionPane.showMessageDialog(currentContainer,
"录入过程中出现了异常,请联络技术人员!
","录入失败",
JOptionPane.ERROR_MESSAGE);
}
return;
}}}
/**
*插入新记录
*
*@paramname
*姓名
*@paramscore
*成绩
*/
publicbooleaninsert(Stringname,intscore,intscore1,intscore2,
intscore3){
try{
/*
*写入文件
*/
Writerout=newFileWriter(fileName,true);
out.write(name+":
"+score+":
"+score1+":
"+score2+":
"
+score3+"\r\n");
out.close();
returntrue;
}catch(IOExceptione){
e.printStackTrace();
returnfalse;
}}
/**
*入口方法
*
*@paramargs
publicstaticvoidmain(String[]args){
newCreate();
}
}
3,修改类
publicclassModifyextendsJFrame{
/**
*当前容器
*/
ContainercurrentContainer=this;
/**
*存储的文件名
*/
StringfileName=newString("data.txt");
/**
*显示标题文本
*/
JLabeltitleLabel=newJLabel("修改成绩界面");
/**
*标题面板
*/
JPaneltitlePanel=newJPanel();
/**
*显示姓名文本
*/
JLabelnameLabel=newJLabel("学生姓名");
/**
*显示成绩文本