学生成绩管理系统
项目名称:学生成绩管理系统
参与学生:杜冰 黄伟宏 王宇 指导老师:沈军 实验日期:2015.11.10
目 录
1. 实验工具介绍...................................................... 3 1.1 Java介绍.................................................. 3 1.2 数据库介绍................................................ 3 2. 系统功能介绍...................................................... 4 3. 概要设计............................................................ 4 4. 数据库设计 . ........................................................ 5 4.1 数据库设计................................................ 5 4.2 设计思路及实现方法.................................... 6 5. 界面设计............................................................ 6 6. 详细设计............................................................ 9 7. 连接数据库......................................................... 40 8. 小结.................................................................. 45
1. 实验工具介绍
1.1 Java 介绍:它最初被命名为Oak ,目标设定在家用电器等小型系统的编程语
言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun 放弃了该项计划。就在Oak 几近失败之时,随着互联网的发展,Sun 看到了Oak 在计算机网络上的广阔应用前景,于是改造了Oak ,以“Java”的名称正式发布。
Java 编程语言的风格十分接近C 、C++语言。Java 是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心,Java 舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming )、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在 J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。 与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。“Java 语言靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。 Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。 Java 平台是基于 Java 语言的平台。这样的平台目前非常流行,因此微软公司推出了与之竞争的.NET 平台以及模仿 Java 的 C#语言。
1.2 数据库介绍:
美国Microsoft 公司推出的一种关系型数据库系统。SQL Server是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT 的有机结合,提供了基于事务的企业级信息管理系统方案。
SQL Server 2008:
SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本。这篇文章详细介绍了Microsoft SQL Server 2008中的新的特性、优点和功能…… 微软的这个数据平台满足这些数据爆炸和下一代数据驱动应用程序的需求,支持数据平台愿景:关键任务企业数据平台、动态开发、关系数据和商业智能。许多因素致使产生了信息存储爆炸。有了新的信息类型,例如图片和视频的数字化,和从RFID 标签获得的传感器信息,公司的数字信息的数量在急剧增长。遵守规范和全球化的发展要求信息存储的安全性和在任何时候都可用。
J DBC 介绍:
J DBC (Java Data Base Connectivity,java数据库连接)是一种用于执行SQL 语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java 语言编写的类和接口组成。JDBC 提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC 也是个商标名。
2. 系统功能介绍
本系统是采用Java 语言和SQL server2008 R2数据库开发的学生成绩管理系统,其开发主要包括后台数据库建立和维护以及前端应用程序的开发两个方面,本系统的主要功能包括:用户注册、学生成绩添加、学生成绩更改和学生成绩查看。
3. 概要设计
为了更深入地理解Java 具体的应用编程技巧,本设计使用eclipse 开发出一个学生管理系统,其中Java 是一个能开放代码的开发工具。根据学生的成绩,管理员通过自己的账号密码登录该系统,并可以根据需要对其功能进行运用,例如:添加、修改、查看和删除学生信息等。
4. 数据库设计
4.1 数据库设计
根据需求建立相应的表和存储过程。 下面是数据库中的表:
Course 表:
Student表:
SC
:
Teacher 表:
4.2 设计思路及实现方法
首先进行数据库的设计,然后设计母版页,接着通过表格设计其他所需页面,页面设计完成后,通过所学的Java 程序设计的知识进行功能代码的编写,连接数据库并调试无误后,再尽量完善整个系统功能及其外观。
5. 界面设计
登陆界面:
查询界面:
添加界面:
6. 详细设计(源代码)
Java 设计:
登陆:
package pp;
import java.sql.*; import java.awt.*;
import java.awt.event.*; class dl extends JApplet {
private static String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; private static String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=test"; private static String userName="sa";
private static String userPwd="123456"; Connection conn=null;
PreparedStatement ps=null;
JFrame jfrm0=new JFrame("学生考试成绩查询"); JLabel jlab0=new JLabel("用户名:",JLabel.CENTER); JLabel jlab1=new JLabel("密 码:",JLabel.CENTER);
JLabel jlab3=new JLabel("欢迎登录学生管理系统",JLabel.CENTER); JTextField jtf=new JTextField(9);
JPasswordField jtf1=new JPasswordField(9); JButton bun1=new JButton("登陆"); JButton bun2=new JButton("注册"); public void setwindows( ) {
jfrm0.add(jlab3);
jlab3.setLocation(170, 0); jlab3.setVisible(true); jlab3.setSize(200, 40);
Font fnt22=new Font("Serief",Font.PLAIN,15); jlab3.setFont(fnt22); jfrm0.setLayout(null); jfrm0.setSize(600,400); jfrm0.setLocation(350, 130);; jfrm0.setLayout(null);
bun1.setBounds(290,300,60,20); bun1.setToolTipText("确认登陆"); jfrm0.add(bun1);
jfrm0.setVisible(true);///登陆按钮
jfrm0.setBackground(Color.darkGray);// Container h=jfrm0.getContentPane(); h.setBackground(Color.cyan);//背景颜色 jfrm0.setLayout(null);
bun2.setBounds(200,300,60,20); bun2.setToolTipText("确认注册"); jfrm0.add(bun2);
jfrm0.setVisible(true);///注册按钮
jfrm0.setBackground(Color.darkGray);// Container o=jfrm0.getContentPane(); o.setBackground(Color.cyan);//背景颜色 jlab0.setOpaque(false); //设置标签透明
jlab0.setForeground(Color.black); //标的前景色 jlab0.setLocation(70,40); //标签位置 jlab0.setSize(100,20); //标签大小
jlab0. setToolTipText("请输入用户名");//标签提示信息 Font fnt0=new Font("Serief",Font.PLAIN,15); jlab0.setFont(fnt0); jfrm0.add(jlab0);
jfrm0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jfrm0.setVisible(true);///用户名标签
jlab1.setOpaque(false); //设置标签透明
jlab1.setForeground(Color.black); //标的前景色
jlab1.setLocation(290,40); //标签位置
jlab1.setSize(70,20); //标签大小
jlab1. setToolTipText("请输入密码");//标签提示信息
Font fnt1=new Font("Serief",Font.PLAIN,15);
jlab1.setFont(fnt1);
jfrm0.add(jlab1);
jfrm0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm0.setVisible(true);//密码标签
jtf.setBounds(160,40,110,20);
jtf.setEditable(true);
jfrm0.add(jtf);
jtf1.setBounds(360,40,110,20);
jtf1.setEditable(true);
jfrm0.add(jtf1);
}
public void initd1()
{
setwindows( );
connectDB();
bun1.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
doShow(e);
}
});
bun2.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
zc zc1=new zc();
zc1.initz1();
}
});
}
private void connectDB()
{
try
{
Class.forName(driverName);
conn=DriverManager.getConnection(dbURL,userName,userPwd);
}
catch(Exception ex)
{
11
ex.printStackTrace();
}
}
private void doShow(ActionEvent e)
{
String sNo=jtf.getText();
char[] password=jtf1.getPassword();
String mm=new String(password);
ResultSet rs=null;
String teachersql1=" SELECT * FROM teacher WHERE 用户=? and 密码=? "; try
{
ps=conn.prepareStatement(teachersql1);
ps.setString(1,sNo);
ps.setString(2,mm);
rs=ps.executeQuery();
if(rs.next())
{
JOptionPane.showMessageDialog(null,"登陆成功!");
chaxun cx1=new chaxun();
cx1.init();
}
else
{
JOptionPane.showMessageDialog(null,"用户名或者密码错误!");
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
public class denglu
{
public static void main (String[] args)
{
dl s1=new dl();
s1.initd1();
}
}
注册:package pp;
12
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import javax.swing.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
class zc extends JApplet
{
private static String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; private static String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=test"; private static String userName="sa";
private static String userPwd="123456";
Connection conn=null;
PreparedStatement ps=null;
JFrame jfrm0=new JFrame("学生考试成绩查询");
JLabel jlab0=new JLabel("用户名:",JLabel.CENTER);
JLabel jlab1=new JLabel("密码:",JLabel.CENTER);
JTextField jtf=new JTextField(9);
JPasswordField jtf1=new JPasswordField(9);
JButton bun1=new JButton("注册");
public void setwindows( )
{
13
JFrame jfrm=new JFrame("注册用户");
JLabel jlab=new JLabel("用户名:",JLabel.CENTER);
JLabel jlab1=new JLabel("密 码:",JLabel.CENTER);
//JTextField jtf=new JTextField(10);
//JTextField jtf1=new JTextField(10);
jfrm.setLayout(null);
jfrm.setSize(400,300);
jfrm.setLocation(400, 200);
jfrm.setBackground(Color.cyan);//
Container h=jfrm.getContentPane();
h.setBackground(Color.cyan);//背景颜色
jlab.setOpaque(false); //设置标签透明
jlab.setForeground(Color.black); //标的前景色
jlab.setLocation(30,70); //标签位置
jlab.setSize(130,20); //标签大小
Font fnt=new Font("Serief",Font.BOLD,15);
jlab.setFont(fnt);
jfrm.add(jlab);
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm.setVisible(true);///用户名标签
jlab1.setOpaque(false); //设置标签透明
jlab1.setForeground(Color.black); //标的前景色
jlab1.setLocation(30,130); //标签位置
jlab1.setSize(130,30); //标签大小
Font fnt1=new Font("Serief",Font.BOLD,15);
jlab1.setFont(fnt1);
14
jfrm.add(jlab1);
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm.setVisible(true);//密码标签
jtf.setBounds(160,70,150,25);
jtf.setEditable(true);
jfrm.add(jtf);
jtf1.setBounds(160,130,150,25);
jtf1.setEditable(true);
jfrm.add(jtf1);
jfrm.add(bun1);
jfrm.setVisible(true);
bun1.setBounds(160, 220, 70, 30);
}
public void initz1()
{
setwindows( );
connectDB();
bun1.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
doShow(e);
}
});
}
private void connectDB()
15
{
try
{
Class.forName(driverName);
conn=DriverManager.getConnection(dbURL,userName,userPwd);
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
private void doShow(ActionEvent e)
{
String sNo=jtf.getText();
char[] password=jtf1.getPassword();
String mm=new String(password);
String denglusql1="INSERT INTO teacher (用户, 密码)" +
"VALUES (?,?)" ;
try
{
ps=conn.prepareStatement(denglusql1);
ps.setString(1,sNo);
ps.setString(2,mm);
int count=ps.executeUpdate();
JOptionPane.showMessageDialog(null,"注册成功!");
}
16
catch (Exception ex)
{
ex.printStackTrace();
JOptionPane.showMessageDialog(null,"注册失败!");
}
}
}
public class zhuce
{
public static void main (String[] args)
{
zc s1=new zc();
s1.initz1();
}
}
查询:
package pp;
import javax.swing.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
class chaxun extends JApplet
{
private static String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; 17
private static String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=test"; private static String userName="sa";
private static String userPwd="123456";
private Connection conn ;
private Statement stmt ;
JFrame jfrm0=new JFrame("学生考试成绩查询");
JLabel jlab0=new JLabel("学号:",JLabel.CENTER);
JLabel jlab=new JLabel("课程号:",JLabel.CENTER);
JLabel jlab1=new JLabel("姓 名:",JLabel.CENTER);
JLabel jlab2=new JLabel("课 程:",JLabel.CENTER);
JLabel jlab3=new JLabel("成 绩:",JLabel.CENTER);
JTextField jtf=new JTextField(10);
JTextField jtf1=new JTextField(10);
JTextArea jtf2=new JTextArea(1,10);
JTextArea jtf3=new JTextArea(1,10);
JTextArea jtf4=new JTextArea(1,10);
JButton bun1=new JButton("查询");
JButton bun2=new JButton("修改");
JButton bun3=new JButton("添加");
JButton bun4=new JButton("删除");
public void setwindows( )
{
jfrm0.setLayout(null);
jfrm0.setSize(450,500);
jfrm0.setLocation(400, 150);
//JButton bun3=new JButton("添加学生");
18
jfrm0.setLayout(null);
bun3.setBounds(70,400,100,30);
bun3.setToolTipText("添加学生信息");
jfrm0.add(bun3);
jfrm0.setVisible(true);///添加按钮
jfrm0.setLayout(null);
bun2.setBounds(250,400,100,30);
bun2.setToolTipText("删除该学生信息");
jfrm0.add(bun2);
jfrm0.setVisible(true);///删除按钮
jfrm0.setLayout(null);
bun1.setBounds(180,120,70,30);
bun1.setToolTipText("查询学生成绩");
jfrm0.add(bun1);
jfrm0.setVisible(true);///查询按钮
jfrm0.setLayout(null);
bun2.setBounds(80,400,70,30);
bun2.setToolTipText("修改学生成绩");
jfrm0.add(bun2);
jfrm0.setVisible(true);///修改按钮
jfrm0.setLayout(null);
bun3.setBounds(180,400,70,30);
bun3.setToolTipText("添加学生成绩");
jfrm0.add(bun3);
jfrm0.setVisible(true);///添加按钮
jfrm0.setLayout(null);
19
bun4.setBounds(280,400,70,30);
bun4.setToolTipText("删除学生成绩");
jfrm0.add(bun4);
jfrm0.setVisible(true);///删除按钮
jfrm0.setBackground(Color.darkGray);//
Container h=jfrm0.getContentPane();
h.setBackground(Color.cyan);//背景颜色
jlab0.setOpaque(false); //设置标签透明
jlab0.setForeground(Color.black); //标的前景色
jlab0.setLocation(0,40); //标签位置
jlab0.setSize(70,30); //标签大小
jlab0. setToolTipText("请输入学号");//标签提示信息 Font fnt0=new Font("Serief",Font.PLAIN,20);
jlab0.setFont(fnt0);
jfrm0.add(jlab0);
jfrm0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jfrm0.setVisible(true);///学号标签
jlab.setOpaque(false); //设置标签透明
jlab.setForeground(Color.black); //标的前景色
jlab.setLocation(210,40); //标签位置
jlab.setSize(70,30); //标签大小
jlab. setToolTipText("请输入学号");//标签提示信息 Font fnt9=new Font("Serief",Font.PLAIN,20);
jlab.setFont(fnt9);
jfrm0.add(jlab);
jfrm0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 20
jfrm0.setVisible(true);///课程号标签
jlab1.setOpaque(false); //设置标签透明
jlab1.setForeground(Color.black); //标的前景色
jlab1.setLocation(80,190); //标签位置
jlab1.setSize(70,30); //标签大小
jlab1. setToolTipText("姓名");//标签提示信息
Font fnt1=new Font("Serief",Font.PLAIN,20);
jlab1.setFont(fnt1);
jfrm0.add(jlab1);
jfrm0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm0.setVisible(true);//姓名标签
jlab2.setOpaque(false); //设置标签透明
jlab2.setBackground(Color.cyan);//标签背景色
jlab2.setForeground(Color.black); //标的前景色
jlab2.setLocation(80,240); //标签位置
jlab2.setSize(70,30); //标签大小
//jlab2. setToolTipText("年龄");//标签提示信息
Font fnt2=new Font("Serief",Font.PLAIN,20);
jlab2.setFont(fnt2);
jfrm0.add(jlab2);
jfrm0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm0.setVisible(true);//年龄标签
jlab3.setOpaque(false); //设置标签透明
jlab3.setBackground(Color.cyan);//标签背景色
jlab3.setForeground(Color.black); //标的前景色
jlab3.setLocation(80,290); //标签位置
21
jlab3.setSize(70,30); //标签大小
// jlab3. setToolTipText("性别");//标签提示信息
Font fnt3=new Font("Serief",Font.PLAIN,20);
jlab3.setFont(fnt3);
jfrm0.add(jlab3);
jfrm0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm0.setVisible(true);//性别标签
jtf.setBounds(70,40,110,25);
jtf.setEditable(true);
jfrm0.add(jtf);
jtf1.setBounds(290,40,110,25);
jtf1.setEditable(true);
jfrm0.add(jtf1);
jtf2.setBounds(160,190,110,30);
jtf2.setEditable(true);
jfrm0.add(jtf2);
jtf3.setBounds(160,240,110,30);
jtf3.setEditable(true);
jfrm0.add(jtf3);
jtf4.setBounds(160,290,110,30);
jtf4.setEditable(true);
jfrm0.add(jtf4);
}
public void init()
{
setwindows( );
22
connectDB();
bun1.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
doShow(e);
}
});//查询按钮触发
bun2.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
xiugai xg=new xiugai();
xg.initc1();
}
});//修改按钮触发
bun3.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
tianjia tj=new tianjia();
tj.inita1();
}
});//添加按钮触发
bun4.addActionListener(new java.awt.event.ActionListener()
{
23
public void actionPerformed(ActionEvent e)
{
shanchu sc=new shanchu();
sc.initd1();
}
});//删除按钮触发
}
private void connectDB()
{
try
{
Class.forName(driverName);
conn=DriverManager.getConnection(dbURL,userName,userPwd);
stmt=conn.createStatement();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
private void doShow(ActionEvent e)
{
String sNo=jtf.getText();
String cNo=jtf1.getText();
ResultSet rs=null;
try
24
{
String sql="SELECT a.姓名,b. 课程名,c. 成绩 " +
"FROM student a,course b ,SC c " +
"WHERE a.学号=c.学号 and b.课程号=c.课程号 and " +
"c. 学号='"+sNo+"' and c.课程号='"+cNo+"'";
rs=stmt.executeQuery(sql);
if(rs.next())
{
String sname=rs.getString("姓名");
String cname=rs.getString("课程名");
String grade=rs.getString("成绩");
jtf2.append (sname);
jtf3.append (cname);
jtf4.append (grade);
}
else
{
JOptionPane.showMessageDialog(null,"没有找到!");
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
25
{
public static void main (String[] args)
{
chaxun cx=new chaxun();
cx.init();
}
}
添加:
package pp;
import javax.swing.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
class tianjia extends JApplet
{
private static final boolean NULL = false;
private static String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; private static String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=test"; private static String userName="sa";
private static String userPwd="123456";
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
26
JFrame jfrm0=new JFrame("学生考试成绩查询");
JLabel jlab0=new JLabel("学 号:",JLabel.CENTER); JLabel jlab1=new JLabel("姓 名:",JLabel.CENTER); JLabel jlab2=new JLabel("课程号:",JLabel.CENTER); JLabel jlab3=new JLabel("成 绩:",JLabel.CENTER); JLabel jlab4=new JLabel("学生信息添加",JLabel.CENTER); JTextField jtf=new JTextField(9);
JTextField jtf1=new JTextField(9);
JTextField jtf2=new JTextField(9);
JTextField jtf3=new JTextField(9);
JButton bun1=new JButton("确认添加");
public void setwindows( )
{
jfrm0.setLayout(null);
jfrm0.setSize(450,500);
jfrm0.setLocation(400, 150);
jfrm0.add(jlab4);
jlab4.setLocation(140, 0);
jlab4.setVisible(true);
jlab4.setSize(130, 40);
Font fnt22=new Font("Serief",Font.PLAIN+Font.BOLD,20); jlab4.setFont(fnt22);
jfrm0.setLayout(null);
bun1.setBounds(150,400,120,30);
bun1.setToolTipText("确认添加信息");
27
jfrm0.add(bun1);
jfrm0.setVisible(true);///添加信息按钮
jfrm0.setBackground(Color.darkGray);//
Container h=jfrm0.getContentPane();
h.setBackground(Color.cyan);//背景颜色
jlab0.setOpaque(false); //设置标签透明
jlab0.setForeground(Color.black); //标的前景色
jlab0.setLocation(40,80); //标签位置
jlab0.setSize(130,30); //标签大小
jlab0. setToolTipText("请输入学号");//标签提示信息 Font fnt0=new Font("Serief",Font.PLAIN,20);
jlab0.setFont(fnt0);
jfrm0.add(jlab0);
jfrm0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jfrm0.setVisible(true);///学号标签
jlab1.setOpaque(false); //设置标签透明
jlab1.setForeground(Color.black); //标的前景色
jlab1.setLocation(40,130); //标签位置
jlab1.setSize(130,30); //标签大小
jlab1. setToolTipText("姓名");//标签提示信息
Font fnt1=new Font("Serief",Font.PLAIN,20);
jlab1.setFont(fnt1);
jfrm0.add(jlab1);
jfrm0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jfrm0.setVisible(true);//姓名标签
jlab2.setOpaque(false); //设置标签透明
28
jlab2.setBackground(Color.cyan);//标签背景色
jlab2.setForeground(Color.black); //标的前景色
jlab2.setLocation(40,180); //标签位置
jlab2.setSize(130,30); //标签大小
jlab2. setToolTipText("年龄");//标签提示信息
Font fnt2=new Font("Serief",Font.PLAIN,20);
jlab2.setFont(fnt2);
jfrm0.add(jlab2);
jfrm0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jfrm0.setVisible(true);//课程号标签
jlab3.setOpaque(false); //设置标签透明
jlab3.setBackground(Color.cyan);//标签背景色
jlab3.setForeground(Color.black); //标的前景色
jlab3.setLocation(40,230); //标签位置
jlab3.setSize(130,30); //标签大小
jlab3. setToolTipText("性别");//标签提示信息
Font fnt3=new Font("Serief",Font.PLAIN,20);
jlab3.setFont(fnt3);
jfrm0.add(jlab3);
jfrm0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jfrm0.setVisible(true);//成绩标签
jtf.setBounds(180,80,130,30);
jtf.setEditable(true);
jfrm0.add(jtf);
jtf1.setBounds(180,130,130,30);
jtf1.setEditable(true);
29
jfrm0.add(jtf1);
jtf2.setBounds(180,180,130,30);
jtf2.setEditable(true);
jfrm0.add(jtf2);
jtf3.setBounds(180,230,130,30);
jtf3.setEditable(true);
jfrm0.add(jtf3);
public void inita1()
{
setwindows( );
connectDB();
bun1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e)
{
doShow(e);
}
});
}
private void connectDB()
{
try
{
Class.forName(driverName);
conn=DriverManager.getConnection(dbURL,userName,userPwd); }
30
catch(Exception ex)
{
ex.printStackTrace();
}
}
private void doShow(ActionEvent e)
{
String sNo=jtf.getText();
String sname=jtf1.getText();
String cNo=jtf2.getText();
String SCgrade=jtf3.getText();
String selectSql="SELECT * FROM student WHERE 学号=?";
String addsql1="INSERT INTO student (学号, 姓名)" +
"VALUES (?,?)" ;
String addsql2="INSERT INTO SC (学号, 课程号, 成绩)" +
"VALUES (?,?,?)";
try
{
ps=conn.prepareStatement(addsql1);
ps.setString(1,sNo);
ps.setString(2,sname);
int count=ps.executeUpdate();
ps=conn.prepareStatement(addsql2);
ps.setString(1,sNo);
ps.setString(2,cNo);
ps.setString(3,SCgrade);
31
count = ps.executeUpdate();
JOptionPane.showMessageDialog(null,"添加成功!");
}
catch (Exception ex)
{
ex.printStackTrace();
JOptionPane.showMessageDialog(null,"添加失败!");
}
}
}
public class add
{
public static void main (String[] args)
{
tianjia s2=new tianjia();
s2.inita1();
}
}
删除:
package pp;
import javax.swing.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
32
class shanchu extends JApplet
{
private static String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; private static String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=test"; private static String userName="sa";
private static String userPwd="123456";
Connection conn=null;
PreparedStatement ps=null;
JFrame jfrm0=new JFrame("删除学生信息");
JLabel jlab0=new JLabel("输入学号:",JLabel.CENTER);
JTextField jtf=new JTextField(9);
JButton bun1=new JButton("确认删除");
public void setwindows( )
{
jfrm0.setLayout(null);
jfrm0.setSize(400,300);
jfrm0.setLocation(400, 200);
jfrm0.setLayout(null);
bun1.setBounds(150,200,100,25);
bun1.setToolTipText("确认删除信息");
jfrm0.add(bun1);
jfrm0.setVisible(true);///删除信息按钮
jfrm0.setBackground(Color.darkGray);//
Container h=jfrm0.getContentPane();
h.setBackground(Color.cyan);//背景颜色
jlab0.setOpaque(false); //设置标签透明
33
jlab0.setForeground(Color.black); //标的前景色
jlab0.setLocation(30,40); //标签位置
jlab0.setSize(130,30); //标签大小
jlab0. setToolTipText("请输入学号");//标签提示信息
Font fnt0=new Font("Serief",Font.PLAIN,20);
jlab0.setFont(fnt0);
jfrm0.add(jlab0);
jfrm0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm0.setVisible(true);///学号标签
jtf.setBounds(160,40,110,25);
jtf.setEditable(true);
jfrm0.add(jtf);
}
public void initd1()
{
setwindows( );
connectDB();
bun1.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
doShow(e);
}
});
}
private void connectDB()
34
{
try
{
Class.forName(driverName);
conn=DriverManager.getConnection(dbURL,userName,userPwd);
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
private void doShow(ActionEvent e)
{
String sNo=jtf.getText();
String deletesql1="DELETE FROM student WHERE 学号=?" ;
String deletesql2="DELETE FROM SC WHERE 学号=?" ;
try
{
ps=conn.prepareStatement(deletesql1);
ps.setString(1,sNo);
int count=ps.executeUpdate();
ps=conn.prepareStatement(deletesql2);
ps.setString(1,sNo);
count=ps.executeUpdate();
JOptionPane.showMessageDialog(null,"删除成功!");
}
35
catch (Exception ex)
{
ex.printStackTrace();
JOptionPane.showMessageDialog(null,"删除失败!");
}
}
}
public class delete
{
public static void main (String[] args)
{
shanchu d1=new shanchu();
d1.initd1();
}
}
修改:
package pp;
import javax.swing.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
class xiugai extends JApplet
{
private static String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; 36
private static String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=test"; private static String userName="sa";
private static String userPwd="123456";
Connection conn=null;
PreparedStatement ps=null;
JFrame jfrm0=new JFrame("学生考试成绩查询");
JLabel jlab0=new JLabel("输入学号:",JLabel.CENTER);
JLabel jlab1=new JLabel("输入课程号:",JLabel.CENTER);
JLabel jlab2=new JLabel("成绩改为:",JLabel.CENTER);
JLabel jlab3=new JLabel("学生信息修改",JLabel.CENTER);
JTextField jtf=new JTextField(9);
JTextField jtf1=new JTextField(9);
JTextField jtf2=new JTextField(9);
JButton bun1=new JButton("确认修改");
public void setwindows( )
{
jfrm0.setLayout(null);
jfrm0.setSize(400,300);
jfrm0.setLocation(400, 200);
jfrm0.add(jlab3);
jlab3.setLocation(100, 0);
jlab3.setVisible(true);
jlab3.setSize(130, 40);
Font fnt22=new Font("Serief",Font.PLAIN+Font.BOLD,20);
jlab3.setFont(fnt22);
jfrm0.setLayout(null);
37
bun1.setBounds(150,200,120,30);
bun1.setToolTipText("确认添加信息");
jfrm0.add(bun1);
jfrm0.setVisible(true);///添加信息按钮
jfrm0.setBackground(Color.darkGray);//
Container h=jfrm0.getContentPane();
h.setBackground(Color.cyan);//背景颜色
jlab0.setOpaque(false); //设置标签透明
jlab0.setForeground(Color.black); //标的前景色
jlab0.setLocation(30,40); //标签位置
jlab0.setSize(130,30); //标签大小
jlab0. setToolTipText("请输入学号");//标签提示信息
Font fnt0=new Font("Serief",Font.PLAIN,15);
jlab0.setFont(fnt0);
jfrm0.add(jlab0);
jfrm0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm0.setVisible(true);///学号标签
jlab1.setOpaque(false); //设置标签透明
jlab1.setForeground(Color.black); //标的前景色
jlab1.setLocation(20,90); //标签位置
jlab1.setSize(130,30); //标签大小
jlab1. setToolTipText("请输入课程号");//标签提示信息
Font fnt1=new Font("Serief",Font.PLAIN,15);
jlab1.setFont(fnt1);
jfrm0.add(jlab1);
jfrm0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
38
jfrm0.setVisible(true);//输入课程号标签
jlab2.setOpaque(false); //设置标签透明
jlab2.setBackground(Color.cyan);//标签背景色
jlab2.setForeground(Color.black); //标的前景色
jlab2.setLocation(30,140); //标签位置
jlab2.setSize(130,30); //标签大小
jlab2. setToolTipText("年龄");//标签提示信息
Font fnt2=new Font("Serief",Font.PLAIN,15);
jlab2.setFont(fnt2);
jfrm0.add(jlab2);
jfrm0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm0.setVisible(true);//修改成绩标签
jtf.setBounds(160,40,110,25);
jtf.setEditable(true);
jfrm0.add(jtf);
jtf1.setBounds(160,90,110,25);
jtf1.setEditable(true);
jfrm0.add(jtf1);
jtf2.setBounds(160,140,110,25);
jtf2.setEditable(true);
jfrm0.add(jtf2);
}
public void initc1()
{
setwindows( );
connectDB();
39
bun1.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
doShow(e);
}
});
}
private void connectDB()
{
try
{
Class.forName(driverName);
conn=DriverManager.getConnection(dbURL,userName,userPwd);
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
private void doShow(ActionEvent e)
{String sNo=jtf.getText();
String cNo=jtf1.getText();
String SCgrade=jtf2.getText();
String updatesql1="UPDATE SC SET 成绩=? WHERE 学号=? and 课程号=?"; {
40 try
ps=conn.prepareStatement(updatesql1);
ps.setString(1,SCgrade);
ps.setString(2,sNo);
ps.setString(3,cNo);
int count=ps.executeUpdate();
JOptionPane.showMessageDialog(null,"修改成功!");
}
catch (Exception ex)
{
ex.printStackTrace();
JOptionPane.showMessageDialog(null,"修改失败!");
}
}
}
public class change
{
public static void main (String[] args)
{
xiugai c1=new xiugai();
c1.initc1();
}
}
41
7. 连接数据库:
加载JDBC 驱动程序,不同的数据库,加载的驱动不一样,如图:
建立连接,
通过DriverManager 类的getConnection 方法建立连接时,需要注意getConnection 会抛出SQLException
异常,需要在try/catch块中捕获。
如图:
创建Statement 对象 用来向数据库发送查询和命令,它由Connection 的createStatement 方法创建,其代码如下:
Statement statement=connection.createStatement();
大部分数据库驱动程序允许在同一个连接中打开多个并行的Statement 对象,创建好Statement 对象之后,就可以使用它来进行数据库的操作了。Statement 类中的常用方法,可以去帮助文档中查找。
42
结果集处理
处理结果最简单的方式是使用ResultSet 的next 方法在表中移动,每次移动一行,在每一行中,ResultSet 提供了各种getX 方法。它们都以列名或索引为参数,有各种不同的Java 类型返回结果。
关闭连接
关闭连接的同时,还要关闭对应的Statement 和ResultSet 对象
测试数据库是否连接成功:
package test;
import java.sql.*;
public class main {
43
public static void main(String [] args)
{
String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=test"; String userName="sa";
String userPwd="123456";
try
{
Class. forName (driverName);
System. out .println("加载驱动成功!");
}catch (Exception e){
e.printStackTrace();
System. out .println("加载驱动失败!");
}
try {
Connection
dbConn=DriverManager.getConnection (dbURL,userName,userPwd);
System. out .println("连接数据库成功!");
}catch (Exception e)
{
e.printStackTrace();
System. out .print("SQL Server连接失败!");
}
}
}
44
8. 小结
在本次的课程设计中,我对系统的功能模块进行了成果展示,从系统登陆界面开始,介绍了用户登陆、用户注册、信息查看、信息添加、信息更改和信息删除等6个基本模块,但是由于时间和能力的不足,功能不能全面,本系统还是存在多个不足之处:
(1)页面设计不够美观;
(2)数据库设计存在漏洞;
课程结束之后,我还会继续完善该系统。
45