目录
功能预览
后端主要内容
登录面板
管理面板
数据面板
菜单栏
面板切换
操作数据库
主窗体
关键技术
验证
操作系统进程
美化窗体
前端部分
注册界面
jsp实现前后端交互
该面板实现登陆功能,管理员通过登录内部发放的账号密码进行登录,如果没有登陆成功,系统会提醒不能进行其他操作。
关键代码:
JLabel l=new JLabel("欢迎您进入后台管理系统!");
JLabel l1=new JLabel("账号:");
JLabel l2=new JLabel("密码:");
l.setBounds(90,20,300,60);
l1.setBounds(30, 90, 100, 30);
l2.setBounds(30, 140, 100, 30);
l3.setBounds(230,80,150,50);
jtf.setBounds(100,90,100,30);
jpf.setBounds(100,140,100,30);
l.setForeground(Color.BLUE);
l.setFont(new Font("宋体",Font.BOLD,25));
l1.setFont(new Font("楷体",Font.BOLD,17));
l2.setFont(new Font("楷体",Font.BOLD,17));
l3.setFont(new Font("楷体",Font.BOLD,17));
l3.setForeground(Color.RED);
setLayout(null);
关键代码:
JLabel l1=new JLabel("添加抽奖信息:");
JLabel l2=new JLabel("id:");
JLabel l3=new JLabel("手机号:");
JLabel l4=new JLabel("密码:");
JLabel l5=new JLabel("奖品:");
JLabel l6=new JLabel("日期:");
JLabel l7=new JLabel("删除id:");
addb=new JButton("确认添加");
deleb=new JButton("确认删除");
jtf1=new JTextField(20);
jtf2=new JTextField(20);
jtf3=new JTextField(20);
jtf4=new JTextField(20);
jtf5=new JTextField(20);
jtf6=new JTextField(20);
l1.setBounds(0,0,150,50);
l2.setBounds(0,35,100,50);
l3.setBounds(0,65,100,50);
l4.setBounds(0,95,100,50);
l5.setBounds(0,125,100,50);
l6.setBounds(0,155,100,50);
l7.setBounds(190,35,100,50);
addb.setBounds(70,200,90,30);
deleb.setBounds(260,80,90,30);
l1.setFont(new Font("宋体",Font.BOLD,20));
l2.setFont(new Font("楷体",Font.BOLD,17));
l3.setFont(new Font("楷体",Font.BOLD,17));
l4.setFont(new Font("楷体",Font.BOLD,17));
l5.setFont(new Font("楷体",Font.BOLD,17));
l6.setFont(new Font("楷体",Font.BOLD,17));
l7.setFont(new Font("楷体",Font.BOLD,17));
jtf1.setBounds(70,50,100,20);
jtf2.setBounds(70,80,100,20);
jtf3.setBounds(70,110,100,20);
jtf4.setBounds(70,140,100,20);
jtf5.setBounds(70,170,100,20);
jtf6.setBounds(260,50,100,20);
setLayout(null);
关键代码:
my=new mysql("select *from data");
try {
idlist=new ArrayList();
my.res.last();
int count=my.res.getRow();
my.res.beforeFirst();
my.res.next();
String content [][] =new String[count][4];
for(int i=0;i
关键代码:
JMenu gailv = new JMenu("中奖概率");
JMenu about = new JMenu("关于作者");
JMenu getid = new JMenu("获取id");
JMenu rule = new JMenu("id抽奖规则");
JMenu manage=new JMenu("关于管理员");
JMenuItem jmi1=new JMenuItem("人帅气质佳");
JMenuItem jmi2=new JMenuItem("室外高人");
JMenuItem jmi3=new JMenuItem("努力学习Java");
JMenuItem jmi4=new JMenuItem("非vip=50%");
JMenuItem jmi5=new JMenuItem("vip=100%");
JMenuItem jmi6=new JMenuItem("小丑=0%");
JMenuItem jmi7=new JMenuItem("网页地址");
JMenuItem jmi8=new JMenuItem("id长度为6");
JMenuItem jmi9=new JMenuItem("v开头获得专属奖品");
JMenuItem jmi10=new JMenuItem("a开头有几率获得奖品");
JMenuItem jmi11 =new JMenuItem("其他格式不能参与");
JMenuItem jmi12=new JMenuItem("账号由内部发放");
JMenuItem jmi13=new JMenuItem("账号丢失/密码错误");
JMenuItem jmi14=new JMenuItem("签到");
JMenuItem jmi15=new JMenuItem("查看数据");
JMenuItem jmi16=new JMenuItem("返回管理");
JMenuItem jmi17=new JMenuItem("切换账号");
写好面板后怎么切换?两行代码搞定!
setContentPane(ap);
revalidate();//重新验证
具体例子:java实现面板之间的切换_无忧#的博客-CSDN博客
操作数据库有两个目的
对于第一种目的:使用预编辑PreparedStatement获取数据,然后循环输出各项数据
对于第二种目的:直接使用Statement+execute(cmd)完成。
获取信息:
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
c = (Connection) DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/chou_jiang?characterEncoding=UTF-8",
"root", "root");
PreparedStatement ps=(PreparedStatement) c.prepareStatement(cmd);
res=(ResultSet) ps.executeQuery();//获取的结果
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
增删改信息 :
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Connection c = (Connection) DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/chou_jiang?characterEncoding=UTF-8",
"root", "root");
Statement s=c.createStatement();
s.execute(cmd);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
主窗体充当容器作用,将各个面板添加到容器内从而将数据可视化,并且在住窗体内设置各种状态,如是否已经登陆了?是否重复签到了?在窗体内添加各种事件监听,如点击登录窗体设置为管理面板,点击查看数据窗体设置为数据面板
关键代码:
setTitle("抽奖管理系统");
setBounds(200, 150, 480, 300);//设置窗体大小,位置。
setVisible(true);
setLayout(null);
验证登陆状态/是否签到
boolean state=false;//登陆状态
boolean sign=false;//是否签到
if(state==true) {
if(sign==true) {
JOptionPane.showMessageDialog(null, "请不要重复签到","提示",JOptionPane.INFORMATION_MESSAGE);
}else {
sign=true;
JOptionPane.showMessageDialog(null, "您已成功签到","签到",JOptionPane.INFORMATION_MESSAGE);
}
}else {
JOptionPane.showMessageDialog(null, "请登录后签到","警告!",JOptionPane.WARNING_MESSAGE);
}
验证账号密码是否正确
使用Hashmap存储账号密码,优点:hashmap的key和value是一一对应关系,并且不会重复添加。
if(map.containsKey(zh)) {
if(map.get(zh).equals(mm)) {
state=true;
setContentPane(ap);
revalidate();//重新验证
}else {
lg.l3.setText("密码错误");
}
}else {
lg.l3.setText("账号不存在");
}
通过点击一个按钮或者菜单项,系统通过本地浏览器(或程序)打开某网页(或exe)
已打开网页为例:
一般edge浏览器的位置在C:\\Program Files (x86)\\Microsoft\\Edge\\Application。百度的网址:百度一下,你就知道
try {
ProcessBuilder pb=new ProcessBuilder("C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge_proxy.exe",
"https://www.baidu.com/");
pb.start();
} catch (IOException e1) {
e1.printStackTrace();
}
swing文本框添加背景图片_无忧#的博客-CSDN博客
swing带图标的弹出菜单栏_无忧#的博客-CSDN博客
swing支持图标的列表_无忧#的博客-CSDN博客
Swing之窗体标题闪烁,文字跑马灯特效_无忧#的博客-CSDN博客
Swing之美化最大化,关闭,最小化按钮,美化边框_无忧#的博客-CSDN博客
由于目前还没有学习BootStrap,前端界面并好看,只能实现简单的注册,登录界面
学完之后会补上图片轮播功能,至于抽奖可以参考一个完整的抽奖系统高级抽奖系统(含界面美化,点击按钮跳转网址)_无忧#的博客-CSDN博客
在此项目中,抽奖原理与本项目基本一致,于此项目中不同的是,抽奖系统采用io流保存数据,而本项目通过操作数据库来保存数据。
注册界面
可以深入了解:eclipse使用jsp_无忧#的博客-CSDN博客
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
通过JSP打开数据表
<%
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
Connection c = (Connection) DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/chou_jiang?characterEncoding=UTF-8",
"root", "root");
PreparedStatement ps=(PreparedStatement) c.prepareStatement("select *from data");
ResultSet res=(ResultSet) ps.executeQuery();//获取的结果
out.print("查询结果:");
out.print("
");
out.println("手机号"+" "+"密码 "+" "+"id");
out.print("
");
while (res.next()) {
out.println(res.getString("acount")+"   "+res.getString("password")+"   "+res.getString("id")); //将查询结果输出
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
%>