说明:
1.期末结课做的简易的学生管理系统(java+mysql+excel+文本);
2.仅实现增删改查,显示,存储等界面操作;
实验报告如下:
2.需要添加额外的jar包(连接数据库或者工作表需求)
添加jar包:
1.
4.存储功能,退出系统前有三种方式进行存储,也可以不存储。
例如点击文本,数据存在D盘的一个文本上。
5.用到的函数(分为界面部分和数据部分)
不想使用的功能删掉对应函数。
6.一开始用到的图片及文本,表格
7.源码及相关代码(函数太多,这里列出三个主要界面)
Login.java
```java
public class Login extends JFrame implements ActionListener,ItemListener {
JPanel p1, p2, p3,p4;
JTextField Mysqltext = new JTextField(10);
JLabel usename = new JLabel("账 号:");
JTextField usenametext = new JTextField(10);
JLabel password = new JLabel("密 码:");
JPasswordField txtPwd = new JPasswordField(10);
//角色标签和下拉列表
JLabel role = new JLabel("打开方式:");
JComboBox boxrole = new JComboBox();
//创建三个选择按钮
JButton a = new JButton("登录");
JButton b = new JButton("重置");
JButton c = new JButton("取消");
//定义变量来接收下拉列表的索引
int index = 0;
Data_1 x = new Data_1();
Data_1[] y = x.getA();
Data data=new Data();
public Login() {
//构造方法
super("登录");
for (int i = 0; i < x.getOne(); i++)
y[i] = new Data_1("", "", "", "");
setLayout(new FlowLayout());
this.setLayout(new GridLayout(4,1));//四分
setBounds(300, 50, 300, 500);
//面板初始化
p1=new JPanel();
p2=new JPanel();
p3=new JPanel();
p4=new JPanel();
p1.setBackground(new Color(255,240,240));
p1.setBackground(null);
p1.setOpaque(false);
p2.setBackground(new Color(255,240,240));
p2.setBackground(null);
p2.setOpaque(false);
p3.setBackground(new Color(255,240,240));
p3.setBackground(null);
p3.setOpaque(false);
p4.setBackground(new Color(255,240,240));
p4.setBackground(null);
p4.setOpaque(false);
//下拉列表中添加数据
boxrole.addItem("无");
boxrole.addItem("文本");
boxrole.addItem("数据库");
boxrole.addItem("Excel");
boxrole.setOpaque(false);
p1.add(role);
p1.add(boxrole);
Mysqltext.setOpaque(false);
p1.add(Mysqltext);
usenametext.setOpaque(false);
p2.add(usename);
p2.add(usenametext);
//3.密码
txtPwd.setOpaque(false);
p3.add(password);
p3.add(txtPwd);
//4.将3个按钮添加进面板3中
a.setContentAreaFilled(false);
b.setContentAreaFilled(false);
c.setContentAreaFilled(false);
p4.add(a);
p4.add(b);
p4.add(c);
//将四个面板添加进框架容器中
this.add(p1);
this.add(p2);
this.add(p3);
this.add(p4);
//设置背景图片
ImageIcon ic = new ImageIcon("D:\\dog4.jpg");
JLabel l = new JLabel(ic);
l.setBounds(0, 0, ic.getIconWidth(), ic.getIconHeight());
this.getLayeredPane().add(l, new Integer(Integer.MIN_VALUE));
((JPanel) this.getContentPane()).setOpaque(false);//设置透明
//设置顶层容器的大小、位置、可见性及close功能
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
//注册事件监听器
boxrole.addItemListener(this);
a.addActionListener(this);
b.addActionListener(this);
c.addActionListener(this);
}
//对下拉列表的监听
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
JComboBox j = (JComboBox) e.getSource();
index = j.getSelectedIndex();
if(index==1)
{
Mysqltext.setText("");
Mysqltext.setText("text");
}
if(index==2)
{
Mysqltext.setText("");
usenametext.setText("");
txtPwd.setText("");
Mysqltext.setText("list");
usenametext.setText("root");
txtPwd.setText("root123");
}
if(index==3)
{
Mysqltext.setText("");
Mysqltext.setText("excel");
}
}
}
//对按钮的监听
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
String un;
String pw;
boolean success = false; //用于判断是否登录成功
//连接文本
if (source==a&&index==0)
{
this.dispose();
Mysqltext.setText("");
usenametext.setText("");
txtPwd.setText("");
Login_Interface login_interface=new Login_Interface();
login_interface.init();
}
if (source==a&&index==1)
{
if (Mysqltext.getText().equals("")) {
//判断表名为空
JOptionPane.showMessageDialog(null, "文件名不能为空!");
}
else {
data.setText(Mysqltext.getText());
this.dispose();
Connect_Text connect_text=new Connect_Text();
connect_text.readFile();
Login_Interface login_interface=new Login_Interface();
login_interface.init();
}
}
if (source == a&&index==2) {
//如果事件源是“确定”按钮
if (usenametext.getText().equals("") || txtPwd.getText().equals("")) {
//判断用户名和密码是否为空
JOptionPane.showMessageDialog(null, "登录名和密码不能为空!");
}
else{
this.dispose();
data=new Data(Mysqltext.getText(),usenametext.getText(),txtPwd.getText());
Connect_Mysql connect_mysql=new Connect_Mysql();
connect_mysql.readMysql();
Login_Interface login_interface=new Login_Interface();
login_interface.init();
}
}
//连接Excel表
if (source==a&&index==3)
{
if (Mysqltext.getText().equals("")) {
//判断表名为空
JOptionPane.showMessageDialog(null, "Excel表名不能为空!");
}
else {
data.setExcel(Mysqltext.getText());
this.dispose();
Connect_Excel connect_excel=new Connect_Excel();
connect_excel.init();
Login_Interface login_interface=new Login_Interface();
login_interface.init();
}
}
if(source==b) {
//如果事件源是“重置”按钮
Mysqltext.setText("");
usenametext.setText("");
txtPwd.setText("");
}
if(source==c) {
//如果事件源是“取消”按钮
this.dispose();
}
}
}
功能界面Login_interface.java
public class Login_Interface extends JFrame {
static int x=0;
static int y=0;
static JScrollPane scrollPane = new JScrollPane();
static LocalTime localTime=LocalTime.now();
static Data_1 data_1=new Data_1();
static DefaultTableModel dtm=new DefaultTableModel(
new Object[][] {
{
localTime.format(data_1.Data_1()),"登录","0","Yes" },
},
new String[] {
"时间", "类型", "编号", "Y/N" });
public Login_Interface() {
}
//登录界面初始化
public DefaultTableModel init1()
{
return this.dtm;
}
public void init() {
//获取当前时间
//System.out.println(localTime.format(dataTimeFormatter));
JFrame frame = new JFrame("学生管理系统");
frame.setLayout(null);
//历史记录界面
JPanel contentPane;
JTable table;
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
frame.setContentPane(contentPane);
contentPane.setLayout(null);
scrollPane.setBackground(null);
scrollPane.setOpaque(false);//设置记录窗口的背景
scrollPane.getViewport().setOpaque(false);//设置表格背景色
scrollPane.setBounds(400, 40, 300, 400);//设置表格在窗口的位置
contentPane.add(scrollPane);
table = new JTable(){
//初始化table
private static final long serialVersionUID = 1L;
public Component prepareRenderer(TableCellRenderer ren, int row, int column) {
Component c = super.prepareRenderer(ren, row, column);
if (c instanceof JComponent) {
((JComponent) c).setOpaque(false);
}
return c;
}
};
table.setModel(dtm);
//table.setBounds(100, 100, 400, 400);
table.setBackground(null);
table.setOpaque(false);//设置记录窗口的背景
table.setRowHeight(20);
table.getColumnModel().getColumn(0).setPreferredWidth(20);
table.getColumnModel().getColumn(1).setPreferredWidth(20);
table.getColumnModel().getColumn(2).setPreferredWidth(20);
table.getColumnModel().getColumn(3).setPreferredWidth(20);
//设置滚动面板视口大小
table.setPreferredScrollableViewportSize(new Dimension(300, 400));
scrollPane.setPreferredSize(new Dimension(300, 400));
// 设置自动出现滚动条
scrollPane.setAutoscrolls(true);
scrollPane.setViewportView(table);
//文本框
JLabel a = new JLabel("编号:");
a.setBounds(150, 40, 100, 25);
frame.add(a);
JTextField aa = new JTextField();
aa.setBounds(200, 40, 150, 25);
frame.add(aa);
JLabel b = new JLabel("学号:");
b.setBounds(150, 90, 100, 25);
frame.add(b);
JTextField bb = new JTextField();
bb.setBounds(200, 90, 150, 25);
frame.add(bb);
JLabel c= new JLabel("姓名:");
c.setBounds(150, 140, 100, 25);
frame.add(c);
JTextField cc= new JTextField();
cc.setBounds(200, 140, 150, 25);
frame.add(cc);
JLabel d= new JLabel("性别:");
d.setBounds(150,190 , 100, 25);
frame.add(d);
JTextField dd= new JTextField();
dd.setBounds(200, 190, 150, 25);
frame.add(dd);
//添加操作按钮
JButton buttonadd = new JButton("添加");
buttonadd.setBounds(50, 40, 70, 25);
frame.add(buttonadd);
JButton buttonregister = new JButton("修改");
buttonregister.setBounds(50, 90, 70, 25);
frame.add(buttonregister);
//显示所有学生信息
JButton buttonshow = new JButton("显示");
buttonshow.setBounds(50, 140, 70, 25);
frame.add(buttonshow);
JButton buttonlogin = new JButton("查询");
buttonlogin.setBounds(50, 190, 70, 25);
frame.add(buttonlogin);
JButton buttondelete = new JButton("删除");
buttondelete.setBounds(50, 240, 70, 25);
frame.add(buttondelete);
JButton buttonbaoyang = new JButton("更多");
buttonbaoyang.setBounds(50, 290, 70, 25);
frame.add(buttonbaoyang);
//存储操作
JLabel g= new JLabel("存储:");
g.setBounds(50,450 , 100, 25);
frame.add(g);
JButton buttonText=new JButton("文本");
buttonText.setBounds(100,470,70,25);
frame.add(buttonText);
JButton buttonMysql=new JButton("数据库");
buttonMysql.setBounds(200,470,80,25);
frame.add(buttonMysql);
JButton buttonExcel=new JButton("Excel");
buttonExcel.setBounds(310,470,70,25);
frame.add(buttonExcel);
JButton buttonEuip=new JButton("退出");
buttonEuip.setBounds(410,470,70,25);
frame.add(buttonEuip);
//添加图片
//ImageIcon image=new ImageIcon("D://xiao2.jpg");
ImageIcon image=new ImageIcon("D://dog1.jpg");
JLabel label=new JLabel(image);
frame.add(label);
label.setBounds(0, 0, 650, 540);
frame.setBounds(300, 50, 720, 540);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//为添加按钮添加监听器
buttonadd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//注册页面
frame.setVisible(true);
if(aa.getText().equals("")==false)
{
if((bb.getText().equals("")&&cc.getText().equals("")&&dd.getText().equals(""))==false)
{
Action action=new Action();
action.Action1(1);
action.Action2(aa.getText(),bb.getText(),cc.getText(),dd.getText());
aa.setText("");
bb.setText("");
cc.setText("");
dd.setText("");
}
else
{
JOptionPane.showMessageDialog(null, "请输入完整的信息");
}
}
}
});
//为修改按钮添加监听器
buttonregister.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//注册页面
frame.setVisible(true);
if(aa.getText().equals("")==false)
{
if((bb.getText().equals("")&&cc.getText().equals("")&&dd.getText().equals(""))==false)
{
Action action=new Action();
action.Action1(2);
action.Action2(aa.getText(),bb.getText(),cc.getText(),dd.getText());
aa.setText("");
bb.setText("");
cc.setText("");
dd.setText("");
}
else
{
JOptionPane.showMessageDialog(null, "请输入完整的信息");
}
}
}
});
//为显示学生添加监听器
buttonshow.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
frame.setVisible(true);
Action action=new Action();
action.Action1(3);
action.Action2("");
}
});
//为查询按钮添加监听器
buttonlogin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
frame.setVisible(true);
if(aa.getText().equals("")==false)
{
Action action=new Action();
action.Action1(4);
action.Action2(aa.getText());
aa.setText("");
}
}
});
//为删除按钮添加监听器
buttondelete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//注册页面
frame.setVisible(true);
frame.setVisible(true);
if(aa.getText().equals("")==false)
{
Action action=new Action();
action.Action1(5);
action.Action2(aa.getText());
aa.setText("");
}
}
});
//存储
//文本
buttonText.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.setVisible(true);
Connect_Text connect_text=new Connect_Text();
connect_text.writeFile();
}
});
//Mysql
buttonMysql.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.setVisible(true);
Connect_Mysql connect_mysql=new Connect_Mysql();
connect_mysql.writeMysql();
}
});
//Excel
buttonExcel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.setVisible(true);
Connect_Excel connect_excel=new Connect_Excel();
try {
connect_excel.init1();
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
});
//退出
buttonEuip.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.dispose();
}
});
//设置表中的可移动
scrollPane.addMouseMotionListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
x=e.getPoint().x;
y=e.getPoint().y;
}
});
scrollPane.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
scrollPane.setBounds(e.getXOnScreen()-frame.getX()-x,e.getYOnScreen()-frame.getY()-y,300,400);
}
});
}
}
显示
show.java
package student;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
public class Show extends JFrame{
static int x1=0;
static int y1=0;
static JScrollPane scrollPane = new JScrollPane();
public Show() {
JFrame jf = new JFrame("显示");
jf.setUndecorated(true);//设置无框顶
// 创建内容面板
JPanel panel = new JPanel();
panel.setBorder(new EmptyBorder(5, 5, 5, 5));
panel.setLayout(null);
// 表格所有行数据
Data_1 x = new Data_1();
Data_1[] y = x.getA();
Object[][] rowData1=new Object[x.getCount()][x.getQuantity()+1];
for(int i=0;i<x.getCount();i++)//赋值
{
rowData1[i][0]=i;
for(int j=0;j<x.getQuantity();j++)
{
rowData1[i][j+1]=y[i].getP(j);
}
}
//表头
String[] columnNames1 = {
"", "编号", "学号", "姓名", "性别"};
//行数据
TableModel tableModel = new DefaultTableModel(rowData1, columnNames1);
JTable table = new JTable(rowData1, columnNames1){
//设为透明
private static final long serialVersionUID = 1L;
public Component prepareRenderer(TableCellRenderer ren, int row, int column) {
Component c = super.prepareRenderer(ren, row, column);
if (c instanceof JComponent) {
((JComponent) c).setOpaque(false);
}
return c;
}
};
// 初始化表内的格式
table.setForeground(Color.BLACK);//字体的颜色
table.setFont(new Font(null, Font.PLAIN, 14));//字体的样式
table.setGridColor(Color.BLACK);// 网格的颜色
// 初始化表头的格式
table.getTableHeader().setFont(new Font(null, Font.BOLD, 14)); // 设置表头名称字体样式
table.getTableHeader().setForeground(Color.BLACK);// 设置表头名称字体颜色
table.getTableHeader().setResizingAllowed(false);
table.getTableHeader().setReorderingAllowed(false);
// 设置行列
table.setRowHeight(30);
table.getColumnModel().getColumn(0).setPreferredWidth(40);
//设置滚动面板视口大小
table.setPreferredScrollableViewportSize(new Dimension(400, 300));
//设置点击顶部可排序
RowSorter<TableModel> rowSorter = new TableRowSorter<TableModel>(tableModel);
table.setRowSorter(rowSorter);
table.setOpaque(false);
//初始化scrollPane
scrollPane.setBackground(null);
scrollPane.setOpaque(false);//设置记录窗口的背景
scrollPane.getViewport().setOpaque(false);//设置表格背景色
scrollPane.setBounds(150, 50, 400, 300);//设置表格在窗口的位置
panel.add(scrollPane);
scrollPane.setViewportView(table);
// 添加 滚动面板 到 内容面板
panel.add(scrollPane);
// 设置 内容面板 到 窗口
jf.setContentPane(panel);
jf.pack();
jf.setLocationRelativeTo(null);
//按钮
JButton buttonEuip=new JButton("退出");
buttonEuip.setBounds(325,400,70,25);
jf.add(buttonEuip);
//图片
ImageIcon image=new ImageIcon("D://dog5.jpg");
JLabel label=new JLabel(image);
label.setBounds(0, 0, 700, 500);
jf.add(label);
jf.setBounds(300, 50, 700, 500);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
//设置表中的可移动
scrollPane.addMouseMotionListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
x1=e.getPoint().x;
y1=e.getPoint().y;
}
});
scrollPane.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
scrollPane.setBounds(e.getXOnScreen()-jf.getX()-x1,e.getYOnScreen()-jf.getY()-y1,400,300);
}
});
buttonEuip.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jf.dispose();
}
});
}
}