123软件工程课设.docx
- 文档编号:17004496
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:25
- 大小:1.25MB
123软件工程课设.docx
《123软件工程课设.docx》由会员分享,可在线阅读,更多相关《123软件工程课设.docx(25页珍藏版)》请在冰点文库上搜索。
123软件工程课设
*******************
实践教学
*******************
计算机与通信学院
2014年春季学期
软件工程课程设计说明书
题目:
自动售货机
专业班级:
信计班
姓名:
曹奇
学号:
11500223
指导教师:
梁一鑫
成绩:
目录
目录2
摘要3
序言4
1、需求分析4
1.1需求分析4
1.2运行环境5
1.3任务概述6
2、设计思路7
2.1功能需求描述7
2.2程序流程图8
3、详细设计9
3.1功能和操作简介(界面)9
3.1.1自动售货机进入界面9
3.1.2销售界面9
3.1.3登陆界面10
3.1.4管理界面10
3.2程序模块划分11
4、运行调试与分析讨论21
4.1编程中的疑难点分析21
4.1.1鼠标问题21
4.1.2界面之间的转换21
4.2程序不足之处22
5、设计体会与小结23
参考文献24
致谢25
摘要
自动售货机是能根据投入的钱币自动付货的机器是商业自动化的常用设备,它不受时间、地点的限制,能节省人力、方便交易。
是一种全新的商业零售形式,又被称为24小时营业的微型超市。
能分为三种:
饮料自动售货机、食品自动售货机、综合自动售货机。
自动售货机是一种全新的商业零售形式,20世纪70年代自日本和欧美发展起来。
自动售货咖啡机是一种既可以出冷热咖啡也可以同时出奶茶果汁饮料的咖啡饮料自动售货机,省时方便快捷。
既可以作投资来使用,也可作为员工福利来使用。
现在,自动售货机产业正在走向信息化并进一步实现合理化。
24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购买好奇心的自身性能,可以很好地解决人工费用上升的问题等各项优点。
序言
通过对自动售货机买卖商品的过程分析,建立模拟自动售货机的图形界面操作系统,对其投币、出货、统计等多个方面的功能模拟,实现模拟真实自动售货机的操作流程。
此次C语言课程设计是本专业的第一次课程设计,具有重要的意义:
通过上个学期对C语言的学习,对C语言编程有了初步的了解,获得了一定的基础但是非常缺乏实际的编程经验,无法从质上对自己的编程技巧有一个很大的提高,这次的课程设计给我们提供了一个非常好的锻炼机会。
通过二个人的分工合作,在实际中运用和训练程序设计的模块化和工程化思想和技术,努力掌握C语言精髓;同时提高自己的交流与团队合作的能力.为以后的更专业更复杂的课程设计和实践活动打好基础。
1、需求分析
1.1需求分析
自动售货机是一种全新的商业零售形式,20世纪70年代自日本和欧美发展起来。
它又被称为24小时营业的微型超市。
在日本,70%的罐装饮料是通过自动售货机售出的。
全球著名饮料商可口可乐公司在全世界就布有50万台饮料自动售货机。
现在,自动售货机产业正在走向信息化并进一步实现合理化。
自动售货咖啡机是一种既可以出冷热咖啡也可以同时出奶茶果汁饮料的咖啡饮料自动售货机,省时方便快捷。
既可以作投资来使用,也可作为员工福利来使用。
从自动售货机的发展趋势来看,它的出现是由于劳动密集型的产业构造向技术密集型社会转变的产物。
大量生产、大量消费以及消费模式和销售环境的变化,要求出现新的流通渠道;而相对的超市、百货购物中心等新的流通渠道的产生,人工费用也不断上升;再加上场地的局限性以及购物的便利性等这些因素的制约,无人自动售货机作为一种必须的机器便应运而生了。
现在,自动售货机产业正在走向信息化并进一步实现合理化。
例如实行联机方式,通过电话线路将自动售货机内的库存信息及时地传送各营业点的电脑中,从而确保了商品的发送、补充以及商品选定的顺利进行。
并且,为防止地球暖化,自动售货机的开发致力于能源的节省,节能型清凉饮料自动售货机成为该行业的主流。
我们用MicrosoftVisualStudio9.0编写的C#语言程序来模拟自动售货机的控制及各种操作过程。
1.2运行环境
该系统给予MicrosoftVisualStudio9.0开发,适用于windows7及windows7以上操作系统;本软件设计中加入了鼠标操作,因此操作过程必须依赖鼠标才能实现所有功能;本软件对于显示卡无特殊要求;本软件可以允许用户自定义一些参数,具有良好的人机交互性。
本软件主要的输入方式是数字选择输入及一些简单的问答操作,实际操作是通过鼠标选择我们给出的汉化功能选项。
输出信息也将采用汉化的窗口(包括弹窗)传递给用户。
除此之外无其他特殊要求;出现图形无法显示或图形显示效果差——处理办法:
检查显示卡驱动是否正常;出现某些子程序的初始化无法正常完成——处理办法:
显示初始化失败的位置,并退出程序;出现空间分配失败——处理办法:
显示为内存不够,退出程序并检查内存利用情况;
1.3任务概述
自动售货机售货9种商品,价格分别为3元,4元,5元和6元。
顾客投入5元及符合人民币要求的纸币,如10元,100元等。
然后选择购买9种商品之一,自动售货机吐出商品,并且找给用户零钱。
如果商品售完,或者无法找零,则给出用户一个提示,商品已售完,并且退还纸币。
程序具备以下功能:
库存查询:
检索9种商品的储存量
商品上架:
为9种商品增加
销售查询:
分别统计今天每种商品的销售量和销售额
会计查询:
打印当天的往来帐目以及剩余零钞数目
结算功能:
能够取出金额
销售界面:
顾客投入纸币,选择商品,获得商品和零钱;或者直接显示错误并退还纸币
要求以自动售货机为对象,图形化模拟投币、找零、出货的基本流程;能对售货机的商品进行管理:
补货、查询、统计等功能。
2、设计思路
2.1功能需求描述
运行程序,点击售货机的进入按钮,进入主界面,到顾客购买主界面。
在顾客购买界面中,有可以实现顾客购买饮料的一切功能,如果你是管理员,可选择管理员登录,进入管理员登录界面,验证身份正确之后,就进入自动售货机管理界面,进而进行一系列的管理操作。
顾客购买模式先选择要购买的饮料。
如有库存则出货,选择购买数量,然后选择付款投币,其中钱币有5元10元20元50元100元可以供选择,选择完币值后,按键确认付款,在出币扣找零。
管理员登录模式先点击登录按钮,会进入身份验证界面,输入用户名及密码确定权限(管理员还可以进行用户名和密码的修改)。
,进入管理界面后,可查询各种饮料的剩余量和售量、销售币额以及顾客购买的时间。
2.2程序流程图
图2程序流程图
3、详细设计
3.1功能和操作简介(界面)
3.1.1自动售货机进入界面
点击进入,即可进入到自动售货机销售界面。
图3.1欢迎界面
3.1.2销售界面
在销售界面里,顾客可以选择自己想要的饮料并进行相关的各个操作。
图3.2销售界面
3.1.3登陆界面
在登录界面里,通过身份认证进入自动售货机管理界面。
图3.3登陆界面
3.1.4管理界面
在管理界面里,可以对饮料的数量及出售饮料的信息进行修改和查看。
图3.4管理界面
3.2程序模块划分
在销售界面里面,主要实现了饮料单价的显示,饮料种类,数量的选择,付款的操作,及取走饮料和零钱几种主要操作。
3.2.1饮料单价的显示(例如,红牛单价为6元)
图3.5红牛单价
具体实现:
要查询饮料的价格时,将鼠标移到要选的饮料图标上面,系统将会响应鼠标事件,从而显示出饮料的单价。
代码:
privatevoidp3_MouseEnter(objectsender,EventArgse)
{
ToolTipttpSettings=newToolTip();
ttpSettings.InitialDelay=200;
ttpSettings.AutoPopDelay=10*1000;
ttpSettings.ReshowDelay=200;
ttpSettings.ShowAlways=true;
ttpSettings.IsBalloon=true;
stringtipOverwrite="红牛单价:
6元!
";
ttpSettings.SetToolTip(p3,tipOverwrite);//ckbOverwriteisacheckbox
}
3.2.2饮料种类,数量的选择
例如想要买三瓶红牛,我们可以选择红牛所对应的按钮,然后在数量框中选定3瓶即可。
3.2.3付款的模块
在付款操作中,我们有选择的钱币种类有5元,10元,20元,50元,100元,然后在在确认付款时,如果投入的费用不够,会弹出对话框提示从而继续投币,当累加的数量够支付时,即可进行后面的操作。
如果投入费用足够,即可直接进行下一项操作。
如果成功操作,则选定饮料的数量要减少更新,同时总的收入要累加更新。
如果库存数量不够,弹出对话框提示。
并且如果库存中钱不够找零,同样弹出对话框进行提醒。
具体实现代码:
if(radioButton3.Checked==true&&i>0&&v>0)
{
if(radioButton10.Checked==true)
{
stringconnstring="server=localhost;database=myDB;uid=uid;pwd=666666";
stringstrUpdt="update饮料信息SET饮料数量=饮料数量-1where饮料编号='03'";
SqlConnectioncon1=newSqlConnection(connstring);
con1.Open();
SqlCommandcmd1=newSqlCommand(strUpdt,con1);
cmd1.ExecuteNonQuery();
con1.Close();
}
if(radioButton11.Checked==true)
{
stringconnstring="server=localhost;database=myDB;uid=uid;pwd=666666";
stringstrUpdt="update饮料信息SET饮料数量=饮料数量-2where饮料编号='03'";
SqlConnectioncon1=newSqlConnection(connstring);
con1.Open();
SqlCommandcmd1=newSqlCommand(strUpdt,con1);
cmd1.ExecuteNonQuery();
con1.Close();
}
if(radioButton12.Checked==true)
{
stringconnstring="server=localhost;database=myDB;uid=uid;pwd=666666";
stringstrUpdt="update饮料信息SET饮料数量=饮料数量-3where饮料编号='03'";
SqlConnectioncon1=newSqlConnection(connstring);
con1.Open();
SqlCommandcmd1=newSqlCommand(strUpdt,con1);
cmd1.ExecuteNonQuery();con1.Close();}}
3.2.4取走饮料和零钱
取走所买的饮料和找回的零钱,即完成操作!
图3.6付款成功饮料零钱送出
具体实现代码:
privatevoidbutton4_Click(objectsender,EventArgse)
{
this.progressBar1.Maximum=100;
for(intj=0;j<=100;j++)
{
this.progressBar1.Value=j;
}
intn=0;
if(i>0&&v>0)
{
n=Convert.ToInt32(boBox1.Text);
}
Z+=n;
if(Z { MessageBox.Show("投入费用不够! 请继续投币"); } else { m=Z-v; } if(radioButton1.Checked==true&&i>0&&v>0) { if(radioButton10.Checked==true) { stringconnstring="server=localhost;database=myDB;uid=uid;pwd=666666"; stringstrUpdt="update饮料信息SET饮料数量=饮料数量-1where饮料编号='01'"; SqlConnectioncon1=newSqlConnection(connstring); con1.Open(); SqlCommandcmd1=newSqlCommand(strUpdt,con1); cmd1.ExecuteNonQuery(); con1.Close(); } if(radioButton11.Checked==true) { stringconnstring="server=localhost;database=myDB;uid=uid;pwd=666666"; stringstrUpdt="update饮料信息SET饮料数量=饮料数量-2where饮料编号='01'"; SqlConnectioncon1=newSqlConnection(connstring); con1.Open(); SqlCommandcmd1=newSqlCommand(strUpdt,con1); cmd1.ExecuteNonQuery(); con1.Close(); } if(radioButton12.Checked==true) { stringconnstring="server=localhost;database=myDB;uid=uid;pwd=666666"; stringstrUpdt="update饮料信息SET饮料数量=饮料数量-3where饮料编号='01'"; SqlConnectioncon1=newSqlConnection(connstring); con1.Open(); SqlCommandcmd1=newSqlCommand(strUpdt,con1); cmd1.ExecuteNonQuery(); con1.Close(); } } if(radioButton2.Checked==true&&i>0&&v>0) { if(radioButton10.Checked==true) { stringconnstring="server=localhost;database=myDB;uid=uid;pwd=666666"; stringstrUpdt="update饮料信息SET饮料数量=饮料数量-1where饮料编号='02'"; SqlConnectioncon1=newSqlConnection(connstring); con1.Open(); SqlCommandcmd1=newSqlCommand(strUpdt,con1); cmd1.ExecuteNonQuery(); con1.Close(); } if(radioButton11.Checked==true) { stringconnstring="server=localhost;database=myDB;uid=uid;pwd=666666"; stringstrUpdt="update饮料信息SET饮料数量=饮料数量-2where饮料编号='02'"; SqlConnectioncon1=newSqlConnection(connstring); con1.Open(); SqlCommandcmd1=newSqlCommand(strUpdt,con1); cmd1.ExecuteNonQuery(); con1.Close(); } if(radioButton12.Checked==true) { stringconnstring="server=localhost;database=myDB;uid=uid;pwd=666666"; stringstrUpdt="update饮料信息SET饮料数量=饮料数量-3where饮料编号='02'"; SqlConnectioncon1=newSqlConnection(connstring); con1.Open(); SqlCommandcmd1=newSqlCommand(strUpdt,con1); cmd1.ExecuteNonQuery(); con1.Close(); } } } privatevoidbutton5_Click(objectsender,EventArgse) { pictureBox2.Image=null; pictureBox1.Image=null; pictureBox3.Image=null; m=0; if(i==0) { textBox2.Text=Convert.ToString(""); } } 在管理界面里面,主要实现了饮料数量查询及饮料数量的添加,最后在财务管理中,将款提取出来。 3.2.5饮料的数量操作 在管理界面中,列出每种饮料的数量,如果饮料数量为零,则弹出提示信息,然后添加饮料,从而更新数据库信息。 图3.7红牛的数量 图3.8数据库中饮料信息表 具体实现代码: privatevoidbutton5_Click(objectsender,EventArgse) { stringconnstring="server=localhost;database=myDB;uid=uid;pwd=666666"; stringstrUpdt="update饮料信息SET饮料数量=饮料数量+1where饮料编号='03'"; SqlConnectioncon1=newSqlConnection(connstring); con1.Open(); SqlCommandcmd1=newSqlCommand(strUpdt,con1); cmd1.ExecuteNonQuery(); con1.Close(); stringsql1="select饮料数量from饮料信息where饮料编号='03'"; SqlDataAdaptersda=newSqlDataAdapter(sql1,"server=localhost;database=myDB;uid=uid;pwd=666666"); DataSetds=newDataSet(); ds.Clear(); sda.Fill(ds,"饮料信息"); intk=Convert.ToInt32(ds.Tables["饮料信息"].Rows[0]["饮料数量"].ToString());//i为第几行的值,dataset中的值。 //stringsql="select字段from数据库";SqlDataAdaptersda=newSqlDataAdapter(sql,"连接字符串"); this.textBox3.Text=k.ToString(); } 3.2.5提款 在提款模块中,提走所有款项,清空数据库中的信息。 图3.9提款前 图3.9提款后 具体实现代码: privatevoidbutton2_Click(objectsender,EventArgse) { Imageimg11=Image.FromFile(@"C: \Users\Administrator\Desktop\文件夹\自动售货机\图片\0010.png");//双引号里图片路径 pictureBox11.Image=img11; pictureBox10.Image=null; stringconnstring="server=localhost;database=myDB;uid=uid;pwd=666666"; stringstrUpdt="update饮料总价SET合计=0where总价名称='饮料总价'"; SqlConnectioncon1=newSqlConnection(connstring); con1.Open(); SqlCommandcmd1=newSqlCommand(strUpdt,con1); cmd1.ExecuteNonQuery(); con1.Close(); stringsql1="select合计from饮料总价where总价名称='饮料总价'"; SqlDataAdaptersda=newSqlDataAdapter(sql1,"server=localhost;database=myDB;uid=uid;pwd=666666"); DataSetds=newDataSet(); ds.Clear(); sda.Fill(ds,"饮料总价"); intk=Convert.ToInt32(ds.Tables["饮料总价"].Rows[0]["合计"].ToString());//i为第几行的值,dataset中的值。 //stringsql="select字段from数据库";SqlDataAdaptersda=newSqlDataAdapter(sql,"连接字符串"); this.textBox10.Text=k.ToString(); } 4、运行调试与分析讨论 4.1编程中的疑难点分析 4.1.1鼠标问题 由于这个程序是一个模拟自动售货机的图形系统,所以鼠标操作自然是很重要的,要注意响应好鼠标事件,从而不影响整个系统的运行。 4.1.2界面之间的转换 在从欢迎界面进入销售界面,销售界面进入登录界面及到
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 123 软件工程