系统架构
界面设计
主界面:
1、建立一个容器,标题定为“学生成绩管理系统”,设置大小。
2、定义一个菜单(成绩单管理),在菜单中添加按钮(添加成绩)。
3、设置容器的的背景色。
4、在容器中添加字(学生成绩管理模块),设置字体为宋体,大小为45,设置倾斜度和颜色。
增加成绩单界面:
1、建立容器,使用复杂布局,添加四个JPanel(jp1,jp2,jp3,jp4)。
2、四个Jpanel都使用流式布局,且jp1,jp2,jp3向左靠齐,jp4居中。
3、在jp1中依次添加标签(学生姓名)、文本框、标签(学生班级)、文本框。
4、在jp2中依次添加标签(考试科目)、文本框、标签(考试成绩)、文本框、标签(考试时间)、文本框。
5、在jp3中添加标签(备注)、文本框。
6、在jp4中依次添加按钮保存、清空、返回。
7、监听三个按钮。当鼠标按下保存时,判断除了备注以外的文本框是否都有信息,若有则将数据读取到数据库中。若没有,则弹出提示框,提示用户某文本框信息不能为空(利用JOptionPane.showMessageDialog)。
8、若成功将数据读入数据库则跳出提示框“成绩单添加成功”,否则弹出“添加成绩单失败”(利用JOptionPane.showMessageDialog)。
数据库说明
数据库名为test
表名为student
第一列:id自增列
第二列:姓名(name),varchar类型,长度为20,不能为空。
第三列:班级(class),varchar类型,长度为5,不能为空。
第四列:科目(subject),varchar类型,长度为10,不能为空。
第五列:成绩(score),int类型,不能为空。
第六列:考试时间(time),varchar类型,长度为10,不能为空。
第七列:备注(remark),varchar类型,长度为50.
(代码请看最后一页)
程序设计说明
类说明:
一、 FirstStudent
主界面
二、 SecondStudent
学生信息输入界面
变量说明:
一、 FirstStudent
private JPanel panel:容器
public JMenuItem ji:增加成绩单按钮
JMenuBar jb:菜单栏
JMenu jm:成绩单管理菜单
SecondStudent in :实例化添加成绩单页面的类
FirstStudent inst:实例化主界面的类
二、 SecondStudent
JPanel jp1:添加学生姓名,学生班级的容器
JPanel jp2:添加考试科目、成绩、时间的容器
JPanel jp3:添加备注的容器
JPanel jp4:添加保存、清空、返回按钮的容器
JTextField jt1:学生姓名所对应的文本框
JTextField jt2:学生班级所对应的文本框
JTextField jt3:考试科目所对应的文本框
JTextField jt4:考试成绩所对应的文本框
JTextField jt5:考试时间所对应的文本框
JTextField jt6:备注所对应的文本框
JLabel jl1;学生姓名标签
JLabel jl2:学生班级标签
JLabel jl3:考试科目标签
JLabel jl4:考试成绩标签
JLabel jl5:考试时间标签
JLabel jl6:备注标签
JButton jb1:保存按钮
JButton jb2:清空按钮
JButton jb3:返回按钮
String s1:获得学生姓名文本框中的内容
String s2:获得学生班级框中的内容
String s3:获得考试科目的内容
String s4:获得考试成绩的内容
String s5:获得考试时间的内容
String s6:获得备注框中的内容
int a:将考试成绩转为整形赋给a
String sql:数据库语言
int n:是否链接数据库的判断返回值
FirstStudent inst :实例化主界面类
SecondStudent i:实例化添加成绩单界面类
流程说明:
1、主界面:
2、增加成绩单界面:
3、添加成功后弹出提示框:
4、某一项未添加则弹出提示框:
主界面代码:
package gui;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class FirstStudent extends JFrame {
private JPanel panel;
public JMenuItem ji=new JMenuItem("增加成绩单");
public FirstStudent() {
super();
this.setSize(400, 300);
this.setTitle("学生成绩管理系统");
JMenuBar jb=new JMenuBar();
this.setJMenuBar(jb);
JMenu jm=new JMenu("成绩单管理");
jb.add(jm);
jm.add(ji);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel() {
private static final long serialVersionUID = 2934347922805759551L;
public void paint(Graphics g) {
this.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setFont(new Font("宋体", Font.BOLD, 45));
g2.setColor(new Color(65, 100, 0));
g2.shear(0.1, -0.4);
g2.drawString("学生成绩管理模块", 0, 200);
}
};
panel.setBackground(Color.RED);
getContentPane().add(panel, BorderLayout.CENTER);
ji.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
SecondStudent in = new SecondStudent();
in.setLocationRelativeTo(null);
in.setVisible(true);
}});
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
FirstStudent inst = new FirstStudent();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}
});
}
}
添加成绩单界面代码:
public class SecondStudent extends JFrame {
JPanel jp1=new JPanel();
JPanel jp2=new JPanel();
JPanel jp3=new JPanel();
JPanel jp4=new JPanel();
JTextField jt1=new JTextField(10);
JTextField jt2=new JTextField(10);
JTextField jt3=new JTextField(10);
JTextField jt4=new JTextField(10);
JTextField jt5=new JTextField(10);
JTextField jt6=new JTextField(20);
JLabel jl1=new JLabel("学生姓名");
JLabel jl2=new JLabel("学生班级");
JLabel jl3=new JLabel("考试科目");
JLabel jl4=new JLabel("考试成绩");
JLabel jl5=new JLabel("考试时间");
JLabel jl6=new JLabel("备注");
JButton jb1=new JButton("保存");
JButton jb2=new JButton("清空");
JButton jb3=new JButton("返回");
public static Connection conn=null;
public static PreparedStatement ps=null;
public SecondStudent(){
setSize(400, 300);
setTitle("增加成绩单");
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
layoujp1();
layoujp2();
layoujp3();
layoujp4();
setLayout(new GridLayout(4,1));
add(jp1);
add(jp2);
add(jp3);
add(jp4);
jb1.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
String s1=jt1.getText();
String s2=jt2.getText();
String s3=jt3.getText();
String s4=jt4.getText();
String s5=jt5.getText();
String s6=jt6.getText();
if(s1.equals("")){
JOptionPane.showMessageDialog(null, "姓名不能为空!");
return;
}
else if(s2.equals("")){
JOptionPane.showMessageDialog(null, "班级不能为空!");
return;
}
else if(s3.equals("")){
JOptionPane.showMessageDialog(null, "科目不能为空!");
return;
}
else if(s4.equals("")){
JOptionPane.showMessageDialog(null, "成绩不能为空!");
return;
}
else if(s5.equals("")){
JOptionPane.showMessageDialog(null, "考试时间不能为空!");
return;
}
int a=Integer.parseInt(s4);
try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1434;DatabaseName=test","sa","123456");
String sql="insert into student (name,class,subject,score,time,remark) values(?,?,?,?,?,?);";
ps=conn.prepareStatement(sql);
ps.setString(1, s1);
ps.setString(2, s2);
ps.setString(3, s3);
ps.setInt(4, a);
ps.setString(5, s5);
ps.setString(6, s6);
int n=ps.executeUpdate();
System.out.println("添加行数"+n);
if(n>=0){
JOptionPane.showMessageDialog(null, "成绩单添加成功!");
}
else{
JOptionPane.showMessageDialog(null, "成绩单添加失败!");
}
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
} catch (SQLException e1) {
e1.printStackTrace();
}
finally{
if(ps!=null){
try {
ps.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}
}});
jb2.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
jt1.setText(null);
jt2.setText(null);
jt3.setText(null);
jt4.setText(null);
jt5.setText(null);
jt6.setText(null);
}});
jb3.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
FirstStudent inst = new FirstStudent();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}});
}
private void layoujp1() {
jp1.setLayout(new FlowLayout(0));
jp1.add(jl1);
jp1.add(jt1);
jp1.add(jl2);
jp1.add(jt2);
}
private void layoujp2() {
jp2.setLayout(new FlowLayout(0));
jp2.add(jl3);
jp2.add(jt3);
jp2.add(jl4);
jp2.add(jt4);
jp2.add(jl5);
jp2.add(jt5);
}
private void layoujp3() {
jp3.setLayout(new FlowLayout(0));
jp3.add(jl6);
jp3.add(jt6);
}
private void layoujp4() {
jp4.setLayout(new FlowLayout(1));
jp4.add(jb1);
jp4.add(jb2);
jp4.add(jb3);
}
public static void main(String[] args) {
SecondStudent i=new SecondStudent();
i.setLocationRelativeTo(null);
i.setVisible(true);
}
}
数据库代码:
create database test;
create table student(
id int identity(1,1),
name varchar(20) not null,
class varchar(5) not null,
subject varchar(10) not null,
score int not null,
time varchar(10) not null,
remark varchar(50) not null
);
select*from student;