




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第基于Java實(shí)現(xiàn)QQ登錄注冊功能的示例代碼目錄前言實(shí)現(xiàn)代碼登錄頁面注冊頁面效果展示
前言
本文主要應(yīng)用的技術(shù)有:GUI、JDBC、多線程
實(shí)現(xiàn)的功能具體如下:
1、登錄功能
2、注冊功能
3、是否隱藏密碼的選擇以及實(shí)現(xiàn)功能
4、選擇性別功能
5、密碼與確認(rèn)密碼功能
6、登錄頁面實(shí)時展示當(dāng)前的時間
7、當(dāng)?shù)卿洉r用戶名與密碼在數(shù)據(jù)庫中沒有相匹配的數(shù)據(jù),則會跳轉(zhuǎn)到注冊頁面上去。
8、同樣,注冊完畢后,數(shù)據(jù)會運(yùn)用JDBC將數(shù)據(jù)寫入數(shù)據(jù)庫中,然后跳轉(zhuǎn)回登錄頁面。
實(shí)現(xiàn)代碼
登錄頁面
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.sql.*;
importjava.time.LocalTime;
publicclassJDBC_登錄功能{
publicstaticvoidmain(String[]args){
guitext3gt=newguitext3();
newThread(newtime1(gt.time)).start();//啟動線程
classguitext3{
JFramejf;
JLabell1,l2,time;
JTextFieldf1;
JPasswordFieldf2;
JButtonjb1,jb2;
JCheckBoxjc;
publicguitext3(){
jf=newJFrame("QQ登錄窗口");
jf.setSize(320,250);
jf.setLocation(700,300);//設(shè)置窗口每次啟動都顯示在屏幕正中央
jf.setLayout(null);
Fontfont=newFont("仿宋",Font.BOLD,20);//設(shè)置統(tǒng)一的字體,讓代碼更加整潔美觀
l1=newJLabel("用戶名:");
l1.setBounds(10,10,100,40);
l1.setFont(font);
f1=newJTextField(null,20);
f1.setBounds(90,15,180,30);
f1.setFont(font);
l2=newJLabel("密碼:");
l2.setBounds(8,50,100,40);
l2.setFont(font);
f2=newJPasswordField(null,20);
f2.setBounds(90,55,180,30);
f2.setEchoChar('*');//設(shè)置密碼的外顯為*
f2.setFont(font);
jc=newJCheckBox("顯示密碼");
jc.setBounds(230,130,80,40);
jc.addItemListener(newItemListener(){
publicvoiditemStateChanged(ItemEvente){
if(e.getStateChange()==ItemEvent.SELECTED){//被選中
f2.setEchoChar((char)0);
}else{
f2.setEchoChar('*');
ActionListenerlistener=newAbstractAction(){
@Override
publicvoidactionPerformed(ActionEvente){
jc.addActionListener(listener);
jb1=newJButton("登錄");
jb1.setBounds(30,100,80,40);
time=newJLabel();
time.setBounds(30,150,140,40);
time.setFont(font);
//匿名內(nèi)部類
jb1.addMouseListener(newMouseAdapter(){
publicvoidmouseClicked(MouseEvente){
Statementst=null;
Connectioncon=null;
ResultSetrs=null;
try{
//注冊驅(qū)動
Class.forName("com.mysql.cj.jdbc.Driver");
//這里的3306/后跟的是數(shù)據(jù)庫名
//獲取數(shù)據(jù)庫連接
Stringurl="jdbc:mysql://localhost:3306/studentsserverTimezone=GMT%2B8";
//通過DriverManager完成注冊
con=DriverManager.getConnection(url,"root","123");//你自己的數(shù)據(jù)庫用戶名和密碼
//執(zhí)行SQL語句
Stringsql="select*fromstudent";//from后跟表名
st=con.createStatement();
rs=st.executeQuery(sql);
booleanflag=false;
while(rs.next()){
//如果輸入的用戶名和密碼與數(shù)據(jù)庫中的用戶和對應(yīng)的密碼相同,則彈出“登錄成功!”的窗口
if(f1.getText().equals(rs.getString(1))f2.getText().equals(rs.getString(2))){
JOptionPane.showMessageDialog(null,"登錄成功!");
flag=true;//登陸成功后將標(biāo)記改為true方便確認(rèn)
break;
if(flag==false){//如果標(biāo)記為false,則表示用戶名和密碼在數(shù)據(jù)庫中未找到,彈出“登錄失??!請注冊賬戶!”的窗口
JOptionPane.showMessageDialog(null,"登錄失?。≌堊再~戶!");
f1.setText(null);//清空用戶欄
f2.setText(null);//清空密碼欄
//這個賬號不存在,需要注冊,跳轉(zhuǎn)到注冊窗口
guitext4gt=newguitext4();
jf.dispose();//關(guān)閉窗體,釋放所有資源
}catch(ClassNotFoundExceptionex){
ex.printStackTrace();
}catch(SQLExceptionex){
ex.printStackTrace();
jb1.setFont(font);
jb2=newJButton("退出");
jb2.setBounds(150,100,80,40);
//匿名內(nèi)部類
jb2.addMouseListener(newMouseAdapter(){
//重寫鼠標(biāo)點(diǎn)擊事件
publicvoidmouseClicked(MouseEvente){//如果點(diǎn)擊了退出窗口,則彈出“退出成功!”的窗口
JOptionPane.showMessageDialog(null,"退出成功!");
//系統(tǒng)退出
System.exit(0);
jb2.setFont(font);
//將這些按鈕和文本等加入到窗體中
jf.add(l1);
jf.add(f1);
jf.add(l2);
jf.add(f2);
jf.add(jb1);
jf.add(jb2);
jf.add(time);
jf.add(jc);
jf.setVisible(true);//讓組件顯示
//寫一個時間線程類
classtime1implementsRunnable{
JLabeltime;//方便傳參
publictime1(JLabeltime){
this.time=time;
publicvoidrun(){
while(true){
try{
Thread.sleep(1000);//休眠1秒
LocalTimetime=LocalTime.now();//獲取當(dāng)前時間
this.time.setText(time.toString());//設(shè)置JLabel文本
//SimpleDateFormatt=newSimpleDateFormat("HH:mm:ss");//格式化時間,把時間格式化為時:分:秒
//this.time.setText(t.format(time));//給標(biāo)簽添加內(nèi)容,即時間
}catch(InterruptedExceptione){
e.printStackTrace();
}
注冊頁面
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.sql.*;
publicclassJDBC_注冊功能{
publicstaticvoidmain(String[]args){
guitext4gt=newguitext4();
classguitext4{
JFramejf;
//JPaneljp;
JLabell1,l2,l3;
JTextFieldf1;
JPasswordFieldf2,f3;
JButtonjb1,jb2;
JRadioButtonjr1,jr2;
JCheckBoxjc;
publicguitext4(){
jf=newJFrame("QQ注冊窗口");
jf.setSize(320,280);//設(shè)置窗體大小
jf.setLocation(700,300);//設(shè)置窗口每次啟動都顯示在屏幕正中央
jf.setLayout(null);
//jp=newJPanel();
Fontfont=newFont("仿宋",Font.BOLD,20);//設(shè)置統(tǒng)一的字體,讓代碼更加整潔美觀
l1=newJLabel("用戶名:");
l1.setBounds(10,10,100,40);
l1.setFont(font);
f1=newJTextField(null,20);
f1.setBounds(90,15,180,30);
f1.setFont(font);
l2=newJLabel("密碼:");
l2.setBounds(8,50,100,40);
l2.setFont(font);
f2=newJPasswordField(null,20);
f2.setBounds(90,55,180,30);
f2.setEchoChar('*');//設(shè)置密碼的外顯為*
f2.setFont(font);
l3=newJLabel("確認(rèn)密碼:");
l3.setBounds(8,88,130,40);
l3.setFont(font);
f3=newJPasswordField(null,20);
f3.setBounds(120,95,160,30);
f3.setEchoChar('*');//設(shè)置密碼的外顯為*
jc=newJCheckBox("顯示密碼");//創(chuàng)建一個復(fù)選按鈕
jc.setBounds(230,130,80,40);
jc.addItemListener(newItemListener(){
publicvoiditemStateChanged(ItemEvente){
if(e.getStateChange()==ItemEvent.SELECTED){//被選中
f2.setEchoChar((char)0);//顯示原本的數(shù)據(jù)
f3.setEchoChar((char)0);//顯示原本的數(shù)據(jù)
}else{
f2.setEchoChar('*');//設(shè)置密碼的外顯為*
f3.setEchoChar('*');//設(shè)置密碼的外顯為*
f3.setFont(font);
ButtonGroupgroup=newButtonGroup();
//創(chuàng)建兩個單選按鈕
jr1=newJRadioButton("男");
jr1.setBounds(70,130,80,40);
jr1.setFont(font);
jr2=newJRadioButton("女");
jr2.setBounds(150,130,80,40);
jr2.setFont(font);
//將兩個單選按鈕加入到同一個ButtonGroup組中
group.add(jr1);
group.add(jr2);
//實(shí)現(xiàn)監(jiān)聽接口
ActionListenerlistener=newAbstractAction(){
@Override
//actionPerformed==發(fā)生動作時調(diào)用
publicvoidactionPerformed(ActionEvente){
jr1.addActionListener(listener);
jr2.addActionListener(listener);
jc.addActionListener(listener);
jb1=newJButton("注冊");
jb1.setBounds(50,170,80,40);
//匿名內(nèi)部類
jb1.addMouseListener(newMouseAdapter(){
publicvoidmouseClicked(MouseEvente){
PreparedStatementps=null;//PreparedStatement==表示預(yù)編譯的SQL語句的對象。
//SQL語句已預(yù)編譯并存儲在PreparedStatement對象中。
Connectioncon=null;//Connection==與特定數(shù)據(jù)庫的連接
try{
//注冊驅(qū)動
Class.forName("com.mysql.cj.jdbc.Driver");
//這里的3306/后跟的是數(shù)據(jù)庫名
//獲取數(shù)據(jù)庫連接
Stringurl="jdbc:mysql://localhost:3306/studentsserverTimezone=GMT%2B8";
//通過DriverManager完成注冊
con=DriverManager.getConnection(url,"root","123");//你自己數(shù)據(jù)庫的用戶名和密碼
//執(zhí)行SQL語句
Stringsql="insertintostudent(username,password,sex)values(,,)";
ps=con.prepareStatement(sql);
if(f1.getText().length()!=0){
//注:這里的所有g(shù)etText()都不能寫成!=null
ps.setString(1,f1.getText());
}else{
JOptionPane.showMessageDialog(null,"姓名不能為空!");//彈出窗口
if(f2.getText().length()!=0){
ps.setString(2,f2.getText());
}else{
JOptionPane.showMessageDialog(null,"密碼不能為空!");
if(jr1.isSelected()||jr2.isSelected()){//如果選擇男或者女,就存入數(shù)據(jù)庫。
if(jr1.isSelected()){//isSelected()==判斷按鈕有沒有被選中
ps.setString(3,jr1.getText());//選中男,則將sex=男添加到數(shù)據(jù)
if(jr2.isSelected()){
ps.setString(3,jr2.getText());//選中女,則將sex=女添加到數(shù)據(jù)
}else{//否則彈出窗口提醒“請選擇性別!”
JOptionPane.showMessageDialog(null,"請選擇性別!");
}catch(ClassNotFoundExceptionex){
ex.printStackTrace();
}catch(SQLExceptionex){
ex.printStackTrace();
if(newString(f2.getPassword()).equals(newString(f3.getPassword()))){//如果密碼與確認(rèn)密碼一致
if(newString(f2.getPassword()).equals(newString(f3.getPassword()))f1.getText().length()!=0f2.getText().length()!=0
(jr1.isSelected()||jr2.isSelected())){//如果密碼與確認(rèn)密碼一致,用戶名和密碼不為空并且選擇了性別,則注冊成功
JOptionPane.showMessageDialog(null,"注冊成功!
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧高三10月份月考數(shù)學(xué)試卷
- 九下蘇教版數(shù)學(xué)試卷
- 江蘇中考鹽城數(shù)學(xué)試卷
- 蘭州五十四中數(shù)學(xué)試卷
- 夢到全國高考數(shù)學(xué)試卷
- 漣水中考數(shù)學(xué)試卷
- 2026屆河北省邢臺巿南和一中高一化學(xué)第一學(xué)期期中檢測試題含解析
- 開州高二月考數(shù)學(xué)試卷
- 德育工作案例成果課件
- 遼寧17年高考數(shù)學(xué)試卷
- GB/T 3618-2006鋁及鋁合金花紋板
- GB/T 26255-2022燃?xì)庥镁垡蚁?PE)管道系統(tǒng)的鋼塑轉(zhuǎn)換管件
- GB 31645-2018食品安全國家標(biāo)準(zhǔn)膠原蛋白肽
- 某工業(yè)區(qū)供水管道工程施工組織設(shè)計
- 防山體滑坡應(yīng)急預(yù)案
- 江蘇省社會組織網(wǎng)上辦事系統(tǒng)-操作手冊
- DB37-T 3079-2017特種設(shè)備事故隱患排查治理體系細(xì)則
- 2023版江西省鄉(xiāng)鎮(zhèn)衛(wèi)生院街道社區(qū)衛(wèi)生服務(wù)中心地址醫(yī)療機(jī)構(gòu)名單(1744家)
- 模具保養(yǎng)記錄表
- 各種隔離標(biāo)識
- 鋼質(zhì)防火門窗項(xiàng)目商業(yè)計劃書范文參考
評論
0/150
提交評論