package xuesheng;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
public class Menu {
private JFrame frame = new JFrame("申请表填写"); // 框架
private JButton but1 = new JButton("提交申请"); // 按钮
private JButton but4 = new JButton("查看数据");
private JButton but0 = new JButton("退出系统");
private JButton clear = new JButton("清空");
private JTextField number = new JTextField();// 文本框
private JTextField name = new JTextField();
private JTextField classe = new JTextField();
private JTextField why = new JTextField();
private JTextField when = new JTextField();
private JTextArea show = new JTextArea(16, 30);
private JLabel lab1 = new JLabel("姓名:");// 标签
private JLabel lab2 = new JLabel("班级:");
private JLabel num = new JLabel("学号:");
private JLabel lab4 = new JLabel("请假缘由:");
private JLabel lab5 = new JLabel("请假时间:");
Hashtable<String, Person> has = new Hashtable<String, Person>();// 哈希表,加密,文件乱码
File file = new File("新建文件.txt");// 注意:新建一个文件
public Menu() {
if (!file.exists()) {
try {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));// 把一个实例的对象以文件的形式保存到磁盘上。
out.writeObject(has);
out.close();
} catch (IOException e) {
}
}
but1.addActionListener(new ActionListener() { // 增加,内部类,进行某项操作时触发功能
public void actionPerformed(ActionEvent e) {//用于接收操作事件的侦听器接口
if (e.getSource() == but1) {
String number1 = number.getText();
if (number1.length() == 11) {
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));//读回对象
has = (Hashtable) in.readObject();
in.close();
} catch (Exception e1) {
}
} else {
JOptionPane.showMessageDialog(null, "请输入11位数字的学号");//提示框显示
}
//
if (number1.length() == 11) {
String name1 = name.getText();
String classe1 = classe.getText();
String why1 = why.getText();
String when1 = when.getText();
Person per = null;
per = new Person(number1, name1, classe1, why1,when1);
has.put(number1, per);// ???
try {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
out.writeObject(has);
out.close();
JOptionPane.showMessageDialog(null, "提交成功!");
} catch (Exception e1) {}
}
}
}
});
clear.addActionListener(new ActionListener() { // 清空
public void actionPerformed(ActionEvent e) {
if (e.getSource() == clear) {//获得事件所作用的对象
number.setText(null);
classe.setText(null);
name.setText(null);
why.setText(null);
when.setText(null);
}
}
});
but4.addActionListener(new ActionListener() { // 查看
public void actionPerformed(ActionEvent e) {
if (e.getSource() == but4) {
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
has = (Hashtable) in.readObject();
in.close();
} catch (Exception ee) {
}
if (has.isEmpty()) {
show.append("目前还没有学生的信息记录!\n"); // append(s:String)向文本域的文本追加字符串,简单的说就像system.out.println()
}
else {
for (Enumeration enu = has.elements(); enu.hasMoreElements();) //存入内存的内容如果不经过遍历是显示不出来的
{
Person per = (Person) enu.nextElement();
String str = " <学号>:" + per.getNum() + "\n" + " <姓名>:" + per.getName() + "\n" + " <班级>:"+ per.getClasse() + "\n" + " <原因>:" + per.getWhy() + "\n"+" <时间级>:"+ per.getWhen() + "\n" + "\n" + "\n";
show.append(str);
}
String str2 = "---------------------------------结束------------------------------------------------"+ "\n";
show.append(str2);
}
String number1 = number.getText();
if (number1.length() == 11) {
if (has.containsKey(number1)) {
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
has = (Hashtable) in.readObject();
in.close();
} catch (Exception e1) {
}
Person per = (Person) has.get(number1);
name.setText(per.getName());
classe.setText(per.getClasse());
why.setText(per.getWhy());
when.setText(per.getWhen());
}
else {
JOptionPane.showMessageDialog(null, "学号不存在");
}
} else {
JOptionPane.showMessageDialog(null, "请输入11位数字的学号");
}
}
}
});
but0.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == but0) {
frame.setVisible(false);
new ActionHandle();
}
}
});
frame.setLayout(null);
but1.setBounds(30, 35, 90, 25);
but4.setBounds(30, 115, 90, 25);
but0.setBounds(240, 250, 100, 25); // setBounds(x,y,width,height);
num.setBounds(150, 30, 70, 25);
lab1.setBounds(150, 65, 70, 25);
lab2.setBounds(150, 100, 70, 25);
lab4.setBounds(150, 135, 70, 25);
lab5.setBounds(150, 170, 70, 25);
number.setBounds(230, 30, 90, 25);
name.setBounds(230, 65, 90, 25);
classe.setBounds(230, 100, 90, 25);
why.setBounds(230, 135, 90, 25);
when.setBounds(230, 170, 90, 25);
clear.setBounds(250, 200, 60, 25);
frame.add(lab1);
frame.add(lab2);
frame.add(lab4);
frame.add(lab5);
frame.add(num);
frame.add(number);
frame.add(name);
frame.add(classe);
frame.add(why);
frame.add(when);
frame.add(clear);
frame.add(but1);
frame.add(but4);
frame.add(but0);
JScrollPane scroll = new JScrollPane(show);
frame.setSize(800, 700); // 页面大小
frame.setLocation(300, 200);
frame.setVisible(true);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Java Swing简单学生请假信息管理系统(JavaSE基础程序设计课程设计期末作业) 开发工具:eclipse 或者 idea 技术栈:javase 、 java swing 、awt 、layout、IO 带有图形化界面的学生信息管理系统,使用awt、layout等开发。2022 Java SE 基础程序设计课程设计 实现数据的新增以及查询学生请假的信息。 采用IO流技术,将学生请假信息保存的文件中。 登录账号: root / root
资源推荐
资源详情
资源评论
收起资源包目录
kpids.zip (22个子文件)
kpids
.classpath 395B
.settings
org.eclipse.jdt.core.prefs 784B
src
xuesheng
Menu.java 7KB
Enter.java 3KB
.keep 0B
Person.java 1KB
.keep 0B
LICENSE 18KB
bin
xuesheng
ActionHandle$1.class 2KB
Person.class 1KB
LoginCheck.class 600B
Menu$1.class 2KB
ActionHandle$2.class 1KB
Menu$3.class 3KB
Menu.class 4KB
ActionHandle.class 2KB
Enter.class 418B
Menu$4.class 933B
Menu$2.class 1KB
.keep 0B
.keep 0B
.project 391B
共 22 条
- 1
资源评论
飞翔的佩奇
- 粉丝: 6090
- 资源: 1603
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功