




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、重庆科技学院C语言程序设计课程设计报告 学 院:_电气与信息工程学院_ 专业班级: 测控1302 同学姓名: 张宇 学 号: 2013441294 设计地点(单位)_重庆科技学院_ _ _设计题目:_ 自动售货机系统_ 完成日期: 2014 年 07月 04 日 指导老师评语: _ _成果(五级记分制):_ _ 指导老师(签字):_ _ 欢迎下载重庆科技学院课程设计任务书设计题目:自动售货机系统同学姓名xxxxx课程名称程序设计基础课程设计专业班级xxxx地 点起止时间设计内容及要求某公司请你为其生产的自动售货机编写软件。这种无人值守自动售货机贩卖价值为A、B、C的三种商品,价格分别为2元,3
2、元和6元。顾客投入10元的纸币,然后选择购买3种商品之一,自动售货机吐出商品,并且找给用户零钱。假如商品已经卖完,或者无法找零,则给出用户一个提示,商品已售完,并且退还纸币。 自然,你的售货机用户期望尽可能地给用户找零,以免流失顾客。为了调查用户的喜好,期望得到三种商品的每日消费数据,由此来调整货柜中三种货物的存贮量。你的程序将实现以下功能: 库存查询:检索当前三种商品的储存量 商品上架:为三种商品增加或者削减储量 销售查询:分别统计今日每种商品的销售量和销售额 会计查询:打印当天的往来帐目以及剩余零钞数目 结算功能:取出今日全部的10元纸币,并且分别设置零钞的数目 销售界面:顾客投入纸币,选
3、择商品,获得商品和零钱;或者直接显示错误并退还纸币 【题目要求】 (1)为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后操作员通过菜单项选择期望进行的操作项目; (2)你的售货机用户不期望每一位顾客都有权限执行以上功能,因此一旦进入销售界面,就不应当退回到系统界面,但是应允许顾客反复购买,前一个顾客购买完毕后应停留在销售界面里允许下一个顾客操作。直到某位特殊的顾客(超级顾客)输入特殊的商品代号(密码)方可回到主控界面。 (3)计算机支配的找零算法应当合理,不要消灭某一种零钱找光的状况。同时顾客也不宠爱明明有5元零钞,却被找给5个一元的零钞。尽量满足这两个要求。 (3)、要求以上
4、功能分别用函数实现。并要求用C语言的文件操作语句将以上全部结果保存在文件XX.out。 【输入/输出要求】 (1)应用程序运行后,先显示一个菜单,然后用户依据需要选择相应的操作项目。进入每个操作后,依据程序的提示输入相应的信息; (2)要求用户输入数据时,要给出清楚、明确的提示信息,包括输入的数据内容、格式及结束方式等。依据题目要求,运用所学学问,完成设计和实现工作,并依据书写规范,撰写课程设计报告。(1)系统分析、设计正确。(2)结果以图表方式显示。(3)界面简洁、美观。(4)报告格式规范。进度要求6月23日9:0012:00讲解课程设计任务,14:0017:00同学选题并开头设计6月24日
5、9:0012:00同学编写程序,14:0017:00讲解结构体相关学问6月25日9:0012:00讲解文件读写相关学问,14:0017:00同学练习文件的读写6月26日9:0012:00讲解菜单和格式输出相关学问,14:0017:00 同学编写程序6月27日9:0012:00讲解程序调试的相关学问,14:0017:00 同学编写程序6月30日9:0012:00指导同学编程,14:0017:00同学编写程序7月1日9:0012:00指导同学编程,14:0017:00同学编写程序7月2日9:0012:00同学撰写课程设计报告,14:0017:00同学编写程序7月3日9:0012:00同学课程设计答
6、辩,14:0017:00 同学修改课程设计报告7月4日9:0012:00同学课程设计答辩,14:0017:00同学提交课程设计报告考参考资料1何钦铭 颜晖.语言程序设计.高等教育出版社.2008年2谭浩强 张基温.语言程序设计教程.高等教育出版社.2006年其他难点提示:1、首先分析题目的数据结构,看看要操作那些值(商品数据,金额数据,甚至需要保存每一笔用户的交易);然后依据题意设计操作对象的结构。可以使用结构体来描述其中较为简单的对象例如往来帐目;确定结构体的定义;可以使用数组来保存商品数据和已收款,剩余零钞数目这样的数据,使用结构体数组来保存往来帐目数据。2、找零算法一种简洁的算法是优先找
7、给大额的零钞,用完再找给小额零钞。但是这种算法充其量只能保证服务最多的顾客,但是后来的顾客就只能拿1元的硬币了。因此可以接受动态最优化算法,剩余的零钞哪个最多,优先找哪个。说明.本表应在每次实施前一周由负责老师填写二份,院系审批后交院系办备案,一份由负责老师留用。.若填写内容较多可另纸附后。3.一题多名同学共用的,在设计内容、参数、要求等方面应有所区分。教研室主任: 指导老师:雷亮/韩琦/陈刘奎 2014年6月02日摘要有史以来,人类创造了很多的信息技术来扩展自身的信息沟通、处理和记忆力量。然而,以1946年世界第一台电子计算机的消灭为开端,信息技术开头走向一个全新的数字时代。50年多年来,计
8、算机技术飞速进展,日新月异。人们发觉起初为解决计算问题而创造的计算机用途越来越广,几乎渗透到涉及信息活动的一切领域。计算机软件的开发更是挂念到各个领域对计算机的使用,更加优化了计算机的功能。依据本次课程设计内容及要求,完成自动售货机系统的设计。这种无人值守自动售货机贩卖价值为A、B、C的三种商品,价格分别为2元,3元和6元。顾客投入10元的纸币,然后选择购买3种商品之一,自动售货机吐出商品,并且找给用户零钱。假如商品已经卖完,或者无法找零,则给出用户一个提示,商品已售完,并且退还纸币。在自动售货机系统中,数据的固化接受.out文件格式进行储存。关键词:计算机 自动售货机 储存名目摘要III1
9、设计内容和要求12 概要设计22.1 数据固化23 具体设计43.1 管理员模块43.2 用户模块的具体设计54 系统测试74.1系统启动选择界面74.2库存查询功能测试84.3 商品上架功能测试94.4 销售查询功能测试104.5 会计查询功能测试114.6 销售功能测试125 总结13致谢14参考文献15源代码15欢迎下载1 设计内容和要求某公司请你为其生产的自动售货机编写软件。这种无人值守自动售货机贩卖价值为A、B、C的三种商品,价格分别为2元,3元和6元。顾客投入10元的纸币,然后选择购买3种商品之一,自动售货机吐出商品,并且找给用户零钱。假如商品已经卖完,或者无法找零,则给出用户一个
10、提示,商品已售完,并且退还纸币。 自然,你的售货机用户期望尽可能地给用户找零,以免流失顾客。为了调查用户的喜好,期望得到三种商品的每日消费数据,由此来调整货柜中三种货物的存贮量。你的程序将实现以下功能: 库存查询:检索当前三种商品的储存量 商品上架:为三种商品增加或者削减储量 销售查询:分别统计今日每种商品的销售量和销售额 会计查询:打印当天的往来帐目以及剩余零钞数目 结算功能:取出今日全部的10元纸币,并且分别设置零钞的数目 销售界面:顾客投入纸币,选择商品,获得商品和零钱;或者直接显示错误并退还纸币 2 概要设计本自动售货机系统依据题意有以下6个模块,但前5个需要管理者密码,最终一个为一般
11、用户模块,不需要密码。自动售货机系统库存查询 销售界面结算功能会计查询商品上架销售查询图2.12.1 数据固化数据:在计算机系统中,各种字母、数字符号的组合、语音、图形、图像等统称为数据,数据经过加工后就成为信息。在本系统中涉及的数据只是一些简洁的字符和数字的组合,对于它的数据固化也将接受比较简洁的文本方式进行存储。但是,文件中的数据存储格式必需是我们程序员给出定义的。在自动售货机系统的使用到的文件是goods.out,用以存储货物的基本信息,他们的具体含义如下:1)商品的数据定义以行为单位,描述一类商品,数据格式为:商品名 商品总量 商品价格(以空格隔开)3 具体设计3.1 管理员模块管理员
12、是自动售货机系统中权限最高的用户。在管理员工作模式下,管理员可以进行货物进行上/下架操作、商品库存信息查询、销售信息查询、会计查询、结算功能、切换到销售界面几大操作。管理员模块下的功能结构图,如下:管理者选 择销售查询商品上架会计查询结算功能库存查询扫瞄增减查询查询浏览结束图3.1 管理员模块流程图库存查询和销售查询处理流程或许相同,下面只给出商品上架的流程图。读取文件录入商品编号商品编号存在否更新数量完成各项商品信息录入写入文件 图3.2 商品上架流程图3.2 用户模块的具体设计用户模块主要是销售商品的界面。销售商品的整个过程是,用户输入商品代号,然后投入货币,然后进行找零等操作,最终放出商
13、品,完成交易。下面来看一下用户模块的流程。用户选择商品A商品B商品C投币商品和零钱图3.3 用户模块流程图4 系统测试它的的任务是尽可能彻底地检查出程序中的错误,提高软件系统的牢靠性,其目的是检验系统做得怎样?。这阶段又可分为三个步骤:模块测试,测试每个模块的程序是否有错误;组装测试,测试模块之间的接口是否正确;确认测试,测试整个软件系统是否满足用户功能和性能的要求。该阶段结束应交付测试报告,说明测试数据的选择,测试用例以及测试结果是否符合预期结果。测试发觉问题之后要经过调试找出错误缘由和位置,然后进行改正。是基于系统整体需求说明书的黑盒类测试,应掩盖系统全部联合的部件。系统测试是针对整个产品
14、系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之冲突的地方。4.1系统启动选择界面。图4.1系统启动选择界面图4.1系统启动选择界面4.2库存查询功能测试库存功能的设计是为了检索当前三种商品的储存量,输入操作指令“1”进入库存查询功能。图4.2 库存查询功能测试结果图4.3 商品上架功能测试商品上架功能设计是为了实现三种商品增加或者削减储量。输入指令“2”,进入商品上架功能界面。 图 4.3 商品上架功能测试界面图4.4 销售查询功能测试销售查询功能是设计为了完成分别统计今日每种商品的销售量和销售额的功能。输入口令“3”,进入销售查询功能界面。图 4.4 销
15、售查询功能测试界面图 4.5 会计查询功能测试会计查询功能是设计为了完成分别统计今日每种商品的销售量和、销售额和一元、五元剩余张数的功能。输入口令“4”,进入销售查询功能界面。图 4.5 销售查询功能测试界面图4.6 销售功能测试在管理模式下,输入口令“6”,进入销售模式。 图4.6 商品销售操作图5 总结通过自动售货机系统的设计,进一步把握了C语言的基础学问。尤其对指针的操作、文件的操作更加生疏。总之,又让我重新生疏了C语言的魅力。致谢感谢父母的细心培育和无私的赐予,您们是我学习和生活的源动力。感谢你们让我懂得了如何生活。感谢老师辛勤培育,无私的栽培。参考文献1 何钦铭,C语言程序设计,北京
16、,高等教育出版社,20082 谭浩强 张基温,C语言程序设计教程,高等教育出版社,2006源代码 #includestdio.h#includestdlib.h#includemath.htypedef struct jeint yy;int wy;int sy;JE;typedef struct SPint xsje; int sc; int kc; char name20;SP;int main()FILE *fp;int sl,ye,sp,cd,pd; SP a,b,c; JE money; a.kc=b.kc=c.kc=50; a.sc=b.sc=c.sc=0; money.yy=20
17、0; 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); doprintf(t*n);printf(t* *n);printf(t* 。欢迎使用自动售货机管理系统。 *n);printf(t* *n);printf(t*n); printf(n);printf(t 菜单:nn); printf( *n); printf( *自*动*售*货*机*系*统*n); printf( * 1、 库 存 查 询 *n); printf( * 2、 商 品 上 架 *n); p
18、rintf( * 3、 销 售 查 询 *n); printf( * 4、 会 计 查 询 *n); printf( * 5、 结 算 功 能 *n); printf( * 6、 销 售 界 面 *n); printf( *n); printf( *n); printf( *请 输 入 1-6 选 择 :);scanf(%d,&cd);switch(cd)case 1:printf( *库*存*查*询*n);printf( * 1、A 商 品 单 价 : 2 元 *n);printf( * 2、B 商 品 单 价 : 3 元 *n);printf( * 3、C 商 品 单 价 : 6 元 *n
19、);printf( *n); printf( *请 输 入 1-3 选 择 :); scanf(%d,&sp); printf(n); switch(sp) case 1:printf( *n); printf( * 你选择的2元的商品 *n); printf( * 2元商品的库存量为: %d n,a.kc); printf( *n);fputs(2元商品的库存量为, fp);fprintf(fp, %dn, a.kc);break; case 2:printf( *n); printf( * 你选择的3元的商品 *n); printf( * 3元商品的库存量为: %d n,b.kc); pr
20、intf( *n);fputs(3元商品的库存量为, fp);fprintf(fp, %dn, b.kc);break; case 3:printf( *n); printf( * 你选择的6元的商品 *n); printf( * 6元商品的库存量为: %d n,c.kc); printf( *n);fputs(6元商品的库存量为, fp);fprintf(fp, %dn, c.kc);break;printf( 输入任意数值返回上层n);system(PAUSE);break;case 2:printf( *商*品*上*架*n); printf( * 1、A 商 品 单 价 : 2 元 *n
21、); printf( * 2、B 商 品 单 价 : 3 元 *n); printf( * 3、C 商 品 单 价 : 6 元 *n); printf( *n); printf( *请 输 入 1-3 选 择 :);scanf(%d,&sp);switch(sp)case 1:printf( *n); printf( * 你 选 择 的 2 元 的 商 品 *n); printf( * 请 输 入 商 品 的 改 变 量 : ); scanf(%d,&sl);a.kc+=sl;printf( *n);printf( * 2 元 商 品 现 在 的 库 存 为 : %d n,a.kc);prin
22、tf( *n);fputs(2元商品现在的库存为, fp);fprintf(fp, %dn,a.kc);break;case 2:printf( *n); printf( * 你 选 择 的 3 元 的 商 品 *n); printf( * 请 输 入 商 品 的 改 变 量 : ); scanf(%d,&sl);b.kc+=sl;printf( *n);printf( * 3 元 商 品 现 在 的 库 存 为 : %d n,b.kc);printf( *n);fputs(3元商品现在的库存为, fp);fprintf(fp, %dn,b.kc);break;case 3:printf( *
23、n); printf( * 你 选 择 的 6 元 的 商 品 *n); printf( * 请 输 入 商 品 的 改 变 量 : ); scanf(%d,&sl);c.kc+=sl;printf( *n);printf( * 6 元 商 品 现 在 的 库 存 为 : %d n,c.kc);printf( *n);fputs(6元商品现在的库存为, fp);fprintf(fp, %dn,c.kc);break; system(PAUSE);break;case 3:printf( *销*售*查*询*n); printf( * 1、A 商 品 单 价 : 2 元 *n); printf(
24、* 2、B 商 品 单 价 : 3 元 *n); printf( * 3、C 商 品 单 价 : 6 元 *n); printf( *n); printf( *请 输 入 1-3 选 择 :);scanf(%d,&sp); switch(sp)case 1:printf( *销*售*查*询*n); printf( * 你 选 择 的 2 元 的 商 品 *n); printf( * 销 售 数 量 为 : %d n,a.sc); printf( * 销 售 金 额 为 : %d n,a.xsje); printf( *n);fputs(2元商品的销售数量和金额为, fp);fprintf(fp
25、, %d,a.sc); fprintf(fp, %dn,a.xsje); break;case 2:printf( *销*售*查*询*n); printf( * 你 选 择 的 3 元 的 商 品 *n); printf( * 销 售 数 量 为 : %d n,b.sc); printf( * 销 售 金 额 为 : %d n,b.xsje); printf( *n);fputs(3元商品的销售数量和金额为, fp);fprintf(fp, %d,b.sc); fprintf(fp, %dn,b.xsje); break;case 3:printf( *销*售*查*询*n); printf(
26、* 你 选 择 的 6 元 的 商 品 *n); printf( * 销 售 数 量 为 : %d n,c.sc); printf( * 销 售 金 额 为 : %d n,c.xsje); printf( *n);fputs(6元商品的销售数量和金额为, fp);fprintf(fp, %d,c.sc); fprintf(fp, %dn,c.xsje); break;system(PAUSE);break;case 4:printf( *会*计*查*询*n); printf( * 至今2元商品卖出:%d,交易额为: %d n,a.sc,a.xsje); printf( * 至今3元商品卖出:%
27、d,交易额为: %d n,b.sc,b.xsje); printf( * 至今6元商品卖出:%d,交易额为: %d n,c.sc,c.xsje); printf( * 1元零钞剩余量为: %d n,money.yy); printf( * 5元零钞剩余量为: %d n,money.wy); printf( *n); fputs(至今2元商品的销售数量和金额为, fp);fprintf(fp, %d,a.sc); fprintf(fp, %dn,a.xsje); fputs(至今3元商品的销售数量和金额为, fp);fprintf(fp, %d,b.sc); fprintf(fp, %dn,b.
28、xsje); fputs(至今6元商品的销售数量和金额为, fp);fprintf(fp, %d,c.sc); fprintf(fp, %dn,c.xsje);fputs(1元零钞剩余量为, fp);fprintf(fp, %dn,money.yy);fputs(5元零钞剩余量为, fp);fprintf(fp, %dn,money.wy);system(PAUSE);system(cls);break;case 5:fputs(取出的10元钞票数量, fp);fprintf(fp, %dn,money.sy);money.sy=0;printf( *n);printf( * 已 取 出 10
29、 元 钞 票 *n);printf( * 请输出1元钞票的初始值: );scanf(%d,&money.yy);fputs(重置的1元钞票数量, fp);fprintf(fp, %dn,money.yy); printf( * 请输出5元钞票的初始值: ); scanf(%d,&money.wy);fputs(重置的5元钞票数量, fp);fprintf(fp, %dn,money.wy);a.sc=b.sc=c.sc=0;system(PAUSE);system(cls);break;case 6:while(sp!=110)/管理员密码为110 printf( * 请 放 入 10 元 纸
30、 币 *n); printf( );scanf(%d,&pd);if(pd=10)printf( *销*售*n); printf( * 1、A 商 品 单 价 : 2 元 *n); printf( * 2、B 商 品 单 价 : 3 元 *n); printf( * 3、C 商 品 单 价 : 6 元 *n); printf( *n); printf( *请 输 入 1-3 选 择 :);scanf(%d,&sp);switch(sp)case 1: while(1)printf( *n); printf( * 你 选 择 的 2 元 的 商 品 *n); printf( * 你 选 择 的
31、商 品 为 :2 元 商 品*n); printf( * 请 选 择 购 买 数 量 : );scanf(%d,&sl);if(sl0&sl=sl&(money.yy+money.wy*5)=(10-sl*2)ye=10-sl*2;a.xsje+=sl*2;a.sc+=sl;a.kc-=sl;money.sy+; if(ye5&money.wy=1)money.wy-=1; money.yy=money.yy-ye+5; else money.yy=money.yy-ye; printf( *n);printf( * 请从商品口拿出商品及余额: %d 元*n,ye);fputs(此次卖出2元商
32、品的数量及收入为, fp); fprintf(fp, %d,sl); fprintf(fp, %dn,sl*2); system(PAUSE);system(cls);break;elsesystem(cls);printf( * 商 品 不 足 或 零 钞 不 足 *n);system(PAUSE);break;elsesystem(cls);printf( * 请 输 入 正 确 数 量 *n); system(PAUSE);break;case 2: while(1)printf( *n); printf( * 你 选 择 的 3 元 的 商 品 *n); printf( * 你 选 择 的 商 品 为 :3 元 商 品*n); printf( * 请 选 择 购 买 数 量 : );scanf(%d,&sl);if(sl0&sl=sl&(money.yy+money.wy*5)=(10-sl*3)ye=10-sl*3;b.xsje+=sl*3;b.sc+=sl;b.kc-=sl;money.sy+; if(ye5&money.wy=1)money.wy-=1; money.yy=money.yy-ye+5; else money.yy=money.yy-ye; printf( *n);prin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025现代合同管理与招投标策略教学模式探讨
- 2025二手房买卖合同(未办房产证转让版)
- 借用用电合同范例
- 2025年国内旅游合同示范文本
- 中泰大米合同范例
- 上海饭店用工合同范例
- 二手市场房屋买卖合同范例
- 世纪佳缘 合同范例
- 书行业中标合同范例
- 上海红木家具购销合同样本
- 2025年二级风力发电运维值班员职业技能鉴定考试题库(浓缩500题)
- 江苏省南京市、盐城市2025届高三年级5月第二次模拟考试化学试题及答案(南京盐城二模)
- 2025新能源汽车技术的应急管理策略试题及答案
- 建筑劳务分包合同中的税务问题3篇
- 2025年中国熔融盐储能行业市场占有率及投资前景预测分析报告
- 2024-2025人教版一年级下册数学期末考试卷附答案 (三套)
- 消防作战训练安全常识及灾情处置考试题库
- 教育培训机构加盟经营合同书
- 9.2严格执法 课件-高中政治统编版必修三政治与法治
- 生命健康教育智慧树知到期末考试答案章节答案2024年温州医科大学
- 2023年河北高中学业水平考试物理试卷真题及答案详解
评论
0/150
提交评论