一、补充完整详细设计说明内容(红色部分要背)35分
学习要求:(红色字为需要背的部分,大致相同即可,一共5处)
下面是某合同管理系统的详细设计说明书的部分内容,其中对合同系统管理员功能的需求如下:
A、系统权限管理:可以进行系统维护、权限分配
B、合同流程管理:可进行合同流程配置。
C、操作管理:对业务操作只能查询,不能对自己授予业务继续新增、修改、删除等操作。
下面是对系统管理模块、查询统计模块、基础数据管理模块的描述,请按照要求补充完整对应的说明(下面红字部分是要被的部分,内容意思对就行,不能完全和参考答案一致)。
系统管理模块
(1)分配合同管理:
●功能:管理员选择状态为“起草”的待分配合同。指定参与会签、审批、签订的人员完成分配。
●性能:为用户提供分配合同管理操作界面
●输入项目:(1)。状态为 “起草” 的待分配合同信息,指定参与会签、审批、签订的人员信息 (按照自己的话重写,按原文写0分)。
●输出项目:特分配合同列表。合同基本信息和用户列表信息。
(2)角色管理
●功能:管理员可以对系统的角色进行新增、查询,修改和到牌操作。
●性能:为管理员提供新增角色界面。
●输入项目:新增角色的名称、权限等相关角色信息(角色权限信息必填)。 (按照自己的话重写,按原文写0分)。
●输出项目:新增成功:在新增角色页面提示“添加成功!”:新增失败:视示角色权限信息不能为空。
查询统计模块
(1)合同信息查询管理:
●功能:可以根据合同编号进行合同查询
●性能:提供快速准确的根据合同编号查询合同的功能,查询响应时间在合理范围内,并在界面上清晰展示查询结果 。 (按照自己的话重写,按原文写0分)。
●输入项日:合同编号。 (按照自己的话重写,按原文写0分)。
●输出项目:显示符合查询条件的合同。
(2)合同流程查询管理:
●功能:根据合同状态等查询合同。
●性能:供快速准确的根据合同状态查询合同的功能,查询响应时间在合理范围内,并在流程查询页面以清晰的列表形式展示查询结果 。 (按照自己的话重写,按原文写0分)。
●输入项日:管理员在流程查询页面中选择“中批完成”状态。
●输出项目:在流程查询页面以列表的形式显示“已审批合同”。
二、根据题目描述,使用调试工具进行功能调试。(此题 后半段先不看)
考核内容:现有一个调色板程序,在调色板中添加若干个颜色,输出调色板编码内容。代码如下:(解答说明:下列程序黑色和红色色是程序中已有的代码,无需背诵。其中红色色是有问题的需要修改为 下方蓝色的,所以蓝色的要背)改错 25分
/**
* 颜色类
*/
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);
}
}
/**
* 调色板类
*/
class Palette {
public int number; // 颜色数
private ColorX[] palette; // 颜色表
public Palette(ColorX[] palette,int number) {
this.number = number;
this.palette = palette;
}
// 新增下方的同名无惨构造函数,初始化颜色表数组
public Palette() {
this.number = 0;
this.palette = new ColorX[256]; // 假设最多256种颜色
}
public void addColor(ColorX color) {
this.palette[this.number] = color;
}
}
// 将上面红色的部分修改为完善addColor方法
public void addColor(ColorX color) {
if (number < palette.length) {
this.palette[this.number] = color;
this.number++; // 增加颜色计数
} else {
System.out.println("调色板已满,无法添加更多颜色");
}
}
@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(); // 假设最多20种颜色
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);
}
}
2.请写出修正后的程序运行效果(解题方法 请把 修正后的程序(2处修改点)都给豆包等ai 使用如下提示词 进行提问请给出上述程序的运行效果20分 所以下面的要看懂后重写)
修改后的运行结果
0DDF20DB26D5D980BB44BEC639D6322996FA9B95CAFBB0C7DFEAA6D04611328556CB6464BDFAB8CD
所以 考试时可以使用直接运行出结果,不会用java的可以直接用计算器的进制转换逐个算
三、根据题目描述,使用调试工具进行跟踪调试。
考核内容:以下Java代码实现了在股票交易中,股票代理根据客户发出的股票操作指示进行股票的买卖操作。改正代码错误,运行程序。
解答说明:下列程序黑色和红色色是程序中已有的代码,无需背诵。其中红色色是有问题的需要修改为 下方蓝色的,所以蓝色的要背
import java.util.ArrayList;
import java.util.List;
class Stock {
private String name;
private int quantity;
public Stock(String name, int quantity) {
name = name;
quantity = quantity;
this.name = name; // 修正:添加this
this.quantity = quantity; // 修正:添加this
}
public void buy() {
System.out.println("[买进]:" + name + ",数量:" + quantity);
}
public void sell() {
System.out.println("[卖出]:" + name + ",数量:" + quantity);
}
}
interface Order {
private void execute();
void execute(); // 修正:添加void,移除private
}
class BuyStock implements Order {
private Stock stock;
public BuyStock(Stock stock) {
this.stock = stock;
}
public void execute() {
buy();
stock.buy(); // 调用stock对象的buy方法
}
}
class SellStock implements Order {
private Stock stock;
public SellStock(Stock stock) {
this.stock = stock;
}
public void execute() {
stock.sell();
}
}
class Broker {
private List<Order> orderList = new ArrayList<Order>();
public void takeOrder(Order order) {
orderList.add(order);
}
public void placeOrders() {
for (Order order : orderList) {
order.execute();
}
orderList.clear();
}
}
public class Modify3 {
public static void main(String[] args) {
Stock xStock = new Stock("新能源", 500);
Stock yStock = new Stock("白酒", 1000);
Order buyStockOrder = new BuyStock(xStock);
Order sellStockOrder = new SellStock(yStock);
Broker broker = new Broker();
broker.takeOrder(sellStockOrder);
broker.takeOrder(buyStockOrder);
broker.placeOrders();
}
}
四、根据题目描述,编写Java代码完成测试。
考核内容:现PasswordCheck 类中有check函数,用来验证密码的有效性和其强弱。代码如下:
请针对check函数功能编写测试用例。
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
class PasswordCheckTest {
private PasswordCheck checker = new PasswordCheck();
// 测试空密码
@Test
void testEmptyPassword() {
assertEquals("错误", checker.check(""));
}
// 测试长度不足的密码
@ParameterizedTest
@ValueSource(strings = {"", "a", "abcde"})
void testShortPasswords(String password) {
assertEquals("错误", checker.check(password));
}
// 测试弱密码(只包含小写字母和数字)
@ParameterizedTest
@ValueSource(strings = {"abcdef", "12345678", "abc123"})
void testWeakPasswords(String password) {
assertEquals("弱密码", checker.check(password));
}
// 测试强密码(包含大写字母或特殊字符)
@ParameterizedTest
@ValueSource(strings = {"Abcdef", "abc@123", "ABC123", "a1B2c3"})
void testStrongPasswords(String password) {
assertEquals("强密码", checker.check(password));
}
// 测试边界长度(刚好6个字符)
@Test
void testMinimumLength() {
assertEquals("弱密码", checker.check("abcdef"));
assertEquals("强密码", checker.check("Abc123"));
}
// 测试包含特殊字符的密码
@Test
void testWithSpecialCharacters() {
assertEquals("强密码", checker.check("abc@123"));
assertEquals("强密码", checker.check("!@#$%^&*"));
}
}
五、根据题目描述,编写Java代码完成测试。
考核内容:现Casher 类中有 compute 函数用来计算商品价格并根据情况打折和优惠。代码
如下:
public class Casher {
public double compute(int count, double price) {
double totalPrice = 0.0;
// 根据数量分级计算总价
if (count <= 10) {
totalPrice = count * price; // 基础价格
} else if (count <= 20) {
totalPrice = count * price * 0.9; // 10%折扣
} else {
totalPrice = count * price * 0.8; // 20%折扣
}
// 满300减30的优惠
totalPrice -= Math.floor(totalPrice / 300) * 30;
return totalPrice;
}
}
请针对compute 函数功能编写测试用例。
答案:备注:中文字是帮助你记忆的。
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
class CasherTest {
private Casher casher = new Casher();
// 测试无折扣情况
@Test
void testNoDiscount() {
double result = casher.compute(5, 10.0);
assertEquals(50.0, result);
}
// 测试10%折扣
@Test
void test10PercentDiscount() {
double result = casher.compute(15, 20.0);
assertEquals(270.0, result);
}
// 测试20%折扣
@Test
void test20PercentDiscount() {
double result = casher.compute(25, 12.0);
assertEquals(240.0, result);
}
// 测试满减优惠
@Test
void testReduction() {
double result = casher.compute(20, 15.0); // 总价300元
assertEquals(270.0, result); // 满300减30
}
// 测试边界条件
@Test
void testBoundary() {
double result = casher.compute(10, 30.0); // 总价300元但数量触发10%折扣
assertEquals(240.0, result); // 折后270元,满减后240元
}
}
六、根据题目描述,使用多线程技术编写程序。
考核内容:现火车站开设了3个窗口,共销售200张车票,要求3个窗口同时销售,每销售一张票大约要100ms时间。输出窗口卖出的第几张车票,如下所示:
窗口1: 已出售第100张票
窗口3: 已出售第99张票
窗口2: 已出售第98张票
窗口3: 已出售第97张票
窗口1: 已出售第96张票
窗口3: 已出售第95张票
窗口2: 已出售第94张票
窗口3: 已出售第93张票
窗口1: 已出售第92张票
窗口3: 已出售第91张票
请使用Java的线程技术实现该功能。
下面是在Eclipse中创建和运行这个多线程售票系统项目的详细过程:(不要写 不要背 要会)
1. 启动Eclipse并创建新项目
打开Eclipse:双击Eclipse图标启动
创建Java项目:
点击菜单栏 File > New > Java Project
在弹出窗口中输入项目名称,例如 TicketSalesSystem
点击 Finish 按钮
2. 创建Java类文件
在项目中创建类:
右键点击项目名称 TicketSalesSystem
选择 New > Class
在弹出窗口中:
包名(Package):可以留空或输入如 com.ticketsales
名称(Name):输入 TicketSalesSimulation
勾选 public static void main(String[] args) 选项
点击 Finish
3. 编写代码
将代码粘贴到类文件中:
在编辑器中打开 TicketSalesSimulation.java
删除自动生成的模板代码
粘贴前面提供的完整代码
代码格式化(可选):
选中全部代码
右键点击选择 Source > Format 或按 Ctrl+Shift+F
4. 运行程序
运行项目:
右键点击 TicketSalesSimulation.java 文件
选择 Run As > Java Application
或者点击工具栏上的绿色运行按钮
查看控制台输出:
程序运行结果将显示在底部的 Console 窗口中
输出会类似于题目要求的格式
具体代码如下(全部要背 ,懂JAVA的可以改写相关函数名 不要求一致)
public class TicketSalesSimulation {
private static final int TOTAL_TICKETS = 200;
private static int remainingTickets = TOTAL_TICKETS;
private static final Object lock = new Object();
public static void main(String[] args) {
// 创建3个售票窗口线程
Thread window1 = new Thread(new TicketWindow("窗口1"), "Window1");
Thread window2 = new Thread(new TicketWindow("窗口2"), "Window2");
Thread window3 = new Thread(new TicketWindow("窗口3"), "Window3");
// 启动线程
window1.start();
window2.start();
window3.start();
}
static class TicketWindow implements Runnable {
private final String windowName;
public TicketWindow(String name) {
this.windowName = name;
}
@Override
public void run() {
while (true) {
synchronized (lock) {
if (remainingTickets <= 0) {
break; // 票已售完
}
// 模拟售票时间
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 售票
int soldTicket = TOTAL_TICKETS - remainingTickets + 1;
System.out.printf("%s:\t已出售第%d张票%n", windowName, soldTicket);
remainingTickets--;
}
// 添加一点随机性,模拟现实中的处理时间差异
try {
Thread.sleep((long) (Math.random() * 50));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
考试一共100分,第一题必考(35分)
第二题 第三题考一个 (45分)
第一题分 第五题 第六题选考一个(20分)(不会就放弃吧)
所以重点练习 1,2,3。第4,5,6三题 对于小白太痛苦了,不背也能及格
视频教程要到周四晚上才会有 如果有操作基础的可以先练起来了。小白可以先背答案