课程名称: 数据库课程设计
作业题目: 学生信息管理系统
专 业:
班 级:
学 号:
姓 名:
指导教师:
2008年 6月 29 日
目 录
1.课程大作业目的 1
1.1 课程实习目的 1
2.课程大作业题目描述和要求 1
2.1 课程大作业题目描述 1
2.2课程大作业题目要求 1
根据实际应用,提供学生必要的信息,如:添加学生信息、修改学生信息、删除学生信息、学生选课查询等;提供强大的查询功能,不同用户可以根据需求,以不同的条件查询; 1
3.课程大作业报告内容 1
3.1 课程完成过程 1
第三学期数据库课程设计我选了学生信息管理系统,因为数据库和其他语言之间的连接不会,就通过对网上一些资料的查看,知道了一些重要的连接字符串和关键字。最后能够连接成功,程序可运行的。 1
3.2系统功能介绍 1
3.3系统源代码介绍 1
3.3.1 系统主界面 1
3.3.2 添加学生信息界面 5
3.3.3 修改学生信息界面 7
3.3.4 删除学生信息模块 9
3.3.5 精确查询模块 9
3.3.6 匹配查询模块 9
3.3.7 学生选课查询模块 9
4.总结 9
1.课程大作业目的
1.1 课程实习目的
做大作业的过程中复习上课学过的数据库知识,并系统地归纳、分析知识间的联系,把它应用到实践中去。
2.课程大作业题目描述和要求
2.1 课程大作业题目描述
用JAVA编写一个学生信息管理系统,用SQL存储数据,实现几个简单的功能。
2.2课程大作业题目要求
根据实际应用,提供学生必要的信息,如:添加学生信息、修改学生信息、删除学生信息、学生选课查询等;提供强大的查询功能,不同用户可以根据需求,以不同的条件查询;
3.课程大作业报告内容
3.1 课程完成过程
第三学期数据库课程设计我选了学生信息管理系统,因为数据库和其他语言之间的连接不会,就通过对网上一些资料的查看,知道了一些重要的连接字符串和关键字。最后能够连接成功,程序可运行的。
3.2系统功能介绍
能进行学生选课查询,学生总信息查询,删除学生信息,添加学生信息,修改学生信息,总体查询等;
不同用户可以根据需求,以不同的条件查询,可以满足用户的简单需求。
3.3系统源代码介绍
3.3.1 系统主界面
运行程序以后,就可以看到程序的主界面。七个按钮对应七个相应功能,添加学生信息,修改学生信息,精确查询,整体查询,按姓名匹配查询,学生选课查询,删除学生信息。
代码如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.Hashtable;
public class manager extends JFrame implements ActionListener{
tianjia 添加学生信息=null;
update 修改学生信息=null;
find 精确查询=null;
ztcx 整体查询=null;
mhcx 按姓名匹配查询=null;
about 关于=null;
xuanke 学生选课查询=null;
delstu 删除学生信息=null;
JButton add,update,acheck,wcheck,mcheck,bbbb,xk,del;
Container con=null;
CardLayout card=null;
JLabel label=null;
JPanel pCenter;
JPanel aa,bb;
ImageIcon img;
public manager(){
JPanel aa=new JPanel();
JPanel bb=new JPanel();
aa.setLayout(new GridLayout(3,3));
add=new JButton("添加学生信息");
update=new JButton("修改学生信息");
acheck=new JButton("精确查询");
wcheck=new JButton("整体查询");
mcheck=new JButton("按姓名匹配查询");
// tongji=new JButton("统计学生成绩");
xk=new JButton("学生选课查询");
del=new JButton("删除学生信息");
bbbb=new JButton(img2);
aa.add(add);
aa.add(update);
aa.add(acheck);
aa.add(wcheck);
aa.add(mcheck);
aa.add(xk);
aa.add(del);
bb.add(bbbb);
label=new JLabel("欢迎使用学生信息管理系统",JLabel.CENTER);
label.setFont(new Font("TimesRoman",Font.BOLD+Font.ITALIC,32));
label.setForeground(Color.blue);
add.addActionListener(this);
update.addActionListener(this);
acheck.addActionListener(this);
wcheck.addActionListener(this);
mcheck.addActionListener(this);
bbbb.addActionListener(this);
xk.addActionListener(this);
del.addActionListener(this);
card=new CardLayout();
con=getContentPane();
pCenter=new JPanel();
pCenter.setLayout(card);
添加学生信息=new tianjia();
修改学生信息=new update();
精确查询=new find(this);
整体查询=new ztcx();
按姓名匹配查询=new mhcx();
学生选课查询=new xuanke();
删除学生信息=new delstu();
关于=new about(this);
pCenter.add("欢迎语界面",label);
pCenter.add("添加界面添加学生信息);
pCenter.add("修改界面修改学生信息);
pCenter.add("整体查询界面整体查询);
pCenter.add("匹配查询界面按姓名匹配查询);
pCenter.add("选课查询界面学生选课查询);
pCenter.add("删除学生界面删除学生信息);
con.add(aa,BorderLayout.NORTH);
con.add(bb,BorderLayout.SOUTH);
con.add(pCenter,BorderLayout.CENTER);
con.validate();
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
setVisible(true);
setBounds(320,150,720,450);
validate();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==add)
{
card.show(pCenter,"添加界面");
}
else if(e.getSource()==update)
{
card.show(pCenter,"修改界面");
}
else if(e.getSource()==acheck)
{
精确查询.setVisible(true);
}
else if(e.getSource()==wcheck)
{
card.show(pCenter,"整体查询界面");
}
else if(e.getSource()==mcheck)
{
card.show(pCenter,"匹配查询界面");
}
else if(e.getSource()==xk)
{
card.show(pCenter,"选课查询界面");
}
else if(e.getSource()==del)
{
card.show(pCenter,"删除学生界面");
}
else if(e.getSource()==bbbb){
关于.setVisible(true);
}
}
public static void main(String args[])
{
new manager();
}
}
3.3.2 添加学生信息界面:
添加学生信息模块是本系统的主要的功能模块之一。在本模块中,完成了对数据库的数据插入操作,我们可以通过次模块往数据库中轻松插入数据。
主要代码如下:
public tianjia(){
学号=new JTextField(15);
姓名=new JTextField(15);
性别=new JTextField(15);
年龄=new JTextField(15);
系别=new JTextField(15);
电话=new JTextField(15);
确定=new JButton("确定");
重置=new JButton("重置");
确定.addActionListener(this);
重置.addActionListener(this);
Box box1=Box.createHorizontalBox();
box1.add(new JLabel("学 号:",JLabel.CENTER));
box1.add(学号);
Box box2=Box.createHorizontalBox();
box2.add(new JLabel("姓 名:",JLabel.CENTER));
box2.add(姓名);
Box box3=Box.createHorizontalBox();
box3.add(new JLabel("性 别:",JLabel.CENTER));
box3.add(性别);
Box box4=Box.createHorizontalBox();
box4.add(new JLabel("年 龄:",JLabel.CENTER));
box4.add(年龄);
Box box5=Box.createHorizontalBox();
box5.add(new JLabel("系 别:",JLabel.CENTER));
box5.add(系别);
Box box6=Box.createHorizontalBox();
box6.add(new JLabel("电 话:",JLabel.CENTER));
box6.add(电话);
Box boxH=Box.createVerticalBox();
boxH.add(box1);
boxH.add(box2);
boxH.add(box3);
boxH.add(box4);
boxH.add(box5);
boxH.add(box6);
boxH.add(Box.createVerticalGlue());
JPanel pCenter=new JPanel();
pCenter.add(boxH);
setLayout(new BorderLayout());
add(pCenter,BorderLayout.CENTER);
JPanel pSouth=new JPanel();
pSouth.add(确定);
pSouth.add(重置);
add(pSouth,BorderLayout.SOUTH);
validate();
}
public void actionPerformed(ActionEvent e){
String name="";
String url="jdbc:odbc:diaoyong";
String s1="";
String s2="";
String s3="";
String s4="";
String s5="";
String s6="";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(java.lang.ClassNotFoundException eee){}
s1=学号.getText();
s2=姓名.getText();
s3=性别.getText();
s4=年龄.getText();
s5=系别.getText();
s6=电话.getText();
String sql="insert into s values(?,?,?,?,?,?)";
if(e.getSource()==确定){
if(s1==""){String warning="必须输入学生学号!";
JOptionPane.showMessageDialog(this,warning,警告",JOptionPane.WARNING_MESSAGE);
}
else{
String m="添加此学生信息!";
Int ok=JOptionPane.showConfirmDialog(this,m,"确认",JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE);
if(ok==JOptionPane.YES_OPTION){
try{
Connection con=DriverManager.getConnection(url,"",null);
Statement stmt=con.createStatement();
PreparedStatement ps=con.prepareStatement(sql);
ps.setString(1,s1);
ps.setString(2,s2);
ps.setString(3,s3);
ps.setString(4,s4);
ps.setString(5,s5);
ps.setString(6,s6);
ps.executeUpdate();
stmt.close();
con.close();}catch(SQLException ex){System.out.println(ex.getMessage());}
}
}
学号.setText(null);
姓名.setText(null);
系别.setText(null);
性别.setText(null);
年龄.setText(null);
电话.setText(null);
}
if(e.getSource()==重置)
{
学号.setText(null);
性别.setText(null);
系别.setText(null);
姓名.setText(null);
年龄.setText(null);
电话.setText(null);
}
}
3.3.3 修改学生信息界面
修改学生信息也是系统的主要操作模块之一。输入学生学号后,系统会自动根据数据库中记录的学生记录查出相应信息,为你的修改带来方便。修改学生信息界面如下:
关键代码如下:
public void actionPerformed(ActionEvent e){
String snum=null;
String s1=null;
String s2="";
String s3="";
String s4="";
String s5="";
String s6="";
String url="jdbc:odbc:diaoyong";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(java.lang.ClassNotFoundException eee){}
if(e.getSource()==开始修改){
snum=学号.getText();
String sql="select * from s where snum='"+snum+"'";
try{
Connection con=DriverManager.getConnection(url,"",null);
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()){
s1=rs.getString("snum");
s2=rs.getString("sname");
s3=rs.getString("ssex");
s4=rs.getString("sage");
s5=rs.getString("dnum");
s6=rs.getString("sphone");
}
stmt.close();
con.close();
}catch(SQLException ex){System.out.println(ex.getMessage());}
if(s1!=null){
录入修改.setEnabled(true);
姓名.setText(s2);
性别.setText(s3);
年龄.setText(s4);
系别.setText(s5);
电话.setText(s6);
确认.setText("系统中存在该学生,请修改吧!");
}
else {
确认.setText("系统中不存在该学生,请到添加功能下添加吧!");
姓名.setText(null);
性别.setText(null);
年龄.setText(null);
系别.setText(null);
电话.setText(null);
}
}
if(e.getSource()==录入修改){
snum=学号.getText();
s2=姓名.getText();
s3=性别.getText();
s4=年龄.getText();
s5=系别.getText();
s6=电话.getText();
String sql2="update s set sname='"+s2+"'"+" where snum='"+snum+"'";
String sql3="update s set ssex='"+s3+"'"+" where snum='"+snum+"'";
String sql4="update s set sage='"+s4+"'"+" where snum='"+snum+"'";
String sql5="update s set dnum='"+s5+"'"+" where snum='"+snum+"'";
String sql6="update s set sphone='"+s6+"'"+" where snum='"+snum+"'";
try{
Connection con=DriverManager.getConnection(url,"",null);
Statement stmt=con.createStatement();
stmt.executeUpdate(sql2);
stmt.executeUpdate(sql3);
stmt.executeUpdate(sql4);
stmt.executeUpdate(sql5);
stmt.executeUpdate(sql6);
stmt.close();
con.close();
}catch(SQLException exx){System.out.println(exx.getMessage());}
学号.setText(null);
姓名.setText(null);
性别.setText(null);
年龄.setText(null);
系别.setText(null);
电话.setText(null);
确认.setText(null);
}
if(e.getSource()==重置)
{
学号.setText(null);
姓名.setText(null);
性别.setText(null);
年龄.setText(null);
系别.setText(null);
电话.setText(null);
确认.setText(null);
}
}
3.3.4 删除学生信息模块
用户可以根据实际情况删除不必要的数据,删除时以学号为删除条件。
3.3.5 精确查询模块
用户可以根据学生学号查到学生的所有相关信息。
3.3.6 匹配查询模块
实际应用时,用户可能只知道一个学生的姓,具体的名字和学号都不知道,我们可以通过该模块查出所有符合条件的学生,再从中排除,找到需要的学生信息。
3.3.7 学生选课查询模块
根据学生学号,我们可以看到该学生的选课情况。
4.总结
通过这次课程大作业,对一些基础的知识有了一定的加深。同时学会充分利用网上资源,进行自我学习,自我进步。这次的大作业练习,使我更系统地掌握了课本上的知识,并把它们应用到实践中去,锻炼了我的动手能力。我认为的我的数据库学习,这才仅仅是个开始,还有更多的知识我要去学。
参考文献:
[1]李尊朝,苏军等. Java语言程序设计(第二版). 北京:中国铁道出版社,2007,12.
[2]陆慧娟. 数据库原理与应用. 北京:科学出版社,2006,12.