Java 大作业之学生信息管理系统—The Second

上次只讲到了java相关的数据库连接 及操作

下面就是登陆界面的了 主要由SimsLogin.java实现
效果如下:

Java 大作业之学生信息管理系统—The Second
Java 大作业之学生信息管理系统—The Second

实现代码如下:

[cce]
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.sql.*;
///这是一个登录类。设计成一个继承容器的类。
///WIDTH是指整个顶层框架的宽度。
///HEIGHT是指整个顶层框架的长度。
class login extends JPanel
{
static final int WIDTH=270;
static final int HEIGHT=150;
JFrame loginframe;
///按照网格组布局方式排列组件的方法
///x指控件位于第几列。
///y指控件位于第几行。
///w指控件需要占几列。
///h指控件需要占几行。

public void add(Component c,GridBagConstraints constraints,int x,int y,int w,int h)
{
constraints.gridx=x;
constraints.gridy=y;
constraints.gridwidth=w;
constraints.gridheight=h;
add(c,constraints);
}                                         //此方法用来添加控件到容器中
///这是一个构造器方法
///loginframe是就是指这个界面的框架
/// setDefaultCloseOperation这是一个使得窗口上面的关闭控件有效的类库方法
/// lay是一个网格组布局管理器的对象。
/// nameinput是用来输入用户名的文本域。
/// passwordinput是用来输入密码的文本域。
/// title是用来显示标题的标签。
/// name是用来显示“姓名”的标签。
///password是用来显示“密码”的标签。
///ok是一个按钮,使进入系统。
///cancel是一个按钮,使退出界面和系统。
/// ok.addActionListener是一个进入系统动作事件监听方法。
///cancel.addActionListener是一个退出系统和界面动作事件的监听方法。
login()
{
loginframe=new JFrame("SIMS Design By Artur"); //设置标题

loginframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridBagLayout lay=new GridBagLayout();
setLayout(lay);
loginframe.add(this, BorderLayout.WEST);
loginframe.setSize(WIDTH,HEIGHT);

Toolkit kit=Toolkit.getDefaultToolkit();//将程序显示在屏幕中央
Dimension screenSize=kit.getScreenSize();
int width=screenSize.width;
int height=screenSize.height;
int x=(width-WIDTH)/2;
int y=(height-HEIGHT)/2;
loginframe.setLocation(x,y);

JButton ok=new JButton("登录");
JButton cancel=new JButton("退出");
JLabel title=new JLabel("学生信息管理系统登陆         ");
JLabel name=new JLabel("用户名:");
JLabel password=new JLabel("密 码:");

final JTextField nameinput=new JTextField(15);
final JPasswordField passwordinput=new JPasswordField(15);
GridBagConstraints constraints=new GridBagConstraints();
constraints.fill=GridBagConstraints.NONE;
constraints.anchor=GridBagConstraints.EAST;
constraints.weightx=3;
constraints.weighty=4;

add(title,constraints,0,0,4,1);                 //使用网格组布局添加控件
add(name,constraints,0,1,1,1);
add(password,constraints,0,2,1,1);
add(nameinput,constraints,2,1,1,1);
add(passwordinput,constraints,2,2,1,1);
add(ok,constraints,0,3,1,1);
add(cancel,constraints,2,3,1,1);
loginframe.setResizable(false);
loginframe.setVisible(true);
ok.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent Event)
{
String nametext=nameinput.getText();
String passwordtext=passwordinput.getText();

String str=new String(passwordtext);
String sql="select * from users where username='"+nametext+"' and password='"+passwordtext+"'" ;
try
{ DBconnection con= new DBconnection();
Statement st=con.getConnection();

ResultSet rs=st.executeQuery(sql);
if(rs.next())

{
loginframe.dispose();
mainframe artur=new mainframe(); //此界面就是后面的主界面

}
else //错误提示

{
JOptionPane.showMessageDialog(null,"你输入的用户名或密码有误!", "友情提示",JOptionPane.INFORMATION_MESSAGE);

nameinput.setText("");
passwordinput.setText("");
}
}
catch(SQLException e) {JOptionPane.showMessageDialog(null,e.getMessage(), "对不起,出错啦",JOptionPane.ERROR_MESSAGE);}

}
});
cancel.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent Event)
{
System.exit(0);
}
});
}
}
public class SimsLogin
{
public static void main(String[] args){
login log=new login();}
}
[/cce]

Java 大作业之学生信息管理系统—The First

经过端午节的假期 我给自己算是放了一个比较长的假期了,端午节的3天+一个星期 差不多是10多天吧 一直在放松期间也没有上来写点什么 了 自上次搞得我很累以后 就自己对自己要求降低了 唉 人呐就是不能对自己放松啊 这一放就是俩星期啊 现在辛苦了一个星期 终于把那该死的java作业搞定了 说起java作业就郁闷 明明是很简单的功能 假如用C#来做的话 很简单的 开发环境是可视化的吧 java基本就是ide集成环境的 像我这种初学者 只能用用jcreator这样的初级工具 比较专业的 像eclipse 集大成之开发环境是相对较复杂的 插件是满天的飞 可是还是不知道怎么用 唉 失败 不过还好 像我们的大作业一般工具就行 扯远了 接着说 你会发现用java实现起来异常难搞 实现起来跟windows API编程有得一拼 一堆组件 先实例化出来再慢慢堆起来 想想啊 怎么样去布局 我算是吃尽了 苦头 这里有Swing布局管理器介绍 先慢慢学习下吧

不说了直接说进入主题主要是用java的swing来编程(参考书籍 零基础学java 机械工业出版社 书中的源代码 这位好心人 已经共享了 或者verycd 也有下载

SimsLogin.java是登陆窗口类 实现登陆窗口

maniframe.java是主窗口类 主界面 实现跳转页面

studentmanageframe.java是学生信息主窗口类 学生信息主窗口

studentinfo.java是学生查询 添加 删除类 实现学生管理信息

DBconnection.java是连接数据库公用类

addframe.java是添加学生信息类

studentcou.java 学生课程管理类

addcourseframe.java 学生课程添加类

studentmark.java 学生成绩管理类

addmarkframe.java 添加学生课程类

teacherinfo.java 教师信息管理类

addteacherframe.java 添加教师信息类

由于学生课程管理类、学生成绩管理类和教师信息管理类 跟学生查询 添加 删除类 几乎代码没怎么改变 所以只介绍学生查询 添加 删除类。

数据库的表名如下:

Java 大作业之学生信息管理系统—The First
Java 大作业之学生信息管理系统—The First
Java 大作业之学生信息管理系统—The First
Java 大作业之学生信息管理系统—The First

数据库连接采用公用类DBconnection.java 实例化后直接返回Statement 对象 不用再次声明了

直接使用对象来查询添加 详细介绍见这里

红色部分为数据库当前的绝对路径。

实现的代码如下:

[cce]
import javax.swing.*;
import java.sql.*;
import java.util.*;

class DBconnection
{

public DBconnection ()
{

}
public Statement getConnection()
{
Connection con=null;
Statement stm=null;//SIMS\\
String dburl="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=E:\\desktop\\大作业\\java\\4.0\\SIMS\\stu.mdb";
//String dburl ="jdbc:odbc:stu";//此为ODBC连接方式
//String dburl =directory.getCanonicalPath();
try
{

String username="";
String password="";

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection(dburl,username,password);
stm = con.createStatement();

}
catch(SQLException e){JOptionPane.showMessageDialog(null,e.getMessage(), "对不起,出错啦",JOptionPane.ERROR_MESSAGE);}
// System.out.println(e.getMessage());
catch(ClassNotFoundException ex){JOptionPane.showMessageDialog(null,ex.getMessage(), "对不起,出错啦",JOptionPane.ERROR_MESSAGE);}
//System.out.println(ex.getMessage());

return stm;
}

}
[/cce]

ps:有关 返回唯一实例的问题 和连接数据库问题 见 the End