案例1、补充完整详细设计说明内容
下面是某银行管理系统的详细设计说明书的部分内容,其中对银行系统管理员功能的需求如下:
A、用户查询信息管理:可开户,销户,查询用户。
B、卡管理:可办理储蓄卡,办理信用卡,注销卡。
C、财务报表管理:可以统计该银行的用户和其相应卡的余额。
下面是对用户管理模块、系统后台信息管理模块的描述,请按照要求补充完整对应的说明。
用户管理模块
● 功能:( 1 )。
● 性能:为用户提供存款操作界面。
● 输入项目:( 2 )。
● 输出项目:卡号,卡内余额,操作记录,操作时间等。
系统后台信息管理模块
(1)自动还款管理:
● 功能:用户将信用卡绑定到储蓄卡上,并且通过储蓄卡自动给信用卡进行还款。
● 性能:为用户提供自动还款界面。
● 输入项目:( 3 )。
● 输出项目: 如果自动还款成功,则提示用户"自动还款成功!";如果自动还款失败,则提示用户"余额不足!"
答案:
用户管理模块
1:根据不同条件查询用户信息,若无用户信息,则用户需录入的基本信息(如姓名、身份证号、联系方式等),并为其创建一个唯一的用户账号。用户通过该账号,可进行存款操作。
2:姓名、身份证号、联系方式、地址、职业、初始存款金额等。
系统后台信息管理模块
(1)自动还款管理:
3:信用卡信息:信用卡号、持卡人姓名、信用卡有效期。储蓄卡信息:储蓄卡卡号、持卡人姓名、储蓄卡密码。自动还款设置:还款方式(全额还款或最低还款)、还款日期、还款金额。
案例2、补充完整详细设计说明内容
下面是某在线交流平台系统的详细设计说明书的部分内容,其中对该系统管理员功能的需求如下:
A、帖子管理:管理员查看帖子列表,逻辑审核、删除帖子。
B、标签管理:管理员查看标签列表,添加标签,修改标签信息。
C、用户管理:管理员查看用户列表,删除、恢复用户。
下面是对系统管理模块、查询统计模块、基础数据管理模块的描述,请按照要求补充完整对应的说明。
用户管理模块
● 功能:( 1 )。
● 性能:为用户提供登录界面。
● 输入项目:( 2 )。
● 输出项目:用户名密码匹配,输出"登录成功!";用户名密码匹配失败,输出"密码错误!"。
帖子管理模块
(1) 查看帖子管理:
● 功能: ( 3 )。
● 性能:为用户提供查看帖子页面
● 输入项目:帖子名称。
● 输出项目: 帖子信息。
(2) 收藏帖子管理:
● 功能: 收藏帖子
● 性能:( 4 )。
● 输入项目: ( 5 )。
● 输出项目: 正则成功,负则失败。
答案:
用户管理模块
1:用户登录。
2:用户名和密码。
帖子管理模块
3:查看帖子。
4:为用户提供收藏帖子的页面。
5:当前登录用户的唯一ID和被收藏帖子的唯一ID。
案例3、补充完整详细设计说明内容
下面是某合同管理系统的详细设计说明书的部分内容,其中对合同系统管理员功能的需求如下:
A、系统权限管理:可以进行系统维护、权限分配。
B、合同流程管理:可进行合同流程配置。
C、操作管理:对业务操作只能查询,不能对自己授予业务继续新增、修改、删除等操作。
下面是对系统管理模块、查询统计模块、基础数据管理模块的描述,请按照要求补充完整对应的说明。
系统管理模块
(1) 分配合同管理:
● 功能: 管理员选择状态为"起草"的待分配合同,指定参与会签、审批、签订的人员完成分配。
● 性能:为用户提供分配合同管理操作界面。
● 输入项目:( 1 )。
● 输出项目:待分配合同列表、合同基本信息和用户列表信息。
(2) 角色管理
● 功能: 管理员可以对系统的角色进行新增、查询、修改和删除操作。
● 性能:为管理员提供新增角色界面。
● 输入项目:( 2 )。
● 输出项目:新增成功:在新增角色页面提示"添加成功!";新增失败:提示角色权限信息不能为空。
查询统计模块
(1) 合同信息查询管理:
● 功能: 可以根据合同编号进行合同查询。
● 性能: ( 3 )。
● 输入项目:( 4 )。
● 输出项目: 显示符合查询条件的合同。
答案:
系统管理模块
1:管理员在分配合同管理界面选择合同类型(会签、审批、签订)。
2:管理员在新增角色界面填写角色基本信息(角色名称、角色描述等)以及选择菜单访问权限和操作权限。
查询统计模块
3:为用户提供合同信息查询界面。
4:用户在合同信息查询界面输入合同编号
实操视频一、根据题目描述,编写Java代码完成测试。
测试用例说明:
|--------|----------------------|----------|-----------------------|
| 序号 | 输入密码 | 预期输出 | 测试描述 |
| 1 | ""(空字符串) | "错误" | 验证空字符串输入的处理 |
| 2 | "a"(长度1) | "错误" | 验证长度小于等于6的输入 |
| 3 | "abc123"(长度为6) | "错误" | 验证长度等于6的输入 |
| 4 | "abc1234"(长度7) | "弱密码" | 验证长度大于6且仅包含数字和小写字母的输入 |
| 5 | "ABCDEFG"(长度7,大写字母) | "强密码" | 验证包含大写字母的输入 |
| 6 | "abc123@"(长度7,含特殊字符) | "强密码" | 验证包含特殊字符的输入 |
| 7 | "1234567"(长度7,全数字) | "弱密码" | 验证仅包含数字的输入 |
| 8 | "abcdefg"(长度7,全小写字母) | "弱密码" | 验证仅包含小写字母的输入 |
具体代码如下:
package test;
import static org.junit.Assert.assertEquals;
import org.junit.jupiter.api.Test;
public class PasswordCheck {
//测试密码空字符串
@Test
public void testEmptyPassword() {
String result=check("");
assertEquals("测试空字符串","错误",result);
}
//测试输入密码过短
@Test
public void testShortPassword() {
String result=check("a");
assertEquals("测试过短密码","错误",result);
}
//测试长度等于6的密码
@Test
public void testPasswordlengthEqual6() {
String result=check("abc123");
assertEquals("测试长度等于6的密码","错误",result);
}
//测试仅含有数字和小写字母的密码
@Test
public void testWeakPasswordAllLowerDigit() {
String result=check("abc1234");
assertEquals("测试仅含有数字和小写字母的密码","弱密码",result);
}
//测试包含大写字母的密码
@Test
public void testStrongPasswordWithUpppercase() {
String result=check("ABCDEFG");
assertEquals("测试包含大写字母的密码","强密码",result);
}
//测试包含特殊字符的密码
@Test
public void testStrongPasswordWithSpecialChar() {
String result=check("abc123@");
assertEquals("测试包含特殊字符的密码","强密码",result);
}
//测试全数字密码
@Test
public void testWeakPasswordAllDigits() {
String result=check("1234567");
assertEquals("测试全数字密码","弱密码",result);
}
//测试全小写字母密码
@Test
public void testWeakPasswordAllLowercase() {
String result=check("abcdefg");
assertEquals("测试全小写字母密码","弱密码",result);
}
public String check(String password) {
if (password.isEmpty()) {
return "错误";
}
int length = password.length();
if (length <= 6) {
return "错误";
}
if (password.matches("[0-9a-z]+")) {
return "弱密码";
} else {
return "强密码";
}
}
}
实操视频二、根据题目描述,编写Java代码完成测试 。
测试用例描述:
|----|----------------------------------|-----------------------------------|------|----------------------------|
| 序号 | 测试用例名称 | 测试用例描述 | 输入数据 | 预期结果 |
| 1 | 测试账号不能为空 | 测试账号信息不能为空字符串 | 账号信息 | 账号信息不为空 |
| 2 | 测试账号不能小于6位数(或需大于5位数) | 测试账号长度不能太短,不能小于6位数(或需大于5位数) | 账号信息 | 账号位数不小于6位数(或需大于5位数) |
| 3 | 测试账号不能大于等于12位数(或需小于12位数) | 测试账号长度不能太长,不能大于等于12(或需小于12位数) | 账号信息 | 账号位数大于等于12位数(或需小于12位数) |
| 4 | 测试账号第一位必须是大写或小写的英文字母 | 测试账号第一个字符必须是大写或小写的英文字母 | 账号信息 | 账号第一位是大写或小写的英文字母 |
| 5 | 测试账号后续位数可以是任意数量的大写或小写英文字母、下划线或数字 | 测试账号后续字符串可以是任意数量的大写或小写英文字母、下划线或数字 | 账号信息 | 账号后续位数可以包含大写或小写英文字母、下划线或数字 |
具体代码如下:
package test;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;
public class AccountCheck {
//1. 空字符串测试
@Test
public void testEmptyString() {
assertFalse(check(""));
}
//2. 长度边界测试
// 长度=5 (<6),预期 false
@Test
public void testTooShort() {
assertFalse(check("abcde"));
}
// 长度=6 (合法最小值),预期 true
@Test
public void testMinimumLength() {
assertTrue(check("abcdef"));
}
// 长度=11 (合法最大值),预期 true
@Test
public void testMaximumLength() {
assertTrue(check("abcdefghijk"));
}
// 长度=12 (≥12),预期 false
@Test
public void testTooLong() {
assertFalse(check("abcdefghijkl"));
}
//3. 首字符测试
// 首字符=字母,预期 true
@Test
public void testStartWithLetter() {
assertTrue(check("user123"));
}
// 首字符=数字,预期 false
@Test
public void testStartWithDigit() {
assertFalse(check("1user23"));
}
// 首字符=_,预期 false
@Test
public void testStartWithUnderscore() {
assertFalse(check("_user23"));
}
//4. 内容字符测试
// 包含字母、数字、_,预期 true
@Test
public void testValidCharacters() {
assertTrue(check("a_123_B"));
}
@Test
public void testInvalidCharacters() {
// 包含非法字符 !,预期 false
assertFalse(check("user!23"));
// 包含空格,预期 false
assertFalse(check("user 23"));
// 包含 -,预期 false
assertFalse(check("user-23"));
}
public boolean check(String account) {
if (account.isEmpty()) {
return false;
}
int length = account.length();
if (length < 6 || length >= 12) {
return false;
}
if (account.matches("[a-zA-Z][a-zA-Z_0-9]*")) {
return true;
}
return false;
}
}
实操视频三、根据题目要求,使用工具进行功能调试。
具体代码如下:
/**
* @Description 颜色类
* @Author THINKPAD
* @Date 2025/4/9 18:35
* @Version 1.0
**/
public class ColorX {
private int red, green, blue;
public ColorX() {
red = 0;
green = 0;
blue = 0;
}
public ColorX(int red, int green, int blue) {
this.red = red;
this.green = green;
this.blue = blue;
}
@Override
public String toString() {
return String.format("%02X%02X%02X", red, green, blue);
}
}
/**
* @Description 调色板类
* @Author THINKPAD
* @Date 2025/4/9 18:36
* @Version 1.0
**/
public class Palette {
public int number; // 颜色数
private ColorX[] palette; // 颜色表
public Palette(ColorX[] palette, int number) {
this.number = number;
this.palette = palette;
}
public void addColor(ColorX color) {
this.palette[this.number] = color;
this.number+=1;
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append(String.format("%02X", number));
for (int i = 0; i < number; i++) {
sb.append(palette[i]);
}
return sb.toString();
}
}
public class Draw {
public static void main(String[] args) {
Palette palette = new Palette(new ColorX[13],0);
palette.addColor(new ColorX(223, 32, 219));
palette.addColor(new ColorX(38, 213, 217));
palette.addColor(new ColorX(128, 187, 68));
palette.addColor(new ColorX(190, 198, 57));
palette.addColor(new ColorX(214, 50, 41));
palette.addColor(new ColorX(150, 250, 155));
palette.addColor(new ColorX(149, 202, 251));
palette.addColor(new ColorX(176, 199, 223));
palette.addColor(new ColorX(234, 166, 208));
palette.addColor(new ColorX(70, 17, 50));
palette.addColor(new ColorX(133, 86, 203));
palette.addColor(new ColorX(100, 100, 189));
palette.addColor(new ColorX(250, 184, 205));
System.out.println(palette);
}
}
- 运行结果为一串十六进制的大写字符串:0DDF20DB26D5D980BB44BEC639D6322996FA9B95CAFBB0C7DFEAA6D04611328556CB6464BDFAB8CD