最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java GUI實現(xiàn)ATM機系統(tǒng)(3.0版)

 更新時間:2022年05月27日 11:32:53   作者:點丶錯了。。  
這篇文章主要為大家詳細介紹了java GUI實現(xiàn)ATM機系統(tǒng)(3.0版),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

寫個小項目了解一下GUI。用java GUI實現(xiàn)銀行ATM自動取款機,實現(xiàn)登錄界面、登錄成功界面、各個操作功能實現(xiàn)界面。

用java GUI實現(xiàn)一個ATM機系統(tǒng)(3.0版)

設(shè)計思路

設(shè)計兩個包(bank包,atmJFrame包)

1、bank包:

(1)、ATM類:實現(xiàn)用戶各種操作;
(2)、Data類:從user文件中獲取所有用戶信息,并返回要找的用戶,再將修改完之后的用戶信息寫入user文件中;
(3)、user文件儲存所有用戶信息。

2、atmJFrame包:

(1)、MyJFrame類:自己創(chuàng)建的界面父類;
(2)、LoginJFrame:登錄界面;
(3)、WorkingJFrame:登錄成功后顯示的功能界面;
(4)、CentreJFrame:中間窗口,存錢、取錢、轉(zhuǎn)賬、修改密碼界面的父類;
(5)、QuMoneyJFrame:取錢界面;
(6)、CunMoneyJFrame:存錢界面;
(7)、GiveMoneyJFrame:轉(zhuǎn)賬界面;
(8)、ChangePasswordJFrame:修改密碼界面。

源碼

bank包

package bank;

//ATM類
public class ATM {
 //有一個類操作數(shù)據(jù)的類
 private Data data = new Data();
 //ATM機里的數(shù)據(jù)
 private String userName;//用戶賬號且唯一
 private String userPassword;//用戶密碼
 private double userMoney;//用戶賬戶里的錢
 private String user;//使用該臺ATM機的用戶全部信息
 private String antherUser;//被轉(zhuǎn)賬用戶

 //登錄方法
 public boolean login(String userNameString,String userPassword1){
 boolean b= false;
 String x = data.backUser(userNameString);
 //判斷賬戶是否存在
 if(!x.equals("null")){
  user = x;//獲取用戶所有信息
  String[] str = user.split("\\*");//將用戶信息分割
  userName = str[0];//用戶名
  userPassword = str[1];//用戶密碼
  userMoney = Double.parseDouble(str[2]);//用戶余額
  //密碼正確
  if(userPassword.equals(userPassword1))
  b = true;
 }
 return b;
 }
 //獲取賬戶余額
 public Double getMoney1(){
 return userMoney;
 }
 //存錢
 public boolean saveMoney(Double money1){
 boolean b = false;
 if(money1%100 == 0) { //如果存的錢正確
  userMoney = userMoney + money1;//存上
  b = true;
 }
 return b;
 }
 //取錢
 public boolean quMoney(Double money1){
 boolean b = false;
 if(money1%100 == 0 && money1 <= userMoney){
  userMoney = userMoney - money1;
  b = true;
 }
 return b;
 }
 //只判斷用戶賬戶是否存在
 public boolean anotherUser(String userName1){
 boolean b = false;
 String inUserName = userName1;
 String str = data.backUser(inUserName);
 //如果該賬戶存在
 if(!str.equals("null")) {
  antherUser = str;//獲取被轉(zhuǎn)賬賬戶所有信息
  b = true;
 }
 return b;
 }
 //進行轉(zhuǎn)賬
 public void giveMoney(Double money1){
 String[] str1 = antherUser.split("\\*");//分割
 Double x = Double.parseDouble(str1[2]);//獲取被轉(zhuǎn)賬賬戶余額
 x = x + money1;
 userMoney = userMoney - money1;
 antherUser = changeUser(str1[0], str1[1], x);//改變被轉(zhuǎn)賬賬戶信息
 data.saveData(antherUser,false);//將用戶信息傳給Data類保存被轉(zhuǎn)賬賬戶信息
 }
 //修改密碼實現(xiàn)
 public void changePassword(String newPassword){
 userPassword = newPassword;
 }
 //辦完業(yè)務(wù)后修改用戶信息
 private String changeUser(String n,String w,Double d){
 String str = n + "*" + w + "*" + d;
 return str;
 }
 //辦完所有業(yè)務(wù)
 public void over(){
 user = changeUser(userName,userPassword,userMoney);
 data.saveData(user,true);
 }
}
package bank;

import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

//數(shù)據(jù)類是文件和ATM機之間操作用戶信息的橋梁
public class Data {
 //Map儲存數(shù)據(jù)庫里所有用戶的全部信息
 Map<String,String> userData = new HashMap();
 //返回用戶的信息
 private String user;

 //創(chuàng)建數(shù)據(jù)類加載所有用戶信息
 public Data(){
 getUsers();
 }

 private void getUsers(){
 String str;
 String[] string;
 File file = new File("src\\bank\\user");
 FileReader fileReader = null;
 BufferedReader bufferedReader = null;
 try{
  fileReader = new FileReader(file);
  bufferedReader = new BufferedReader(fileReader);
  while((str = bufferedReader.readLine())!=null){
  string = str.split("\\*",2);
  userData.put(string[0],string[1]);
  }
 }catch(Exception e){
  e.printStackTrace();
  if((fileReader!=null)&&(bufferedReader!=null)){
  try {
   bufferedReader.close();
   fileReader.close();
  } catch (IOException e1) {
   e1.printStackTrace();
  }
  }
 }
 }

 //告訴用戶名,如果找到返回該用戶所有信息,沒找到返回null
 public String backUser(String userName){
 String str = "null";
 if(userData.containsKey(userName))
  str = userName + "*" + userData.get(userName);
 user = str;
 return user;
 }
 //修改用戶數(shù)據(jù)并儲存在userData圖里
 public void saveData(String user,boolean aBoolean){
 String[] string = user.split("\\*",2);
 userData.remove(string[0]);
 userData.put(string[0],string[1]);
 if(aBoolean)//判斷用戶是否操作結(jié)束
  changeUser();
 }

 //用戶操作完,將userData里所有的用戶再寫入文件里
 private void changeUser(){
 String str,string="";
 Set<String> keys = userData.keySet();
 for(String key : keys){
  str = key + "*" + userData.get(key);
  string = string + str + "\n";
 }
 File file = new File("src\\bank\\user");
 FileWriter out = null;
 try {
  out = new FileWriter(file);
  out.write(string);
  out.flush();
 } catch (IOException e) {
  e.printStackTrace();
 }finally{
  if(out != null){
  try {
   out.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
  }
 }
 }
}
//user文件
//需要注意文件位置"src\\bank\\user"
李四*234*7500.0
張三*123*13100.0
王五*123*1100.0

atmJFrame包

package atmJFrame.myJFrame;

import bank.ATM;

import javax.swing.*;
import java.awt.*;

//自己創(chuàng)造的界面的父類
public class MyJFrame extends JFrame {
 //設(shè)置字體供子類使用
 public static final Font FONT_SIZE_10 = new Font("宋體",Font.PLAIN,18);
 public static final Font FONT_SIZE_20 = new Font("宋體",Font.PLAIN,20);
 public static final Font FONT_SIZE_25 = new Font("宋體",Font.PLAIN,25);
 //給一個靜態(tài)公共不可改變的ATM對象作為屬性,供子類使用
 public static final ATM atm = new ATM();
 //創(chuàng)建窗體
 public MyJFrame(String title){
 super(title);
 //設(shè)置窗體不可改變
 setResizable(false);
 //設(shè)置窗體大小
 setSize(600,600);
 //設(shè)置窗體居中
 setLocationRelativeTo(null);
 }
 //無參構(gòu)造,創(chuàng)建無標題窗體
 public MyJFrame(){
 this("");
 }
 //設(shè)置彈窗方法供子類使用(傳入字符串并顯示出)
 protected void showMessageDialog(String str){
 JOptionPane.showMessageDialog(this,str);
 }
}
package atmJFrame.myJFrame;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//登錄界面繼承MyJFrame
public class LoginJFrame extends MyJFrame {
 public LoginJFrame(){
 super("歡迎使用ATM機");
 //設(shè)置窗體可關(guān)閉
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 //設(shè)置組件
 init();
 //界面可視化
 setVisible(true);
 }
 //初始化界面
 private void init(){
 //創(chuàng)建面板對象,并定義為空布局
 JPanel jp = new JPanel(null);
 //添加標簽
 JLabel jl1 = new JLabel("賬號:");
 JLabel jl2 = new JLabel("密碼:");
 //設(shè)置標簽字體
 jl1.setFont(FONT_SIZE_20);
 jl2.setFont(FONT_SIZE_20);
 //設(shè)置標簽在面板中的位置
 jl1.setBounds(100,100,70,70);
 jl2.setBounds(100,250,70,70);
 //添加文本框
 JTextField jtf = new JTextField(20);
 //添加密碼文本框
 JPasswordField jpf = new JPasswordField(20);
 //設(shè)置文本框位置
 jtf.setBounds(200,115,200,40);
 jpf.setBounds(200,265,200,40);
 //添加按鈕
 JButton jb = new JButton("登錄");
 //設(shè)置按鈕文字大小
 jb.setFont(FONT_SIZE_20);
 //設(shè)置按鈕位置及大小
 jb.setBounds(250,400,100,50);
 //設(shè)置面板背景顏色
 jp.setBackground(Color.YELLOW);
 //內(nèi)部類進行事件處理
 jb.addActionListener(new ActionListener() {
  @Override
  public void actionPerformed(ActionEvent e) {
  //獲取輸入的賬號和密碼
  String userName = jtf.getText();
  String userPassword = new String(jpf.getPassword());
  //驗證是否正確
  boolean aBoolean = atm.login(userName,userPassword);
  if(aBoolean){
   //登錄成功
   dispose();//關(guān)閉登錄界面
   //打開功能界面
   new WorkingJFrame();
  }
  else
   showMessageDialog("賬號或密碼錯誤");//調(diào)用父類彈窗方法
  }
 });
 //添加組件
 jp.add(jl1);
 jp.add(jtf);
 jp.add(jl2);
 jp.add(jpf);
 jp.add(jb);
 //窗體添加面板
 add(jp);
 }
 public static void main(String[] args) {
 new LoginJFrame();//先創(chuàng)建登錄界面
 }
}
package atmJFrame.myJFrame;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//功能界面
public class WorkingJFrame extends MyJFrame {
 public WorkingJFrame(){
 super("功能界面");
 init();
 setVisible(true);
 }
 //初始化功能界面
 private void init(){
 //設(shè)置第一個面板對象
 JPanel jp1 = new JPanel();
 //創(chuàng)建標簽,將標簽添加到第一個面板上
 JLabel jb = new JLabel("請選擇要進行的操作:");
 jb.setFont(FONT_SIZE_25);//設(shè)置標簽字體大小
 jp1.add(jb);
 jp1.setBackground(Color.CYAN);
 //將第一個面板添加到窗體上方(JFrame窗體是邊界布局)
 add(jp1, BorderLayout.NORTH);

 //創(chuàng)建第二個面板對象(空布局,自己設(shè)置按鈕位置及大?。?,然后將按鈕添加
 JPanel jp2 = new JPanel(null);
 //字符串數(shù)組存儲各個按鈕名字,然后循環(huán)設(shè)置按鈕名字
 String[] str = {"1、余額查詢","2、取錢","3、存錢","4、轉(zhuǎn)賬","5、修改密碼","6、退出系統(tǒng)"};
 //int二維數(shù)組儲存各個按鈕位置及大小信息,循環(huán)設(shè)置
 int[][] xy = new int[][]{{50,100,200,50},{350,100,200,50},{50,200,200,50},{350,200,200,50},{50,300,200,50},{350,300,200,50}};
 for(int i = 0;i < str.length;i ++){
  JButton jButton = new JButton(str[i]);//創(chuàng)建按鈕
  jButton.setFont(FONT_SIZE_20);//設(shè)置按鈕字體大小
  jButton.setBounds(xy[i][0],xy[i][1],xy[i][2],xy[i][3]);//設(shè)置按鈕位置及大小
  jButton.addActionListener(listener);//按鈕注冊監(jiān)聽器
  jp2.add(jButton);//將按鈕添加
 }
 //設(shè)置jp2背景顏色
 jp2.setBackground(Color.GRAY);
 //將第二個面板添加到窗體(JFrame窗體中間)
 add(jp2);
 }
 //創(chuàng)建事件監(jiān)聽器
 private ActionListener listener = new ActionListener() {
 @Override
 public void actionPerformed(ActionEvent e) {
  String actionCommand = e.getActionCommand();//獲取按鈕上的字
  //switch選擇功能,且每次功能結(jié)束回到該界面,關(guān)閉已操作完的功能界面
  switch(actionCommand){
  case "1、余額查詢":
   getMoney();
   break;
  case "2、取錢":
   quMoney();
   break;
  case "3、存錢":
   cunMoney();
   break;
  case "4、轉(zhuǎn)賬":
   giveMoney();
   break;
  case "5、修改密碼":
   changePassword();
   break;
  case "6、退出系統(tǒng)":
   over();
   break;
  }
 }
 };
 //查詢余額功能
 private void getMoney(){
 showMessageDialog("您的賬戶余額為:" + atm.getMoney1());//調(diào)用父類方法彈窗
 }
 //取錢功能
 private void quMoney(){
 new QuMoneyJFrame();//創(chuàng)建取錢界面
 dispose();//關(guān)閉該界面
 }
 //存錢功能
 private void cunMoney(){
 new CunMoneyJFrame();
 dispose();
 }
 //轉(zhuǎn)賬功能
 private void giveMoney(){
 new GiveMoneyJFrame();
 dispose();
 }
 //修改密碼功能
 private void changePassword(){
 new ChangePasswordJFrame();
 dispose();
 }
 //退出系統(tǒng)功能
 private void over(){
 atm.over();//調(diào)用方法操作文件
 dispose();
 }
}
package atmJFrame.myJFrame;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

//中間窗口,存錢、取錢、轉(zhuǎn)賬、修改密碼界面的父類
public class CentreJFrame extends MyJFrame {
 //空布局面板,自己設(shè)置組件位置及大小
 protected JPanel jp = new JPanel(null);
 //輸入金額標簽
 protected JLabel jl = new JLabel("請輸入金額:");
 //輸入金額文件框
 protected JTextField jtf = new JTextField(20);
 //確認、取消按鈕
 protected JButton jb1 = new JButton("確認");
 protected JButton jb2 = new JButton("取消");

 //轉(zhuǎn)賬時轉(zhuǎn)賬賬號標簽
 protected JLabel jLabel = new JLabel("請輸入轉(zhuǎn)賬賬號:");
 //轉(zhuǎn)賬時轉(zhuǎn)賬賬號文本框
 protected JTextField jTextField = new JTextField(20);

 //修改密碼時新密碼標簽
 protected JLabel jLabelCP = new JLabel("請輸入新密碼(只能為數(shù)字):");
 //修改密碼時新密碼文本框
 protected JTextField jTextFieldCP = new JTextField(20);

 //提醒用戶輸入金額為100的倍數(shù)
 private JLabel jle = new JLabel("( 提示:只能輸入100的倍數(shù) )");

 public CentreJFrame(String str){
 super(str);
 //判斷要進行的操作
 if(str.equals("轉(zhuǎn)賬"))
  init1();
 else if(str.equals("修改密碼"))
  init2();
 else
  init();
 one();//最后調(diào)用共有
 }
 //取錢和取錢特有組件
 private void init(){
 //輸入金額標簽,設(shè)置字體,位置及大小
 jl.setFont(FONT_SIZE_25);
 jl.setBounds(100,100,200,100);
 //輸入金額文本框
 jtf.setBounds(300,250,200,50);
 //添加輸入金額標簽和輸入金額文本框
 jp.add(jl);
 jp.add(jtf);
 setJLE();
 }
 //轉(zhuǎn)賬特有組件
 private void init1(){
 init();
 //輸入賬戶標簽
 jLabel.setFont(FONT_SIZE_25);
 jLabel.setBounds(100,10,200,40);
 //輸入賬戶文本
 jTextField.setBounds(300,80,200,50);
 //添加輸入賬戶標簽和輸入賬戶文本
 jp.add(jLabel);
 jp.add(jTextField);
 }
 //修改密碼特有組件
 private void init2(){
 //輸入新密碼標簽
 jLabelCP.setFont(FONT_SIZE_25);
 jLabelCP.setBounds(50,100,400,70);
 //輸入新密碼文本框
 jTextFieldCP.setBounds(300,215,200,40);
 //添加輸入新密碼標簽和輸入新密碼文本框
 jp.add(jLabelCP);
 jp.add(jTextFieldCP);
 }
 //共有組件及操作
 private void one(){
 //按鈕設(shè)置
 jb1.setFont(FONT_SIZE_20);
 jb2.setFont(FONT_SIZE_20);
 jb1.setBounds(300,350,100,50);
 jb2.setBounds(450,350,100,50);
 jp.add(jb1);
 jp.add(jb2);
 jp.setBackground(Color.GREEN);
 jb1.addActionListener(listener);
 jb2.addActionListener(listener);
 //添加到窗體
 add(jp);
 setVisible(true);
 }

 //設(shè)置提示
 private void setJLE(){
 jle.setFont(FONT_SIZE_10);
 jle.setBounds(100,180,300,50);
 jp.add(jle);
 }

 //創(chuàng)建監(jiān)聽器
 private ActionListener listener = new ActionListener() {
 @Override
 public void actionPerformed(ActionEvent e) {//按鈕被點擊后
  String actionCommand = e.getActionCommand();//獲取按鈕上的字
  switch(actionCommand){
  case "確認":
   change();
   break;
  case "取消":
   new WorkingJFrame();//創(chuàng)建功能界面
   dispose();//關(guān)閉此界面
   break;
  }
 }
 };
 //點擊確認按鈕執(zhí)行的操作,子類重寫覆蓋實現(xiàn)各自功能
 protected void change(){
 }

 //正則表達式判斷輸入是否為數(shù)字
 protected boolean isNumber(String str){
 Pattern pattern = Pattern.compile("[0-9]*");
 Matcher isNum = pattern.matcher(str);
 if(!isNum.matches())
  return false;
 return true;
 }
}
package atmJFrame.myJFrame;

//取錢界面
public class QuMoneyJFrame extends CentreJFrame {
 public QuMoneyJFrame(){
 super("取錢");
 }
 protected void change(){
 String s = jtf.getText();
 if(isNumber(s)){
  Double money = Double.parseDouble(s);
  boolean b = atm.quMoney(money);
  if(b){
  showMessageDialog("請收好您的錢\n您的賬戶余額為:" + atm.getMoney1());
  }
  else
  showMessageDialog("您輸入有誤" );
 }
 else
  showMessageDialog("您輸入有誤" );
 jtf.setText("");
 }

}
package atmJFrame.myJFrame;

//存錢界面
public class CunMoneyJFrame extends CentreJFrame {
 public CunMoneyJFrame(){
 super("存錢");
 }
 protected void change(){
 String s = jtf.getText();
 if(isNumber(s)){
  Double money = Double.parseDouble(s);
  boolean b = atm.saveMoney(money);
  if(b)
  showMessageDialog("您的錢錢已存入\n您的賬戶余額為:" + atm.getMoney1());
  else
  showMessageDialog("您輸入有誤" );
 }
 else
  showMessageDialog("您輸入有誤" );
 jtf.setText("");
 }

}
package atmJFrame.myJFrame;

//轉(zhuǎn)賬界面
public class GiveMoneyJFrame extends CentreJFrame {
 public GiveMoneyJFrame(){
 super("轉(zhuǎn)賬");
 }
 protected void change(){
 String s = jTextField.getText();
 boolean b = atm.anotherUser(s);
 if(b){
  //獲取輸入金額
  String s1 = jtf.getText();
  if(isNumber(s1)){//如果輸入是數(shù)字
  Double money = Double.parseDouble(s1);
  atm.giveMoney(money);
  showMessageDialog("錢已轉(zhuǎn)入\n您的賬戶余額為:" + atm.getMoney1());
  }
  else
  showMessageDialog("您輸入有誤" );
 }
 else
  showMessageDialog("您輸入有誤" );
 new WorkingJFrame();//創(chuàng)建功能界面
 dispose();//關(guān)閉此界面
 }
}
package atmJFrame.myJFrame;

//修改密碼界面
public class ChangePasswordJFrame extends CentreJFrame{
 public ChangePasswordJFrame(){
 super("修改密碼");
 }

 protected void change(){
 String s = jTextFieldCP.getText();
 if(isNumber(s)){
  atm.changePassword(s);
  showMessageDialog("密碼修改成功");
 }
 else
  showMessageDialog("您輸入有誤" );
 new WorkingJFrame();//創(chuàng)建功能界面
 dispose();//關(guān)閉此界面
 }

}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java使用JDBC連接數(shù)據(jù)庫的實現(xiàn)方法

    Java使用JDBC連接數(shù)據(jù)庫的實現(xiàn)方法

    這篇文章主要介紹了Java使用JDBC連接數(shù)據(jù)庫的實現(xiàn)方法,包括了詳細的加載步驟以及完整實現(xiàn)示例,需要的朋友可以參考下
    2014-09-09
  • Java使用正則表達式刪除所有HTML標簽的方法示例

    Java使用正則表達式刪除所有HTML標簽的方法示例

    這篇文章主要介紹了Java使用正則表達式刪除所有HTML標簽的方法,結(jié)合完整實例形式分析了java針對HTML頁面元素script標簽、style標簽、html標簽等的正則匹配相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • java引用jpython的方法示例

    java引用jpython的方法示例

    這篇文章主要介紹了java引用jpython的方法,結(jié)合實例形式分析了java引用jpython及相關(guān)使用技巧,需要的朋友可以參考下
    2016-11-11
  • 使用graalvm為帶有反射功能的java代碼生成native?image的示例詳解

    使用graalvm為帶有反射功能的java代碼生成native?image的示例詳解

    graalvm讓native鏡像支持反射的關(guān)鍵是利用json提前告訴它哪些類的哪些方法會被反射調(diào)用,然后它就能力在運行時支持反射了,這篇文章主要介紹了如何使用graalvm為帶有反射功能的java代碼生成native?image,需要的朋友可以參考下
    2024-02-02
  • Java基本概念監(jiān)視器實習(xí)原理解析

    Java基本概念監(jiān)視器實習(xí)原理解析

    這篇文章主要介紹了Java基本概念監(jiān)視器實習(xí)原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • 深入解析反編譯字節(jié)碼文件中的代碼邏輯JVM中的String操作

    深入解析反編譯字節(jié)碼文件中的代碼邏輯JVM中的String操作

    這篇文章主要介紹了深入解析反編譯字節(jié)碼文件中的代碼邏輯JVM中的String操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • java多線程編程必備volatile與synchronized深入理解

    java多線程編程必備volatile與synchronized深入理解

    這篇文章主要介紹了java多線程編程必備volatile與synchronized的深入理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 詳解Java利用深度優(yōu)先遍歷解決迷宮問題

    詳解Java利用深度優(yōu)先遍歷解決迷宮問題

    深度優(yōu)先遍歷:深度優(yōu)先遍歷是圖論中的經(jīng)典算法。其利用了深度優(yōu)先搜索算法可以產(chǎn)生目標圖的相應(yīng)拓撲排序表,采用拓撲排序表可以解決很多相關(guān)的圖論問題,如最大路徑問題等等。本文將利用深度優(yōu)先遍歷解決迷宮問題,感興趣的可以了解一下
    2022-02-02
  • Java實戰(zhàn)之用Spring開發(fā)條形碼和驗證碼

    Java實戰(zhàn)之用Spring開發(fā)條形碼和驗證碼

    這篇文章主要介紹了Java實戰(zhàn)之用Spring開發(fā)條形碼和驗證碼,文中有非常詳細的代碼示例,對正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Java實現(xiàn)英文句子中的單詞順序逆序輸出的方法

    Java實現(xiàn)英文句子中的單詞順序逆序輸出的方法

    這篇文章主要介紹了Java實現(xiàn)英文句子中的單詞順序逆序輸出的方法,涉及java字符串遍歷、判斷、截取、輸出等相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01

最新評論

贺兰县| 襄汾县| 蛟河市| 社旗县| 普陀区| 嘉义县| 锡林郭勒盟| 靖远县| 永昌县| 城市| 静安区| 泌阳县| 揭阳市| 台北县| 安平县| 古交市| 申扎县| 枣阳市| 上高县| 安义县| 荥阳市| 冕宁县| 娄底市| 讷河市| 承德县| 紫阳县| 桂平市| 孟津县| 清流县| 乌苏市| 新邵县| 双江| 荣昌县| 怀仁县| 南华县| 连江县| 车致| 洪江市| 丽水市| 青川县| 吴桥县|