java学生成绩管理系统课程设计报告以及代码共享

java学生成绩管理系统课程设计报告以及代码共享

《Java语言》课程期末作业

题 目第9题:学生成绩管理系统

学 院 计算机学院

专 业 计算机科学与技术

班 别

学 号姓 名

20xx年12月7日

一、课程题目

设计一个简易的学生成绩管理系统。用于记录学生的各科成绩,以及实现常用的统计功能。

(1) 记录学生的基本信息,如姓名、学号、专业、班级等

(2) 记录各科成绩

(3) 实现常用的统计功能,如:单科成绩排名、总分排名、统计成绩高于/低于某一临界值的学生、统计单科/总分平均值……

(4) 使用图形方式显示某些数据,如直方图显示各分数段的人数、绘制各科分数分布曲线……(可选)

(5) 必须使用数据库。

二、题目分析与设计

1. 注明所使用的开发环境(Eclipse、NetBeans,JBuilder)。

我使用的开发环境是Eclipse。

2. 论述题目的需求。给出软件功能架构图。

学生成绩管理,实现添加成绩记录、修改成绩记录,删除记录的功能。

java学生成绩管理系统课程设计报告以及代码共享

java学生成绩管理系统课程设计报告以及代码共享

3. 论述界面设计过程,指出其设计上的创意及组件的布局策略。

使用SDI形式。界面分上下两个部分,上部分是功能键,下部分是表格表现。就是简单好用。

4. 论述程序逻辑的实现

用户输入数据后,整理数据,通过JDBC连接数据库进行各种操作。

5、界面设计 2

三、测试分析

1.测试的预计结果

1、添加一项学生数据,学号1234,姓名xyf,班级计科8,英语成绩90,数学90,计算机75。

2、修改英语成绩88。

3、删除该记录

2. 本程序的测试情况,与预计结果作对比

1、添加

java学生成绩管理系统课程设计报告以及代码共享

3

2、修改

java学生成绩管理系统课程设计报告以及代码共享

3、删除

java学生成绩管理系统课程设计报告以及代码共享

说明:限于技术问题,本程序有比较多BUG,而且只造了部分功能,但是

java学生成绩管理系统课程设计报告以及代码共享

4

基本上可以实现文本的编辑。

附录:源代码

import java.awt.*;

import java.text.*;

import javax.swing.*;

import java.awt.event.*;

import java.sql.*;

import javax.swing.table.*;

import java.io.*;

import java.util.Vector;

public class asan1 extends WindowAdapter implements ActionListener {

JFrame frame; //进入系统界面

JFrame frame1; //主界面

JFrame Frame_Add; //添加学生的窗口

JFrame Frame_Del; //删除学生的窗口

JFrame Frame_Updata;//修改学生的窗口

JFrame Frame_Show; //查看学生的窗口

JTextField num=new JTextField(20); //学号

JTextField name=new JTextField(20); //姓名

JTextField great=new JTextField(20); //计算机

JTextField english=new JTextField(20); //英语

JTextField math=new JTextField(20); //数学

JTextField computer=new JTextField(20); //计算机

JComboBox pl;

public asan1()

{

stu_in();

}

public void setfont(JButton button) //设置按钮的大小及字体 {

button.setFont(new Font("华文彩云",Font.PLAIN,18)); button.setForeground(java.awt.Color.blue);

}

public void stu_in()

5

{

frame=new JFrame("学生成绩管理系统");

frame.setBounds(150,200,600,300); //窗口大小及开始在屏幕上的位置。 Container cp=frame.getContentPane();

cp.setLayout(new BorderLayout());

BackImage p= new BackImage();

p.setLayout(new GridBagLayout());

GridBagConstraints c = new GridBagConstraints();

cp.add(p,BorderLayout.CENTER);

JLabel label=new JLabel(" xx大学计算机学院08级8班xx");

label.setFont(new Font("华文彩云",Font.PLAIN,30));

JButton but_in=new JButton("进入系统");

JButton but_out=new JButton("退出系统");

but_in.setFont(new Font("华文彩云",Font.PLAIN,30));

but_out.setFont(new Font("华文彩云",Font.PLAIN,30));

but_in.addActionListener(this);

but_out.addActionListener(this);

p.add(but_in,c);

p.add(but_out,c);

frame.add(label,BorderLayout.PAGE_START);

frame.setResizable(false); //窗口不随鼠标拖动而改变大小 frame.addWindowFocusListener(this); //添加窗口的监控类

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.show();

}

public void stu_add()

{

Frame_Add=new JFrame("添加学生成绩"); //添加学生的窗口

Frame_Add.setResizable(false);

Container conterPane;

JPanel p=new JPanel();

JLabel J1=new JLabel(" 学号:");

JLabel J2=new JLabel(" 姓名:");

JLabel J6=new JLabel(" 班级:");

JLabel J3=new JLabel(" 英语:");

JLabel J4=new JLabel(" 数学:");

JLabel J5=new JLabel("计算机:");

6

JButton add=new JButton("添加"); add.addActionListener(this); //添加 JButton clear=new JButton("清空"); //清除 clear.addActionListener(this); JButton exit=new JButton("退出"); //退出 exit.addActionListener(this); GridBagLayout gridBag=new GridBagLayout(); GridBagConstraints gridBagCon; num=new JTextField(20); //学号 name=new JTextField(20); //姓名 great=new JTextField(20); //计算机 english=new JTextField(20); //英语 math=new JTextField(20); //数学 computer=new JTextField(20); //计算机 p.add(J1); J1.setLabelFor(num);p.add(num); p.add(J2); J2.setLabelFor(name);p.add(name); p.add(J6); J6.setLabelFor(great);p.add(great); p.add(J3); J3.setLabelFor(english);p.add(english); p.add(J4); J4.setLabelFor(math);p.add(math); p.add(J5); J5.setLabelFor(computer);p.add(computer); p.add(add); p.add(clear);

p.add(exit);

Frame_Add.setBounds(300,280,300,230); //窗口大小及开始在屏幕上的位置。

Frame_Add.add(p); Frame_Add.show(); } public void stu_del() { Frame_Del=new JFrame("删除学生成绩"); //添加学生的窗口 Frame_Del.setResizable(false); Container conterPane; JPanel p=new JPanel(); String XueHao=""; Data_access DB=new Data_access(); 7

Vector rec_vector= new Vector(); //列名集合 int numberOfColumns; try { String query="SELECT ID FROM student";

DB.rs=DB.stmt.executeQuery(query);

while(DB.rs.next())

{ XueHao= DB.rs.getString(1);

} rec_vector.addElement(XueHao);

}catch(Exception ex)

{

JOptionPane.showMessageDialog( null , "连接数据库失败" ,"数据连接" , JOptionPane.ERROR_MESSAGE) ;

}; pl=new JComboBox(rec_vector); pl.setEditable(true); pl.setPreferredSize(new Dimension(135,22)); //框的长和高 pl.addActionListener(this); JLabel J1=new JLabel(" 学号:"); JButton updata=new JButton("删除"); updata.addActionListener(this); //添加 JButton exit1=new JButton("OUT"); //退出 exit1.addActionListener(this); GridBagLayout gridBag=new GridBagLayout(); GridBagConstraints gridBagCon; p.add(J1);p.add(pl); p.add(updata); p.add(exit1); Frame_Del.setBounds(300,280,210,100); //窗口大小及开始在屏幕上的 Frame_Del.add(p); 位置。 Frame_Del.show(); } public void stu_updata() 8

{ Frame_Updata=new JFrame("修改学生成绩"); //添加学生的窗口 Frame_Updata.setResizable(false); Container conterPane; JPanel p=new JPanel(); String XueHao=""; Data_access DB=new Data_access(); Vector rec_vector= new Vector(); //列名集合 int numberOfColumns; try {

String query="SELECT ID FROM student";

DB.rs=DB.stmt.executeQuery(query);

while(DB.rs.next())

{

XueHao=DB.rs.getString(1); rec_vector.addElement(XueHao); }

}catch(Exception ex)

{ JOptionPane.showMessageDialog( null , "连接数据库失败" ,"数据连接" , JOptionPane.ERROR_MESSAGE) ;

};

pl=new JComboBox(rec_vector); pl.setEditable(true); pl.setPreferredSize(new Dimension(135,22)); //框的长和高 pl.addActionListener(this); JLabel J1=new JLabel(" 学号:"); JLabel J2=new JLabel(" 姓名:"); JLabel J6=new JLabel(" 班级:"); JLabel J3=new JLabel(" 英语:"); JLabel J4=new JLabel(" 数学:"); JLabel J5=new JLabel("计算机:"); JButton updata=new JButton("修改"); updata.addActionListener(this); //添加 JButton clear1=new JButton("清空"); //清除 9

clear1.addActionListener(this); JButton exit1=new JButton("OUT"); //退出 exit1.addActionListener(this); GridBagLayout gridBag=new GridBagLayout(); GridBagConstraints gridBagCon; name=new JTextField(12); //姓名 great=new JTextField(12); //计算机 english=new JTextField(12); //英语 math=new JTextField(12); //数学 computer=new JTextField(12); //计算机 p.add(J1);p.add(pl); p.add(J2); J2.setLabelFor(name);p.add(name); p.add(J6); J6.setLabelFor(great);p.add(great); p.add(J3); J3.setLabelFor(english);p.add(english); p.add(J4); J4.setLabelFor(math);p.add(math); p.add(J5); J5.setLabelFor(computer);p.add(computer); p.add(updata); p.add(clear1);

p.add(exit1);

Frame_Updata.setBounds(300,280,210,230); //窗口大小及开始在屏幕上的位置。

} Frame_Updata.add(p); Frame_Updata.show(); public void stu_show() { Frame_Show=new JFrame("查看学生成绩"); //添加学生的窗口 Frame_Show.setResizable(false); Container conterPane; JPanel p=new JPanel(); Data_access DB=new Data_access(); Vector rec_vector= new Vector(); //列名集合 int numberOfColumns; String XueHao=""; try {

String query="SELECT ID FROM student";

DB.rs=DB.stmt.executeQuery(query);

while(DB.rs.next())

10

{ XueHao= DB.rs.getString(1); rec_vector.addElement(XueHao); }

}catch(Exception ex)

{

JOptionPane.showMessageDialog( null , "连接数据库失败" ,"数据连接" , JOptionPane.ERROR_MESSAGE) ;

};

pl=new JComboBox(rec_vector);

pl.setEditable(true);

pl.setPreferredSize(new Dimension(135,22)); //框的长和高

pl.addActionListener(this);

JLabel J1=new JLabel(" 学号:");

JLabel J2=new JLabel(" 姓名:");

JLabel J6=new JLabel(" 班级:");

JLabel J3=new JLabel(" 英语:");

JLabel J4=new JLabel(" 数学:");

JLabel J5=new JLabel("计算机:");

name=new JTextField(12); //姓名

great=new JTextField(12); //计算机

english=new JTextField(12); //英语

math=new JTextField(12); //数学

computer=new JTextField(12); //计算机

name.setEditable(false);

great.setEditable(false);

english.setEditable(false);

math.setEditable(false);

computer.setEditable(false);

p.add(J1);p.add(pl);

p.add(J2); J2.setLabelFor(name);p.add(name);

p.add(J6); J6.setLabelFor(great);p.add(great);

p.add(J3); J3.setLabelFor(english);p.add(english);

p.add(J4); J4.setLabelFor(math);p.add(math);

p.add(J5); J5.setLabelFor(computer);p.add(computer);

JButton show=new JButton("查看");

show.addActionListener(this);

p.add(show);

11

Frame_Show.setBounds(300,280,210,230); //窗口大小及开始在屏幕上的位置。

Frame_Show.add(p);

Frame_Show.show();

}

public int mian_JFrame() throws Exception

{

JPanel pane= new JPanel();

frame1=new JFrame("学生成绩管理系统");

JTable friends=new JTable();

DefaultTableModel dt=new DefaultTableModel();

friends.setModel(dt);

Vector vecColumnName = new Vector(); //列名集合

int numberOfColumns;

int b=1;

Stu_Change Sadd=new Stu_Change();

try

{

Sadd.stuSum();

Data_access DB=new Data_access();

numberOfColumns=DB.rsmd.getColumnCount();

//以下是显示数据库中的列名的代码

dt.addColumn("学号");

dt.addColumn("姓名");

dt.addColumn("班级");

dt.addColumn("英语");

dt.addColumn("数学");

dt.addColumn("计算机");

dt.addColumn("总分");

//以下是在表格中显示数据中的内容

while(DB.rs.next())

12

{

Vector newRow=new Vector();

int c=1;

while(c<=numberOfColumns)

{

newRow.addElement(DB.rs.getString(c));

c++;

}

dt.addRow(newRow);

}

}catch(Exception ex) { JOptionPane.showMessageDialog( null , "连接数据库失败" ,"数据连接" , JOptionPane.ERROR_MESSAGE) ;

return 0;

};

friends.setPreferredScrollableViewportSize(new Dimension(580, 200));//设置表格的大

friends.setRowHeight (25);//设置每行的高度为20

friends.setRowHeight (0, 25);//设置第1行的高度为20

friends.setRowMargin (2);//设置相邻两行单元格的距离5

friends.setRowSelectionAllowed (true);//设置可否被选择.默认为false

friends.setSelectionBackground (Color.white);//设置所选择行的背景色

friends.setSelectionForeground (Color.red);//设置所选择行的前景色

friends.setGridColor (Color.black);//设置网格线的颜色

friends.clearSelection ();//取消选择

friends.setDragEnabled (false);//不懂这个

friends.setShowGrid (false);//是否显示网格线

friends.setShowHorizontalLines (false);//是否显示水平的网格线

friends.setShowVerticalLines (true);//是否显示垂直的网格线

friends.setEditable(false);

friends.doLayout ();

friends.setBackground (Color.lightGray);

JScrollPane pane3 = new JScrollPane (friends);//JTable最好加在JScrollPane上

pane.setPreferredSize (new Dimension(600,300));

pane.setBackground (Color.orange); 小

// 13

JPanel panel = new JPanel(new FlowLayout());

JButton but1=new JButton("添加数据");

setfont(but1);

panel.add(but1);

JButton but2=new JButton("修改数据");

setfont(but2);

panel.add(but2);

JButton but3=new JButton("删除数据");

setfont(but3);

panel.add(but3);

JButton but4=new JButton("查看数据");

setfont(but4);

panel.add(but4);

JButton but5=new JButton("保存退出");

JPanel pane2 = new JPanel(new BorderLayout());

JLabel label=new JLabel("xx大学计算机学院08级8班xx");

pane.add (panel,BorderLayout.PAGE_END);

pane.add (pane3,BorderLayout.SOUTH);

pane.add (label,BorderLayout.LINE_END); but1.addActionListener(this); but2.addActionListener(this); but3.addActionListener(this); setfont(but5); panel.add(but5);

but4.addActionListener(this);

but5.addActionListener(this);

frame1.setBounds(150,200,600,300); //窗口大小及开始在屏幕上的位置。

frame1.setContentPane (pane); frame1.pack(); frame1.setResizable(false); //窗口不随鼠标拖动而改变大小 frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame1.addWindowFocusListener(this); //添加窗口的监控类 frame1.show(); return 0; } 14

public void actionPerformed(ActionEvent e) //各按钮的事件处理 {

String s;

s=e.getActionCommand(); //记录按钮的名称 // Object obj=e.getSource();

// if(obj==add)

if(s=="退出系统")

{

try //延迟函数

{

Thread.currentThread().sleep(1000);

}

catch(InterruptedException e1){}

frame.setVisible(false); //窗口自动消失

}

else if(s=="进入系统")

{

frame.setVisible(false); //窗口自动消失

try

{

mian_JFrame();

}catch(Exception e1){};

}

else if(s=="保存退出")

{

try //延迟函数

{

Thread.currentThread().sleep(500);

}

catch(InterruptedException e1){}

frame1.setVisible(false); //窗口自动消失

}

else if(s=="添加数据")

{

try //延迟函数

{

stu_add();

15

}

catch(Exception e1){}

}

else if(s=="修改数据")

{

try //延迟函数 { stu_updata(); } catch(Exception e1){} } else if(s=="删除数据") { try //延迟函数

{

stu_del();

}

catch(Exception e1){}

}

else if(s=="查看数据")

{ try //延迟函数

{

stu_show();

}

catch(Exception e1){}

}

else if(s=="添加")

{

Stu_Change Sadd=new Stu_Change(); Sadd.stuAdd(num.getText(),name.getText(),great.getText(),Integer.valueOf(english.getText()),Integer.valueOf(math.getText()),Integer.valueOf(computer.getText()));

try //延迟函数

{ frame1.setVisible(false); //窗口自动消失

Frame_Add.setVisible(false);

mian_JFrame();

stu_add();

16

}

catch(Exception e1){}

}

else if(s=="清空")

{ num.setText(""); //学号 name.setText(""); //姓名 great.setText(""); //计算机 english.setText(""); //英语 math.setText(""); //数学 computer.setText(""); //计算机 } else if(s=="退出") { try //延迟函数

{

Frame_Add.setVisible(false); //窗口自动消失

Frame_Updata.setVisible(false);

}

catch(Exception e1){}

} else if(s=="OUT") { try //延迟函数

{

Frame_Updata.setVisible(false);

}

catch(Exception e1){}

}

else if(s=="修改")

{ Stu_Change Sadd=new Stu_Change();

Sadd.stuUpdate(pl.getSelectedItem().toString(),name.getText(),great.getText(),Integer.valueOf(english.getText()),Integer.valueOf(math.getText()),Integer.valueOf(computer.getText()));

try //延迟函数 { frame1.setVisible(false); //窗口自动消失 Frame_Updata.setVisible(false); stu_updata(); mian_JFrame(); } catch(Exception e1){} 17

} else if(s=="删除") { Stu_Change Sadd=new Stu_Change(); Sadd.stuDel(pl.getSelectedItem().toString()); try //延迟函数

{

frame1.setVisible(false); //窗口自动消失

Frame_Del.setVisible(false);

mian_JFrame();

}

catch(Exception e1){}

} else if(s=="查看") { Data_access DB=new Data_access(); String Snum=pl.getSelectedItem().toString(); String sql="SELECT * FROM student WHERE ID='"+Snum+"'"; String Sname="0"; String Sgreat=""; String Senglish=""; String Smath=""; String Scomputer="";

try

{

DB.rs=DB.stmt.executeQuery(sql); DB.rs.next(); Sname=DB.rs.getString("name"); Sgreat=DB.rs.getString("great"); //计算机 Senglish=DB.rs.getString("english"); //英语 Smath=DB.rs.getString("math"); //数学 Scomputer=DB.rs.getString("computer"); //计算机

}

catch(Exception e1) { JOptionPane.showMessageDialog( null , "连接数据库失败" ,"数据连接" , JOptionPane.ERROR_MESSAGE) ;

18

}

this.name.setText(Sname.toString());

this.great.setText(Sgreat.toString());

this.english.setText(Senglish.toString());

this.math.setText(Smath.toString());

this.computer.setText(Scomputer.toString());

}

}

public static void main(String args[])

{

new asan1();

}

}

class BackImage extends JPanel //背景图片

{

public BackImage(){};

public void paint(Graphics g)

{

int x=0,y=0;

java.net.URL img=getClass().getResource("2.jpg");

ImageIcon icon = new ImageIcon(img);

g.drawImage(icon.getImage(),x,y,getSize().width,getSize().height,this); }

}

19

相关推荐