学生学籍信息管理系统(Java + SQL)
开发环境:eclipse,SQLserve2008
开发语言:Java、SQL
第一步,数据库设计,我们设计之前先进行需求分析,我们要满足哪些基本需求呢,我们应该有两大功能模块,(1)管理员,教师和学生登录系统的模块。(2)管理员,教师和学生管理相应信息的模块。其次,我们要满足相应权限的人才能访问相应的数据和修改相应的数据。
第二步,就是开始数据库设计了,首先创建名为“学生学籍信息管理系统”的数据库,然后在数据库上建表和视图,以及录入数据,当然,这些你可以通过图形界面的方式录入,我直接上SQL语句,搞定一切,SQL语句如下。
数据库设计过程如下:
创建名为“学生学籍信息管理系统”的数据库
创建管理员表
创建教师表
创建班级表
创建学生表
创建课程表
创建成绩表
创建视图
go
create table 管理员(
管理员号 char(10) ,
登录密码 char(20)
) ;
insert into 管理员
values('1234','123');
create table 教师表(
教师号 char(20) primary key ,
教师姓名 char(20),
教师性别 char(10),
职称 char(10),
所属学院 char(20),
登录密码 char(20)
) ;
insert into 教师表
values ('20170001','孙菁','女','副教授','计算机软件学院','123'),
('20170002','郑关胜','男','副教授','计算机软件学院','123'),
('20170003','方忠进','男','副教授','计算机软件学院','123'),
('20170004','左相','男','副教授','数学与统计学院','123'),
('20170005','何彬彬','男','讲师','应用技术学院','123');
create table 班级表(
班级号 char (20)primary key ,
班级名称 char(20),
所属学院 char(20),
班级人数 char(10),
班主任 char(20)
) ;
insert into 班级表
values ('01','软工1班','应用技术学院','35','胡歌') ,
('02','软工2班','应用技术学院','35','孙菁'),
('03','自动化2班','应用技术学院','35','刘涛'),
('04','电气2班','自动化学院','35','朱伟');
create table 学生表(
学号 char(20) primary key,
姓名 char(20),
性别 char(10),
年龄 smallint,
班级号 char(20),
登录密码 char(20),
foreign key (班级号) references 班级表 (班级号)
) ;
insert into 学生表
values ('201733070046','王国栋','男',23,'02','123') ,
('201733070048','王祥安','男',22,'02','123') ,
('201733070044','孙汉成','男',22,'02','123') ,
('201733070054','姚壮','男',22,'02','123') ,
('201733070146','唐乃乔','男',23,'03','123') ,
('201733070246','陈向军','男',22,'04','123') ;
create table 课程表(
课程号 char(20) primary key,
课程名 char(20),
教师号 char(20),
foreign key(教师号) references 教师表 (教师号)
) ;
insert into 课程表
values ('01','数据库系统','20170001'),
('02','编译原理','20170002'),
('03','安卓','20170003'),
('04','离散数学','20170004'),
('05','就业指导','20170005');
create table 成绩表(
学号 char(20),
课程号 char(20),
成绩 smallint ,
foreign key (学号) references 学生表(学号),
foreign key (课程号) references 课程表(课程号)
) ;
insert into 成绩表
values ('201733070044','01',88),
('201733070146','01',80),
('201733070246','01',77),
('201733070046','01',92),
('201733070048','01',90),
('201733070046','02',92),
('201733070044','02',88),
('201733070146','02',98),
('201733070246','02',68),
('201733070048','02',78),
('201733070046','03',93),
('201733070046','04',94),
('201733070048','03',94),
('201733070048','04',90),
('201733070044','03',88),
('201733070146','03',89),
('201733070246','03',83);
go
go
create view 班级视图
as
select 学生表.学号,班级表.班级号,班级表.班级名称,班级表.所属学院,班级表.班级人数,班级表.班主任
from 学生表,班级表
where 学生表.班级号=班级表.班级号;
go
go
create view 成绩视图
as
select 成绩表.学号,学生表.姓名,成绩表.课程号,课程表.课程名,教师表.教师姓名,成绩表.成绩
from 成绩表,学生表,课程表,教师表
where 成绩表.学号=学生表.学号 and 成绩表.课程号=课程表.课程号 and 课程表.教师号=教师表.教师号
go
go
create view 课程表1视图
as
select 成绩表.课程号,课程表.课程名,课程表.教师号,教师表.教师姓名
from 成绩表,课程表,教师表
where 成绩表.课程号=课程表.课程号 and 课程表.教师号=教师表.教师号
go
go
create view 课程表2视图
as
select 成绩表.课程号,课程表.课程名,课程表.教师号,教师表.教师姓名
from 成绩表,课程表,教师表
where 成绩表.课程号=课程表.课程号 and 课程表.教师号=教师表.教师号
go
go
create view 课程表3视图
as
select 成绩表.课程号,课程表.课程名,课程表.教师号,教师表.教师姓名
from 成绩表,课程表,教师表
where 成绩表.课程号=课程表.课程号 and 课程表.教师号=教师表.教师号
go
go
create view 课程表4视图
as
select 成绩表.课程号,课程表.课程名,课程表.教师号,教师表.教师姓名
from 成绩表,课程表,教师表
where 成绩表.课程号=课程表.课程号 and 课程表.教师号=教师表.教师号
go
go
create view 课程表5视图
as
select 成绩表.课程号,课程表.课程名,课程表.教师号,教师表.教师姓名
from 成绩表,课程表,教师表
where 成绩表.课程号=课程表.课程号 and 课程表.教师号=教师表.教师号
go
go
create view 学生信息表
as
select 学生表.学号,学生表.姓名,学生表.性别,学生表.年龄,学生表.班级号,班级表.班级名称,成绩表.课程号,课程表.课程名,成绩表.成绩,课程表.教师号
from 学生表,班级表,成绩表,课程表
where 学生表.班级号=班级表.班级号 and 学生表.学号=成绩表.学号 and 课程表.课程号=成绩表.课程号
go
数据库设计就这样结束了,是不是很简单呢,接下来我们在eclipse中写界面和控制程序,然后连接到数据库,就可以实现学籍信息的管理了。
当然,数据库设计虽然结束了,但是访问数据库,需要用户名和密码,我们默认的用户名为“sa”,在数据库中将其密码改成“123”,和程序中保持一致。修改方法很简单,参考这个猛戳一下
第三步,我们在连接数据库的时候需要一个驱动,如图所示,就是这个驱动,我的版本需要4.0的才可以。直接网上搜一下,下载就可以,然后在eclipse中加载就可以了,至于如何加载驱动,很简单,参考我的这篇博客中的方法就可以了,猛戳一下
接下来就是干活了,敲代码,首先是用户登录模块,先上效果图。默认选择的角色只能是管理员,老师和学生,输入用户ID和密登录,错误会有错误提示。
登录界面
密码登录成功提示界面
管理员管理界面
教师信息管理界面
学生信息管理及查询结果界面
课程信息管理界面
成绩信息管理界面
班级信息管理界面
数据库老师的学生信息管理界面
数据库老师的学生课程信息管理界面
在这里插入图片描述
数据库老师的学生成绩信息管理界面
数据库老师的可以查看的班级信息界面
时间有限,博主也是新手,还在修改Bug中,仅展示部分效果,下面开始贴源代码,由于源代码,比较多,这里面贴几个主要的供参考,需要全部源码或者项目的直接私信本博主就可以了。
登录模块的源代码
package 学生学籍信息管理系统新;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
//import java.util.EventListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
//登录页面
/*
* Author WangGuodong
*/
public class DengLu extends JFrame implements ActionListener,ItemListener{
JPanel p1,p2,p3;
Font f1,f2,f3,f4;
/*Font f1=new Font("宋体",Font.BOLD,26); //如果变量已经声明,则再定义必须放在方法里面(*此处出错)
Font f2=new Font("幼圆",Font.ITALIC,20);
Font f3=new Font("黑体",Font.BOLD,30);
Font f4=new Font("隶书",Font.PLAIN,40);*/
JLabel head1=new JLabel("用户登录 / ");
JLabel head2=new JLabel("LOGIN ");
/*head1.setFont(f1);
head1.setForeground(Color.BLUE);
head2.setFont(f2);
head2.setForeground(Color.GRAY);*/
//定义标签和文本框以及下拉列表
//用户名标签和输入文本框
JLabel usename=new JLabel("用户ID:");
JTextField usenametext=new JTextField(10);
//密码标签和密码文本框,JPasswordField对象会自动对密码进行隐藏处理
JLabel password=new JLabel("密 码:");
JPasswordField txtPwd=new JPasswordField(10);
//添加验证码
JLabel test=new JLabel("验证码:");
//此处后期需要重写
//角色标签和下拉列表,此处使用swing中的JComboBox类,也可使用awt中的Choice类
JLabel role=new JLabel("角色:");
JComboBox boxrole=new JComboBox();
//创建三个选择按钮
JButton a=new JButton("登录");
JButton b=new JButton("重置");
JButton c=new JButton("取消");
//创建Connection和Statement对象
//连接数据库和调用数据库
Connection conn;
Statement stmt;
ResultSet rs;
//定义连接字符
String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=学生学籍信息管理系统";
String userName = "sa";
String userPwd = "123";
//定义变量来接收下拉列表的索引值,也可返回具体值
int index=0;
String index1;
static int ok=1;
static int cancel=0;
int actionCode=0;
public DengLu(){ //构造方法
super("南京信息工程大学学分制管理系统");
setLayout(new FlowLayout());
p1=new JPanel();
p2=new JPanel();
p3=new JPanel();
f1=new Font("宋体",Font.BOLD,30);
f2=new Font("幼圆",Font.ITALIC,30);
f3=new Font("楷书",Font.BOLD,18);
f4=new Font("隶书",Font.PLAIN,40);
//设置面板1的标签
head1.setFont(f1);
head1.setForeground(Color.BLUE);
head2.setFont(f2);
head2.setForeground(Color.GRAY);
//p1.setBackground(new Color(255,240,240));
p1.setBackground(null);
p1.setOpaque(false);
p1.add(head1);
p1.add(head2);
//面板2为4行2列的网格布局管理器
p2.setLayout(new GridLayout(4,2));
/*usename.setFont(f3);
password.setFont(f3);
role.setFont(f3);*/
//下拉列表中添加数据
boxrole.addItem("管理员");
boxrole.addItem("教师");
boxrole.addItem("学生");
//p2.setBackground(new Color(240,255,240));
p2.setBackground(null);
p2.setOpaque(false);
boxrole.setOpaque(false);
usenametext.setOpaque(false);
txtPwd.setOpaque(false);
p2.add(role);
p2.add(boxrole);
p2.add(usename);
p2.add(usenametext);
p2.add(password);
p2.add(txtPwd);
//将3个按钮添加进面板3中
//p3.setBackground(new Color(230,230,250));
p3.setBackground(null);
p3.setOpaque(false);//设置透明
a.setContentAreaFilled(false);
b.setContentAreaFilled(false);
c.setContentAreaFilled(false);
//setGround(a);
p3.add(a);
p3.add(b);
p3.add(c);
//将三个面板添加进框架容器中
this.add(p1);
this.add(p2);
this.add(p3);
//this.add(new MyPanel());
//设置背景图片
ImageIcon ic=new ImageIcon("D:\\picture\\登录界面.png");
JLabel l=new JLabel(ic);
l.setBounds(0,0,ic.getIconWidth(),ic.getIconHeight());
//l.setBounds(0,0,this.getWidth(),this.getHeight());
//JPanel ip=(JPanel)this.getContentPane();
this.getLayeredPane().add(l,new Integer(Integer.MIN_VALUE));
((JPanel)this.getContentPane()).setOpaque(false);//设置透明
//设置顶层容器的大小、位置、可见性及close功能
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(350,300);
setLocationRelativeTo(null);
setVisible(true);
//注册事件监听器
//这里的this就是本类,已经是ActionListener的实现类 --有待探究
boxrole.addItemListener(this);
a.addActionListener(this);
b.addActionListener(this);
c.addActionListener(this);
}
public void connDB() { //连接数据库方法
//对于jdbc4版本,加载驱动可以选择性省略
/*try {
//加载驱动
Class.forName("com.microsoft.sqlsever.jdbc.SQLSeverDriver");
//System.out.println("加载成功");
}catch(ClassNotFoundException e) {
e.printStackTrace();
}*/
try {
//连接数据库
//两条语句选择性使用,Debug时此处出问题!
//conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=教务系统","sa","123");
conn=DriverManager.getConnection(dbURL,userName,userPwd);
stmt=conn.createStatement();
}catch(Exception e) {
e.printStackTrace();
//System.out.println("连接失败!");
}
}
public void closeDB() { //关闭数据库方法
try {
rs.close();
stmt.close();
conn.close();
}catch(Exception e) {
e.printStackTrace();
//System.out.println("关闭失败!");
}
}
//实现ItemListener的抽象方法
//对下拉列表进行事件处理
public void itemStateChanged(ItemEvent e) {
//该高级事件用于监听用户的选定与否
if(e.getStateChange()==ItemEvent.SELECTED) { //判断下拉列表是否选定
JComboBox j=(JComboBox)e.getSource(); //强制类型转换+获取事件源
index=j.getSelectedIndex();
//index1=j.getSelectedItem();
}
}
//该方法用来确认是否在数据库中找到学号
public boolean searchsno(String str) {
boolean x=false;
this.connDB();
try {
rs=stmt.executeQuery("select * from 学生表");
while(rs.next()) {
if(rs.getString("学号").trim().equals(str)) {
x=true;
}
}
//return x;
}catch(Exception e) {
e.printStackTrace();
}
return x;
}
//该方法用来确认是否在数据库中找到教师号
public boolean searchtno(String str) {
boolean x=false;
this.connDB();
try {
rs=stmt.executeQuery("select * from 教师表");
while(rs.next()) {
if(rs.getString("教师号").trim().equals(str)) { //在java中,判断字符串是否相同,一定要使用equals函数!!!!!!!!
x=true;
}
}
//return x;
}catch(Exception e) {
e.printStackTrace();
}
return x;
}
//该方法用来确认是否能在数据库中找到管理员ID
public boolean searchmanagerno(String str) {
boolean x=false;
this.connDB();
try {
rs=stmt.executeQuery("select * from 管理员");
while(rs.next()) {
if(rs.getString("管理员号").trim().equals(str)) { //在java中,判断字符串是否相同,一定要使用equals函数!!!!!!!!
x=true;
}
}
//return x;
}catch(Exception e) {
e.printStackTrace();
}
return x;
}
//实现ActionListener的抽象方法
//对三个按钮进行事件处理
public void actionPerformed(ActionEvent e){
Object source=e.getSource();
String un;
String pw;
boolean success= false; //用于判断是否登录成功
if(source==a) { //如果事件源是“确定”按钮
if(usenametext.getText().equals("") || txtPwd.getText().equals("")) { //判断用户名和密码是否为空
//JOptionPane类用作提示框,常见方法:1.showMessageDialog; 2.showOptionDialog
JOptionPane.showMessageDialog(null,"登录名和密码不能为空!");
}else {
//用户名和密码均不为空,进行连接数据库
this.connDB();
//这里先连接数据库,再执行数据库操作步骤,等效为将一个try{}catch{}分解成几个,效果一样!
try {
if(index==0) { //管理员登录
//trim()方法:从当前 String 对象移除所有前导空白字符和尾部空白字符
if(!searchmanagerno(usenametext.getText().trim())) {
JOptionPane.showMessageDialog(null,"对不起,此用户不存在!请重新登录!");
usenametext.setText("");
txtPwd.setText("");
}else {
rs=stmt.executeQuery("select * from 管理员 where 管理员号="+ usenametext.getText().trim());
while(rs.next()) {
pw=rs.getString(2).trim();
if(txtPwd.getText().equals(pw)) {
JOptionPane.showMessageDialog(null,"管理员登录成功!");
this.setVisible(false);
new GLFrame(); //进入管理员界面
}else {
JOptionPane.showMessageDialog(null,"密码错误!请重试");
txtPwd.setText("");
}
}
}
}
if(index==1) { //教师登录
if(!searchtno(usenametext.getText().trim())) {
JOptionPane.showMessageDialog(null,"对不起,此用户不存在!请重新登录!");
usenametext.setText("");
txtPwd.setText("");
}else {
rs=stmt.executeQuery("select * from 教师表 where 教师号="+ usenametext.getText().trim());
while(rs.next()) {
pw=rs.getString("登录密码").trim();
if(txtPwd.getText().equals(pw)) {
JOptionPane.showMessageDialog(null,"教师登录成功!");
this.setVisible(false);
new Teacher(usenametext.getText()); //进入教师界面
}
else {
JOptionPane.showMessageDialog(null,"密码错误!请重试");
txtPwd.setText("");
}
}
}
}
if(index==2) { //学生登录
if(!searchsno(usenametext.getText().trim())) {
JOptionPane.showMessageDialog(null,"对不起,此用户不存在!请重新登录!");
usenametext.setText("");
txtPwd.setText("");
}else {
rs=stmt.executeQuery("select * from 学生表 where 学号="+ usenametext.getText().trim());
while(rs.next()) {
pw=rs.getString("登录密码").trim();
if(txtPwd.getText().equals(pw)) {
JOptionPane.showMessageDialog(null,"学生登录成功!");
this.setVisible(false);
new Student(usenametext.getText()); //进入学生界面
}
else {
JOptionPane.showMessageDialog(null,"密码错误!请重试");
txtPwd.setText("");
}
}
}
}
}catch(Exception e1) {
e1.printStackTrace();
//System.out.println("连接失败!");
}
closeDB();
}
}
if(source==b) { //如果事件源是“重置”按钮
usenametext.setText("");
txtPwd.setText("");
}
if(source==c) { //如果事件源是“取消”按钮
//System.exit(0);
this.dispose();
new DengLu();
}
}
public static void main(String[] args){
new DengLu();
}
}
教师模块的源代码
package 学生学籍信息管理系统新;
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
/*
* Author WangGuodong
*/
public class Teacher extends JFrame implements ActionListener{
JLabel l=new JLabel("--教师页面--");
//定义面板容器
JPanel p1=new JPanel();
JPanel p2=new JPanel();
//设置字体类型
Font f1=new Font("宋体",Font.BOLD,30);
Font f2=new Font("幼圆",Font.ITALIC,30);
Font f3=new Font("楷体",Font.BOLD,17);
Font f4=new Font("隶书",Font.PLAIN,40);
//设置6个按钮,以便管理员操作
JButton btnTmg=new JButton("个人信息管理");
JButton btnSsh=new JButton("学生信息查询");
JButton btnCsh=new JButton("课程信息查询");
JButton btnSCmg=new JButton("成绩信息管理");
JButton btnCSsh=new JButton("班级信息查询");
JButton btnEXIT=new JButton("退出");
String tno;
String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=学生学籍信息管理系统";
String useName="sa";
String usePwd="123";
Connection conn;
Statement stmt;
ResultSet rs;
Object[][] arr;
String tpwd;
JScrollPane scroll1,scroll2,scroll3,scroll4,scroll5,scroll6;
JTable tb1,tb2,tb3,tb4,tb5,tb6;
int row;
public Teacher(String str) { //构造方法
super("教师页面");
setLayout(new FlowLayout());
//设置标签的颜色
l.setFont(f1);
l.setForeground(Color.blue);
//设置按钮字体和颜色
btnTmg.setFont(f3);
btnTmg.setContentAreaFilled(false);
//btnTM.setBackground(Color.blue);
btnSsh.setFont(f3);
btnSsh.setContentAreaFilled(false);
btnCsh.setFont(f3);
btnCsh.setContentAreaFilled(false);
btnSCmg.setFont(f3);
btnSCmg.setContentAreaFilled(false);
btnCSsh.setFont(f3);
btnCSsh.setContentAreaFilled(false);
btnEXIT.setFont(f3);
btnEXIT.setContentAreaFilled(false);
this.tno=str;
p1.add(l);
p1.setOpaque(false);
p2.setOpaque(false);
p2.setLayout(new GridLayout(3,2,10,10));
p2.add(btnTmg);
p2.add(btnSsh);
p2.add(btnCsh);
p2.add(btnSCmg);
p2.add(btnCSsh);
p2.add(btnEXIT);
//布局管理器
this.add(p1);
this.add(p2);
ImageIcon ic=new ImageIcon("C:\\Users\\YXS\\eclipse-workspace\\edu-a-s\\src\\edu\\yxs\\sqldemo\\6.jpg");
JLabel l=new JLabel(ic);
l.setBounds(0,0,ic.getIconWidth(),ic.getIconHeight());
//l.setBounds(0,0,this.getWidth(),this.getHeight());
//JPanel ip=(JPanel)this.getContentPane();
this.getLayeredPane().add(l,new Integer(Integer.MIN_VALUE));
((JPanel)this.getContentPane()).setOpaque(false);//设置透明
//设置顶层容器的大小、位置、可见性及close功能
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(350,300);
setLocationRelativeTo(null);
setVisible(true);
this.connDB();
btnTmg.addActionListener(this);
btnSsh.addActionListener(this);
btnCsh.addActionListener(this);
btnSCmg.addActionListener(this);
btnCSsh.addActionListener(this);
btnEXIT.addActionListener(this);
}
public void connDB() {
try {
conn=DriverManager.getConnection(dbURL,useName,usePwd);
stmt=conn.createStatement();
}catch(Exception e) {
e.printStackTrace();
}
}
public void closeDB() {
try {
rs.close();
stmt.close();
conn.close();
}catch(Exception e) {
e.printStackTrace();
}
}
public void tmg(String str) { //个人信息管理方法
JFrame f=new JFrame("个人信息");
//JPanel p=new JPanel();
f.setLayout(new FlowLayout());
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setSize(500,150);
f.setVisible(true);
f.setLocationRelativeTo(null);
Button btnchange=new Button("修改密码");
Button btnrt=new Button("返回");
btnchange.setFont(f3);
btnchange.setBackground(new Color(131,175,155));
btnrt.setFont(f3);
btnrt.setBackground(new Color(131,175,155));
//btnrt.setSize(20,10);
this.connDB();
arr=new Object[1][7];
try {
rs=stmt.executeQuery("select * from 教师表 where 教师号="+str);
while(rs.next()) {
arr[0][0]=rs.getString("教师号");
arr[0][1]=rs.getString("姓名");
arr[0][2]=rs.getString("性别");
arr[0][3]=rs.getString("学历");
arr[0][4]=rs.getString("职称");
arr[0][5]=rs.getString("所属学院");
arr[0][6]=rs.getString("登录密码");
}
}catch(Exception e){
e.printStackTrace();
}
String[] list= {"教师号","姓名","性别","学历","职称","所属学院","登录密码"};
tb1=new JTable(arr,list); //创建表格
scroll1=new JScrollPane(tb1);
//f.add(btnrt,BorderLayout.NORTH);
f.add(btnchange);
f.add(btnrt);
f.add(scroll1); //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
//f1.add(btnrt);
btnrt.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
new Teacher(tno);
}
});
btnchange.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
change();
}
});
}
public void change() { //创建修改密码页面,新窗口用于修改密码
this.connDB();
JFrame f=new JFrame("修改密码");
f.setLayout(new FlowLayout());
JPanel p=new JPanel();
JPanel p1=new JPanel();
p.setLayout(new GridLayout(3,2));
JLabel btn1=new JLabel("初始密码:");
btn1.setFont(f3);
JTextField tf1=new JTextField(10);
JLabel btn2=new JLabel("修改密码:");
btn2.setFont(f3);
JTextField tf2=new JTextField(10);
Button ok=new Button("确定");
ok.setBackground(new Color(131,175,155));
Button cancel=new Button("取消");
cancel.setBackground(new Color(131,175,155));
p.add(btn1);
p.add(tf1);
p.add(btn2);
p.add(tf2);
p1.add(ok);
p1.add(cancel);
f.add(p);
f.add(p1);
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setLocation(530,300);
//f.setLocationRelativeTo(null);
f.setSize(300,150);
f.setVisible(true);
ok.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
try { //获取初始密码
rs=stmt.executeQuery("select * from 教师表 where 教师号="+tno);
while(rs.next()) {
tpwd=rs.getString("登录密码").trim();
}
}catch(Exception e1) {
e1.printStackTrace();
}
if(tf2.getText().equals("") || tf1.getText().equals("")) {
JOptionPane.showMessageDialog(null, "密码不能为空!请重新修改!");
}else{
if(!tpwd.equals(tf1.getText().trim())) { //spwd.equals(tf1.getText().trim())
JOptionPane.showMessageDialog(null,"初始密码错误,请重新输入密码!"); //"原密码是"+spwd+"输入密码是"+tf1.getText();
tf1.setText("");
tf2.setText("");
}else {
try {
stmt.executeUpdate("update 教师表 set 登录密码 ="+tf2.getText().trim()+"where 教师号="+tno);
}catch(Exception e1) {
e1.printStackTrace();
}
JOptionPane.showMessageDialog(null,"密码修改成功!请重新登录!");
f.dispose();
new DengLu();
}
}
}
});
cancel.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
new Teacher(tno);
}
});
}
public void ssh(String str) { //学生信息查询
JFrame f=new JFrame("学生信息");
//JPanel p=new JPanel();
f.setLayout(new FlowLayout());
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setSize(500,150);
f.setVisible(true);
f.setLocationRelativeTo(null);
Button btnrt=new Button("返回");
btnrt.setFont(f3);
btnrt.setBackground(new Color(131,175,155));
//btnrt.setSize(20,10);
this.connDB();
int i=0,j=0;
ArrayList al=new ArrayList();
try {
rs=stmt.executeQuery("select * from 学生信息表 where 教师号="+str);
while(rs.next()) {
al.add(rs.getString("学号"));
al.add(rs.getString("姓名"));
al.add(rs.getString("性别"));
al.add(rs.getInt("年龄"));
al.add(rs.getString("班级名称"));
al.add(rs.getString("课程名"));
i++;
}
}catch(Exception e){
e.printStackTrace();
}
arr=new Object[i][6];
try {
rs=stmt.executeQuery("select * from 学生信息表 where 教师号="+str);
while(rs.next()) {
arr[j][0]=rs.getString("学号");
arr[j][1]=rs.getString("姓名");
arr[j][2]=rs.getString("性别");
arr[j][3]=rs.getString("年龄");
arr[j][4]=rs.getString("班级名称");
arr[j][5]=rs.getString("课程名");
j++;
}
}catch(Exception e){
e.printStackTrace();
}
String[] list= {"学号","姓名","性别","年龄","班级名称","课程名"};
tb2=new JTable(arr,list); //创建表格
scroll2=new JScrollPane(tb2);
//f.add(btnrt,BorderLayout.NORTH);
f.add(btnrt);
f.add(scroll2); //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
//f1.add(btnrt);
btnrt.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
new Teacher(tno);
}
});
}
public void csh(String str) { //课程信息查询
JFrame f=new JFrame("课程信息");
//JPanel p=new JPanel();
f.setLayout(new FlowLayout());
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setSize(500,150);
f.setVisible(true);
f.setLocationRelativeTo(null);
Button btnrt=new Button("返回");
btnrt.setFont(f3);
btnrt.setBackground(new Color(131,175,155));
//btnrt.setSize(20,10);
this.connDB();
int i=0,j=0;
ArrayList al=new ArrayList();
try {
rs=stmt.executeQuery("select distinct 班级号 ,班级名称,课程号,课程名 from 学生信息表 where 教师号="+str);
while(rs.next()) {
al.add(rs.getString("班级号"));
al.add(rs.getString("班级名称"));
al.add(rs.getString("课程号"));
al.add(rs.getString("课程名"));
i++;
}
}catch(Exception e){
e.printStackTrace();
}
arr=new Object[i][4];
try {
rs=stmt.executeQuery("select distinct 班级号 ,班级名称,课程号,课程名 from 学生信息表 where 教师号="+str);
while(rs.next()) {
arr[j][0]=rs.getString("班级号");
arr[j][1]=rs.getString("班级名称");
arr[j][2]=rs.getString("课程号");
arr[j][3]=rs.getString("课程名");
j++;
}
}catch(Exception e){
e.printStackTrace();
}
String[] list= {"班级号","班级名称","课程号","课程名"};
tb3=new JTable(arr,list); //创建表格
scroll3=new JScrollPane(tb3);
//f.add(btnrt,BorderLayout.NORTH);
f.add(btnrt);
f.add(scroll3); //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
//f1.add(btnrt);
btnrt.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
new Teacher(tno);
}
});
}
public void scmg(String str) { //成绩信息管理
JFrame f=new JFrame("学生成绩信息");
//JPanel p=new JPanel();
f.setLayout(new FlowLayout());
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setSize(500,150);
f.setVisible(true);
f.setLocationRelativeTo(null);
Button btnrt=new Button("返回");
Button btnchange=new Button("修改成绩");
btnchange.setFont(f3);
btnchange.setBackground(new Color(131,175,155));
btnrt.setFont(f3);
btnrt.setBackground(new Color(131,175,155));
//btnrt.setSize(20,10);
this.connDB();
int i=0,j=0;
ArrayList al=new ArrayList();
try {
rs=stmt.executeQuery("select * from 学生信息表 where 教师号="+str);
while(rs.next()) {
al.add(rs.getString("学号"));
al.add(rs.getString("姓名"));
al.add(rs.getString("性别"));
al.add(rs.getInt("年龄"));
al.add(rs.getString("班级名称"));
al.add(rs.getString("课程名"));
al.add(rs.getString("成绩"));
i++;
}
}catch(Exception e){
e.printStackTrace();
}
arr=new Object[i][7];
try {
rs=stmt.executeQuery("select * from 学生信息表 where 教师号="+str);
while(rs.next()) {
arr[j][0]=rs.getString("学号");
arr[j][1]=rs.getString("姓名");
arr[j][2]=rs.getString("性别");
arr[j][3]=rs.getString("年龄");
arr[j][4]=rs.getString("班级名称");
arr[j][5]=rs.getString("课程名");
arr[j][6]=rs.getString("成绩");
j++;
}
}catch(Exception e){
e.printStackTrace();
}
String[] list= {"学号","姓名","性别","年龄","班级名称","课程名","成绩"};
tb4=new JTable(arr,list); //创建表格
scroll4=new JScrollPane(tb4);
//f.add(btnrt,BorderLayout.NORTH);
f.add(btnchange);
f.add(btnrt);
f.add(scroll4); //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
//f1.add(btnrt);
btnrt.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
new Teacher(tno);
}
});
btnchange.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
scchange();
}
});
}
public void scchange() { //修改成绩页面
JFrame f=new JFrame("修改成绩");
f.setLayout(new FlowLayout());
JLabel l=new JLabel("输入班级号");
JTextField tf=new JTextField(10);
JButton jb1=new JButton("确定");
jb1.setFont(f3);
jb1.setBackground(new Color(131,175,155));
JButton jb2=new JButton("返回");
jb2.setFont(f3);
jb2.setBackground(new Color(131,175,155));
f.add(l);
f.add(tf);
f.add(jb1);
f.add(jb2);
jb1.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
new SCmg(tno,tf.getText()); //重新刷新成绩页面,为班级成绩
}
});
jb2.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
scmg(tno); //取消按钮,重新显示页面
}
});
f.setSize(200,150);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setVisible(true);
}
public void cssh(String str) { //班级信息查询
JFrame f=new JFrame("班级信息");
//JPanel p=new JPanel();
f.setLayout(new FlowLayout());
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setSize(500,150);
f.setVisible(true);
f.setLocationRelativeTo(null);
Button btnrt=new Button("返回");
btnrt.setFont(f3);
btnrt.setBackground(new Color(131,175,155));
//btnrt.setSize(20,10);
this.connDB();
int i=0,j=0;
ArrayList al=new ArrayList();
try {
rs=stmt.executeQuery("select distinct 学生信息表.班级号 ,班级表.班级名称,班级表.所属学院,班级表.班级人数,班级表.班主任 from 班级表,学生信息表 where 学生信息表.班级号=班级表.班级号 and 教师号="+str);
while(rs.next()) {
al.add(rs.getString("班级号"));
al.add(rs.getString("班级名称"));
al.add(rs.getString("所属学院"));
al.add(rs.getInt("班级人数"));
al.add(rs.getString("班主任"));
i++;
}
}catch(Exception e){
e.printStackTrace();
}
arr=new Object[i][5];
try {
rs=stmt.executeQuery("select distinct 学生信息表.班级号 ,班级表.班级名称,班级表.所属学院,班级表.班级人数,班级表.班主任 from 班级表,学生信息表 where 学生信息表.班级号=班级表.班级号 and 教师号="+str);
while(rs.next()) {
arr[j][0]=rs.getString("班级号");
arr[j][1]=rs.getString("班级名称");
arr[j][2]=rs.getString("所属学院");
arr[j][3]=rs.getInt("班级人数");
arr[j][4]=rs.getString("班主任");
j++;
}
}catch(Exception e){
e.printStackTrace();
}
String[] list= {"班级号","班级名称","所属学院","班级人数","班主任"};
tb6=new JTable(arr,list); //创建表格
scroll6=new JScrollPane(tb6);
//f.add(btnrt,BorderLayout.NORTH);
f.add(btnrt);
f.add(scroll6); //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
//f1.add(btnrt);
btnrt.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
new Teacher(tno);
}
});
}
public void actionPerformed(ActionEvent e) {
//按钮为“教师信息管理”,跳转页面
if(e.getSource().equals(btnTmg)) {
this.dispose();
this.tmg(tno);
}
//按钮为“学生信息管理”,跳转页面
if(e.getSource().equals(btnSsh)) {
//new SM().display();
this.dispose();
this.ssh(tno);
}
//按钮为“课程信息管理”,跳转页面
if(e.getSource().equals(btnCsh)) {
this.dispose();
this.csh(tno);
}
//按钮为“成绩信息管理”,跳转页面
if(e.getSource().equals(btnSCmg)) {
this.dispose();
this.scmg(tno);
}
//按钮为“班级信息管理”,跳转页面
if(e.getSource().equals(btnCSsh)) {
this.dispose();
this.cssh(tno);
}
//按钮为“退出管理系统”,程序退出
if(e.getSource().equals(btnEXIT)) {
//System.exit(0);
this.dispose();
new DengLu();
}
}
public static void main(String[] args) {
new Teacher("20050002");
}
}
学生模块的源代码
package 学生学籍信息管理系统新;
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
public class Student extends JFrame implements ActionListener{
///////////////注意////////////////
//在类里面只有成员变量和方法,切忌在成员变量里直接定义
//“管理员”标签
JLabel l=new JLabel("--学生页面--");
//定义面板容器
JPanel p1=new JPanel();
JPanel p2=new JPanel();
//设置字体类型
Font f1=new Font("宋体",Font.BOLD,30);
Font f2=new Font("幼圆",Font.ITALIC,20);
Font f3=new Font("楷体",Font.BOLD,15);
Font f4=new Font("隶书",Font.PLAIN,18);
//设置6个按钮,以便管理员操作
Button btnSelf=new Button("个人信息管理");
Button btnSCsh=new Button("成绩信息查询");
Button btnCsh=new Button("课程信息查询");
Button btnCSsh=new Button("班级信息查询");
Button btnEXIT=new Button("退出");
/*
* Author WangGuodong
*/
//
String dbURL="jdbc:sqlserver://localhost:1433;databaseName=学生学籍信息管理系统";
String userName="sa";
String userPwd="123";
//
Connection conn;
Statement stmt;
ResultSet rs;
//
Object[][] arr;
String sno;
String spwd;
JScrollPane scroll1;
JScrollPane jsp1;
JTable stable1;
JTable tb1;
public void connDB() {
try {
conn=DriverManager.getConnection(dbURL,userName,userPwd);
stmt=conn.createStatement();
}catch(Exception e) {
e.printStackTrace();
}
}
public void closeDB() {
try {
rs.close();
stmt.close();
conn.close();
}catch(Exception e) {
e.printStackTrace();
}
}
public Student(String str) { //构造方法
super("学生页面");
setLayout(new FlowLayout());
//设置标签的颜色
l.setFont(f1);
l.setForeground(Color.blue);
//设置按钮字体和颜色
btnSelf.setFont(f2);
btnSelf.setBackground(new Color(0,255,255));
btnSCsh.setFont(f3);
btnSCsh.setBackground(new Color(255,160,122));
btnCsh.setFont(f4);
btnCsh.setBackground(new Color(30,144,255));
btnCSsh.setFont(f3);
btnCSsh.setBackground(new Color(0,255,0));
btnEXIT.setFont(f2);
btnEXIT.setBackground(new Color(220,20,60));
p1.add(l);
p1.setOpaque(false);
p2.setLayout(new GridLayout(4,2,10,10));
p2.setOpaque(false);
p2.add(btnSelf);
p2.add(btnSCsh);
p2.add(btnCsh);
p2.add(btnCSsh);
p2.add(btnEXIT);
this.connDB();
this.sno=str;
//布局管理器
this.add(p1);
this.add(p2);
ImageIcon ic=new ImageIcon("C:\\Users\\YXS\\eclipse-workspace\\edu-a-s\\src\\edu\\yxs\\sqldemo\\1.jpg");
JLabel l=new JLabel(ic);
l.setBounds(0,0,ic.getIconWidth(),ic.getIconHeight());
//l.setBounds(0,0,this.getWidth(),this.getHeight());
//JPanel ip=(JPanel)this.getContentPane();
this.getLayeredPane().add(l,new Integer(Integer.MIN_VALUE));
((JPanel)this.getContentPane()).setOpaque(false);//设置透明
//设置顶层容器的大小、位置、可见性及close功能
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(350,300);
setLocationRelativeTo(null);
setVisible(true);
btnSelf.addActionListener(this);
btnSCsh.addActionListener(this);
btnCsh.addActionListener(this);
btnCSsh.addActionListener(this);
btnEXIT.addActionListener(this);
}
public void cssearch(String str) { //班级查询方法
JFrame f=new JFrame("班级信息页面");
//JPanel p=new JPanel();
f.setLayout(new FlowLayout());
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setSize(500,150);
f.setVisible(true);
f.setLocationRelativeTo(null);
Button btnrt=new Button("返回");
btnrt.setFont(f3);
btnrt.setBackground(new Color(131,175,155));
//btnrt.setSize(20,10);
this.connDB();
arr=new Object[1][6];
try {
rs=stmt.executeQuery("select * from 班级表1 where 学号="+str);
while(rs.next()) {
arr[0][0]=rs.getString("学号");
arr[0][1]=rs.getString("班级号");
arr[0][2]=rs.getString("班级名称");
arr[0][3]=rs.getString("所属学院");
arr[0][4]=rs.getString("班级人数");
arr[0][5]=rs.getString("班主任");
}
}catch(Exception e){
e.printStackTrace();
}
String[] list={"学号","班级号","班级名称","所属学院","班级人数","班主任"};
tb1=new JTable(arr,list); //创建表格
jsp1=new JScrollPane(tb1);
f.add(btnrt);
f.add(jsp1); //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
btnrt.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
new Student(sno);
}
});
}
public void csearch(String str) { //课程查询方法
JFrame f=new JFrame("课程信息页面");
//JPanel p=new JPanel();
f.setLayout(new FlowLayout());
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setSize(500,150);
f.setVisible(true);
f.setLocationRelativeTo(null);
Button btnrt=new Button("返回");
btnrt.setFont(f3);
btnrt.setBackground(new Color(131,175,155));
//btnrt.setSize(20,10);
int i=0,j=0;
ArrayList ar=new ArrayList();
this.connDB();
try {
rs=stmt.executeQuery("select * from 课程表2 where 学号="+str);
while(rs.next()){
ar.add(rs.getString("学号"));
ar.add(rs.getString("课程号"));
ar.add(rs.getString("课程名"));
ar.add(rs.getString("教师号"));
ar.add(rs.getString("教师姓名"));
j++;
}
}catch(Exception e) {
e.printStackTrace();
}
arr=new Object[j][5];
try {
rs=stmt.executeQuery("select * from 课程表2 where 学号="+str);
while(rs.next()) {
arr[i][0]=rs.getString("学号");
arr[i][1]=rs.getString("课程号");
arr[i][2]=rs.getString("课程名");
arr[i][3]=rs.getString("教师号");
arr[i][4]=rs.getString("教师姓名");
i++;
}
}catch(Exception e){
e.printStackTrace();
}
String[] list={"学号","课程号","课程名","教师号","教师姓名"};
tb1=new JTable(arr,list); //创建表格
jsp1=new JScrollPane(tb1);
//f.add(btnrt,BorderLayout.NORTH);
f.add(btnrt);
f.add(jsp1); //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
//f1.add(btnrt);
btnrt.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
new Student(sno);
}
});
}
public void scsearch(String str) { //查询成绩页面
int i=0,j=0;
JFrame f=new JFrame("成绩信息页面");
//JPanel p=new JPanel();
f.setLayout(new FlowLayout());
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setSize(500,200);
f.setVisible(true);
f.setLocationRelativeTo(null);
Button btnrt=new Button("返回");
btnrt.setFont(f3);
btnrt.setBackground(new Color(131,175,155));
//btnrt.setSize(20,10);
this.connDB();
ArrayList list=new ArrayList();
try {
rs=stmt.executeQuery("select * from 成绩表1 ");
while(rs.next()) {
list.add(rs.getString("学号"));
list.add(rs.getString("姓名"));
list.add(rs.getString("课程号"));
list.add(rs.getString("课程名"));
list.add(rs.getString("教师姓名"));
list.add(rs.getString("成绩"));
i++;
}
}catch(Exception e) {
e.printStackTrace();
}
arr=new Object[i][6];
try {
rs=stmt.executeQuery("select * from 成绩表1 where 学号="+str+"order by 课程号");
while(rs.next()) {
arr[j][0]=rs.getString("学号");
arr[j][1]=rs.getString("姓名");
arr[j][2]=rs.getString("课程号");
arr[j][3]=rs.getString("课程名");
arr[j][4]=rs.getString("教师姓名");
arr[j][5]=rs.getString("成绩");
j++;
}
}catch(Exception e){
e.printStackTrace();
}
String[] listname={"学号","姓名","课程号","课程名","教师姓名","成绩"};
tb1=new JTable(arr,listname); //创建表格
jsp1=new JScrollPane(tb1);
//f.add(btnrt,BorderLayout.NORTH);
f.add(btnrt);
f.add(jsp1); //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
//f1.add(btnrt);
btnrt.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
new Student(str);
}
});
}
public void display(String str) { //用来显示个人信息
JFrame f1=new JFrame("个人信息");
f1.setLayout(new FlowLayout());
f1.setSize(500,150);
f1.setVisible(true);
f1.setLocationRelativeTo(null);
Button btnchange=new Button("修改密码");
Button btnrt=new Button("返回");
btnchange.setFont(f3);
btnchange.setBackground(new Color(131,175,155));
btnrt.setFont(f3);
btnrt.setBackground(new Color(131,175,155));
this.connDB();
arr=new Object[1][6];
try {
rs=stmt.executeQuery("select * from 学生表 where 学号="+str);
while(rs.next()) {
arr[0][0]=rs.getString("学号");
arr[0][1]=rs.getString("姓名");
arr[0][2]=rs.getString("性别");
arr[0][3]=rs.getInt("年龄");
arr[0][4]=rs.getString("班级号");
arr[0][5]=rs.getString("密码");
}
}catch(Exception e){
e.printStackTrace();
}
String[] columnNames= {"学号","姓名","性别","年龄","班级号","密码"};
stable1=new JTable(arr,columnNames); //创建表格
scroll1=new JScrollPane(stable1);
f1.add(btnchange);
f1.add(btnrt);
f1.add(scroll1); //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
//f1.add(btnrt);
btnrt.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f1.dispose();
new Student(sno);
}
});
btnchange.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f1.dispose();
change();
}
});
}
public void change() { //创建修改密码页面,新窗口用于修改密码
this.connDB();
JFrame f=new JFrame("修改密码");
f.setLayout(new FlowLayout());
JPanel p=new JPanel();
JPanel p1=new JPanel();
p.setLayout(new GridLayout(3,2));
JLabel btn1=new JLabel("初始密码:");
btn1.setFont(f3);
JTextField tf1=new JTextField(10);
JLabel btn2=new JLabel("修改密码:");
btn2.setFont(f3);
JTextField tf2=new JTextField(10);
Button ok=new Button("确定");
ok.setBackground(new Color(131,175,155));
Button cancel=new Button("取消");
cancel.setBackground(new Color(131,175,155));
p.add(btn1);
p.add(tf1);
p.add(btn2);
p.add(tf2);
p1.add(ok);
p1.add(cancel);
f.add(p);
f.add(p1);
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setLocation(530,300);
//f.setLocationRelativeTo(null);
f.setSize(300,150);
f.setVisible(true);
ok.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
try { //获取初始密码
rs=stmt.executeQuery("select * from 学生表 where 学号="+sno);
while(rs.next()) {
spwd=rs.getString("密码").trim(); //!!!对于数据库中传回来的值一定要用trim();因为后面会有多余的空格!!!
/*bug:数据库中数据会有空格,mmp,记于12/10/凌晨1:56,耻!*/
//spwd="123";
}
}catch(Exception e1) {
e1.printStackTrace();
}
if(tf1.getText().equals("") || tf2.getText().equals("")) {
JOptionPane.showMessageDialog(null, "密码不能为空!请重新修改!");
}else {
if(!spwd.equals(tf1.getText())) { //spwd.equals(tf1.getText().trim())
JOptionPane.showMessageDialog(null,"初始密码错误,请重新输入密码!"); //"原密码是"+spwd+"输入密码是"+tf1.getText();
tf1.setText("");
tf2.setText("");
}else {
try {
stmt.executeUpdate("update 学生表 set 密码 ="+"'"+tf2.getText().trim()+"'"+"where 学号="+sno);
}catch(Exception e1) {
e1.printStackTrace();
}
JOptionPane.showMessageDialog(null,"密码修改成功!请重新登录!");
f.dispose();
new DengLu();
}
}
}
});
cancel.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
new Student(sno);
}
});
}
public void actionPerformed(ActionEvent e) {
//按钮为“个人信息修改”,跳转页面
if(e.getSource().equals(btnSelf)) {
this.dispose();
this.display(sno);
}
//按钮为“成绩信息查询”,跳转页面
if(e.getSource().equals(btnSCsh)) {
//new SM().display();
this.dispose();
this.scsearch(sno);
}
//按钮为“课程信息查询”,跳转页面
if(e.getSource().equals(btnCsh)) {
this.dispose();
this.csearch(sno);
}
//按钮为“班级信息查询”,跳转页面
if(e.getSource().equals(btnCSsh)) {
this.dispose();
this.cssearch(sno);
}
//按钮为“退出管理系统”,程序退出
if(e.getSource().equals(btnEXIT)) {
//System.exit(0);
this.dispose();
new DengLu();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Student("1610421084");
}
管理员模块的源代码
package 学生学籍信息管理系统新;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GLFrame extends JFrame implements ActionListener{
///////////////注意////////////////
//在类里面只有成员变量和方法,切忌在成员变量里直接定义
//“管理员”标签
JLabel l=new JLabel("--管理员--");
//定义面板容器
JPanel p1=new JPanel();
JPanel p2=new JPanel();
//设置字体类型
Font f1=new Font("宋体",Font.BOLD,30);
Font f2=new Font("幼圆",Font.ITALIC,30);
Font f3=new Font("楷体",Font.BOLD,18);
Font f4=new Font("隶书",Font.PLAIN,40);
//设置6个按钮,以便管理员操作
JButton btnTM=new JButton("教师信息管理");
JButton btnSM=new JButton("学生信息管理");
JButton btnCM=new JButton("课程信息管理");
JButton btnSCM=new JButton("成绩信息管理");
JButton btnCSM=new JButton("班级信息管理");
JButton btnEXIT=new JButton("退出管理系统");
public GLFrame() { //构造方法
super("管理员管理页面");
setLayout(new FlowLayout());
//设置标签的颜色
l.setFont(f1);
l.setForeground(Color.blue);
//设置按钮字体和颜色
btnTM.setFont(f3);
btnTM.setContentAreaFilled(false);
//btnTM.setBackground(Color.blue);
btnSM.setFont(f3);
btnSM.setContentAreaFilled(false);
btnCM.setFont(f3);
btnCM.setContentAreaFilled(false);
btnSCM.setFont(f3);
btnSCM.setContentAreaFilled(false);
btnCSM.setFont(f3);
btnCSM.setContentAreaFilled(false);
btnEXIT.setFont(f3);
btnEXIT.setContentAreaFilled(false);
p1.add(l);
p1.setOpaque(false);
p2.setLayout(new GridLayout(3,2,10,10));
p2.setOpaque(false);
p2.add(btnTM);
p2.add(btnSM);
p2.add(btnCM);
p2.add(btnSCM);
p2.add(btnCSM);
p2.add(btnEXIT);
//布局管理器
this.add(p1);
this.add(p2);
//设置背景图片
ImageIcon ic=new ImageIcon("D:\\picture\\管理界面.png");
JLabel l=new JLabel(ic);
l.setBounds(0,0,ic.getIconWidth(),ic.getIconHeight());
//l.setBounds(0,0,this.getWidth(),this.getHeight());
//JPanel ip=(JPanel)this.getContentPane();
this.getLayeredPane().add(l,new Integer(Integer.MIN_VALUE));
((JPanel)this.getContentPane()).setOpaque(false);//设置透明
//设置顶层容器的大小、位置、可见性及close功能
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(350,300);
setLocationRelativeTo(null);
setVisible(true);
btnTM.addActionListener(this);
btnSM.addActionListener(this);
btnCM.addActionListener(this);
btnSCM.addActionListener(this);
btnCSM.addActionListener(this);
btnEXIT.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
//按钮为“教师信息管理”,跳转页面
if(e.getSource().equals(btnTM)) {
this.dispose();
new TM().display();
}
//按钮为“学生信息管理”,跳转页面
if(e.getSource().equals(btnSM)) {
//new SM().display();
this.dispose();
new SM().display();
}
//按钮为“课程信息管理”,跳转页面
if(e.getSource().equals(btnCM)) {
this.dispose();
new CM().display();
}
//按钮为“成绩信息管理”,跳转页面
if(e.getSource().equals(btnSCM)) {
this.dispose();
new SCM().display();
}
//按钮为“班级信息管理”,跳转页面
if(e.getSource().equals(btnCSM)) {
this.dispose();
new ClassM().display();
}
//按钮为“退出管理系统”,程序退出
if(e.getSource().equals(btnEXIT)) {
//System.exit(0);
this.dispose();
new DengLu();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new GLFrame();
}
}
本博主只是入门新手,思路和源码仅供参考,这个设计还有一些缺陷,博主正在奋力修改中!
设计小结
爱你所爱,行你所行,听从你心,无问西东!