【大学生软件测试基础】自动贩卖机 - 因果图

有一个饮料自动售货机(单价为1元5角钱)的控制处理软件,它的功能说明书如下:

若投入1元5角钱的硬币,按下 “可乐”、“雪碧”或“绿茶”按钮,则送出相应的饮料;

若投入2元钱的硬币,同样也是按下“可乐”、“雪碧”或“绿茶”按钮,则在送出饮料的同时退还5角钱的硬币。

若投入2元钱的硬币,同样也是按下“可乐”、“雪碧”或“绿茶”按钮,则在送出饮料的同时退还5角钱的硬币。

任务1、根据规格说明书,列出原因和结果;
任务2、根据原因和结果,画出因果图;
任务3、根据因果图,画出决策表;
任务4、根据决策表,设计测试用例;
原因编号结果编号
投入1元5角硬币C1退换5角钱e1
投入2元硬币C2送出"可乐"饮料e2
按下"可乐"按钮C3送出"雪碧"饮料e3
按下"雪碧"按钮C4送出"绿茶"饮料e4
按下"绿茶"按钮C5 

 

 

测试用例
编号输入数据预期结果
投币按钮
Test-11.5可乐送出可乐
Test-21.5雪碧送出雪碧
Test-31.5绿茶送出绿茶
Test-4任意不按未按下按钮
Test-52可乐送出可乐,退5角
Test-62雪碧送出雪碧,退5角
Test-72绿茶送出绿茶,退5角
Test-80任意按钮请投币

 

以下是一个简单的 C 语言代码实现: ```c #include <stdio.h> int main() { // 定义饮料和价格数组 char drinks[3][10] = {"可乐", "雪碧", "红茶"}; float prices[3] = {1.5, 1.5, 1.5}; // 定义硬币面值数组 float coins[3] = {0.5, 1, 2}; // 初始化投入的硬币数量 float coins_inserted = 0; while (1) { // 显示菜单和投入的硬币数量 printf("====== 售货机 ======\n"); printf("可选饮料: \n"); for (int i = 0; i < 3; i++) { printf("%s (%.1f元)\n", drinks[i], prices[i]); } printf("投入的硬币数量: %.1f元\n", coins_inserted); printf("====================\n"); // 获取用户输入 char selection[10]; printf("请选择饮料,或者投入硬币: "); scanf("%s", &selection); // 处理用户选择饮料的情况 int selected_drink = -1; for (int i = 0; i < 3; i++) { if (strcmp(selection, drinks[i]) == 0) { selected_drink = i; break; } } if (selected_drink >= 0) { float price = prices[selected_drink]; if (coins_inserted >= price) { printf("你选择了%s,请取走你的饮料。\n", drinks[selected_drink]); coins_inserted = coins_inserted - price; } else { printf("硬币不足,请投入更多的硬币。\n"); } } // 处理用户投入硬币的情况 int selected_coin = -1; for (int i = 0; i < 3; i++) { if (coins[i] == atof(selection)) { selected_coin = i; break; } } if (selected_coin >= 0) { coins_inserted = coins_inserted + coins[selected_coin]; if (coins_inserted >= 2) { printf("找零5角。\n"); coins_inserted = coins_inserted - 2.5; } } // 处理无效输入的情况 if (selected_drink < 0 && selected_coin < 0) { printf("无效的选择,请重新输入。\n"); } } return 0; } ``` 这个程序也会不断循环,直到用户手动中断或者关闭程序窗口。它显示一个简单的菜单,让用户选择饮料或者投入硬币。如果用户选择饮料但是硬币不足,程序会提示用户投入更多的硬币。如果用户投入2元硬币,程序会自动找零5角。注意,C 语言中字符串比较需要使用 `strcmp` 函数,而将字符串转换为浮点数需要使用 `atof` 函数。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值