可视化编程技术实验报告 - 平均学分绩点计算器 - 图文
更新时间: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
正在阅读:
可视化编程技术实验报告 - 平均学分绩点计算器 - 图文06-22
广西公务员面试情景类问题全新解答思路06-12
华为TDD-LTE指标监控指导书(经典,值得下载)10-06
如何在社会工作实施中实现助人自助06-08
山东省天然气现状及未来用气规划、预测(至2020年)06-25
事故油池施工方案03-11
关于加快昆明倘甸扶贫开发的对策研究209-20
赛迪顾问-中国能源行业市场化改革研究06-27
建筑结构(一)教案105-24
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 可视化
- 学分
- 计算器
- 平均
- 编程
- 实验
- 图文
- 报告
- 技术
- 烛之武退秦师导学案及答案
- “工业分析检验”赛项规程
- 编译原理及编译程序构造 部分课后答案(张莉 杨海燕编著)
- 2014下半年深圳职员真题(社会类)
- 深圳经济特区行业协会条例
- 高考物理一轮复习第四章曲线运动万有引力与航天第2讲平抛运动学
- 二手车鉴定评估与贸易试题及答案
- 2013年加强和创新社会管理公共课考试完整题库--修正去重版
- 1983-1988年高考数学试题全国卷(1)
- 电镀锌普通圆钉市场现状调研及发展前景分析报告(目录)
- 南纺股份审计失败案例分析及启示
- 2018-2019学年吉林省长春外国语学校高二上学期期末考试生物试题
- 基础护理学考点串讲
- 常见矿物俗称及化学式
- 自考环资笔记
- 浅谈医生的职业幸福感
- 德育原理试题库
- 最新苏教版四年级数学下册第二单元测试题及答案三套
- 黑龙江省龙东地区中考数学真题试题(含答案)
- 顺丰营销微观环境分析