Java期末作业(OA办公管理设计与实现)
2023-12-28 15:29:45
期末作业要求用Java语言设计一个简单的信息系统,对于我这种菜来说,这是一个噩梦。。。。。使劲憋都憋不出啥东西来。。。。好不容易做出来一个能够应付过去的,心里给我激动的,当时还自嗨说自己真牛逼,舍友也给我一顿彩虹屁。。。。大眼瞪小眼。。。。
进入正题:
实验目的:
- 掌握Java编程语言的基础知识,尤其是Swing框架的运用。
- 学习并理解图形用户界面(GUI)的设计原理和实现方法。
- 实践数据模型与表格(JTable)的关联使用。
- 综合应用Java技术进行OA办公管理信息系统的设计和开发。
实验环境:
- Java编程语言,推荐使用JDK 8及以上版本。
- 集成开发环境(IDE):Eclipse。
界面设计与实现:
- Swing框架应用: 利用Swing组件设计GUI界面,使用JFrame作为主窗口,JTabbedPane实现不同功能模块的切换。
- JTable展示员工信息: 使用JTable组件展示员工信息,通过DefaultTableModel作为数据模型,实现表头排序、数据动态更新等功能。
- 功能模块面板设计: 针对每个功能模块设计相应的面板,包括员工管理、日程管理、任务管理和公告管理。如图1.1
? ? ? ? ? ? ? ? ? ? ? ? ??
3. 数据模型与表格关联:
- DefaultTableModel使用: 使用DefaultTableModel作为JTable的数据模型,通过Vector或二维数组存储数据,实现数据的动态管理和更新。
- TableModelListener监听器: 利用TableModelListener监听器实现对数据的实时响应,确保界面与数据的同步性。
4. 功能实现:
- 员工管理功能:
- 添加员工:通过JOptionPane.showInputDialog实现输入对话框,添加新员工信息。
- 编辑员工:同样利用输入对话框,编辑选中员工的信息。
- 删除员工:从员工列表中删除选中员工。如图1.2
? ? ? ? ? ? ? ? ? ? ? ??
- 日程管理功能:
- 查看日程:使用JOptionPane.showMessageDialog显示日程信息。
- 添加日程:通过输入对话框添加新的日程信息。图1.3
? ? ? ??
- 任务管理功能:
- 查看任务:使用JOptionPane.showMessageDialog显示任务信息。
- 添加任务:通过输入对话框添加新的任务信息。如图1.4
? ? ? ? ? ? ? ? ? ? ? ?
- 公告管理功能:
- 查看公告:使用JOptionPane.showMessageDialog显示公告信息。
- 添加公告:通过输入对话框添加新的公告信息。如图1.5
在上述所有例子中,主要使用了Java语言和Swing库来实现前端(用户界面)部分,而后端则是通过Java语言实现的。具体技术如下:
前端(用户界面):
- 使用Java的Swing库:Swing是Java提供的图形用户界面(GUI)工具包,用于创建桌面应用程序的用户界面。
后端(业务逻辑):
- 使用Java语言:Java是一种跨平台的高级编程语言,适用于构建各种类型的应用程序。
数据库:
- 在示例中没有使用数据库,而是使用了内存中的数据结构来模拟存储。
属实不易,记录一下。。。。。
代码如下:
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
class Employee {
int id;
String name;
String gender;
int age;
int height;
String position;
String department;
public Employee(int id, String name, String gender, int age, int height, String position, String department) {
this.id = id;
this.name = name;
this.gender = gender;
this.age = age;
this.height = height;
this.position = position;
this.department = department;
}
}
class Schedule {
int id;
String description;
public Schedule(int id, String description) {
this.id = id;
this.description = description;
}
}
class Task {
int id;
String description;
public Task(int id, String description) {
this.id = id;
this.description = description;
}
}
class Announcement {
int id;
String content;
public Announcement(int id, String content) {
this.id = id;
this.content = content;
}
}
public class OAGUI extends JFrame {
private final List<Employee> employees;
private final List<Schedule> schedules;
private final List<Task> tasks;
private final List<Announcement> announcements;
private DefaultTableModel employeeTableModel;
public OAGUI() {
employees = new ArrayList<>();
schedules = new ArrayList<>();
tasks = new ArrayList<>();
announcements = new ArrayList<>();
// 模拟一些员工数据
employees.add(new Employee(1, "张三", "男", 25, 175, "工程师", "研发部"));
employees.add(new Employee(2, "李四", "女", 30, 160, "销售经理", "销售部"));
employees.add(new Employee(3, "王五", "男", 28, 180, "人力资源", "人力资源部"));
// 模拟一些日程、任务和公告数据
schedules.add(new Schedule(1, "开会"));
schedules.add(new Schedule(2, "培训"));
tasks.add(new Task(1, "完成项目A"));
tasks.add(new Task(2, "准备销售报告"));
announcements.add(new Announcement(1, "公司年会通知"));
announcements.add(new Announcement(2, "新项目启动"));
initComponents();
}
private void initComponents() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("OA办公管理信息系统");
// 创建表格模型
employeeTableModel = new DefaultTableModel();
employeeTableModel.addColumn("ID");
employeeTableModel.addColumn("姓名");
employeeTableModel.addColumn("性别");
employeeTableModel.addColumn("年龄");
employeeTableModel.addColumn("身高");
employeeTableModel.addColumn("职位");
employeeTableModel.addColumn("部门");
// 创建表格
JTable employeeTable = new JTable(employeeTableModel);
JScrollPane employeeScrollPane = new JScrollPane(employeeTable);
// 创建按钮和文本框
JButton addEmployeeButton = new JButton("添加员工");
JButton editEmployeeButton = new JButton("编辑员工");
JButton deleteEmployeeButton = new JButton("删除员工");
JTextArea informationTextArea = new JTextArea();
informationTextArea.setEditable(false);
JScrollPane informationScrollPane = new JScrollPane(informationTextArea);
// 设置布局
setLayout(new BorderLayout());
// 创建员工管理面板
JPanel employeePanel = new JPanel();
employeePanel.setLayout(new BorderLayout());
employeePanel.add(employeeScrollPane, BorderLayout.CENTER);
JPanel employeeButtonPanel = new JPanel();
employeeButtonPanel.setLayout(new FlowLayout());
employeeButtonPanel.add(addEmployeeButton);
employeeButtonPanel.add(editEmployeeButton);
employeeButtonPanel.add(deleteEmployeeButton);
employeePanel.add(employeeButtonPanel, BorderLayout.SOUTH);
// 创建日程管理面板
JPanel schedulePanel = new JPanel();
schedulePanel.setLayout(new BorderLayout());
JButton viewScheduleButton = new JButton("查看日程");
JButton addScheduleButton = new JButton("添加日程");
schedulePanel.add(viewScheduleButton, BorderLayout.NORTH);
schedulePanel.add(addScheduleButton, BorderLayout.SOUTH);
// 创建任务管理面板
JPanel taskPanel = new JPanel();
taskPanel.setLayout(new BorderLayout());
JButton viewTaskButton = new JButton("查看任务");
JButton addTaskButton = new JButton("添加任务");
taskPanel.add(viewTaskButton, BorderLayout.NORTH);
taskPanel.add(addTaskButton, BorderLayout.SOUTH);
// 创建公告管理面板
JPanel announcementPanel = new JPanel();
announcementPanel.setLayout(new BorderLayout());
JButton viewAnnouncementButton = new JButton("查看公告");
JButton addAnnouncementButton = new JButton("发布公告");
announcementPanel.add(viewAnnouncementButton, BorderLayout.NORTH);
announcementPanel.add(addAnnouncementButton, BorderLayout.SOUTH);
// 添加到卡片面板
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.addTab("员工管理", employeePanel);
tabbedPane.addTab("日程管理", schedulePanel);
tabbedPane.addTab("任务管理", taskPanel);
tabbedPane.addTab("公告管理", announcementPanel);
getContentPane().add(tabbedPane, BorderLayout.WEST);
getContentPane().add(informationScrollPane, BorderLayout.CENTER);
// 添加事件监听器
addEmployeeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
addEmployee();
}
});
editEmployeeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
editEmployee(employeeTable.getSelectedRow());
}
});
deleteEmployeeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
deleteEmployee(employeeTable.getSelectedRow());
}
});
viewScheduleButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
viewSchedules();
}
});
addScheduleButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
addSchedule();
}
});
viewTaskButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
viewTasks();
}
});
addTaskButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
addTask();
}
});
viewAnnouncementButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
viewAnnouncements();
}
});
addAnnouncementButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
addAnnouncement();
}
});
// 初始化员工列表
updateEmployeeTable();
// 设置窗口大小
setSize(800, 600);
// 让窗口居中显示
setLocationRelativeTo(null);
}
private void addEmployee() {
String name = JOptionPane.showInputDialog(this, "输入员工姓名:");
String gender = JOptionPane.showInputDialog(this, "输入员工性别:");
int age = Integer.parseInt(JOptionPane.showInputDialog(this, "输入员工年龄:"));
int height = Integer.parseInt(JOptionPane.showInputDialog(this, "输入员工身高:"));
String position = JOptionPane.showInputDialog(this, "输入员工职位:");
String department = JOptionPane.showInputDialog(this, "输入员工部门:");
employees.add(new Employee(employees.size() + 1, name, gender, age, height, position, department));
updateEmployeeTable();
}
private void editEmployee(int selectedRow) {
if (selectedRow >= 0 && selectedRow < employees.size()) {
Employee selectedEmployee = employees.get(selectedRow);
String name = JOptionPane.showInputDialog(this, "输入员工姓名:", selectedEmployee.name);
String gender = JOptionPane.showInputDialog(this, "输入员工性别:", selectedEmployee.gender);
int age = Integer.parseInt(JOptionPane.showInputDialog(this, "输入员工年龄:", selectedEmployee.age));
int height = Integer.parseInt(JOptionPane.showInputDialog(this, "输入员工身高:", selectedEmployee.height));
String position = JOptionPane.showInputDialog(this, "输入员工职位:", selectedEmployee.position);
String department = JOptionPane.showInputDialog(this, "输入员工部门:", selectedEmployee.department);
selectedEmployee.name = name;
selectedEmployee.gender = gender;
selectedEmployee.age = age;
selectedEmployee.height = height;
selectedEmployee.position = position;
selectedEmployee.department = department;
updateEmployeeTable();
} else {
JOptionPane.showMessageDialog(this, "请选择要编辑的员工");
}
}
private void deleteEmployee(int selectedRow) {
if (selectedRow >= 0 && selectedRow < employees.size()) {
employees.remove(selectedRow);
updateEmployeeTable();
} else {
JOptionPane.showMessageDialog(this, "请选择要删除的员工");
}
}
private void viewSchedules() {
StringBuilder scheduleText = new StringBuilder("日程:\n");
for (Schedule schedule : schedules) {
scheduleText.append(schedule.description).append("\n");
}
showMessageDialog("查看日程", scheduleText.toString());
}
private void addSchedule() {
String description = JOptionPane.showInputDialog(this, "输入日程描述:");
schedules.add(new Schedule(schedules.size() + 1, description));
}
private void viewTasks() {
StringBuilder taskText = new StringBuilder("任务:\n");
for (Task task : tasks) {
taskText.append(task.description).append("\n");
}
showMessageDialog("查看任务", taskText.toString());
}
private void addTask() {
String description = JOptionPane.showInputDialog(this, "输入任务描述:");
tasks.add(new Task(tasks.size() + 1, description));
}
private void viewAnnouncements() {
StringBuilder announcementText = new StringBuilder("公告:\n");
for (Announcement announcement : announcements) {
announcementText.append(announcement.content).append("\n");
}
showMessageDialog("查看公告", announcementText.toString());
}
private void addAnnouncement() {
String content = JOptionPane.showInputDialog(this, "输入公告内容:");
announcements.add(new Announcement(announcements.size() + 1, content));
}
private void showMessageDialog(String title, String message) {
JTextArea textArea = new JTextArea(message, 15, 40);
textArea.setEditable(false);
JScrollPane scrollPane = new JScrollPane(textArea);
JOptionPane.showMessageDialog(this, scrollPane, title, JOptionPane.INFORMATION_MESSAGE);
}
private void updateEmployeeTable() {
// 清空表格
employeeTableModel.setRowCount(0);
// 填充表格
for (Employee employee : employees) {
Object[] rowData = {
employee.id,
employee.name,
employee.gender,
employee.age,
employee.height,
employee.position,
employee.department
};
employeeTableModel.addRow(rowData);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
new OAGUI().setVisible(true);
});
}
}
文章来源:https://blog.csdn.net/m0_66319233/article/details/135248062
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!