日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实验任务四:登录界面、实验任务五:猜数字

發(fā)布時(shí)間:2025/4/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实验任务四:登录界面、实验任务五:猜数字 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

[實(shí)驗(yàn)任務(wù)四:登錄界面]

程序設(shè)計(jì)思想:

? 首先是登錄界面的布局,因?yàn)榻M件不是很整齊,沒有使用固定的布局,主界面的setLayout()參數(shù)設(shè)為null,用setBounds()對(duì)各個(gè)組件標(biāo)簽、文本框、按鈕等進(jìn)行自由布局。驗(yàn)證碼用按鈕的形式顯示便于每點(diǎn)擊以此按鈕會(huì)觸發(fā)驗(yàn)證碼的事件,進(jìn)行隨機(jī)轉(zhuǎn)換,重新生成一個(gè)新的6位驗(yàn)證碼。驗(yàn)證碼是先生成0~2的數(shù),0、1、2分別代表數(shù)字、小寫字母、大寫字母出現(xiàn)的一定概率,再用ASCII表的對(duì)應(yīng)值的隨機(jī)數(shù)產(chǎn)生字符,循環(huán)6次組合成字符串。用戶名和驗(yàn)證碼處的文本框直接讀入,而密碼處的文本框則為了保護(hù)密碼的安全性,采用JPasswordField進(jìn)行定義,使輸進(jìn)去的密碼變?yōu)?/span>*。

  登錄按鈕的觸發(fā)事件,用戶名不對(duì)則提示用戶名不存在,密碼不對(duì)則提示密碼有誤,驗(yàn)證碼不對(duì)提示驗(yàn)證碼有誤,都正確則顯示登陸成功,初始的用戶名密碼設(shè)成了自己的學(xué)號(hào)。快速注冊(cè)也自動(dòng)識(shí)別并提示注冊(cè)成功。

程序流程圖:

  ?

程序源代碼:

1 package denglujiemian; 2 import java.awt.*; 3 import javax.swing.*; 4 import java.util.Random; 5 import java.awt.event.*; 6 public class Denglujiemian//定義Denglujiemian類 7 { 8 JFrame frame;//定義frame 9 JLabel label1=new JLabel("登錄名:");//定義標(biāo)簽1 label1為“登錄名” 10 JLabel label2=new JLabel("密碼:");//定義標(biāo)簽2 label2為“密碼” 11 JLabel label3=new JLabel("驗(yàn)證碼:");//定義標(biāo)簽3 label3為“驗(yàn)證碼” 12 JButton button1,button2,button3;//定義三個(gè)按鈕分別為“登錄”,“快速注冊(cè)”,以及一個(gè)驗(yàn)證碼按鈕 13 JPanel panel1=new JPanel();//面板1 panel1 14 JPanel panel2=new JPanel();//面板2 panel2 15 JTextArea text1,text3;//定義文本框text1,text3 16 JPasswordField password=new JPasswordField();//定義密碼文本框 17 String s="";//定義驗(yàn)證碼按鈕上的字符串 18 Random ran=new Random(); 19 String user_z,user_m; 20 public static void main(String[] args) //主函數(shù) 21 { 22 Denglujiemian p=new Denglujiemian();//Denglujiemian類的實(shí)例化 23 p.go();//對(duì)象p調(diào)用go函數(shù) 24 } 25 public void go()//定義go函數(shù) 26 { 27 frame=new JFrame("登錄界面");//建立frame并命名為"登錄界面" 28 text1=new JTextArea(20,100);//建立text1文本框并定義大小為20,100 29 password=new JPasswordField();//建立password密碼文本框 30 text3=new JTextArea(20,100);//建立text3文本框并定義大小為20,100 31 button3=new JButton();//建立驗(yàn)證碼按鈕 32 button1=new JButton("登錄");//建立登錄按鈕并定義為"登錄" 33 button2=new JButton("快速注冊(cè)");//建立快速注冊(cè)按鈕并定義為"快速注冊(cè)" 34 for(int i=0;i<6;i++)//產(chǎn)生驗(yàn)證碼,需循環(huán)6次 35 { 36 int x=ran.nextInt(3);//產(chǎn)生0~2三個(gè)中的隨機(jī)數(shù),分別對(duì)應(yīng)數(shù)字,小寫字母,大寫字母 37 switch(x)//switch語句判斷 38 { 39 case 0://x為0時(shí) 40 { 41 int q=ran.nextInt(10);//產(chǎn)生q為0~9的隨機(jī)數(shù) 42 s=s+q;//驗(yàn)證碼字符串加上一個(gè) 43 continue;//跳出switch小循環(huán) 44 } 45 case 1://x為1時(shí) 46 { 47 char w=(char) (ran.nextInt(26)+65);//產(chǎn)生q為65~91的隨機(jī)數(shù),并強(qiáng)制轉(zhuǎn)換成ASCII表上的字符(小寫字母) 48 s=s+w;//驗(yàn)證碼字符串加上一個(gè) 49 continue;//跳出switch小循環(huán) 50 } 51 case 2://x為2時(shí) 52 { 53 char e=(char) (ran.nextInt(26)+97);//產(chǎn)生q為97~126的隨機(jī)數(shù),并強(qiáng)制轉(zhuǎn)換成ASCII表上的字符(大寫字母) 54 s=s+e;//驗(yàn)證碼字符串加上一個(gè) 55 continue;//跳出switch小循環(huán) 56 } 57 } 58 } 59 Container contentPane=frame.getContentPane();//定義容器 60 contentPane.setLayout(null);//不設(shè)置固定的布局 61 contentPane.setBackground(Color.GRAY);//設(shè)置背景為灰色 62 //大容器里把所有組件都添加進(jìn)去 63 contentPane.add(label1); 64 contentPane.add(label2); 65 contentPane.add(label3); 66 contentPane.add(text1); 67 contentPane.add(password); 68 contentPane.add(text3); 69 contentPane.add(button3); 70 contentPane.add(button1); 71 contentPane.add(button2); 72 //分別設(shè)置組件的位置和長(zhǎng)寬 73 label1.setBounds(10,10,60,30); 74 label2.setBounds(10,40,60,30); 75 label3.setBounds(10,70,60,30); 76 text1.setBounds(70,15,200,20); 77 password.setBounds(70,45,200,20); 78 text3.setBounds(70,75,110,20); 79 button3.setBounds(185,75,85,20); 80 button1.setBounds(100,100,100,20); 81 button2.setBounds(100,130,100,20); 82 button3.setText(s);//將系統(tǒng)生成的6位驗(yàn)證碼設(shè)置成驗(yàn)證碼按鈕的名稱 83 frame.setSize(300,200);//設(shè)置面板的大小 84 frame.setResizable(false);//設(shè)置面板大小不可修改 85 frame.setVisible(true);//顯示面板 86 button3.addActionListener(new ActionListener()//驗(yàn)證碼按鈕使用匿名類添加事件 87 { 88 public void actionPerformed(ActionEvent e)//ActionListener接口中的函數(shù)重寫 89 { 90 s="";//定義空字符串 91 for(int i=0;i<6;i++)//產(chǎn)生驗(yàn)證碼,需循環(huán)6次 92 { 93 int x=ran.nextInt(3);//產(chǎn)生0~2三個(gè)中的隨機(jī)數(shù),分別對(duì)應(yīng)數(shù)字,小寫字母,大寫字母 94 switch(x)//switch語句判斷 95 { 96 case 0://x為0時(shí) 97 { 98 int q=ran.nextInt(10);//產(chǎn)生q為0~9的隨機(jī)數(shù) 99 s=s+q;//驗(yàn)證碼字符串加上一個(gè) 100 continue;//跳出switch小循環(huán) 101 } 102 case 1://x為1時(shí) 103 { 104 char w=(char) (ran.nextInt(26)+65);//產(chǎn)生q為65~91的隨機(jī)數(shù),并強(qiáng)制轉(zhuǎn)換成ASCII表上的字符(小寫字母) 105 s=s+w;//驗(yàn)證碼字符串加上一個(gè) 106 continue;//跳出switch小循環(huán) 107 } 108 case 2://x為2時(shí) 109 { 110 char g=(char) (ran.nextInt(26)+97);//產(chǎn)生q為97~126的隨機(jī)數(shù),并強(qiáng)制轉(zhuǎn)換成ASCII表上的字符(大寫字母) 111 s=s+g;//驗(yàn)證碼字符串加上一個(gè) 112 continue;//跳出switch小循環(huán) 113 } 114 } 115 } 116 button3.setText(s);//字符串s設(shè)置為驗(yàn)證碼按鈕的名稱 117 } 118 }); 119 button1.addActionListener(new ActionListener()//登錄按鈕使用匿名類添加事件 120 { 121 public void actionPerformed(ActionEvent e)//ActionListener接口中的函數(shù)重寫 122 { 123 String s1=text1.getText();//得到登錄名處的文本框的內(nèi)容 124 char[] p=password.getPassword(); 125 String s2=new String(p);//得到密碼處的文本框的內(nèi)容 126 String s3=text3.getText();//得到驗(yàn)證碼處的文本框的內(nèi)容 if((s1.equals("20163493")&&s2.equals("20163493")&&s3.equals(s))|| (s1.equals(user_z)&&s2.equals(user_m)&&s3.equals(s)))//判斷字符串是否相等 127 JOptionPane.showMessageDialog(frame,"登錄成功!","登錄信息",JOptionPane.PLAIN_MESSAGE);//如果登錄名密碼驗(yàn)證碼都正確,彈出登錄成功 128 else if((s1.equals("20163493")&&!s2.equals("20163493"))||(s1.equals(user_z)&&!s2.equals(user_m)))//判斷字符串是否相等 129 JOptionPane.showMessageDialog(frame,"用戶名或密碼有誤!","登錄信息",JOptionPane.ERROR_MESSAGE);//如果登錄名驗(yàn)證碼都正確,密碼不正確,彈出用戶名或密碼有誤 130 else if((!s1.equals("20163493"))&&(!s1.equals(user_z)))//判斷字符串是否相等 131 JOptionPane.showMessageDialog(frame,"該用戶名不存在!","登錄信息",JOptionPane.ERROR_MESSAGE);//如果登錄名不正確,彈出該用戶名不存在 132 else if((s1.equals("20163493")&&s2.equals("20163493")&&!s3.equals(s))||(s1.equals(user_z)&&s2.equals(user_m)&&!s3.equals(s)))//判斷字符串是否相等 133 JOptionPane.showMessageDialog(frame,"驗(yàn)證碼錯(cuò)誤!","登錄信息",JOptionPane.ERROR_MESSAGE);//如果登錄名密碼都正確,驗(yàn)證碼不正確,彈出驗(yàn)證碼錯(cuò)誤 134 } 135 }); 136 button2.addActionListener(new ActionListener()//快速注冊(cè)按鈕使用匿名類添加事件 137 { 138 public void actionPerformed(ActionEvent e)//ActionListener接口中的函數(shù)重寫 139 { 140 user_z=text1.getText();//得到登錄名處的文本框的內(nèi)容 141 char[] p=password.getPassword(); 142 user_m=new String(p);//得到密碼處的文本框的內(nèi)容 143 JOptionPane.showMessageDialog(frame,"注冊(cè)成功!","注冊(cè)信息",JOptionPane.PLAIN_MESSAGE);//讀入登錄名密碼驗(yàn)證碼,彈出注冊(cè)成功 144 } 145 }); 146 } 147 }

?

實(shí)現(xiàn)結(jié)果截圖:

  ?

  ?

  ?

  ?

  

  ?

實(shí)驗(yàn)總結(jié):

  對(duì)于實(shí)現(xiàn)不同功能的按鈕來說,使用匿名類的方式添加事件比較方便,不易出現(xiàn)錯(cuò)誤。

[實(shí)驗(yàn)任務(wù)五:猜數(shù)字]

程序設(shè)計(jì)思想:

? 當(dāng)程序開始執(zhí)行時(shí),系統(tǒng)自動(dòng)生成一個(gè)1~100的隨機(jī)整數(shù)。引用do while語句使用戶循環(huán)輸入一個(gè)猜測(cè)的數(shù)值,將其由字符串類型轉(zhuǎn)換成整型數(shù)值并與系統(tǒng)生成數(shù)進(jìn)行判斷。如果大于,則彈出消息框提示“猜大了!”,否則,則彈出消息框提示“猜小了!”。

  循環(huán)此操作直到用戶猜的數(shù)值和系統(tǒng)生成數(shù)相等,跳出循環(huán),彈出消息框提示猜到正確數(shù)值,程序退出。

程序流程圖:

  

程序源代碼:

1 package caishuzi; 2 3 import java.util.Random; 4 5 import javax.swing.*; 6 7 public class Caishuzi//定義Caishuzi類 8 9 { 10 public static void main(String[] args)//主函數(shù) 11 { 12 String s;//定義s為要輸入的猜測(cè)數(shù)值 13 int d;//定義d為字符串s轉(zhuǎn)換為的整型數(shù)值 14 Random random=new Random();//隨機(jī)數(shù) 15 int t=random.nextInt(100)%(100)+1;//生成t為1~100的隨機(jī)整數(shù) 16 do//do while循環(huán)語句輸入并判斷 17 { 18 s=JOptionPane.showInputDialog( "請(qǐng)輸入您猜測(cè)的數(shù)值:" );//彈出消息框,進(jìn)行猜測(cè)數(shù)值的輸入 19 d=Integer.parseInt(s);//字符串s轉(zhuǎn)化為整型數(shù)值d 20 if(d>t)//如果猜測(cè)數(shù)值大于系統(tǒng)隨機(jī)數(shù) 21 JOptionPane.showMessageDialog(null,"猜大了!", 22 "Results",JOptionPane.PLAIN_MESSAGE );//彈出消息框提示“猜大了” 23 else if(d<t)//如果猜測(cè)數(shù)值小于系統(tǒng)隨機(jī)數(shù) 24 JOptionPane.showMessageDialog(null,"猜小了!", 25 "Results",JOptionPane.PLAIN_MESSAGE );//彈出消息框提示“猜小了” 26 } 27 while(d!=t);//滿足循環(huán)的條件 28 JOptionPane.showMessageDialog(null,"恭喜,正確猜出數(shù)字!"+t, 29 "Results",JOptionPane.PLAIN_MESSAGE );//彈出消息框提示猜出正確數(shù)字 30 } 31 }

?

運(yùn)行結(jié)果截圖:

  

  ?

  ?

  ?

  ?

  ?

編譯錯(cuò)誤分析:

  無編譯錯(cuò)誤出現(xiàn)

轉(zhuǎn)載于:https://www.cnblogs.com/guobin-/p/7629289.html

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的实验任务四:登录界面、实验任务五:猜数字的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。