




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实 训 报 告实训名称: 基于VC#的计算器程序设计 一 概述(1) 实验目的 通过实训使学生在掌握 VC#面向对象编程理论的基础上,推动学生初步掌握基于 VC#的WinForm程序的编程方法,为今后的网络协议编程和Web及 Web服务编程打下基础。(2) 实训题目 使用 C#语言在 VS2005 平台上编程实现基于 Windows 窗口界面计算器。(3) 实训要求 1.能够熟练使用 VS2005编程平台,熟悉平台菜单栏、工具栏和各种窗口的使用,掌握不同项目类型创建步骤和平台类库的使用。 2.熟练掌握C#语法与程序结构,能够熟练创建程序功能所需的类、对象、接口等,并通过派生与继承实现代码重用,通过事件与消息实现对象之间的交互。 3.熟练掌握 WinForm 程序所需的各种部件的使用,能够正确使用菜单、工具栏和窗口控件完成 WinForm程序界面设计,并能够完成这些部件的相应响应函数代码编写,完成部件与函数之间的消息映射。 4.按照软件工程的要求的功能分析、程序设计、代码编写、程序调试、功能测试等步骤,完成实训项目要求。 5.提交“基于 VC#的计算器程序设计”的设计方案与程序源代码。二 功能分析 1.功能描述 类似于 WinXP 附件计算器中的简单型功能,实现实数的加、减、乘、除、负数、倒数、平方、开平方、清除显示数值(CE)、清除保存数值(C) 。 2.功能分析 架构+窗口界面+取操作数与操作符+计算+清除处理+事件控制 ,通过代码实现其功能。三 程序设计通过程序设计清楚程序的流程便于设计。 程序总体构架 (启动程序)完成计算结果显示获取操作数获取操作符清除处理事件处理数值计算 界面设置 计算处理1.总体设计四 、步骤1.主窗口设计如图:2.编码实现(1)打开VS2005创建项目 (二)界面设计1.进入界面设计 2.菜单设计(1)选择 VS2005 的菜单栏中的“视图|工具箱”单击,调出工具箱(出现在 VS用户区左侧) 。 (2)在工具箱中选择“菜单和工具栏|MenuStrip” ,拖到程序界面用户区,并根据自己的喜好在“属性窗口”(可以使用“视图|属性窗口”调出,一般在用户区右下角)设置菜单栏宽度、颜色等。界面为280,300.(3)在菜单栏中“请在此处键入” (见上图)编辑第一个菜单选项及其下拉子菜单选项“文件(F)” “打开计算器(O)”“推出计算器(C)”。((4)按上述操作,依次完成第二、三个菜单选项及其下拉子菜单选项。如图示:3.显示条设计 (1)在 VS 用户区左侧工具箱中找到 TextBox 控件拖到计算器用户区合适的位置,并按住鼠标左键在相应调整点设置其长度,设置其高度时需要首先在属性窗口把该控件的 Mutiline 属性设置为 True,才可以使用鼠标调整其高度。(2)在属性窗口设置显示条属性:(Name)属性为TxtShow;Text属性为 0.(即:控件上显示的内容) ;TextAlign 属性为 Right;其他属性可以根据自己的喜好设置。 (3)VS2005 是一种“所见即所得”的编程平台,用户在设计页面编辑的控件会自动出现在代码页面,例如上面编辑的菜单和显示条就会在Form1.Designer.cs文件中出现其变量声明和属性设置。其中,关于属性设置部分代码,可以通过打开上图中“+”查看。 4.其它控件设计 (1)依照上述显示条 TextBox控件的设计方法,可以完成其他控件的设计。 (2)其中“计算机区”使用工具箱中的 GroupBox 控件,其它控件使用Button控件。 (3) 一定记住: WinForm编程中,每个控件都对应一个对象变量,Name 属性就是变量名,在程序中需要使用变量名才可以访问控件中的其他属性变量。因此,必须保证代码中使用控件变量名一定要和设计页面设定的变量名一致。2程序代码设计#region 各变量和常数的声明 public const int NULL = 0; / 定义操作码 public const int ADD = 1; /表示加 public const int SUB = 2; /减 public const int MUL = 3; /乘 public const int DIV = 4; /除 public const int SQR = 5; /求平方 public const int SQRT = 6; /求平方根 public const int NODOT = 0; / 定义是否点击了小数点,0 为没点 public const int HASDOT = 1; private double res = 0; / 记录结果数 private double tmp = 0; / 当前输入的操作数 private int opt = NULL; / 记录操作码 private int dot = NODOT; / 记录是否点击了小数点,0为没有点 private int num = 0; / 记录输入操作数的个数 private int dotnum = 0; / 记录小数点部分的个数 string strOper; /获取操作符 #endregion #region 获取操作数事件 private void btn_0_Click(object sender, System.EventArgs e) System.Windows.Forms.Button btnTmp; double i; btnTmp = sender as System.Windows.Forms.Button; if (btnTmp != null) if (dot = NODOT) / 没有点击小数点 i = double.Parse(btnTmp.Tag.ToString(); /取用户自定义的控件关联数,并转换成double型 tmp = tmp * 10 + i; txtShow.Text = tmp.ToString(); /将其放入文本显示屏 else / 点击了小数点 dotnum+; /记录小数点部分的个数 / 生成小数部分的新的数值 i = double.Parse(btnTmp.Tag.ToString() / System.Math.Pow(10,dotnum); tmp = tmp + i; /将小数点后的值加到当前操做数 txtShow.Text = tmp.ToString(); #endregion6.把获取操作数事件函数与控件对应起来,设置每个操作数按钮都与该函数对应。即在Click中操作。7. 在Form1.cs文件中编写获取操作符事件函数并建立对应 #region 获取操作符运事件 /获取操作符运事件 private void btn_Oper(object obj, EventArgs ea) Button tmp1 = (Button)obj; strOper = tmp1.Text; switch (strOper) case /: /除法运算 if (opt != NULL & opt != DIV) calc(); opt = DIV; if (num != 0) /判断操作数的个数,如果两个就做二元运算 if (tmp != 0) res = res / tmp; else res = tmp; num+; tmp = 0; txtShow.Text = res.ToString(); dot = NODOT; break; case *: / 乘法运算 if (opt != NULL & opt != MUL) calc(); opt = MUL; if (num != 0) /判断操作数的个数,如果两个就做二元运算 if (tmp != 0) res = res * tmp; else res = tmp; num+; tmp = 0; txtShow.Text = res.ToString(); dot = NODOT; break; case +: /加法运算 if (opt != NULL & opt != ADD) calc(); opt = ADD; if (num != 0) /判断操作数的个数,如果两个就做二元运算 res = res + tmp; else res = tmp; num+; tmp = 0; txtShow.Text = res.ToString(); dot = NODOT; break; case -: /减法运算 if (opt != NULL & opt != SUB) calc(); /*/ /*if(opt=ADD) res=res+tmp; tmp=0; */ opt = SUB; if (num != 0) /判断操作数的个数,如果两个就做二元运算 res = res - tmp; else res = tmp; num+; tmp = 0; txtShow.Text = res.ToString(); dot = NODOT; break; case sqrt: /平方根运算 if (opt != NULL) calc(); /opt=SQRT; if (tmp 0) /要求操作数大于0 res = Math.Sqrt(tmp); /res=tmp; else if (res 0) res = Math.Sqrt(res); txtShow.Text = res.ToString(); num+; tmp = 0; dot = NODOT; break; case sq: / 平方运算 if (opt != NULL) calc(); /opt=SQR; if (tmp != 0) res = tmp * tmp; /res=tmp; else res = res * res; txtShow.Text = res.ToString(); num+; tmp = 0; dot = NODOT; break; case 1/: /倒数运算 if (opt != NULL) calc(); if (tmp != 0) res = 1 / tmp; /res=tmp; else res = 1 / res; txtShow.Text = res.ToString(); tmp = 0; dot = NODOT; break; case .: / 点击了小数点 if (dot = HASDOT) return; else dot = HASDOT; dotnum = 0; break; case +/-: / 点击了符号运算 if (tmp != 0) tmp = -tmp; txtShow.Text = tmp.ToString(); else res = -res; /res=tmp; txtShow.Text = res.ToString(); dot = NODOT; break; case CE: /清除运算 res = 0; / 记录结果数 tmp = 0; / 当前输入的操作数 opt = NULL; / 记录操作码 dot = NODOT; / 记录是否点击了小数点 num = 0; / 记录输入操作数的个数 dotnum = 0; / 记录小数点部分的个数 txtShow.Text = ; break; case C: /清除运算 res = 0; / 记录结果数 tmp = 0; / 当前输入的操作数 opt = NULL; / 记录操作码 dot = NODOT; / 记录是否点击了小数点 num = 0; / 记录输入操作数的个数 dotnum = 0; / 记录小数点部分的个数 txtShow.Text = ; break; 7. 在Form1.cs文件中编写计算函数并建立与等号对应 #region 等于事件和等于运算方法 /等于事件 private void btn_equ_Click(object sender, System.EventArgs e) calc(); /等于运算方法 private void calc() / 生成结果 if (num = 0) /是否有操作数,没有就返回0 res = 0; tmp = 0; txtShow.Text = res.ToString(); return; switch (opt) /找到对应的运算符进行计算 / 加法 case ADD: res = res + tmp; break; / 减法 case SUB: res = res - tmp; break; / 乘法 case MUL: res = res * tmp; break; / 除法 case DIV: res = res / tmp; break; / 平方 case SQR: res = tmp * tmp; break; / 平方根 case SQRT: res = System.Math.Sqrt(tmp); break; default: return; txtShow.Text = res.ToString(); /结果输出到文本显示屏 opt = NULL; /运算符清空 tmp = 0; dot = NODOT; /res = 0; /num = 0; #endregion 8. 在Form1.cs文件中编写菜单事件函数并建立与相应菜单对应 #region 主菜单事件 /打开关于主题-调用windows xp中计算器的帮助 private void menuItem5_Click(object sender, System.EventArgs e) Help.ShowHelp(this, C:WINDOWSHelpcalc.chm); /打开于我们 private void menuItem6_Click(object sender, System.EventArgs e) Help.ShowHelp(this, 关于.txt); /复制 private void menuItem2_Click(object sender, System.EventArgs e) if (txtShow.SelectionLength 0) txtShow.Copy(); / /粘贴 private void menuItem3_Click(object sender, System.EventArgs e) txtShow.Paste();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度城市配送苹果产销合同模板
- 2025标准独家买卖合同范本
- 餐饮业信息化建设与系统集成服务合同
- 餐饮场所桌椅翻新与采购服务协议
- 2025精简版商业店铺装修合同
- 建筑工程质量策划方案编制指导手册 2025
- 疼痛诊疗学(医学高级):运动系统疾病考点巩固
- 凝血四项测试题目及答案
- 干洗服务合同协议书范本
- 氧舱维护试题及答案
- 股东之间股权转让合同协议书(2篇)
- 人体器官讲解课件
- 惠州市惠城区2024-2025学年数学四年级第一学期期末调研模拟试题含解析
- 2024中考满分作文9篇
- 04S519小型排水构筑物(含隔油池)图集
- 2024至2030年中国无机陶瓷膜行业市场运营格局及投资前景预测报告
- 运用PDCA循环提高全麻患者体温检测率
- 人教版高中数学A版 必修第2册《第十章 概率》大单元整体教学设计
- 敦煌的艺术智慧树知到期末考试答案章节答案2024年北京大学
- 《管理会计》说课及试讲
- 二手农机买卖合同协议书
评论
0/150
提交评论