文档库 最新最全的文档下载
当前位置:文档库 › 计算器程序

计算器程序

计算器程序
计算器程序

计算器程序1.QXYS

J“JD”

R

L“LS”

I

O=L÷2-L^3÷240÷R2

P=L2÷24÷R

T=(R+P)tan(I÷2)+0◢

C=L+IR兀÷180

IR兀÷180-L<0=> Goto1└

C“L”◢

E=(R+L2÷24÷R)÷cos(I÷2)-R◢

Z“ZH”=J-T◢

W“HY”=Z+L◢

G“QZ”=Z+(L+IR兀÷180)÷2◢

A“YH”=Z+IR兀÷180◢

S“HZ”=A+L◢

Lbi 1

结束

Fixm

{B}

B“Z(X)=”

B Goto 6 └

B>S=> Goto 6 └

B≤G=> D=B-Z: ≠=>D=S-B∟

D≤L=> Goto 1: ≠=> Goto 2∟Lbi 1

X=D-D^5÷(40R2L2)

Y=D^3÷(6RL)-D^7÷(336R^3L^3) Goto 6

Lbi 2

F=90(2D-L) ÷兀÷R

X=L÷2-L^3÷240÷R2+RsinF

Y=L2÷24÷R+R(1-cosF)

Lbi 6

结束

v“N(JD)”

U“EO(JD)”

K“N(FW)”

E“Z=2,Y=1”

E=1=> Goto 0: ≠=>E=2=> Goto 0: ≠=> Goto 8∟∟∟Lbi 0

Prog“ZJF”

B Goto 6 ∟

B>S=> Goto 7 ∟

B>G=> Goto 4 ∟

M=X-T

N=(-1)^EY

Goto 5

Lbi 4

M=(T-X)cosI-YsinI

N=(-1)^E((T-X)sinI+YcosI)

Goto 5

Lbi 6

M=B-J

N=0

Goto 5

X=B-S+T

M=XcosI

N=(-1)^EXsinI

Lbi 5

Y“N”=-NsinK-McosK+V“N”◢

X“E”=NcosK-MsinK+U“E”◢

Goto 8

Lbi 8

结束

4.4DM

Q“B:Z=>2,Y=>1”

Lbi 0

{P}

P“B(Z÷Y)”

Prog“3ZB”

90÷兀÷R

B>S=>H=I:≠=>B>A=>H=I-(S-B)2Ans÷L:≠=>B>W=>H=Ans (L+

2(B-W)):≠=>B>Z=>H=(B-Z)2Ans÷L:≠=>H=0∟∟∟∟

H=K-(-1)^EH-90(-1)^Q

N“N(Z÷Y)”=Y-PCosH◢

M“E(Z÷Y)”=X-PsinH◢

Goto 0

结束

5.5

Y“N1”

X“E1”

K“F”

K=0=> Goto0: ≠=> Goto1

Goto0

Lbi 0

N“N2”

M“E2”

√((M-X)2+(N-Y)2)◢

(N-Y)÷Ans

M>X=>K=90-sin-1Ans: ≠=>K=270+sin-1 Ans∟K“F”

Lbi 1

{B}

B“D”

N“N”=Y+BcosK◢

E“E”=X+BsinK◢

LBI 1

注明:本程序适用于4800

操作顺序

本程序分为1个主程序4个子程序在计算过程中ZJF 与3ZB 不用管他!

首先进入QXYS

1.JD? 输入交点里程

2.R?输入半径

3.LS?输入第一缓和曲线长

4.I? 输入角度

接下来就是自己计算了!一直往下按直到他出现LBI 1

退出主程序进入5

1.N1?E1? 分别输入交点的XY坐标

2.F?输入0 注意:(在每次输入新的数据时,此部都输入0)

3.N2? E2?分别输入后视点的XY坐标(后视点就是上一个交点。

例如QXYS中输入的是JD1那么在此就输入JD0)

后面就是自己计算!一直按直到出现LBI 1

退出程序进入4DM

1.B:Z=2,Y=1? 输入放样边桩方向左侧输入2 右侧输入1

2.B(Z/Y)? 输入边桩距离

3.N(JD)?输入本交点X坐标

4.EO(JD)?输入本交点Y坐标

5.N(FW)?此部不用动直接往下按

6.Z=2,Y=1? 输入转角方向左转2 右转1

7.Z(X)=? 输入放样的里程

下面就是计算结果

N=与E= 分别是中桩XY坐标,N(Z/Y)=与E(Z/Y)= 分别是边桩XY坐标

计算结束

坐标万能计算

J=90×I÷(R×兀):P=I2÷(24×R):M=I÷2-(I∧3)÷240÷R2:L=R ×兀×(ABS Q-2×J) ÷180:T=(R+P)×TAN(ABS Q÷2)+M:

LDI 0

{E,K,W}:K:W:E

D=E-F:D≤ 0=> GOTO1: ≠=> D≤I=> GOTO 2: ≠=>D=E-F-I:D≤L=> GOTO3: ≠=>D=F+2×I+L-E:D≥O=> GOTO4: ≠=> GOTO5 ∟∟∟∟

LDI 1

S=E-F:C=Z:U=Z

GOTO6

LDI 2

U=D-(D∧5)÷(40×R2×I2):V=(D∧3)÷(6×R×I):A=90×D2÷(R ×I×π)

GOTO7

LDI 3

U=M+R×SIN(J+180×D÷(R×π)):V=R+P-R×COS(J+180D÷(R×π)):A=J+180D÷R÷π

GOTO7

LDI 7

B=TAN-1(V÷U):S=√(U2+V2):

Q≤0=>C=Z-B:U=Z-A: ≠=>C=Z+B:U=Z+A∟

GOTO6

LDI 4

U=D-(D∧5)÷(40×R2×I2):V=(D∧3)÷(6×R×I):B= TAN-1(V÷U):S=√(U2+V2):A=D2×90÷(R×I×π)

Q≤0=>C=Z+Q+B+180:U=Z+Q+A: ≠=>C=Z+Q-B+180:U=Z+Q-A∟GOTO8

LDI 8

X=S×COSC+G+T×COSZ+T×COS(Z+Q):Y=S×SINC+H+T×SINZ+T×SIN(Z+Q)

GOTO9

LDI5

S=(E-F-2×I-L):U=Z+Q:C=U

GOTO8

LDI6

X=S×COSC+G:Y=S×SINC+H

GOTO9

LDI9

X=X+W×COS(U+K) ◢

Y=Y+W×SIN(U+K) ◢

GOTO0

注明:本程序适用于4800

操作顺序

I?: 缓和曲线长

R?: 曲线半径

Q?: 转向角

K?: 交角(90度)

W?: 偏距:左负右正

E?:测设点里程

F?:ZH点里程

Z?:ZH前进方位角

G?:ZH点X坐标

H?:ZH点Y坐标

X=: 测设点X坐标

Y=: 测设点Y坐标

匝道计算

名称:QXY

LDI0:{K,T,L,}

Q”KQ”:V”XQ”:W”YQ”:O”FQ”:E”RQ”:Z”KZ”:F”RZ”: K:T:L

P=(F-E) ÷ABS(Z-Q):I= ABS(K-Q):G=P×I

H=O+(G+2E)×I×90÷π◢

M=O+(G÷4+2E)×I×45÷π÷2:N=O+(3G÷4+2E)×I×135÷2÷π

J=O+(G÷2+2E)×I×45÷π

X=V+I÷12×(COS O+4(COS M+COS N)+2COS J+COS H)+L COS(H+T) ◢Y=W+I÷12×(SIN O+4(SIN M+SIN N)+2SIN J+SIN H)+L SIN(H+T) ◢GOTO 0

操作顺序

KQ: 曲线起点里程

XQ: 曲线起点坐标X

YQ: 曲线起点坐标Y

FQ: 起点前进方位角

RQ: 曲率半径1÷R(左偏-1右偏+1)

KZ:曲线终点里程

RZ:曲率半径1÷R(左偏-1右偏+1)K:测设点里程

T:偏角

L:偏距(左负右正)

H=:测设点方位角

X=: 测设点X坐标

Y=: 测设点Y坐标

竖曲线程序

A”BP-KI”:B”BP-N”:P”I1”:M”I2”

P>M=>Q=-1: ≠=>Q=1:∟K=ABS tan-1((P-M)÷1000)

T=R tan K┘2

L=πRK÷180

LDI 0:S=(T- ABS(A-D”WZ”))÷π÷R×180

DJ”H”=B-P(A-D)÷1000◢

≠=>D>A=>D>A+T=>J”H”=B+M(D-A)÷1000◢

≠=>J”H”=B+M(D-A)÷1000+QR(1÷cos S-1)◢∟

≠=>J”H”=B-P(A-D)÷1000+QR(1÷cos S-1)◢

∟∟

{D}

GOTO 0

操作顺序

BP-KI: 竖曲线交点里程

BP-N: 竖曲线交点高程

I1: 交点前坡比(比如坡比为2% 就是20 上坡为正、下坡为负)I2: 交点后坡比(比如坡比为-1.8%就是-18 上坡为正、下坡为负)R: 竖曲线半径

KZ:所求点里程

H:计算结果

坐标反算

{X,Y,A,B}

X≠10000Y=>Goto 0◢◢

LDI 0:A”X1”>X=> GOTO 1:≠=> GOTO 4◢◢LDI 1:B”Y1”>Y=> GOTO 2:≠=> GOTO 3◢◢LDI 2:D= tan-1((B-Y)÷(A-X)) ◢◢

L=√((Y-B)2+(X-A) 2) ◢◢

GOTO 5

LDI 3:D=360+ tan-1((B-Y)÷(A-X)) ◢◢

L=√((X-A)2+(Y-B) 2) ◢◢

GOTO 5

LDI 4:D=180+ tan-1((B”Y1”-Y)÷(A-X)) ◢◢

L=√((X-A)2+(Y-B) 2) ◢◢

GOTO 5

LDI 5:”OK”

操作顺序

X: 前点X坐标

Y: 前点Y坐标

X1: 后点X坐标

Y1: 后点Y坐标

D: 计算结果方位角

L:距离

坐标正算{N,E,D,A}

N≠10000E=> GOTO 0

LDI 0:X”N1”=N+S×cosA◢

Y”E1”=E+S sin A◢

“OK”

操作顺序

N: 测站点X坐标

E: 测站点Y坐标

S: 距离

A: 方位角

N1: 测设点X坐标

E1:测设点Y坐标

模拟简单计算器实训

苏州市职业大学 课程设计说明书 名称___模拟简单计算器_______________ 2011 年12月26 日至2011年12月31 日共1 周 院系__ 计算机工程系 班级10嵌入式 姓名 系主任____李金祥 教研室主任刘文芝 指导教师徐丽华、刘文芝

目录 一.课程设计的目的与要求 (2) 1.课程设计的目的 (2) 2.课程设计的要求 (2) 二.题目说明 (2) 2.1开发背景 (3) 2.2 开发工具介绍 (4) 2.3 小组成员分工 (4) 三.硬件方案 (5) 3.1硬件设计 (5) 3.2电路原理图 (7) 四.软件设计 (8) 4.1 模块划分 (8) 4.2 模块结构图 (9) 4.3 液晶显示模块 (9) 4. 4 定时器模块 (6) 五.运行结果分析与系统改进 (10) 六.遇到的问题和解决方法 (11) 七.课程设计总结 (11) 八.参考文献 (11)

一.课程设计的目的与要求 1.课程设计的目的 《单片机原理与应用》是一门专业技术基础课,是一门实践性很强的课,单片机课程设计要求将所学的理论知识通过实践加强理解和认识,提高学生们对单片机的认识,同时提高同学们的设计能力和实践动手能力。 同时《单片机原理与应用》也是一门应用性很强的专业课,其理论与实践技能是从事嵌入式专业技术工作的人员所不可少的。本次课程设计选择AW60实验板进行模拟应用设计与开发,要求学生掌握使用 C 语言进行单片机程序设计和调试的方法,提高综合运用所学的理论知识独立分析和解决问题的能力。同时也为了提高学生的学习能力,锻炼同学之间的合作能力。 2.课程设计的要求 在本课程设计过程中要求学生:重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;按照课程设计的题目要求,独立地完成各项任务,不允许相互抄袭;按时到机房上机,并接受教师的检查。 认真编写课程设计报告。 课程设计可以由2~4名同学合作完成一个课题。全体成员应共同完成选题,确定设计思想,进行功能模块划分,然后由组长为各成员分配任务。 整个设计期间,组长负责协调工作。各小组成员明确自己的任务后,应独立完成设计、编码和调试。 课题设计完成后,小组成员要理解同组其他成员设计的源程序,熟练操作本组设计,各自完成课程设计说明书。 1、对系统进行功能需求分析; 2、设计合理的模块结构和系统框架; 3、编程简练,程序功能齐全,能正确运行; 4、说明书、流程图要清楚; 5、课题完成后必须按要求提交课程设计报告;

MFC课程设计报告一个简单的计算器应用程序样本

设计一个简单的计算器应用程序 一、设计目标与内容 1.了解Windows编程的基础知识, 掌握MFC应用程序的基本知识; 2.基本掌握面向对象程序设计的基本思路和方法; 3.掌握用VC++开发应用程序的的一般步骤和方法; 4.能够利用所学的基本知识,设计一个简单的计算器应用程序, 实现基本的加、减、乘、除、求平方根, 求倒数等基本运算( 必须实现的功能) , 实现求角度的正弦、余弦、正切等基本运算、实现求指数、自然对数、常见对数等基本运算( 这部分功能选做) 。 5.在程序中注意处理数据和运算符的输入, 计算结果的显示。二,设计要求 1.用VC++进行编码, 实现应用程序的功能。注重编码质量, 代码要有适当的注释; 2.提交设计报告一份( 课程设计任务书、目录、设计的基本思路、设计的步骤及主要代码、心得体会、参考文献) 。

一个简单的计算器应用程序 总体设计 能够利用所学的基本知识,设计一个简单的计算器应用程序, 实现基本的加、减、乘、除、求平方根, 求倒数等基本运算( 必须实现的功能) , 实现求角度的正弦、余弦、正切等基本运算、实现求指数、自然对数、常见对数等基本运算( 这部分功能选做) 。在程序中注意处理数据和运算符的输入, 计算结果的显示。 详细设计 ◆新建工程Counter 新建工程, 选择对话框应用程序。 ◆程序运行主界面

图2-1 在对话框内添加相应的控件, 分别给编辑框添加三个变量m_N1,m_N2和m_Result。 然后添加一个组合框, 在里面添加十二个单选按钮设置第一个单选按钮为组, 如图 图2-2 然后给对话框类添加一个int变量Operator用来作相应运算时的标记。 给控件添加相应的函数 1、给单选按钮添加相应的函数 void CCounterDlg::OnRadio1() { Operator=1; } void CCounterDlg::OnRadio2()

简易计算器面板小程序

[java語言與程序設計]简易计算器面板小程序 歸真我发表于:2011/8/1822:49:17标签(TAG):简易计算器面板java小程序 /**C1.java简易计算器面板小程序*/ import java.applet.*;//引入Java系统标准类库中java.applet包 import java.awt.*;//引入Java系统标准类库中java.awt包 import java.awt.event.*;//引入Java系统标准类库中java.awt.event包 public class C1extends Applet{ Label b;//标题标签对象 TextField t1,t2,t3;//三个文本框对象 Button btn1,btn2;//两个按钮对象 CheckboxGroup se;//单选按钮组,它由四个互斥的按钮组成,用来选择计算类型。 Checkbox a,s,m,d;//四个单选按钮,分别代表加、减、乘、除四种运算。 public void init(){ b=new Label("简易计算器面板设计");//创建标题标签对象 t1=new TextField(13);//创建文本框1,用来输入操作数1 t2=new TextField(13);//创建文本框2,用来输入操作数2 t3=new TextField(13);//创建文本框3,用来输出运算结果 btn1=new Button("等于");//创建按钮1“等于”,用来对输入的两操作数进行运算btn2=new Button("重置");//创建按钮2“重置”,用来清空三个文本框,并将计算类型置为初始状态(选中加法)。 se=new CheckboxGroup();//创建单选按钮组 a=new Checkbox("加",true,se);//创建单选按钮:加 s=new Checkbox("减",false,se);//创建单选按钮:减 m=new Checkbox("乘",false,se);//创建单选按钮:乘 d=new Checkbox("除",false,se);//创建单选按钮:除

最新计算机模拟试卷操作题答案

模拟卷1 三、简答题: 1、外存存储器有哪些?内存分哪两种?P13、15 答:外存存储器包括软盘、硬盘、光盘、U盘等。内存分只读存储器ROM和随机存取存储器RAM。 2、计算机网络的分类(按网络覆盖的范围)?P230 答:局域网、城域网、广域网和互联网。 3、常见的视频文件格式有哪些(至少四种)?P343-344 答:视频格式有:.avi格式、.mpg格式、.rm格式和.mov格式。 4、Windows操作题目(写出关键步骤) (1)在桌面上建立AA文件夹,在AA文件夹建立一个名为“JSB”的快捷方式,该快捷方式所指向的对象为“记事本”程序。(记事本程序的文件为 “C:\WINDOWS\system32\notepad.exe”) 步骤:在桌面空白处右击—选择新建文件夹,重命名为“AA”,打开“AA”文件夹,右击选择创建快捷方式,在“浏览”中找到 “C:\WINDOWS\system32\notepad.exe”,点下一步,名称输入“JSB”,完成即可。 (2)将CC文件夹中的“Excel”和“Word ”两个文件夹复制到AA文件夹中,并将“Excel”改名为“TEST”,并将其设置为隐藏属性。 步骤:打开“cc”文件夹,按住“ctrl”键选中“excel”和“word”两个文件夹,右击选择“复制”,打开“AA”文件夹,右击粘贴。在“excel”文件上右击,重命名为“TEST”,右击选择属性,在常规选项卡中,将属性改为“隐藏”。 5、WORD操作题目(6分) (1)修改Word文档中的文字字符的字体、颜色、大小,可以使用哪两种不同的方法实现?P90 答:通过“格式”工具栏和通过菜单“格式”—“字体”命令。 (2)修改文档中的首行缩进2个字符,有哪两种方法实现?P91 答:方法一:选中待修改的文档,把窗口上方的标尺左上的那个小三角往右方移动两个字符的距离,即可。 方法二:选中待修改的文档,右击——段落,在对话框内,特殊格式选择首行缩进,度量值输入2字符,即可。 (3)Word中的哪些对象可以图文混排的? 答:图片、图形,艺术字、文本框等(不确定) 6、EXCEL题目(6分) (1)列举几种Excel中的函数?p156 答:有数学(数值计算)函数、统计函数、逻辑函数、日期与时间函数、财务函数、文本函数等。 (2)列举几种对工作表的操作有哪些?p151 答:选择工作表插入工作表删除工作表移动和复制工作表重命名工作表

计算器java课程设计

目录 一、课设任务及要求 (1) 二、需求分析 (2) 三、设计思路 (3) 四、详细设计 (4) 五、运行调试与分析讨论 (14) 六、设计体会与小结 (18) 七、参考文献 (19)

一、课设任务及要求 1)课设任务: ⑴、设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算); ⑵、有求倒数、退格和清零功能。 2)创新要求: 能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。 3)设计要求 ①设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。 ②课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。 ③认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。

二、需求分析 ⑴、开发的技术及功能 本课程设计是要做一个图形界面的计算器,其界面主要是由swing组件中的控件构成。程序实现了计算器的基本功能有:加、减、乘、除基本算术运算(可以进行浮点和负数运算)和sin、cos、tan等三角函数求值运算,同时能进行指数运算和自然对数运算,还有求倒数、退格和清零功能。 ⑵设计思路 设计这个计算器主要是参考Windows操作系统中自带的计算器,由于编者水平和时间的限制,不能将计算器设计到科学型及其他更复杂的类型,在设计过程中还参考了一些其他的优秀设计。但本计算器除了常用的加减乘除(可以进行浮点和负数运算)这些基本运算外,还有求余、求倒、退格、清零,甚至还能进行一些复杂科学的运算,比如余弦(cos)、正切(tan)、指数运算(pow)、自然对数运算(log)、求平方根(sqrt)以及对e的指数运算(exp),并且还能进行连续运算。总体上说来,本计算器设计简单,代码很少,程序很小,但功能却很强大,这是同类计算器所不具备的。 ⑶设计效果图 设计时先在设计界面中添加按钮等控件,后在按钮的actionPerformed 事件中添加代码完成其功能其中调用了Java类中的Math函数库以及各种字符串操作。设计的界面如下: 图1 计算器运行界面

简易加减计算器小程序

[java語言與程序設計]简易加减计算器小程序 歸真我发表于:2011/8/1922:51:21标签(TAG): 简易加减计算器小程序 在上一篇《简易计算器面板小程序》中,我已对面板部分的程序作了详细的注释,并对程序的运行过程及结果作了完整的介绍,并且是上机调试过了得到的结果。但是,那只是面板,不能运算。要想让它具有运算的功能,还得在此基础上作一些修改,加进有关按钮动作响应部分的程序。为了便于理解,便于调试,便于学习,掌握其要点,我想应该遵循循序渐进的原则,所以,先从加减运算开始,看看这个功能是怎么实现的。请看下面的小程序。从程序中可以看出,它是利用内部类ButtonAct来处理按钮的动作响应的。从总体上讲是两个按钮“运算”和“重置”,但“运算”又区分为“加”和“减”。所以,用负责实现双分支的if语句来编程。 /**C2.java简易加减计算器小程序*/ import java.applet.*; import java.awt.*; import java.awt.event.*; public class C2extends Applet{ TextField t1,t2,t3; Button btn1,btn2; CheckboxGroup select; Checkbox a,s;//分别代表加、减 Label b; public void init(){ t1=new TextField(13); t2=new TextField(13); t3=new TextField(13); btn1=new Button("等于");

btn2=new Button("重置"); select=new CheckboxGroup(); a=new Checkbox("加",true,select); s=new Checkbox("减",false,select); b=new Label("简易加法/减法计算器"); add(b); add(t1); add(a); add(s); add(t2); add(btn1); add(t3); add(btn2); btn1.addActionListener(new ButtonAct());//注册给ButtonAct对象btn2.addActionListener(new ButtonAct());//注册给ButtonAct对象} class ButtonAct implements ActionListener{//内部类,按钮处理public void actionPerformed(ActionEvent e){ int op1,op2,op3; if(e.getSource()==btn1){//等于按钮 op1=Integer.parseInt(t1.getText()); op2=Integer.parseInt(t2.getText()); if(a.getState())//以下判断计算类型并实现相应的计算 op3=op1+op2; else op3=op1-op2; t3.setText(Integer.toString(op3)); } else{//重置按钮 t1.setText(""); t2.setText(""); t3.setText(""); a.setState(true); } } }//end of ButtonAct }//*~ 运行结果为:

c计算器实验报告

简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (1)体系设计: 程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,运算结果能正确显示,可以清楚数据等。 (2)设计思路: 1)先在Visual C++ 6.0中建立一个MFC工程文件,名为calculator. 2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和单选框 3)设计按钮,并修改其相应的ID与Caption. 4)选择和设置各控件的单击鼠标事件。 5)为编辑框添加double类型的关联变量m_edit1. 6)在calculatorDlg.h中添加math.h头文件,然后添加public成员。 7)打开calculatorDlg.cpp文件,在构造函数中,进行成员初始化和完善各控件 的响应函数代码。

(3)程序清单: 添加的public成员: double tempvalue; //存储中间变量 double result; //存储显示结果的值 int sort; //判断后面是何种运算:1.加法 2.减法 3.乘法 4.除法 int append; //判断后面是否添加数字 成员初始化: CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCalculatorDlg) m_edit1 = 0.0; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); tempvalue=0;

实用计算器程序

目录 1.基本功能描述 (1) 2.设计思路 (1) 3.软件设计 (10) 3.1设计步骤 (10) 3.2界面设计 (10) 3.3关键功能实现 (12) 4.结论与心得 (14) 5.思考题 (15) 6.附录 (17) 6.1调试报告 (17) 6.2测试结果 (18) 6.3关键代码 (21)

实用计算器程序 1.基本功能描述 (1)可以计算基本的运算:加法、减法、乘法、除法。 (2)可以进行任意加减乘除混合运算。 (3)可以进行带任意括号的任意混合运算。 (4)可以进行单目科学运算:1/x、+/-、sqrt、x^2、e^2等。 (5)可以对显示进行退格或清除操作。 (6)可以对计算结果自动进行存储,并在用户需要的时候查看,并且可在其基础上进行再运算操作。 (7)界面为科学型和普通型,可在两界面间通过按钮转换。 2.设计思路 计算器属于桌面小程序,适合使用基于对话框的MFC应用程序设计实现。首先要思考的问题是:我的程序需要实现什么样的功能?需要哪些控件?需要哪些变量?需要哪些响应? 我们知道基于对话框的MFC应用程序的执行过程是:初始化、显示对话框,然后就开始跑消息循环列表,当我们在消息循环列表中获取到一个消息后,由相应的消息响应函数执行相应的操作。根据这个流程我们制定出计算器程序的程序框架主流程图,如下页图1所示。 根据程序主流程图可以看出,我们需要一些能响应用户操作的响应函数来实现我们的计算器相应按键的功能。

图1 程序主流程图 说明:所以流程图由深圳市亿图软件有限公司的流程图绘制软件(试用版)绘制,转 存PDF后导出为图片加入到word中的,所以可能会打印效果不好,但确实为本人绘制。

微机原理实验简易计算器

【实验题目】 简易计算器设计 【实验目的】 综合测试学生微机接口技术及应用能力,包括系统构思设计、电路设计搭建、软件调试等; 结合应用实际,培养学生运用微机技术服务应用、服务实际的能力。 【基本要求】 1)利用实验箱上的4x4键盘及6位数码管,实现两个16位宽的非负整数(0~65535)进行+、-、×运算,计算结果限制在范围-65535~65535,超过范围在数码管最低位显示E; 2) 16个按键的分配可以自行指定; 【扩展要求】 1)按基本要求保持输入的范围不变(16位宽),扩展计算结果的范围到用足6位数码管,当计算结果超过-65535~999999时,显示E; 2)增加÷的功能,有小数显示; 【实验程序】 ;该程序实现了基本要求及扩展要求的2) DSEG SEGMENT BUFF DB 6 DUP() LED_7 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39 H,5EH,79H,71H,00H,40H POSITION DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEH UNIT10 DW 10000,1000,100,10,1 NEWNUM DB 0 COUNT DB 0 FLAG DB 0 ;是否有键按下的标志 NEGTI DB 0 ;是否为负数的标志 NUM DW 0 NUM1 DW 0 NUM2 DW 0 TAG DB 0 ;运算种类标志 POINT DB 0 ;除法结果添加小数点标志 RESULT DW 0 DSEG ENDS CSEG SEGMENT ASSUME DS:DSEG,CS:CSEG START: MOV AX,DSEG MOV DS,AX MOV DX,300CH ;8255初始化 MOV AL,81H OUT DX,AL LEA SI,BUFF MOV CX,6 NEXT: MOV BYTE PTR[SI],16 INC SI LOOP NEXT CALL SHOW ;将显示缓冲区中内容在LED上一次显示出来 MOV COUNT,0 ;记按下了几位数 NEXT2: CALL SHOW CALL SCAN ;判断是否有按键按下 CMP FLAG,1 JZ OK JMP NEXT2 OK: MOV FLAG,0 MOV POINT,0 MOV DX,3000H ;判断是哪一个键被按下 MOV AL,0FFH OUT DX,AL MOV CH,-1 ;CH用于保存当前被扫描的列号MOV CL,07FH XL: ROL CL,1 INC CH MOV DX,3000H MOV AL,CL OUT DX,AL MOV DX,3008H

自己编的c#小程序—计算器

实验内容 1.仿照windows自带的计算机用C#语言做一个能简单加减乘除的计算器 using System; using System.Collections.Generic; using https://www.wendangku.net/doc/ff5644291.html,ponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { private bool ClearDisplay = true; private string Op; private double Op1; private double Op2; private double result; public Form1() { InitializeComponent(); } private void textBox1_TextChanged(object sender, EventArgs e) { } private void Form1_Load() { } private void ce_Click(object sender, EventArgs e) { tb.Text = ""; Op = ""; Op1 = 0; Op2 = 0; result = 0; } private void num0_Click(object sender, EventArgs e) { tb.Text = tb.Text+ "0"; Op1 = System.Convert.ToDouble(tb.Text);

windows自带计算器详细使用方法-图文并茂5页word文档

Windows自带的计算器详细使用方法(图文并茂) 以16的开平方的计算方法为例: 1.打开电脑自带计算器,选择查看中的科学型; 2.进入科学型计算器; 3.输入16; 4.勾选Inv; 5.按按钮; 6.输入2,注意了,不是输入1/2,一定要是2,才正确; 7.按按钮。 结果 计算完成。 其他: 一、进行复杂运算 我们平时使用计算器时,往往进行简单计算,如8×9=72。如果复杂些,就一步步进行计算,如要计算(4+5)×6时,就需要先算4+5=9,再算9×6=120。现在我们使用计算器的高级功能就可以一步实现这个运算。 我们打开计算器,是默认的界面。点击计算器的“查看”下拉菜单,点中“科学型”,就会出现更大的窗口:首先,我们在记事本里编写好我们要的计算式,如: (4+5)×6,然后将它复制。打开计算器的“编辑”菜单,再点击“粘贴”,做完这些操作后,按下计算器的“=”按纽,计算器就会将最后的计算结果显示在输出文本框中。 二、数学计算 普通的计算器具有很强的数学计算功能,它可以计算角度的正弦值、余弦值、正切值等,

Windows计算器也具备了这些功能,并且使用起来也很方便。假如我们要计算正弦值,我们输入角度或弧度的数值后,直接点“sin”按纽,结果就会输出。同时我们还可以方便进行平方、立方、对数、阶数、倒数运算。 三、逻辑运算 Windows计算器可以方便快捷地进行二进制、八进制、十进制、十六进制之间的任意转换。假如我们要把十进制数69转换成到二进制数,我们首先通过计算器输入69,完毕后点“二进制”单选按纽,计算器就会输出对应的二进制数。 如果要转换成其他进制,点击对应的按纽就可以了。需要注意的是在四个进制按纽后面还有四个按纽,它们的作用是定义数的长度,“字节”把要转换数的长度限制为一个字节,即八位二进制数,“单字”刚是指两个字节长度,“双字”是四个字节长度,“四字”是八个字节长度。 除了可以进行进制转换外,还可以进行与、或、非等逻辑运算。逻辑运算的使用与其他数学计算大同小异。 四、统计功能 计算器另外一个有特色的功能是统计。我们在科学型模式下按下“Sta”按纽,就会弹出统计框。我们要使用统计功能,首先要录入统计数据。假如我们的原始数据为1、2、3、4。我们首先通过计算器键盘输入1,然后按“Dat”按纽,数据就会输入到统计框中。其余的数据同样的方法依次输入。这时我们就可以开始对数据进行外理了。如果要对统计数据求和,只需按下“Sum”按纽,结果就会输出。同样,按下“Ave”按纽就可以得到平均值,按下“s”按纽就会得到标准偏差。 标准型计算器的使用 对于两个数字的算术运算,可直接单击计算器上的按钮和符号或者从键盘上键入相应的数字和符号即可完成。如果输入有误,可单击“退格”按钮或键入[BackSpace]键将其删除,也可单击数字删除钮[CE]和算式删除钮[C]全部删除。 [CE]的功能是清除当前显示的数值,如:要计算60×40,输入60后,点击“*”按钮,再输入第二个数,本来应输入40,但一不小心输成了77,没关系,单击一下[CE]按钮即可将77清除,接着输入正确的值40,最后点击“=”按钮即可完成计算。

模拟计算器程序-课程设计

模拟计算器 学生姓名:**** 指导老师:**** 摘要本课程设计的课题是设计一个模拟计算器的程序,能够进行表达式的计算,并且表达式中可以包含Abs()和Sqrt()运算。在课程设计中,系统开发平台为Windows ,程序设计设计语言采用C++,程序运行平台为Windows 或*nix。本程序的关键就是表达式的分离和处理,在程序设计中,采用了将输入的中缀表达式转化为后缀表达式的方法,具有可靠的运行效率。本程序做到了对输入的表达式(表达式可以包含浮点数并且Abs()和Sqrt()中可以嵌套子表达式)进行判定表达式是否合法并且求出表达式的值的功能。经过一系列的调试运行,程序实现了设计目标,可以正确的处理用户输入的表达式,对海量级数据都能够通过计算机运算快速解决。 关键词C++程序设计;数据结构;表达式运算;栈;中缀表达式;后缀表达式;字符串处理;表达式合法判定;

目录 1 引言 (3) 1.1课程设计目的 (3) 1.2课程设计内容 (3) 2 设计思路与方案 (4) 3 详细实现 (5) 3.1 表达式的合法判定 (5) 3.2 中缀表达式转化为后缀表达式 (5) 3.3 处理后缀表达式 (7) 3.4 表达式嵌套处理 (8) 4 运行环境与结果 (9) 4.1 运行环境 (9) 4.2 运行结果 (9) 5 结束语 (12) 参考文献 (13) 附录1:模拟计算器源程序清单 (14)

1 引言 本课程设计主要解决的是传统计算器中,不能对表达式进行运算的问题,通过制作该计算器模拟程序,可以做到快速的求解表达式的值,并且能够判定用户输入的表达式是否合法。该模拟计算器的核心部分就在用户输入的中缀表达式的转化,程序中用到了“栈”的后进先出的基本性质。利用两个“栈”,一个“数据栈”,一个“运算符栈”来把中缀表达式转换成后缀表达式。最后利用后缀表达式来求解表达式的值。该算法的复杂度为O(n),能够高效、快速地求解表达式的值,提高用户的效率。 1.1课程设计目的 数据结构主要是研究计算机存储,组织数据,非数值计算程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。学习数据结构是为了将实际问题中涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。 模拟计算器程序主要利用了“栈”这种数据结构来把中缀表达式转化为后缀表达式,并且运用了递归的思想来解决Abs()和Sqrt()中嵌套表达式的问题,其中还有一些统计的思想来判定表达式是否合法的算法。 1.2课程设计内容 本次课程设计为计算器模拟程序,主要解决表达式计算的问题,实现分别按表达式处理的过程分解为几个子过程,详细的求解过程如下:1 用户输入表达式。 2 判定表达式是否合法。 3 把中缀表达式转化为后缀表达式。 4 求出后缀表达式的结果。 5 输出表达式的结果。通过设计该程序,从而做到方便的求出一个表达式的值,而不需要一步一步进行运算。

汇编经典小程序

实验一:判断一个数X的正,负数,还是零。(假设是正数,输出+,是负数,输出-,是零,输出This is a zore !) DATA SEGMENT X DB 10 CR EQU 0DH LF EQU 0AH W DB 'This is a zore!',CR,LF,'$' ZHENG DB '+',CR,LF,'$' FU DB '-',CR,LF,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,X AND AL,AL JZ L1 SHL AL,1 JC L3 JMP L2 L1: MOV DX,OFFSET W MOV AH,9 INT 21H JMP L4 L2: MOV DX,OFFSET ZHENG MOV AH,9 INT 21H JMP L4 L3: MOV DX,OFFSET FU MOV AH,9 INT 21H JMP L4 L4: MOV AH,4CH INT 21H CODE ENDS END START 实验二:求十个数中的最小数,并以十进制输出。(若要求最大的,只要把JC 改为JNC 即可)(仅局限于0---16间的数比较,因为ADD AL,30H只是针对一位的十六进制转换十进制的算法) DATA SEGMENT XDAT DB 0AH,1FH,02H,03H,04H,05H,06H,07H,08H,09H MIN DB ? CR EQU 0DH

W DB ' is min',CR,LF,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV CX,9 MOV SI,OFFSET XDAT MOV AL,[SI] L2: CMP AL,[SI+1] JC L1 MOV AL,[SI+1] L1: INC SI LOOP L2 ADD AL,30H MOV DL,AL MOV AH,2 INT 21H MOV DX,OFFSET W MOV AH,9 INT 21H CODE ENDS END START 实验三:设有3个单字节无符号数存放在BUF开始的缓冲区中,编写一个能将它们从大到小从新排列的程序。 DATA SEGMENT BUF DB 87,234,123 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,OFFSET BUF MOV AL,[SI] ;把3个数取到寄存器中 MOV BL,[SI+1] MOV CL,[SI+2] CMP AL,BL ;排序,将最大数送AL寄存器 JAE NEXT1 XCHG AL,BL NEXT1:CMP AL,CL JAE NEXT2 XCHG AL,CL NEXT2:CMP BL,CL ;将最小输送CL寄存器

用JAVA编写计算器程序(模拟Windows计算器)

用JAVA编写计算器程序(模拟Windows计算器) import java.awt.*; import java.awt.event.*; public class Calculation extends WindowAdapter implements ActionListener { double dResult=0; double dNowInput=0; double dMemory; int n=0; //记载小数位数 int nOperation=1; // 记录运算符类型 int nBitsNum=0; //记录总共输入的位数 boolean alreadyHaveDot=false; //已经有小数点? boolean keyAvailable=true; boolean alreadyClickedEqueal=false; //是否按下过"="? boolean isTempNowInput=false; //是否在计算出结果后直接按运算符将结果赋给了当前输入值? Frame f; Panel p1,p2,p3,p4,p5,p6; TextField tf1,tf2; Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b0; Button bDiv,bSqrt,bMulti,bMinus,bPercent,bPlus,bReciprocal,bEqual,bDot,bNegative; Button bBackspace,bCE,bC,bMR,bMS,bMC,bM; public void display() { f=new Frame("计算器"); f.setSize(280,213);

计算机应用基础教程第一章-计算机基础知识

第1章计算机基础知识 学习目标: 通过本章学习使学生掌握计算机基本概念、计算机系统组成、计算机各大硬件设备、计算机的数制和信息的表示与存储,并熟悉计算机的产生、发展、特点和应用领域,了解计算机中字符编码的概念。 计算机概述 随着微型计算机的出现及计算机网络的发展,计算机的应用已渗透到社会的各个领域,并逐步改变着人们的生活方式。21世纪的今天,掌握和使用计算机成为人们必不可少的技能。 1.1.1计算机的诞生及发展 1946年2月,世界上第一台电子计算机ENIAC(埃尼阿克)在美国加州问世。ENIAC使用了17468电子管,1500个继电器,体积3000立方英尺(1立方米=35.346立方英尺),占地170平方米,重30吨,耗电174千瓦。内存17K,字长12位,运算速度每秒5000多次加法运算,300多次乘法运算,比当时最快的计算工具快300倍,耗资40万美金。在当时用它来处理弹道问题,将人工计算使用20小时缩短到30秒。但是ENIAC却有一个严重的问题,它不能存储程序。如图1-1所示。 图1-1世界上第一台电子计算机 几乎在 同一时期,着名数学家提出了“存储程序”和“程序控制”的概念。其主要思想为: 1)采用二进制形式表示数据和指令。 2)计算机应包括运算器、控制器、存储器、输入和输出设备五大基本部件。 3)采用存储程序和程序控制的工作方式。 所谓存储程序,就是把程序和处理问题所需的数据均以二进制编码形式预先按一定顺序存放到计算机的存储器里。计算机运行时,中央处理器依次从内存储器中逐条取出指令,按指令规定执行一系列的基本操作,最后完成一个复杂的工作。这一切工作都是由一个担任指挥工作的控制器和一个执行运算工作的运算器共同完成的,这就是存储程序控制的工作原理。

开发一个小程序,到底要多少钱这要从以下几方面算

https://www.wendangku.net/doc/ff5644291.html, 开发一个小程序,到底要多少钱?这要从以下几方面算 1、小程序开发,工程量并不小,它不等同于网站开发和微信官网应用开发,那些技术成熟,有现成的模板。 小程序开发,等同于简单一些的APP开发,需要涉及的东西很多,后端服务器、数据库、通讯、API等等。 2、微信搞出小程序,是想来终结APP的——你一个网站网页的技术,怎么可能来终结那么多APP功能需求呢? 所以,我们要提高小程序产品开发的成本预期和时间预期。 首先要计算开发的费用 我们假定要开发的是一款电商购物小程序,用户注册登录、产品陈列、加入购物车、下单购买、支付、售后与服务跟进,这是典型的电商需求,这种需求,在市面上有无数APP或公众号H5 网站。 定制化的需求开发,一般要按照开发商或技术团队投入的人力来报价,大约需要投入的人手如下: 需求分析兼项目经理兼team leader1 人* 20 天*1k元=2w UI 设计1 人* 10 天*0.8k=8k 前端开发(小程序开发) 1 人* 20 天*0.8k=1.6w(前期人才稀缺,可能有一定上浮)

https://www.wendangku.net/doc/ff5644291.html, 前端开发(PC端) 1 人* 20 天*0.8k=1.6w 后端开发兼系统架构1 人* 20 天*0.8k=1.6w 测试兼维护部署兼售后客服1 人* 30 天*0.8k=2.4w 小计:10w (OH,NO!!) 这样看起来,开发一个小程序,好像和“开发一个APP”差不多。这个价格也接近开发商和技术团队的成本了。 也许有人要问这里的技术人员“日单价”,是不是小编乱拍脑袋,这里稍微解释一下,事实上市场上做定制开发的技术团队,对人头的定价是参差不齐的,而我们是假定出品的微信小程序,是有一定品质的,这意味着每个项目的技术团队参与者的水平都不会太差。 参考现在市面上好的人才身价,能独当一面的优秀工程师,月薪都是5w起跳,如果再摊上企业经营成本和人力闲置率,这个定价并不算高。

java课程设计-模拟科学计算器

JAVA课程设计说明书 题目:模拟科学计算器 姓名: 学号: 班级:网络工程11-2 山东科技大学 2013年11月7日

目录 1 课设任务及要求 (3) 1.1课设任务 (3) 1.2设计要求 (3) 2 需求分析 (2) 2.1 设计背景 (2) 2.2 需求获取 (3) 2.3 程序功能图 (4) 3 设计思路 (4) 3.1 界面布局 (4) 3.2 类的定义 (5) 3.3变量的定义 (5) 4 详细设计 (6) 4.1整体概述 (6) 4.2 误操作处理 (7) 4.3流程图和结构图 (8) 5 系统调试 (11) 5.1 程序界面 (11) 5.2 运行界面 (11) 6 心得与体会 (15) 7 参考文献 (16) 8 附录 (16)

1 课设任务及要求 1.1课设任务: 要求:界面模拟Windows中的计算器程序。 实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。 实现要点:添加相关组件并进行按钮事件处理。 要求提交Application和Applet两个版本的程序。 1.2设计要求 ①设计的java计算器应用程序可以完成加法、减法、乘法、除法和取余运算,和cos,sin,tan等三角函数功能以及阶乘和指数等运算,且有小数点、正负号、求倒数、退格和清零功能。具体可参考windows附件下的计算器 ②课程设计使用Eclipse4.2等作为程序编译和运行测试的开发平台,采用JDK-7u25作为java开发环境,使用Microsoft Office Visio 2007作为绘图工具。

③认真按时完成课程设计报告,制作演讲PPT,积极报名上讲台向大家演示和讲解自己的程序。提交打印版的报告以及电子版的原稿和Application和Applet两个版本的程序代码。 2 需求分析 2.1 设计背景 本程序是老师提供的几个课程设计题目中比较中等的题目。要求实现模拟的科学计算器功能,主要包括加减乘除四则运算和阶乘,三角函数以及指数的运算。具体的功能我参考了Windows7下的计算机小程序,并根据其界面设计了java小程序界面,根据其功能对自己设计的计算器小程序进行了功能的适当增加与修改。在实现了课程设计题目要求的基础上,自己又增添了对数函数,幂函数,三角函数,取余等我们常用到的功能比较简单的函数。由于本函数涉及的函数以及按键数目较多,故没有采用面向对象的设计方法,没有对每个功能封装成函数调用,而是针对每个按键的动作事件直接采用了算法的编写。最终实现了全部的功能,但是由于时间有限,许多功能没有坐到很到位的优化,或许还存在着许多了漏洞,欢迎老师和同学的批评指正,我一定会

计算器白盒测试

一、实验目的

针对实验一编写的源代码进行白盒测试。要求绘制出程序的控制流图,采用逻辑覆盖和基路径方法设计测试用例。执行测试用例,并分析测试结果。如果是C++源码,请使用C++Test对代码进行静态检查和动态测试。如果是Java源码,请使用JUnit进行动态测试。 二、实验内容 (一)、题目白盒测试 (1)画控制流图 (2)设计测试用例,实现语句覆盖、判定覆盖、条件覆盖、基路径测试 (3)练习用单元测试 (4)测试结果分析 (二)实验过程 (1)针对计算器的黑盒测试的基础上,可以根据实验一的源代码进行白盒测试,以下是程序的流程图以及控制流图

(2)设计测试用例,实现语句覆盖、判定覆盖、条件覆盖、基路径测试 判定覆盖测试用例: 每个判定必须至少获得一次“真”值和“假”值,则测试用例: 条件覆盖测试用例: 表 9 条件覆盖

路径覆盖: 测试用例要求覆盖所有可能的路径: 表10 路径覆盖 条件组合覆盖: 表11 条件组合覆盖 基路径测试 (1)程序环路复杂度:V(G)=E-N+2=13-11+2=4 (2)独立路径: Path1:1-2-3-11 Path2:1-2-4-5-10-11 Path3:1-2-4-6-7-9-10-11 Path4:1-2-4-6-8-9-10-11 (三)实验结果测试 由于程序是用MFC写的计算器的程序,所以在进行测试的时候有点困难,没有很好的辅助工具来进行具体的测试,但是在分析的时候我很细致的列举了各类的测试用例,以达到测试用例的完整,同时保证测试结果的正确性 (四)测试用例设计体会: 在这次软件测试过程中,我扮演了用户、程序员、测试员三钟角色,为了充分体现黑盒、白盒的特点,我特意设计了一个0—100之间的整数、小数。负数简单加减乘除运算。 对于白盒测试,在设计测试用例时首先对程序进行分析,从程序的内部结构出发设计测试用例,涉及到程序的控制方法、源语句、编码细节、数据库设计等。设计测试用例时应用了白盒测试中的多种测试方法,其中包括:测试覆盖(语句覆盖、分支覆盖、分支条件覆盖等)、基路径测试等方法。白盒测试中,对代码的测试比较透彻,但不容易生成测试用例,而且测试工作量很大,。因为白盒测试是基于代码的基础上,所以对变量的定义、数据的分析、精度的度量都有严格的要求。 总之,在这次测试设计让我对软件测试有了一个深入了解,对于测试方法、测试过程,都有了较好的认识,学会了如何进行黑盒测试、白盒测试、以及一些测试工具(如Junit)。当然,对于以后企业上的软件测试,还有待很大的提高。

相关文档