608学习

 
一、补充完整详细设计说明内容(红色部分要背)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三题 对于小白太痛苦了,不背也能及格
视频教程要到周四晚上才会有 如果有操作基础的可以先练起来了。小白可以先背答案
posted @ 2025-06-06 18:36  啸生风雪  阅读(5)  评论(0)    收藏  举报