当前位置:文档之家› 计算机程序设计数字示波器程序的设计

计算机程序设计数字示波器程序的设计

计算机程序设计数字示波器程序的设计
计算机程序设计数字示波器程序的设计

长安大学电子与控制工程学院

《计算机程序设计综合实验》

综合实验指导书

数字示波器程序的设计

1. 实验目的与要求

通过该实验,使学生掌握面向对象程序设计的基本理论以及视窗程序的基本设计方法,其中包括需求分析、总体设计、详细设计、代码编写及调试等设计环节。要求学生掌握示波器的功能和操作方法,熟练应用时钟、图形绘制功能、文件的读写以及文件内容的检索方法,达到既定的设计效果。

2. 开发环境及先修课程要求

操作系统:Windows7操作系统(或更高版本)

集成开发环境:Visual Studio 2010+MSDN(或更高版本)

先修课程:C/C++程序设计、面向对象程序设计、数据结构与算法

3. Windows编程基础

用Visual C++ 编写Windows应用程序主要有两种方法:(1)使用Windows 提供的应用程序接口(Application Programming Interface,API)函数;(2)使用Microsoft提供的微软基础类(Microsoft Foundation Class,MFC)。在直接使用API函数进行Windows编程时,程序员不仅需要熟记一大堆常用的API函数,而且还要对Windows操作系统有深入的了解,需要编写大量的代码,不适合软件开发的发展潮流,而MFC类库采用面向对象的思想将Windsows应用程序中的API函数做了封装,而且灵活性高,便于程序员的使用。虽然Windows程序设计还有其他的集成开发环境可以使用,但是考虑到前期的教学内容,本实验要求学生采用基于MFC的方法来实现。

MFC大约有200多个类,可以分成两种:

(1)Cobject类的派生类。它们以层次结构的形式组织起来,几乎每个子层次结构都与一个具体的Windows实体对应;

(2)非Cobject派生类。这些都是独立的类,如表示点的Cpoint类,表示矩形的Crect类等。

在Visual C++中,可以创建以下3类典型的Windows应用程序,且都是通过MFC AppWizard(以下简称AppWizard)向导创建的:

(1)基于对话框的应用程序:这类程序适合于文档较少而交互操作较多的应用场合,如Windows自带的计算器程序。

(2)单文档界面(SDI)应用程序:这类程序一次只能打开一个文档,如Windows自带的Notepad程序。

(3)多文档界面(MDI)应用程序:这类程序可以同时打开多个文档并进行处理,处理的过程中很容易地进行切换。

3.1 基于对话框的Windows应用程序

对话框是一种特殊类型的窗口,绝大多数Windows程序都通过对话框与用户进行交互。在Visual C++中,对话框既可以单独组成一个简单的应用程序,又可以成为文档/视图结构程序的资源。

(1)创建对话框应用程序的基本步骤:

●建立基于对话框的MFC应用程序框架;

●在程序用户界面上放置控件;

●设置控件属性;

●使用Class Wizard为控件连接变量,即为控件命名;

●使用Class Wizard添加并且编写消息处理函数。

(2)对话框应用程序框架

用AppWizard创建基于对话框的应用程序框架后,项目工作区上将出现“ResourceView”选项卡和“ClassView”选项卡,很多工作是需要通过这两个选项卡进行的。在Visual C++中,与用户进行交互的对话框界面被认为是一种资源。展开“Dialog”,可以看到有一个ID为IDD_TEST_DIALOG的资源,对应中间的对话框设计界面。不管在何时,只要双击对话框资源的ID,对话框设计界面就会显示在中间。比如创建的应用程序名为“TEST”,则在ClassView中,有三个重要的类:CAboutDlg、CTESTApp和CTESTDlg。CAboutDlg类对应了生成的版本信息对话框;CTESTDlg是对话框类,从Cdialog继承过来的,在程序运行时看到的对话框就是它的一个具体对象;CTESTApp是应用程序类,从CWinApp继承过来,封装了初始化、运行、终止该程序的代码。

(3)对话框设计工具

通过对话框设计工具,可以获得所见即所得的效果。通过将控件工具栏上的标准控件按钮,可以在对话框上绘制出所需要的程序界面效果。当然,也可以采用代码的方式动态的创建或隐藏控件。另外,可以添加OLE第三方控件,丰富对话框的交互功能。

3.2 文档/视图结构应用程序

文档/视图结构的思想是将数据的管理与显示分离,其中文档用于管理应用程序的数据,而视图是用户界面,用于显示、打印文档中的数据,并管理与用户

的交互。由于本课程的实验并不涉及多文档程序结构,所以MDI不做介绍。

SDI具有文档/视图结构的应用程序框架,该框架包括应用程序类、窗口框架类、文档类和视图类,编程的任务是在文档类和视图类中添加适当的代码。其中文档类中一个重要的成员函数是OnNewDocument(),用户在此添加代码完成对数据的初始化;而视图类中最重要的成员函数是OnDraw(),通过在该函数中添加代码实现窗口内容的输出。

SDI应用程序由AppWizard创建好后,即使没有编写一行代码,仍然可以运行,并且具有一个标准Windows应用程序所需要的组成成份,程序员的工作就是往这个框架添加必要的代码。SDI应用程序框架主要包含以下几个类:(1)应用程序类

每个应用程序类必须从CWinApp派生出自己的应用程序类,该类封装了包括初始化、运行和结束的整个过程,其名称是AppWizard根据工程名称自动命名的。如果工程名符合标识符的命名规则,则应用程序类名一般由字母C、工程名和App三部分组成。文档类和视图类的命名规则与应用程序类类似,区别在于在后面分别添加了Doc和View。

(2)窗口框架类

从CMainWnd派生提供了一个SDI窗口的所有功能,如显示一个标题、一个菜单栏、一个工具栏等。所有SDI应用程序窗口框架类名都是CMainFrame,但是性质是有区别的。

(3)文档类

从CDocument类派生出来,是应用程序进行数据定义和初始化的地方。文档类的数据成员只有被说明成公有成员才能被视图类中的成员函数访问,其重要成员函数是OnNewDocument(),是进行数据成员初始化的地方。程序开始时会自动调用该函数。

(4)视图类

从CView中派生出来,是程序的用户界面,用于显示、打印存储在文档类对象中的数据,并管理与用户的交互,其重要成员函数有GetDocument函数和OnDraw函数。GetDocument()函数的返回值是指向与当前视图相关联的文档对象的指针,因而通过它可以访问文档类对象中的公有私有成员。OnDraw函数用于实现输出,一般来说,窗口中的内容都是OnDraw函数输出的。

需要强调的是OnDraw函数有两种调方法,即自动调用和手工调用。当窗口发生变化视图需要重新绘制时,应用程序会自动调用该函数;当程序中的数据改变了需要重新显示时,可以通过调用Invalidate和InvalidateRect函数,引发对Ondraw函数的间接调用。比如:

Invalidate(TRUE) // 擦除窗口原有的内容,重新绘制。

Invalidate(FALSE) // 窗口原有的内容保留,再进行绘制。

InvalidateRect( 矩形, TRUE) // 擦除矩形区域内原有内容,重新绘制这个区域。

InvalidateRect( 矩形, FALSE) // 矩形区域内原有内容保留,再绘制这个区域。

4. 实验要求

4.1 基本要求

(1)设定信号的类型,频率,振幅,和其它相关参数;

(2)设定信号线条的类型、粗细、颜色;

(3)显示正弦波,方波,锯齿波;

(4)显示2-4路信号,各信号独立显示,每路信号单独配置参数,并能保存配置的参数,软件重新运行时,参数不丢失,能够默认为最后一次设置的参数;

(5)每路信号的显示可以独立开关,也可以统一开关所有信号;

(6)每路信号只显示在对应的窗口,每个窗口只显示一路信号;

(7)对每路信号,可独立进行放大显示,在水平和垂直方向上移动。

4.2 发挥部分

(1)可在指定位置输入文字,自定义文字的字体、大小和颜色;

(2)其它自行设计的功能。

(1)动态调整信号的频率,并且能在调整后立即执行,能看到调整效果;

(2)通过旋钮设定参数值;

(3)进行组件值限定,控制参数的设置范围;

(4)可弹出独立窗口放大显示主窗口中信号的局部内容;

(5)其它自行设计的功能。

5. 设计要点

本综合实验课程鼓励学生的设计创新,所以本节所包含的设计方案或设计方法只作为提示或参考。

5.1工程建立

在Visual软件中选择新建项目,选择MFC应用程序并建立新工程。

图1:工程创建

5.2界面设计举例

在资源视图中选择对话框,对要使用的控件进行添加与布局,最终生成的软件界面如图2所示。

如图2所示为主窗体界面,在此界面可以添加各种控件以及调整布局。左边为三个波形显示通道,右边在相应的位置上加上对应的控件用于进行不同的功能控制。

图2: MFC主窗体

运行程序,将弹出如图3所示的示波器主界面。

图3:示波器主界面

(1)显示模块设计

如图3的左半部分。首先获取用户区域,然后用画刷进行填充绘制,绘制背景面板;然后确定曲线面板区域,绘制网格,作为绘制动态曲线区域;确定标注数值变化的面板区域;确定标题栏区域,绘制标题。

(2)控制模块设计

如图3的右半部分。这些按键分为不同部分,每一个部分都用组合框分开,;添加按钮控件,总开关是控制三个窗口的开关;各个的组合框里边的开关分别控制各自的窗口;然后再在各自的组合框中添加“频率”、“振幅”、“粗细”、“颜色”、“实线”、“虚线”、“点划线”、“正弦波”、“方波”和“锯齿波”等控件,控制波形参数。

“开”控件,为其添加的消息映射定时器settimer函数,同时写入几个通道的开启输出波形语句。“关”控件,为其添加的消息映射为几通道关闭输出的语句。主要程序如下:

void CShiboqiDlg::OnStart() //总开始开关

{

CH1=1;

CH2=1;

UpdateData(TRUE);

SetTimer(1,150,NULL);

PlaySound(_T("C://Users//zjjmh//Desktop//莫名其妙示波器//bad//示波器//shiboqi//haha.wav"), NULL, SND_FILENAME | SND_ASYNC);

}

总停止开关及其他相似。

5.3波形显示模块设计实例

创建一个CStatic类的子类CScope,生成一个显示波形的静态控件。CStatic 类提供了一个Windows静态控件的性能。一个静态控件用来显示一个文本字符串,框,矩形,图标,光标,位图,或增强的图元文件。它可以用来作为标签,框,或用来分隔其它的控件。一个静态控件不接收输入,也不提供输出;但是,如果它是用SS_NOTIFY风格创建的,则它可以通知其父有关设备点击的消息。创建一个静态控件分两步。首先,调用构造函数来构造此CStatic对象,然后调用Create成员函数来创建此静态控件并将它与该CStatic对象连接。如果在一个对话框中创建了一个静态控件(通过一个对话框资源),则当用户关闭这个对话框时,此CStatic对象被自动销毁。如果在一个窗口中创建了一个CStatic对象,则必须销毁它。在一个窗口的堆栈中创建的CStatic对象将自动被销毁。如果使用new函数在堆中创建CStatic对象,则当使用完后,必须调用delete来销毁这个CStatic对象。

CScope类中封装的操作包括绘制波形,更新波形,在横轴和纵轴方向上放大或缩小波形和实现波形的移动。

绘制波形:将波形的值与此时的时间分别存入CScope类中的两个链表中,绘图时,将时间与值分别赋给POINT的横坐标和纵坐标;再使用CDC类的

Polyline()函数将点与点之间用曲线连接,如图4所示。

图4:绘制波形功能

同时,在CMyDlg中使用SetTimer定义一个定时器,每隔设定的时间就会调用OnTimer消息映射函数;在其中定义dTime为开启后的系统时间作为CScope 类中使用的时间,并根据不同的波形对波形进行赋值。

在横轴和纵轴方向上放大或缩小波形:在CScope类中添加一个WM_LBUTTONDOWN消息映射,当点击鼠标左键时就会调用该消息映射函数,波形的移动:在CScope类中添加一个WM_MOUSEMOVE消息映射,当拖动鼠标左键时就会调用该消息映射函数,用户点击示波器右边的游标即可实现拖动波形,如图5所示。

图5:波形移动功能

该部分主要代码如下:

void CScope::DrawCurve(CDC *pDC) //绘制波形

{

m_bDrawing = TRUE;

int nSize = m_TimeList.size();

POINT *pPointArray =(POINT *) new POINT[nSize];

int i;

std::list::iterator time_it = m_TimeList.begin();

std::list::iterator value_it = m_ValueList.begin();

std::list::iterator time_begin = time_it;

for(i=0;i

{pPointArray[i].x = ConvertTimeToAxisX(*time_it-*time_begin);

pPointArray[i].y = ConvertValueToAxisY(*value_it);

time_it++;

value_it++;

}

m_bDrawing =FALSE;

CPen *pOldPen = pDC->SelectObject(&m_PenCurve);

m_PenCurve.DeleteObject();

m_PenCurve.CreatePen(m_nPenStyle,m_nPenWidth,m_nPenColor);

pOldPen = pDC->SelectObject(&m_PenCurve);

pDC->SelectClipRgn(&m_rgnCurve);

pDC->Polyline(pPointArray,nSize);

pDC->SelectClipRgn(NULL);

pDC->SelectObject(pOldPen);

delete []pPointArray;

}

void CScope::UpdateCurve() //更新波形

{

CClientDC dc(this);

CRect rect;

GetClientRect(&rect);

CDC memDC;

memDC.CreateCompatibleDC(&dc);

CBitmap bitmap,*pOldBmp;

bitmap.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());

pOldBmp = memDC.SelectObject(&bitmap);

DrawGrid(&memDC);

DrawCurve(&memDC);

dc.BitBlt(m_rectCurve.left,m_rectCurve.top,m_rectCurve.Width(),m_rectCu rve.Height(),&memDC,m_rectCurve.left,m_rectCurve.top,SRCCOPY);

memDC.SelectObject(pOldBmp);

}

void CScope::AddValue(double dTime,double dValue)

//将波形的值与时间添加到链表中

{ if(m_bDrawing)

return;

m_TimeList.push_back(dTime);

m_ValueList.push_back(dValue);

std::list::iterator start_it = m_TimeList.begin();

std::list::iterator end_it = m_TimeList.end();

end_it--;

double dStartTime = *start_it;

double dEndTime = *(end_it);

while(dEndTime-dStartTime>4*m_dDimT)

{

m_TimeList.pop_front();

m_ValueList.pop_front();

start_it = m_TimeList.begin();

end_it = m_TimeList.end();

end_it--;

dStartTime = *start_it;

dEndTime = *(end_it);

}

}

void CMyDlg::OnTimer(UINT_PTR nIDEvent)//定时器调用函数

{

double dTime = ::timeGetTime()/2000.0 ;

double dValue[3]={0,0,0};

SetPen();

float fRandom=0.3*(float)rand()/RAND_MAX-0.15; //用随机数生成噪声信号

if(m_nSwitch3)

{

if(m_nSwitch1)

{

switch(m_nWaveSel1) //选择通道1波形

{

case 0: //正弦波

方波、锯齿波类似。

{ if(dTime-(int)((dTime)/(1/m_fFreq1))*(1/m_fFreq1)<(1/(m_fFreq1)))

dValue[0] = m_fMax1/(1/(m_fFreq1))*(dTime-(int)((dTime)/(1/m_fFreq1))*(1/m_fFreq1));break;

}

default:break;

}

if(m_nRadio1) dValue[0]=dValue[0]+fRandom;

m_wndScope.AddValue(dTime,dValue[0]);

m_wndScope.SetValue(dValue[0]);

m_wndScope.UpdateCurve(); //绘制通道1波形

}

5.4参数选择模块设计实例

参数设置模块如图6所示,主要包括以下部分:波形种类选择,幅值与频率设置,波形线条设置等。

波形种类选择:为组合框添加CBN_SELCHANGE消息映射,以实现不同波形的选择。选择正弦波时,直接使用sin函数为波形进行赋值;选择方波时,判断dtime在前半周期还是后半周期,若在前半周期,为波形赋值为正幅值,反之赋值为负幅值;锯齿波同理。

波形的绘制(以锯齿波为例),部分代码如下:

oid CShiboqiDlg::sanjiaobo1()

{ CStatic* pWnd = (CStatic*)GetDlgItem(IDC_STATIC_Graph1);

CDC* pDC = pWnd->GetDC();

CRect rc;

pWnd->GetClientRect(&rc);

CRgn rgn;

rgn.CreateRectRgn(rc.left+5,rc.top+10,rc.right-25,rc.bottom-7); //显示图像的界限

pDC->SelectClipRgn(&rgn);

//建立画笔

CPen mypen;

mypen.CreatePen(PenType1,m_xiankuan1,Color1);

pDC->SelectObject(&mypen);

pDC->SetViewportOrg(0,125);

//绘制横坐标

int y,amp,f;

peak1=m_peak1.GetScrollPos();

amp=peak1;

fre1=m_frequent1.GetScrollPos();

f=(10000/fre1);

y=amp;

pDC->MoveTo(0,y);

int rand1;

int i=0,x=-250;

Pos1++;

if(Pos1>=250)Pos1=0;

for(i=0;x<250;i++)

{

rand1=rand()%4-2;

if((i%(f))!=0){x++;y-=(2*amp/(f));}

else y=amp;

if(rand1<2&&rand1>-2)//波动范围和有无干扰

{

pDC->LineTo((int)(x+Pos1),(int)(y-Pos2)+rand1);

pDC->MoveTo((int)(x+Pos1),(int)(y-Pos2)+rand1);

}

else

{

pDC->LineTo((int)(x+Pos1),(int)(y-Pos2));

pDC->MoveTo((int)(x+Pos1),(int)(y-Pos2));

}

}

}

幅值与频率设置:为编辑框添加EN_CHANGE消息映射,为旋转按钮添加UDN_DELTAPOS消息映射,将编辑框中的数字设置为幅值与频率。

波形线条设置:通过在CScope类中使用CreatePen(int nPenStyle, int nWidth,

COLORREF crColor)函数来设置波形线条;三个参数分别对应画笔的风格,宽度和颜色。

图6:参数选择模块

5.5参数保存读取模块设计实例

点击界面上保存按钮,即可将当前设定的参数保存为一个txt文件,如图7所示。

图7:保存的txt文件

在CMyDlg中添加一个按钮的BN_CLICKED消息映射函数,在函数中,利用CStdioFile类的对象将参数一行行地写入txt文件中。

再定义一个ReadData函数,同样利用CStdioFile类的对象将txt文件中的参数一行行地读取,并给控件进行赋值。

该部分代码如下:

void CMyDlg::OnBnClickedButton4()//保存参数,点击保存按钮后调用此函数{

setlocale(LC_CTYPE, "chs");

CString FileName;

CFileDialog dlgFile(FALSE, _T("*.txt"), NULL, OFN_HIDEREADONLY, _T("Describe File(*.txt)|*.txt|All Files(*.*)|*.*||"), NULL);

if (IDOK == dlgFile.DoModal())

{

FileName = dlgFile.GetPathName();

}

else

{

return;

}

CStdioFile FileWrite;

CString data[15];

int SelData[8]={m_nWaveSel1,m_nWaveSel2,m_nColorSel, m_nStyleSel,m_nColorSel2,m_nStyleSel2,m_nColorSel3,m_nStyleSel3};

m_combo1.GetWindowTextA(data[0]);

m_Edit1.GetWindowTextA(data[1]);

m_Edit2.GetWindowTextA(data[2]);

m_combo2.GetWindowTextA(data[3]);

m_Edit4.GetWindowTextA(data[4]);

m_Edit5.GetWindowTextA(data[5]);

m_combo3.GetWindowTextA(data[6]);

m_combo4.GetWindowTextA(data[7]);

m_Edit6.GetWindowTextA(data[8]);

m_combo4.GetWindowTextA(data[9]);

m_combo5.GetWindowTextA(data[10]);

m_Edit10.GetWindowTextA(data[11]);

m_combo6.GetWindowTextA(data[12]);

m_combo7.GetWindowTextA(data[13]);

m_Edit11.GetWindowTextA(data[14]);//将参数保存入数组中

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

{CString temp;

temp.Format(_T("%s"), *(data+i));//需要保存的数据,注意格式

FileWrite.WriteString(temp);

FileWrite.WriteString(_T("\r\n"));//将参数写入txt文件中}

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

{

CString temp1;

temp1.Format(_T("%d"), *(SelData+j));//需要保存的数据,注意格式

FileWrite.WriteString(temp1);

FileWrite.WriteString(_T("\r\n"));//将参数写入txt文件中}

FileWrite.Close();

}

void CMyDlg::ReadData(void)

{

CStdioFile file;

CString strText=_T("");

CString data[23];

int i=0;

if(file.Open(_T("C:\\Users\\Rex\\Desktop\\示波器\\data.txt"), CFile::modeRead))

{m_dwPos = file.GetPosition();//记录读到了哪一行;

file.Seek(m_dwPos, CFile::begin);

while (file.ReadString(strText))

{data[i] = strText;

m_dwPos++;

i++;

} //将txt中保存的数据存入数组中

SetDlgItemText(IDC_COMBO1,data[0]); //用保存数据为控件赋值

SetDlgItemText(IDC_EDIT1,data[1]);

SetDlgItemText(IDC_EDIT2,data[2]);

SetDlgItemText(IDC_COMBO2,data[3]);

SetDlgItemText(IDC_EDIT4,data[4]);

SetDlgItemText(IDC_EDIT5,data[5]);

SetDlgItemText(IDC_COMBO3,data[6]);

SetDlgItemText(IDC_COMBO4,data[7]);

SetDlgItemText(IDC_EDIT6,data[8]);

SetDlgItemText(IDC_COMBO4, data[9]);

SetDlgItemText(IDC_COMBO5, data[10]);

SetDlgItemText(IDC_EDIT10, data[11]);

SetDlgItemText(IDC_COMBO6, data[12]);

SetDlgItemText(IDC_COMBO7, data[13]);

SetDlgItemText(IDC_EDIT11, data[14]);

m_nWaveSel1 = atoi(data[15]);

m_nWaveSel2 = atoi(data[16]);

m_nColorSel = atoi(data[17]);

m_nStyleSel = atoi(data[18]);

m_nColorSel2 = atoi(data[19]);

m_nStyleSel2 = atoi(data[20]);

m_nColorSel3 = atoi(data[21]);

m_nStyleSel3 = atoi(data[22]);

file.Close();

}

else

{

MessageBox(_T("无保存数据"));}

}

5.6放大模块设计实例

放大这个功能可放在总控制区域中,但单独用窗口显示。“放大”控件的消息映射函数是比较简单的,只有一个赋值语句。当赋值语句执行后便开始写入鼠标移动的控制函数,接着执行的函数才是显示放大,此函数为放大单独绘制一块矩形框来显示放大区域。然后配合鼠标控制函数获取各位图信息最后显示在矩形框内。

主要程序如下:

void CShiboqiDlg::DrawBigger()//放大

{CWnd* pPic = GetDlgItem(IDC_STATIC);//获取位图位置

CRect rect;//创建矩形框

pPic->GetClientRect(&rect);

int left=rect.left;

int right=rect.right;

int top=rect.top;

int bottom=rect.bottom;

if(left

{CString s;

s.Format("%d",right);

if(bottom-400>pointxy.y && pointxy.y>top)

{

//获取位图数据

CRect rect;

CWnd* pPic=this->GetDlgItem(IDC_STATIC);

pPic->GetClientRect(&rect);

CDC *pDC = pPic->GetDC();

int Width = size;

int Height = size;

CDC memDC;//内存DC

memDC.CreateCompatibleDC(pDC);

CBitmap memBitmap;//建立和屏幕兼容的bitmap

memBitmap.CreateCompatibleBitmap(pDC, Width, Height);

memDC.SelectObject(&memBitmap);//将memBitmap选入内存DC

memDC.BitBlt(0, 0, Width, Height, pDC, pointxy.x-Width*0.74, pointxy.y-Height*0.74, SRCCOPY);//复制屏幕图像到内存DC

CRect drect;

CWnd* pZoom = GetDlgItem(IDC_ZOOM_STATIC);

pZoom->GetClientRect(&drect);

CDC* pZoomDC = pZoom->GetDC();

CDC* pPicDC = pPic->GetDC();

SetStretchBltMode(pZoomDC->GetSafeHdc(),HALFTONE);

pZoomDC->StretchBlt(drect.left,drect.top,drect.Width(),drect.Height(),&memDC ,0,0,Width,Height,SRCCOPY);

ReleaseDC(pDC);

ReleaseDC(pZoomDC);

}

}

}

5.7 其他

以上所列举的是和本程序设计相关的一些基本要点,但由于题目发挥的多样性,这些要点无法覆盖每个同学所面临的问题。本实验鼓励同学们相互讨论研究,并体验同类型程序的设计构思和理念,设计出别具特色、有创新性的软件。

6. 主要参考书籍

[1] 侯俊杰. 深入浅出MFC[M]. 武汉:华中科技大学出版社, 2001.

[2] 郑阿奇,丁有和. Visual C++教程[M]. 北京:清华大学出版社, 2016.

[3] 陈国建. Visual C++宝典[M].北京:电子工业出版社, 2011.

[4] 张力. Visual C++ 高级编程[M].北京:人民邮电出版社, 2002.

[5] 王洪涛. 深入剖析Visual C++编程技术及应用实例[M].北京:人民邮电出版社,

2003.

7. 思考题

1. 在程序设计过程中,你是否通过自定义类对某些功能进行了封装?这些类主要的功能是什么?

2. 小结上机各个环节所出现的错误及解决的办法。

计算机程序设计实践

江苏科技大学 课程实践报告 设计题目: 计算机程序设计实践(VC++) 设计时间: 2015. 3.9 至2015. 3.16 学院: 数理学院 专业班级: 13级信息与计算科学1班 学生姓名: 陈明敏学号1340501101 指导老师: 华伟 2015年5月1日

一、 实践任务 任务一:试建立一个类SP ,求(,)123k k k k f n k n =++++ ,另有辅助函数power ()用 于求 n m 。具体要求如下。 (1)私有数据成员。 Int n ,k :存放公式中n 和k 的值。 (2)公有成员函数。 ①SP(int n1,int k1):构造函数,初始化成员数据n 和k 。 ②int power(int m,int n):求n m 。 ③int fun():求公式的累加和。 ④void show():输出求得的结果。 二、源程序清单 #include class SP{ private: int n,k; public: SP(int n1,int k1); int power(int m,int n); int fun(); void show (); }; SP::SP(int n1,int k1){ n=n1; k=k1; } int SP::power(int m,int n){ int a=m; for(int i=1;i

计算机理论基础知识题

一、单项选择题 1. 一个完整的微型计算机系统应包括__C___。 A. 计算机及外部设备 B. 主机箱、键盘、显示器和打印机 C. 硬件系统和软件系统 D. 系统软件和系统硬件 2. 十六进制1000转换成十进制数是_A____。 A. 4096 B. 1024 C. 2048 D. 8192 3. ENTER键是__B___。 A. 输入键 B. 回车换行键 C. 空格键 D.换档键 4. 3.5英寸的软盘,写保护窗口上有一个滑块,将滑块推向一侧,使其写保护窗口暴露出来,此时__B___。 A. 只能写盘,不能读盘 B. 只能读盘,不能写盘 C. 既可写盘,又可读盘 D. 不能写盘,也不能读盘 5. 3.5英寸盘的右下角有一塑料滑片,当移动它盖住缺口时___B__。 A. 不能读出原有信息,不能写入新的信息 B. 既能读出原有信息,也能写入新的信息 C. 不能读出原有信息,可以写入新的信息 D. 可以读出原有信息,不能写入新的信息 6. DRAM存储器的中文含义是___B__。 A. 静态随机存储器 B. 动态随机存储器 C. 静态只读存储器 D. 动态只读存储器 7. 在微机中,Bit的中文含义是__A___。 A. 二进制位 B. 字 C. 字节 D. 双字 8. 汉字国标码(GB2312-80) 规定的汉字编码,每个汉字用___B__。 A. 一个字节表示 B. 二个字节表示 C. 三个字节表示 D. 四个字节表示 9. 微机系统的开机顺序是__D___。 A. 先开主机再开外设 B. 先开显示器再开打印机 C. 先开主机再打开显示器 D. 先开外部设备再开主机 10. 使用高级语言编写的程序称之为__A___。 A. 源程序 B. 编辑程序 C. 编译程序 D. 连接程序 11. 微机病毒系指__D___。 A. 生物病毒感染 B. 细菌感染 C. 被损坏的程序 D. 特制的具有损坏性的小程序 12. 微型计算机的运算器、控制器及内存存储器的总称是__C___。 A. CPU B. ALU C. 主机 D. MPU 13. 在微机中外存储器通常使用软盘作为存储介质,软磁盘中存储的信息,在断电后 __A___。 A. 不会丢失 B. 完全丢失 C. 少量丢失 D. 大部分丢失 14. 某单位的财务管理软件属于__D___。

简易计算器的设计与实现

沈阳航空航天大学 课程设计报告 课程设计名称:单片机系统综合课程设计课程设计题目:简易计算器的设计与实现 院(系): 专业: 班级: 学号: 姓名: 指导教师: 完成日期:

沈阳航空航天大学课程设计报告 目录 第1章总体设计方案 (1) 1.1设计内容 (1) 1.2设计原理 (1) 1.3设计思路 (2) 1.4实验环境 (2) 第2章详细设计方案 (3) 2.1硬件电路设计 (3) 2.2主程序设计 (7) 2.2功能模块的设计与实现 (8) 第3章结果测试及分析 (11) 3.1结果测试 (11) 3.2结果分析 (11) 参考文献 (12) 附录1 元件清单 (13) 附录2 总电路图 (14) 附录3 程序代码 (15)

第1章总体设计方案 1.1 设计内容 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除1位无符号数字的简单四则运算,并在6位8段数码管上显示相应的结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的8751单片机,输入采用4×4矩阵键盘。显示采用6位8段共阳极数码管动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,最终选用汇编语言进行编程,并用protel99se涉及硬件电路。 1.2 设计原理 在该课程设计中,主要用到一个8751芯片和串接的共阳数码管,和一组阵列式键盘。作为该设计的主要部分,下面将对它们的原理及功能做详细介绍和说明。 1)提出方案 以8751为核心,和数码管以及键盘用实验箱上已有的器件实现计算器的功能。 2) 总体方案实现 (1)要解决键值得读入。先向键盘的全部列线送低电平,在检测键盘的行线,如果有一行为低电平,说明可能有按键按下,则程序转入抖动检测---就是延时10ms再读键盘的行线,如读得的数据与第一次的相同,说明真的有按键按下,程序转入确认哪一键按下的程序,该程序是依次向键盘的列线送低电平,然后读键盘的行线,如果读的值与第一次相同就停止读,此时就会的到键盘的行码与列码

测绘程序设计实习报告

测量程序设计实习报告 姓名: XX 班级: XXXX 学号: XXXX 教师评语:

实验名称:使用C#开发环境建立测量程序框架 一、实验的目的与任务: (1)学会用C#窗体程序开发环境建立应用程序框架方法 (2)学会使用常见的Windows控件 (3)根据自身需要设计一个测量程序界面 二、实验的过程与步骤: 1、首先打开visual studio 2010,选择文件→新建→项目。在弹出的对话框中右栏一侧选择windows窗体应用。选择文件存放地址,输入项目名称,点击确定,完成。 2、拖动menuSctrip控件到主窗体,并且键入“文件”、“工具”两个选项,在“文件”下添加一个“打开”选项;在“工具”下添加“近似平差计算”、“高斯消元”两个选项。 3、选择项目→添加windows窗体,输入窗体名称“CLSJ”,点击确定。

4、在CLSJ窗体中拖入SplitContainer控件,将窗体分为左右两部分,调整大小。在拖入一个“TabControl”,新建选项卡。最后,加入“Button”、“TextBox”、“Label”控件。 5、用相同的方法,新建一个名为高斯消元的窗体,然后按照需要进行设计。 三、程序运行效果 四、本实验心得体会

这是第一次接触这种可视化开发编程,刚开始不是很熟悉,对于编程语言来说,在掌握一定语法之后,要多用,多结合实际进行一些简单编程,这样才能提高对一种编程语言的理解。 实验名称:导线计算程序设计及粗差探测 一、实验的目的与任务: (1) 掌握方位角计算的程序设计方法 (2) 掌握符合导线、闭合导线、支导线计算的程序设计方法 (3) 理解粗差探测的程序设计方法 二、实验的设计与开发步骤: 1、考虑到在测量时所用的角度均为度分秒,而在c#计算时只是别度分秒,因此先设计两个函数,可以将度分秒和弧度制进行转化。 2、其次先写一个point 类,包含x ,y 两个成员变量,然后在设计一个方位角函数,用两个point 类当作形参传递进去,根据方位角计算公式παk x y +??=arctan ,(根据象限角和方位角关系对k 进行调节)应该分为四种情况,但是考虑到分母不为0,因此应该在加一种情况,即导线与y 轴重合。 3、然后根据边长,根据方位角,公式 ααsin *cos *1212l y y l x x +=+=进行坐标推算。

计算机基础知识试题(答案 _)

计算机基础知识理论试题(一) (一)单选题(选择最佳答案) 1.在Windows98中,单击_____D___按钮,可以使窗口缩小成图标,位于任务栏内。 A.还原 B.关闭 C.最大化 D.最小化 2.Windows98系统允许用户同时执行__D__任务,并且能方便地在各任务之间切换以及交换信息。 A.1项 B.2项 C.8项 D.多项 3.双击Windows98桌面上的快捷图标,可以_____A___。 A.打开相应的应用程序窗口 B.删除该应用程序 C.在磁盘上保存该应用程序 D.弹出对应的命令菜单4.在Windows98桌面的任务栏中,代表当前正在进行操作窗口的图标__________。 A.变黑 B.加亮显示 C.反像显示 D.消失 5.在资源管理器窗口中,被选中的文件或文件夹会_______。 A.加框显示 B.反像显示 C.加亮显示 D.闪烁显示 6.在Windows98的资源管理器中,删除软磁盘中的文件的操作是将文件__________。 A.放入回收站B.暂时保存到硬盘中C.从软盘中清除D.改名后保存在软盘中 7.在PWin98系统中,单击最小化按钮,可以使窗口缩小成图标,并排列在_________。 A.快捷栏内 B.桌面的右边 C.开始菜单内 D.桌面的任务栏内 8.Win98允许用户在桌面上放置_________主页、站点(频道),使你能够像挑选电视节目那样轻松、快捷地访问感兴趣的站点。 A.工作站 B.书写器 C.因特网 D.记事本 9.用鼠标将桌面上某个快捷图标拖到___________图标上,可以将它删除。 A.开始 B.我的公文包 C.收件箱 D.回收站 10.手写汉字输入系统一般由________组成。 A.纸张和圆珠笔 B.专用笔和写字板 C.钢笔和扫描仪D.圆珠笔和塑料板 11.当前个人计算机的繁体汉字系统多数采用_________所收集的汉字为准进行编码。 A.GB码 B.五笔字型码 C.BIG5码 D.拼音码 12.声音输入汉字是通过___D____将讲话的声音输入计算机,然后用语音识别软件转换成对应的字、词。 A.拼音字母 B.电话机 C.音箱 D.麦克风

计算机程序设计(C)综合实践

计算机程序设计(C)综合 实践 设计报告 学院:电子通信与物理学院 设计名称:职工信息管理系统 专业班级:电子信息科学与技术14-2 学生:本良 学号: 201401100211 组号: 140203 指导教师:宋戈 完成时间: 2015年 7月23日

目录 第1部分实训题目与要求 (2) 1. 问题提出 (2) 2. 功能要求 (2) 3. 任务分工 (2) 第2部分设计实训题目功能......................................................................... . (3) 1. 总体设 计...................................................................... (3) 2. 数据结 构...................................................................... (4) 3. 程序设 计...................................................................... (5) 4. 测试与调 试......................................................................

(8) 第3部分实训总结......................................................................... . (12) 1. 个人总 结...................................................................... (12) 2. 结束 语...................................................................... (12) 第4部分参考文献......................................................................... . (13) 《C程序设计综合实践》评分表......................................................................... (14)

计算机理论基础知识

前言: IGCSE 国际考必考的内容。依照剑桥大学出版的教材同步编写的。 计算机其实就是一个“ 1. 获得输入数据; 2. 运算处理数据; 3. 输出新的数据;”的机器。 第一节二进制 1. 计算机的核心硬件包括: 中央处理器(CPU), 内存(Memory), 硬盘(Hard disc) ,显卡(Graphics card)。 这些硬件互相配合,接收输入的数据,然后进行运算再输出。 2.是通过什么来传送数据信号的呢? l 计算机采用的是电平信号。并且只有两种信号:高电平和低电平。 l 电平是个电压范围,规定输出高电平>2.4V,输出低电平<0.4V。 l 因为只有两种信号,精确度就会比较高,不容易因为硬件的故障损耗,产生误差。能保证我发出去的信号,别人接收的时候是准确的。不会因为电路硬件问题导致输出的信号变弱,使得接收者接收了错误的信号。 l 高电平用1表示,低电平用0表示。 3.二进制系统(Binary Systems) 计算机因为只能传输和识别高低电平两种信号,所以我们采用了1和0来表示信号,也就产生了二进制。 二进制说是满二进一的计数制度。这是根据计算机传输信号的特点而定制的。 4.二进制转换 十进制转化成二进制:有一个最简单的方法,就是不断除以2。余数写在右边。然后从最后一个得到的商倒回去(商余数排列起来),得到的数就是二进制要表达的结果了

二进制转化十进制:2^(n-1) + 2^(n-2) + ...+2^0 第二节位和字节 1.保存数据的方式 计算机只能传送高低电平信号,所以需要采用二进制。内存保存数据的时候,也是要采用二进制的方式来保存的。 2.数据怎么断开,几位二进制数算做一个数据? l 保存一个二进制数据的内存空间称做“ 位(bit ),只能保存一个二进制数,并且值只有0或者1两种。 l 我们规定8位空间称为一个字节(byte)。 l 通常用字节来作为存储单位。正常情况下一个英文字符,一个整数数字都是占用一个字节。长整数,浮点数,汉字等占用两个字节。 第三节存储单位

大学生计算机编程实训心得领悟.doc

大学生计算机编程实训心得体会 编程是编写程序的中文简称,就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程。分享,欢迎阅读! 大学生计算机编程实训心得体会一 目前在国内制造业对数控加工高速增长的需求形势下,数控编程技术人才出现了严重短缺,数控编程技术已成为就业市场上的需求热点。以市场为导向的职业教育不断开辟这一领域的新课题,在传统职业的知识和技术上溶入了数字化信息的新技术、新知识、新工艺。国家大力发展职业教育,大力进行职教师资培训。以骨干教师为重点的培养培训活动在全国各个重点建设职教师资基地纷纷开展。我就是2007年第二批次国家级骨干教师培训的学员,培训地在济南数控编程培训学校,专业是数控加工技术。在济南学习期间,对于数控机床编程技术的学习心得写下来跟朋友们一起探讨。 一、学好数控编程技术需要具备以下几个基本条件: (1)具有基本的学习资质,即学员具备一定的学习能力和预备知识。 (2)有条件选择好的培训机构和培训教材。 (3)在实践中积累经验。

二、学习数控编程技术,要求学员首先掌握一定的预备知识和技能,包括: (1)基本的机械制图基础。 (2)基本的机械加工常识。 (3)机加工工艺基础。 (4)基本的三维造型技能。 三、选择培训教材应考虑的因素包括: (1)教材的内容应适合于实际编程应用的要求,以目前广泛采用的基于CADCAM软件的交互式图形编程技术为主要内容。在讲授软件操作、编程方法等实用技术的同时也应包含一定的基础知识,使读者知其然更知其所以然。 (2)教材的结构。数控编程技术的学习是一个分阶段不断提高的过程,因此教材的内容应按不同的学习阶段进行合理的分配。同时,从应用角度对内容进行系统的归纳和分类,便于读者从整体上理解和记忆。 四、学习方法与技巧 同其他知识和技能的学习一样,掌握正确的学习方法对提高数控编程技术的学习效率和质量起着十分重要的作用。下面是几点建议:

计算机基本理论基础知识总汇.-计算机的基础知识

计算机基本理论基础知识总汇 1、计算机按照数据处理规模大小可以分为(巨型计算机)(大型计算机)(小 型计算机)(微型计算机)(工作站)等 2、计算机的硬件主要由(控制器)(运算器)(存储器)(输入输出设备)以及 电源等硬件组成。 3、计算机主机是(控制器)(运算器)(存储器)的总称,主要包括(CPU)(内 存)(主板)等部件。 4、控制器和运算器集成在一起,合称为(中央处理器) 5、CPU是(Central Processing Unit)的缩写。 6、计算机硬件系统可以分为两大部分,即(主机)和(外部设备) 7、外部设备存储器包括(硬盘)(光盘)(U盘) 8、1971年,每个Intel成功的把(算术运算器)和(逻辑运算器)集成在一起, 发明了世界上第一块微处理器 9、计算机可以分为(硬件)和(软件)两大部分 10、运算器是信息的加工和处理部件,它的主要功能是完成(算术)运算和 (逻辑)运算。 11、运算器除了能进行各种加、减、乘、除运算外,还可以进行(逻辑运算) 12、运算器主要由(算术运算单元)(寄存器)(累加器)等组成 13、控制器主要由(指令译码器)(指令寄存器)(控制逻辑部件)等组成 14、(运算器)和(控制器)集成在一起就是通常所讲的CPU 15、(中央处理器)和(内存储器)一起被称为主机 16、存储器是计算机汇总记忆设备,用来存放(数据)和(程序) 17、CPU内部(缓存)的大小以及(速度)对CPU的性能影响很大。 18、存储器一般可以分为(内部存储器)和(外部存储器)两大类 19、一般把计算机的输入输出设备称为(外部设备) 20、计算机软件是指为了(运行)(管理)和(维护)计算机系统所编制的各 种程序的总和。 21、计算机软件可分为(系统软件)和一般(应用软件) 22、一般把计算机数据总线包含的二进制位数称为(字长) 23、计算机的(运算速度)是衡量计算机性能的主要指标,它主要取决于指 令的(执行时间) 24、CPU的总线包括(数据)(地址)和(控制) 25、CPU一般由(逻辑运算)单元、(控制)单元和(存储)单元组成。 26、衡量CPU性能的技术指标有(主频)(外频)(倍频系数)(Cache容量) (生产工艺技术)(封装类型)(CPU附加指令) 27、主频=(外频)*(倍数系数) 28、附加指令可以提高CPU处理(多媒体)(3D图形)等数据的能力 29、主板一般包括(CPU插槽)(控制芯片)(键盘和面板控制开关接口)(指 示灯插接件)(扩充插槽)等元件。 30、主板按照接口可分为(AT结构)和(ATX结构)的主板 31、主板可以按三种方法进行分类,即按(主板上使用的CPU)(主板结构) 或(主板采用的芯片组)来分类。

计算机编程实习周记

计算机编程实习周记 实习周记一 到金山实习已经一周了,这一周主要任务是学习COM 技术,以及理解初期产品DEMO的代码,指导我的老大叫程辉,他是一个工作认真, 待人真诚的好人,虽然他很忙,但是我遇到问题他也会细心帮我解答, 如果某个问题他不清楚, 也会很直接的告诉我他不清楚. 但是我要是在学校遇到什么问题, 大部分老师给我的答案都是含糊其辞的, 另有一些就干脆胡说八道一通, 让我非常郁闷. 在公司实习的感觉很不一样,快快事业部里每个人都非常认真勤奋的工作,大家都为最终的产品投入了大量的时间和精力.这是我无法从学校学习到的一种精神. 这也从一个侧面反映出大学里面的问题有很多, 在学校上课, 我无法得到什么, 有些课程老师自己都没弄明白, 找本书对着学生念经, 同学们的激情早就在大一的时候被浇灭了, 剩下一些残念或怨念, 又在经文的雪上加霜后, 留下一辈子的仇恨. 这就是大学的现状. 没有谁可以改变这种状况, 而我们这些可怜的大学生们, 期望的只是一张大学毕业证, 好给保有旧社会科举制度思维的父母们一个交代. 面对这样的现状, 我只能说...very well...

虽然这一周我都是每天早上6:30起床赶车,晚上 8:30回到宿舍(坐公交车要好久, 而且正赶山修路, 在 路上耽搁很久),但是这样的生活对我来说却是习以为常,因为从大二暑假开始,我就已经以类似的作息时间,奔波于宿舍和励耘楼的实验室.即使是周六周日,我也会去励耘楼的实验室自习,而现在周末不用去公司上班,我倒是觉得轻松了不少. 生活方面,金山的伙食真的是非常好,可见金山的管理者们们对本公司员工的尊重和重视. 但是菜品种不如学校食堂的丰富, 学校的食堂和外卖经常会有花生猪骨, 逗沙包, 小强汤, 滑蛋小强, 芹菜苍蝇, 白菜腋毛等菜式供给, 不仅如此, 给我们盛菜的食堂员工还喜欢抖两抖, 一次我大脑抽筋了, 去食堂的窗口打饭, 看见一份炒豆腐还不错, 价钱是1块钱, 我就要他们给我来一份, 这份打过来, 我数了数, 一共5块豆腐....我当场就怒了, 找他理论, 没想到他跟我来了一句1块钱就是那么多了.... 最后这个了字声音还故意发的很长, 明显是一种挑衅和不懈. 言外之意就是丫个穷鬼, 还敢嫌少, 没钱还敢来吃老子豆腐., 我真是吐槽不能. 实习周记二 到金山实习已经两周了.周一上午,程辉把我叫到会议室,让我根据第一周学到的知识以及对项目的了解,制

计算机基础知识理论复习题及答案

基础知识复习题及答案 一、选择题 1.第三代计算机所使用的电子器件是( )。 A)晶体管B)电子管C)中小规模集成电路D)大规模和超大规模集成电路 2.微型计算机中使用的关系数据库,就应用领域而言是属于( )。 A)科学计算B)实时控制C)数据处理D)计算机辅助设计 3.计算机的主要特点是:具有运算速度快、精度高、( )及逻辑判断功能。 A)存储记忆B)自动编程C)无须寻址D)按位串行执行 4.计算机中常用术语CAD是指( )。 A)计算机辅助设计B) 计算机辅助制造C) 计算机辅助教学D) 计算机辅助测试 5.巨型计算机指的是( )。 A)体积大B)重量大C)耗电量大D)功能强 6.486微机的字长是( )。 A)8位B)16位C)32位D)64位 7.计算机之所以能按照人们的意图自动地进行操作,主要是因为采用了( )。 A)二进制编码B)高速的电子元器件C)高级语言D)存储过程控制 8.与十六进制数CDH等值数是( )。 A)204 B)205 C)206 D)203 9.与十进制数291等值十六进制数是( )。 A)123 B)213 C)231 D)296 10.下列4个无符号十进制整数中,能用8个二进制数位表示的是( )。 A)257 B)201 C)313 D)296 11.下列一组数据中最大的数是( )。 A)(227)8B)(1FF) 16C)(1010001) 2D)(789) 10 12.下列一组数据中最小的数是( )。 A)(247)8B)(6A) 16 2D)(169) 10 13.字符的ASCII码在机器中的表示二进制准确的描述应是( )。 A)使用8位二进制代码,最右边一位为1 B) 使用8位二进制代码,最左边一位为0 C) 使用8位二进制代码,最右边一位为0 D) 使用8位二进制代码,最左边一位为1 14.ASCII码表中的字符“A”的值为41H,它所对应的十进制数值是( )。 A)61 B)65 C)66 D)100 15.数字字符3的ASCII码为十进制数51,数字字符9的ASCII码为十进制数( )。 A)55 B)56 C)57 D)58 16.在微型计算机中,应用最普遍的字符编码是( )。 A)BCD码B)国标码C)汉字编码D)ASCII 码 17.汉字编码有四种方式,其中( )的编码长度是固定的。 A)字形编码B)字母编码C)数字编码D)混合编码 18.在32位微型计算机中,1Word=( )Bytes=( )bits。 A) 1,8 B) 2, 16 C) 3, 16 D) 4, 32 19.在微型计算机中,ASCII码是对( )数据的编码,采用十进制数形式存储,且能直接被计 算机识别和处理。 A)数值B)汉字C)国标码D)字符

计算机程序设计实践

《计算机程序设计实践(VC++)》教学大纲一.课程基本信息 开课单位:经济管理学院信息管理系 课程编号:000000 英文名称:Computer Programming Language (VC++) Course Design 学时:总计32学时,其中理论授课0学时,实验(含上机)32学时 学分:2.0学分 面向对象:信息管理与信息系统(含网络营销方向)本科专业 教材: 《C++程序设计》,吴乃陵,况迎辉编著,高等教育出版社,2006年3月第2版 《C++程序设计实践教程》,吴乃陵,李海文主编,高等教育出版社,2006年3月第2 版 主要教学参考书目或资料: 1.Visual C++从入门到精通.刘锐宁,宋坤编著.北京:清华大学出版社.2010年10月 2. Visual C++项目开发案例全程实录(第2版).明日科技等编著. 北京:清华大学出版社.2011年1月 二.教学目的和任务 课程设计是课程教学中的一项重要内容,是完成教学计划达到教学目标的重要环节,是一门专业基础课或专业课教学计划中综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践能力、为毕业设计及毕业后从事专业技术工作打下基础,提高学生全面素质具有重要的意义。因此,《计算机程序设计语言(VC++)课程设计》的目的就是要通过一个学生成绩管理系统的实际开发,提高学生应用所学知识分析问题,解决问题和实际动手的能力,更加熟练地掌握C++程序开发的基本方法和工作步骤,对系统开发实践有进一步体会。从而综合复习课程中的所有理论知识点,进一步熟练面向对象程序的开发方法和流程,提高学生独立分析问题和解决问题的能力。真正理解书本知识,牢固掌握课堂教学内容。 三.教学目标与要求 学生按照课程设计任务书要求,通过两周的时间,设计出一个学生成绩管理系统,能实现对某班 级学生成绩的管理及奖学金、三好生的评定工作。要求具备查询和检索等功能,并且能够对指定文件进行操作,也可以将多个文件组成一个文件。从而进一步掌握算法的描述、了解初步的数据结构,熟悉C++语言的语句格式、功能及其应用。 四.教学内容、学时分配及其基本要求 实验项目学生课程成绩管理系统 设计内容: 设计一程序,实现对某班级学生成绩的管理及奖学金、三好生的评定工作。要求具备查询和检索等功能,并且能够对指定文件进行操作,也可以将多个文件组成一个文件。 设计要求: ⒈应严格按照开发小型项目的基本流程进行设计。 ⒉成绩管理程序至少应具有以下功能: ⑴输入:学生的基本信息,包括学号、姓名、性别、籍贯、VC++成绩、英语成绩、高数成绩等; ⑵计算:每个学生的总成绩、平均成绩,所有学生单科的平均成绩,找出总成绩和单科成绩最高的学生并输出;

计算机理论基础试题及答案

计算机基础知识试题 1、CPU的主要功能是进行()。 A、算术运算 B、逻辑运算 C、算术逻辑运算 D、算术逻辑运算与全机的控制 答:D 分析:中央处理器(CPU),它包括运算器和控制器,其中运算器完成各种运算任务(包括算术运算与逻辑运算两大类),控制器根据指令的内容产生指挥其他硬件部件直辖市工作的控制信号。所以正确答D。 2、CPU能直接访问的存储部件是()。 A、软盘 B、硬盘 C、内存 D、光盘 答:C 分析:内存与外存有一个重要区别:内存能够被CPU直接访问,而外存的信息只能由CPU 通过输入输出操作来存取,不能与CPU直接交换信息。所以,当前CPU正在执行的程序、正在处理的数据都存在内存里,外存上保存的程序、数据只有先调入内存,才能再被CPU 访问。换句话说,内存是工作存储器,外存是后备性的存储器,是内存的扩充与备份。内、外存组成这样一种层次结构,在存取速度、容量、价革几方面实现了合理的配合。本题正确答是C。 3、如果一个存储单元存放一个字节,那么一个64KB的存储单元共有()个存储单元,用十六进制的地址码则编号为0000~()。 A、64000 B、65536 C、10000H D、0FFFFH 答:依次为B和D 分析:存储器的容量是指它能存放多少个字节的二进制信息,1KB代表1024个字节,64KB 就是65536个字节。内存储器是由若个存储单元组成的,每个单元有一个唯一的序号以便识别,这个序号称为地址。通常一个存储单元存放一个字节,那么总共就有65536个存储单元。要有65536个地址,从0号编起,最末一个地址号为65536-1=65535,即十六进制FFFF。所以本题的两个正确答依次为B和D。注意地址的编号都从0开始,因此最高地址等于总个数减1。 4、计算机中访问速度最快的存储器是()。 A、RAM B、Cache C、光盘 D、硬盘 答:B 分析:在微机存储器的层次结构里,内存、外存是两大层次,而内存又可分为高速缓冲存储器(Cache)和主存。主存是内存的主体,Cache也用半导体电路构成,访问速度很高,但容量很小,有的甚至就做在CPU芯片内,所以严格地说,Cache只起一个缓冲器的作用,其中保存着最近一段时间内刚刚从内存读来的信息。每当CPU要访问内存时,将先到Cache 中查找,如果没有再到主存中去做实际的访问操作。所以,存取速度最高的是Cache,其次是主存(如果没有Cache则最高的就是主存)。所以本题的正确答是B。 5、通常所说的CPU芯片包括()。 A、控制器、运算器和寄存器组 B、控制器、运算器和内存储器 C、内存储器和运算器 D、控制器和内存储器 答:A 分析:CPU芯片是微机硬件系统的核心,又称微处理器芯片,其中包括控制器、运算器和寄存器组。注意:CPU不仅包括控制器和运算器,而且包括寄存器组。寄存器组是CPU内部的一些存储单元,例如,存储程序运行状态的状态寄存器,存储正在运行指令的指令寄存器,存储将要执行的下一条指令地址的程序计数器,存储参与运算的数据及运算结果的累加

c语言程序设计实践教程答案完整版

4.2练习题 一、选择题 1.D 2.B 3.A 4.B和D 5.C 6.A 7.B 二、填空题 1.//或/* */ 2.主或main 3.函数首部和函数体4.编译和连接 5.分号 5.2练习题 一、选择题 1.A 2.D 3.B 4.B 5.C 6.C 7.D 8.A 9.B 10.B 11.D 12.B 13.A或B 14.C 15.B

17.D 18.D 19.C 20.D 21.B 22.A 23.D 24.C 25.C 26.B 27.C 28.D 29.A 30.B 二、填空题 1.102,10 2.#define 宏名字符串 3.1 4.n=1 5.-4 6.a=1,b= ,c=2 7.c=A 8.n1=%d\nn2=%d 9.a+b>c&&a+c>b&&b+c>a 10.ch>=’a’&&ch<=’z’|| ch>=’A’&&ch<=’Z’11.7 12.0 13.8,4 6.2练习题 一、选择题 1.A 2.C 3.D 4.C 5.A 6.B

8.D 9.B 10.C 11.A 12.A 13.C 14.B 15.正确答案为: 二、填空题 1.10 2.y=1 x%i==0 3.屏幕中间输出一个由星号组成的菱形4.1 5.13 6.(cx=getchar())!=-1 front=cx; 7.m%n 8.4 9.*p px=&x py=&y 三、读程序,写结果 1.-1 2.3,1,-1, 3.a=16,y=60 4.x=12,y=4 5.59 7.2练习题 一、选择题 1.B 2.C 3.C 4.A 5.D 6.C 7.D

单片机简易计算器课程设计

单片机简易计算器课程设计 课程设计 题目名称________________ 简易计算器设计____________ 课程名称_____________ 单片机原理及应用____________ 学生姓名________________

班级学号________________ 2018年6月20日

目录 一设计目的 (2) 二总体设计及功能介绍 (2) 三硬件仿真图 (3) 四主程序流程图 (4) 五程序源代码 (5) 六课程设计体会 (28)

设计目的 本设计是基于51系列单片机来进行的简单数字计算器设计,可以完成计算器的键盘输入,进行加、减、乘、除六位整数数范围内的基本四则运算,并在LED上显示相应的结果。软件方面使用C语言编程,并用PROTUE仿真。 二总体设计及功能介绍 根据功能和指标要求,本系统选用MCS-51 系列单片机为主控机,实现对计算器的设计。具体设计及功能如下: 由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LED显示数据和结果; 另外键盘包括数字键(0?9)、符号键(+、-、x、十)、清除键和等号键,故只需要16个按键即可,设计中采用集成的计算键盘;

执行过程:开机显示零,等待键入数值,当键入数字,通过LED显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LED上输出运算结果。 三硬件仿真图 硬件部分比较简单,当键盘按键按下时它的那一行、那一列的端口为低电平。因此,只要扫描行、列端口是否都为低电平就可以确定是哪个键被按下。

计算机基础知识复习题(答案)分析

《计算机基础知识》复习题 一、判断题: 1. 对计算机RAM中的信息进行读、写操作时,主机必须通电。√ 2.存储系统中的PROM是指可编程只读存储器。(书58页) 3.目前在以下各种设备中,读取数据快慢的顺序是内存、硬盘、光盘和软盘。 4.微型计算机的运算器、控制器及内存储器的总称是主机。 5.软盘驱动器属于CPU的一部分。 6.计算机软件由文档和程序组成。 7.编译程序的作用是将高级语言源程序翻译成目标程序。(解释程序不生成目 标程序) 8.字长是衡量计算机精度和运算速度的主要技术指标。 9.计算机区别于其它工具的本质特点是具有逻辑判断的能力。 10.点距是彩色显示器的一项重要技术指标,点距越小,可以达到的分辨率就 越高,画面就越清晰。 11.由于多媒体信息量巨大,因此,多媒体信息的压缩与解压缩技术中最为关键 的技术之一。 12.CAD系统是指利用计算机来帮助设计人员进行设计工作的系统。 13.微型计算机的更新与发展,主要基于微处理器的变革。 14.计数制中使用的数码个数被称为基数。 15.ROM中存储的信息断电即消失。(RAM)× 16.机器语言与汇编语言都是低级语言,因此用它们编制的程序,其运行效率肯 定低于高级语言所编的语言。(与运行效率无关)

17.采用计算机高级语言编写的程序,其执行速度比用低级语言编写的程序要 快。(高级语言转换为低级语言供计算机直接执行) 18.汇编语言和机器语言都属于低级语言,都能被计算机直接识别执行。(机器语 言) 19.同一张软盘上不允许出现同名文件。(考虑了扩展名) 20.指令和数据在计算机内部都是以区位码形式存储的。(二进制) 21.UNIX是一种多用户单任务的操作系统。(多用户多任务) 22.计算机的性能指标完全由CPU决定。 23.电子计算机的发展已经经历了四代,第一代的电子计算机都不是按照存储程 序和程序控制原理设计的。 24.我国的第一台电子计算机于1958年试制成功。 25.第三代电子计算机主要采用大规模、超大规模集成电路元件制造成功。 26.计算机中用来表示内存容量大小的最基本单位是位。(字节) 27.ALU是控制器中的一个主要部件。(运算器) 28.20根地址线的寻址范围是512K。 29.(220b=128KB,例:两根线的寻址范围有4个,即2的2次方) 220/8=220/23=217B 217B/210=27KB=128KB 30. 将八进制数154转换成二进制数是1110110。(1101100) 31.由Microsoft公司开发的Microsoft Office 2000软件属于系统软件。 二、单选题: 1. 操作系统是一种()。 A.系统软件B.应用软件C.软件包D.游戏软件2. 下列各种进位计数制中,最小的数是()。

程序设计实践报告模板

面向对象程序设计实践(Project 2) 报告 题目: 专业软件工程(NIIT) 学生姓名 班级学号 指导教师杨健 指导单位计算机学院/软件学院 日期

评分细则 评分项优秀良好中等差遵守机房规章制度 上机时的表现 学习态度 程序准备情况 程序设计能力 团队合作精神 课题功能实现情况 算法设计合理性 用户界面设计 报告书写认真程度 内容详实程度 文字表达熟练程度 回答问题准确度 简短 评语教师签名: 年月日 评 分 等 级 备 注 评分等级有五种:优秀、良好、中等、及格、不及格

Title(Here,please write the name of your Project) (题目格式:宋体,3号,加粗,居中对齐) 一、D escription and Requirement(格式:Times New Roman,4号,加粗, 两端对齐) (正文格式:宋体(中文) Times New Roman(英文),小4号,不加粗,两端对齐, 1.5倍行距) 二、Requirement Analysis(格式:Times New Roman,4号,加粗,两端对齐) 在该部分中叙述系统的功能,由此得到相应的模块,并分析需要什么的数据,由此可以指导数据库的设计。 (正文格式:宋体(中文)Times New Roman(英文),小4号,不加粗,两端对齐,1.5倍行距) 三、High level design(格式:Times New Roman,4号,加粗,两端对齐) 在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义,如果用面向对象的方法,应该给出类中成员变量和成员函数原型声明),数据库设计的说明(给出数据库的结构,包括有哪些表,每个表有什么字段,分别存储什么样的数据) (正文格式:宋体(中文)Times New Roman(英文),小4号,不加粗,两端对齐, 1.5倍行距) 四、Low level design格式:Times New Roman,4号,加粗,两端对齐) 各个算法实现的源程序(可以是一组源程序,每个功能模块采用不同的函数实现),源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。 注意:不要粘贴全部程序,只要把关键算法的程序粘贴过来就可以了。 (正文格式:宋体(中文)Times New Roman(英文),小4号,不加粗,两端对齐, 1.5倍行距) 五、Tested data and result analysis(格式:Times New Roman,4号,加粗,

计算机程序设计实践答案(江苏科技大学)

1,#include class PP { int n; double x; double *p; public: PP(int num,double x1); ~PP(); double fun(int n1,double x); void process(); void show(); }; PP::PP(int num,double x1) { n=num; x=x1; p=new double[n+1]; } PP::~PP() { if(p) delete[]p; } double PP::fun(int n,double x) { if(n==0) return 1; else if(n==1) return x; else return ((2*n-1)*x*fun(n-1,x)-(n-1)*fun(n-2,x))/n; } void PP::process() { int i; for(i=0;i<=n;i++) p[i]=fun(i,x); } void PP::show() { int count=0; cout<<"n="<

{ cout<

A、5 B、4 C、8 D、输出项不合法,无正常输出 4、下面程序的输出是______ main() { int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); } (3分) D A、B、C、D、 A、k=11,k=12,k=13 B、k=11,k=13,k=13 C、k=11,k=013,k=oXb D、k=11,k=13,k=b 5、若有以下定义和语句: int u=010,v=0x10,w=10; printf(″%d,%d,%d\n″,u,v,w); 则输出结果是: (3分) A A、B、C、D、 A、8,16,10 B、10,10,10 C、8,8,10 D、8,10,10 6、以下程序的输出结果是 main( ) { int k=17; printf("%d,%o,%x \n",k,k,k); }(3分) D A、B、C、D、 A、17,021,0x11 B、17,17,17 C、17,0x11,021 D、17,21,11 7、下面程序的输出是____

相关主题
文本预览
相关文档 最新文档