在实现数据管理系统之前我们需要先掌握几个知识:
一、输入语句
- 输入语句
- Scanner:输入各种类型数据的方法
- 比如字符串(string) 整数(int)浮点数(double float)……
- Scanner:输入各种类型数据的方法
- System:
- System.out.println(); 输出语句
- System.in; 输入接口
- System.exit();
- System.gc(); JVM的垃圾回收器 将一些没用的数据清理掉 不占内存
代码例如:
public class ScannerInputData {
public static void main(String[] args) {
// 创建一个Scanner对象 传入一个System.in的参数
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串");
String str1 = sc.next();
System.out.println("您输入的字符串为:"+str1);
System.out.println("请输入整数");
int num = sc.nextInt();
System.out.println("您输入的是整数:" + num);
System.out.println("请输入一行字符串:");
sc.nextLine();// 吸收多余的符号 回车
String str = sc.nextLine();// 读取一行字符串1
System.out.println("您输入的是:" + str);
System.out.println("请输入一个浮点数:");
double d = sc.nextDouble();
System.out.println("您输入的是:" + d);
// nextInt 后面如果是 nextLine 会直接跳过nextLine读取
// 解决办法 后面接一个sc.nextLine 用来吸收回车符号
}
}
运行结果为:
二、数组
- 数组
- 格式: 数组所存储的数据的类型[] 数组变量名 = new 数组所存储的数据的类型[长度];
- 例如:
-
String[] arr1 = new String[10];
- 每个数组定义好之后,都会给其中的数据进行默认赋值
- 默认值:
- 基本数据类型默认值: 数字类型 - 0/0.0 字符类型-0空字符 Boolean-false
- 引用数据类型: 字符串 - null 其他任何类-null
- 长度: 数组的长度设定好之后 不可变,数组的长度是一个常量
- 下标: 数组中每个存储空间的房间号
- 规律: 从0开始 依次递增1
- 最大下标: 数组的长度-1;
- 使用数组:
- 存: 数组名[下标]=值; arr[5]=10; arr1[2]=“hello”;
- 取: 数据类型 变量名 = 数组名[下标]; int n = arr[5]; String str = arr1[2];
- 存取都可以通过循环进行批量操作:
for(int i=0;i<arr.length;i++){ arr[i]=值; }
- 格式: 数组所存储的数据的类型[] 数组变量名 = new 数组所存储的数据的类型[长度];
public class ArrayDema {
public static void main(String[] args) {
// 定义数组:
int [] arr = new int[20];
// 随机数
// 存入数据
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 10);
}
// 取出数据查看
for (int i = 0; i < arr.length; i++) {
int n = arr[i];
System.out.print(" " + n);
}
}
}
三、银行管理系统
银行用户类:
在银行管理系统中我们会用到一个自己创建的类,来存储我们的数据
例如:
public class BankUser {
int id;
String userName;
String pwd;
float money;
int points;
//
public String toString() {
String info = "User{id=" + id + ",userName=" + userName
+ ",password=" + pwd + ",money=" + money +",points=" + points +"}";
return info;
}
}
银行管理系统:
-
属性:
- 最大数据量:maxsize
- 存储数组 BankUser[ ] userList = new User[maxSize];
- 实时的数据个数 size
-
方法:
- 系统启动的方法:
- 1: 进入主页功能模块
- 2: 根据用户在主页模块选择的功能做分流 根据选择调用下面的方法之一执行
- save方法(存钱):
- 检测是否具有空闲空间
- 需要用户输入用户名
- 输入密码
- 再将账号密码存入一个新的用户对象中
- 再将用户对象设置好id存入userList中
- size++;
- withdraw方法(取钱):
- 需要用户输入用户名
- 输入密码并检测正确性
- 输入取钱金额并判断是否有足够余额
- 在取钱之后自动更新账号余额
- get方法:
- 根据用户需求 选择不同查询模式
- id 查询是否有该id 并作出相应反应
- userName 查询是否有该id 并作出相应反应
- all 打印所有数组内容
- exit方法:
- 退出系统
- 系统启动的方法:
public class BankManage {
//属性:
//最大数据量 maxSize
final int maxSize = 100;
//创建数组
BankUser [] userlist = new BankUser[maxSize];
//实时的数据个数
int size;
float money;
public void lunch(){
//主页功能模块
Scanner sc = new Scanner(System.in);
while (true){
System.out.println("---------------------------");
System.out.println("----欢迎使用数据录入管理系统----");
System.out.println("---------------------------");
System.out.println("请输入需要使用功能指令: " +
"\n 存钱-save 取钱-withdraw 查询-get 退出-exit");
String action = sc.nextLine();
if(action.equals("save")){
save(sc);
}else if (action.equals("withdraw")){
withdraw(sc);
}else if (action.equals("get")){
get(sc);
}else if (action.equals("exit")){
System.exit(0);// 退出进程
} else {
System.err.println("~~输入无效请重新输入~~");
}
sc.nextLine();
}
}
public void save(Scanner sc){
//- 检测是否具有空闲空间(后续扩展为扩容机制)
if(size>=maxSize){
System.out.println("当前系统用户已满,无法存入数据");
return;
}
//- 需要用户输入用户名
System.out.println("请输入用户名:");
String userName = sc.nextLine();
//- 输入密码
System.out.println("请输入密码:");
String pwd = sc.nextLine();
//输入金额
System.out.println("请输入存取金额:");
long money = sc.nextLong();
BankUser user = new BankUser();
//- 再将账号密码存入一个新的用户对象中
user.userName = userName;
user.pwd = pwd;
user.money += money;
user.points+= money/10;
//- 再将用户对象设置好id存入userList中
user.id = size;
userlist[size] = user;
//- size++;
size++;
System.out.println("存钱成功!");
System.out.println(user.toString());
}
public void get(Scanner sc) {
System.out.println("请输入选择需要查询依据类型: id | userName | all ");
String action = sc.nextLine();
if (action.equals("id")) {
System.out.println("请输入需要查询的id:");
int id = sc.nextInt();
sc.nextLine();//吸收多余回车符号
// 遍历整个数组查找相同的id
for (int i = 0; i < size; i++) {
// 取出
BankUser user = userlist[i];
if (user.id == id) {
System.out.println(user.toString());
System.out.println("查询成功!");
return;
}
}
System.out.println("查找失败,无此信息!");
} else if (action.equals("userName")) {
System.out.println("请输入需要查询的用户名:");
String name = sc.nextLine();
for (int i = 0; i < size; i++) {
BankUser user = userlist[i];
if(user.userName.equals(name)){
System.out.println(user.toString());
System.out.println("查询成功!");
return;
}
}
System.out.println("查找失败,无此信息!");
} else if (action.equals("all")) {
for (int i = 0; i < size; i++) {
BankUser user = userlist[i];
System.out.println(user.toString());
}
System.out.println("查询成功!");
return;
}else {
System.out.println("输入有误!");
return;
}
}
public void withdraw(Scanner sc){
System.out.println("请输入取钱用户名:");
String name =sc.nextLine();
for(int i=0;i<size;i++){
BankUser user =userlist[i];
if(user.userName.equals(name)){
System.out.println("请输入密码:");
String pwd=sc.nextLine();
if(user.pwd.equals(pwd)){
System.out.println("请输入想要取出的金额:");
long money=sc.nextLong();
if(user.money>=money){
user.money-=money;
System.out.println("取钱成功!账户剩余:"+user.money);
}else {
System.out.println("账号余额不足!!!");
}
return;
}else {
System.out.println("密码错误!");
return;
}
}else {
System.out.println("查无此人!");
return;
}
}
}
public static void main(String[] args) {
BankManage bankManage = new BankManage();
bankManage.lunch();
}
}