文档库 最新最全的文档下载
当前位置:文档库 › 面向对象程序设计课设论文-模拟自动售货机

面向对象程序设计课设论文-模拟自动售货机

面向对象程序设计课设论文-模拟自动售货机
面向对象程序设计课设论文-模拟自动售货机

《面向对象程序设计》

课程设计

题目:模拟自动售货机

院系:数学与计算科学

专业:信息与计算科学

姓名学号: 1

指导老师:

日期:2015年 1 月8 日

摘要

随着社会的发展和不断进步,人们的物质文化与精神文化都在明显的提高,各种各样的高科技产品也应运而生并慢慢融入人们的生活,如信用卡支付、手机、地铁等等,当然,还有随处可见的自动售货机。我基于自己所学,设计了一款饮料自动售货机。该售货机操作简单,适合广大民众生活。这个自动售货机是在Windows 环境下用 Microsoft Visual Studio 2008工具,基于MFC框架设计的,可以实现初始化界面,让界面美观简洁。程序通过CRC 卡分析,建立UML类图,把程序功能具体化,用需求分析与方案论证,从而实现自动售货机的开发过程。

关键字:自动售货机MFC CRC卡UML类图

Abstract

With the development of society and progress,people's material culture and spiritual culture are obviously improved,a variety of high-tech products also arises at the historic moment and slowly into people's lives,such as credit card payments, mobile phone,the subway and so on,of course,and the everywhere vending machine.

I use my learned knowledge,designed a drinks vending machine.The vending machine operation is simple, so it is suitable for the general public life.This vending machine is in the Windows environment using Microsoft Visual Studio 2008 tools, and based on the MFC framework to design,it can implement initialization interface, and let the interface beautiful and concise.The program through the analysis of CRC card to establish a UML class diagram, let the program function is specific,it also using demand analysis and scheme comparison to realize the development process of the vending machine.

Key words:The vending machine MFC CRC card UML class diagrams

目录

摘要 (2)

Abstract (3)

目录 (4)

引言 (5)

一、课程设计内容 (5)

1.1、题目要求 (5)

1.2、课程设计目的 (6)

1.3、CRC分析过程陈述 (6)

1.4、UML类图 (7)

二、设计分析 (7)

2.1、界面初始化 (7)

2.1.1、关于对话框设置 (7)

2.1.2、关于按钮设置 (8)

2.2、出售商品设置 (9)

2.3、售货机工作员设置 (15)

三、运行结果 (16)

3.1、投币操作 (16)

3.1.1、金额充足显示 (16)

3.1.2、金额不足显示 (16)

3.2、继续投币操作 (17)

3.3、退币操作 (18)

3.4、停止售卖 (18)

3.4.1、金额上限停止显示 (19)

3.4.2、商品售完显示 (19)

四、心得体会 (20)

五、参考文献 (21)

引言

本次课设是用C++语言编写一个模拟自动售货机程序,要求

用户从售货机商品列表选择某一商品并投入硬币。如果金额足够,则提供相应商品;如果金额不够,或者该商品已售完,则将硬币

退回。维护售货机的工作人员可以为其添加商品或者取走售货款项。为了让设计界面更优美,我选择用MFC来设计,并让程序能

实现当售货机金额达到5000元时,将停止买卖,工作人员必须取

走货款,在金额不够,退还硬币时要提示差多少钱,允许多次投币,由用户决定是继续投币还是退还硬币等操作。

一、课程设计内容

1.1、题目要求

编写一个程序模拟自动售货机。可以通过向售货机中投入硬币来购买商品。用户从售货机商品列表选择某一商品并投入硬币。如果金额足够,则提供相应商品;如果金额不够,或者该商品已售完,则将硬币退回。维护售货机的工作人员可以为其添加商品或者取走售货款项。利用CRC卡片设计类和类中的方法,同时给出UML图并实现该程序。

扩展功能:1)当售货机金额达到5000元时,将停止买卖,工作人员必须取走货款。2)在金额不够,退还硬币时要提示差多少钱,允许多次投币,由用户决定是继续投币还是退还硬币。

1.2、课程设计目的

本次课程设计是为了检验我们在《面对对象程序设计》的学习过程中所学到知识,提高和加强我们的计算机应用及软件开发能力,要求我们达到熟练掌握C++语言的基本知识和程序调试技能;基本掌握面向对象程序设计的基本思路和方法;培养我们独立分析问题、解决问题、查阅资料与及自学的能力,让我们能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。

1.3、CRC分析过程陈述

程序中有Buy Dialog 和About Dialog两个类,前者用于用户购买商品,后者用于管理员登录、取款、添加货物操作。

Buy Dialog

The purchase of goods About Dialog

About Dialog

The administrator login

Withdrawals

Buy Dialog

Add the goods

1.4、UML类图

二、设计分析

设计思想:利用VS 2008软件中的Windows MFC编程功能,创建一个对话框程序,利用控件菜单在对话框中创建若干按钮控件,作为售货机的十二个按钮以及其他功能的按钮,再添加一个编辑框,作为售货机的显示模块。调整控件的位置和布局,尽量使售货机界面美观实用。利用类向导功能为相应的控件创建成员变量及成员函数,在相应的函数位置添加函数功能实现代码,然后进行编译调试,修改程序,进一步完善售货机功能。通过设置一些标志变量,根据具体的变量值,来判断应该进行的操作,然后将结果传递给编辑框的变量,通过更新消息显示结果。

2.1、界面初始化

2.1.1、关于对话框设置

设计应用程序“关于”菜单项的 CAboutDlg 对话框和CBuyDlg 对话框

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

enum { IDD = IDD_ABOUTBOX };

protected:

virtual void DoDataExchange(CDataExchange* pDX);

CBuyDlg::CBuyDlg(CWnd* pParent /*=NULL*/)

: CDialog(CBuyDlg::IDD, pParent)

, m_inValue(0)

, m_outValue(0)

, m_shuchu(_T(""))

{

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

void CBuyDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Text(pDX, IDC_INMONEY, m_inValue);

DDX_Text(pDX, IDC_OUTMONEY, m_outValue);

DDX_Text(pDX, IDC_SHUCHU, m_shuchu);

DDX_Control(pDX, IDC_SHUCHU, m_cshow);

}

2.1.2、关于按钮设置

给12个按钮赋值,即为每一个商品的数量赋值,设计按钮的激活与禁止。

int a[12][2]={{0,5},{1,3},{2,4},{3,5},{4,6},{5,7},{6,8},{7,9},{8,10},{9,6},{10,4},{11,3}};

int b[12][2]={{0,5},{1,3},{2,4},{3,5},{4,6},{5,7},{6,8},{7,9},{8,10},{9,6},{10,4},{11,3}};

void CBuyDlg::xian()//按钮激活

{

EnableWindow(IDC_KELE,TRUE);

EnableWindow(IDC_XUEBI,TRUE);

EnableWindow(IDC_CHENGZHI,TRUE);

EnableWindow(IDC_DOUJIANG,TRUE);

EnableWindow(IDC_CHUNNAI,TRUE);

EnableWindow(IDC_KUANGQUANSHUI,TRUE);

EnableWindow(IDC_MAIDONG,TRUE);

EnableWindow(IDC_GUOZHI,TRUE);

EnableWindow(IDC_XIANNAI,TRUE);

EnableWindow(IDC_QIAOKELI,TRUE);

EnableWindow(IDC_YINGYANG,TRUE);

EnableWindow(IDC_GUOLIDUO,TRUE);

}

void CBuyDlg::jinzhi()//按钮禁止

{

EnableWindow(IDC_KELE,FALSE);

EnableWindow(IDC_XUEBI,FALSE);

EnableWindow(IDC_CHENGZHI,FALSE);

EnableWindow(IDC_DOUJIANG,FALSE);

EnableWindow(IDC_CHUNNAI,FALSE);

EnableWindow(IDC_KUANGQUANSHUI,FALSE);

EnableWindow(IDC_MAIDONG,FALSE);

EnableWindow(IDC_GUOZHI,FALSE);

EnableWindow(IDC_XIANNAI,FALSE);

EnableWindow(IDC_QIAOKELI,FALSE);

EnableWindow(IDC_YINGYANG,FALSE);

EnableWindow(IDC_GUOLIDUO,FALSE);

}

2.2、出售商品设置

设计输入金额时,累加输入和销售商品的金额,并用switch 语句判断此时售货机是否还有存货,在满足售卖条件下售卖饮料,若某商品已售完,则使对应按钮变暗;若金额小于所要买的商品,提示差额。

void CBuyDlg::panduan(int i,float price)

{

UpdateData(TRUE);

m_cshow.PostMessage(WM_VSCROLL,SB_BOTTOM,0);

float number;

number = m_inValue+m_in;//金额输入累加

m_in=0;

if(number>=price)

{

number=number-price;

switch(i)

{

case 0:

{

if(a[0][1]>0){

m_shuchu+="可乐购买成功!\r\n";

a[0][1]--;

b[0][1]--;

if((a[0][1])==0)//数量等于0

{

EnableWindow(IDC_KELE,FALSE);//让按钮变灰色

m_shuchu+="可乐已经售完,请选择其他商品!\r\n";

}

}else{

EnableWindow(IDC_KELE,FALSE);

m_shuchu+="可乐已经售完,请选择其他商品!\r\n";

}

break;

}

case 1:

{

if(a[1][1]>0){

m_shuchu+="雪碧购买成功!\r\n";

a[1][1]--;

b[1][1]--;

if((a[1][1])==0)

{

EnableWindow(IDC_XUEBI,FALSE);

m_shuchu+="雪碧已经售完,请选择其他商品!\r\n";

}

}else{

EnableWindow(IDC_XUEBI,FALSE);

m_shuchu+="雪碧已经售完,请选择其他商品!\r\n";

}

break;

}

case 2:

{

if(a[2][1]>0){

m_shuchu+="橙汁购买成功!\r\n";

a[2][1]--;

b[2][1]--;

if((a[2][1])==0)

{

EnableWindow(IDC_CHENGZHI,FALSE);

m_shuchu+="该橙汁已经售完,请选择其他商品!\r\n";

}

}else{

EnableWindow(IDC_CHENGZHI,FALSE);

m_shuchu+="该橙汁已经售完,请选择其他商品!\r\n";

}

break;

}

case 3:

{

if(a[3][1]>0){

m_shuchu+="豆浆购买成功!\r\n";

a[3][1]--;

b[3][1]--;

if((a[3][1])==0)

{

EnableWindow(IDC_DOUJIANG,FALSE);

m_shuchu+="豆浆已经售完,请选择其他商品!\r\n";

}

}else{

EnableWindow(IDC_DOUJIANG,FALSE);

m_shuchu+="豆浆已经售完,请选择其他商品!\r\n";

}

break;

}

case 4:

{

if(a[4][1]>0){

m_shuchu+="纯奶购买成功!\r\n";

a[4][1]--;

b[4][1]--;

if((a[4][1])==0)

{

EnableWindow(IDC_CHUNNAI,FALSE);

m_shuchu+="纯奶已经售完,请选择其他商品!\r\n";

}

}else{

EnableWindow(IDC_CHUNNAI,FALSE);

m_shuchu+="纯奶已经售完,请选择其他商品!\r\n";

}

break;

}

case 5:

{

if(a[5][1]>0){

m_shuchu+="矿泉水购买成功!\r\n";

a[5][1]--;

b[5][1]--;

if((a[5][1])==0)

{

EnableWindow(IDC_KUANGQUANSHUI,FALSE);

m_shuchu+="矿泉水已经售完,请选择其他商品!\r\n";

}

}else{

EnableWindow(IDC_KUANGQUANSHUI,FALSE);

m_shuchu+="矿泉水已经售完,请选择其他商品!\r\n";

}

break;

}

case 6:

{

if(a[6][1]>0){

m_shuchu+="脉动购买成功!\r\n";

a[6][1]--;

b[6][1]--;

if((a[6][1])==0)

{

EnableWindow(IDC_MAIDONG,FALSE);

m_shuchu+="脉动已经售完,请选择其他商品!\r\n";

}

}else{

EnableWindow(IDC_MAIDONG,FALSE);

m_shuchu+="脉动已经售完,请选择其他商品!\r\n";

}

break;

}

case 7:

{

if(a[7][1]>0){

m_shuchu+="果汁购买成功!\r\n";

a[7][1]--;

b[7][1]--;

if((a[7][1])==0)

{

EnableWindow(IDC_GUOZHI,FALSE);

m_shuchu+="果汁已经售完,请选择其他商品!\r\n";

}

}else{

EnableWindow(IDC_GUOZHI,FALSE);

m_shuchu+="果汁已经售完,请选择其他商品!\r\n";

}

break;

}

case 8:

{

if(a[8][1]>0){

m_shuchu+="鲜奶购买成功!\r\n";

a[8][1]--;

b[8][1]--;

if((a[8][1])==0)

{

EnableWindow(IDC_XIANNAI,FALSE);

m_shuchu+="鲜奶已经售完,请选择其他商品!\r\n";

}

}else{

EnableWindow(IDC_XIANNAI,FALSE);

m_shuchu+="鲜奶已经售完,请选择其他商品!\r\n";

}

break;

}

case 9:

{

if(a[9][1]>0){

m_shuchu+="巧克力购买成功!\r\n";

a[9][1]--;

b[9][1]--;

if((a[9][1])==0)

{

EnableWindow(IDC_QIAOKELI,FALSE);

m_shuchu+="巧克力已经售完,请选择其他商品!\r\n";

}

}else{

EnableWindow(IDC_QIAOKELI,FALSE);

m_shuchu+="巧克力已经售完,请选择其他商品!\r\n";

}

break;

}

case 10:

{

if(a[10][1]>0){

m_shuchu+="营养快线购买成功!\r\n";

a[10][1]--;

b[10][1]--;

if((a[10][1])==0)

{

EnableWindow(IDC_YINGYANG,FALSE);

m_shuchu+="营养快线已经售完,请选择其他商品!\r\n";

}

}else{

EnableWindow(IDC_YINGYANG,FALSE);

m_shuchu+="营养快线已经售完,请选择其他商品!\r\n";

}

break;

}

case 11:

{

if(a[11][1]>0){

m_shuchu+="果粒多购买成功!\r\n";

a[11][1]--;

b[11][1]--;

if((a[11][1])==0)

{

EnableWindow(IDC_GUOLIDUO,FALSE);

m_shuchu+="果粒多已经售完,请选择其他商品!\r\n";

}

}else{

EnableWindow(IDC_GUOLIDUO,FALSE);

m_shuchu+="果粒多已经售完,请选择其他商品!\r\n";

}

break;

}

}

m_inValue=number;//

sum+=price;//金钱累加

p=sum;

}else

{

m=price-m_inValue;//差价

CString str;

str.Format(_T("%4.2f"),m);//字符串的转化

m_shuchu+="您的金额不足购买本商品,请选择其他商品!";

m_shuchu+="还差金额数为:";

m_shuchu+=str;

m_shuchu+="\r\n";

m_shuchu+="如需继续购买,请继续添加纸币,或者结束购买。\r\n";

m_in=m_inValue;

}

2.3、售货机工作员设置

在售货机存款达到5000时,让所有的按钮变暗,即售货机停止出售,只有工作员提取存款后才恢复出售商品;工作员给售货机添加商品时,判断要添加的数量。

if((sum>=5000))

{

jinzhi();//所有的按钮都禁止

m_shuchu+="机器存款已满,请等待管理员取出存款后再购买!\r\n";

}

void CBuyDlg::OnAdd()//添加货物

{

m_cshow.PostMessage(WM_VSCROLL,SB_BOTTOM,0);//货物输出框滚动条总是向下UpdateData(TRUE);

int

s[12][2]={{0,5},{1,3},{2,4},{3,5},{4,6},{5,7},{6,8},{7,9},{8,10},{9,6},{10,4},{11,3}};//重新设数组,值等于a

int a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11;

CString aa0,aa1,aa2,aa3,aa4,aa5,aa6,aa7,aa8,aa9,aa10,aa11;

a0=s[0][1]-b[0][1];//还需要添加多少

a1=s[1][1]-b[1][1];

a2=s[2][1]-b[2][1];

a3=s[3][1]-b[3][1];

a4=s[4][1]-b[4][1];

a5=s[5][1]-b[5][1];

a6=s[6][1]-b[6][1];

a7=s[7][1]-b[7][1];

a8=s[8][1]-b[8][1];

a9=s[9][1]-b[9][1];

a10=s[10][1]-b[10][1];

a11=s[11][1]-b[11][1];

void CBuyDlg::OnGet()//领取金额

{

m_cshow.PostMessage(WM_VSCROLL,SB_BOTTOM,0);//输出框滚动条总是向下

UpdateData(TRUE);

CString str1;

str1.Format(_T("%4.2f"),p);

m_shuchu+="领取的金额为:";

m_shuchu+=str1;

m_shuchu+="\r\n";

sum=0;

xian();//所有按钮激活

UpdateData(FALSE);

}

三、运行结果

3.1、投币操作

3.1.1、金额充足显示

正常投币购买商品:

3.1.2、金额不足显示

当金额不足以购买某商品时,售货机会提示金额不足,并显示差额,若继续投币则能够继续购买,否则可以选择退币。

3.2、继续投币操作

如差额为1.00元,余额为3.5,投入1.00元刚好可以购买鲜奶,纸币投入窗口余额显示为0。

3.3、退币操作

当金额不足,需要退币时点击“结束购买”,则“纸币输出”窗口会显示退币金额。如余额为2元,要退币时:

3.4、停止售卖

当售货机金额达到5000元时,或者某商品售完时,将停止买卖,工作人员必须取走货款或添加商品后才能继续购买。

3.4.1、金额上限停止显示

为测试方便,在源程序处把“上限金额改为50”进行测试,当售货机售货金额达到(或卖完最后一件商品超过上限金额50),则停止售货,此时所有“商品键变为灰色”,工作员提取货款,商品键恢复:

3.4.2、商品售完显示

某商品售完之后无法购买,需要工作员“添加存货”之后才行:

四、心得体会

通过这次课程设计,我的体会是难度不小,但同时收获也是很多的。在这次设计中,我懂得了如何用MFC编写可视化界面的应用程序,利用这次设计自动售货机的机会,我加强了对C++的认识,同时也懂得了程序设计过程中的一些比较重要的步骤,如需求分析、总体设计、程序模块设计等等。总而言之,在这次课程设计中,我收获很多,既有遇到问题解决不了时的焦急,也有解决问题时的那种难于言表的开心。这次课程设计,我感觉自己做

什么是面向对象程序设计

1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。

Java程序设计论文面向对象论文

Java程序设计论文面向对象论文 摘要:java语言是应用非常广的面向对象程序设计语言,目前许多高职高专院校均开设了这门课程。本文分析了在高职高专进行java程序设计语言教学过程中遇到的一些问题,并依据实际教学经验提出对高职高专教师如何开展java程序设计语言课程的教学进行了一定程度的探讨。 关键词:java程序设计;面向对象;教学方法;探讨 java programming language teaching higher method li honglan (yuzhou science and technology vocational college in jiangxi,xinyu338029,china) abstract:java language is very broad application of object-oriented programming language,the current number of vocational colleges are now offering the course.the paper analyzes the java programming language vocational teaching some of the problems encountered in the process,and based on practical experience in teaching vocational teachers on how to make java programming language to carry out teaching for a certain degree of. keywords:java

基于单片机的自动售货机_毕业设计论文

基于单片机的自动售货机 摘要 自动售货机是自动化技术在人们生活中的重要应用。随着人们生活质量的不断提高,对自动售货机的性能要求越来越高。自动售货机的主要功能是通过人机对话的形式完成自动售货这一过程。 本文设计了一款以INTEL公司出品的80C51单片机为核心的自动售货机,并且着重详细地介绍了自动售货机的整体系统设计方案、硬件选择基础、软件使用方法及技巧。以80C51作为CPU处理单元连接各个功能模块;以4*4矩阵键盘作为输入控制模块对货物进行种类和数量的选择以及模拟货币的投入功能;以LCD1602液晶作为显示模块来显示当前的购物状态以及货币状态;以LED的显示来表示当前选择货物以及出货的状态。通过Protues7.5单片机电路原理图进行连接布线连接各个模块;再用Keil uVision3专业编译软件完成源程序编译和调试,最终进行自动售货机的实验电路仿真来模拟自动售货。结合工作原理、系统设计、软件编译和实验仿真来实现自动售货这一相关功能。 关键词自动售货机,80C51单片机,编译仿真

ABSTRACT The automatically vending machine is provided the the the important applications of the automation technology in people's lives. With the continuous improvement of people's quality of life, the increasingly high performance requirements of vending machines. Vending machines The main function of the form of man-machine dialogue vending this process. The designed a produced by Intel 80C51 microcontroller as the core vending machines, and emphasizes the detailed description of the overall system design of the vending machines, hardware options, software and the use of methods and techniques. As 80C51 CPU processing unit connected to the various functional modules; 4 * 4 matrix keyboard as an input control module of goods, the choice of the type and number of input and analog currency; LCD1602 LCD as the display module to display the current state of shopping as well as currency state; LED display indicates the current selection of goods and shipment status. By the Protues7.5 microcontroller circuit diagram connecting wiring each module; complete source code to compile and debug then the Keil uVision3 professional compiler software, eventually vending machine experiment circuit simulation to simulate the automatic vending. Combined with the working principle, system design, software compiler and experimental simulation to achieve automatic vending related functions. Keywords automatic vending machine, 80C51 MCU, compiled simulation

面向对象程序设计课程设计

《面向对象程序设计》课程设计 课程代码:*****(采用现行5位数字的课程代码) 课程名称:面向对象程序设计课程设计 设计周数:1周 学分:0.5学分 课程类别:必修课 一、课程设计的目的与任务 面向对象程序设计课程设计是计算机科学与技术、网络工程、信息管理与信息系统等专业集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。通过课程设计,学生可以将本课程所学知识点融会贯通,举一反三,加深实践与理解,提高学生综合运用所学知识的能力;另一方面,在参与一系列子项目的实践过程中,能使学生获得相关项目管理和团队合作等众多方面的实践经验。其目的在于加深对面向对象程序设计理论和基本知识的理解,通过对所选项目的分析、程序算法的设计、运行与调试过程的分析,使学生掌握基本的信息系统分析方法、设计方法和上机操作的各种技巧,对培养学生的逻辑思维能力、团队合作精神、创新能力、动手操作能力各方面素质有提供了良好的实践平台,为后续课程的学习打下一定的基础。 二、本课程设计的基本理论 本课程设计使用面向对象程序设计的方法解决实际问题,涵概了课程的所有重要知识点,如类与对象、继承与组合、虚函数与多态性等。 三、课程设计的形式与基本要求 形式:召开课程设计动员会,根据学生的学习水平和特长进行分组,每组选择指定课程设计的题目和内容。学生在规定的时间内,经过小组的协同工作和指导教师的辅导,完成所选课题的设计,最后由指导教师进行验收及评定。 基本要求:要求学生做好预习,认真分析设计过程中涉及到的算法,并确定所选课题的功能模块,详细描述各模块的具体内容;用流程图描述实现算法,根据算法进行代码的编写,最后进行反复上机调试修改,直到输出正确结果为止。 认真写好课程设计报告,根据每组学生的分工,各自写出对解决问题的详细分析、模块功能、调试结果,最后将课程设计报告上交给指导教师。 四、课程设计的内容 选题一:员工管理信息系统 (1)建立职工信息数据,包括职工编号、姓名、性别、工资、出生时间、部门、参加工作时间和年龄(必须计算得到)。

《面向对象程序设计》答案

实验一熟悉VC++IDE开发环境 一、实验目的 1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。 2、掌握如何编辑、编译、连接和运行一个C++程序。 3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。 二、实验要求 1、分析下列程序运行的结果。 程序一: #include int add(int x,int y=8); void main() { int x=4; cout< void main() { int *p,i; i=5; p=&i; i=*p+10; cout<<"i="< void main(void) { int i=10; int &r=i; r++; cout<<"i="< void func(); int n=1; void main() { static int a; int b= -9; cout <<"a:"<

基于PLC控制的自动售货机毕业设计论文

毕业论文声明 本人郑重声明: 1.此毕业论文是本人在指导教师指导下独立进行研究取得的成果。除了特别加以标注地方外,本文不包含他人或其它机构已经发表或撰写过的研究成果。对本文研究做出重要贡献的个人与集体均已在文中作了明确标明。本人完全意识到本声明的法律结果由本人承担。 2.本人完全了解学校、学院有关保留、使用学位论文的规定,同意学校与学院保留并向国家有关部门或机构送交此论文的复印件和电子版,允许此文被查阅和借阅。本人授权大学学院可以将此文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本文。 3.若在大学学院毕业论文审查小组复审中,发现本文有抄袭,一切后果均由本人承担,与毕业论文指导老师无关。 4.本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。论文中凡引用他人已经发布或未发表的成果、数据、观点等,均已明确注明出处。论文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究成果做出重要贡献的个人和集体,均已在论文中已明确的方式标明。 学位论文作者(签名): 年月

关于毕业论文使用授权的声明 本人在指导老师的指导下所完成的论文及相关的资料(包括图纸、实验记录、原始数据、实物照片、图片、录音带、设计手稿等),知识产权归属华北电力大学。本人完全了解大学有关保存,使用毕业论文的规定。同意学校保存或向国家有关部门或机构送交论文的纸质版或电子版,允许论文被查阅或借阅。本人授权大学可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存或编汇本毕业论文。如果发表相关成果,一定征得指导教师同意,且第一署名单位为大学。本人毕业后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为大学。本人完全了解大学关于收集、保存、使用学位论文的规定,同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存或汇编本学位论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入学校有关数据 库和收录到《中国学位论文全文数据库》进行信息服务。在不以赢利为目的的前提下,学校可以适当复制论文的部分或全部内容用于学术活动。 论文作者签名:日期: 指导教师签名:日期:

c面向对象课程设计报告

课程设计报告 课程名称面向对象程序设计 课题名称学生成绩管理系统 专业计算机科学与技术 班级计算机1001 学号2010030101 姓名 指导教师李珍辉陈淑红李杰军 2011年12 月28 日

湖南工程学院 课程设计任务书 课程名称面向对象程序设计 课题学生成绩管理系统 专业班级计算机1001 学生姓名 学号2010030101 指导老师李珍辉陈淑红李杰军 审批 任务书下达日期2011 年11 月15 日 任务完成日期2011 年12 月28 日

一、设计内容与设计要求 1.课程设计目的: 面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。 2.课题题目 1)公司库存管理系统 2)高校学籍管理系统 3)高校工资管理系统 4)高校人事管理系统 5)通讯录程序设计 6)学生成绩管理系统 7) 图书管理系统 8)文本编辑器的设计与实现 9)学生考勤管理系统 10)公司人员管理系统 3.设计要求: ⑴设计课题题目:每位同学根据自己学号除以10所得的余数加1选择相 应题号的课题。随意换题者不记成绩。 ⑵根据自己对应的课题完成以下主要工作:①完成系统需求分析:包括 系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。②完 成系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模 块图)。③完成系统详细设计:包括数据库需求分析;数据库概念结构设计(E -R图);数据库逻辑结构设计;类层次图;界面设计与各功能模块实现。④系 统调试:调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修 改和调整。⑤使用说明书及编程体会:说明如何使用你编写的程序,详细列出 每一步的操作步骤。⑥关键源程序(带注释)

面向对象程序设计教程答案

面向对象程序设计教程(C++吾言描述)题解与课程设计指导 面向对象程序设计概论 一、 名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公 共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的 单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对 象要求另一个对象实施某种操作的一个请求。 二、 填空题 ( 1) 目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种 重要的程序设计方法。 (2) 结构化程序设计方法中的模块由顺序、选择和循环 3 种基本结构组成。 ( 3) 在结构化程序设计方法中,程序可表示为程序 =数据结构 +算法; 而面向 对象的程序设计方法,程序可表示为程序 =对象 +消息。 ( 4) 结构化程序设计方法中的基本模块是过程; 而面向对象程序设计方法 中的基本模块是类。 ( 5) 面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、 选择题(至少选一个,可以多选) ( 1) 面向对象程序设计着重于( B )的设计。 A. 对象 B. 类 C. 算法 D. 数据 ( 2) 面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制 叫做( C )。 A. 抽象 B. 继承 C. 封装 D. 多态 ( 3) 在面向对象程序设计中,类通过( D )与外界发生关系。 A. 对象 B. 类 C. 消息 D. 接口 ( 4) 面向对象程序设计中,对象与对象之间的通信机制是( C )。 A. 对象 B. 类 C. 消息 D. 接口 (5)关于C++与 C 语言的关系的描述中,(D )是错误的。 A. C 语言是C++勺一个子集 B. C 语言与C++是兼容的 C. C++对C 语言进行了一些改进 D. C++和C 语言都是面向对象的 【结果分析】 C 语言是面向过程的。C++吾言是一种经过改进的更为优化的 C 语言,是一种混 合型语言,既面向过程也面向对象。 ( 6) 面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依 存、不可分割的整体来处理。 A. 算法 B. 信息 C. 数据隐藏 D. 数据抽象 第1

面向对象程序设计(答案)

学号:姓名: 第三章面向对象程序设计作业 一、判断题 1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。对 2、如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。对 3、接口中的成员变量全部为常量,方法为抽象方法。对 4、抽象类可以有构造方法,可以直接实例化。错 5、对static方法的调用可以不需要类实例。对 6、包含抽象方法的类一定是抽象类。对 7、方法中的形参可以和方法所属类的属性同名。对 8、接口无构造器,不能有实例,也不能定义常量。错 9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。对 10、Java应用程序的入口main方法只有一种定义法。对 二、选择题 1、下列答案正确的是(A ) A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为public B) 在同一个Java源文件中只能包含一个类,并被声明为public C) 在同一个Java源文件中可以包含多个类,都可以被声明为public D) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default 2、Java实现动态多态性是通过( B )实现的。 A) 重载B) 覆盖 C) 接口D) 抽象类 3、下列哪一个是正确的方法重载描述( A ) A) 重载方法的参数类型必须不同 B) 重载方法的参数名称必须不同 C) 返回值类型必须不同 D) 修饰词必须不同 4、final关键字不可以用来修饰( D ) A) 类B) 成员方法 C) 域D) 接口 5、接口的所有成员方法都具有( B )属性 A) private, final B) public, abstract C) static, protected D) static 6、Java的封装性是通过(A )实现的 A) 访问控制B) 设计内部类 C) 静态域和静态方法D) 包 7、下列接口或类不属于.*包的是( D ) A) Collection B)Vector C) Map D) Integer 8、下述哪一组方法,是一个类中方法重载的正确写法( A ) A) int addValue( int a, int b ){return a+b;}

面向对象程序设计课程设计报告

学生课程实验报告书 14 级计算机与信息科学系系 软件专业 1401 班 学号 3148907101 姓名钟媛媛 学号 3148907107 姓名蔡丽萍 2015 --2016 学年第 2 学期实验项目: 模拟实现银行ATM自动取款机系统 实验时间: 2016.5 实验内容: 一、课程设计的目的 1、掌握面向对象编程的思想和方法; 2、熟悉C++项目开发代码风格; 3、理解项目需求,划分项目模块,学会设计数据库或数据结构及接口; 4、掌握C++编程调试的基本技能; 5、掌握项目实现流程。 二、具体内容 模拟实现银行ATM自动取款机系统。系统主要功能: (1)客户登录 (2)余额查询 (3)取款 (4)转账 (5)借存记录查询 1 项目分析

了解项目应用领域的ATM流程、操作规范,明确项目需求、确定项目功能。 1.1功能描述 画出功能结构图,介绍系统中各模块的主要功能。 1.2 ATM流程 画出系统ATM流程图。 1.3数据库设计 根据系统数据需求,进行数据库概念设计、数据表设计。用户信息表: 1.4功能模块分 记 录 查 询 record id name states zmoney 记录查询

介绍系统的功能模块设计思路,画出模块工作流程图。 2 项目实现 使用C++编程实现项目。 2.1 功能模块设计 系统中各类关系图,类的设计(类的定义)。 class ATM { public: int withdraw();//取款 void zhuan();//转账 void balance();//余额查询 int interfac();//登陆 int menu1();//菜单 void record_info();//记录查询 public: string name;//用户名 string number;//账号 float money;//余额 string password;//密码 }; 2.2 项目实现 系统中各类的实现(各类成员函数的实现)。 void ATM::record_info()//记录查询 { HRESULT hr=db.Connect("(local)","ATMinfo","li","123","1433"); //链接数据库 cout<<"---------------------------------"<>number; string sql="select * from record where id ='"+number+"'"; RECORDSET rs=db.JExecuteWithRecordset(sql); while(rs->rsEOF) { cout<<"---------------------------------"<>number; sql="select * from record where id ='"+number+"'"; rs=db.JExecuteWithRecordset(sql); } while(!rs->rsEOF) { cout<<"*********************************"<

自动售货机的设计论文

自动售货系统 摘要:提出并实现一套基于单片机控制步进电机的自动售货系统。其主要目的是为当前的自动售货机系统提出一种可行的改进方案,扩展其功能,系统主要是由三部分组成:步进电机、51单片机、以及中间的接口电路,可以使自动售货机的功能更加完善,更加有利于自动售货机的多样化发展。 关键词:驱动电路,单片机,步进电机,OCS Abstract:Put forward and realize a set of auto selling machine system according to the single-chip microcomputer control stepper motors .Its main purpose is to put forward a kind of viable improvement project, expanding its function for current auto selling machine system .the system primarily is composed of three parts: stepper motors ,single-chip microcomputer, and connecting circuit in them which can make the function of auto selling machine more perfect, is benefit to have more diverse uses of auto selling machine. Keyword: the driving circuit, single-chip microcomputer , Office Coffee Servic e

《面向对象程序设计》实验指导书(实验二)

实验二类与对象㈡——对象初始化、对象数据与指针 一、实验目的 1.理解构造函数、析构函数的意义及作用,掌握构造函数、析构函数的定义及调用时间,熟悉构造函数的种类; 2.理解this指针及使用方法,熟悉对象数组、对象指针、对象引用的定义及使用方法,熟悉对象作为函数参数的使用方法; 3.熟悉类与对象的应用及编程。 二、实验学时 课内实验:2课时课外练习:2课时 三本实验涉及的新知识 ㈠构造函数与析构函数 在C++中,提供了两个特殊的成员函数,即构造函数和析构函数。 构造函数用于对象的初始化,即在定义一个类对象时,计算机在给对象分配相应的存储单元的同时,为对象的数据成员赋初值。 析构执行的是与构造函数相反的操作,用于撤销对象的同时释放对象所占用的内存空间。 1.构造函数 ⑴构造函数的定义 格式: 类名(形参表) { 构造函数体} ⑵构造函数的调用 构造函数的调用是在定义对象时调用的。 格式:类名对象名(实参表); 类名对象名=构造函数名(实参表); ⑶说明 ①构造函数必须与类同名。 ②构造函数没有返回值,但不能在构造函数前加void类型符(其他没有返回值的成员函数必须加类型符void)。 ③在实际应用中,在定义类时通常应定义一至多个构造函数(重载),以对各数据成员进行初始化;如果不给出构造函数,系统将自定义一个构造函数。 ④构造函数可以可以带参数,也可不带任何参数(称无参构选函数),还可以使用缺省参数。 ⑤不能象普通成员函数一样单独调用。 2.析构函数 ⑴析构函数的定义 格式: ~类名(void) { 析构函数体} ⑵析构函数的调用 析构函数是在撤销对象时自动调用的。 ⑶说明

面向对象程序设计课后答案(完整版)

第二章2-4 #include using namespace std; Add(int a,int b); int main() { int x,y,sum; cout<<"please input x and y:"; cin>>x>>y; sum = add(x,y); cout < using namespace std; int main() {

int *p,*init; int countp=0; int countn=0; p = new int[20]; init = p; for(int i=0;i<20;i++) { cin>>*p; p++; } p = p-20; for( i=0;i<20;i++) { if(*p>0) countp++; if(*p<0) countn++; cout<<*p<<" "; p++; } cout<<"正数有:"< //#include using namespace std; void checkagescore(string name,int age) { if (name == "exit") throw name; if(age<0||age>50) throw age;

C++面向对象程序设计论文

大学课程设计任务书 题目名称C++面向对象程序设计 一、课程设计的内容 1.利用面向对象的方法对业务进行系统分析,形成功能规格说明书; 2.对各个功能模块分析设计抽象并实现对象类; 3.所有数据用文件存储,并通过流类与程序交换; 4.用户界面用基于MFC的设计,最后完成一个可运行的程序 5.五人一个小组,选择一个题目,要求发挥团队合作精神,分工协助 二、课程设计的要求与数据 图书管理信息系统 内容包括: ?分析整理整个管理信息系统的业务流程,形成功能规格说明书。 ?包括的功能: ●图书资料; ●读者资料; ●借阅登记; ●归还登记; ●借阅查询等 三、课程设计应完成的工作 1.功能规格说明书(流程) 2.分析设计说明书(类) 3.界面设计 4.代码实现说明(选择) 5.分工协作说明(具体说明每个人所做的工作) 6.可执行程序 7.设计总结

四、课程设计进程安排 五、应收集的资料及主要参考文献 1、书名:《 C++语言与面向对象程序设计(第3版) 》 作者:郑莉董渊张瑞丰 出版社:清华大学出版社 ISBN : 2、书名:《 Visual C++ 开发GIS系统---开发实例剖析》 作者:陈建春 出版社:电子工业出版社 ISBN :X 发出任务书日期: 2007 年 12 月 31 日指导教师签名: 计划完成日期: 2007 年 1 月 10日基层教学单位责任人签章: 主管院长签章:

摘要:本系统使用Visual C++ 6、0开发工具,包含基于MFC的程序设计。 学生信息管理系统就是非常常见的信息管理系统,就是学校办公中实现办公自动化的前提与基础。通过软件过程的各个环节进行系统分析、设计、实现、测试,并相应给出软件规格说明书等制品。 本系统包含的功能有:学生资料、成绩登记、成绩查询、综合排名等。本系统成功地将面向对象的程序设计思想应用到数据库应用程序设计中。 关键词:信息管理 Visual C++ 编辑查询排名

基于PLC的自动售货机的设计毕业设计论文

本科毕业设计(论文)题目基于PLC的自动售货机的设计

基于PLC的自动售货机的设计 摘要 随着现在城市的发展规模越来越大,在很多公共场所都放置了自动售货机,方便快捷的满足了人们的需求,为人们在对简单物品采购的时候提供了一种便利。传统的一些自动售货机大多采用的是单片机控制方式,抗干扰的能力相对较差,系统硬件设计比较复杂,系统的稳定性以及可靠性很难得到保证,维修和维护困难。 本次设计一套基于PLC的自动售货机的控制系统,简单阐述了自动售货机的发展前景与背景,详细分析其主要功能和特点,提出了总的设计方案;此次设计基于WinCC 和西门子S7-300PLC,主要是对自动售货机的硬件方面和软件方面进行仿真设计,采用了顺序控制的程序设计思路,设计了系统的控制程序,包括投币程序、购买程序和退币程序。 关键词:售货机 PLC 自动化 WinCC

The design of the vending machine based on PLC Abstract Now with the development of the city scale is more and more big, the vending machines were placed in many public places, convenient, satisfy people's demand for people at the time of purchase of simple items provides a convenient.Some of the traditional vending machine is mostly USES a single-chip computer control mode, anti-interference ability is relatively poor, the system hardware design is more complex, it is hard to guarantee the stability and reliability of the system, repair and maintenance difficulties. The design of a vending machine based on PLC control system, simple expounds the development foreground and the background of the vending machine, detailed analysis of its main functions and characteristics, puts forward the total design scheme;This design based on WinCC and Siemens S7-300 PLC, mainly to the vending machine hardware and software aspects of simulation design, used the sequence control program design thinking, design the system control program, including the coin program, purchasing procedures and refund money. Key words:V ending machine; PLC;automation;WinCC

面向对象程序设计课程设计报告同学通讯录管理程序

目录 1.设计题目 (1) 2.设计目的和内容 (1) 2.1设计目的 (1) 2.2设计内容 (1) 3.基本功能描述 (1) 4.设计思路 (1) 5.软件设计 (2) 5.1设计步骤 (2) 5.2界面设计 (3) 5.3关键功能的实现 (3) 5.3.1添加记录 (3) 5.3.2删除记录 (4) 5.3.3选中记录 (4) 5.3.4确认修改 (4) 5.3.5保存记录 (4) 5.3.6退出 (4) 6.结论与心得体会 (4) 7.参考文献 (4) 8.附录 (5) 8.1调试报告及测试结果 (5)

8.2关键源代码 (10) 8.2.1 Student类 (10) 8.2.2全局 (10) 8.2.3List Control初始化 (10) 8.2.4添加记录 (11) 8.2.5删除记录 (11) 8.2.6选中记录 (12) 8.2.7修改记录 (12) 8.2.8保存记录 (13) 8.2.9退出程序 (13)

1.设计题目 同学通讯录管理程序 2.设计目的和内容 2.1设计目的 1)学习Visual C++的MFC开发程序的步骤。. 2)综合运用所学的类、继承和多态的知识。 3)进一步掌握程序的调试方法。 2.2设计内容 1)利用MFC的向导,创建基于对话框的应用程序,添加按钮、编辑框等控件; 2)设计通讯录的数据结构(如:以数组或者动态链表)和相应的类; 3)完成对通讯录中记录的增加、修改、删除和显示; 4)将通讯录存入文本文件。 3.基本功能描述 可以实现学生信息(姓名、学号、系别、邮箱、电话)的添加、显示、选中修改、删除选中和保存并退出程序的功能。 4.设计思路 1)创建基于对话框的MFC应用程序,添加控件:5个Edit Control、6个Button、1 个List Control; 2)在5个Edit Control分别输入相应信息,点击“添加记录”Button可在List Control 中显示相应信息,同时清空五个Edit Control以便下一个学生信息的输入; 3)点中List Control选中已有一组学生信息,点击“删除记录”Button可删除该组 信息; 4)点中List Control选中已有一组学生信息,点击“选择该列”Button将该列信息 返回到5个Edit Control。修改完成后点击“确认修改”Button,对List Control 中选中列完成修改; 5)点击“确认保存”将信息保存到文本文档; 6)点击“退出”退出程序。 7)可在D盘查看保存的信息。

面向对象程序设计笔记

undeclared identifier “未声明的标识符” (1) 十进制整数:在一个整型常量后面加一个字母 l 或 L,则认为是 long int 型常量? (2) 八进制整数?在常数的开头加一个数字 0,就表示这是以八进制数形 式表示的常数? (3)十六进制整数?在常数的开头加一个数字0和一个英文字母X(或x), 就表示这是以十六进制数形式表示的常数? 2. 浮点数的表示方法 如果在实数的数字之后加字母 F 或f,表示此数为单精度浮点数,如1234F,-43f,占 4 个字节?如果加字母 L 或 l,表示此数为长双精度数(long double), 在Visual C++ 6.0 中占 8 个字节. (2) 指数形式(即浮点形式):用字母 e 表示其后的数是以 10 为底的幂,如 e12 表示 1012? 1.普通的字符常量:用单撇号括起来的一个字符就是字符型常量如′a′,′ #′,′%′,′D′都是合法的字符常量,在内存中占一个字节?“cout<<′\n′; ”将输出一个换行,其作用与“cout<

相关文档