基于Swing的在线投票系统程序流程设计
该思维导图描述了一个简单的投票程序流程。程序首先启动主方法,异步创建登录窗口,用户可以通过用户名和密码登录或注册。登录成功后,程序创建投票窗口,用户可以选择候选人进行投票。程序包含连接服务器、发送请求(登录、注册、投票)、接收响应以及处理各种异常情况的逻辑。 登录和注册功能通过向服务器发送相应请求实现,投票功能需要检查用户是否已投票,并处理投票结果。程序使用了Swing进行界面设计,并包含图片缩放功能。
源码
# 基于Swing的在线投票系统程序流程设计
## 程序开始
### 执行main方法
#### 异步创建登录窗口
##### 方法:createLoginWindow
## 登录窗口创建
### 构造JFrame
#### 设置窗口属性
- 标题
- 大小
- 关闭操作
### 创建JPanel布局
#### 使用GridLayout (3, 2)
### 添加输入组件
- 用户名标签
- 用户名输入框
- 密码标签
- 密码输入框
- 登录按钮
- 注册按钮
### 将JPanel添加到窗口中心
## 登录按钮逻辑
### 获取用户输入
### 连接服务器
#### 方法:connectToServer
### 发送登录请求
#### 请求格式:LOGIN 用户名 密码
### 处理服务器响应
- 成功:LOGIN SUCCESS
- 保存用户名
- 关闭登录窗口
- 创建投票窗口:createVotingWindow
- 失败:用户名或密码错误
- 显示错误消息框
- 连接失败
- 提示网络异常
## 注册按钮逻辑
### 获取用户输入
### 连接服务器
#### 方法:connectToServer
### 发送注册请求
#### 请求格式:REGISTER 用户名 密码
### 处理服务器响应
- 成功:REGISTER SUCCESS
- 提示注册成功消息
- 失败:用户名已存在
- 显示错误消息框
- 连接失败
- 提示网络异常
## 显示登录窗口
## 创建投票窗口
### 构造JFrame
#### 设置窗口属性
- 标题
- 大小
- 关闭操作
### 创建JPanel布局
#### 使用GridLayout (4, 3)
### 添加投票组件
- 候选人标签
- 单选按钮组
- 候选人图片(使用scaleImageIcon方法)
### 创建投票按钮
### 将JPanel添加到窗口中心
## 投票按钮逻辑
### 检查投票状态
#### 方法:hasVoted
- 已投票
- 提示已投票消息
- 未投票
- 获取选中候选人
- 检查选择状态
- 未选中候选人
- 提示选择候选人
- 选中候选人
- 发送投票请求
#### 请求格式:VOTE 用户名 候选人
- 处理服务器响应
- 成功:VOTE SUCCESS
- 提示投票成功
- 更新投票状态
- 失败
- 显示失败响应
- 连接失败
- 提示网络异常
## 显示投票窗口
## 连接服务器
### 方法:connectToServer
#### 检查套接字状态
- 是否为null或已关闭
- 尝试连接本地主机12345端口
- 创建Socket对象
- 初始化PrintWriter
- 初始化BufferedReader
- 打印连接成功信息
## 图片处理
### 方法:scaleImageIcon
#### 根据文件路径创建ImageIcon
#### 图片缩放至指定宽高
#### 返回调整后的ImageIcon
- 异常处理
- 打印错误信息
- 返回空的ImageIcon
图片