准备工作

1.将jar包导入IDEA 的external libraries中并复制到对应project的和src同级的lib目录下。


这里选择File>Project Structure弹出对应页面,选择Export上的+ >jars or directions>找到对应.jar文件选择ok即可。这时,.jar文件导入external libraries,再在src同级建立lib(directory),将external libraries的jar文件复制粘贴到lib即可。至此,JDBC文件配置工作完成。

2.导入junit用于单元测试:和上述流程完全相同。

正确效果图。

系统架构

本项目分为用户模块和管理员模块,其中用户模块包含1.用户查询(按卡号和密码)2.修改信息(分别修改姓名,年龄等信息)3.转账4.转账记录查询5.外币兑换;管理员模块包含1.用户查询(查询所有数据和按姓名查询)2.增加用户3.删除用户。
这两个模块 均设置登录检查,用户模块根据控制台输入的卡号和密码,在数据库进行遍历,如果有该信息则登陆成功,否则失败。
数据库设计部分分为user 和 event两张表,user表记录用户个人信息,event表记录转账记录。
建包如图:


建表如图
user表:

event表:

代码展示

菜单栏:

主菜单

`package com.suoer.bankms.main;public class MainMenu {public static void mainMenu(){System.out.println("*******欢迎使用银行金融管理系统********");System.out.println("*******声明:本银行立足于美利坚合众国,受北美法律保护,请您放心使用。");System.out.println("角色选择");System.out.println("1.管理员");System.out.println("2.个人用户");System.out.println("3.退出");}
}`

管理员菜单

package com.suoer.bankms.admin.menu;public class AdminMainMenu {public static void adminMainMenu(){System.out.println("*******管理员主菜单*******");System.out.println("\t0.查询所有用户信息");System.out.println("\t1.查询用户信息");System.out.println("\t2.增加用户");System.out.println("\t3.删除用户");System.out.println("\t4.返回上级");System.out.println("\t5.退出");}
}

用户菜单

package com.suoer.bankms.user.menu;public class UserMainMenu {public static void userMainMenu(){System.out.println("*******用户主菜单*******");System.out.println("\t1.查询用户信息");System.out.println("\t2.修改部分信息");System.out.println("\t3.转账");System.out.println("\t4.转账记录查询");System.out.println("\t5.外币兑换");System.out.println("\t6.退出");}}

控制栏

主控制栏

package com.suoer.bankms.admin.controller;import com.suoer.bankms.admin.menu.AdminMainMenu;
import com.suoer.bankms.admin.service.AdminService;
import com.suoer.bankms.main.MainMenu;
import com.suoer.bankms.user.controller.UserMainMenuController;
import com.suoer.bankms.user.menu.UserMainMenu;
import com.suoer.bankms.user.service.UserService;
import com.suoer.bankms.util.OrderCheck;import java.util.Scanner;public class MainMenuController {public void deal(){Scanner sc=new Scanner(System.in);String input=sc.nextLine();int order = OrderCheck.checkOrder(input);if(order!=-1){switch (order){case 1: AdminService service=new AdminService();System.out.println("请先登录");if(service.login()){AdminMainMenu.adminMainMenu();new AdminMainMenuController().deal();}else{System.out.println("管理员名称不存在或密码错误");MainMenu.mainMenu();deal();}break;case 2:UserService service1=new UserService();System.out.println("请先登录");if(service1.login()){UserMainMenu.userMainMenu();System.out.println(service1.name+"  "+service1.password);new UserMainMenuController().deal(service1.name,service1.password);}else{System.out.println("用户名不存在或密码有误");deal();}case 3:System.exit(0);default:System.out.println("输入有误,请重新输入");break;}}}
}

管理员控制栏

package com.suoer.bankms.admin.controller;import com.suoer.bankms.admin.dao.AdminDao;
import com.suoer.bankms.admin.menu.AdminMainMenu;
import com.suoer.bankms.main.MainMenu;
import com.suoer.bankms.user.module.User;
import com.suoer.bankms.util.OrderCheck;import java.util.Scanner;public class AdminMainMenuController {public void deal(){Scanner sc=new Scanner(System.in);String input=sc.nextLine();int order= OrderCheck.checkOrder(input);if(order!=-1){switch (order){case 0:System.out.println(new AdminDao().selectAll());AdminMainMenu.adminMainMenu();deal();break;case 1:Scanner sc1=new Scanner(System.in);System.out.println("请输入用户姓名");String name=sc1.next();System.out.println(new AdminDao().selectByName(name));AdminMainMenu.adminMainMenu();deal();break;case 2:Scanner sc2=new Scanner(System.in);System.out.println("请输入id,姓名,密码,银行,账户,身份证,性别,年龄,籍贯,手机号,本地存款,外币存款");String id=String.valueOf(sc2.nextInt());String name1=sc2.next();String password=String.valueOf(sc2.nextInt());
//                    String accountname=sc2.next();String bank= sc2.next();String account=sc2.next();String IDcard=String.valueOf(sc2.nextInt());String sex=sc2.next();int age=sc2.nextInt();String native_place=sc2.next();String phone_number=String.valueOf(sc2.nextInt());int native_sum=sc2.nextInt();int foreign_sum=sc2.nextInt();new AdminDao().add(new User(id,name1,password,bank,account,IDcard,sex,age,native_place,phone_number,native_sum,foreign_sum));AdminMainMenu.adminMainMenu();deal();break;case 3:Scanner sc3=new Scanner(System.in);System.out.println("请输入待删除用户的姓名,身份证号");String name2=sc3.next();String IDcard1=String.valueOf(sc3.nextInt());System.out.println(new AdminDao().delete(name2,IDcard1));AdminMainMenu.adminMainMenu();deal();break;case 4:MainMenu.mainMenu();new MainMenuController().deal();break;case 5:System.exit(0);default:System.out.println("输入有误,请重新输入");break;}}}
}

用户控制栏

package com.suoer.bankms.user.controller;import com.sun.jdi.NativeMethodException;
import com.suoer.bankms.main.MainMenu;
import com.suoer.bankms.user.dao.UserDao;
import com.suoer.bankms.user.menu.UserMainMenu;
import com.suoer.bankms.user.module.User;
import com.suoer.bankms.util.OrderCheck;import java.util.Scanner;public class UserMainMenuController {public void deal(String name,String password){Scanner sc=new Scanner(System.in);String input=sc.nextLine();int order= OrderCheck.checkOrder(input);if(order!=-1){switch (order){case 1:Scanner newsc=new Scanner(System.in);System.out.println("请输入银行卡号 密码:");String account= String.valueOf(newsc.nextInt());String password1=String.valueOf(newsc.nextInt());User user = new UserDao().selectByNameAndPassword(account, password1);System.out.println(user);UserMainMenu.userMainMenu();deal(name,password);break;case 2:System.out.println("请选择要修改的信息:");System.out.println("1.姓名");System.out.println("2.年龄");System.out.println("3.籍贯");System.out.println("4.手机号");Scanner sc1=new Scanner(System.in);String input1 = sc1.nextLine();int order1 = OrderCheck.checkOrder(input1);if(order1!=-1){switch (order1){case 1:Scanner namesc=new Scanner(System.in);System.out.println("请输入新的姓名:");String newname=namesc.next();new UserDao().updateByNameAndPassword1(name,password,newname);UserMainMenu.userMainMenu();deal(name,password);break;case 2:Scanner agesc=new Scanner(System.in);System.out.println("请输入新的年龄:");int newage=agesc.nextInt();new UserDao().updateByNameAndPassword2(name,password,newage);UserMainMenu.userMainMenu();deal(name,password);break;case 3:Scanner nativesc=new Scanner(System.in);System.out.println("请输入新的籍贯:");String newnative=nativesc.next();new UserDao().updateByNameAndPassword3(name,password,newnative);UserMainMenu.userMainMenu();deal(name,password);break;case 4:Scanner phonesc=new Scanner(System.in);System.out.println("请输入新的手机号:");String newphone=String.valueOf(phonesc.nextInt());new UserDao().updateByNameAndPassword4(name,password,newphone);UserMainMenu.userMainMenu();deal(name,password);break;default:System.out.println("输入有误,请重新输入");break;}}System.out.println("输入有误,请重新输入");UserMainMenu.userMainMenu();deal(name,password);break;case 3:Scanner sc2=new Scanner(System.in);System.out.println("请输入你的姓名,你的密码,对方姓名,身份证号,转账金额");String myname=sc2.next();String mypassword=String.valueOf(sc2.nextInt());String hisname=sc2.next();String hisIDcard=String.valueOf(sc2.nextInt());int num=sc2.nextInt();new UserDao().transfer(myname,mypassword,hisname,hisIDcard,num);UserMainMenu.userMainMenu();deal(name,password);break;case 4:System.out.println(new UserDao().selectEvents(name));UserMainMenu.userMainMenu();deal(name,password);break;case 5:System.out.println("请输入姓名和转账金额");Scanner scanner=new Scanner(System.in);String name3=scanner.next();float amount=scanner.nextInt();System.out.println( new UserDao().exChange(name3,amount));break;case 6:System.exit(0);break;default:System.out.println("输入有误,请重新输入");break;}}}
}

登录检查(service)

管理员检查

package com.suoer.bankms.admin.service;import java.util.Scanner;public class AdminService {private static Scanner sc=new Scanner(System.in);public boolean login(){System.out.println("请输入用户名");String username=sc.nextLine();System.out.println("请输入密码");String password=sc.nextLine();if(username.equals("jack")&&password.equals("123"))return true;else return false;}
}

用户检查

package com.suoer.bankms.user.service;import com.suoer.bankms.util.DButil;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;public class UserService {private static Scanner sc=new Scanner(System.in);public String name;public String password;public boolean login(){System.out.println("请输入用户名");name=sc.nextLine();System.out.println("请输入密码");password=sc.nextLine();Connection connection= DButil.getConnection();String sql="select name,password from user";try{PreparedStatement ps=connection.prepareStatement(sql);ResultSet set = ps.executeQuery();while(set.next()){String uname = set.getString(1);String upassword=set.getString(2);if(uname.equals(name)&&upassword.equals(password))return true;}}catch (Exception e){e.printStackTrace();}return false;}
}

数据库表对应类

User类

package com.suoer.bankms.user.module;public class User {private String id;private String name;private String password;private String bank;private String account;private String IDcard;private String sex;private int age;private String native_place;private String phone_number;private int native_sum;private int foreign_sum;public User(){}public User(String id, String name, String password, String bank, String account, String IDcard,String sex,int age,   String native_place, String phone_number, int native_sum, int foreign_sum) {this.id = id;this.name = name;this.password = password;this.bank = bank;this.account = account;this.IDcard = IDcard;this.sex = sex;this.age = age;this.native_place = native_place;this.phone_number = phone_number;this.native_sum = native_sum;this.foreign_sum = foreign_sum;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getBank() {return bank;}public void setBank(String bank) {this.bank = bank;}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getIDcard() {return IDcard;}public void setIDcard(String IDcard) {this.IDcard = IDcard;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getNative_place() {return native_place;}public void setNative_place(String native_place) {this.native_place = native_place;}public String getPhone_number() {return phone_number;}public void setPhone_number(String phone_number) {this.phone_number = phone_number;}public int getNative_sum() {return native_sum;}public void setNative_sum(int native_sum) {this.native_sum = native_sum;}public int getForeign_sum() {return foreign_sum;}public void setForeign_sum(int foreign_sum) {this.foreign_sum = foreign_sum;}@Overridepublic String toString() {return "User{" +"id='" + id + '\'' +", name='" + name + '\'' +", password='" + password + '\'' +", bank='" + bank + '\'' +", account='" + account + '\'' +", IDcard='" + IDcard + '\'' +", sex='" + sex + '\'' +", age=" + age +", native_place='" + native_place + '\'' +", phone_number='" + phone_number + '\'' +", native_sum=" + native_sum +", foreign_sum=" + foreign_sum +'}';}
}

Event类

package com.suoer.bankms.user.module;import java.sql.Date;public class Event {private int id;private String name;private int account_in;private int account_out;private Date date;public Event(){}public Event(int id, String name, int account_in, int account_out, Date date) {this.id = id;this.name = name;this.account_in = account_in;this.account_out = account_out;this.date = date;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAccount_in() {return account_in;}public void setAccount_in(int account_in) {this.account_in = account_in;}public int getAccount_out() {return account_out;}public void setAccount_out(int account_out) {this.account_out = account_out;}public Date getDate() {return date;}public void setDate(Date date) {this.date = date;}@Overridepublic String toString() {return "Event{" +"id=" + id +", name='" + name + '\'' +", account_in=" + account_in +", account_out=" + account_out +", date=" + date +'}';}
}

DAO类

用户DAO

package com.suoer.bankms.user.dao;import com.suoer.bankms.user.module.Event;
import com.suoer.bankms.user.module.User;
import com.suoer.bankms.util.DButil;import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;public class UserDao {private static Connection connection= DButil.getConnection();private final float rate= (float) 6.7;//查询个人信息public User selectByNameAndPassword(String account,String password){String sql="select * from user where account = ? and password = ?";try{PreparedStatement ps=connection.prepareStatement(sql);ps.setString(1,account);ps.setString(2,password);ResultSet set = ps.executeQuery();if(set.next()){String id=set.getString(1);String name=set.getString(2);String bank=set.getString(4);String IDcard=set.getString(6);String sex=set.getString(7);int age=set.getInt(8);String native_place=set.getString(9);String phone_number=set.getString(10);int native_sum=set.getInt(11);int foreign_sum=set.getInt(12);return new User(id,name,password,bank,account,IDcard,sex,age,native_place,phone_number,native_sum,foreign_sum);}}catch (Exception e){e.printStackTrace();}return null;}//修改部分信息--姓名public boolean updateByNameAndPassword1(String name,String password,String newname){String sql="update user set name= ? where name = ? and password = ?";try{PreparedStatement ps=connection.prepareStatement(sql);ps.setString(1,newname);ps.setString(2,name);ps.setString(3,password);int i = ps.executeUpdate();if(i>0) {System.out.println("修改成功");return true;}}catch (Exception e){e.printStackTrace();}System.out.println("修改失败");return false;}//修改部分信息--年龄public boolean updateByNameAndPassword2(String name,String password,int newage){String sql="update user set age = ? where name = ? and password = ?";try{PreparedStatement ps=connection.prepareStatement(sql);ps.setInt(1,newage);ps.setString(2,name);ps.setString(3,password);int i = ps.executeUpdate();if(i>0) {System.out.println("修改成功");return true;}}catch (Exception e){e.printStackTrace();}System.out.println("修改失败");return false;}//修改部分信息--籍贯public boolean updateByNameAndPassword3(String name,String password,String newnative_place){String sql="update user set native_place = ? where name = ? and password = ?";try{PreparedStatement ps=connection.prepareStatement(sql);ps.setString(1,newnative_place);ps.setString(2,name);ps.setString(3,password);int i = ps.executeUpdate();if(i>0) {System.out.println("修改成功");return true;}}catch (Exception e){e.printStackTrace();}System.out.println("修改失败");return false;}//修改部分信息--手机号public boolean updateByNameAndPassword4(String name,String password,String phone){String sql="update user set phone_number = ? where name = ? and password = ?";try{PreparedStatement ps=connection.prepareStatement(sql);ps.setString(1,phone);ps.setString(2,name);ps.setString(3,password);int i = ps.executeUpdate();if(i>0) {System.out.println("修改成功");return true;}}catch (Exception e){e.printStackTrace();}System.out.println("修改失败");return false;}//转账public void transfer(String myname,String password,String hisname,String IDcard,int num){String sql1="update user set native_sum=native_sum-? where name = ? and password = ?";String sql2="update user set native_sum=native_sum+? where name = ? and IDcard = ?";String sql3="insert into event(name,account_in,account_out,date) values(?,?,?,?)";try{PreparedStatement ps1=connection.prepareStatement(sql1);ps1.setInt(1,num);ps1.setString(2,myname);ps1.setString(3,password);PreparedStatement ps2=connection.prepareStatement(sql2);ps2.setInt(1,num);ps2.setString(2,hisname);ps2.setString(3,IDcard);PreparedStatement ps3=connection.prepareStatement(sql3);ps3.setString(1,myname);ps3.setInt(2,-num);ps3.setInt(3,num);Date date=new Date(System.currentTimeMillis());ps3.setDate(4,new java.sql.Date(date.getTime()));if(ps1.executeUpdate()>0&&ps2.executeUpdate()>0&&ps3.executeUpdate()>0)System.out.println("转账成功");else System.out.println("转账失败");System.out.println(selectByNameAndPassword(myname,password));}catch (Exception e){e.printStackTrace();}}//查询转账记录public List<Event> selectEvents(String name){List<Event> list=new ArrayList<>();String sql="select * from event where name = ?";try{PreparedStatement ps=connection.prepareStatement(sql);ps.setString(1,name);ResultSet set = ps.executeQuery();while(set.next()){int id=set.getInt(1);int account_in=set.getInt(3);int account_out=set.getInt(4);Date date=new Date(set.getDate(5).getTime());list.add(new Event(id,name,account_in,account_out,date));}return list;}catch (Exception e){e.printStackTrace();}return null;}//外币兑换//5.外币兑换public boolean exChange(String name,float amount){//账户 需要兑换外币的数量//定义动态sql语句(update语句)String sql1="select native_sum,foreign_sum from user where name=?";String sql2="update user set native_sum=? ,foreign_sum=? where name=? ";//获取汇率float nativeAmount = 0;//本币余额float foreignAmount = 0;//外币余额try {//获取预编译对象PreparedStatement ps1 = connection.prepareStatement(sql1);//设置占位符的值ps1.setString(1,name);//执行SQL语句ResultSet resultSet = ps1.executeQuery();if(resultSet.next()){nativeAmount=resultSet.getFloat(1);//native_sum返回值是String还是floatforeignAmount=resultSet.getFloat(2);}if(nativeAmount-amount>=0){//如果余额足够则继续执行PreparedStatement ps2 = connection.prepareStatement(sql2);ps2.setFloat(1, nativeAmount-amount);ps2.setFloat(2,foreignAmount+amount*rate);ps2.setString(3,name);int result=ps2.executeUpdate();if(result>0){System.out.printf("兑换成功!国内账户余额:%f,国外账号余额:%f",nativeAmount-amount,foreignAmount+amount*rate);return true;}}} catch (Exception e) {e.printStackTrace();}System.out.printf("兑换失败!国内账户余额:%f,国外账号余额:%f",nativeAmount,foreignAmount);return false;}}

管理员DAO

package com.suoer.bankms.admin.dao;import com.suoer.bankms.user.module.User;
import com.suoer.bankms.util.DButil;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;public class AdminDao {private static Connection connection= DButil.getConnection();//查询所有用户信息public List<User> selectAll(){List<User> list= new ArrayList<>();String sql="select* from user ";try {PreparedStatement ps= connection.prepareStatement(sql);ResultSet set = ps.executeQuery();while(set.next()){String id=String.valueOf(set.getInt(1));String name=set.getString(2);String password=set.getString(3);String bank =set.getString(4);String account=set.getString(5);String IDcard=set.getString(6);String sex=set.getString(7);int age = set.getInt(8);String native_place=set.getString(9);String phone_number=set.getString(10);int native_sum= (int) set.getFloat(11);int foreign_sum= (int) set.getFloat(12);list.add(new User(id,name,password,bank,account,IDcard,sex,age,native_place,phone_number,native_sum,foreign_sum));}return list;}catch (Exception e){e.printStackTrace();}return null;}//按姓名查询用户信息public User selectByName(String name){String sql="select * from user where name = ?";try{PreparedStatement ps=connection.prepareStatement(sql);ps.setString(1,name);ResultSet set = ps.executeQuery();if(set.next()){String id=set.getString(1);String password=set.getString(3);String bank=set.getString(4);String account=set.getString(5);String IDcard=set.getString(6);String sex=set.getString(7);int age=set.getInt(8);String native_place=set.getString(9);String phone_number=set.getString(10);int native_sum=set.getInt(11);int foreign_sum=set.getInt(12);return new User(id,name,password,bank,account,IDcard,sex,age,native_place,phone_number,native_sum,foreign_sum);}}catch (Exception e){e.printStackTrace();}return null;}//添加用户信息public boolean add(User user){String sql="INSERT INTO USER(id,NAME,PASSWORD,bank,ACCOUNT,IDcard,sex,age,native_place,phone_number,native_sum,foreign_sum)  values(?,?,?,?,?,?,?,?,?,?,?,?)";try {PreparedStatement ps=connection.prepareStatement(sql);ps.setString(1,user.getId());ps.setString(2, user.getName());ps.setString(3, user.getPassword());ps.setString(4, user.getBank());ps.setString(5, user.getAccount());ps.setString(6, user.getIDcard());ps.setString(7, user.getSex());ps.setInt(8,user.getAge());ps.setString(9,user.getNative_place());ps.setString(10,user.getPhone_number());ps.setInt(11,user.getNative_sum());ps.setInt(12,user.getForeign_sum());if(ps.executeUpdate()>0)return true;}catch (Exception e){e.printStackTrace();}return false;}//删除用户信息public boolean delete(String name ,String IDcard){String sql="delete from user where name=? and IDcard =?";try{PreparedStatement ps=connection.prepareStatement(sql);ps.setString(1,name);ps.setString(2,IDcard);if(ps.executeUpdate()>0)return true;}catch (Exception e){e.printStackTrace();}return false;}}

数据库连接(工具类)

package com.suoer.bankms.util;import java.sql.Connection;
import java.sql.DriverManager;public class DButil {public static Connection getConnection(){Connection connection=null;final String URL = "jdbc:mysql://localhost:3306/bankms?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";final String DRIVER="com.mysql.cj.jdbc.Driver";final String USER="root";final String PASSWORD="QTqt_456852";try{Class.forName(DRIVER);connection= DriverManager.getConnection(URL,USER,PASSWORD);}catch (Exception e){e.printStackTrace();}return connection;}public static void main(String[] args) {System.out.println(getConnection());}}
ordercheck方法package com.suoer.bankms.util;public class OrderCheck {public static int checkOrder(String input){if(input.matches("\\d")){return Integer.parseInt(input);}else return -1;}
}

知识点总结

数据库连接
数据库连接分为加载驱动、注册驱动和获取连接:

 @Testpublic void testConnection4() {try {//1.数据库连接的4个基本要素:String url = "jdbc:mysql://localhost:3306/test";String user = "root";String password = "abc123";String driverName = "com.mysql.jdbc.Driver";//2.加载驱动 (①实例化Driver ②注册驱动)Class.forName(driverName);//Driver driver = (Driver) clazz.newInstance();//3.注册驱动//DriverManager.registerDriver(driver);/*可以注释掉上述代码的原因,是因为在mysql的Driver类中声明有:static {try {DriverManager.registerDriver(new Driver());} catch (SQLException var1) {throw new RuntimeException("Can't register driver!");}}*///3.获取连接Connection conn = DriverManager.getConnection(url, user, password);System.out.println(conn);} catch (Exception e) {e.printStackTrace();}}

DAO中涉及的方法有

 String sql1="select native_sum,foreign_sum from user where name=?";//SQL语句//获取预编译对象PreparedStatement ps1 = connection.prepareStatement(sql1);//设置占位符的值ps1.setString(1,name);//执行SQL语句ResultSet resultSet = ps1.executeQuery();

java和sql的Date类型转换:
java.sql中有Date、Timestamp、Time三个类,分别显示年月日、年月日时分秒、时分秒。
java.util中有Date类。
转换方式如代码所示:

@Testpublic void datetest(){Date date=new Date();//该空参构造器实际上调用Date(Long long),参数为System.currentTimeMillis()System.out.println(date);System.out.println(date.getTime());java.sql.Date sqldate=new java.sql.Date(date.getTime());System.out.println(sqldate);Timestamp timestamp=new Timestamp(date.getTime());System.out.println(timestamp);Date date1=new Date(sqldate.getTime());System.out.println(date1);
}

打印:
System类中的exit()方法:

此方法用于终止JVM,status=0表示正常终止,否则为异常终止.
此方法效果上等于直接调用Runtime.getRuntime().exit(status);
public static void exit(int status) {Runtime.getRuntime().exit(status);}

欢迎使用Markdown编辑器

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片:

带尺寸的图片:

居中的图片:

居中并且带尺寸的图片:

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

生成一个适合你的列表

  • 项目

    • 项目

      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to-HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ(n)=(n−1)!∀n∈N\Gamma(n) = (n-1)!\quad\forall n\in\mathbb NΓ(n)=(n−1)!∀n∈N 是通过欧拉积分

Γ(z)=∫0∞tz−1e−tdt.\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞​tz−1e−tdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06Mon 13Mon 20已完成 进行中 计划一 计划二 现有任务Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

#mermaid-svg-7c7NcWKoNTfZvMZk {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-7c7NcWKoNTfZvMZk .error-icon{fill:#552222;}#mermaid-svg-7c7NcWKoNTfZvMZk .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7c7NcWKoNTfZvMZk .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-7c7NcWKoNTfZvMZk .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7c7NcWKoNTfZvMZk .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7c7NcWKoNTfZvMZk .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7c7NcWKoNTfZvMZk .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7c7NcWKoNTfZvMZk .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7c7NcWKoNTfZvMZk .marker.cross{stroke:#333333;}#mermaid-svg-7c7NcWKoNTfZvMZk svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7c7NcWKoNTfZvMZk .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-7c7NcWKoNTfZvMZk text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-7c7NcWKoNTfZvMZk .actor-line{stroke:grey;}#mermaid-svg-7c7NcWKoNTfZvMZk .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-7c7NcWKoNTfZvMZk .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-7c7NcWKoNTfZvMZk #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-7c7NcWKoNTfZvMZk .sequenceNumber{fill:white;}#mermaid-svg-7c7NcWKoNTfZvMZk #sequencenumber{fill:#333;}#mermaid-svg-7c7NcWKoNTfZvMZk #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-7c7NcWKoNTfZvMZk .messageText{fill:#333;stroke:#333;}#mermaid-svg-7c7NcWKoNTfZvMZk .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-7c7NcWKoNTfZvMZk .labelText,#mermaid-svg-7c7NcWKoNTfZvMZk .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-7c7NcWKoNTfZvMZk .loopText,#mermaid-svg-7c7NcWKoNTfZvMZk .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-7c7NcWKoNTfZvMZk .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-7c7NcWKoNTfZvMZk .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-7c7NcWKoNTfZvMZk .noteText,#mermaid-svg-7c7NcWKoNTfZvMZk .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-7c7NcWKoNTfZvMZk .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-7c7NcWKoNTfZvMZk .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-7c7NcWKoNTfZvMZk .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-7c7NcWKoNTfZvMZk .actorPopupMenu{position:absolute;}#mermaid-svg-7c7NcWKoNTfZvMZk .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-7c7NcWKoNTfZvMZk .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-7c7NcWKoNTfZvMZk .actor-man circle,#mermaid-svg-7c7NcWKoNTfZvMZk line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-7c7NcWKoNTfZvMZk :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间, 文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五

这将产生一个流程图。:

#mermaid-svg-FyA4pzMqKrzHgwT5 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-FyA4pzMqKrzHgwT5 .error-icon{fill:#552222;}#mermaid-svg-FyA4pzMqKrzHgwT5 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-FyA4pzMqKrzHgwT5 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-FyA4pzMqKrzHgwT5 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-FyA4pzMqKrzHgwT5 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-FyA4pzMqKrzHgwT5 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-FyA4pzMqKrzHgwT5 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-FyA4pzMqKrzHgwT5 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-FyA4pzMqKrzHgwT5 .marker.cross{stroke:#333333;}#mermaid-svg-FyA4pzMqKrzHgwT5 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-FyA4pzMqKrzHgwT5 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-FyA4pzMqKrzHgwT5 .cluster-label text{fill:#333;}#mermaid-svg-FyA4pzMqKrzHgwT5 .cluster-label span{color:#333;}#mermaid-svg-FyA4pzMqKrzHgwT5 .label text,#mermaid-svg-FyA4pzMqKrzHgwT5 span{fill:#333;color:#333;}#mermaid-svg-FyA4pzMqKrzHgwT5 .node rect,#mermaid-svg-FyA4pzMqKrzHgwT5 .node circle,#mermaid-svg-FyA4pzMqKrzHgwT5 .node ellipse,#mermaid-svg-FyA4pzMqKrzHgwT5 .node polygon,#mermaid-svg-FyA4pzMqKrzHgwT5 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-FyA4pzMqKrzHgwT5 .node .label{text-align:center;}#mermaid-svg-FyA4pzMqKrzHgwT5 .node.clickable{cursor:pointer;}#mermaid-svg-FyA4pzMqKrzHgwT5 .arrowheadPath{fill:#333333;}#mermaid-svg-FyA4pzMqKrzHgwT5 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-FyA4pzMqKrzHgwT5 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-FyA4pzMqKrzHgwT5 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-FyA4pzMqKrzHgwT5 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-FyA4pzMqKrzHgwT5 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-FyA4pzMqKrzHgwT5 .cluster text{fill:#333;}#mermaid-svg-FyA4pzMqKrzHgwT5 .cluster span{color:#333;}#mermaid-svg-FyA4pzMqKrzHgwT5 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-FyA4pzMqKrzHgwT5 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.3.0开始我的操作确认?结束yesno
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

银行金融管理系统java实现相关推荐

  1. 客户信息管理系统——Java

    客户信息管理系统--Java 该系统没有涉及文件及数据库,适合刚接触java的新手进行练习.模拟实现基于文本界面的客户软件管理系统.能够实现基本增删改查操作以及类的使用 文件排布如下图: 源代码 Cu ...

  2. 基于java+mysql的Swing+MySQL图书管理系统(java+swing+gui+mysql)

    基于java+mysql的Swing+MySQL图书管理系统(java+swing+gui+mysql) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclip ...

  3. 基于javaweb的自习室图书馆座位预约管理系统(java+ssm+jsp+easyui+mysql)

    基于javaweb的自习室图书馆座位预约管理系统(java+ssm+jsp+easyui+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea ...

  4. 计算机毕业设计-springboot企业考勤管理系统(前后端分离)员工考勤管理系统-公司日常管理系统java代码

    计算机毕业设计-springboot企业考勤管理系统(前后端分离)员工考勤管理系统-公司日常管理系统java代码 注意:该项目只展示部分功能,如需了解,联系咨询即可. 作者:IT跃迁谷 1.开发环境 ...

  5. 基于java+swing的员工出差报销管理系统(java+swing+Mysql+lw)

    基于java+swing的员工出差报销管理系统(java+swing+Mysql+lw) 项目名称:基于java swing的员工出差报销管理系统 涉及技术:java.java swing.mysql ...

  6. Swing交通罚单管理系统java车辆违章缴费金额查询交警信息jsp源代码Maven数据库mysql

    本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当做编程入门的项目来做,故分享出本项目供初学者参考. 项目描述 交通罚单管理系统java ...

  7. 计算机课程设计-基于ssm+vue的物资管理系统(前后端分离)-物资出库入库管理系统java代码

    计算机课程设计-基于ssm+vue的物资管理系统(前后端分离)-物资出库入库管理系统java代码 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 作者:IT跃迁谷 1.开发环境 开发语言:Ja ...

  8. 基于javaweb的图书管理系统(java+jsp+layui+bootstrap+servlet+mysql)

    基于javaweb的图书管理系统(java+jsp+layui+bootstrap+servlet+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse ...

  9. 基于javaweb的宠物店管理系统(java+jsp+javascript+bootstrap+mysql)

    基于javaweb的宠物店管理系统(java+jsp+javascript+bootstrap+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/i ...

  10. 基于javaweb的平行志愿管理系统(java+springboot+mybatis+vue+mysql)

    基于javaweb的平行志愿管理系统(java+springboot+mybatis+vue+mysql) 运行环境 Java≥8.MySQL≥5.7.Node.js≥10 开发工具 后端:eclip ...

最新文章

  1. 达摩院NLP团队斩获六项世界冠军背后,让AI没有难懂的语言
  2. 系统运维岗位职责和要求
  3. 修改PPC下的移动运营商名称为中文
  4. IAR下STM32进入HardFault_Handler
  5. BST:Transformer在推荐领域的应用
  6. jquery.validate+jquery.form提交的三种方式
  7. 使用nosetests对webpy程序做单元测试
  8. 前端中台化,把格局做大:Node.js与测试服务探索
  9. 虚拟机里Ubuntu编译内核方法
  10. linux触摸屏信息,[linux]如何将触摸屏信号识别为鼠标信号?
  11. matlab 圣诞树,搞气氛!用MATLAB画一棵Bling Bling的圣诞树
  12. 创建第一个SpringBoot项目
  13. 【转载】测试面试知识点
  14. python学习——oop-python面向对象,类相关基础
  15. Java+Servlet+JSP实现Web宠物诊所管理系统
  16. java中this和super是否可以同时使用
  17. 高等数学学习笔记——第三十四讲——函数的单调性与凹凸性(单调性)
  18. CIFAR10代码解释
  19. android微信登录错误码10005,微信登录失败10005报错解决方案
  20. python爬取12306_Python爬取12306车次信息代码详解

热门文章

  1. TensorRT 进阶用法
  2. 64位电脑c语言程序下载,vc2010 x64位
  3. 如何安装VS2011Beta版
  4. HTML5项目实战之旅行社网站——PC端固定布局
  5. Git教程 git pull 和 git clone的区别
  6. android声音播放mp3文件,如何在android中播放音频文件
  7. 自动控制原理实验验优报告(资料区附matlab代码)
  8. Pandas直接读取sql脚本
  9. java对excel加密_java 加密 excel
  10. yuzu模拟器linux,yuzu模拟器使用教程 yuzu模拟器手机版下载