《面向对象程序设计》
课程设计
题目:模拟自动售货机
院系:数学与计算科学
专业:信息与计算科学
姓名学号: 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 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)建立职工信息数据,包括职工编号、姓名、性别、工资、出生时间、部门、参加工作时间和年龄(必须计算得到)。