首先要在Oracle数据库创建表文件,包括建立表头以及关键字(唯一标识符),此次程序所用的表名称为SW_USER_INFO,表头有UNAME、UKEY、USEX等,关键字为UCC,然后添加一条记录,用户名称为system,密码为1.登陆原理为通过链接Oracle数据库,然后搜索表名称,根据关键字锁定记录,获取记录信息与登陆界面输入信息进行比对,信息一致即可登陆成功,反之则不通过。连接Oracle数据库代码如下:

 1 import java.sql.Connection;
2 import java.sql.DriverManager;
3 import java.sql.PreparedStatement;
4 import java.sql.ResultSet;
5 import java.sql.SQLException;
6
7 public class Loading_F {
8
9 public String name = "";
10 public int sex = -1 ;
11 public String get_Verification_INFO(String UNAME) throws SQLException{
12 String psw = "";
13
14 Connection con = null;
15 try
16 {
17 Class.forName("oracle.jdbc.driver.OracleDriver");
18 String url = "jdbc:oracle:" + "thin:@IP地址:端口号:标识符";
19 String user = "数据库登陆名";
20 String password = "口令";
21 con = DriverManager.getConnection(url, user, password);
22 } catch (Exception e) {
23 e.printStackTrace();
24 }
25
26 PreparedStatement pre = null;
27 ResultSet result = null;
28 String sql = "select * from SW_USER_INFO where UACC=?";
29 pre = con.prepareStatement(sql);
30 pre.setString(1, UNAME);
31 result = pre.executeQuery();
32 while (result.next()){
33 name = result.getString("UNAME");
34 psw = result.getString("UKEY");
35 sex = result.getInt("USEX");
36 }
37 con.close();
38 return psw;
39 }
40 }

  这个里面涉及Oracle数据库表的协议(表内容的具体含义),具体协议内容不具体说明,望各位谅解,这个协议由Oracle数据库用户根据使用内容自己定义。接下来就是用户登陆界面的设计主要具有三个功能:登陆、退出和重置。具体代码如下:

  1 import java.awt.Color;
2 import java.awt.Dimension;
3 import java.awt.Font;
4 import java.awt.Image;
5 import java.awt.Toolkit;
6 import java.awt.event.KeyAdapter;
7 import java.awt.event.KeyEvent;
8 import java.awt.event.MouseAdapter;
9 import java.awt.event.MouseEvent;
10 import java.sql.SQLException;
11
12 import javax.swing.ImageIcon;
13 import javax.swing.JButton;
14 import javax.swing.JFrame;
15 import javax.swing.JLabel;
16 import javax.swing.JPanel;
17 import javax.swing.JPasswordField;
18 import javax.swing.JTextField;
19 import javax.swing.border.LineBorder;
20
21 public class Loading_F {
22
23 JFrame f1 = new JFrame("OERI-驾校管理系统-登陆");
24 static JTextField jt1 = new JTextField();
25 JPasswordField jt2 = new JPasswordField();
26 JTextField jt3 = new JTextField();
27 JButton btn1 = new JButton("确 定");
28 JButton btn2 = new JButton("退 出");
29 JButton btn3 = new JButton("重置");
30 String str1 = new String();
31
32 public static void main(String[] args) {
33 Loading_F lf = new Loading_F();
34 lf.addFormFunction();
35 lf.setform();
36 }
37 void Start_Loading_Form(){
38 addFormFunction();
39 setform();
40 }
41
42 void setform(){
43 f1.setSize(780, 400);
44 f1.setResizable(false);
45 setFrameCenter(f1);
46
47 String path = "bgp/background01.jpg";
48 ImageIcon background = new ImageIcon(path);
49 JLabel label = new JLabel(background);
50 label.setBounds(0, 0, f1.getWidth(), f1.getHeight());
51 JPanel imagePanel = (JPanel) f1.getContentPane();
52 imagePanel.setOpaque(false);
53 f1.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
54
55 JLabel jl1 = new JLabel("请输入用户信息:");
56 jl1.setBounds(480, 70, 180, 50);
57 jl1.setFont(new Font("宋体", Font.BOLD, 17));
58 jl1.setForeground(Color.WHITE);
59 f1.getLayeredPane().add(jl1, new Integer(Integer.MAX_VALUE));
60
61 JLabel jl2 = new JLabel("用户名:");
62 jl2.setBounds(480, 140, 180, 30);
63 jl2.setFont(new Font("宋体", Font.BOLD, 13));
64 jl2.setForeground(Color.WHITE);
65 f1.getLayeredPane().add(jl2, new Integer(Integer.MAX_VALUE));
66
67 JLabel jl3 = new JLabel("密 码:");
68 jl3.setBounds(480, 180, 180, 30);
69 jl3.setFont(new Font("宋体", Font.BOLD, 13));
70 jl3.setForeground(Color.WHITE);
71 f1.getLayeredPane().add(jl3, new Integer(Integer.MAX_VALUE));
72
73 jt1.setBounds(535, 140, 180, 30);
74 jt1.setBorder(new LineBorder(Color.white));
75 jt1.setFont(new Font("宋体", Font.BOLD, 15));
76 jt1.addMouseListener(new MouseAdapter(){
77 public void mouseEntered(MouseEvent e){
78 jt1.setBorder(new LineBorder(Color.black));
79 }
80 public void mouseExited(MouseEvent e){
81 jt1.setBorder(new LineBorder(Color.white));
82 }
83 });
84 f1.getLayeredPane().add(jt1, new Integer(Integer.MAX_VALUE));
85
86 jt2.setBounds(535, 180, 180, 30);
87 jt2.setEchoChar('*');
88 jt2.setFont(new Font("宋体", Font.BOLD, 15));
89 jt2.setBorder(new LineBorder(Color.white));
90 jt2.addMouseListener(new MouseAdapter(){
91 public void mouseEntered(MouseEvent e){
92 jt2.setBorder(new LineBorder(Color.black));
93 }
94 public void mouseExited(MouseEvent e){
95 jt2.setBorder(new LineBorder(Color.white));
96 }
97 });
98 f1.getLayeredPane().add(jt2, new Integer(Integer.MAX_VALUE));
99
100 btn1.setBounds(488, 240, 65, 30);
101 btn1.setBorder(new LineBorder(Color.gray));
102 btn1.addMouseListener(new MouseAdapter(){
103 public void mouseEntered(MouseEvent e){
104 btn1.setBorder(new LineBorder(Color.black));
105 }
106 public void mouseExited(MouseEvent e){
107 btn1.setBorder(new LineBorder(Color.gray));
108 }
109 });
110 f1.getLayeredPane().add(btn1, new Integer(Integer.MAX_VALUE));
111
112 btn2.setBounds(568, 240, 65, 30);
113 btn2.setBorder(new LineBorder(Color.gray));
114 btn2.addMouseListener(new MouseAdapter(){
115 public void mouseEntered(MouseEvent e){
116 btn2.setBorder(new LineBorder(Color.black));
117 }
118 public void mouseExited(MouseEvent e){
119 btn2.setBorder(new LineBorder(Color.gray));
120 }
121 });
122 f1.getLayeredPane().add(btn2, new Integer(Integer.MAX_VALUE));
123
124 btn3.setBounds(648, 240, 65, 30);
125 btn3.setBorder(new LineBorder(Color.gray));
126 btn3.addMouseListener(new MouseAdapter(){
127 public void mouseEntered(MouseEvent e){
128 btn3.setBorder(new LineBorder(Color.black));
129 }
130 public void mouseExited(MouseEvent e){
131 btn3.setBorder(new LineBorder(Color.gray));
132 }
133 });
134 f1.getLayeredPane().add(btn3, new Integer(Integer.MAX_VALUE));
135
136 jt3.setBounds(490, 323, 240, 30);
137 jt3.setBackground(new Color(255,255,255,0));
138 jt3.setOpaque(false);
139 jt3.setBorder(null);
140 jt3.setFont(new Font("黑体", Font.BOLD, 13));
141 jt3.setForeground(Color.WHITE);
142 jt3.setEditable(false);
143 f1.getLayeredPane().add(jt3, new Integer(Integer.MAX_VALUE));
144
145 Image imageIcon = Toolkit.getDefaultToolkit().getImage("bgp/tubiao.png");
146 f1.setIconImage(imageIcon);
147 f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
148 f1.setVisible(true);
149 }
150 void setFrameCenter(JFrame jf){
151 Toolkit tl = Toolkit.getDefaultToolkit();
152 Dimension d = tl.getScreenSize();
153 double ScreenHeigth = d.getHeight();
154 double ScreenWidth = d.getWidth();
155 int FrameWidth = jf.getWidth();
156 int FrameHeigth = jf.getHeight();
157 int Higth = (int)(ScreenHeigth - FrameHeigth)/2;
158 int Width = (int) (ScreenWidth - FrameWidth)/2;
159 jf.setLocation(Width, Higth);
160 }
161 void Password_Verification() throws SQLException{
162 String name = jt1.getText();
163 char[] passw = jt2.getPassword();
164 String entered_password = new String(passw);
165
166 if(name.equals("")){
167 str1 = "请输入用户名称!";
168 jt3.setText(str1);
169 }else if(entered_password.equals("")){
170 str1 = "请输入密码!";
171 jt3.setText(str1);
172 }else{
173 str1 = "正在验证登录信息...";
174 jt3.setText(str1);
175 function_res.Loading_F frlf = new function_res.Loading_F();
176 String password = frlf.get_Verification_INFO(name);
177 if(password.equals("")){
178 str1 = "未找到该用户!";
179 jt3.setText(str1);
180 }else{
181 if(password.equals(entered_password)){
182 str1 = "信息正确,正在登录...";
183 jt3.setText(str1);
184 f1.setVisible(false);
185 f1.dispose();
186 Major_F mf = new Major_F();
187 mf.str0 = frlf.name;
188 mf.usex = frlf.sex;
189 mf.setform();
190 mf.setFunction();
191 }else{
192 str1 = "密码错误,请在确认无误后再次输入!";
193 jt3.setText(str1);
194 }
195 }
196 }
197 }
198 void addFormFunction(){
199 btn1.addMouseListener(new MouseAdapter(){
200 public void mouseClicked(MouseEvent e){
201 try {
202 Password_Verification();
203 } catch (SQLException e1) {
204 e1.printStackTrace();
205 }
206 }
207 });
208 btn1.addKeyListener(new KeyAdapter(){
209 @SuppressWarnings("static-access")
210 public void keyPressed(KeyEvent ke){
211 if(ke.getKeyChar() == ke.VK_ENTER){
212 try {
213 Password_Verification();
214 } catch (SQLException e1){
215 e1.printStackTrace();
216 }
217 }
218 }
219 });
220
221 btn2.addMouseListener(new MouseAdapter(){
222 public void mouseClicked(MouseEvent e){
223 System.exit(0);
224 }
225 });
226
227 btn3.addMouseListener(new MouseAdapter(){
228 public void mouseClicked(MouseEvent e){
229 jt1.setText("");
230 jt2.setText("");
231 jt3.setText("");
232 }
233 });
234
235 }
236 }

  运行效果图如下:

  

 

  2018年1月27日于青岛

基于Oracle数据库登陆界面及功能实现 Java版的更多相关文章

  1. 2018.6.6 基于Oracle数据库的航天信息系统JDBC练习

    综合练习 一.语言和环境 A.实现语言 Java B.环境要求 JDK 6.0及其以上版本.MyEclipse7.5及其以上版本.Oracle11g.PL/SQL Developer 二.功能要求 开 ...

  2. Oracle数据库的版本变迁功能对比

    Oracle数据库自发布至今,也经历了一个从不稳定到稳定,从功能简单至强大的过程.从第二版开始,Oracle的每一次版本变迁,都具有里程碑意义. 1979年的夏季,RSI(Oracle公司的前身,Re ...

  3. 通用超级强大的基于Oracle数据库的代码生成器

    项目中使用了Oracle数据库,命名基本规范为表名和字段名全部大写,用下划线分割各个单词: 如“BASE_USER_LOGON_EXTEND”这个表表示用户登录的扩展表. 基于这个规范,通用权限管理系 ...

  4. Oracle数据库基本操作 (五) —— 使用java调用存储过程

    一.环境准备 登录Oracle数据库scott账号,利用emp进行操作. 1.创建 proc_getyearsal 存储过程 -- 获取指定员工年薪 create or replace procedu ...

  5. 基于oracle数据库存储过程的创建及调用

    1.PLSQL编程 1.1概念和目的 PL/SQL(Procedure Language/SQL) PLSQL是Oracle对sql语言的过程化扩展 指在SQL命令语言中增加了过程处理语句(如分支.循 ...

  6. 开启和关闭oracle数据库中的审计功能

    第1步:查看审计功能是否开启?SQL> show parameter audit;NAME                                 TYPE        VALUE-- ...

  7. oracle学习1 基于oracle数据库的PLSQL编程以及存储过程的创建和使用视频

    https://www.bilibili.com/video/av46777605 plsql中选择testWindow中可以进行测试 1.编写函数在plsql的testwindow中 begin d ...

  8. 编写实现连接oracle数据库并返回Connection对象的Java工具类

    只需要实现一个功能,所以只写一个方法,为了方便调用,设为静态方法 package com.jv; import java.sql.Connection; import java.sql.DriverM ...

  9. oracle数据库中将clob字段内容利用java提取出至文本文档中

    代码段: 1.执行clob转String public static String ClobToString(Clob sc) throws SQLException, IOException { S ...

随机推荐

  1. JMeter_事务控制器

    性能测试的结果统计时我们一定会关注TPS,TPS代表的是每秒事务数,每个事务对应的是我们的请求.虽然JMeter能够帮我们把每个请求统计成一个事务,但有时候我们希望把多个操作统计成一个事务,JMete ...

  2. Django_通用视图(五)

    参考官网的投票系统,按照综合案例的流程创建应用polls,主要模块代码如下: test1/polls/models.py import datetime from django.db import m ...

  3. python中addict模块,设置和读取嵌套字典

    源码地址:   https://github.com/mewwts/addict/blob/master/README.md

  4. Word2010制作倒福字

    原文: https://www.toutiao.com/i6489772955797553677/ 选择"插入"选项卡,"插图"功能组,"形状&quo ...

  5. 利用python绘制分析路易斯安那州巴吞鲁日市的人口密度格局

    前言 数据来源于王法辉教授的GIS和数量方法,以后有空,我会利用python来实现里面的案例,这里向王法辉教授致敬. 绘制普查人口密度格局 使用属性查询提取区边界 import numpy as np ...

  6. css3中transition属性详解

    css3中通过transition属性可以实现一些简单的动画过渡效果~ 1.语法 transition: property duration timing-function delay; transi ...

  7. vivo推送平台架构演进

    本文根据Li Qingxin老师在"2021 vivo开发者大会"现场演讲内容整理而成.公众号回复[2021VDC]获取互联网技术分会场议题相关资料. 一.vivo推送平台介绍 1 ...

  8. 《剑指offer》面试题66. 构建乘积数组

    问题描述 给定一个数组 A[0,1,-,n-1],请构建一个数组 B[0,1,-,n-1],其中 B 中的元素 B[i]=A[0]×A[1]×-×A[i-1]×A[i+1]×-×A[n-1].不能使用 ...

  9. [STM32F10x] 利用定时器测量脉冲宽度

    硬件:STM32F103C8T6 平台: ARM-MDk V5.11 前面一篇文章讲过如何利用定时器测量信号的频率(见[STM32F10x] 利用定时器测量频率),使用的是定时器的捕获/比较单元(Ca ...

  10. Android学习笔记2

    4,用intent在activity之间传递数据(两个Activity可能不是在一个应用程序中) (1),从MainActivity向HelloActivity传递参数123 package com. ...