C语言程序知识教学设计书Word格式文档下载.docx
- 文档编号:8527350
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:20
- 大小:877.43KB
C语言程序知识教学设计书Word格式文档下载.docx
《C语言程序知识教学设计书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言程序知识教学设计书Word格式文档下载.docx(20页珍藏版)》请在冰点文库上搜索。
系统功能划分
1)
假设执行操作“+”,先输入一个数,再输入“+”,再输入另一个数,最
后输入“+”。
整个功能“+”就执行完毕。
2)执行操作“Sin”,先输入一个数,在输入“Sin”,整个功能“Sin”就执行完毕。
3)执行操作“n!
”,先输入一个数,再输入“n!
’,整个功能“n!
”执行完毕。
4系统详细设计
4.1
设计步骤
打开Microsoft
Visual
C++
6.0,在文件中点击新建,在弹出框选择MFC
AppWizard[exe]工程,输入工程名yeyahui及其所在位置,点击确定,如图4-1所示。
将弹出MFC
AppWizard-step
1对话框,选择基本对话框,点击完成,如图4-2所示
图4-2基本对话框
这样,MFC
AppWizard就建立了一个基于对话窗口的程序框架,如图4-3所示。
图4-3新建的对话框
4.2
界面设计
界面设计主要是创建控件,在图4-3所示的Resoure
View选项卡中打开Dialog资源组,双击IDD_ZHOUTONG_DIALOG,在右边的窗口中显示出待编辑的对话框。
开始摆放控件,包括编辑框和按钮的创建。
按钮的创建以“1”为例进行介绍,其他按钮的创建可参照此进行操作。
1)在图4-3中Controls的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。
在编辑框上单击鼠标右键,在弹出的快捷莱单中选择属性选项,此时弹出Edit属性对话框,如图4-4所示,在该对话框中输入ID属性。
界面设计主要是创建控件,在图4-3所示的Resoure
图4-4
Edit属性对话框
2)在图4-2中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。
在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出Push
Button属性对话框,如图4-5所示,在该对话框中输入控件的ID值和标题属性。
图4-5
Push
Button属性
按照上面的操作过程编辑其他按钮和编辑框等对象的属性。
完成后界面如图4-6所示。
图4-6
设计界面
加入标准型和科学型按键:
图4-7
加入标准型和科学型按键界面
标准型:
图4-8标准型界面
科学型:
5
测试
5.1
测试方案
先用标准型进行简单的四则运算:
+
-
*
/,测试完成后。
再用科学型进行稍复杂的运算:
sin,cos,tan,log,ln,n!
等,核对其计算结果的正确性。
5.2
测试结果
经测试标准型计算器,进行简单的四则运算,结果均正确,如图5-1所示
图5-1
四则运算测试结果图
测试科学型计算器,进行sin,cos,tan,log,ln,n!
等运算,结果均正确,求sin30`(如图5-2所示)。
图5-2
求sin30测试结果图
求5
!
(如图5-3所示),测试完成
图5-3
求5!
测试结果图
6
小结
经过不懈的努力,终于顺利完成了这次设计。
刚开始,我头绪不是很清楚,不知道从哪里入手,但通过老师的耐心指导并和同学认真研究设计课题,跑图书馆查资料、确定基本设计方案、对所用芯片功能进行查找、调试、上机仿真等,经历了一次次的困难,却积累了很多宝贵的经验。
在整个设计的过程中遇到的问题主要有以下三点,第一:
基础知识掌握的不牢固,主要表现在一些常用的电路的形式和功能不清楚,对书本上的容理解不够透彻。
第二:
对一些常用的应用软件缺少应用,体现在画电路图和系统的仿真的时候,对这些软件的操作不熟练,浪费了很多时间。
第三:
相关知识掌握的不够全面,缺少系统设计的经验。
这次设计进一步端了我的学习态度,学会了实事求是,严谨的作风,对自己要严格要求,不能够一知半解,要力求明明白白。
急于求成是不好的,我有所感受。
如果省略了那些必要的步骤,急于求成,不仅会浪费时间,还会适得其反。
我觉得动手之前,头脑里必须清楚该怎么做,这一点是很重要的。
就目前来说,我的动手能力虽然差一点,但我想,通过我的不懈努力,在这方面,我总会得到提高。
这一点,我坚信。
因为别人能做到的,我也一定能做到。
在硬件的制作过程中我走了好多的弯路,主要是在系统还没有设计很有把握就开始动手制作了。
后来发现与设计的要求还有偏差,反复的改过了几次,浪费了大量的时间和体力。
感受到设计人员要有耐心,要认真的从要求开始研究。
软件的编写过程中费了很大的力气,因为软件的编写要求很高,要很细心,一不小心就会调用错误,很深刻的体会到作为软件编程人员是绝不能粗心大意的。
一个程序的完成的速度和质量高低与细心与否有着很大联系。
编程时,我充分使用了结构化的思想。
这样因为语句较少,程序调试比较方便,功能模块可以逐一的调试,充分体现了结构化编程的优势。
当每个模块都完成时,将其功能加到一起就完成了整体的设计。
在此次的毕业设计中我最大的体会就是进一步认识到了理论联系实践的重要性。
一份耕耘,一份收获。
通过这段时间的设计,让我明白科学的思维方法和学习方法是多么重要,只有这样才能够有很高的效率,才能够让自己的工作更完美。
总而言之,此次毕业设计让我学到了好多平时在课堂上学不到的东西,增加了我的知识运用能力,增强我的实际操作能力。
谢谢老师给我们提供这么好的机会,为我们之后走向社会奠定了一个好的基础。
本次设计让我学到了很多,也学会到了要怎么样去面对困难,不要对知识一知半截,要有的求实的能力,通过老师的帮助我学到了很多在平时的没有注意到的动东西及知识,更美没有深入的的去理解,通过这次我要更加的明确自己。
更要注重自己在各方面的锻炼能力,把握机会。
这次的设计非常的感谢老师们。
参考文献:
[1]谭浩强.
C程序设计(第三版)(M).:
清华大学,2005.
[2]谭浩强.
C程序设计题解与上机指导(第三版)
(M).:
[3]甄炜.
C++语言和面向对象程序设计教程(M).:
机械工业,2005.
7附
录
//CalculatorDlg.cpp:
implementation
file
#include"
stdafx.h"
Calculator.h"
CalculatorDlg.h"
math.h"
#ifdef_DEBUG
#definenew
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:
void
DoDataExchange(CDataExchange*
pDX);
//DDX/DDV
support
//}}AFX_VIRTUAL
//Implementation
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSGDECLARE_MESSAGE_MAP()
:
CAboutDlg():
CDialog(CAboutDlg:
IDD){
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
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()
//CCalculatorDlg
BOOL
CCalculatorDlg:
OnInitDialog(){CDialog:
OnInitDialog();
//Add"
About..."
menu
item
to
system
menu.
//IDM_ABOUTBOX
must
be
in
the
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
icon
this
dialog.
The
framework
does
automatically
//when
application'
s
main
window
is
not
a
SetIcon(m_hIcon,
TRUE);
big
iconSetIcon(m_hIcon,
FALSE);
small
//TODO:
Add
extra
initialization
here
GetWindowRect(rcSentific);
CWnd*
m_pMark=GetDlgItem(IDC_DISPLAY);
ASSERT(m_pMark);
CRect
rect;
m_pMark->
GetWindowRect(rect);
rcStandard=rcSentific;
rcStandard.right=rect.right+5;
m_bIsExpand=0;
m_sentific=1;
OnStandard();
m_result="
0."
;
m_isDegree=1;
UpdateData(FALSE);
return
TRUE;
//return
TRUE
unless
you
set
focus
control
OnSysCommand(UINT
nID,
LPARAM
lParam)
{
if((nID&
0xFFF0)==IDM_ABOUTBOX){
dlgAbout;
dlgAbout.DoModal();
else{CDialog:
OnSysCommand(nID,lParam);
//If
add
minimize
button
your
dialog,you
will
needthe
code
below
//to
draw
icon.For
MFC
applications
using
document/vi
//this
done
by
framework.
OnPaint(){if(IsIconic()){CPaintDC
dc(this);
//device
context
painting
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
//Center
client
rectangle
int
cxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
GetClientRect(&
rect);
intx=(rect.Width()-cxIcon+1)/2;
y=(rect.Height()-cyIcon+1)/2;
//Drawtheicondc.DrawIcon(x,y,m_hIcon);
OnPaint();
//The
calls
obtain
cursor
display
while
user
drags
//the
minimized
window.
HCURSOR
OnQueryDragIcon(){return(HCURSOR)
m_hIcon}
OnOperandInput(UINT
nID){
ASSERT(nID>
=
IDC_0
&
nID
<
IDC_9);
if
(m_errorState!
=ErrNone)return;
if(m_func!
=FuncNone){
m_func=FuncNone;
Calculate();
m_bOperandAvail)m_operand=0;
m_bCoff)m_operand=m_operand*10+(nID-IDC_0);
else{m_operand=m_operand+(nID-IDC_0)*m_coff;
m_coff*=0.1;
m_bOperandAvail=TRUE;
UpdateDisplay();
Calculate(){if(m_errorState!
if(m_bOperandAvail){
if(m_operator==OpNone)m_accum=m_operand;
else
if(m_operator==OpMultiply)m_accum*=m_operand;
if(m_operator==OpDivide){
if(m_operand==0)
m_errorState=ErrDivideByZero;
m_accum/=m_operand;
if(m_operator==OpAdd)
m_accum+=m_operand;
if(m_operator==OpSubtract)m_accum-=m_operand;
m_bOperandAvail=FALSE;
m_bCoff=0;
m_coff=0.1;
UpdateDisplay(){if(GetSafeHwnd()==NULL)return;
if(m_errorState!
=ErrNone)
余数不能为0"
else{float
lVal=(m_bOperandAvail)?
m_operand:
m_accum;
m_result.Format(_T("
%f"
),lVal);
i=m_result.GetLength();
while(m_result.GetAt(i-1)=='
0'
){m_result.Delete(i-1,1);
i-=1;
}}UpdateData(FALSE);
Keyboard(LPCTSTR
szButton){switch(szButton[0]){case'
c'
case
'
C'
OnClear();
break;
/'
OnDivid();
+'
OnAdd();
-'
OnMinus();
*'
OnMultiply();
='
OnEqual();
default:
if(szButton[0]>
szButton[0]<
9{if(m_errorState!
=ErrNone)
FALSE;
m_bOperandAvail)
m_operand=0;
m_operand=m_operand*10+szButton[0]-'
break
ReturnTRUE;
OnAdd(){
notification
handler
m_operator=OpAdd;
OnMinus(){
m_operator=OpSubtract;
OnDivid(){
m_operator=OpDivide;
}
OnMultiply(){
m_operator=OpMultiply;
OnEqual(){
m_operator=OpNone;
OnSign()
{//TODO:
m_operand*=-1;
OnSqrt(){
m_func=FuncSqrt;
Run_Func();
OnReciprocal(){
m_func=FuncRec;
OnPoint(){
m_bCoff=1;
OnClear()
m_accum=0;
m_errorState=ErrNone;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序 知识 教学 设计