




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、准备工作说明:1、Java编译工具为MyEclipse 6.0;系统连接数据库为SQL Server 2014,使用jdbc连接;驱动包为jdbc.jar;2、数据库登录名为“sa”,登录密码为“fang”;3、访问的数据库名称为“javaTest”,里面有两张表,一张为学生表:“STU”,用于学生身份登录访问;学生成功登录进系统后只能访问自己的基本信息及成绩;另一张为教师表“TCH”,用于教师身份登录访问;教师登陆成功后可访问任意学生信息及成绩;4、STU包括学生用户名(学号)、学生密码、姓名、性别、班级、院系、英语成绩、数学成绩、计算机成绩、Linux成绩、Java成绩字段;STU表初
2、始只有ID 字段和Pwd字段有值,且两者相同;ID字段为主键,与密码一起不能为空;其他全为null;ID、Pwd、Name、Gender、Class、Depart字段构成了学生基本信息,均为字符串型;English、Math、Computer、Linux、Java字段构成了学生成绩信息,均为整型;初始数据如下表所示:5、TCH包括教师用户名、密码两个字段;同样ID为主键,和密码一起不能为空,均为字符串型;教师登陆成功后可访问任意学生信息及成绩;教师表如下所示:二、系统功能说明1、登录界面系统实现按不同身份下的用户名和密码登录,用户名和密码需与数据库中对应的表的字段值一致方可成功登录,否则提示失
3、败;登录界面如下:2、学生版信息成绩查询界面学生身份登录成功后,进入学生版信息成绩查询界面,如下所示:2.1 【我的信息】选项卡进入该选项卡时,学号文本框是默认显示的用户名;且所有文本框均不可操作;在【我的信息】页卡中,首次登录需要执行【插入】操作,插入自己相应的信息到后台数据库中;插入成功后才可点击【查询】执行查询操作;查询成功后在面板上进行相应显示;2.1.1 插入操作首次登录可执行【插入】操作,界面如下:其中学生编号不可编辑,其他均可,编辑完成后点【添加】,若成功则提示成功;再次执行【插入】时系统提示不可操作,界面如下:2.1.2 查询操作未执行插入后点击【查询】按钮时:在完成插入操作后
4、,执行查询,显示如下:2.2 【我的成绩】选项卡进入该选项卡时,学号文本框是默认显示的用户名;且所有文本框均不可操作;成绩由教师录入,学生没权限录入,因此点击【成绩查询】时,如果教师并没有录入成绩,此时显示如下提示:当教师已对成绩进行录入后,学生点击【成绩查询】按钮进行如下成绩显示:至此,学生版成绩信息管理系统功能结束;3、教师版信息成绩查询界面3.1 【学生信息】选项卡进入该选项卡后,直接在面板上显示STU表中所有学生的信息,如下所示:3.1.1 录入信息操作点击【录入信息】按钮,可插入学生信息,如下图所示输入完整后点击添加,即完成对新信息的录入;同时在学生信息的主界面上同步显示录入后的信息
5、;3.1.2 查询信息操作点击【查询信息】按钮,输入所要查询学生的学号,可显示所要查询学生的信息,如下图所示;3.1.3 修改信息操作点击【修改信息】按钮,选中所要修改学生的记录,可执行学生信息的修改,如下图所示;输入完成后点击【确定】完成信息的修改,同时在学生信息主界面上同步更新;3.2 【学生成绩】选项卡进入该选项卡后,直接在面板上显示STU表中所有学生的成绩,如下所示:3.2.1 录入信息操作点击【录入成绩】按钮,可插入学生成绩,如下图所示输入完整后点击添加,即完成对新信息的录入;同时在学生成绩的主界面上同步显示录入后的成绩;3.1.2 查询成绩操作点击【查询成绩】按钮,输入所要查询学生
6、的学号,可显示所要查询学生的成绩,如下图所示;3.1.3 修改成绩操作点击【修改成绩】按钮,选中所要修改学生的记录,可执行学生成绩的修改,如下图所示;输入完成后点击【确定】完成信息的修改,同时在学生信息主界面上同步更新;三、源码(包名:stuSystem,共10个java文件)1、登录页面文件:CheckIn.java 代码:/*一、本程序实现用户登录界面; * 1、界面包括顶端一张图片,左侧一个图片; 2、中间有用户名、密码两个标签上下排列,同一行还有文本框和密码框上下排列; 3、下面是学生和教师两个单选按钮,供用户选择角色; 4、最下面是确定和取消两个按钮; 二、功能: 实现用户的登录;
7、在系统相连的数据库中,应有两张表,一张为学生表:STU,表中有两个字段:ID和Pwd,均为字符串类型,分别存放学生的姓名和密码; 另一张为教师表:TCH,表中有两个字段:ID和Pwd,均为字符串类型,分别存放教师的姓名和密码; 1、数据库成功连接驱动判断; 2、数据库成功登录判断; 3、用户名和密码为空判断; 4、用户身份为空判断; 5、用户名和密码是否正确判断; 6、如学生身份登录正确则跳转至学生成绩信息系统页面; 7、如教师身份登录正确则跳转至教师版学生成绩信息系统页面; 8、点取消按钮退出系统; */package stuSystem;import java.sql.*;import j
8、ava.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;import stuSysFind.Systems;public class CheckIn extends JFrame implements ActionListenerJLabel lab_name,/定义“用户名”标签;lab_password,/定义“密码”标签;lab1,/定义用来显示登录图片的标签,无文字内容;lab2;/定义用来显示登录图片的标签,无文字内容;JTextField text_name;/定义用来输入用户名的文本框;J
9、PasswordField pwd;/定义用来输入密码的密码框;JButton but_enter,/定义“登录“按钮;but_exit;/定义“退出”按钮;JRadioButton rbu_stu,/定义”学生“单选按钮;rbu_tea;/定义”教师“单选按钮;ButtonGroup bgp;/定义一个按钮组,用来存放所有的单选按钮,以实现只能选其一的功能;PreparedStatement ps=null;Connection con=null;ResultSet rs=null;String forname=com.microsoft.sqlserver.jdbc.SQLServerDr
10、iver;String url=jdbc:sqlserver:/127.0.0.1:1433;DatabaseName=javaTest;String user=sa;String password=fang;Vector table=null;public static void main(String args)CheckIn ci=new CheckIn();public CheckIn ()/定义无参构造函数,用来初始化显示窗体;super(学生成绩管理信息系统);this.setLayout(null);/窗体在默认情况下是边界布局,此时控件的边界设置函数不起作用,需将边界布局清空;
11、面板同理;lab1=new JLabel(new ImageIcon(picsysPic.jpg);lab1.setBounds(0, 0, 450, 100);lab2=new JLabel(new ImageIcon(picpic3_2.png);lab2.setBounds(25,130,83,114);lab_name=new JLabel(用户名 :,JLabel.CENTER);lab_name.setBounds(160, 140, 50, 30);text_name=new JTextField(5);text_name.setBounds(220, 145, 100, 20)
12、;lab_password=new JLabel(密 码 :,JLabel.CENTER);lab_password.setBounds(160, 180, 50, 30);pwd=new JPasswordField(8);pwd.setBounds(220, 185, 100, 20);bgp=new ButtonGroup();rbu_stu=new JRadioButton(学生);rbu_stu.setBounds(165,225,70,20);rbu_tea=new JRadioButton(教师);rbu_tea.setBounds(260,225,70,20);bgp.add(
13、rbu_stu);bgp.add(rbu_tea);but_enter=new JButton(登录);but_enter.setBounds(148, 270, 80, 30);but_enter.addActionListener(this);but_exit=new JButton(退出);but_exit.setBounds(245, 270, 80, 30);but_exit.addActionListener(this);this.add(lab1);this.add(lab2);this.add(lab_name); this.add(text_name);this.add(la
14、b_password);this.add(pwd);this.add(rbu_stu);this.add(rbu_tea);this.add(but_enter);this.add(but_exit);ImageIcon imageIcon=new ImageIcon(picsysIcon.jpg);this.setIconImage(imageIcon.getImage();this.setResizable(false);this.setSize(450,350);this.setLocation(450, 260);this.setDefaultCloseOperation(JFrame
15、.EXIT_ON_CLOSE);this.setVisible(true);public void judge(String forname,String nameInput,String pwdInput)try Class.forName(forname);catch (ClassNotFoundException ce)/判断驱动是否正确安装;JOptionPane.showMessageDialog(this,ce.getMessage()+ is not found);this.dispose();if (nameInput.equals()/判断用户名是否为空;JOptionPan
16、e.showMessageDialog(this, 请输入用户名!);text_name.grabFocus();return;if (pwdInput.equals()/判断密码是否为空;JOptionPane.showMessageDialog(this, 请输入密码!);pwd.grabFocus();return;if (!rbu_stu.isSelected() & (!rbu_tea.isSelected()/判断身份选择是否为空;JOptionPane.showMessageDialog(this, 请选择学生或教师身份!);return;public void actionPe
17、rformed(ActionEvent e)if (e.getSource().equals(but_enter)/System.out.println(enter);String nameInput=text_name.getText().trim();String pwdInput=pwd.getText().trim();this.judge(forname,nameInput,pwdInput);if (rbu_stu.isSelected()/如果选中了学生界面;try con = DriverManager.getConnection(url, user, password);ps
18、 = con.prepareStatement(select * from STU where ID=?);ps.setString(1, nameInput);rs = ps.executeQuery();while (rs.next()if (rs.getString(ID).equals(nameInput) & rs.getString(Pwd).equals(pwdInput)/如果用户输入的用户名和密码与数据库里学生的名单一致;JOptionPane.showMessageDialog(this, 登录成功!);new StuPage(nameInput);/新建一个学生界面;br
19、eak;else JOptionPane.showMessageDialog(this, 登录失败,请正确输入用户名和密码!);text_name.grabFocus();/文本框获取光标;text_name.selectAll();/选中文本框所有内容,待改;break;catch(SQLException e2)JOptionPane.showMessageDialog(this, e2.getMessage();finallytry if (con!=null)con.close();if (ps!=null)ps.close();if (rs!=null)rs.close();catc
20、h (Exception e2)else if (rbu_tea.isSelected()/如果选中了教师界面;try con = DriverManager.getConnection(url, user, password);ps = con.prepareStatement(select * from TCH where ID=?);ps.setString(1, nameInput);rs = ps.executeQuery();while (rs.next()/对于非空结果集进行循环查询;if (rs.getString(ID).equals(nameInput) & rs.getS
21、tring(Pwd).equals(pwdInput)/如果用户输入的用户名和密码与数据库里教师的名单一致;JOptionPane.showMessageDialog(this, 登录成功!);new TeaPage();/新建一个教师界面;break;else JOptionPane.showMessageDialog(this, 登录失败,请正确输入用户名和密码!);text_name.grabFocus();/文本框获取光标;text_name.selectAll();/选中文本框所有内容,待改;break;catch(SQLException e2)JOptionPane.showMe
22、ssageDialog(this, e2.getMessage();finallytry if (con!=null)con.close();if (ps!=null)ps.close();if (rs!=null)rs.close();catch (Exception e2)if (e.getSource().equals(but_exit)this.dispose();2、学生界面文件:StuPage.java代码:package stuSystem;import java.awt.*;import java.awt.event.*;import javax.swing.*;import
23、java.sql.*;public class StuPage extends JFrame implements ActionListenerJTabbedPane tab;/定义一个选项卡组,用来存放多个页面;JPanel pan_message,/定义学生信息页面;pan_score;/定义学生成绩页面;JLabel lab_backGround;JLayeredPane lp;/定义分层面板,用于显示不同层次的效果;JButton but_insert,/定义信息面板上的插入按钮;but_query,/定义信息面板上的查询按钮;but_query2,/定义成绩面板上的查询按钮;but_
24、exit;/定义退出系统按钮;JLabel lab_mes,/定义”我的信息:“标签;lab_mes2,/定义“我的成绩单:”标签;lab_num,/定义”学号:“标签;lab_num2,lab_name,/定义”姓名:“标签;lab_gender,/定义”性别:“标签;lab_class,/定义”班级:“标签;lab_depart,/定义”院系:“标签;lab_En,/定义“英语”标签;lab_Math,/定义“数学”标签;lab_Com,/定义“计算机”标签;lab_Lin,/定义“Linux”标签;lab_Java;/定义“Java”标签;JTextField t_num,/定义”学号:
25、“输入文本框;t_num2,t_name,/定义”姓名:“输入文本框;t_gender,/定义”性别:“输入文本框;t_class,/定义”班级:“输入文本框;t_depart,/定义”院系:“输入文本框;t_En,/定义”英语:“输入文本框;t_Math,/定义”数学:“输入文本框;t_Lin,/定义”Linux:“输入文本框;t_Com,/定义”计算机:“输入文本框;t_Java;/定义”Java:“输入文本框;JComboBox comb;/定义性别下拉列表框;stuInfo sInfo;String ID;PreparedStatement ps=null;Connection con
26、=null;ResultSet rs=null;String forname=com.microsoft.sqlserver.jdbc.SQLServerDriver;String url=jdbc:sqlserver:/127.0.0.1:1433;DatabaseName=javaTest;String user=sa;String password=fang;public StuPage(String nameInput)super(学生成绩信息-学生版);/定义窗体标题;ID=nameInput;this.setLayout(null);/清除窗体边界格式;/lp= new JLaye
27、redPane();/注意这种定义新分层面板的方式不对;lp = this.getLayeredPane(); / 获取JLayeredPanelab_backGround=new JLabel(new ImageIcon(picback.jpg);/定义背景标签;tab=new JTabbedPane();/定义选项卡组;but_insert=new JButton(插入);but_query=new JButton(查询);but_query2=new JButton(成绩查询);but_exit=new JButton(EXIT);but_exit.setFont(new Font(,F
28、ont.BOLD,14);but_exit.setBackground(Color.LIGHT_GRAY);lab_mes=new JLabel(我的信息); /定义”我的信息:“标签;lab_mes.setFont(new Font(,Font.BOLD,16);lab_num=new JLabel(学号 :);/定义”学号:“标签;lab_name=new JLabel(姓名 :);/定义”姓名:“标签;lab_gender=new JLabel(性别 :);/定义”性别:“标签;lab_class=new JLabel(班级 :);/定义”班级:“标签;lab_depart=new JL
29、abel(院系 :);/定义”院系:“标签;t_num=new JTextField(5);/定义”学号:“输入文本框;t_name=new JTextField(5);/定义”姓名:“输入文本框;t_gender=new JTextField(5);/定义”性别:“输入文本框;t_class=new JTextField(5);/定义”班级:“输入文本框;t_depart=new JTextField(10);/定义”院系:“输入文本框;lab_mes2=new JLabel(我的成绩单); /定义”我的信息:“标签;lab_mes2.setFont(new Font(,Font.BOLD,
30、16);lab_num2=new JLabel(学号 :);lab_En=new JLabel(专业英语 :);lab_Math=new JLabel(高等数学 :);lab_Com=new JLabel(计算机网络 :);lab_Lin=new JLabel(Linux操作系统 :);lab_Java=new JLabel(Java :);t_num2=new JTextField(5);t_En=new JTextField(5);t_Math=new JTextField(5);t_Com=new JTextField(5);t_Lin=new JTextField(10);t_Java
31、=new JTextField(10);String gen=男,女;comb=new JComboBox(gen);/定义性别选择下拉列表;pan_message=new JPanel();/定义学生信息页卡;pan_score=new JPanel();/定义学生成绩页卡;ImageIcon icon_mess=new ImageIcon(picmessageIcon_2.png);/定义学生信息页卡图标;ImageIcon icon_sco=new ImageIcon(picscoreIcon_2.png);/定义学生成绩页卡图标;pan_message.setLayout(null);
32、pan_message.add(but_insert);pan_message.add(but_query);pan_message.add(lab_mes);pan_message.add(lab_num);pan_message.add(lab_name);pan_message.add(lab_gender);pan_message.add(lab_class);pan_message.add(lab_depart);pan_message.add(t_num);pan_message.add(t_name);pan_message.add(t_gender);pan_message.a
33、dd(t_class);pan_message.add(t_depart);pan_score.setLayout(null);pan_score.add(lab_mes2); pan_score.add(lab_num2);pan_score.add(lab_En);pan_score.add(lab_Math);pan_score.add(lab_Com); pan_score.add(lab_Lin);pan_score.add(lab_Java);pan_score.add(t_num2);pan_score.add(t_En);pan_score.add(t_Math);pan_sc
34、ore.add(t_Com);pan_score.add(t_Lin);pan_score.add(t_Java);pan_score.add(but_query2);lab_mes.setBounds(190, 20, 100, 20); /定义”我的信息:“标签边界尺寸;lab_num.setBounds(110, 75, 100, 20);/定义”学号:“标签边界尺寸;lab_name.setBounds(110, 110, 100, 20);/定义”姓名:“标签边界尺寸;lab_gender.setBounds(110, 145, 100, 20);/定义”性别:“标签边界尺寸;lab
35、_class.setBounds(110, 180, 100, 20);/定义”班级:“标签边界尺寸;lab_depart.setBounds(110, 215, 100, 20);/定义”院系:“标签边界尺寸;t_num.setBounds(180, 77, 120, 20);/定义”学号:“输入文本框边界尺寸;t_name.setBounds(180, 111, 120, 20);/定义”姓名:“输入文本框边界尺寸;t_gender.setBounds(180, 145, 120,20);/定义”性别:“输入文本框边界尺寸;t_class.setBounds(180, 179, 120,
36、20);/定义”班级:“输入文本框边界尺寸;t_depart.setBounds(180, 213, 120, 20);lab_mes2.setBounds(160, 20, 100, 20); lab_num2.setBounds(80, 65, 100, 20);lab_En.setBounds(80, 100, 100, 20);lab_Math.setBounds(80, 135, 100, 20);lab_Com.setBounds(80, 170, 100, 20);lab_Lin.setBounds(80, 205, 100, 20);lab_Java.setBounds(80,
37、 235, 100, 20);t_num2.setBounds(180, 67, 120, 20);t_En.setBounds(180, 101, 120, 20);t_Math.setBounds(180, 135, 120,20);t_Com.setBounds(180, 169, 120, 20);t_Lin.setBounds(180, 203, 120, 20);t_Java.setBounds(180, 237, 120, 20);t_num.setEditable(false);/定义文本框中内容不可直接编辑;t_num.setText(ID);t_num2.setEditab
38、le(false);t_num2.setText(ID);t_name.setEditable(false);t_gender.setEditable(false);t_class.setEditable(false);t_depart.setEditable(false);t_En.setEditable(false);t_Math.setEditable(false);t_Com.setEditable(false);t_Lin.setEditable(false);t_Java.setEditable(false);but_insert.setBounds(15, 10, 70, 30)
39、;but_query.setBounds(95, 10, 70, 30);but_query2.setBounds(350, 240, 90, 30);but_insert.addActionListener(this);but_query.addActionListener(this);but_query2.addActionListener(this);but_exit.addActionListener(this);tab.addTab(我的信息, icon_mess, pan_message);/将学生信息页卡添加到选项卡组里;tab.addTab(我的成绩单, icon_sco, p
40、an_score);/将学生成绩页卡添加到选项卡组里;lp.add(lab_backGround,new Integer(100);/将各组件添加到JLayeredPane中,指定所在的层,数字越高,所在的层越靠前;lp.add(tab,new Integer(200);lp.add(but_exit,new Integer(300);lab_backGround.setBounds(0, 0, 500, 397);/设置背景标签的位置和大小;lab_backGround.setOpaque(false);lab_backGround.setVisible(true);/设置背景标签可见;bu
41、t_exit.setBounds(350, 20, 90, 30);but_exit.setVisible(true);tab.setBounds(17, 17, 460, 330);/设置选项卡组的位置和大小;tab.setVisible(true);/设置选项卡组可见;ImageIcon icon=new ImageIcon(picstuIcon.jpg);this.setIconImage(icon.getImage();this.setBounds(400, 150, 500, 400);this.setResizable(false);this.setVisible(true);th
42、is.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public void actionPerformed(ActionEvent e)if (e.getSource().equals(but_insert)try Class.forName(forname);/System.out.println(stuInfo);catch (ClassNotFoundException ce)JOptionPane.showMessageDialog(this,ce.getMessage()+ is not found);try con=DriverMan
43、ager.getConnection(url,user,password);ps=con.prepareStatement(select * from STU where ID=+ID+);rs=ps.executeQuery();while (rs.next() if (rs.getString(Name)!=null)&(rs.getString(Gender)!=null)&(rs.getString(Class)!=null)&(rs.getString(Depart)!=null)/只有首次可以插入的判断;JOptionPane.showMessageDialog(this,信息已备
44、案,无法修改!);return;new AddMessage(this,添加学生信息,true,ID);/如为首次,则执行插入;break;catch (SQLException ce)JOptionPane.showMessageDialog(this, ce.getMessage();finallytry if (con!=null)con.close();if (ps!=null)ps.close();if (rs!=null)rs.close();catch (Exception e2)if (e.getSource().equals(but_query)sInfo=new stuIn
45、fo();String sql=select * from STU where ID=+ID+;sInfo.querySql(sql,t_name,t_gender,t_class,t_depart);if (e.getSource().equals(but_query2)sInfo=new stuInfo();String sql=select * from STU where ID=+ID+;sInfo.query2Sql(sql,t_En,t_Math,t_Com,t_Lin,t_Java);if (e.getSource().equals(but_exit)System.exit(0)
46、;public static void main(String args)StuPage sPage=new StuPage();3、学生信息类文件:StuInfo.java代码:package stuSystem;import javax.swing.*;import java.sql.*;public class stuInfo extends JFramePreparedStatement ps=null;Connection con=null;ResultSet rs=null;String forname=com.microsoft.sqlserver.jdbc.SQLServerD
47、river;String url=jdbc:sqlserver:/127.0.0.1:1433;DatabaseName=javaTest;String user=sa;String password=fang;public void querySql(String sql,JTextField t_name,JTextField t_gender,JTextField t_class,JTextField t_depart)try Class.forName(forname);catch (ClassNotFoundException ce)JOptionPane.showMessageDialog(this,ce.getMessage()+ is not found);try con=DriverManager.getConnection(url,user,password);ps=con.prepareStatement(sql);rs=ps.executeQuery();while (rs.next()if (rs.getString(Name)=null)|(rs.getString(Gender)=null)|(rs.getString(Class)=null)|(rs.getString(Depart)=null)JOptionPa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 18396-2025胶乳表面张力的测定
- 高考作文中的责任与担当试题及答案
- 资本市场的风险与机遇试题及答案
- 材料疲劳裂纹扩展控制策略重点基础知识点
- 材料疲劳寿命预测模型原理重点基础知识点
- 公共体育场火灾应急预案(3篇)
- 公司火灾-爆炸应急预案(3篇)
- 血液透析火灾的应急预案(3篇)
- 信息处理技术员考试准备技巧试题及答案
- 行政管理学科发展的新思路与新途径试题及答案
- 音协入会申请书
- 外卖餐饮业食品安全管理与操作规程培训课件
- 《智慧运输运营》课程标准
- 2025届陕西省汉中南郑区数学三年级第一学期期末经典模拟试题含解析
- 员工团队合作
- 压缩空气管道管理规定模版(3篇)
- 当代中国外交(外交学院)知到智慧树章节测试课后答案2024年秋外交学院
- 舆情监测平台解决方案
- 初中地理七年级第二学期期末试卷及答案-沪教版-2024-2025学年
- 防汛抢险人员安全培训
- 《香菱形象分析》课件
评论
0/150
提交评论