其六,学生信息管理系统
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class AddStudentUI {
//生产“添加学生界面”
public void init(){
//学号
JLabel snoLabel = new JLabel("学号:");
snoLabel.setPreferredSize(new Dimension(60,25));
final JTextField snoText = new JTextField();
snoText.setPreferredSize(new Dimension(280,25));
//姓名
JLabel snameLabel = new JLabel("姓名:");
snameLabel.setPreferredSize(new Dimension(60,25));
final JTextField snameText = new JTextField();
snameText.setPreferredSize(new Dimension(280,25));
//性别
JLabel sexLabel = new JLabel("性别:");
sexLabel.setPreferredSize(new Dimension(60,25));
final JTextField sexText = new JTextField();
sexText.setPreferredSize(new Dimension(280,25));
//年龄
JLabel ageLabel = new JLabel("学号:");
ageLabel.setPreferredSize(new Dimension(60,25));
final JTextField ageText = new JTextField();
ageText.setPreferredSize(new Dimension(280,25));
//专业
JLabel majorLabel = new JLabel("专业:");
majorLabel.setPreferredSize(new Dimension(60,25));
final JTextField majorText = new JTextField();
majorText.setPreferredSize(new Dimension(280,25));
//添加按钮
JButton saveBtn = new JButton("添加");
//创建一个带标题的窗口
final JFrame frame = new JFrame("添加学生");
//获得此窗口的内容面板(中间容器)
Container cp = frame.getContentPane();
//设置布局为注式布局,组件默认式居中水平对齐、水平和垂直距离是20和10
cp.setLayout(new FlowLayout(FlowLayout.CENTER,20,10));
//按顺序将各个组件加入容器
cp.add(snoLabel);
cp.add(snoText);
cp.add(snameLabel);
cp.add(snameText);
cp.add(sexLabel);
cp.add(sexText);
cp.add(ageLabel);
cp.add(ageText);
cp.add(majorLabel);
cp.add(majorText);
cp.add(saveBtn);
frame.setSize(420,280);
frame.setLocationRelativeTo(null);//在屏幕居中
frame.setVisible(true);//设置窗口可见
frame.setResizable(false);//设置不允许调整大小
//设置“添加“按钮的点击监听器
saveBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//获取输入的相关信息,并进行验证
String sno = snoText.getText().trim();
if(sno==null || sno.equals("")){
JOptionPane.showMessageDialog(null,"学号不能为空!");
snoText.requestFocus();
return;
}
String sname = snameText.getText().trim();
if(sname==null || sname.equals("")){
JOptionPane.showMessageDialog(null,"姓名不能为空!");
snameText.requestFocus();
return;
}
String sex = sexText.getText().trim();
if(sex==null || sex.equals("")){
JOptionPane.showMessageDialog(null,"性别不能为空!");
sexText.requestFocus();
return;
}
String age = ageText.getText().trim();
if(age==null || age.equals("")){
JOptionPane.showMessageDialog(null,"年龄不能为空!");
ageText.requestFocus();
return;
}
String major = majorText.getText().trim();
if(major==null || major.equals("")){
JOptionPane.showMessageDialog(null,"专业不能为空!");
majorText.requestFocus();
return;
}//模拟添加成功
JOptionPane.showMessageDialog(null,"添加学生成功!");
//关闭当前“添加学生”窗口
frame.dispose();
//打开“学生查询”窗口
new ListStudentUI().init();
}
});
}
}
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.HashMap;
import java.util.Map;
public class ListStudentUI {
//选中的学生学号
String sno;
//生产“学生列表界面”
public void init(){
try{
//创建一个面板,添加“修改”和“删除”按钮
JPanel panel = new JPanel();
JButton editBtn = new JButton("修改");
JButton delBtn = new JButton("删除");
panel.add(editBtn);
panel.add(delBtn);
//创建一个表格对象,用来显示所以的学生数据
final JTable table = new JTable();
//定义表格的标题数据
String columnNames[]={"学号","姓名","性别","年龄","专业"};
//模拟获取到所有的学生数据
Object data[][]={
new Object[]{"20231012101","王小勇","男","19","计算机科学与技术"},
new Object[]{"20231012102","刘丽","女","18","网络工程"},
new Object[]{"20231012116","沈晓明","男","20","计算机科学与技术"},
new Object[]{"20231012324","李志刚","男","19","物联网工程"},
new Object[]{"20231012101","赵晓宇","女","19","计算机科学与技术"},
};
//把准备的数据加入到表格对象table中
table.setModel(new DefaultTableModel(data,columnNames));
//创建一个带滚动条的面板,把表格融放入面板中
JScrollPane scrollPane = new JScrollPane(table);
//创建一个带标题的窗口
final JFrame frame = new JFrame("学生列表");
//窗口使用BorderLayout方式布局,将此面板添加入窗口北侧区域
frame.add(panel, BorderLayout.NORTH);
//将带滚动条的面板添加入窗口的中间区域
frame.add(scrollPane,BorderLayout.CENTER);
frame.setSize(600,360);//宽600,高360
frame.setLocationRelativeTo(null);//在屏幕居中
frame.setVisible(true);//设置窗口可见
frame.setResizable(false);//设置不允许调整大小
//给JTable设置鼠标监听器
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent event) {
//获取选中的行的索引第一行0第二行1
int row = table.getSelectedRow();
//获取表格管理数据的模式
DefaultTableModel model = (DefaultTableModel) table.getModel();
//获取选中行的第一列数据,即学号
sno=(String) model.getValueAt(row,0);
// System.out.println("选中的 学号:"+sno);
}
});
//设置“修改”按钮的点击监听器
editBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(sno==null || sno.equals("")) {
JOptionPane.showMessageDialog(null,"请选中要修改的记录");
return;
}else{
//模拟查询出一个学生数据
Map<String,String> r=new HashMap<String ,String>();
r.put("sno","20231012101");
r.put("sname","王小勇");
r.put("sex","男");
r.put("age","19");
r.put("major","计算机科学与技术");
//关闭当前“学生列表”窗口
frame.dispose();
//打开“学生修改”窗口,把该生的原有信息传进去
new UpdateStudentUI().init(r);
}
}
});
//设置“删除”按钮的点击监听器
delBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(sno==null || sno.equals("")) {
JOptionPane.showMessageDialog(null, "请选中要删除的记录");
}else {
//弹出确认对话框
int flag=JOptionPane.showConfirmDialog(null,"你确定要删除选中的学生?",
"确认对话框",JOptionPane.YES_NO_CANCEL_OPTION);
if(flag==JOptionPane.YES_NO_CANCEL_OPTION){
JOptionPane.showMessageDialog(null,"删除学生成功!");
frame.dispose();
new ListStudentUI().init();
}
}
}
});
}catch (Exception e){
e.printStackTrace();
}
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class LoginUI {
//程序执行入口
public static void main(String[] args) {
//调用生成登录界面的方法
new LoginUI().init();
}
//生成登录界面
void init() {
JLabel userLabel = new JLabel( "账号:");//账号标签
//账号标签:距离左30,上30,宽80,高50
userLabel.setBounds(30,30,80,25);
//账号输入框:距离左115,上30,宽200,高25
final JTextField username = new JTextField(20);
username.setBounds(115,30,200,25);//账号输入框位置及宽高
JLabel pwdLabel = new JLabel( "密码:");//密码标签
pwdLabel.setBounds(30,60,80,25);//设置密码标签位置及宽高
final JPasswordField pwd = new JPasswordField(20);//账号输入框位置及宽高
pwd.setBounds(115,60,200,25);//账号输入框位置及宽高
JButton loginBtn = new JButton("登录");
loginBtn.setBounds(115,110,80,25);
//创建一个带标题的窗口
final JFrame frame1 = new JFrame("学生信息管理系统");
//获得此窗口的内容面板(中间容器)
Container cp = frame1.getContentPane();
cp.setLayout(null);//设置布局为null
//将各个组件加入容器
cp.add(userLabel);
cp.add(username);
cp.add(pwdLabel);
cp.add(pwd);
cp.add(loginBtn);
frame1.setSize(400,260);//宽400,高260
frame1.setLocationRelativeTo(null);//在屏幕中居中
frame1.setVisible(true);//设置窗口可见
frame1.setResizable(false);//设置不允许调整大小
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置X号后结束整个程序
//设置登录按钮的监听器
loginBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
//获取用户名
String inputName = username.getText().trim();
//获取密码
String inputPwd = new String(pwd.getPassword());
if (inputName.equals("张三")&& inputPwd.equals("111111")){
//登陆成功
new MainUI().init();
//销毁登录界面
frame1.dispose();
}else{
JOptionPane.showMessageDialog(null,"用户或密码错误");
}
}
});
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//系统主界面
public class MainUI {
//生成系统主界面
public void init(){
//创建一个菜单栏
JMenuBar bar = new JMenuBar();
//创建菜单-学生管理
JMenu menu1 = new JMenu("学生管理");
//创建菜单项
JMenuItem menu1_item1 = new JMenuItem("查询学生");
JMenuItem menu1_item2 = new JMenuItem("添加学生");
//把菜单项加入菜单
menu1.add(menu1_item1);
menu1.add(menu1_item2);
//把菜单项加入“菜单栏”中
bar.add(menu1);
JMenu menu2 = new JMenu("教师管理");
//创建菜单项
JMenuItem menu2_item1 = new JMenuItem("查询教师");
JMenuItem menu2_item2 = new JMenuItem("添加教师");
//把菜单项加入菜单
menu2.add(menu2_item1);
menu2.add(menu2_item2);
//把菜单项加入“菜单栏”中
bar.add(menu2);
JMenu menu3 = new JMenu("课程管理");
//创建菜单项
JMenuItem menu3_item1 = new JMenuItem("查询课程");
JMenuItem menu3_item2 = new JMenuItem("添加课程");
//把菜单项加入菜单
menu3.add(menu3_item1);
menu3.add(menu3_item2);
//把菜单项加入“菜单栏”中
bar.add(menu3);
JMenu menu4 = new JMenu("成绩管理");//创建菜单项
JMenuItem menu4_item1 = new JMenuItem("查询成绩");
JMenuItem menu4_item2 = new JMenuItem("添加成绩");//把菜单项加入菜单
menu4.add(menu4_item1);
menu4.add(menu4_item2);//把菜单项加入“菜单栏”中
bar.add(menu4);
JMenu menu5 = new JMenu("系统管理");//创建菜单项
JMenuItem menu5_item1 = new JMenuItem("修改密码");
JMenuItem menu5_item2 = new JMenuItem("退出系统");//把菜单项加入菜单
menu5.add(menu5_item1);
menu5.add(menu5_item2);//把菜单项加入“菜单栏”中
bar.add(menu5);//创建一个带标题的窗口
final JFrame frame = new JFrame("学生信息管理系统");//获得此窗口的内容面板(中间容器)
Container cp = frame.getContentPane();
cp.setLayout(null);//设置布局为null//把菜单栏加入窗口中
frame.setJMenuBar(bar);
frame.setSize(800,560);
frame.setLocationRelativeTo(null);//在屏幕居中
frame.setVisible(true);//设置窗口可见
frame.setResizable(false);//设置不允许调整大小
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置X号后结束整个程序
//设置“查询学生”菜单的点击监听器
menu1_item1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
//打开“学生列表“界面
new ListStudentUI().init();
}
});
//设置“添加学生”菜单的点击监听器
menu1_item2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//打开“学生列表”界面
new AddStudentUI().init();
}
});
//设置“退出系统”菜单的点击监听器
menu5_item2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//关闭当前“系统主界面”窗口
frame.dispose();
//打开“系统登录”界面
new LoginUI().init();
}
});
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Map;
import java.awt.Container;
public class UpdateStudentUI {
public void init(Map<String,String> r){
//获取要修改信息的学生的学号
final String mysno = r.get("sno");//学号
JLabel snoLabel = new JLabel("学号:");
snoLabel.setPreferredSize(new Dimension(60,25));
final JTextField snoText = new JTextField();
snoText.setPreferredSize(new Dimension(280,25));
//把学生原有的学号填回到学号文本框
snoText.setText(mysno);//姓名
JLabel snameLabel = new JLabel("姓名:");
snameLabel.setPreferredSize(new Dimension(60,25));
final JTextField snameText = new JTextField();
snameText.setPreferredSize(new Dimension(280,25));
//把学生原有的姓名填回到姓名文本框
snameText.setText(r.get("name"));//性别
JLabel sexLabel = new JLabel("性别:");
sexLabel.setPreferredSize(new Dimension(60,25));
final JTextField sexText = new JTextField();
sexText.setPreferredSize(new Dimension(280,25));
//把学生原有的性别填回到性别文本框
sexText.setText(r.get("sex"));//年龄
JLabel ageLabel = new JLabel("年龄:");
ageLabel.setPreferredSize(new Dimension(60,25));
final JTextField ageText = new JTextField();
ageText.setPreferredSize(new Dimension(280,25));
//把学生原有的年龄填回到年龄文本框
ageText.setText(r.get("age"));//专业
JLabel majorLabel = new JLabel("专业:");
majorLabel.setPreferredSize(new Dimension(60,25));
final JTextField majorText = new JTextField();
majorText.setPreferredSize(new Dimension(280,25));
//把学生原有的专业填回到专业文本框
majorText.setText(r.get("major"));//添加按钮
JButton saveBtn = new JButton("修改");//创建一个带标题的窗口
final JFrame frame = new JFrame("修改学生");
//获得此窗口的内容面板(中间容器)
Container cp = frame.getContentPane();
//设置布局为注式布局,组件默认是居中对齐,水平和垂直距离是20盒10
cp.setLayout(new FlowLayout(FlowLayout.CENTER,20,10));
//按顺序将各个组件加入容器
cp.add(snoLabel);
cp.add(snoText);
cp.add(snameLabel);
cp.add(snameText);
cp.add(sexLabel);
cp.add(sexText);
cp.add(ageLabel);
cp.add(ageText);
cp.add(majorLabel);
cp.add(majorText);
cp.add(saveBtn);
frame.setSize(420,280);
frame.setLocationRelativeTo(null);//在屏幕居中
frame.setVisible(true);//设置窗口可见
frame.setResizable(false);//设置不允许调整大小
//设置“添加“按钮的点击监听器
saveBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
//注意:这里获取学生的信息是新的信息,可能和原来一样,也可能不一样
//获取输入的相关信息,并进行验证
String sno = snoText.getText().trim();
if (sno == null || sno.equals("")) {
JOptionPane.showMessageDialog(null, "学号不能为空!");
snoText.requestFocus();
return; }
String sname = snameText.getText().trim();
if (sname == null || sname.equals("")) {
JOptionPane.showMessageDialog(null, "姓名不能为空!");
snameText.requestFocus();
return; }
String sex = sexText.getText().trim();
if (sex == null || sex.equals("")) {
JOptionPane.showMessageDialog(null, "性别不能为空!");
sexText.requestFocus();
return; }
String age = ageText.getText().trim();
if (age == null || age.equals("")) {
JOptionPane.showMessageDialog(null, "年龄不能为空!");
ageText.requestFocus();
return; }
String major = majorText.getText().trim();
if (major == null || major.equals("")) {
JOptionPane.showMessageDialog(null, "专业不能为空!");
majorText.requestFocus();
return; }//模拟添加成功
JOptionPane.showMessageDialog(null, "修改学生成功!");
//关闭当前“添加学生”窗口
frame.dispose();//打开“学生查询”窗口
new ListStudentUI().init();
}
});
}
}