银行卡实例的封装包括:存款、存款、查询余额等功能,以及设置(set)和获取(get)用户名、账号、密码等功能。 要求:开发下面bankcard类,其中成员变量已给 class bankcard{ private string name; //用户名 private string password; //密码6位 private string cardno; //卡号8位 private double money; //余额 以下功能: 构造函数;//初始化4个成员变量 读取卡号; 设置卡号; 读取密码; 设置密码; 读取用户名; 设置用户名; 存款: 要有输出信息,您刚才存款多少元 取款: 要有输出信息,您刚才取款多少元;或者出错信息,例如余额只有200,但是要取300等不符合实际的情况 查询余额; } 在主类中: 创建bankcard实例,并存款300,取款200,查询余额。
时间: 2023-05-02 11:04:54 浏览: 89
这是一道关于银行卡的实例程序题,要求实现存款、取款、查询余额等功能,并设计一个 BankCard 类,其中包含用户姓名、密码、卡号和余额等属性,以及构造函数、存款、取款、查询余额等方法。在主函数中创建一个 BankCard 实例并初始化余额为 300 元,进行存款、取款、查询余额等操作,并输出相关信息。
相关问题
我需要时间精确到2ms的精度,并且你使用读写锁对获取和设置全局时间进行封装,封装成get_global_time()和set_goble_time()
如果你需要将全局时间精确到2ms的精度,并且希望使用读写锁对获取和设置全局时间进行封装,可以按照以下方式修改示例代码:
```c
#include "FreeRTOS.h"
#include "task.h"
#include "timers.h"
#include "semphr.h"
// 全局变量,用于保存全局时间
TickType_t globalTime = 0;
// 读写锁,用于保护全局时间的读写操作
SemaphoreHandle_t timeLock;
// 获取全局时间
TickType_t get_global_time()
{
TickType_t time;
xSemaphoreTake(timeLock, portMAX_DELAY); // 获取写锁
time = globalTime;
xSemaphoreGive(timeLock); // 释放写锁
return time;
}
// 设置全局时间
void set_global_time(TickType_t time)
{
xSemaphoreTake(timeLock, portMAX_DELAY); // 获取写锁
globalTime = time;
xSemaphoreGive(timeLock); // 释放写锁
}
void vTaskFunction(void *pvParameters)
{
TickType_t startTime, endTime;
startTime = xTaskGetTickCount();
// 在这里执行你想要测量执行时间的代码
endTime = xTaskGetTickCount();
TickType_t executionTime = endTime - startTime;
// 打印执行时间
printf("Execution time: %ld ticks\n", executionTime);
vTaskDelete(NULL);
}
int main(void)
{
// 初始化FreeRTOS
// 创建读写锁
timeLock = xSemaphoreCreateReadWriteMutex();
// 创建任务
xTaskCreate(vTaskFunction, "Task", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
// 启动调度器
vTaskStartScheduler();
// 不会执行到这里
return 0;
}
```
在这个示例中,我添加了一个读写锁 `timeLock`,用于保护全局时间的读写操作。`get_global_time()` 函数使用读锁获取全局时间,`set_global_time()` 函数使用写锁设置全局时间。
请注意,为了使用读写锁,需要包含 `semphr.h` 头文件,并且创建一个读写锁的实例 `timeLock`。
在任务函数中,你可以使用 `get_global_time()` 函数获取全局时间,在需要修改全局时间时可以使用 `set_global_time()` 函数进行设置。这样,读取和修改全局时间的操作将会被保护,并且可以避免并发访问导致的竞态条件。
同时,根据你的要求,你可能还需要根据FreeRTOS的时钟频率来将全局时间转换为2ms的精度。你可以在初始化FreeRTOS时配置时钟频率,然后在获取和设置全局时间时进行相应的转换。
实现登录注册界面设计,具体如下。 (1)User.java 这个类代表用户的实体类,包含三个变量,并对其进行封装 • id就存登录所需要的账号; • name存名字; • password存储密码 设存在一个合法用户:其账号为001,用户名为Tom,密码为1234。 编写Java本题源程序: (1)User.java public class User { private String id; // 编号 private String name; // 姓名 private String password; // 密码 【代码】/*3个实例变量的Set系列方法*/ 【代码】/*3个实例变量的Get系列方法*/ }
好的,以下是一个简单的登录注册界面设计的Java源程序,其中包含了User类的实现:
User.java:
```
public class User {
private String id; // 编号
private String name; // 姓名
private String password; // 密码
public User(String id, String name, String password) {
this.id = id;
this.name = name;
this.password = password;
}
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;
}
}
```
LoginRegister.java:
```
import java.util.ArrayList;
import java.util.Scanner;
public class LoginRegister {
private static ArrayList<User> users = new ArrayList<>();
public static void main(String[] args) {
// 添加一个测试用户
users.add(new User("001", "Tom", "1234"));
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请选择操作:1、登录 2、注册 3、退出");
String option = scanner.nextLine();
switch (option) {
case "1":
login();
break;
case "2":
register();
break;
case "3":
System.out.println("欢迎下次使用!");
System.exit(0);
default:
System.out.println("无效的操作,请重新选择!");
}
}
}
private static void login() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入账号:");
String id = scanner.nextLine();
System.out.println("请输入密码:");
String password = scanner.nextLine();
for (User user : users) {
if (user.getId().equals(id) && user.getPassword().equals(password)) {
System.out.println("登录成功,欢迎你," + user.getName() + "!");
return;
}
}
System.out.println("账号或密码错误,请重新输入!");
}
private static void register() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要注册的账号:");
String id = scanner.nextLine();
for (User user : users) {
if (user.getId().equals(id)) {
System.out.println("该账号已被注册,请重新输入!");
return;
}
}
System.out.println("请输入用户名:");
String name = scanner.nextLine();
System.out.println("请输入密码:");
String password = scanner.nextLine();
users.add(new User(id, name, password));
System.out.println("注册成功,请登录!");
}
}
```
在这个程序中,User类包含了三个实例变量和对应的set和get方法。LoginRegister类实现了登录和注册的功能。用户输入账号和密码后,程序会检查用户是否存在或密码是否正确,并给出相应的提示。如果用户选择注册,则需要输入新的账号、用户名和密码,并将新用户添加到用户列表中。
阅读全文