create table 管理员(管理员号 char(10) ,登录密码 char(20))
create table 教师表(教师号 char(10) primary key,姓名 char(20),性别 char(2),学历char(20),职称 char(20),所属学院char(20),登录密码 char(20))
create table 学生表(学号 char(10) not null primary key,姓名 char(20) not null,性别 char(2),年龄 smallint,班级号 char(10), foreign key(班级号) references 班级表(班级号),密码 char(20))
create table 课程(课程号 char(20) primary key,课程名 char(20) ,教师号 char(20), foreign key(教师号) references 教师表(教师号));
create table 成绩表(学号 char(10),课程号 char(20),成绩 smallint,primary key(学号,课号),foreign key(学号) references 学生表(学号),foreign key(课程号) references 课程表(课程号));
后面的视图就不贴图了,基本创建过程均是相似的~~
create view 班级表
as
select 学生表.学号,班级表.班级号,班级表.班级名称,班级表.所属学院,班级表.班级人数,班级表.班主任
from 学生表,班级表
where 学生表.班级号=班级表.班级号
create view 成绩表 as
select 成绩表.学号,学生表.姓名 学生姓名,成绩表.课程号,课程表.课程名,教师表.姓名 教师姓名,成绩表.成绩
from 成绩表,学生表,课程表,教师表
where 成绩表.学号=学生表.学号 and 成绩表.课程号=课程表.课程号 and 课程表.教师号=教师表.教师号
create view 课程表1
as
select 成绩表.课程号,课程表.课程名,课程表.教师号,教师表.姓名 教师姓名
from 成绩表,课程表,教师表
where 成绩表.课程号=课程表.课程号 and 课程表.教师号=教师表.教师号
create view 课程表2
as
select 成绩表.学号,成绩表.课程号,课程表.课程名,课程表.教师号,教师表.姓名 教师姓名
from 成绩表,课程表,教师表
where 成绩表.课程号=课程表.课程号 and 课程表.教师号=教师表.教师号
create view学生信息表
as
select学生表.学号,学生表.姓名,学生表.性别,学生表.年龄,学生表.班级号,班级表.班级名称,成绩表.课程号,课程表.课程名,成绩表.成绩,课程表.教师号
from学生表,班级表,成绩表,课程表,
where学生表.班级号=班级表.班级号and学生表.学号=成绩表.学号and课程表.课程号=成绩表.课程号
String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=教务系统";
String username="sa";
String userpwd="123";
//连接数据库
public void connDB(){ //连接数据库方法
try {
conn=DriverManager.getConnection(dbURL,username,userpwd);
stmt=conn.createStatement();
}catch(Exception e) {
e.printStackTrace();
}
}
DLFrame(){ //构造方法
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("C:\\Users\\YXS\\eclipse-workspace\\edu-a-s\\src\\edu\\yxs\\sqldemo\\4.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(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 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("C:\\Users\\YXS\\eclipse-workspace\\edu-a-s\\src\\edu\\yxs\\sqldemo\\5.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);
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 DLFrame();
}
}
public TM() { //构造方法
super("教师信息管理系统");
//设置按钮颜色和字体
btnadd.setFont(f1);
btnadd.setBackground(new Color(131,175,155));
btndelete.setFont(f1);
btndelete.setBackground(new Color(131,175,155));
btnupdate.setFont(f1);
btnupdate.setBackground(new Color(131,175,155));
btnsearch.setFont(f1);
btnsearch.setBackground(new Color(131,175,155));
btndisplay.setFont(f1);
btndisplay.setBackground(new Color(131,175,155));
btnreturn.setFont(f1);
btnreturn.setBackground(new Color(131,175,155));
//将按钮添加进菜单栏中
mb.add(btnadd);
mb.add(btndelete);
mb.add(btnupdate);
mb.add(btnsearch);
mb.add(btndisplay);
mb.add(btnreturn);
//连接数据库
this.connDB();
//给按钮注册监听器
btnadd.addActionListener(this);
btndelete.addActionListener(this);
btnupdate.addActionListener(this);
btnsearch.addActionListener(this);
btndisplay.addActionListener(this);
btnreturn.addActionListener(this);
setSize(500,300);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
this.setJMenuBar(mb);
}
public void display() {
//this.connDB();
String sql="select * from 教师表";
ArrayList ar=new ArrayList(); //建立数列进行存储数据库成员信息
int i=0,j=0;
try {
rs=stmt.executeQuery(sql);
while(rs.next()) {
ar.add(rs.getString("教师号"));
ar.add(rs.getString("姓名"));
ar.add(rs.getString("性别"));
ar.add(rs.getString("学历"));
ar.add(rs.getString("职称"));
ar.add(rs.getString("所属学院"));
ar.add(rs.getString("登录密码"));
i++;
}
}catch(Exception e) {
e.printStackTrace();
}
//创建二维数组进行存储
arr=new Object[i][7];
String[] list= {"教师号","姓名","性别","学历","职称","所属学院","登录密码"};
try {
rs=stmt.executeQuery("select * from 教师表 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("所属学院");
arr[j][6]=rs.getString("登录密码");
j++;
}
}catch(Exception e) {
e.printStackTrace();
}
tb=new JTable(arr,list);
jsp=new JScrollPane(tb);
this.add(jsp);
}
public void delete() { //删除信息方法
String tno=null; //定义字符变量,来接收教师号
int row=tb.getSelectedRow(); //代表鼠标选定的行数
if(row==-1) { //表示未被选中
JOptionPane.showMessageDialog(null,"请选择要删除的记录!");
}else {
int x=0;
try {
rs=stmt.executeQuery("select * from 教师表");
while(rs.next() && x<=row) {
tno=rs.getString("教师号");
x++;
}
stmt.executeUpdate("delete from 课程表 where 教师号="+tno);
stmt.executeUpdate("delete from 教师表 where 教师号="+tno); //局部变量一定要初始化
JOptionPane.showMessageDialog(null,"删除成功!");
this.dispose();
new TM().display();
}catch(Exception e) {
e.printStackTrace();
}
}
}
public void update() {
String sno1=null; //局部变量一定要初始化
int row=tb.getSelectedRow(); //代表鼠标选定的行数
if(row==-1) { //表示未被选中
JOptionPane.showMessageDialog(null,"请选择要修改的信息!");
}else {
int x=0;
try {
rs=stmt.executeQuery("select * from 教师表");
while(rs.next() && x<=row) {
sno1=rs.getString("教师号");
x++;
}
this.dispose();
new TMupdate(sno1);
}catch(Exception e) {
e.printStackTrace();
}
}
}
public void show(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(f1);
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(btnrt);
f.add(scroll1); //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
//f1.add(btnrt);
btnrt.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
}
});
}
//该方法用来确认是否在数据库中找到教师号
public boolean searchtest(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;
}
//查找方法
public void search() { //等效于将一个窗口写在方法里面
JFrame f=new JFrame("查询");
f.setLayout(new FlowLayout());
f.setSize(240,180);
f.setVisible(true);
f.setLocationRelativeTo(null);
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JLabel stuno=new JLabel("输入教师号:");
JTextField stuno1=new JTextField(10);
Button ok=new Button("确定");
Button cancel=new Button("取消");
p1.add(stuno);
p1.add(stuno1);
p2.add(ok);
p2.add(cancel);
f.add(p1);
f.add(p2);
//为组件注册监听器
ok.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if(stuno1.getText().equals("")) {
JOptionPane.showMessageDialog(null,"请输入教师号");
}else {
if(!searchtest(stuno1.getText().trim())) {
f.dispose();
JOptionPane.showMessageDialog(null,"对不起,该教师不存在!");
}else {
f.dispose();
//new SM(stuno1.getText());
show(stuno1.getText());
}
}
}
});
cancel.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
//
}
});
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
Window w=(Window)e.getComponent();
w.dispose();
}
});
}
public void itemStateChanged(ItemEvent e) {
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btnadd) {
this.dispose();
new TMadd();
}
if(e.getSource()==btndelete) {
JOptionPane.showMessageDialog(null,"删除操作,谨慎操作!");
this.delete();
}
if(e.getSource()==btnupdate) {
//this.dispose();
this.update();
}
if(e.getSource()==btnsearch) {
this.search();
}
if(e.getSource()==btndisplay) {
this.dispose();
new TM().display();
}
if(e.getSource()==btnreturn) {
this.dispose();
new GLFrame();
}
}
基本代码都是大同小异,在于具体实现细节烧脑!
public TeacherFrame(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 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 TeacherFrame(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 DLFrame();
}
}
}
});
cancel.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
new TeacherFrame(tno);
}
});
}
》》》》》》》》》》》》》》》》》》》》》》》》...加载中
public StudentFrame(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,BorderLayout.NORTH);
f.add(btnrt);
f.add(jsp1); //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
//f1.add(btnrt);
btnrt.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
new StudentFrame(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 StudentFrame(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 StudentFrame(str);
}
});
}
package edu.yxs.sqldemo;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Panel;
import java.util.Random;
class MyPanel extends Panel{
static String s1;
public void paint(Graphics g){
int width=70;
int height=40;
g.setColor(Color.LIGHT_GRAY);
g.fillRect(0,0, width, height);
g.setColor(Color.green); //设置上下文颜色
g.drawRect(0,0,width-1,height-1); //绘制边框
Random r=new Random(); //产生随机数
//绘制背景圆点
for(int i=0;i<200;i++){
int x=r.nextInt(width)-2;
int y=r.nextInt(height)-2;
g.drawOval(x, y, 2, 2);
}
g.setFont(new Font("黑体",Font.BOLD,30));
g.setColor(Color.yellow);
char[] chars=("0123456789"+"abcdefghijklmnopqrstuvwxyz"+"HIJKLMNOPQRSTUVWXYZ").toCharArray();
StringBuilder sb=new StringBuilder();
for(int i=0;i<4;i++){
int pos=r.nextInt(chars.length);
char c=chars[pos];
sb.append(c+" ");
}
g.drawString(sb.toString(),20,30);
s1=sb.toString();
g.setColor(Color.red);
for(int i=0;i<200;i++){
int x=r.nextInt(width)-2;
int y=r.nextInt(height)-2;
g.drawOval(x, y, 2, 2);
}
}
public static void main(String[] args) {
new MyPanel();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=教务系统";
String userName = "sa";
String userPwd = "123";
try {
//Class.forName(driverName);
Connection conn=DriverManager.getConnection(dbURL,userName,userPwd);
Statement stmt=conn.createStatement();
System.out.println("connect sqlserver success!");
//需要执行的语句
String sql="select * from 课程表";
ResultSet rs=stmt.executeQuery(sql);
//System.out.println("管理员号"+"\t"+"登录密码");
//System.out.println("cno"+"\t"+"cname"+"\t"+"cpno"+"\t"+"ccredit");
while(rs.next()) {
System.out.print(rs.getString(1)+"\t");
System.out.print(rs.getString(2)+"\t");
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
System.out.print("connect failed");
}
}
String dbURL="jdbc:sqlserver://localhost:1433;databaseName=教务系统";
String userName="sa";
String userPwd="123";
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);//设置透明
嗯~,图形添加好,问题就来了,会出现添加的图过大,无法适应窗口,即窗口无法将整张图展示出来,如图4-1,4-2的区别,后来小编也是找了很多方法,但貌似时类和方法的不熟悉,导致没有总之有效的方法,后来迫于无奈,于是将所有需要的背景图按照窗口的大小裁剪好,然后展示出来的效果如图4-4的效果。对了,还有一点很重要,一定要把JButton,JPanel这些组件设为透明,不然会阻挡背景图,很难受的~~~~
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 DLFrame();
}
}
}
});
public void scmg(String s1,String s2) { //精确到班级成绩的页面
String csname=null;
this.connDB();
try {
rs=stmt.executeQuery("select distinct 班级号 ,班级名称 from 学生信息表 where 班级号="+"'"+s2+"'");
while(rs.next()) {
csname=rs.getString("班级名称").trim();
}
}catch(Exception e) {
e.printStackTrace();
}
JFrame f=new JFrame(csname+" --学生成绩信息");
//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 教师号="+s1+"and 班级号='"+s2+"'");
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("课程名"));
al.add(rs.getString("成绩"));
i++;
}
}catch(Exception e){
e.printStackTrace();
}
arr=new Object[i][8];
try {
rs=stmt.executeQuery("select * from 学生信息表 where 教师号="+s1+"and 班级号= '"+s2+"'");
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("课程名");
arr[j][7]=rs.getString("成绩");
j++;
}
}catch(Exception e){
e.printStackTrace();
}
String[] list= {"学号","姓名","性别","年龄","班级名称","课程号","课程名","成绩"};
tb5=new JTable(arr,list); //创建表格
scroll5=new JScrollPane(tb5);
//f.add(btnrt,BorderLayout.NORTH);
f.add(btnchange);
f.add(btnrt);
f.add(scroll5); //此处有个小bug,只有添加进滚轮面板,才能将头部名称显示出来
//String sno1=null; //局部变量一定要初始化,获取学生学号
String cno=null; //获取课程号
/////////////////////////////////////////////////////////////////
//*Bug:千万不要在同一个方法里定义获取行数!!!!!!!!!!!无法执行 //
//row=tb5.getSelectedRow(); //代表鼠标选定的行数 //
/////////////////////////////////////////////////////////////////
btnrt.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
f.dispose();
scmg(tno);
}
});
btnchange.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if(row==-1) { //表示未被选中
JOptionPane.showMessageDialog(null,"请选择要修改的信息!");
}else {
//int x=0;
try {
//String sno1=(String)tb1.getModel().getValueAt(row,column);
f.dispose();
//scchange1(sno1,cno);
}catch(Exception e1) {
e1.printStackTrace();
}
}
//f.dispose();
//scchange();
}
});
}