可视化编程技术实验报告 - 平均学分绩点计算器 - 图文

更新时间:2024-06-22 11:29:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验报告?

课程名称: 可视化编程技术

实验项目: 平均学分绩点计算器

专业班级: 电子信息工程 姓 名: 学 号: 实验室号: 实验组号:

实验时间: 批阅时间: 指导教师: 成 绩:

实验名称:平均学分绩点计算器

1.实验目的: 掌握使用VC++6.0为编程开发环境,进行简单的可视化编程。 熟练掌握简单控件的用法 2.实验内容: 建立类型为基本对话框的工程 设计一个学分绩点计算器,并能按要求进行计算。 3. 实验方案(程序设计说明) 基本算法:平均学分绩点= 各科学分与绩点乘积加和/总学分 考试课 绩点=(成绩-60)*0.2+2 考查课 绩点:优8 良6 中4 及格2 不及格0 界面设计说明:大二一整学年分成2个框,分别列出大二上、大二下的各科课程、学分、成绩,能够清零、显示我的绩点,显示时间日期并能控制是否使能,能够连接工大网页,设置背景图片,更改图标。 设计流程图: 添加控件 新建工程 添加变量 编写函数 撰写报告 添加功能 调试程序 4. 实验步骤或程序(经调试后正确的源程序) 填写主要步骤与程序代码等。见附件 5.程序运行结果 能够成功实现计算功能及其他添加功能,运行结果界面见附件 6.出现的问题及解决方法 见附件

1

实验步骤或程序:

一、实验程序设计过程及程序代码

1、打开软件

2、新建工程

3、添加控件并设置属性

5、添加变量

2

6、编写程序

(1)给平均学分绩点按钮添加程序

void CLJSDlg::OnButton1() { // TODO: Add your control notification handler code here UpdateData(TRUE); float

eng3_xfjd,dw2_xfjd,md_xfjd,gl_xfjd,ty3_xfjd,my_xfjd,fb_xfjd,sl_xfjd,dz1_xfjd,wlsy_xfjd,eng4_xfjd,sd_xfjd,xh_xfjd,zk_xfjd,xxl_xfjd,ty4_xfjd,dz2_xfjd; float xfh,xfjdh,pjxfjd; float

eng3_jd,dw2_jd,md_jd,gl_jd,ty3_jd,my_jd,fb_jd,sl_jd,dz1_jd,wlsy_jd,eng4_jd,sd_jd,xh_jd,zk_jd,xxl_jd,ty4_jd,dz2_jd; if(m_ENG3_CJ<60) {

eng3_jd=0; }

else {

eng3_jd=(m_ENG3_CJ-60)*0.2+2; } if(m_DW2_CJ<60) {

3

dw2_jd=0; }

else {

dw2_jd=(m_DW2_CJ-60)*0.2+2; }

if(m_MD_CJ<60) {

md_jd=0; }

else {

md_jd=(m_MD_CJ-60)*0.2+2; }

if(m_GL_CJ<60) {

gl_jd=0; }

else {

gl_jd=(m_GL_CJ-60)*0.2+2; }

if(m_ENG4_CJ<60) {

eng4_jd=0; }

else {

eng4_jd=(m_ENG4_CJ-60)*0.2+2; }

if(m_SD_CJ<60) {

sd_jd=0;

4

}

else {

sd_jd=(m_SD_CJ-60)*0.2+2; }

if(m_XH_CJ<60) {

xh_jd=0; }

else {

xh_jd=(m_XH_CJ-60)*0.2+2; }

if(m_ZK_CJ<60) {

zk_jd=0; }

else {

zk_jd=(m_ZK_CJ-60)*0.2+2; }

int i=m_TY3_CJ.GetCurSel(); switch(i) {

case 0: ty3_jd=8;break; case 1: ty3_jd=6;break; case 2: ty3_jd=4;break; case 3: ty3_jd=2;break; case 4: ty3_jd=0;break; }

i=m_MY_CJ.GetCurSel(); switch(i) {

5

case 0: my_jd=8;break; case 1: my_jd=6;break; case 2: my_jd=4;break; case 3: my_jd=2;break; case 4: my_jd=0;break; }

i=m_FB_CJ.GetCurSel(); switch(i) {

case 0: fb_jd=8;break; case 1: fb_jd=6;break; case 2: fb_jd=4;break; case 3: fb_jd=2;break; case 4: fb_jd=0;break; }

i=m_SL_CJ.GetCurSel(); switch(i) {

case 0: sl_jd=8;break; case 1: sl_jd=6;break; case 2: sl_jd=4;break; case 3: sl_jd=2;break; case 4: sl_jd=0;break; }

i=m_DZ1_CJ.GetCurSel(); switch(i) {

case 0: dz1_jd=8;break; case 1: dz1_jd=6;break; case 2: dz1_jd=4;break; case 3: dz1_jd=2;break; case 4: dz1_jd=0;break; }

i=m_WLSY_CJ.GetCurSel(); switch(i) {

6

case 0: wlsy_jd=8;break; case 1: wlsy_jd=6;break; case 2: wlsy_jd=4;break; case 3: wlsy_jd=2;break; case 4: wlsy_jd=0;break; }

i=m_TY4_CJ.GetCurSel(); switch(i) {

case 0: ty4_jd=8;break; case 1: ty4_jd=6;break; case 2: ty4_jd=4;break; case 3: ty4_jd=2;break; case 4: ty4_jd=0;break; }

i=m_XXL_CJ.GetCurSel(); switch(i) {

case 0: xxl_jd=8;break; case 1: xxl_jd=6;break; case 2: xxl_jd=4;break; case 3: xxl_jd=2;break; case 4: xxl_jd=0;break; }

i=m_DZ2_CJ.GetCurSel(); switch(i) {

case 0: dz2_jd=8;break; case 1: dz2_jd=6;break; case 2: dz2_jd=4;break; case 3: dz2_jd=2;break; case 4: dz2_jd=0;break; }

eng3_xfjd=m_ENG3_XF*eng3_jd; dw2_xfjd=m_DW2_XF*dw2_jd; md_xfjd=m_MD_XF*md_jd;

7

gl_xfjd=m_GL_XF*gl_jd; ty3_xfjd=m_TY3_XF*ty3_jd; my_xfjd=m_MY_XF*my_jd; fb_xfjd=m_FB_XF*fb_jd; sl_xfjd=m_SL_XF*sl_jd;

dz1_xfjd=m_DZ1_XF*dz1_jd; wlsy_xfjd=m_WLSY_XF*wlsy_jd; eng4_xfjd=m_ENG4_XF*eng4_jd; sd_xfjd=m_SD_XF*sd_jd; xh_xfjd=m_XH_XF*xh_jd; zk_xfjd=m_ZK_XF*zk_jd; xxl_xfjd=m_XXL_XF*xxl_jd; ty4_xfjd=m_TY4_XF*ty4_jd; dz2_xfjd=m_DZ2_XF*dz2_jd;

xfh=m_ENG3_XF+m_DW2_XF+m_MD_XF+m_GL_XF+m_TY3_XF+m_MY_XF+m_FB_XF+m_SL_XF+m_DZ1_XF+m_WLSY_XF+m_ENG4_XF+m_SD_XF+m_XH_XF+m_ZK_XF+m_TY4_XF+m_XXL_XF+m_DZ2_XF;

xfjdh=eng3_xfjd+dw2_xfjd+md_xfjd+gl_xfjd+ty3_xfjd+my_xfjd+fb_xfjd+sl_xfjd+dz1_xfjd+wlsy_xfjd+eng4_xfjd+sd_xfjd+xh_xfjd+zk_xfjd+xxl_xfjd+ty4_xfjd+dz2_xfjd; pjxfjd=xfjdh/xfh;

m_RESULT.Format(\ UpdateData(FALSE); }

void CLJSDlg::OnButtonQl() { // TODO: Add your control notification handler code here UpdateData(TRUE); m_DW2_XF = 3.5f; m_DZ1_XF = 1.5f; m_DZ2_XF = 1.5f; m_ENG3_CJ = 0.0f; m_ENG3_XF = 4.0f; m_ENG4_CJ = 0.0f; m_ENG4_XF = 4.0f; m_FB_XF = 2.0f; m_GL_CJ = 0.0f; m_GL_XF = 2.5f; m_MD_CJ = 0.0f;

8

m_MD_XF = 4.5f; m_MY_XF = 3.0f; m_SD_CJ = 0.0f; m_SD_XF = 4.0f; m_SL_XF = 2.0f; m_TY3_XF = 1.0f; m_TY4_XF = 1.0f; m_WLSY_XF = 1.0f; m_XH_CJ = 0.0f; m_XH_XF = 3.5f; m_XXL_XF = 3.0f; m_ZK_CJ = 0.0f; m_ZK_XF = 3.0f; m_DW2_CJ = 0.0f; m_RESULT = _T(\ m_TY3_CJ.SetCurSel(-1), m_MY_CJ.SetCurSel(-1),m_FB_CJ.SetCurSel(-1),m_SL_CJ.SetCurSel(-1),m_DZ1_CJ.SetCurSel(-1),

m_WLSY_CJ.SetCurSel(-1),m_TY4_CJ.SetCurSel(-1),m_XXL_CJ.SetCurSel(-1),m_DZ2_CJ.SetCurSel(-1); m_RESULT = _T(\ m_DateCheck = FALSE; m_TimeCheck = FALSE; UpdateData(FALSE); }

(2)给日期Check添加函数 void CJsqDlg::OnCheck1() { // TODO: Add your control notification handler code here UpdateData(TRUE); if(m_DateCheck==TRUE) { CTime tNow ; tNow=CTime::GetCurrentTime(); CString sNow=tNow.Format(\ m_DateEdit.SetSel(0,-1); m_DateEdit.ReplaceSel(sNow); } else { m_DateEdit.SetSel(0,-1); m_DateEdit.ReplaceSel(\ }

9

UpdateData(FALSE); }

(3)给时间Check添加函数 void CJsqDlg::OnCheck2() { // TODO: Add your control notification handler code here UpdateData(TRUE); if(m_TimeCheck==TRUE) { CTime tNow; tNow=CTime::GetCurrentTime(); CString sNow=tNow.Format(\ m_TimeEdit.SetSel(0,-1); m_TimeEdit.ReplaceSel(sNow); } else { m_TimeEdit.SetSel(0,-1); m_TimeEdit.ReplaceSel(\ } UpdateData(FALSE); }

(4)给Enable按钮添加函数 void CJsqDlg::OnButtonEnable() { // TODO: Add your control notification handler code here GetDlgItem(IDC_CHECK1)->EnableWindow(TRUE); GetDlgItem(IDC_CHECK2)->EnableWindow(TRUE); m_DateEdit.EnableWindow(TRUE); m_TimeEdit.EnableWindow(TRUE); }

(5)给Disable按钮添加函数 void CJsqDlg::OnButtonDisable() { // TODO: Add your control notification handler code here GetDlgItem(IDC_CHECK1)->EnableWindow(FALSE); GetDlgItem(IDC_CHECK2)->EnableWindow(FALSE); m_DateEdit.EnableWindow(FALSE); m_TimeEdit.EnableWindow(FALSE); }

(6)给清零按钮添加函数 void CJsqDlg::OnButtonClear() { // TODO: Add your control notification handler code here

10

// TODO: Add your control notification handler code here UpdateData(TRUE); m_DW2_XF = 3.5f; m_DZ1_XF = 1.5f; m_DZ2_XF = 1.5f; m_ENG3_CJ = 0.0f; m_ENG3_XF = 4.0f; m_ENG4_CJ = 0.0f; m_ENG4_XF = 4.0f; m_FB_XF = 2.0f; m_GL_CJ = 0.0f; m_GL_XF = 2.5f; m_MD_CJ = 0.0f; m_MD_XF = 4.5f; m_MY_XF = 3.0f; m_SD_CJ = 0.0f; m_SD_XF = 4.0f; m_SL_XF = 2.0f; m_TY3_XF = 1.0f; m_TY4_XF = 1.0f; m_WLSY_XF = 1.0f; m_XH_CJ = 0.0f; m_XH_XF = 3.5f; m_XXL_XF = 3.0f; m_ZK_CJ = 0.0f; m_ZK_XF = 3.0f; m_DW2_CJ = 0.0f; m_RESULT = _T(\ m_PJJD1 = _T(\ m_PJJD2 = _T(\ m_DateCheck = FALSE; m_TimeCheck = FALSE; m_TY3_CJ.SetCurSel(-1), m_MY_CJ.SetCurSel(-1),m_FB_CJ.SetCurSel(-1),m_SL_CJ.SetCurSel(-1),m_DZ1_CJ.SetCurSel(-1),

m_WLSY_CJ.SetCurSel(-1),m_TY4_CJ.SetCurSel(-1),m_XXL_CJ.SetCurSel(-1),m_DZ2_CJ.SetCurSel(-1); m_RESULT = _T(\ m_PJJD1 = _T(\ m_PJJD2 = _T(\ m_DateCheck = FALSE; m_TimeCheck = FALSE; UpdateData(FALSE);

11

}

(7)给连接工大网页按钮添加函数 void CJsqDlg::OnButtonWangye() { // TODO: Add your control notification handler code here ShellExecute(NULL,\}

(8)给鲁爽按钮添加函数,目的是显示自己的成绩 void CJsqDlg::OnButtonReset() { // TODO: Add your control notification handler code here UpdateData(TRUE); m_DW2_XF = 3.5f; m_DZ1_XF = 1.5f; m_DZ2_XF = 1.5f; m_ENG3_CJ = 75.0f; m_ENG3_XF = 4.0f; m_ENG4_CJ = 75.0f; m_ENG4_XF = 4.0f; m_FB_XF = 2.0f; m_GL_CJ = 81.0f; m_GL_XF = 2.5f; m_MD_CJ = 89.0f; m_MD_XF = 4.5f; m_MY_XF = 3.0f; m_SD_CJ = 91.0f; m_SD_XF = 4.0f; m_SL_XF = 2.0f; m_TY3_XF = 1.0f; m_TY4_XF = 1.0f; m_WLSY_XF = 1.0f; m_XH_CJ = 94.0f; m_XH_XF = 3.5f; m_XXL_XF = 3.0f; m_ZK_CJ = 92.0f; m_ZK_XF = 3.0f; m_DW2_CJ = 93.0f; m_TY3_CJ.SetCurSel(2), m_MY_CJ.SetCurSel(0),m_FB_CJ.SetCurSel(0),m_SL_CJ.SetCurSel(0),m_DZ1_CJ.SetCurSel(1),

m_WLSY_CJ.SetCurSel(1),m_TY4_CJ.SetCurSel(0),m_XXL_CJ.SetCurSel(1),m_DZ2_CJ.SetCurSel(0);

12

UpdateData(FALSE);/////////////////////////////////////////清空按键 }

(10)添加语句到void CJsqDlg::OnPaint()使显示背景图片 CPaintDC dc(this); CRect rect;

GetClientRect(&rect); CDC dcMem;

dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground;

bmpBackground.LoadBitmap(IDB_BITMAP1);

//IDB_BITMAP1是你自己的图对应的ID BITMAP bitmap;

bmpBackground.GetBitmap(&bitmap);

CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0, bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);

7、考虑到大二一年的学分是固定的所以进行如下编写

8、图标修改过程

将选定的.jpg格式图片转换成.icon格式,将res文件夹中的.icon图片删掉,用自己的转换后的图片代替,虽然显示的还是原来的MFC形式,但是当运行后,就可以看到更改后的图标了。9、背景图片设置过程

13

选定好想要用的背景图片转换成.bmp格式,插入——资源

选择位图资源,引入刚才转换后的图片,然后添加背景设置的对应代码,如上述(10)

二、实验运行结果

三、出现的问题及解决方法

14

1、问题:添加背景图片时,提示图片超出256色无法显示 解决:用Photoshop软件打开图片,对图片适当修改,

选择图像——模式——索引图像,选择256色,确定然后保存图片,这样就可以使用了。

2、问题:修改后编译编辑都没有错误,但是运行时出现错误

解决:发现之前运行的界面没有关闭,关闭以前的运行界面后,再执行就没有错误了。 四、实验心得体会

通过本次C++设计,我对可视化编程有了更好的了解。设计平均绩点计算器,一方面学会了将上课学的一些控件综合进行应用,另一方面也锻炼了自己亲自编写程序的能力。为了使计算器的功能更加完善,界面更好些,需要在最基础的计算功能上添加其他功能,这就需要自己动脑和查阅资料,并学习对应功能的函数编写使用方法,在这个过程中,很是锻炼自己的自主学习思考能力。

15

1、问题:添加背景图片时,提示图片超出256色无法显示 解决:用Photoshop软件打开图片,对图片适当修改,

选择图像——模式——索引图像,选择256色,确定然后保存图片,这样就可以使用了。

2、问题:修改后编译编辑都没有错误,但是运行时出现错误

解决:发现之前运行的界面没有关闭,关闭以前的运行界面后,再执行就没有错误了。 四、实验心得体会

通过本次C++设计,我对可视化编程有了更好的了解。设计平均绩点计算器,一方面学会了将上课学的一些控件综合进行应用,另一方面也锻炼了自己亲自编写程序的能力。为了使计算器的功能更加完善,界面更好些,需要在最基础的计算功能上添加其他功能,这就需要自己动脑和查阅资料,并学习对应功能的函数编写使用方法,在这个过程中,很是锻炼自己的自主学习思考能力。

15

本文来源:https://www.bwwdw.com/article/4id3.html

Top