《VC++程序设计》课程实验报告(Masoon)

发布时间:2015-06-25 21:44:58   来源:文档文库   
字号:

上机实验报告

课程名称: VC++程序设计

实验名称: VC++程序设计实验

学生姓名: Masoon

班级学号:

指导教师:

实验日期: 2015-06-17

实验一 C++编程环境和基本语句练习

实验1-1 C++编程环境

一.题目

输入课件第二章中的任何一个例子中的源代码,调试并运行。

二.代码

#include

void main(void)

{

int n,right_digit;

cout<<"Enter the number:";

cin>>n;

cout<<"The number in reverse order is ";

do

{

right_digit=n%10;

cout<

n=n/10;

}while(n!=0);

cout<<" ";

cout<<"endl";

}

三.运行结果

实验1-2 C++基本语句练习

一.题目

定义一个有10个元素的整形数组并赋初值,同时定义一个指针变量指向该数组,通过对指针变量的循环,将10个数组元素的值累加,最后屏幕输出该数组每个元素的值以及各个元素的累加值。

二.代码

#include

void main()

{

int a[10]={1,2,4,5,6,7,3,6,9,123};

int *a_pointer;

a_pointer=a;

int sum=0;

for(int i=0;i<10;i++)

{

sum=sum+(*a_pointer);

a_pointer++;

}

cout<<"the sum is "<

for(int j=0;j<10;j++)

{

cout<

}

cout<

}

三.运行结果

实验二 类与对象的定义与使用

实验2-1 类和对象的基本编程

本实验用到的概念:类对象以及成员函数。

一.题目

用面向对象的思想编写程序,实现两个任意的相加,并将结果输出屏幕

二.代码

#include

class add{

private:

int a,b;

public:

add(int a,int b){

this->a=a;

this->b=b;

}

int getResult(){

return a+b;

}

};

void main(void)

{

int a,b;

cout<<"please enter two number: "<

cin>>a;

cin>>b;

add test(a,b);

cout<<"The result is "<

}

三.运行结果

实验22 类和对象的编程

本实验用到的概念:类对象、成员函数、构造函数。

一.题目

编写一个时钟程序,模拟数字时钟的显示

提示:定义一个时钟类Clock,设计成员函数,实现数字时钟的显示(参考课件第三章中的时钟类)。在main()函数中定义对象,并进行时分秒的循环,秒和分从0-59循环,时从0-23循环,注意要加延时循环,以模拟实际的数字时钟的显示

二.代码

#include

#include

class clock{

private:

int hour,minute,second;

public :

clock(int h,int m,int s);

void showTime(){

for(int j=hour;j<24;j++){

for(int k=minute;k<60;k++){

for(int l=second;l<60;l++){

Sleep(1000);

cout<

}

second=0;

}

minute=0;

}

}

};

clock::clock(int h,int m,int s){

hour=h;

minute=m;

second=s;

}

void main()

{

clock cl(16,18,23);

cl.showTime();

}

三.运行结果

实验23 类和对象的编程

本实验用到的概念:类对象、成员函数、静态成员以及对象数组。

一.题目

编写一个程序,输入N个学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算输入学生的平均分。

提示:设计一个学生类Stud,除了包括no(学号)name(姓名)deg(成绩)数据成员外,有两个静态变量sumnum,分别存放总分和人数,另有两个普通成员函数setdata()disp(),分别用于给数据成员赋值和输出数据成员的值,另有一个静态成员函数avg(),它用于计算平均分。在main()函数中定义了一个对象数组用于存储输入的学生数据。

二.代码

#include

#include

using namespace std;

class Stude{

private:

int no;

string name;

float deg;

static int num;

static int sum;

public:

Stude(int no,string name,float deg);

void disp()

{

cout<<"the no is: "<

cout<<"the name is: "<

cout<<"the deg is: "<

cout<<"the sum is: "<

cout<<"the num is: "<

}

void avg()

{

cout<<"the average number is: "<

}

};

int Stude::sum=0;

int Stude::num=0;

Stude::Stude(int no,string name,float deg)

{

this->no=no;

this->name=name;

this->deg=deg;

num++;

sum=sum+deg;

}

void main(void)

{

Stude stu1(1,"han",88);

Stude stu2(2,"li",99);

Stude stu3(3,"xx",70);

stu1.disp();

stu2.disp();

stu3.disp();

stu1.avg();

}

三.运行结果

实验三 继承性和多态性练习

实验3-1 继承性练习

本实验用到的概念:类对象以及类的派生与继承

一.题目

给出下面的基类:

class Area

{

protected:

double height;

double width;

public:

…….. //公有函数自己写

}

要求:

建立两个派生类Box(矩形类)与Isosceles(等腰三角形类),分别用来计算任意矩形和等腰三角形的面积,并编写主程序实现功能。

二.代码

#include

class Area

{

protected:

double height;

double width;

public:

void set(double h,double w)

{

width=w;

height=h;

}

};

class Box:public Area

{

public:

double getArea()

{

return width*height;

}

};

class Isoscede:public Area

{

public:

double getArea()

{

return width*height/2;

}

};

void main(void)

{

double width;

double height;

int choice;

Box b;

Isoscede is;

cout<<"1.box 2.Isos"<

cin>>choice;

cout<<"please enter the width and height"<

cin>>width;

cin>>height;

if(choice==1)

{

b.set(height,width);

cout<<"the are of box is "<

}else{

is.set(height,width);

cout<<"the area of isoscede is "<

}

}

三.运行结果

实验32 多态性练习

本实验用到的概念:类对象、类的派生与继承以及纯虚函数和抽象类

一.题目

将实验3-1程序中的基类改成抽象类,其它要求不变

二.代码

#include

#include

using namespace std;

class Area{

protected:

double height;

double width;

public:

void setSize(double h,double w)

{

this->height=h;

this->width=w;

}

virtual int result()=0;

};

class Box:virtual public Area

{

public:

int result()

{

return width*height;

}

};

class Isosceles:virtual public Area

{

public:

int result()

{

return width*height/2;

}

};

void main(void)

{

int width;

int height;

cout<<"please enter the width:"<

cin>>width;

cout<<"please enter the height:"<

cin>>height;

Box b;

Isosceles is;

b.setSize(height,width);

is.setSize(height,width);

cout<<"the area of box is :"<

cout<<"the area of isoscelse is:"<

}

三.运行结果

实验 VC++MFC练习

实验41 VC++MFC练习

本实验是VC++MFC的练习,需要用到MFC的知识和多个控件

一.题目

一个公司人员工资信息系统的设计与开发(用VC++MFC实现)

二.界面设计

. 类的成员设计(用类向导进行数据成员设计时的抓图)

四.代码

五.运行结果

实验42 VC++MFC练习(选作)

本实验是VC++MFC的练习,需要用到MFC的知识和多个控件

一.题目

VC++编写程序,实现系统登录程序的界面设计和编程

二.界面设计

. 类的成员设计(用类向导进行数据成员设计时的抓图)

四.代码

五.运行结果

北京服装学院商学院

上机实验报告

课程名称: VC++程序设计

实验名称: 一个小型公司人员工资

系统的设计与编程

实验性质: 综合性□/设计性/一般性□

学生姓名: Masoon

班级学号:

指导教师:

实验日期: 2015-06-17

小型公司人员工资系统的设计与编程

一、实验名称

一个公司人员工资信息系统的设计与开发

二、实验目的

1.理解面向对象编程的思想;

2.掌握类、对象、继承和多态的基本概念和编程方法;

4熟悉Visual C++6.0编程环境、语句和程序的调式。

三、实验内容

1练习面向对象程序设计的一般方法.

2使用Visual C++的环境编写C++程序。

3练习程序的调试和完善。

四、实验环境

软件环境:

操作系统:Windows XP

开发工具:Visual C++6.0

硬件环境

CPU: Pentium(R) D CPU 3.0GHz

内存:512M内存

五、实验过程和结果

.

某小型IT公司,主要有四类人员:经理、兼职技术人员、销售经理和兼职推销员。现在该公司需要一个小型的人员信息系统来存储这些人员的姓名、编号、级别、当月薪金、计算月薪总额并输出显示人员的全部信息。

人员编号基数为1000,每输入一个人员的信息,其编号顺序加1

经理和销售经理都有级别,经理最高为4级,销售经理最高为3级,兼职技术人员和兼职推销员没有级别(或认为级别为1级,不能改变)。

月薪计算方法是:

1) 经理的起薪为5000.001级),以后每增加1级,工资增加2000元。

2) 兼职技术人员按每小时100元领取月薪。

3) 销售经理的起薪为3000.001级),以后每增加1级,工资增加1000元,除次外,销售经理还领取销售提成,销售提成为其所管辖部门 当月销售总额的4%(销售总额为兼职推销员和销售经理的销售额之 和)。

4) 兼职推销员的月薪按其当月销售额的6%提成。

要求:

1)通过人机对话方式输入四类人员的基本情况(每类人员各输入一人),由程序算出该人员的月薪和公司当月月薪总额并输出。

2)按照该公司人员的层次关系,设计一个基类(其中含纯虚函数),并由此产生若干个派生类,通过类的静态成员变量来记录人员个数(即人员编号)和公司当月工资总额。

. 类结构设计

. 程序的实现方法和程序源代码

1. 程序的实现方法

2. 程序源代码

. 程序运行结果

// employeeDlg.cpp : implementation file

//

#include "stdafx.h"

#include "employee.h"

#include "employeeDlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

// Dialog Data

//{{AFX_DATA(CAboutDlg)

enum { IDD = IDD_ABOUTBOX };

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

// No message handlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CEmployeeDlg dialog

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

: CDialog(CEmployeeDlg::IDD, pParent)

{

//{{AFX_DATA_INIT(CEmployeeDlg)

m_edit_name = _T("");

m_edit_whsm = _T("");

m_str_whsmtitle = _T("");

//}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

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

m_index=2;

m_number=1001;

m_totalsalary=0.0,m_totalsales=0.0;

}

void CEmployeeDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CEmployeeDlg)

DDX_Control(pDX, IDC_EDIT_NAME, m_ctr_name);

DDX_Control(pDX, IDC_LIST, m_ctr_list);

DDX_Control(pDX, IDC_EDIT_WHSM, m_ctr_whsm);

DDX_Control(pDX, IDC_COMBO2_GRADE, m_combo_grade);

DDX_Control(pDX, IDC_COMBO1_JOB, m_combo_job);

DDX_Text(pDX, IDC_EDIT_NAME, m_edit_name);

DDX_Text(pDX, IDC_EDIT_WHSM, m_edit_whsm);

DDV_MaxChars(pDX, m_edit_whsm, 10);

DDX_Text(pDX, IDC_STATIC_WHSMTITLE, m_str_whsmtitle);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CEmployeeDlg, CDialog)

//{{AFX_MSG_MAP(CEmployeeDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_CACULATE, OnCaculate)

ON_BN_CLICKED(IDC_QUIT, OnQuit)

ON_CBN_SELENDOK(IDC_COMBO1_JOB, OnSelendokCombo1Job)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CEmployeeDlg message handlers

BOOL CEmployeeDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

// Set the icon for this dialog. The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

m_combo_job.SetCurSel(0);

m_combo_grade.SetCurSel(0);

m_ctr_whsm.EnableWindow(FALSE);

m_ctr_list.AddString(" 级别 工作小时 销售额 ");

m_ctr_list.AddString(" ==============================================================================");

UpdateData(false);

return TRUE; // return TRUE unless you set the focus to a control

}

void CEmployeeDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog::OnSysCommand(nID, lParam);

}

}

// If you add a minimize button to your dialog, you will need the code below

// to draw the icon. For MFC applications using the document/view model,

// this is automatically done for you by the framework.

void CEmployeeDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}

// The system calls this to obtain the cursor to display while the user drags

// the minimized window.

HCURSOR CEmployeeDlg::OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

void CEmployeeDlg::OnSelendokCombo1Job()

{

// TODO: Add your control notification handler code here

int select=m_combo_job.GetCurSel();

m_edit_name = "";

m_edit_whsm = "";

m_ctr_name.SetFocus();

switch(select)

{

case 0:

m_str_whsmtitle = " ";

m_ctr_whsm.EnableWindow(FALSE);

m_combo_grade.ResetContent();

m_combo_grade.AddString("1");

m_combo_grade.AddString("2");

m_combo_grade.AddString("3");

m_combo_grade.AddString("4");

m_combo_grade.SetCurSel(0);

break;

case 1:

m_combo_grade.ResetContent();

m_combo_grade.AddString("1");

m_combo_grade.SetCurSel(0);

m_ctr_whsm.EnableWindow(TRUE);

m_ctr_whsm.LimitText(3);

m_str_whsmtitle = "请输入工时(小时)";

break;

case 2:

m_combo_grade.ResetContent();

m_combo_grade.AddString("1");

m_combo_grade.SetCurSel(0);

m_ctr_whsm.EnableWindow(TRUE);

m_ctr_whsm.LimitText(8);

m_str_whsmtitle = "请输入销售额()";

break;

case 3:

m_combo_grade.ResetContent();

m_combo_grade.AddString("1");

m_combo_grade.AddString("2");

m_combo_grade.AddString("3");

m_combo_grade.SetCurSel(0);

m_ctr_whsm.EnableWindow(TRUE);

m_ctr_whsm.LimitText(8);

m_str_whsmtitle = "请输入销售额()";

break;

}

UpdateData(false);

}

void CEmployeeDlg::OnCaculate()

{

// TODO: Add your control notification handler code here

UpdateData(true);

if ( m_edit_name == "" )

{

AfxMessageBox("姓名不能为空,请重输!!!");

m_ctr_name.SetFocus();

return;

}

int job=m_combo_job.GetCurSel();

int grade=m_combo_grade.GetCurSel();

c_workhours = " ";

c_salesamount = " ";

switch(job)

{

case 0:

c_salesamount = " ";

m_salary=3000.00+2000.00*(float)grade;

break;

case 1:

m_workhours = atoi(m_edit_whsm);

if ( m_workhours == 0 )

{

AfxMessageBox("工作时数不能为空,请重输!!!");

m_ctr_whsm.SetFocus();

return;

}

c_workhours.Format(" %d",m_workhours);

str=c_workhours;

c_workhours=str.Right(11);

m_salary=100.00*(float)m_workhours;

break;

default :

m_salesamount = atof(m_edit_whsm);

if ( m_salesamount == 0.0 )

{

AfxMessageBox("销售额不能为空,请重输!!!");

m_ctr_whsm.SetFocus();

return;

}

c_salesamount.Format(" %f",m_salesamount);

pos = c_salesamount.Find(".")+3;

c_salesamount=c_salesamount.Left(pos);

str=" "+c_salesamount;

c_salesamount=str.Right(11);

m_totalsales += m_salesamount;

if (job == 2)

{

m_salary=0.04*m_salesamount;

}

if (job == 3)

m_salary=3000.00+1000.00*(float)grade+0.05*m_totalsales;

break;

}

m_totalsalary += m_salary;

c_number.Format("%d",m_number);

m_combo_job.GetLBText(job,c_job);

c_grade.Format(" %d " ,grade+1);

c_name=m_edit_name+" ";

c_name=c_name.Left(12);

c_salary.Format("%f",m_salary);

c_salary.Format(" %f",m_salary);

pos = c_salary.Find(".")+3;

c_salary=c_salary.Left(pos);

str=" "+c_salary;

c_salary=str.Right(13);

str=" "+c_number+" "+c_name+c_job+c_grade+c_workhours+c_salesamount+c_salary;

m_ctr_list.DeleteString(m_index);

m_ctr_list.DeleteString(m_index+1);

m_ctr_list.InsertString(m_index,str);

m_ctr_list.InsertString(m_index+1," ==============================================================================");

str.Format("%f",m_totalsalary);

pos = str.Find(".")+3;

str = " "+str.Left(pos);

c_salary=str.Right(14);

str = " 公司本月工资合计: "+str;

m_ctr_list.InsertString(m_index+2,str);

m_ctr_list.DeleteString(m_index+3);

m_number++;

m_index++;

m_ctr_name.SetFocus();

// m_str_whsmtitle = " ";

// m_ctr_whsm.EnableWindow(FALSE);

UpdateData(false);

}

void CEmployeeDlg::OnQuit()

{

// TODO: Add your control notification handler code here

CDialog::OnCancel();

}



、总结

(300字左右,内容为C++的特点、C++程序设计的方法、、学习本课程的体会等等。)

通过这次C++程序的学习我学习到了很多的东西,首先是面向对象设计的一般习惯,面向对象的设计思想,类的使用,对象的使用,类的特性,对象的特性等等,我也认识到了windows的编程机制是消息驱动的编程机制,在这种机制中,重要的是程序对消息的捕捉,同时再对消息进行处理,这种编程机制的好处是使每个程序都变成了一个消息处理的程序,更符合人们对事物处理的特点,这种处理过程非常有用,在日常的过程中,处理事情的时候,这种思维方式会给人很好的处理方式的思路,对日后的生活和工作都有很好的作用和影响。

本文来源:https://www.2haoxitong.net/k/doc/4026bd0b71fe910ef12df8dd.html

《《VC++程序设计》课程实验报告(Masoon).doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式