JAVA成绩管理系统论文.docx
《JAVA成绩管理系统论文.docx》由会员分享,可在线阅读,更多相关《JAVA成绩管理系统论文.docx(32页珍藏版)》请在冰豆网上搜索。
JAVA成绩管理系统论文
Java面向对象程序设计——学生成绩管理系统
东北大学秦皇岛分校电子信息系2009级计算机科学与技术专业
摘要:
学生成绩管理系统是在校园中广泛使用的应用软件,用来方便老师管理学生成绩,方便同学查询成绩,取代传统Excel表格成绩单,方便快捷。
本学生成绩管理系统在充分的需求分析基础上,设计简单实用的功能,实现对成绩的查询,修改,删除等操作。
在Myeclipse的编程环境下,使用与平台无关的面向对象语言——Java编程语言,主要使用了JTextField,JButton,JTable,JLabel,等多种组件,用到了FlowLayout,BorderLayout,BoxLayout等多种布局方式,使用了窗口作为监听器,并与Access数据库相连,实现对学生成绩的综合管理。
用户界面美观简洁,操作简单,安全快捷。
一、设计过程
1.1功能设计
我设计的成绩管理系统是基于数据库的成绩管理,实现对学生成绩的添加,查询,修改(包括删除)以及连接校园网的功能。
下面具体说明每个功能。
1.1.1添加功能:
先在窗口中输入学号,姓名,各科成绩,点击“确认添加”,系统自动得出成绩总分保存在数据库中,并跳出一个“警告”窗口,以提醒用户操作成功。
1.1.2查询功能:
查询功能又分为两部分--“按学号查询”(即查询单条记录)和“按总成绩排名查询”,当输入学号后,点击“查询”,系统会给数据库传入一条SQL语句,数据库把查询结果显示在窗口中,得到要查询的人的信息;
当点击“总成绩排名查询”时,系统会给数据库传入一条SQL语句,将数据库中的数据按照总分由高到低排序,然后把查询结果显示在窗口中,得到全部同学的按照总分排名的排名表。
1.1.3修改功能:
修改功能是先把要修改的数据查出来,然后才能进行修改。
查询分为“按学号查询”和“按姓名查询”,输入学号或姓名,点击按钮,记得到一个新的窗口,在此窗口了,显示了要查询的人的信息,可以在里面修改这条信息的内容,然后单击“保存修改”,系统即向数据库发送SQL语句,实现数据库中此数据的修改功能,并弹出一个窗口,提醒用户操作成功;
当单击“删除记录”的时候,系统会向数据库发送删除此条记录的SQL语句,然后此记录被删除,并跳出一个窗口提醒用户操作成功。
1.1.4校园网功能:
当选择校园网时,系统实现了URL类,通过读取,显示URL中的html文件来打开预设在程序里的东北大学秦皇岛分校的网址,实现连接校园网的功能。
1.2过程设计
(1)在纸上画出大致界面,把按钮,文本框,布局想清楚
(2)用程序实现界面的框架图,把所有界面连接在一起
(3)将各个功能加入界面框架图
(4)美化窗口界面,完善各项功能
1.2.1UML图
1.2.2界面设计
先设计出大致界面,最后美化界面,加入一些背景,设计按钮。
下面是最初的草图设计:
二、程序代码与解析
3.1学生成绩管理系统.java
publicclass学生成绩管理系统{
publicstaticvoidmain(String[]args){
Interfaceinterface1=newInterface();
interface1.setTitle("成绩管理系统");
}
}
//学生成绩管理系统为主类,调用Interface来打开主界面。
3.2FinalTable.java
//此类为主界面,即包含题目,四个功能选择按钮的界面
importjava.awt.*;
importjava.awt.event.*;
importjava.io.IOException;
import.URISyntaxException;
importjavax.swing.*;
importstaticjava.awt.BorderLayout.*;
publicclassInterfaceextendsJFrameimplementsActionListener{
JPanelpanel;
JButtonbutton1,button2,button3,button4;//button1添加按钮button2查询按钮
//button3修改按钮button4校园网按钮
JLabellabel,labelTitle,label1,label2,label3,label4;//label1,label2,label3,label4
//为添加,查询,修改,校园网这几个按钮的注释,labelTitle为"成绩管理系统"这几个字,label用于
//添加背景
ImageIcon背景;//背景为整个界面的背景,通过添加图片设置为背景
Iconicon1,icon2,icon3,icon4;//按钮图标
Boxbasebox,boxV1,boxV2,boxV3,boxV4;
publicInterface(){
//添加背景,添加标题,设置按钮图标
labelTitle=newJLabel("成绩管理系统");
Fontfont=newFont("华文行楷",
Font.BOLD+Font.TRUETYPE_FONT+Font.LAYOUT_LEFT_TO_RIGHT,70);
labelTitle.setFont(font);
labelTitle.setForeground(newColor(255,0,0));
背景=newImageIcon("001.JPG");
label=newJLabel(背景);
label.setBounds(0,0,背景.getIconWidth(),
背景.getIconHeight());
this.getLayeredPane().setLayout(null);
icon1=newImageIcon("1.png");
button1=newJButton(icon1);
button1.setContentAreaFilled(false);
icon2=newImageIcon("2.png");
button2=newJButton(icon2);
button2.setContentAreaFilled(false);
icon3=newImageIcon("3.png");
button3=newJButton(icon3);
button3.setContentAreaFilled(false);
icon4=newImageIcon("4.png");
button4=newJButton(icon4);
button4.setContentAreaFilled(false);
//设置按钮的解释文字的字体和颜色,并把按钮和其对应的文字说明用BoxLayout布局
//设置为上下对其形式
Fontfont1=newFont("微软雅黑",
Font.BOLD+Font.TRUETYPE_FONT+Font.LAYOUT_LEFT_TO_RIGHT,17);
label1=newJLabel("添加");
label2=newJLabel("查询");
label3=newJLabel("修改");
label4=newJLabel("校园网");
label1.setFont(font1);
label2.setFont(font1);
label3.setFont(font1);
label4.setFont(font1);
label1.setForeground(newColor(255,255,255));
label2.setForeground(newColor(255,255,255));
label3.setForeground(newColor(255,255,255));
label4.setForeground(newColor(255,255,255));
boxV1=Box.createVerticalBox();
boxV2=Box.createVerticalBox();
boxV3=Box.createVerticalBox();
boxV4=Box.createVerticalBox();
boxV1.add(button1);
boxV1.add(Box.createVerticalStrut(0));
boxV1.add(label1);
boxV2.add(button2);
boxV2.add(Box.createVerticalStrut(0));
boxV2.add(label2);
boxV3.add(button3);
boxV3.add(Box.createVerticalStrut(0));
boxV3.add(label3);
boxV4.add(button4);
boxV4.add(Box.createVerticalStrut(0));
boxV4.add(label4);
basebox=Box.createHorizontalBox();
basebox.add(boxV1);
basebox.add(Box.createHorizontalStrut(11));
basebox.add(boxV2);
basebox.add(Box.createHorizontalStrut(11));
basebox.add(boxV3);
basebox.add(Box.createHorizontalStrut(11));
basebox.add(boxV4);
add(basebox,SOUTH);
//添加背景,并把窗口大小设置为背景图片的大小
panel=(JPanel)this.getContentPane();
panel.setOpaque(false);
FlowLayoutf=newFlowLayout();
panel.add(labelTitle);
panel.setLayout(f);
getLayeredPane().setLayout(null);
getLayeredPane().add(label,newInteger(Integer.MIN_VALUE));
setSize(背景.getIconWidth(),背景.getIconHeight());
setBounds(350,150,背景.getIconWidth(),背景.getIconHeight());
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
//为每个按钮设置监视器
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
}
@Override
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
if(e.getSource()==button2){
InterfaceDesign2interface2=newInterfaceDesign2();
//当按下button2时,打开InterfaceDesign2的窗口
}
elseif(e.getSource()==button3){
InterfaceDesign4interface4=newInterfaceDesign4();
//当按下button3时,打开InterfaceDesign4的窗口
}
elseif(e.getSource()==button1){
InterfaceDesign3interface3=newInterfaceDesign3();
//当按下button1时,打开InterfaceDesign3的窗口
}
elseif(e.getSource()==button4){
//当按下button4的时候,连接校园网,此处用了jdk1.6版本的特有功能,
//用电脑默认的浏览器,打开预设在程序里的东北大学秦皇岛分校的网页
Desktopdp=Desktop.getDesktop();
try{
dp.browse(new.URI("
}catch(IOExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}catch(URISyntaxExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
}
}
}
3.3InterfaceDesign2.java
//查询功能窗口
importjava.awt.*;
importjava.awt.event.*;
importstaticjava.awt.BorderLayout.*;
importjavax.swing.*;
publicclassInterfaceDesign2extendsJFrameimplementsActionListener{
JLabelnumber;//学号
JTabletable1=newJTable();//用于接收由FinalTable查找出来的信息反回来的JTable类型的结果
JTextFieldnumbertext;//输入学号的文本框
JButtonseekByNumber;//"查询"按钮
JButtonseekAll;//"总成绩排名查询"按钮
//用于设置背景
JPanelpanel;
JLabellabel;
ImageIconbackground;
publicInterfaceDesign2(){
init();
setBounds(350,150,background.getIconWidth(),background.getIconHeight());
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setTitle("查询");
}
voidinit(){
//为窗口添加背景
background=newImageIcon("010.JPG");
label=newJLabel(background);
label.setBounds(0,0,background.getIconWidth(),
background.getIconHeight());
this.getLayeredPane().setLayout(null);
panel=(JPanel)this.getContentPane();
panel.setOpaque(false);
FlowLayoutf=newFlowLayout();
panel.setLayout(f);
getLayeredPane().setLayout(null);
getLayeredPane().add(label,newInteger(Integer.MIN_VALUE));
setSize(background.getIconWidth(),background.getIconHeight());
//添加文本框和按钮
setLayout(newFlowLayout());
number=newJLabel("学号");
numbertext=newJTextField(10);
seekByNumber=newJButton("查询");
seekAll=newJButton("总成绩排名查询");
add(number);
add(numbertext);
add(seekByNumber);
add(seekAll);
seekByNumber.addActionListener(this);
seekAll.addActionListener(this);
}
@Override
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
if(e.getSource()==seekByNumber){
//若学好输入框没有输入学号,提示输入学号信息
if(numbertext.getText().length()==0){
JOptionPane.showMessageDialog(this,
"请输入学号!
","",JOptionPane.WARNING_MESSAGE);
}
else{
//把输入的学号读入SQL语句,将SQL语句传给FinalTable类,
//把查询结果反回给table1,并将table1添加到窗口中
Stringstr=numbertext.getText();
FinalTabletable=newFinalTable();
table.setSQL("SELECT*FROM成绩表where学号="+Integer.parseInt(str));
table1=table.finalTable();
add(newJScrollPane(table1),SOUTH);
validate();
}
}
elseif(e.getSource()==seekAll){
////将SQL按总分排名顺序的语句传给FinalTable类,
//把查询结果反回给table1,并将table1添加到窗口中
FinalTabletable=newFinalTable();
table.setSQL("SELECT*FROM成绩表orderby总分DESC");
table1=table.finalTable();
add(newJScrollPane(table1),SOUTH);
validate();
}
}
}
3.4InterfaceDesign3.java
//按下添加按钮后的添加新记录的界面
importjava.awt.Color;
importjava.awt.FlowLayout;
importjava.awt.Font;
importjava.awt.event.*;
importstaticjava.awt.BorderLayout.*;
importjavax.swing.*;
publicclassInterfaceDesign3extendsJFrameimplementsActionListener{
Boxbasebox,boxV1,boxV2;//用BoxLayout布局来设置添加的JTextField文本框和对应的说明
JTextFieldtext1,text2,text3,text4,text5,text6;
JButtonadd;
JLabellabel1,label2,label3,label4,label5,label6;
//用于设置背景所用到的变量
JPanelpanel;
JLabellabel;
ImageIconbackground;
publicInterfaceDesign3(){
setLayout(newFlowLayout());
init();
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setTitle("添加");
}
voidinit(){
//添加背景图片
background=newImageIcon("012.JPG");
label=newJLabel(background);
label.setBounds(0,0,background.getIconWidth(),
background.getIconHeight());
this.getLayeredPane().setLayout(null);
//添加按钮极其注释文字,并设置字体颜色,大小
add=newJButton(newImageIcon("d.png"));
add(add);
//添加背景,并设置窗口大小为背景大小
add.setContentAreaFilled(false);
panel=(JPanel)this.getContentPane();
panel.setOpaque(false);
FlowLayoutf=newFlowLayout();
panel.setLayout(f);
panel.add(add);
getLayeredPane().setLayout(null);
getLayeredPane().add(label,newInteger(Integer.MIN_VALUE));
setBounds(350,150,background.getIconWidth(),background.getIconHeight());
Fontfont1=newFont("微软雅黑",
Font.BOLD+Font.TRUETYPE_FONT+Font.LAYOUT_LEFT_TO_RIGHT,15);
label1=newJLabel("学号"