基于c++builder的表达式计算器及播放器软件设计.doc_第1页
基于c++builder的表达式计算器及播放器软件设计.doc_第2页
基于c++builder的表达式计算器及播放器软件设计.doc_第3页
基于c++builder的表达式计算器及播放器软件设计.doc_第4页
基于c++builder的表达式计算器及播放器软件设计.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计综合训练1 课程设计报告 昆明理工大学理学院信技专业课程设计报告基于c+builder的表达式计算器及播放器软件设计 课程: 程序设计 班级: 信技151学号: 201511101105 、201511101127姓名: 郭峰、魏兴宇指导教师: 张志坚2016年 9 月6日目 录 1引言- 11.1课题背景-21.2课程设计目的-32需求分析-52.2系统功能模块-52.3设计要求-63系统实现 -83.1 对话框界面设计-83.2 数值计算功能的实现-104程序关键代码及运行结果 -125总结与体会 -15 一、引言1.1 课题背景计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。要实现计算功能,可以用VC+的知识编写程序来解决此问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用. 在计算器中加入了登录界面,加强计算器你的安全性及保护数据,除此之外,强大的工作压力很容易使人产生疲劳,所以可以加入音乐播放器功能。1.2 课程设计目的本课程是一门实践性很强的课程,既要熟练掌握相关概念,又要动手编程,还要上机调试运行。同时,本课程也注重提高学生编写技术文档和技术文档阅读的能力。学生通过本课程的学习实践,将学习和强化软件开发的能力、文档写作能力、英语阅读能力、软件使用能力等。为今后计算机编程的学习和工作打下良好、扎实的理论实践基础。二、 需求分析2.1系统功能模块1)输入的符号,数字从左向右显示; 点击“=”输出结果,在输出行显示2)支持加减乘除运算;3)支持“xy”的运算;4) 括号“(”“)”的使用;5)支持混合运算;6)计算器的输入方式:支持鼠标点击计算器键输入; 7)计算器计算结果的输出方式:在计算器窗口的输出行显示8)算数运算的数据类型:整数和浮点数;9)特殊情况的计算;10)以上所有的运算都是在10进制下进行.1)输入的符号,数字从右向左显示。 先输入“8”8 再输入“”8* 点击“=”输出结果,在输出行显示.2)支持加减乘除运算.输入行a.乘法计算:8*3 24输出行 b. 加法计算 1+0 1 c. 减法计算8-3 5 d.除法运算(特殊情况见10.B)9/4 2.25 2) 支持求次方(x y)运算。求次方(x y)运算:“”为次方(x y)在输入行中的显示符号42 164)“(”“)”的使用。(括号的使用)要使用“(”“)”的时候,先点击“(”,再输入数字或符号,内容输入完毕以后,点击“)”,完成“(”“)”的所有功能。例如:2(2+2)=?2 2*( 2*(2+2 2*(2+2) 2*(2+2) 85)支持混合运算。附:运算符的优先级表优先级功能键显示结合律从高到低( 、 ) ( 、 )自左向右xy、1/x、自左向右、*、/自左向右自左向右例如:(5+2)5=?混合运算则按优先级表中的运算符优先顺序从左向右计算(5+2)*5 356)计算器的输入方式:只支持鼠标点击计算器键输入;7)计算器计算结果的输出方式:在计算器窗口的输出行显示。8)算数运算的数据类型:整数和浮点数。a.输入行最大显示的字符数32位,每个运算符算一位;b.“(”,“)”各占一个字符位;c.输出行最大显示的字符数为32位;d.纯小数显示的最大字符数为小数点后30位,整数及小数点各占一位;若纯小数为负数,则显示最大字符数为小数点后29位,“-”占一位;e.输入行在未输入任何数字的时候,显示“0”,只占一个字符位;当输入任何数字时。“0”消失,输入的的数字取代“0”;当输入任何运算符时。默认之前输入数字“0”;f.点击“=”键后方可显示数字或字母或汉字。9)特殊情况的运算A.运算结果整数部分超出32位,显示Infinity(无穷大);出现运算异常! 9999999999999999*99999999 InfinityB.除数为0的情况,提示用户被除数不能为零!1/0 除零错误 C在运算时,若结果为纯小数,小数位超过30位,则超出的字符舍弃。2/30 .6666666666666666666666666若舍弃超出部位后,结果全为0,则结果为01/9999 0 D在运算时,若结果的整数位不为0a总位数在最大字符位内,则直接显示;b总位数在最大字符位以外,整数部分在最大字符位以内,则只优先显示整数部位,弃掉32位以后的字符5/3 1.6666E当用户输入“0”时,若“0”之前的算式或数字的值为0,点击“=”后,输出界面显示“底数不能为0”10、以上所有的运算都是在10进制下进行2.2设计要求(1)了解Windows编程的基础知识,掌握MFC应用程序的基本知识。(2)理解需求分析过程,掌握需求分析文档编写。(3)理解面向对象程序设计的基本思路和方法。(4)掌握用C+builder开发应用程序的一般步骤和方法。(5)掌握基于对话框的应用程序的编写,主要包括文本框和按钮等。(6)掌握后缀表达式算法。(7)掌握C+builder开发工具的使用。包括资源管理,项目创建,运行调试等。(8)完成表达式的计算器应用程序,实现基本的加、减、乘、除等四则运算,且支持包括括号的表达式运算功能。三、系统实现3.1对话框界面设计3.2数值计算实现例如:2(2+2)=?2 2*( 2*(2+2 2*(2+2) 2*(2+2) 8四、程序关键代码及运行结果/-登录程序代码:#include #pragma hdrstop#include Unit1.h#include Unit2.h#include Unit3.h#include var.h#include Unit4.h/-#pragma package(smart_init)#pragma resource *.dfmTForm1 *Form1;/-_fastcall TForm1:TForm1(TComponent* Owner) : TForm(Owner)/-void _fastcall TForm1:btnAddUserClick(TObject *Sender) if(Users:adminLoginSuccess=false) ShowMessage(管理员未登录,请重试!); edtUserName-SetFocus(); else if(users.count=users.MaxUser) ShowMessage(用户数已满,不能增加!); else Form3-Show(); /-void _fastcall TForm1:btnCancelClick(TObject *Sender) Close(); /-void _fastcall TForm1:btnChangePassClick(TObject *Sender) if(Users:adminLoginSuccess=true) ShowMessage(管理员不能修改密码!); else if(Users:userLoginSuccess=false) ShowMessage(用户未登录,请重试!); edtUserName-SetFocus(); else Form2-Show();/-void _fastcall TForm1:btnOkClick(TObject *Sender) Users:adminLoginSuccess=false; Users:userLoginSuccess=false; lblStatus-Caption=; if(edtUserName-Text=adminName & edtPassword-Text=adminPass) Users:adminLoginSuccess=true; Users:userLoginSuccess=false; lblStatus-Caption=管理员已登录; else for(int i=0;iText= & edtPassword-Text=users.useri.pass) Users:userLoginSuccess=true; Users:adminLoginSuccess=false; lblStatus-Caption=用户++已登录; users.cur=i; break; if(Users:userLoginSuccess=false & Users:adminLoginSuccess=false) ShowMessage(无效的用户名或密码,请重新输入!); else if(Users:userLoginSuccess=true) ShowMessage(密码正确,欢迎进入!); Form4-Show(); else if(Users:adminLoginSuccess=true) ShowMessage(管理员已登录。); edtUserName-Text=; edtPassword-Text=; / SendMessage(Form1-Handle,WM_PAINT,0,0); /用于测试/ Application-ProcessMessages(); /用于测试 edtUserName-SetFocus(); /-void _fastcall TForm1:FormCloseQuery(TObject *Sender, bool &CanClose) if(MessageDlg(确实要关闭程序吗?,mtConfirmation, TMsgDlgButtons()mbOKSetFocus(); /-void _fastcall TForm1:edtUserNameKeyPress(TObject *Sender, char &Key) Users:adminLoginSuccess=false; Users:userLoginSuccess=false; lblStatus-Caption=;/-void _fastcall TForm1:edtPasswordKeyPress(TObject *Sender, char &Key) Users:adminLoginSuccess=false; Users:userLoginSuccess=false; lblStatus-Caption=;/-void _fastcall TForm1:FormShow(TObject *Sender) lblHint-Caption=管理员:+adminName+/+adminPass; /-/-#include #pragma hdrstop#include Unit2.h#include var.h/-#pragma package(smart_init)#pragma resource *.dfmTForm2 *Form2;/-_fastcall TForm2:TForm2(TComponent* Owner) : TForm(Owner)/-void _fastcall TForm2:btnOkClick(TObject *Sender) if(edtPassword1-Text!=edtPassword2-Text) ShowMessage(两次输入的密码不同,请重新输入!); edtPassword2-SetFocus(); else if(edtPassword1-Text=) ShowMessage(密码不能为空,请重新输入!); edtPassword1-SetFocus(); else users.userUsers:cur.pass=edtPassword1-Text; ShowMessage(修改成功!); Form2-Hide(); /-void _fastcall TForm2:btnCancelClick(TObject *Sender) edtPassword1-SetFocus(); Form2-Hide();/-void _fastcall TForm2:FormHide(TObject *Sender) edtPassword1-Text=; edtPassword2-Text=; /-void _fastcall TForm2:FormShow(TObject *Sender) edtPassword1-SetFocus(); /-/-#include #pragma hdrstop#include Unit3.h#include var.h/-#pragma package(smart_init)#pragma resource *.dfmTForm3 *Form3;/-_fastcall TForm3:TForm3(TComponent* Owner) : TForm(Owner)/-void _fastcall TForm3:btnOkClick(TObject *Sender) if(edtUserName-Text= | edtPassword1-Text= | edtPassword1-Text!=edtPassword2-Text) ShowMessage(用户名缺或者密码错!请重新输入!); edtUserName-SetFocus(); else if(users.count=users.MaxUser) ShowMessage(用户已满,不能增加!); else users.userUsers:=edtUserName-Text; users.userUsers:count.pass=edtPassword1-Text; users.count+; ShowMessage(用户已增加,当前用户数为+IntToStr(Users:count); Form3-Hide(); /-void _fastcall TForm3:btnCancelClick(TObject *Sender) Form3-Hide(); /-void _fastcall TForm3:FormShow(TObject *Sender) edtUserName-SetFocus(); /-void _fastcall TForm3:FormHide(TObject *Sender) edtUserName-Text=; edtPassword1-Text=; edtPassword2-Text=; /-计算器程序/-#include #pragma hdrstop#include #include Unit4.h#include Unit5.h/-#pragma package(smart_init)#pragma resource *.dfmTForm4 *Form4;int temp1;float temp2;int flag;int append;/-_fastcall TForm4:TForm4(TComponent* Owner) : TForm(Owner)/-void _fastcall TForm4:FormCreate(TObject *Sender)Edit1-Clear();temp1=0;temp2=0;flag=0;/-void _fastcall TForm4:Button1Click(TObject *Sender) Edit1-Text=Edit1-Text+Button1-Caption; /-void _fastcall TForm4:Button2Click(TObject *Sender) Edit1-Text=Edit1-Text+Button2-Caption; /-void _fastcall TForm4:Button3Click(TObject *Sender) Edit1-Text=Edit1-Text+Button3-Caption; /-void _fastcall TForm4:Button4Click(TObject *Sender) Edit1-Text=Edit1-Text+Button4-Caption; /-void _fastcall TForm4:Button5Click(TObject *Sender) Edit1-Text=Edit1-Text+Button5-Caption; /-void _fastcall TForm4:Button6Click(TObject *Sender) Edit1-Text=Edit1-Text+Button6-Caption; /-void _fastcall TForm4:Button7Click(TObject *Sender) Edit1-Text=Edit1-Text+Button7-Caption; /-void _fastcall TForm4:Button8Click(TObject *Sender) Edit1-Text=Edit1-Text+Button8-Caption; /-void _fastcall TForm4:Button9Click(TObject *Sender) Edit1-Text=Edit1-Text+Button9-Caption; /-void _fastcall TForm4:Button10Click(TObject *Sender) Edit1-Text=Edit1-Text+Button10-Caption; /-void _fastcall TForm4:Button12Click(TObject *Sender) Edit1-Clear(); temp1=0; temp2=0; flag=0; /-void _fastcall TForm4:Button13Click(TObject *Sender) flag=1; temp1=StrToInt(Edit1-Text); Edit1-Clear();/-void _fastcall TForm4:Button14Click(TObject *Sender) flag=2; temp1=StrToInt(Edit1-Text); Edit1-Clear();/-void _fastcall TForm4:Button15Click(TObject *Sender) flag=3; temp1=StrToInt(Edit1-Text); Edit1-Clear();/-void _fastcall TForm4:Button16Click(TObject *Sender) flag=4; temp1=StrToInt(Edit1-Text); Edit1-Clear();/-void _fastcall TForm4:Button11Click(TObject *Sender) switch(flag) case 1:temp2=StrToFloat(temp1)+StrToFloat(Edit1-Text); break; case 2:temp2=StrToFloat(temp1)-StrToFloat(Edit1-Text); break; case 3:temp2=StrToFloat(temp1)*StrToFloat(Edit1-Text); break; case 4:temp2=StrToFloat(temp1)/StrToFloat(Edit1-Text); break; Edit1-Text=FloatToStr(temp2);/-void _fastcall TForm4:H1Click(TObject *Sender) ShowMessage(暂无帮助,请及时更新版本。); /-void _fastcall TForm4:A1Click(TObject *Sender) ShowMessage(版权著作者:郭峰,魏兴宇); /-void _fastcall TForm4:C1Click(TObject *Sender) Close(); /-void _fastcall TForm4:btn1Click(TObject *Sender) if (Form4-Edit1-Text!=) Form4-Edit1-Text=FloatToStr(sqrt(StrToFloat(Form4-Edit1-Text); append=1; /-void _fastcall TForm4:btn8Click(TObject *Sender) if(Form4-Edit1-Text!=) Form4-Edit1-Text=FloatToStr(StrToFloat(Form4-Edit1-Text)/100); append= 1; /-void _fastcall TForm4:btn9Click(TObject *Sender) if(Form4-Edit1-Text!=) Form4-Edit1-Text=FloatToStr(1/StrToFloat(Form4-Edit1-Text); append= 1; /-void _fastcall TForm4:btn10Click(TObject *Sender) if(Form4-Edit1-Text!=) Form4-Edit1-Text=FloatToStr(StrToFloat(Form4-Edit1-Text)*StrToFloat(Form4-Edit1-Text); append= 1; /-void _fastcall TForm4:btn11Click(TObject *Sender) if(Form4-Edit1-Text!=) Form4-Edit1-Text=FloatToStr(StrToFloat(Form4-Edit1-Text)*StrToFloa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论