c语言自动售货机实验报告
自动售货机报告c语言课程设计报告报告

- -自动售货机图形模拟系统需求分析课题名称:自动售货机图形模拟系统小组成员:朱伟鑫U201314490班级:测控1301班指导老师:周纯杰、何顶新、刚、周凯波上交日期:贰零壹肆年玖月贰拾壹日目录1.引言--现实中的自动售货机 (2)2.运行环境 (3)3.功能设计 (3)3.1触摸屏 (3)3.2自动换零 (3)3.3销量统计 (3)3.4提前补货 (4)3.5显示商品信息 (4)3.6自动售货机网络 (4)3.7无响应自动处理 (4)4.软件系统需求分析 (4)4.1图形显示 (4)4.2菜单模块 (5)4.3交易模块 (5)4.4管理模块 (5)5.系统流程图 (5)6.时间安排...........................................6自动售货机图形模拟系统朱伟鑫课题要求以自动售货机为对象,图形化模拟投币、找零、出货的基本流程;能对售货机的商品进行管理:补货、查询、统计等功能。
1引言--现实中的自动售货机自动售货机是能根据投入的钱币自动付货的机器。
自动售货机是商业自动化的常用设备,它不受时间、地点的限制,能节省人力、方便交易。
是一种全新的商业零售形式,又被称为24小时营业的微型超市。
能分为三种:饮料自动售货机、食品自动售货机、综合自动售货机。
从自动售货机的发展趋势来看,它的出现是由于劳动密集型的产业构造向技术密集型社会转变的产物。
大量生产、大量消费以及消费模式和销售环境的变化,要求出现新的流通渠道;而相对的超市、百货购物中心等新的流通渠道的产生,人工费用也不断上升;再加上场地的局限性以及购物的便利性等这些因素的制约,无人自动售货机作为一种必须的机器便应运而生了。
从广义来讲投入硬币、纸币、信用卡等后便可以销售商品的机械,从狭义来讲就是自动销售商品的机械。
从供给的条件看,自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购买好奇心的自身性能,可以很好地解决人工费用上升的问题等各项优点。
商品销售系统实验报告C语言程序设计课程实训报告

HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGYC语言程序设计课程实训报告课设题目:商品销售管理系统专业:计算机科学与技术班级: K1373-4姓名:高原成绩:完成日期: 2014年1月16日-2014年1月17日指导教师: 张吴波目录1.课程实训目的 (3)2.需求分析 (3)2.1要求 (3)2.2任务描述 (3)2.3运行环境 (4)2.4开发工具 (4)3.总体设计 (4)3.1系统流设计 (4)3.2系统模块设计 (6)4.详细设计 (6)4.1数据结构设计 (6)4.2模块接口设计 (7)4.3 以下是几个主要模块的流程图: (8)5.运行结果 (9)5.1主菜单界面: (10)5.2导入商品信息界面: (11)5.3输入销售记录界面: (12)5.4 查询销售历史界面: (13)5.5显示顾客信息界面: (14)5.6保存信息界面:5.7显示商品信息界面:6.程序调试与测试 (16)6.1程序调试与分析 (16)6.2程序测试结果 (16)7.问题与不足 (16)8.建议 (17)9.编程体会 (17)10.程序源代码: (17)11.参考文献 (17)12.用户使用手册 (17)1.课程实训目的1)通过课程实训,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
2)通过课程实训,进一步掌握C语言中重要的数据结构。
掌握并熟练运用指针、链表、结构体、文件等数据结构。
3)通过课程实训,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。
4)通过课程实训,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。
5)通过课程实训,加强了自己的程序分析能力。
2.需求分析2.1要求1)遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问题的能力。
2)运用结构化程序设计方法,按照课程实训题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。
自动售货机设计报告

(5)当投入的钱数总数超过所需钱数(可乐12元,咖啡15元)时,找钱指示灯亮。找钱,自动复位。
(6)找钱多少(可选)
所需输入:1元投币口所需输出:咖啡出口
5元投币口咖啡按钮指示灯
10元投币口咖啡按钮指示灯
咖啡按钮可乐按钮指示灯
可乐按钮可乐出口
手动复位按钮找钱指示灯
青岛理工大学琴岛学院
课程设计报告
课题名称:PLC课程设计
学院:机电工程系
专业班级:电气工程及其自动化14-21
学号:
学生:
指导老师:
青岛理工大学琴岛学院教务处
2014年1月2日
学生
指导老师
课题名称
自动售货机
设计时间
12月22日-1月2日
设计地点
设计目的
本次自动售货机设计方案比较简单,在制作这次PLC课题时也遇到了不少问题,通过本次课题设计使我明白了只有进行实际的操作才能有效的避免在程序设计中的各种计算失误。
设计主要研究的是自动售货机中有关PLC软件编程的部分。自动售货机是由于劳动密集型的产业构造向技术密集型社会转变的产物。自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购买好奇心的自身性能,可以很好地解决人工费用上升的问题等各项优点。所以说自动售货机是今后小商品和饮料销售方式的一个很好的发展趋势,它的出现将极大的方便人们购买。通过本次论文设计,使我对PLC编程的知识有了更深层次的认识,提高了我的动手能力,而在论文设计中通过查阅文献,搜集资料,综合分析等方面的训练,使我综合运用各方面知识,分析解决实际问题的能力也得到了很大的提高。另外,我还学会了一些基本软件的应用。
自动售货机系统-《C语言程序设计》课程设计报告

money.wy=50;
money.sy=0;
a.xsje=a.sc*2;
b.xsje=b.sc*3;
c.xsje=c.sc*6;
fp=fopen("jilu.txt","a");
do{printf("\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^\n");
结算功能:取出今天所有的10元纸币,并且分别设置零钞的数目
销售界面:顾客投入纸币,选择商品,获得商品和零钱;或者直接显示错误并退还纸币
【题目要求】
(1)为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后操作员通过菜单项选择希望进行的操作项目;
(2)你的售货机用户不希望每一位顾客都有权限执行以上功能,因此一旦进入销售界面,就不应当退回到系统界面,但是应允许顾客反复购买,前一个顾客购买完毕后应停留在销售界面里允许下一个顾客操作。直到某位特殊的顾客(超级顾客)输入特殊的商品代号(密码)方可回到主控界面。
在自动售货机系统中,数据的固化采用.out文件格式进行储存。
关键词:计算机自动售货机储存
1 设计内容和要求
某公司请你为其生产的自动售货机编写软件。这种无人值守自动售货机贩卖价值为A、B、C的三种商品,价格分别为2元,3元和6元。顾客投入10元的纸币,然后选择购买3种商品之一,自动售货机吐出商品,并且找给用户零钱。如果商品已经卖完,或者无法找零,则给出用户一个提示,商品已售完,并且退还纸币。
7月4日9:00~12:00学生课程设计答辩,14:00~17:00学生提交课程设计报告
考
参考资料
C语言实现最全自动售货机

C语⾔实现最全⾃动售货机拥有所有功能⾃动售货机C语⾔主要功能:欢迎页⾯、通过⽂本⽂件读⼊货物信息、上货、卖货(包含找零,付款不⾜等多种情况)、增加新品种、按单价从⾼到低排序、按序号排序、退出前将所有货物信息回写进⽂本⽂档实际代码⾮常简单使⽤环境VS2017编译运⾏正常;DEV C++删除第⼀⾏(#define _CRT_SECURE_NO_WARNINGS)注意事项1.第⼀次使⽤需要进⼊系统维护录⼊所有信息.2.在使⽤时会在桌⾯创建⼀个⽂本⽂件记录数据,下次运⾏也会有数据.3.录⼊数据时⼀定注意按照系统提⽰,⼀定要先输⼊编号再进⾏创建新的品种,可以输⼊中⽂名称,如农夫⼭泉.//初次使⽤请进⾏系统维护并录⼊商品信息#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#define SIZE 100000#include<string.h>#include<stdlib.h>#include<conio.h>//货物数据结构struct huowu{int n; //编号char name[10]; //名称int Price; //价格int Maths; //剩余数量}s[SIZE];/*录⼊数据*/void finput(){FILE *fp;int i, t, x = 1;fp = fopen("fs+", "w"); //printf("已进⼊重新录⼊数据界⾯,之前数据将被清除!\n\n请按提⽰输⼊编号\n");for (i = 0; i < SIZE; i++){printf(" 第%d个请输⼊编号(请与左⽅编号⼀致,按回车键进⼊下⼀步,当输⼊i=-1时,完成录⼊商品信息)\n", x++);//需要逐⼀⼿动先输⼊编号scanf("%d", &t);i = t;if (i == -1){fclose(fp);return;}else{i = t - 1;printf("请输⼊名称价格及添加的库存,⽤空格间隔开,按回车键继续\n");scanf("%s %d %d", &s[i].name, &s[i].Price, &s[i].Maths);s[i].n = i + 1;fwrite(&s[i], sizeof(struct huowu), 1, fp);}}fclose(fp);}/*输出数据*/void flist(){FILE *fp;printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 列表\n");printf("-----------------------------------------------------------\n");printf("序号名称价格库存 \n");printf("-----------------------------------------------------------\n");for (i = 0; fread(&s[i], sizeof(struct huowu), 1, fp) == 1; i++){printf("%d%18s%16d%16d\n", s[i].n, s[i].name, s[i].Price, s[i].Maths); }printf("-----------------------------------------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");fclose(fp);}/*修改数据*/void fchange(){FILE *fp;int k;fp = fopen("fs+", "r");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 列表\n");printf("-----------------------------------------------------------\n");printf("序号名称价格库存 \n");printf("-----------------------------------------------------------\n");for (k = 0; fread(&s[k], sizeof(struct huowu), 1, fp) == 1; k++){printf("%d%18s%16d%16d\n", s[k].n, s[k].name, s[k].Price, s[k].Maths); }printf("-----------------------------------------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");int i, n;int flag = 0;printf("请输⼊要修改商品的序号:");scanf("%d", &n);for (i = 0; i <= SIZE; i++)if (s[i].n == n){printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf(" 列表\n");printf("-----------------------------------------------------------\n");printf("序号名称价格\n");printf("-----------------------------------------------------------\n");printf("%d%32s%25d\n", s[i].n, s[i].name, s[i].Price);printf("-----------------------------------------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); n = i;flag = 1;break;}if (flag == 0){printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 输⼊错误!\n");printf(" 请重新选择!\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");return;}printf("\n\n\n");fp = fopen("fs+", "r+");fseek(fp, n * sizeof(struct huowu), 0);printf("请输⼊新的名称价格:");scanf("%s%d", s[i].name, &s[i].Price);fwrite(&s[i], sizeof(struct huowu), 1, fp);fclose(fp);fp = fopen("fs+", "r");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 列表\n");printf("-----------------------------------------------------------\n");printf("序号名称价格\n");printf("-----------------------------------------------------------\n");for (i = 0; fread(&s[i], sizeof(struct huowu), 1, fp) == 1; i++){printf("%d%28s%28d\n", s[i].n, s[i].name, s[i].Price);printf("-----------------------------------------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");fclose(fp);}/* 排序*/void ftaxis(){int i, j, n;FILE *fp;struct huowu t;fp = fopen("f.s+", "r");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 列表\n");printf("-----------------------------------------------------------\n");printf("序号名称价格\n");printf("-----------------------------------------------------------\n");for (i = 0; fread(&s[i], sizeof(struct huowu), 1, fp) == 1; i++){printf("%d%28s%28d\n", s[i].n, s[i].name, s[i].Price);}printf("-----------------------------------------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");fclose(fp);n = i;for (i = 0; i < n; i++)for (j = i + 1; j < n; j++)if (s[i].Price < s[j].Price){t = s[i];s[i] = s[j];s[j] = t;}fp = fopen("fss+", "w");printf("\n\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 列表 \n");printf("-----------------------------------------------------------\n");printf("序号名称价格\n");printf("-----------------------------------------------------------\n");for (i = 0; i < n; i++){fwrite(&s[i], sizeof(struct huowu), 1, fp);printf("%d%28s%28d\n", s[i].n, s[i].name, s[i].Price);}printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");fclose(fp);}//添加库存int fadd(){FILE *fp;int i, num, n;int flag = 0;printf("请输⼊要补货商品的序号:");scanf("%d", &n);for (i = 0; i <= SIZE; i++)if (s[i].n == n){printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf(" 列表\n");printf("-----------------------------------------------------------\n");printf("序号名称库存\n");printf("-----------------------------------------------------------\n");printf("%d%8s%8d\n", s[i].n, s[i].name, s[i].Maths);printf("-----------------------------------------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); n = i;flag = 1;break;}if (flag == 0)printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 输⼊错误!\n");printf(" 请返回!\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");return 0;}printf("\n\n\n");fp = fopen("fs+", "r+");fseek(fp, n * sizeof(struct huowu), 0);printf("请输⼊添加后此商品总个数");scanf("%d", &s[i].Maths);fwrite(&s[i], sizeof(struct huowu), 1, fp);fclose(fp);fp = fopen("fs+", "r");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 列表\n");printf("-----------------------------------------------------------\n");printf("序号名称库存\n");printf("-----------------------------------------------------------\n");for (i = 0; fread(&s[i], sizeof(struct huowu), 1, fp) == 1; i++){printf("%d%8s%8d\n", s[i].n, s[i].name, s[i].Maths);}printf("------------------------补货完成-------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");fclose(fp);}/*内部操作systeam*/int neibu(){system("cls");int n;for (;;){printf("\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("※※\n");printf("※欢迎进⼊⾃动售货机(内部) ※\n");printf("※※\n");printf("※※\n");printf("※主菜单※\n");printf("※※\n");printf("※▲1.重新所有录⼊数据▲※\n");printf("※▲2.展⽰商品信息▲※\n");printf("※▲3.补充库存▲※\n");printf("※▲4.修改数据▲※\n");printf("※▲5.按照价格排序并⽣成另⼀个⽂件▲※\n");printf("※▲6.退出系统▲※\n");printf("※※\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n"); printf("请输⼊选择项(1-6):");scanf("%d", &n);printf("\n\n\n\n");if (n > 0 && n < 8){switch (n){case 1:finput(); break;case 2:flist(); break;case 3:fadd(); break;case 4:fchange(); break;case 5:ftaxis(); break;case 6:printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("※※\n");printf("※谢谢使⽤! ※\n");printf("※再见! ※\n");printf("※※\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");system("pause");system("cls"); //清空屏幕return 0;// exit(0);}else{printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("※※\n");printf("※输⼊错误! ※\n");printf("※请退出! ※\n");printf("※※\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");break;}}system("cls"); //清空屏幕}/*购买*/void buy(){FILE *fp;int i;system("cls");fp = fopen("fs+", "r");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 列表\n");printf("-----------------------------------------------------------\n");printf("序号名称价格库存 \n");printf("-----------------------------------------------------------\n");for (i = 0; fread(&s[i], sizeof(struct huowu), 1, fp) == 1; i++){printf("%d%18s%16d%18d\n", s[i].n, s[i].name, s[i].Price, s[i].Maths); }printf("----------------请输⼊需要的商品按回车继续-----------------\n");printf("-----------------------------------------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");int num, n, B = 1;float money = 0.0, m = 0;int flag = 0;restar:printf("请输⼊要购买商品的序号:");scanf("%d", &n);for (i = 0; i <= SIZE; i++)if (s[i].n == n){printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("-----------------------------------------------------------\n");printf("序号名称价格\n");printf("-----------------------------------------------------------\n");printf("%d%30s%26d元\n", s[i].n, s[i].name, s[i].Price);printf("-----------------------------------------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); n = i;flag = 1;break;}if (flag == 0){printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf(" 输⼊错误!\n");printf(" 请返回!\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); return;}printf("\n\n\n");fp = fopen("fs+", "r+");fseek(fp, n * sizeof(struct huowu), 0);s[i].Maths = s[i].Maths - 1;fwrite(&s[i], sizeof(struct huowu), 1, fp);fclose(fp);fp = fopen("fs+", "r");if (s[i].Maths <= 0){printf("存货不⾜,请购买其他商品!\n");s[i].Maths = 0;goto restar;}printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("-----------------------------------------------------------\n");printf(" 请⽀付 %d 元(仅限⼀元以上⾯额)\n", s[i].Price);printf("-----------------------------------------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");while (B){scanf("%f", &money);m += money;if (m < s[i].Price){printf("⾦额不⾜,请继续⽀付\n\n");}if (m == s[i].Price){printf("付款成功\n\n");B = 0;break;s[i].Maths = s[i].Maths - 1;}if (m > s[i].Price){money = m - s[i].Price;printf(" 付款成功,找零%f请您收好\n\n\n\n 欢迎下次使⽤\n\n\n", money);B = 0;break;s[i].Maths = s[i].Maths - 1;}}fclose(fp);system("pause");}//主函数int main(){char sr;//定义电脑接受的字符system("color F0");start://起始位置system("cls");printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("※欢迎使⽤⾃动售货机(初始试⽤版)※\n");printf("※※\n");printf("※请输⼊选项※\n");printf("※ a.⽤户购买※\n");printf("※ b.系统维护※\n");printf("※※\n");printf("※按回车继续。
自动售货机实验报告

软件课程设计实验报告课题:自动售货机班级:电信作者:学号:课程设计实验报告第一部分程序代码 (7)第二部分软件设计文档 (15)一、软件需求说明书 (15)1引言 (15)1.1编写目的 (15)1.2背景 (15)1.3定义 (15)1.4参考资料 (16)2任务概述 (16)2.1目标 (16)2.2用户的特点 (16)2.3假定和约束 (16)3需求规定 (16)3.1对功能的规定 (17)3.2对性能的规定 (17)3.3输人输出要求 (18)3.4数据管理能力要求 (18)3.5故障处理要求 (18)3.6其他专门要求 (19)4运行环境规定 (19)4.1设备 (19)4.2支持软件 (19)4.3接口 (19)4.4控制 (19)二、概要设计说明书 (20)1引言 (20)1.1编写目的 (20)1.2背景 (20)1.3定义 (20)1.4参考资料 (20)2 需求说明 (21)2.1需求规定 (21)2.2运行环境 (21)2.3基本设计概念和处理流程 (21)2.5功能器求与程序的关系 (22)2.6人工处理过程 (23)2.7尚未解决的问题 (23)3接口设计 (23)3.1用户接口 (23)3.2外部接口 (23)3.3内部接口 (23)4运行设计 (23)4.1运行模块组合 (23)4.2运行控制 (24)4.3运行时间 (24)5系统数据结构设计 (24)5.1逻辑结构设计要点 (24)5.2物理结构设计要点 (24)5.3数据结构与程序的关系 (24)6系统出错处理设计 (25)6.1出错信息 (25)6.2补救措施 (25)三、详细设计说明 (26)1引言 (26)1.1编写目的 (26)1.2背景 (26)1.3定义 (26)1.4参考资料 (26)2程序系统的结构 (27)3投币模块 (27)3.1程序描述 (27)3.2功能 (27)3.3性能 (27)3.4输入项 (28)3.5输出项 (28)3.6算法 (28)3.7流程逻辑 (28)3.8接口 (28)3.9存储分配 (29)3.10注释设计 (29)3.11限制条件 (29)3.12测试计划 (29)4退币模块 (30)4.1程序描述 (30)4.2功能 (30)4.3性能 (30)4.4输入项 (30)4.5输出项 (30)4.6算法 (30)4.7流程逻辑 (31)4.8接口 (31)4.9存储分配 (31)4.10注释设计 (31)4.11限制条件 (32)4.12测试计划 (32)4.13尚未解决的问题 (32)5取货模块 (32)5.1程序描述 (32)5.2功能 (32)5.3性能 (32)5.4输入项 (32)5.5输出项 (33)5.6算法 (33)5.7流程逻辑 (33)5.8接口 (33)5.9存储分配 (34)5.10注释设计 (34)5.11限制条件 (34)5.12测试计划 (34)5.13尚未解决的问题 (34)6购买模块 (35)6.1程序描述 (35)6.2功能 (35)6.3性能 (35)6.4输入项 (35)6.5输出项 (35)6.6算法 (36)6.7流程逻辑 (36)6.8接口 (37)6.10注释设计 (38)6.11限制条件 (38)6.12测试计划 (38)6.13尚未解决的问题 (38)四、测试分析报告 (39)1引言 (39)1.1编写目的 (39)1.2背景 (39)1.3定义 (39)1.4参考资料 (39)2测试概要 (39)3测试结果及发现 (40)3.1测试1(启动系统) (40)3.2测试2(退出系统) (42)3.3测试3(货品展示) (42)3.4测试4(投币购买) (42).5测试5(取出物品) (43)3.6测试6(找零) (44)3.7测试7(退币) (44)3.8测试8(报错) (45)4对软件功能的结论 (45)4.1功能 (45)4.2能力 (46)4.3限制 (46)5分析摘要 (46)5.1能力 (46)5.2缺陷和限制 (46)5.3建议 (46)5.4评价 (47)6测试资源消耗 (47)五、项目开发总结报告 (48)1引言 (48)1.1编写目的 (48)1.2背景 (48)1.3定义 (48)1.4参考资料 (48)2实际开发结果 (49)2.1产品 (49)2.2主要功能和性能 (50)2.3基本流程 (50)2.4进度 (50)3开发工作评价 (52)3.1对生产效率的评价 (52)3.2对产品质量的评价 (52)3.3对技术方法的评价 (52)3.4出错原因的分析 (52)4经验与教训 (53)第一部分程序代码//引入awt、swing包import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;//类Seller的定义,用于实现所有的功能public class Seller extends JFrame implements ActionListener{private static final long serialVersionUID = 6843588200041215448L;private double money = 0.0;//"money"表示用户余额private boolean occupy; //"occupy=false"表示出货口未满,用户可以购买;//"occupy=true"表示出货口已满,用户必须取完货才能继续购买。
C语言实验报告(16)

《C语言》实验报告专业_____________年级_____________学号_____________学生姓名_____________指导老师_____________华中师范大学信息管理系编I 实习目的和意义C语言程序设计实验的目的是培养学生具有初步的C语言程序设计、编程、调试和排除C语言程序语法、逻辑错误的能力。
通过实验使学生进一步熟悉并掌握C语言程序的调试运行环境、程序设计过程、程序的基本结构以及程序设计的基本方法。
通过实验,使学生将程序设计的理论知识与实践相结合,为学生学习其他计算机编程语言打下基础。
在每一次的实验过程中,学生要认真复习基本概念,独立编写程序,并上机调试运行,培养自己发现程序中的错误、改正错误以使程序能正确运行的能力。
经验丰富的人,当编译时出现“出错信息”时,能很快地判断出错误所在,并改正之。
而缺乏经验的人即使在系统给出明确出错提示信息下也往往找不出错误而求救于别人。
对于学生来说,不仅要了解和熟悉有关理论和方法,还要求自己动手实现,要求会编写程序并上机调试通过。
因此调试程序本身是程序设计课程的一个重要内容和基本要求,应给予充分的重视。
调试程序的经验固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来积累,而且有些经验是只能“意会”难以“言传”。
调试程序的能力,是学完《C语言程序设计》之后,每个学生应当掌握的一项基本功。
因此,在实习时千万不要在程序通过后就认为完成任务了,而应当在已通过的程序基础上作一些改动(例如修改一些参数、增加程序一些功能、改变输入数据的方法等,甚至于“自设障碍”,即把正确的程序改为有错的,如用scanf函数输入变量时,漏写“&”符号,使数组下标越界,使整数溢出等),观察和分析所出现的情况,并认真、及时总结。
这样的学习是灵活主动的学习而不是呆板被动的学习,才会有真正的收获。
II实验要求1.每次实验中有若干习题,每个学生至少应该完成其中的三道习题。
自动饮料售货机(C语言程序设计)

源码在后面! 一、需求分析本程序为饮料自动售货机的程序,能实现饮料的自动销售,并采用文件的形式记录购买数据,能起到节约人力、减少成本的目的。
二、总体设计本设计主要分为两大系统(顾客购买以及管理员管理系统)以及放于d 盘中“饮料.txt ”的文件系统,每个系统分别执行一些特定的功能。
如下图所示:图一 总体设计概念图三、详细设计3.1 管理员模块管理员是自动售货机系统中权限最高的用户。
在管理员工作模式下,管理员可以进行货物进行补充操作、商品库存信息查询、销售额信息查询、切换到销售界面几大操作。
自动饮料售货机顾客购买系统管理员管理系统选择饮料投币找币记录数据登录界面查询销售额查询剩余数量补货管理员模块的功能结构图,如下:图3.1 管理员操作流程图3.2 顾客购买模块用户模块主要是销售商品的界面。
销售商品的整个过程是,用户投入货币,然后输入商品代号,然后进行找零等操作,最后放出商品,完成交易。
下面来看一下用户模块的流程。
管理员输入密码选择商品库存信息查询销售额信息查询货物补充操作结束图3.2 顾客购买饮料流程图四、系统调试分析它的的任务是尽可能彻底地检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统”做得怎样?”。
这阶段又可分为三个步骤:模块测试,测试每个模块的程序是否有错误;组装测试,测试模块之间的接口是否正确:确认测试,测试整个软件系统是否满足用户功能和性能的要求。
该阶段结束应交付测试报告,说明测试数据的选择,测试用例以及测试结果是否符合预期结果。
测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。
是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。
系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。
4.1 系统启动主界面如图,由用户选择执行某一个操作。
用户选择投币饮料d饮料a......饮料d饮料和零钱图4.1系统启动主界面图4.2 顾客购买饮料操作测试在主界面下,输入口令“1”,进入购买饮料模块。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计课程名称 C 语言高级程序设计学院xxx小组成员1XXX小组成员2XXX小组成员3XXX任课教师XXX2016——2017学年第1学期一.所选题目与要求自动售货机问题情景:分析学校教学楼自动售货机的功能,设计一个自动售货系统。
功能要求:1. 系统能提供所售商品的清单(编号,名称,单价,数量)2. 客户输入商品编号及购买数量,系统显示应付的金额,输入客户实付的钱数,系统计算应找的钱数系统如果没有足够的库存或零钱时,现实应返还客户已付的金额。
(不考虑用支付宝付款的情况)3. 可增加商品种类,增加商品库存,查询商品库存,查询商品销售量及销售额。
成果要求:通过网络教学平台中的“研究型教学”建立分组,每组2-3人,通过小组讨论,确定每人的分工,并确定系统设计方案。
各小组成员在网络教学平台上进行讨论、并完成最终的报告,整个过程作为小组及个人工作评价的重要依据。
各小组成员根据系统设计方案分模块进行编程,在系统各模块编码完成后集成调试,并最终完成整个系统的测试。
根据下面的报告模板完成综合实验总结报告,并打印成纸质报告,作为大作业课程结束时上交。
附:综合实验总结报告应包含的内容:1. 系统功能说明2. 程序结构程序结构说明重要数据说明函数清单/* 每个函数的书写格式 */函数名:所在文件名函数功能参数说明算法描述或程序代码3. 系统运行结果4. 系统设计难点及其解决方法5. 不足之处6. 人员分工说明二.问题分析及算法设计主函数void main() //主函数模块{do{system("pause");show(); //显示屏幕函数,商品清单loop1:printf("现在你有%.1f元\n你可以选择商品序号开始选购或按0 退出\n",M);input(); //输入函数if(M-goods[n-1].price>v) {t=0;printf("对不起,售货机没有足够的零钱了\n谢谢光临!退还%.1f元\n",M);break;} //判断售货机是否有足够的零钱,0表无if(n==0){ //确认用户是选择离开还是买东西开始购买t=1;change(M);} //找零函数else {loop2:sell(n,M,1,1); //购买函数if(A==0)//货没有了怎么办input(); //输入函数………………………………………………………………………..if(n==0) //没货离开change(M); //找钱函数else //继续购买其它商品{……………………………………………goto loop2;返回至购买函数} //else} //ifelse if(B==0)//没钱了怎么办{…………………………………..if(m1==0) //离开change(M);返回至找零函数else //加钱{…………………………………………..goto loop1;返回至再次购买} //else} //else ifelse//有钱又有货,继续选goto loop1;返回至购买程序} //else}while(1);} //main结构体定义struct goods//定义物品清单{int number;char name[10];float price;int quantity;}goods[9]={{1,"可口可乐",3,5},{2,"拿铁咖啡",4,5},{3,"橙汁",3,5},{4,"奶茶",4,5},{5,"雪碧",2.5,5},{6,"矿泉水",2,5},{7,"椰子汁",2.5,5},{8,"格瓦斯",3,5}};struct money//定义钱的种类,数量用于记录找零的某值张数{float moneys;int mount;}money[2]={{1,0},{0.5,0}};被调用的函数float show() //显示模块--屏幕{……………………………}int input() //输入模块{…………………………..}}int sell(int n,float m,int a,int b) //出售模块n为序号,m钱,{……………………………if(goods[i].quantity>0) //表示有货{………………………………..}elseA=0; //表示没货了}elseB=0; //表示没钱了if(M==0) B=0;//判断出钱已用光return(a);return(b);}void change(float m) //找钱模块{……………………………switch(a){case 1花光…………………………………….case 2:找零……………………………………………………………………………}}三.程序源代码#include<stdio.h>#include<conio.h>float M;//M为投入的钱数int A=1,B=1,t; //A为数量标记,B为金钱标记,1表示有,0表示没有,t用于标记售货机是否能完成退款int i,n,v=100; //i用于循环显示商品列表,n用于记录输入的货号,v用于保存售货机内可以找零的钱数,初设为v=100//结构体定义struct goods //定义物品清单{int number;char name[10];float price;int quantity;}goods[9]={{1,"可口可乐",3,5},{2,"拿铁咖啡",4,5},{3,"橙汁",3,5},{4,"奶茶",4,5},{5,"雪碧",2.5,5},{6,"矿泉水",2,5},{7,"椰子汁",2.5,5},{8,"格瓦斯",3,5}};struct money //定义钱的种类,数量用于记录找零的某值张数{float moneys;int mount;}money[2]={{1,0},{0.5,0}};float show() //显示模块--屏幕{system("pause");putch('\n');for(i=0;i<8;i++){printf(" |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");printf(" |%d%8s%7.1f元...剩余%7d|\n",goods[i].number,goods[i].name,goods[i].price,goods[i].quantity);} printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("购买东西前,请投入money!(支持1元,5元,10元和20元)\n《温馨提示,投入money过多可能无法完成退币》\n");scanf("%f",&M);return M;}int input() //输入模块{for(;;){scanf("%d",&n);if(n<0||n>8)printf("输入错误,请重新输入商品序号开始选购或按0 退出\n");else {return n;break;}}}int sell(int n,float m,int a,int b) //出售模块n为序号,m钱,{int i=0;while(n!=goods[i].number) i++;if(m>=goods[i].price){if(goods[i].quantity>0){goods[i].quantity--;M=m-goods[i].price;for(i=0;i<8;i++){printf(" |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");printf(" |%d%8s%7.1f元...剩余%7d|\n",goods[i].number,goods[i].name,goods[i].price,goods[i].quantity);} printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("你的商品%d %s 已经出货了\n",goods[n-1].number,goods[n-1].name);}elseA=0; //表示没货了}elseB=0; //表示钱了if(M==0) B=0;//判断出钱已用光return(a);return(b);}void change(float m) /钱模块{int i,a;//用于辅助输出if(m==0) a=1;if(m!=0.0&&t!=1) a=2;switch(a){case 1:printf("钱用光了哦\n谢谢光临!");break;case 2:{for(i=0;i<2;i++)if(money[i].moneys<=m){m=m-money[i].moneys;money[i].mount++;i--;}//继续检索当前的面额是否符合条件,才会有相同面值出现printf(" 谢谢光临!\n找零\n");for(i=0;i<2;i++)if(money[i].mount>0)printf("%d张%.1f元\t\n",money[i].mount,money[i].moneys);m=0;M=0;};money[0].mount=0;break;}}void main() //主函数模块{do{int t=1; //用于标记售货机是否能完成退款,1表能float m1; //m1用于记录用户再次加的钱show(); //显示--屏幕loop1:printf("现在你有%.1f元\n你可以选择商品序号开始选购或按0 退出\n",M);input(); //输入函数if(M-goods[n-1].price>v) {t=0;printf("对不起,售货机没有足够的零钱了\n 谢谢光临!退还%.1f元\n",M);break;} //判断售货机是否有足够的零钱,0表无if(n==0){ //确认用户是选择离开还是买东西开始购买t=1;change(M);} /零函数else {loop2:sell(n,M,1,1);if(A==0)//货没有了怎么办{printf("可惜了,商品%d 已卖完了\n你还有%.1f元\n你可以买其它商品(直接输入商品序号)或按0 离开\n",n,M);input(); //输入函数if(n==0)change(M); /钱函数else{A=1;B=1;//要将标记归位goto loop2;} //else} //ifelse if(B==0)//没钱了怎么办{printf("噢,,,没钱了,你可以继续投入money购买,或按0 离开\n");scanf("%f",&m1);if(m1==0)change(M);else{M=M+m1;A=1;B=1;//标记要归位goto loop1;} //else} //else ifelse//有钱又有货,继续选goto loop1;} //else}while(1);} //main四.系统功能及运行效果图一,系统提供商品清单,并提示购买前投入money二,如果用户投入的money过多,售货机无足够硬币完成退币,自动退还用户已付金额三,用户投入money购买,确定购买商品后,系统显示如下。