通过Mysql+Swing+jsp实现抽奖管理系统

目录

功能预览

后端主要内容

登录面板

管理面板

数据面板

  菜单栏​

面板切换

操作数据库

主窗体

关键技术

验证

 操作系统进程

美化窗体

前端部分

 注册界面

jsp实现前后端交互


功能预览

  • 登录专属账号
  • 添加参与抽奖人信息
  • 删除抽奖人信息
  • 查看参与抽奖的信息
  • 跳转网页注册/登录
  • 切换账号
  • 签到

后端主要内容

登录面板

该面板实现登陆功能,管理员通过登录内部发放的账号密码进行登录,如果没有登陆成功,系统会提醒不能进行其他操作。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5peg5b-nIw==,size_20,color_FFFFFF,t_70,g_se,x_16

 关键代码:

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);

管理面板

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5peg5b-nIw==,size_20,color_FFFFFF,t_70,g_se,x_16

关键代码:

	 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);

数据面板

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5peg5b-nIw==,size_20,color_FFFFFF,t_70,g_se,x_16

 关键代码:

	my=new mysql("select *from data");
	try {
		idlist=new ArrayList<String>();
	    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<count;i++) {                    
	        content[i][0]=my.res.getString("id");
	        content[i][1]=my.res.getString("acount");
	        content[i][2]=my.res.getString("prize");
	        content[i][3]=my.res.getString("date");  
	        idlist.add(my.res.getString("id"));
	        my.res.next();        
	       }	
	    jt=new JTable(content,row);
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} 
	jt.setPreferredScrollableViewportSize(new Dimension(450,200));
	JScrollPane jsp=new JScrollPane(jt);	
	add(jsp,BorderLayout.CENTER);	

  菜单栏
watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5peg5b-nIw==,size_20,color_FFFFFF,t_70,g_se,x_16

 关键代码:
 

    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博客

操作数据库

操作数据库有两个目的

  1. 获取数据库中的信息
  2. 对数据库中的数据增删改

对于第一种目的:使用预编辑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流保存数据,而本项目通过操作数据库来保存数据。

 注册界面

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5peg5b-nIw==,size_20,color_FFFFFF,t_70,g_se,x_16

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>注册界面</title>
		<script type="text/javascript">
			function yanzhengmiam(){
				var acount=document.getElementById('shoujihao').value;
				var password=document.getElementById('mima').value;
				if(acount.length!=11||password.length<6){
						
				}

</script>
	</head>
	<body>
		<div class="div1" align="center">	
			<form action="http://localhost:8080/myjsp/zhuce.jsp" method="post">
				<span id="sjh">手机号</span>
				<input type="text" name="shoujihao" id="shoujihao" value="" />
				<br />
				<span id="mim">密&nbsp;&nbsp;&nbsp;码</span>
				<input type="password" name="mima" id="password" value="" />
				<br />
				<input type="submit" value="注册"/>
				<a href="登录.html">已有账号?点击登录</a>
			</form>		
		</div>	
	</body>
</html>

jsp实现前后端交互

可以深入了解:eclipse使用jsp_无忧#的博客-CSDN博客

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>

<html>
<head>
<title>通过JSP打开数据表</title>
</head>
<body>

 <%  
	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("<br />");  
    out.println("手机号"+"  "+"密码 "+"  "+"id");  
    out.print("<br />");  
    while (res.next()) {  	
     out.println(res.getString("acount")+"   &nbsp  "+res.getString("password")+"  &nbsp "+res.getString("id")); //将查询结果输出  
    }  

	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
%>   

猜你喜欢

转载自blog.csdn.net/weixin_52473454/article/details/121707940