首先要在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. spring cloud --- Ribbon 客户端负载均衡 + RestTemplate ---心得【无熔断器】

    spring boot      1.5.9.RELEASE spring cloud    Dalston.SR1 1.前言 了解了 eureka 服务注册与发现 的3大角色 ,会使用RestTem ...

  2. PPT制作手机滑动粗糙效果

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

  3. POJ2115C Looooops

    http://poj.org/problem?id=2115 k位储存特点,一旦溢出,那么就到第二个循环开始返回0重新计数.问题实际转化成a+cx=b(mod 2^k)跑多少圈能够重合.因为是k位无符 ...

  4. HDU 1863 畅通工程 (并查集)

    原题链接:畅通工程 题目分析:典型的并查集模版题,这里就不详细叙述了.对算法本身不太了解的可以参考这篇文章:并查集算法详解 代码如下: #include <iostream> #inclu ...

  5. 《剑指offer》面试题68 - II. 二叉树的最近公共祖先

    问题描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q ...

  6. 【Android】安卓开发中的布局与事件

    [Android]安卓开发中的布局与事件 1.Android Studio下载配置 非常简单的百度然后点击下载安装就好了.注意的是,本来我是打算使用评价还不错的Genymotion这个软件来充当虚拟机 ...

  7. 带你读AI论文丨RAID2020 Cyber Threat Intelligence Modeling GCN

    摘要:本文提出了基于异构信息网络(HIN, Heterogeneous Information Network)的网络威胁情报框架--HINTI,旨在建模异构IOCs之间的相互依赖关系,以量化其相关性 ...

  8. Cesium源码剖析---Post Processing之物体描边(Silhouette)

    Cesium在1.46版本中新增了对整个场景的后期处理(Post Processing)功能,包括模型描边.黑白图.明亮度调整.夜视效果.环境光遮蔽等.对于这么炫酷的功能,我们绝不犹豫,先去翻一翻它的 ...

  9. 花了半年时间,我把Pink老师的HTMLCSS视频课程,整理成了10万字的Markdown笔记!

    说明:本文内容真实!!!不是推广!!! 学习前端的同学应该都或多或少听说过 Pink 老师,我个人觉得 Pink 老师的前端视频教程应该说是目前B站上最好的了,没有之一! Pink老师 HTML CS ...

  10. golang中内存地址计算-根据内存地址获取下一个内存地址对应的值

    package main import ( "fmt" "unsafe" ) func main() { // 根据内存地址获取下一个字节内存地址对应的值 da ...