设计一个Student类,其中包括以下内容:
1.)学生信息:学号,姓名,年龄,语文成绩,数学成绩,总分,平均分
2.)通过键盘输入学生的学号,姓名,年龄,语文成绩,数学成绩
3.)计算出总分和平均分
4.)连接数据库,库中建立学生表和用户表
5.)实现用户的登录,注册页面
6.)登录成功后,可对学生信息进行增删改查
2.效果图(要求使用图形化界面 GUI)(部分)
主页面:
注册页面:
登录界面:
开始界面:
3.代码(部分):
查询,排序代码:
package student.main;
import studentManage.dao.Model;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
public class Select extends Box {
final int WIDTH=850;
final int HEIGHT=600;
private JTable table;
private Vector titles;
private Vector tableData;
private TableModel tableModel;
private Model sm = null;
private JScrollPane jsp = null;
private JTable resultTb = null;
//垂直布局
public Select(){
super(BoxLayout.Y_AXIS);
//组装视图
JPanel btnPanel = new JPanel();
Color color = new Color(203,220,217);
btnPanel.setBackground(color);
btnPanel.setMaximumSize(new Dimension(WIDTH,80));
btnPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
JLabel jLabel = new JLabel("请输入姓名:");
JTextField jTextField = new JTextField(5);
JButton jButton = new JButton("查询");
JButton jButton1 = new JButton("全部");
JLabel jLabel1 = new JLabel("按");
Choice select = new Choice();
select.add("学号");
select.add("年龄");
select.add("总分");
select.add("语文成绩");
select.add("数学成绩");
JButton jButton2 = new JButton("排序");
btnPanel.add(jLabel);
btnPanel.add(jTextField);
btnPanel.add(jButton);
btnPanel.add(jButton1);
btnPanel.add(jLabel1);
btnPanel.add(select);
btnPanel.add(jButton2);
this.add(btnPanel);
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//查询
//获取输入学生的姓名
String name = jTextField.getText().trim();
if(name.length() != 0) {
//姓名输入有效时,执行查询
//定义参数
String sql = "select * from stu where stuName like ?";
String []paras = {"%"+name+"%"};
//更新模型
jtableUpdate(sql, paras);
} else {
//姓名为空时,设置提醒
JOptionPane.showMessageDialog(new Menu().jframe, "姓名输入不能为空");
}
}
});
jButton1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//全部显示
String sql = "select * from stu";
jtableUpdate(sql, null);
}
});
jButton2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//排序
String paiXu = select.getSelectedItem();
if(paiXu.equals("学号")) {
//定义参数
String sql = "select * from stu order by stuId desc";
String []paras = {};
//更新模型
jtableUpdate(sql, paras);
} else if(paiXu.equals("总分")){
String sql = "select * from stu order by stuCount desc";
String []paras = {};
jtableUpdate(sql,paras);
} else if(paiXu.equals("年龄")){
String sql = "select * from stu order by stuAge desc";
String []paras = {};
jtableUpdate(sql,paras);
} else if(paiXu.equals("语文成绩")){
String sql = "select * from stu order by stuChinese desc";
String []paras = {};
jtableUpdate(sql,paras);
}else if(paiXu.equals("数学成绩")){
String sql = "select * from stu order by stuMath desc";
String []paras = {};
jtableUpdate(sql,paras);
}
}
});
sm = new Model();
String sql = "select * from stu";
sm.queryStu(sql, null);
resultTb = new JTable(sm);
jsp = new JScrollPane(resultTb);
this.add(jsp);
}
//更新JTable内数据
public void jtableUpdate(String sql, String[] paras)
{
//创建模型
sm = new Model();
sm.queryStu(sql, paras);
//更新显示
resultTb.setModel(sm);
}
}
注册界面代码:
package student.main;
import student.background.SignBackGround;
import student.main.Login;
import student.tishi.TiShi;
import student.tishi.Yanzhencode;
import student.utils.baseDao;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
public class Sign{//注册页面
//组装视图
public Sign() throws Exception {
Jframe jframe = new Jframe("注册");
final int WIDTH=500;//设置窗口的宽
final int HEIGHT=450;//设置窗口的高
//设置窗口相关属性
jframe.setBounds(500,100,WIDTH,HEIGHT);
jframe.setResizable(false);
//设置窗口图标
jframe.setIconImage(ImageIO.read(new File("D:\yuandaima\shishuo\src\studentManage\img\注册.png")));
//设置背景图片
SignBackGround bg = new SignBackGround();
//用户名
Box uBox = Box.createHorizontalBox();
JLabel jLabel = new JLabel(" 用户名:");
JTextField jTextField = new JTextField(15);
jTextField.addFocusListener(new TiShi(jTextField, "请输入用户名"));
uBox.add(jLabel);
uBox.add(Box.createHorizontalStrut(20));
uBox.add(jTextField);
//密码
Box pBox = Box.createHorizontalBox();
JLabel jLabel1 = new JLabel(" 密 码:");
JTextField jTextField1 = new JTextField(15);
jTextField1.addFocusListener(new TiShi(jTextField1, "请输入密码"));
pBox.add(jLabel1);
pBox.add(Box.createHorizontalStrut(20));
pBox.add(jTextField1);
//手机号
Box rpBox = Box.createHorizontalBox();
JLabel jLabel2 = new JLabel("确认密码:");
JTextField jTextField2 = new JTextField(15);
jTextField2.addFocusListener(new TiShi(jTextField2, "请确认密码"));
rpBox.add(jLabel2);
rpBox.add(Box.createHorizontalStrut(20));
rpBox.add(jTextField2);
//性别
Box sBox = Box.createHorizontalBox();
JLabel jLabel3 = new JLabel(" 性 别:");
ButtonGroup sex = new ButtonGroup();
JRadioButton male = new JRadioButton("男",true);
JRadioButton female = new JRadioButton("女");
sex.add(male);
sex.add(female);
sBox.add(jLabel3);
sBox.add(Box.createHorizontalStrut(20));
sBox.add(male);
sBox.add(Box.createHorizontalStrut(100));
sBox.add(female);
//院系
Box yBox = Box.createHorizontalBox();
JLabel jLabel4 = new JLabel(" 年 龄:");
//年份下拉框
Choice year = new Choice();
year.add("1999年");
year.add("2000年");
year.add("2001年");
year.add("2002年");
year.add("2003年");
year.add("2004年");
year.add("2005年");
//月份下拉框
Choice month = new Choice();
month.add("1月");
month.add("2月");
month.add("3月");
month.add("4月");
month.add("5月");
month.add("6月");
month.add("7月");
month.add("8月");
month.add("9月");
month.add("10月");
month.add("11月");
month.add("12月");
//日期下拉框
Choice day = new Choice();
day.add("1日");
day.add("2日");
day.add("3日");
day.add("4日");
day.add("5日");
day.add("6日");
day.add("7日");
day.add("8日");
day.add("9日");
day.add("10日");
day.add("11日");
day.add("12日");
day.add("13日");
day.add("14日");
day.add("15日");
yBox.add(jLabel4);
yBox.add(Box.createHorizontalStrut(20));
yBox.add(year);
yBox.add(Box.createHorizontalStrut(8));
yBox.add(month);
yBox.add(Box.createHorizontalStrut(8));
yBox.add(day);
//验证码
Box yzmBox = Box.createHorizontalBox();
JTextField jTextField3 = new JTextField();
jTextField3.addFocusListener(new TiShi(jTextField3, "请输入验证码"));
Yanzhencode yzm = new Yanzhencode();
yzmBox.add(jTextField3);
yzmBox.add(Box.createHorizontalStrut(10));
yzmBox.add(yzm);
//设置登录,注册按钮
Box butBox = Box.createHorizontalBox();
Button b1 = new Button("注册");
Button b2 = new Button("返回主页面");
butBox.add(b1);
butBox.add(Box.createHorizontalStrut(100));
butBox.add(b2);
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//获取用户输入的信息
String username = jTextField.getText().trim();
String password = jTextField1.getText().trim();
String repassword = jTextField2.getText().trim();
String sex = "";
for (Component c : sBox.getComponents()) {
if (c instanceof JRadioButton) {
if (((JRadioButton) c).isSelected()) {
sex = ((JRadioButton) c).getText();
}
}
}
String birthday = year.getSelectedItem() + month.getSelectedItem() + day.getSelectedItem();
//进行数据库添加
if (repassword.equals(password)) {
if (jTextField3.getText().equals(yzm.getCode())) {
baseDao baseDao = new baseDao();
baseDao.sign(username, password, sex, birthday);
try {
JOptionPane.showMessageDialog(jframe, "注册成功,即将返回主页面");
jframe.dispose();
new Login();
jframe.dispose();
} catch (Exception e1) {
e1.printStackTrace();
}
} else {
try {
JOptionPane.showMessageDialog(jframe,"验证码输入错误");
} catch (Exception ex) {
ex.printStackTrace();
}
}
} else {
try {
JOptionPane.showMessageDialog(jframe, "两次输入密码不一致");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
});
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//跳转到主页面
try {
jframe.dispose();
} catch (Exception ex) {
ex.printStackTrace();
}
try {
new Login();
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
Box vBox = Box.createVerticalBox();
vBox.add(Box.createVerticalStrut(50));
vBox.add(uBox);
vBox.add(Box.createVerticalStrut(20));
vBox.add(pBox);
vBox.add(Box.createVerticalStrut(20));
vBox.add(rpBox);
vBox.add(Box.createVerticalStrut(20));
vBox.add(sBox);
vBox.add(Box.createVerticalStrut(20));
vBox.add(yBox);
vBox.add(Box.createVerticalStrut(20));
vBox.add(yzmBox);
vBox.add(Box.createVerticalStrut(40));
vBox.add(butBox);
bg.add(vBox);
jframe.add(bg);
jframe.setVisible(true);
}
//客户端程序的入口
public static void main(String[] args) throws Exception {
new Sign();
}
}
全部代码:
百度网盘:
https://pan.baidu.com/s/1YYatbNiYaaMVjufeJ9kanQ
提取码:ss27;
小结:如有问题,私聊博主。
代码小白,谢谢关注!



