案例1:模拟银行新用户现金业务办理
实验内容:
1) 银行新用户开户
2) 欢迎用户光临和欢迎用户下次光临
3) 存钱
4) 取钱
案例代码:
Bank类:
package cn.Bank;
public class Bank {
static String Name;
private String name;
private String pswd;
private double balance;
private double turnover;
// 静态方法
static void welcome() {
System.out.println("欢迎来到" + Name + "------------");
}
public Bank(String name, String pswd, double turnover) {
super();
this.name = name;
this.pswd = pswd;
this.balance = turnover - 10;
this.turnover = turnover;
System.out.println(name + "开户成功,余额" + balance);
}
// 存钱
public void Save_money(double turnover) {
balance = balance + turnover;
System.out.println(name + "您好,您已存入" + turnover + "元,当前余额是" + balance + "元。");
}
// 取钱
public void Withdraw_money(String pswd, double turnover) {
if (this.pswd != pswd) {
System.out.println("您输入的密码有误");
return;
}
// 钱是否够
if (this.balance < turnover) {
System.out.println("您的余额不足");
} else {
balance = balance - turnover;
System.out.println(name + "您好,您的帐户已取出" + turnover + "元,您的帐户余额是" + balance + "元");
}
}
// 欢迎下次光临
static void welcomeNext() {
System.out.println("欢饮下次光临" + Name + "------------");
}
}
Test类:
package cn.Bank;
public class Test {
public static void main(String[] args) {
Bank.Name = "中国人民银行";
Bank.welcome();
Bank bank = new Bank("李小小", "123456", 100);
bank.Save_money(100);
bank.Withdraw_money("123456", 50);
bank.Withdraw_money("654321", 200);
bank.Withdraw_money("123456", 50);
Bank.welcomeNext();
}
}
运行结果示例:
案例2:USB接口程序设计
实验内容:
1) 模拟往计算机的USB接口的插入设备;
2) 模拟开机时各USB接口的设备开始工作;
3) 模拟关机时各USB接口的设备停止工作。
案例代码:
Computer类:
package cn.usb;
public class Computer {
private USB[] usbArr = new USB[4];
public void add(USB usb) {
for (int i = 0; i < usbArr.length; i++) {
if (usbArr[i] == null) {
usbArr[i] = usb;
break;
}
}
}
public void powerOn() {
for (int i = 0; i < usbArr.length; i++) {
if (usbArr[i] != null) {
usbArr[i].turnOn();
}
}
System.out.println("电脑开机成功");
}
public void powerOff() {
for (int i = 0; i < usbArr.length; i++) {
if (usbArr[i] != null) {
usbArr[i].turnOff();
}
}
System.out.println("电脑关机成功");
}
}
KeyBoard类:
package cn.usb;
public class KeyBoard implements USB {
@Override
public void turnOn() {
// TODO Auto-generated method stub
System.out.println("键盘启动了");
}
@Override
public void turnOff() {
// TODO Auto-generated method stub
System.out.println("键盘关闭了");
}
}
Microphone类:
package cn.usb;
public class Microphone implements USB {
@Override
public void turnOn() {
// TODO Auto-generated method stub
System.out.println("麦克风启动了");
}
@Override
public void turnOff() {
// TODO Auto-generated method stub
System.out.println("麦克风关闭了");
}
}
Mouse类:
package cn.usb;
public class Mouse implements USB {
@Override
public void turnOn() {
// TODO Auto-generated method stub
System.out.println("鼠标启动了");
}
@Override
public void turnOff() {
// TODO Auto-generated method stub
System.out.println("鼠标关闭了");
}
}
USB类:
package cn.usb;
public interface USB {
void turnOn();
void turnOff();
}
Test类:
package cn.usb;
public class Test {
public static void main(String[] args) {
Computer c = new Computer();
c.add(new Mouse());
c.add(new Microphone());
c.add(new KeyBoard());
c.powerOn();
System.out.println("----------------");
c.powerOff();
}
}
运行结果示例:
案例3:身份证校验位和身份提取
实验内容:
1)从键盘上输入身份证的前17份
2) 计算身份证的检验码
十七位数字id[17]本体码加权求和公式: S=Sum (Ai*Wi) ,i=0…..16。
其中,Ai表示身份证号码第i位的数字
wi表示第i位的加权因子,分别为{7 ,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}
先对前17位数字按位权求和,计算除以11的余数: y= S%11
通过模得到对应的末位校验码v[11]={‘1′ ,’0′,’x’,’9′,’8′,’7′,’6′,’5′,’4′, ‘3’,’2’}
3)判断性别
通过第17位数除以2的余数判断性别(1为男,0为女)
案例代码:
package cn.idcard;
import java.time.LocalDate;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入身份证号的前17位:");
String s = sc.nextLine();
int[] a = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
char[] b = { '1', '0', 'x', '9', '8', '7', '6', '5', '4', '3', '2' };
int sum = 0, n;
for (int i = 0; i <= 16; i++) {
n = s.charAt(i) - '0';
sum = sum + n * a[i];
}
char c = b[sum % 11];
System.out.println("末尾校验位为:" + c);
String yString = s.substring(6, 10);
String mString = s.substring(10, 12);
String dString = s.substring(12, 14);
int y = Integer.parseInt(yString);
int m = Integer.parseInt(mString);
int d = Integer.parseInt(dString);
LocalDate localDate = LocalDate.of(y, m, d);
System.out.println("出生年月日为:" + localDate.toString());
int age = 2022 - y;
int i = s.charAt(16) - '0';
String sex = (i % 2) == 1 ? "男" : "女";
System.out.println("您的年龄为:" + age + "性别为:" + sex);
}
}
运行结果示例:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/73640.html