用Java写一个抽奖系统,包括注册、登录和抽奖界面,能往里面设置抽奖人和奖品信息,并自己确定抽奖算法。
时间: 2023-11-22 11:51:54 浏览: 39
好的,下面是一个简单的抽奖系统的Java代码,包括注册、登录和抽奖界面。它使用了Java Swing库来构建图形用户界面(GUI)。
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class LotterySystem extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JButton registerButton, loginButton, startButton;
private JTextField usernameField;
private JPasswordField passwordField;
private JTextArea infoArea;
private String[] users = { "Alice", "Bob", "Charlie", "David" };
private String[] prizes = { "iPhone", "iPad", "iPod", "iMac" };
private int[] winningNumbers;
public LotterySystem() {
super("Lottery System");
// create buttons
registerButton = new JButton("Register");
registerButton.addActionListener(this);
loginButton = new JButton("Login");
loginButton.addActionListener(this);
startButton = new JButton("Start");
startButton.addActionListener(this);
startButton.setEnabled(false);
// create input fields
usernameField = new JTextField(10);
passwordField = new JPasswordField(10);
// create text area
infoArea = new JTextArea(10, 30);
infoArea.setEditable(false);
// create main panel
JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
// create login panel
JPanel loginPanel = new JPanel(new GridLayout(3, 2, 5, 5));
loginPanel.add(new JLabel("Username:"));
loginPanel.add(usernameField);
loginPanel.add(new JLabel("Password:"));
loginPanel.add(passwordField);
loginPanel.add(registerButton);
loginPanel.add(loginButton);
// create lottery panel
JPanel lotteryPanel = new JPanel(new BorderLayout());
lotteryPanel.setBorder(BorderFactory.createTitledBorder("Lottery"));
lotteryPanel.add(startButton, BorderLayout.NORTH);
lotteryPanel.add(new JScrollPane(infoArea), BorderLayout.CENTER);
// add panels to main panel
mainPanel.add(loginPanel, BorderLayout.NORTH);
mainPanel.add(lotteryPanel, BorderLayout.CENTER);
// add main panel to frame
setContentPane(mainPanel);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setResizable(false);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == registerButton) {
String username = usernameField.getText();
if (username.isEmpty()) {
JOptionPane.showMessageDialog(this, "Please enter a username.");
} else if (usernameExists(username)) {
JOptionPane.showMessageDialog(this, "Username already exists.");
} else {
addUser(username);
JOptionPane.showMessageDialog(this, "User registered successfully.");
}
} else if (e.getSource() == loginButton) {
String username = usernameField.getText();
String password = new String(passwordField.getPassword());
if (authenticate(username, password)) {
JOptionPane.showMessageDialog(this, "Login successful.");
startButton.setEnabled(true);
} else {
JOptionPane.showMessageDialog(this, "Invalid username or password.");
}
} else if (e.getSource() == startButton) {
int numWinners = (int) (Math.random() * users.length);
winningNumbers = new int[numWinners];
for (int i = 0; i < numWinners; i++) {
winningNumbers[i] = (int) (Math.random() * users.length);
}
displayWinners();
}
}
private boolean usernameExists(String username) {
for (String user : users) {
if (user.equals(username)) {
return true;
}
}
return false;
}
private void addUser(String username) {
String[] newUsers = new String[users.length + 1];
for (int i = 0; i < users.length; i++) {
newUsers[i] = users[i];
}
newUsers[users.length] = username;
users = newUsers;
}
private boolean authenticate(String username, String password) {
// simple authentication using hardcoded passwords
if (username.isEmpty() || password.isEmpty()) {
return false;
}
if (username.equals("Alice") && password.equals("password1")) {
return true;
}
if (username.equals("Bob") && password.equals("password2")) {
return true;
}
if (username.equals("Charlie") && password.equals("password3")) {
return true;
}
if (username.equals("David") && password.equals("password4")) {
return true;
}
return false;
}
private void displayWinners() {
infoArea.setText("");
for (int i = 0; i < winningNumbers.length; i++) {
int index = winningNumbers[i];
String winner = users[index];
String prize = prizes[i % prizes.length];
infoArea.append(String.format("Winner %d: %s - Prize: %s\n", i + 1, winner, prize));
}
}
public static void main(String[] args) {
new LotterySystem();
}
}
```
这个抽奖系统有四个预设用户和四个预设奖品。注册时,用户输入用户名并点击“注册”按钮,系统会检查该用户名是否已存在,如果不存在,则添加到用户列表中。
登录时,用户需要输入用户名和密码,系统会验证用户名和密码是否匹配。如果匹配成功,则启用“开始抽奖”按钮。
点击“开始抽奖”按钮时,系统将随机选择一些获奖者,并显示他们的用户名和奖品。获奖者的数量是随机的,每个获奖者获得的奖品也是随机的。如果参与抽奖的人数少于获奖者数量,则所有参与者都将获奖。
这是一个简单的抽奖系统,您可以根据自己的需要进行修改和扩展。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)