版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Windows程序设计课程设计报告要求:1、必须在visual2010以上编程环境开发、从建工程开始开就在2010以上环境开发,发现以前开发痕迹、视为抄袭!2、所有代码必须自主完成、发现二人代码相同的,视为相互抄袭!3、所有抄袭者,在本学期结束前重新验收方才合格。4、选择合适的课设题目,题目分值60分以上方可验收。5、验收完成后需提交课程设计报告。课程设计题2:设计一个简单的通讯录应用程序(视图方式)(30分)一、设计目标与内容:了解Windows编程的基础知识,掌握MFC应用程序的基本知识;基本掌握面向对象程序设计的基本思路和方法;掌握用VC++开发应用程序的的一般步骤和方法;学习掌握文档视图架构学习掌握文档序列化机制能够利用所学的基本知识,设计一个简单的通讯录应用程序,具有以下功能:①用文件来保存通讯录信息(必须实现的功能)②编程实现通讯录记录的添加、删除、修改、浏览和查询(必须实现的功能)。二、功能描述:用VC++进行编码,实现应用程序的功能。注重编码质量,代码要有适当的注释;采用单文档视图框架编写,列表视图中显示每个学生的通信信息通过菜单和工具条可以增加一条学生通信记录可以删除一条学生通信记录采用序列化机制保存将学生信息保存到文件。利用序列化机制从文件中读取学生信息,并显示新建工程tongxunlu新建工程tongxunlu,默认选择单文档应用程序,完成。程序运行后,界面如下在这里,我们可以看到通过我们单文档视图中菜单“通讯录操作”可以进行相应的学生信息的添加、删除、修改、查询。而这里,下来菜单中的每一个选项我们将通过对话框的形式进行呈现。为了便于对学生信息进行操作和保存,我们这里用到了结构体。定义如下:structAbook{ CStringname; intnumber; intphone;};学生信息添加对话框给工程添加一个对话框,然后给该对话框建立类向导添加CTianjia类CTianjiaCStringm_name:public intm_number:public intm_phone:public然后为菜单选项中“添加”选项添加响应函数OnTianjia()。代码如下:voidCtongxunluView::OnTianjia(){ /*CDC*pDC=NULL;*/ CtongxunluDoc*pDoc=GetDocument(); ASSERT_VALID(pDoc); CTianjiaa; if(a.DoModal()==IDOK) { pDoc->A_bool[pDoc->i].name=a.m_name; pDoc->A_bool[pDoc->i].number=a.m_number; pDoc->A_bool[pDoc->i].phone=a.m_phone; pDoc->i++; pDoc->SetModifiedFlag(); pDoc->UpdateAllViews(NULL); this->Invalidate(); } UpdateData(false);}学生信息删除对话框由于删除学生信息前要查询这个学生是否存在,所以这里我们要添加一个对话框类CShanchu().代码如下:voidCtongxunluView::OnShanchu(){ //TODO:在此添加命令处理程序代码 CtongxunluDoc*pDoc=GetDocument(); ASSERT_VALID(pDoc); Shanchuc; intj=0; if(c.DoModal()==IDOK) { for(inti=0;i<10;i++) { if(pDoc->A_bool[i].number==c.m_number2) { j=1; pDoc->A_bool[i].name=pDoc->A_bool[i+1].name; pDoc->A_bool[i].number=pDoc->A_bool[i+1].number; pDoc->A_bool[i].phone=pDoc->A_bool[i+1].phone; } if(j==1&&i<9) { pDoc->A_bool[i].name=pDoc->A_bool[i+1].name; pDoc->A_bool[i].number=pDoc->A_bool[i+1].number; pDoc->A_bool[i].phone=pDoc->A_bool[i+1].phone; } if(i==9) { pDoc->A_bool[i].name=""; pDoc->A_bool[i].number=0; pDoc->A_bool[i].phone=0; } } pDoc->SetModifiedFlag(); pDoc->UpdateAllViews(NULL); this->Invalidate(); } UpdateData(false);}学生信息修改添加菜单选项中“修改”的响应函数OnXiugai(),先调用对话框来判断该学生是否存在,若存在则调用对话框对学生信息进行修改若不存在则提示该学生不存在。代码如下:voidCtongxunluView::OnXiugai(){ //TODO:在此添加命令处理程序代码 CtongxunluDoc*pDoc=GetDocument(); ASSERT_VALID(pDoc); CXiugaib; if(b.DoModal()==IDOK) { for(inti=0;i<10;i++) { if(pDoc->A_bool[i].number==b.m_xuehao1) { pDoc->A_bool[i].name=b.m_name1; pDoc->A_bool[i].phone=b.m_phone1; } } pDoc->SetModifiedFlag(); pDoc->UpdateAllViews(NULL); this->Invalidate(); } UpdateData(false);}学生信息查询对话框学生信息查询对话框和删除学生信息对话框基本上是一样的,都是通过查询学生是否存在,若存在则显示该学生的信息,若不存在则提示学生不存在。为菜单选项中的“查询”添加相应函数OnChaxun()代码如下:voidCtongxunluView::OnChaxun(){ //TODO:在此添加命令处理程序代码 CtongxunluDoc*pDoc=GetDocument(); ASSERT_VALID(pDoc); Cchaxund; if(d.DoModal()==IDOK) { for(inti=0;i<10;i++) { if(pDoc->A_bool[i].name==d.m_name2) { pDoc->j=1; pDoc->k=i; } } pDoc->SetModifiedFlag(); pDoc->UpdateAllViews(NULL); this->Invalidate(); } UpdateData(false);}文档和在视图的关联在Windows程序设计中,文档和视图的关联是很重要的,所以我们要弄明白他们之间互动的机制。在这个程序中,我们每一次在文档类里更改学生信息都要把信息传递到视图里面进行更新,在这里我们会用到UpdateAllViews()函数通过这个函数把信息的改变传递给视图,然后对视图进行更新。UpdateAllViews函数的原型如下:voidUpdateAllViews(CView*pSender,LPARAMlHint=0L,CObiect*pHint=NULL);其中,参数pSender表示试图指针,若在派生文档类的成员函数中调用该函数,侧此参数应为NULL,若被派生视图中的成员函数调用,侧此参数应为this。lHint表示更新视图是发送的相关消息,pHint表示存储信息的对象指针。当UpdateAllViews函数被调用时,如果参数pSender指向某个特定的试图对象,那么除了该指定的视图之外,文档的所有其他视图的OnUpdate函数就会被调用。课程设计题目3:设计一个简单的计算器应用程序(30分)一、设计目标与内容:了解Windows编程的基础知识,掌握MFC应用程序的基本知识;基本掌握面向对象程序设计的基本思路和方法;掌握用VC++开发应用程序的的一般步骤和方法;能够利用所学的基本知识,设计一个简单的计算器应用程序,实现基本的加、减、乘、除、求平方根,求倒数等基本运算(必须实现的功能),实现求角度的正弦、余弦、正切等基本运算、实现求指数、自然对数、常用对数等基本运算(这部分功能选做)。在程序中注意处理数据和运算符的输入,计算结果的显示。二,设计要求:用VC++进行编码,实现应用程序的功能。注重编码质量,代码要有适当的注释;提交设计报告一份(课程设计任务书、目录、设计的基本思路、设计的步骤及主要代码、心得体会、参考文献)。设计过程创建MFC应用程序框架使用MFCAppWizard[exe]向导生成一个基于对话框的应用程序Calculator,并将主窗口对话框的C aption改为Calculator。编辑对话框打开对话框编辑器,Calculator窗口中共有21个控件,一个编辑框,二十个按钮控件。编辑框设置为只读,不能输入;+、—、×、/、为操作按钮;+/—、Sqrt、1/x、分别为取负、求平方根及求倒数按钮;Back为倒退按钮;Clear为清除按钮;单击“=”按钮,在编辑框显示结果。添加成员变量(1)利用MFCAppWizard为编辑框在CCalculatorDlg对话框类中添加double型成员变量m_result。(2)为CCalculatorDlg类添加两个int型变量m_OperationCount、m_NumberCount,一个double型数组m_number[15]和一个int型数组m_Operation[15]。变量m_OperationCount用来存放输入的加减乘除四种运算符的顺序号,m_NumberCount存放输入的操作数的顺序号,数组m_number[15]存放输入的操作数,数组m_Operation[15]存放输入的操作符。添加消息映射及成员函数(1)手工加入ON_COMMAND_RANGE命令消息映射,处理分配给一系列相邻编号的命令ID。在CalculatorDlg.h头文件中声明消息映射函数。afx_msgvoidOnNumberKey(UINTnID); afx_msgvoidOnOperationKey(UINTnID);其中,OnNumberKey()用来响应数字按钮的单击操作,OnOperationKey()用来响应操作符按钮的单击操作。在CalculatorDlg.cpp实现文件的消息映射表中加入ON_COMMAND_RANGE命令消息。ON_COMMAND_RANGE(IDC_NUMBER1,IDC_NUMBER0,OnNumberKey) ON_COMMAND_RANGE(IDC_MINUS,IDC_RESULT,OnOperationKey)在CalculatorDlg.cpp实现文件中加入消息处理函数。voidCCalculatorDlg::OnNumberKey(UINTnID){//处理单击数字按钮操作,记录输出的操作数 intn=0; switch(nID)//根据单击的数字键ID,记录输入数字 { caseIDC_NUMBER1: n=1; break; caseIDC_NUMBER2: n=2; break; caseIDC_NUMBER3: n=3; break; caseIDC_NUMBER4: n=4; break; caseIDC_NUMBER5: n=5; break; caseIDC_NUMBER6: n=6; break; caseIDC_NUMBER7: n=7; break; caseIDC_NUMBER8: n=8; break; caseIDC_NUMBER9: n=9; break; caseIDC_NUMBER0: n=0; break; }//计算操作数 m_number[m_NumberCount]=m_number[m_NumberCount]*10+n; m_result=m_number[m_NumberCount]; UpdateData(false);//在编辑框中显示操作数}voidCCalculatorDlg::OnOperationKey(UINTnID){//处理单机操作符按钮操作,记录输入的操作符 inti; switch(nID) { caseIDC_ADD: m_Operation[m_OperationCount]=1; break; caseIDC_SUBTRACT: m_Operation[m_OperationCount]=2; break; caseIDC_MULTIPLY: m_Operation[m_OperationCount]=3; break; caseIDC_DIVIDE: m_Operation[m_OperationCount]=4; break; caseIDC_MINUS://取负 m_number[m_NumberCount]=-m_number[m_OperationCount]; break; caseIDC_SQRT://求平方根 m_number[m_NumberCount]=sqrt(m_number[m_NumberCount]); break; caseIDC_RECIPROCAL://求倒数 m_number[m_NumberCount]=(double)1/m_number[m_NumberCount]; break; caseIDC_BACK://倒退 m_number[m_NumberCount]=(int)m_number[m_NumberCount]/10; m_result=m_number[m_NumberCount]; UpdateData(false); break; caseIDC_CLEAR://清屏 for(i=1;i<11;i++) { m_number[i]=0; m_Operation[m_OperationCount]=999; m_NumberCount=1; m_OperationCount=1; m_result=0; UpdateData(false); } break; caseIDC_RESULT://计算最后结果 cal(); break; } if(m_Operation[m_OperationCount]<5) { m_NumberCount++; m_OperationCount++; }}在CalculatorDlg对话框类中添加void型成员函数cal(),并在CalculatorDlg.cpp实现文件前加上包含语句#include“math.h”。voidCCalculatorDlg::cal(){ for(inti=1;i<15;i++) switch(m_Operation[i])//先处理乘、除运算 { case3: m_number[i]=m_number[i+1]=m_num
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026东莞乐理考级全真模拟题(带官方标准答案)
- 2025肿瘤放疗面试常见问题及答题思路标准答案
- 2022扬职院单招无冗余内容全是考点的试题及答案
- 2020年仪表工技师试题集及答案全解析 高频考点全覆盖
- 2021滑县城投面试冷门考点题库及补充标准答案
- 2025中国铁路南宁局招聘笔试社会考生专属备考题库附答案
- 2026万豪收益管理成本控制专项测试题 附满分答案
- 2023届深信服校招技术笔试高频真题及答案
- 医共体联合门诊协议书
- 湖州解除医保协议书
- 12《古诗三首》课件-2025-2026学年统编版语文三年级下册
- 团队精神与忠诚度培训讲义
- 2026河南新乡南太行旅游有限公司招聘16岗49人考试参考试题及答案解析
- 2026年辽宁点石联考高三年级3月学情调研语文试卷及答案
- 短剧网络播出要求与规范手册
- 2026年春季西师大版(2024)小学数学三年级下册教学计划含进度表
- 高二物理下学期期中考试试卷含答案
- 泌尿生殖系统肿瘤PPT
- 体外膜肺氧合ecmo的护理
- 医药药店保健品销售技巧与关联销售保健品完整版
- 2023年02月上海市嘉定区马陆镇公开招考14名农村储备干部笔试参考题库含答案解析
评论
0/150
提交评论