创建一张account表,若干个字段 account_id int类型(主键、自增) -->账户编号 account_name varchar类型(30长度) -->账户登录名 account_password varchar类型(30长度) -->账户登录密码 account_money double类型 -->账户余额 现有如下功能,首先需要用户注册或者登录,例如: "请选择:1. 注册 2.登录" "1" "请输入账号:**" "请输入密码:**" "请再次输入密码:**" "注册成功" (只有账号名不重复,并且两次密码一致时才可以注册成功) "请选择:1. 注册 2.登录" "2" "请输入账号:**" "请输入密码:**" "登录成功" (账号密码正确时显示登录成功) 登陆成功后有如下选择 请选择:1. 存钱 2. 取钱 3. 显示余额 4. 转账 5. 退出 其中存钱和取钱操作都是根据以登录的用户中的账户余额来进行修改 当用户选择转账时,提示用户输入对方账户登录名,后台查看该登录名是否存在, 如果存在则开始转账,转账时提示用户是否确认转账,确认后,转账的一方需要支付2%的手续费(例如:转账1000元,需要扣除1020元),转账成功后,一方扣钱,一方加钱(需要验证转账方余额是否充足) 例如: "4" "请输入对方账户:***" "账户不存在,请重新输入!" "请输入对方账户:***" "请输入转账数额:***" "是否确认转账?Y. 是 N. 否" "Y" "转账成功,转账费用**元,手续费**元" 自己创建mapper并设定所需抽象方法完成上述功能并进行测试!
时间: 2023-07-22 15:50:42 浏览: 171
mysql alter table 修改表命令详细介绍
好的,根据您的要求,我已经创建了一个account表,并实现了上述功能。以下是我的代码:
Account.java
```java
public class Account {
private int accountId;
private String accountName;
private String accountPassword;
private double accountMoney;
public int getAccountId() {
return accountId;
}
public void setAccountId(int accountId) {
this.accountId = accountId;
}
public String getAccountName() {
return accountName;
}
public void setAccountName(String accountName) {
this.accountName = accountName;
}
public String getAccountPassword() {
return accountPassword;
}
public void setAccountPassword(String accountPassword) {
this.accountPassword = accountPassword;
}
public double getAccountMoney() {
return accountMoney;
}
public void setAccountMoney(double accountMoney) {
this.accountMoney = accountMoney;
}
}
```
AccountMapper.java
```java
public interface AccountMapper {
/**
* 注册账户
* @param account 账户
* @return 注册成功返回1,否则返回0
*/
int register(Account account);
/**
* 登录账户
* @param accountName 账户名
* @param accountPassword 账户密码
* @return 登录成功返回账户信息,否则返回null
*/
Account login(@Param("accountName") String accountName, @Param("accountPassword") String accountPassword);
/**
* 存钱
* @param accountId 账户ID
* @param money 存款金额
* @return 存款成功返回1,否则返回0
*/
int saveMoney(@Param("accountId") int accountId, @Param("money") double money);
/**
* 取钱
* @param accountId 账户ID
* @param money 取款金额
* @return 取款成功返回1,否则返回0
*/
int withdrawMoney(@Param("accountId") int accountId, @Param("money") double money);
/**
* 转账
* @param fromAccountId 转账方账户ID
* @param toAccountName 收款方账户名
* @param money 转账金额
* @return 转账成功返回1,否则返回0
*/
int transfer(@Param("fromAccountId") int fromAccountId, @Param("toAccountName") String toAccountName, @Param("money") double money);
/**
* 根据账户ID查询账户信息
* @param accountId 账户ID
* @return 账户信息
*/
Account getAccountById(int accountId);
}
```
AccountMapper.xml
```xml
<mapper namespace="com.example.demo.mapper.AccountMapper">
<insert id="register" parameterType="com.example.demo.entity.Account">
insert into account(account_name, account_password, account_money)
values (#{accountName}, #{accountPassword}, #{accountMoney})
</insert>
<select id="login" parameterType="map" resultMap="accountMap">
select * from account
where account_name = #{accountName} and account_password = #{accountPassword}
</select>
<update id="saveMoney">
update account
set account_money = account_money + #{money}
where account_id = #{accountId}
</update>
<update id="withdrawMoney">
update account
set account_money = account_money - #{money}
where account_id = #{accountId} and account_money >= #{money}
</update>
<select id="getAccountByName" parameterType="string" resultMap="accountMap">
select * from account
where account_name = #{accountName}
</select>
<update id="transfer">
update account
set account_money = account_money - #{money}
where account_id = #{fromAccountId} and account_money >= #{money}
</update>
<select id="getAccountById" parameterType="int" resultMap="accountMap">
select * from account
where account_id = #{accountId}
</select>
<resultMap id="accountMap" type="com.example.demo.entity.Account">
<id property="accountId" column="account_id"/>
<result property="accountName" column="account_name"/>
<result property="accountPassword" column="account_password"/>
<result property="accountMoney" column="account_money"/>
</resultMap>
</mapper>
```
AccountServiceImpl.java
```java
@Service
public class AccountServiceImpl implements AccountService {
@Autowired
private AccountMapper accountMapper;
@Override
public int register(Account account) {
Account existAccount = accountMapper.getAccountByName(account.getAccountName());
if (existAccount != null) {
return 0;
}
return accountMapper.register(account);
}
@Override
public Account login(String accountName, String accountPassword) {
return accountMapper.login(accountName, accountPassword);
}
@Override
public int saveMoney(int accountId, double money) {
return accountMapper.saveMoney(accountId, money);
}
@Override
public int withdrawMoney(int accountId, double money) {
return accountMapper.withdrawMoney(accountId, money);
}
@Transactional(rollbackFor = Exception.class)
@Override
public int transfer(int fromAccountId, String toAccountName, double money) {
Account fromAccount = accountMapper.getAccountById(fromAccountId);
if (fromAccount == null) {
return 0;
}
Account toAccount = accountMapper.getAccountByName(toAccountName);
if (toAccount == null) {
return -1;
}
double transferMoney = money * 1.02;
int res = accountMapper.transfer(fromAccountId, toAccountName, transferMoney);
if (res > 0) {
accountMapper.withdrawMoney(fromAccountId, transferMoney);
accountMapper.saveMoney(toAccount.getAccountId(), money);
return 1;
} else {
return 0;
}
}
@Override
public Account getAccountById(int accountId) {
return accountMapper.getAccountById(accountId);
}
}
```
AccountController.java
```java
@RestController
@RequestMapping("/account")
public class AccountController {
@Autowired
private AccountService accountService;
@PostMapping("/register")
public String register(@RequestBody Account account) {
int res = accountService.register(account);
if (res > 0) {
return "注册成功";
} else {
return "注册失败,账户名已存在";
}
}
@PostMapping("/login")
public String login(@RequestBody Account account) {
Account res = accountService.login(account.getAccountName(), account.getAccountPassword());
if (res != null) {
return "登录成功";
} else {
return "账户名或密码错误";
}
}
@PostMapping("/saveMoney")
public String saveMoney(@RequestBody Map<String, Object> map) {
int accountId = (int) map.get("accountId");
double money = (double) map.get("money");
int res = accountService.saveMoney(accountId, money);
if (res > 0) {
return "存款成功";
} else {
return "存款失败,余额不足";
}
}
@PostMapping("/withdrawMoney")
public String withdrawMoney(@RequestBody Map<String, Object> map) {
int accountId = (int) map.get("accountId");
double money = (double) map.get("money");
int res = accountService.withdrawMoney(accountId, money);
if (res > 0) {
return "取款成功";
} else {
return "取款失败,余额不足";
}
}
@PostMapping("/transfer")
public String transfer(@RequestBody Map<String, Object> map) {
int fromAccountId = (int) map.get("fromAccountId");
String toAccountName = (String) map.get("toAccountName");
double money = (double) map.get("money");
int res = accountService.transfer(fromAccountId, toAccountName, money);
if (res > 0) {
return "转账成功";
} else if (res == 0) {
return "转账失败,余额不足";
} else {
return "转账失败,账户不存在";
}
}
@GetMapping("/{accountId}")
public Account getAccountById(@PathVariable int accountId) {
return accountService.getAccountById(accountId);
}
}
```
以上是我的代码实现,您可以根据自己的需求进行修改。
阅读全文