学生信息管理系统的粗糙java代码.docx
《学生信息管理系统的粗糙java代码.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统的粗糙java代码.docx(49页珍藏版)》请在冰豆网上搜索。
学生信息管理系统的粗糙java代码
一.实验目的:
(1)理解JDBC的工作原理,熟悉java.sql包中与数据库访问相关的类及其用法,如DriverManager、Connection、Statement、ResultSet。
(2)熟悉利用JDBC进行数据库访问的步骤:
—加载JDBC驱动程序(Class.forName()
—建立数据库连接(DriverManager.getConnection())
—发布SQL命令(stmt=Con.createStatement(),stmt.executeQuery())
—取结果集并处理(ResultSet的next()方法和.get***()方法)
—关闭连接,释放对象(close())
(3)掌握建立ODBC数据源的方法,会使用JDBC-ODBCBridge进行数据库访问。
二.实验内容:
编写图形界面程序,利用JDBC实现图书/同学通讯录/校园卡/团员/教师/学生管理系统。
(任选1题,也可自拟题目,但需指导教师同意!
)
三.实验要求:
(1) 进行规范的数据库设计,正确地定义关系数据表的结构及表间联系(包括:
字段的数据类型、宽度、精度、主键、外键、缺省值)。
(2)要求界面布局紧凑、流畅、美观,实现的功能较为完善
(3)本实验分两次完成,第一次可以先做一些准备测试,旨在熟悉JDBC API编程接口中相关类的使用方法,测试中可以先基于字符界面实现功能,再逐步过渡到图形界面。
四.实验步骤
(1)在Access或SQLServer中建立数据库及基础表。
在控制面板中正确配置ODBC数据源,并测试成功。
(2)编写图形界面的Application,利用JDBC-ODBCBridge进行数据库访问,实现要求的功能。
五、实验主要代码(附数据库访问部分的代码,其他:
如界面的构造部分可省略)
建立的数据库中的内容的截图如下:
在数据库中,所有的信息的类型为字符串,因此在程序中的操作显的相对简单一些,如果不是,比如说生日采用日期的格式,那么在程序中改动或者发送sql语句的时候,还要用到Calendar,并用其建立一个对象。
考虑到此程序的本身代码的长度已经很大,所以没有用到这种方法。
这次程序用的东西着重从布局方式和组件上面入手。
其中布局采用的是嵌套式布局,一个好的图形界面,必然要使用到嵌套,除非那个界面很简单。
因此,单单的布局,在代码中的比重很大很大。
这次试验中,我分别用了null布局,盒式布局,边框布局,当然,默认布局也有。
组件,比起以前多用到了单选框。
另外,在删除数据的时候,用到了一个确认对话框。
程序具体代码如下:
importjava.sql.*;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassmyjdbc
{
publicstaticvoidmain(Stringargs[])
{
myJFramemywin=newmyJFrame("Java数据库连接(JDBC)");
}
}
classmyJFrameextendsJFrameimplementsActionListener
{
JPanelp1,p2;
JButtonsearch,add,update,delete,quit;
JLabelmark;
Boxbasebox,boxv1,boxv2;
myJFrame(Strings)
{
super(s);
p1=newJPanel();
p2=newJPanel();
search=newJButton("按照某关键字查询");
add=newJButton("添加新的学生信息");
update=newJButton("修改已有学生信息");
delete=newJButton("删除某条学生信息");
mark=newJLabel("学生信息管理系统");
quit=newJButton("退出信息管理系统");
mark.setFont(newFont("隶体",Font.BOLD,20));
mark.setForeground(Color.red);
p1.add(mark);
add.setForeground(Color.red);
add.setBackground(Color.cyan);
add.addActionListener(this);
search.setForeground(Color.red);
search.setBackground(Color.cyan);
search.addActionListener(this);
update.setForeground(Color.red);
update.setBackground(Color.cyan);
update.addActionListener(this);
delete.setForeground(Color.red);
delete.setBackground(Color.cyan);
delete.addActionListener(this);
quit.setForeground(Color.red);
quit.setBackground(Color.cyan);
quit.addActionListener(this);
p1.setBackground(Color.yellow);
p2.setBackground(Color.green);
boxv1=Box.createVerticalBox();
boxv1.add(Box.createVerticalStrut(20));
boxv1.add(newLabel("1"));
boxv1.add(Box.createVerticalStrut(6));
boxv1.add(newLabel("2"));
boxv1.add(Box.createVerticalStrut(6));
boxv1.add(newLabel("3"));
boxv1.add(Box.createVerticalStrut(6));
boxv1.add(newLabel("4"));
boxv1.add(Box.createVerticalStrut(6));
boxv1.add(newLabel("5"));
boxv2=Box.createVerticalBox();
boxv2.add(Box.createVerticalStrut(20));
boxv2.add(search);
boxv2.add(Box.createVerticalStrut(10));
boxv2.add(add);
boxv2.add(Box.createVerticalStrut(10));
boxv2.add(update);
boxv2.add(Box.createVerticalStrut(10));
boxv2.add(delete);
boxv2.add(Box.createVerticalStrut(10));
boxv2.add(quit);
basebox=Box.createHorizontalBox();
basebox.add(boxv1);
basebox.add(Box.createHorizontalStrut(8));
basebox.add(boxv2);
p2.add(basebox);
add(p2);
add(p1,BorderLayout.NORTH);
setBounds(500,200,350,320);
setVisible(true);
validate();
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==search)
{
newSearch();
}
if(e.getSource()==update)
{
newUpdate();
}
if(e.getSource()==delete)
{
newDelete();
}
if(e.getSource()==add)
{
newmyadd();
}
if(e.getSource()==quit)
{
//dispose();
System.exit(0);//调用此语句可以是整个程序结束
}
}
}
classSearchextendsJFrameimplementsActionListener,ItemListener
{
JPanelp1,p2;
JLabelmark;
JButtonyes;
JButtonclose;
JTextFieldtf;
JTextAreata;
Checkboxname,numb,telep;
CheckboxGroupkeytype;
Boxbasebox,boxh1,boxh2,boxh3,boxh4;
Stringkeyword;
Search()
{
super("进入查询");
p1=newJPanel();
p2=newJPanel();
mark=newJLabel("根据不同类型关键字查询信息");
mark.setFont(newFont("华文彩云",Font.BOLD,20));
mark.setForeground(Color.blue);
yes=newJButton("重新查找");
close=newJButton("返回主界面");
close.setBackground(Color.red);
close.setForeground(Color.blue);
close.setSize(100,30);
yes.setBackground(Color.red);
tf=newJTextField(10);
ta=newJTextArea(8,6);
keytype=newCheckboxGroup();
name=newCheckbox("姓名",false,keytype);
numb=newCheckbox("学号",false,keytype);
telep=newCheckbox("联系方式",false,keytype);
boxh1=Box.createHorizontalBox();
boxh1.add(newJLabel("请输入关键字:
"));
boxh1.add(Box.createHorizontalStrut(4));
boxh1.add(tf);
boxh1.add(Box.createHorizontalStrut(4));
boxh1.add(yes);
boxh2=Box.createHorizontalBox();
boxh2.add(newJLabel("请选择关键字的类型"));
boxh2.add(Box.createHorizontalStrut(4));
boxh2.add(name);
boxh2.add(Box.createHorizontalStrut
(2));
boxh2.add(numb);
boxh2.add(Box.createHorizontalStrut
(2));
boxh2.add(telep);
boxh4=Box.createHorizontalBox();
boxh4.add(close);
boxh3=Box.createHorizontalBox();
boxh3.add(newJLabel("查询结果"));
boxh3.add(Box.createHorizontalStrut(4));
boxh3.add(ta);
basebox=Box.createVerticalBox();
basebox.add(boxh1);
basebox.add(Box.createVerticalStrut(5));
basebox.add(boxh2);
basebox.add(Box.createVerticalStrut(5));
basebox.add(boxh3);
basebox.add(Box.createVerticalStrut(5));
basebox.add(boxh4);
yes.addActionListener(this);
close.addActionListener(this);
tf.addActionListener(this);
name.addItemListener(this);
numb.addItemListener(this);
telep.addItemListener(this);
p2.add(basebox);
p1.add(mark);
p2.setBackground(Color.green);
p1.setBackground(Color.cyan);
add(p2);
add(p1,BorderLayout.NORTH);
setBounds(500,200,400,320);
setVisible(true);
validate();
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==yes)
{
tf.setText("");
ta.setText("");
}
if(e.getSource()==close)
{
dispose();
}
if(e.getSource()==tf)
{
keyword=tf.getText();
}
}
publicvoiditemStateChanged(ItemEvente)
{
ta.setFont(newFont("隶体",Font.PLAIN,12));
ta.setForeground(Color.red);
Connectioncon;
PreparedStatementsql;
ResultSetrs;
if(e.getSource()==name)
{
ta.setText("");
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundExceptione2){}
try{con=DriverManager.getConnection("jdbc:
odbc:
Teng","","");
sql=con.prepareStatement("select*from学生基本信息where姓名
=?
");
sql.setString(1,keyword);
rs=sql.executeQuery();
while(rs.next())
{
ta.append("姓名:
"+rs.getString
(1)+"\n");
ta.append("学号:
"+rs.getString
(2)+"\n");
ta.append("性别:
"+rs.getString("性别")+"\n");
ta.append("班级:
"+rs.getString("班级")+"\n");
ta.append("生日:
"+rs.getString("生日")+"\n");
ta.append("籍贯:
"+rs.getString("籍贯")+"\n");
ta.append("补考次数:
"+rs.getString("补考次数")+"\n");
ta.append("联系电话:
"+rs.getString("联系电话"));
}
con.close();
}
catch(SQLExceptione1){}
}
if(e.getSource()==numb)
{
ta.setText("");
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundExceptione2){}
try{con=DriverManager.getConnection("jdbc:
odbc:
Teng","","");
sql=con.prepareStatement("select*from学生基本信息where学号
=?
");
sql.setString(1,keyword);
rs=sql.executeQuery();
while(rs.next())
{
ta.append("姓名:
"+rs.getString
(1)+"\n");
ta.append("学号:
"+rs.getString
(2)+"\n");
ta.append("性别:
"+rs.getString("性别")+"\n");
ta.append("班级:
"+rs.getString("班级")+"\n");
ta.append("生日:
"+rs.getString("生日")+"\n");
ta.append("籍贯:
"+rs.getString("籍贯")+"\n");
ta.append("补考次数:
"+rs.getString("补考次数")+"\n");
ta.append("联系电话:
"+rs.getString("联系电话"));
}
}
catch(SQLExceptione1){}
}
if(e.getSource()==telep)
{
ta.setText("");
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundExceptione2){}
try{con=DriverManager.getConnection("jdbc:
odbc:
Teng","","");
sql=con.prepareStatement("select*from学生基本信息where联系
电话=?
");
sql.setString(1,keyword);
rs=sql.executeQuery();
while(rs.next())
{
ta.append("姓名:
"+rs.getString
(1)+"\n");
ta.append("学号:
"+rs.getString
(2)+"\n");
ta.append("性别:
"+rs.getString("性别")+"\n");
ta.append("班级:
"+rs.getString("班级")+"\n");
ta.append("生日:
"+rs.getString("生日")+"\n");
ta.append("籍贯:
"+rs.getString("籍贯")+"\n");
ta.append("补考次数:
"+rs.getString("补考次数")+"\n");
ta.append("联系电话:
"+rs.getString("联系电话"));
}
}
catch(SQLExceptione1){}
}
}
}
classUpdateextendsJFrameimplementsActionListener,ItemListener
{
Stringkeyword;
Stringlna,lnu,lcl,lse,lbi,lnat,llo,lte;
JLabelhead=newJLabel("更新某条信息");
JLabelhead1=newJLabel("输入要更新的信息的某个关键字");
JLabelhead2=newJLabel("将变动的信息项输入到相应的文本框中");
JLabeltip=newJLabel("选择关键字类型");
JPanelp1,p2,p3,p4;
Boxbasebox,box1,box2,box3;
Checkboxname,number,tele;
CheckboxGroupkeytype;
JTextFieldtf;
JTextAreata;
JButtonyes=newJButton("返回主界面");
JButtonconti=newJButton("更新另外一条信息");
JButtonlook=newJButton("查看更新好的信息");
JLabelna=newJLabel("姓名");
JLabelnu=newJLabel("学号");
JLabelcl=newJLabel("班级");
JLabelse=newJLabel("性别");
JLabelte=newJLabel("联系电话");
JLabelnat=newJLabel("籍贯");
JLabello=newJLabel("补考次数");
JLabelbi=newJLabel("生日");//p3界面上的部分组建完成
JTextFieldtf1=newJTextField(5);
JTextFieldtf2=newJTextField(5);
JTextFieldtf3=newJTextField(5);
JTextFieldtf4=newJTextFie