OOPEx2Dlg.cpp

// OOPEx2Dlg.cpp : 实现文件
// #include "stdafx.h"
#include "OOPEx2.h"
#include "OOPEx2Dlg.h"
#include "afxdialogex.h" #ifdef _DEBUG
#define new DEBUG_NEW
#endif // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialogEx
{
public:
CAboutDlg(); // 对话框数据
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_ABOUTBOX };
#endif protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现
protected:
DECLARE_MESSAGE_MAP()
}; CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
{
} void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
} BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP() // COOPEx2Dlg 对话框 COOPEx2Dlg::COOPEx2Dlg(CWnd* pParent /*=NULL*/)
: CDialogEx(IDD_OOPEX2_DIALOG, pParent)
, m_Name(_T(""))
, m_Sid(_T(""))
, m_Value(_T(""))
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
} void COOPEx2Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST1, m_ListCon);
DDX_Text(pDX, IDC_EDIT1, m_Name);
DDX_Text(pDX, IDC_EDIT2, m_Sid);
DDX_Text(pDX, IDC_EDIT3, m_Value);
} BEGIN_MESSAGE_MAP(COOPEx2Dlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON5, &COOPEx2Dlg::OnBnClickedButton5)
ON_BN_CLICKED(IDC_BUTTON2, &COOPEx2Dlg::OnBnClickedButton2)
ON_LBN_SELCHANGE(IDC_LIST1, &COOPEx2Dlg::OnLbnSelchangeList1)
ON_BN_CLICKED(IDC_BUTTON4, &COOPEx2Dlg::OnBnClickedButton4)
ON_BN_CLICKED(IDC_BUTTON3, &COOPEx2Dlg::OnBnClickedButton3)
ON_BN_CLICKED(IDC_BUTTON6, &COOPEx2Dlg::OnBnClickedButton6) ON_BN_CLICKED(IDC_BUTTON1, &COOPEx2Dlg::OnBnClickedButton1)
END_MESSAGE_MAP() // COOPEx2Dlg 消息处理程序 BOOL COOPEx2Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
} // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
} void COOPEx2Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
} // 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。 void COOPEx2Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
} //当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR COOPEx2Dlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
} void COOPEx2Dlg::OnLbnSelchangeList1()
{
// TODO: 在此添加控件通知处理程序代码
m_Listid = this->m_ListCon.GetCurSel();
} void COOPEx2Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
this->m_ListCon.DeleteString(this->m_Listid);
this->count--;
} void COOPEx2Dlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
CString str;
str = str + "姓名:" + m_Name + ", 学号:" + m_Sid + ", 成绩:" + this->m_Value;
this->m_ListCon.AddString(str);
this->count++;
} void COOPEx2Dlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
CString info, score, notice;
int len, index;
m_ListCon.GetText(m_Listid, info); //获取m_Listid行字符串
len = info.GetLength(); //获取字符串的长度
index = info.Find(_T("成绩:")); //成绩所在字符串位置的索引
score = info.Right(len - index + 1); // 获取成绩:***
notice = CString("成绩:") + score;
MessageBox(score, MB_OK);
} void COOPEx2Dlg::OnBnClickedButton4()
{
// TODO: 在此添加控件通知处理程序代码
this->m_ListCon.DeleteString(this->m_Listid);
this->count--;
} void COOPEx2Dlg::OnBnClickedButton5()
{
// TODO: 在此添加控件通知处理程序代码;
UpdateData(true);
CString str;
str = CString("姓名:") + m_Name + CString(", 学号:") + m_Sid + CString(", 成绩:") + this->m_Value;
this->m_ListCon.AddString(str);
this->count++;
} void COOPEx2Dlg::OnBnClickedButton6()
{
// TODO: 在此添加控件通知处理程序代码
CString avgScore, info;
CString notice;
double score = 0, avg = 0;
int len = 0, index;
for (int i = 0; i < this->count; i++)
{
m_ListCon.GetText(i, info);
index = info.Find(_T("成绩:"));
len = info.GetLength();
score += atof(info.Right(len - index + 1 - 7));
}
//avg = score / this->count;
avgScore.Format(_T("%.2f"), score / this->count);
notice = CString("平均成绩:") + avgScore;
MessageBox(notice, MB_OK);

MFC(c++大作业)基本对话框的使用(求平均成绩)的更多相关文章

  1. <JAVA - 大作业(1)文本编辑器 >

    <JAVA - 大作业(1)文本编辑器 > 背景 JAVA上机大作业:qq / 代码评价系统 第一次上机主题是练习JAVA自带的GUI图形化编程 目的:实现一个跟window10记事本界面 ...

  2. js大作业(0)

    DAY1:在看HTML5游戏开发实战.手写了一遍乒乓球.自己玩了半小时.实话讲,和本科学的MFC差别不大.通过setInterval函数获取用户的输入 从而允许多用户操作.parseInt把字符串化为 ...

  3. 数据库大作业--由python+flask

    这个是项目一来是数据库大作业,另一方面也算是再对falsk和python熟悉下,好久不用会忘很快. 界面相比上一个项目好看很多,不过因为时间紧加上只有我一个人写,所以有很多地方逻辑写的比较繁琐,如果是 ...

  4. 程设大作业xjb写——魔方复原

    鸽了那么久总算期中过[爆]去[炸]了...该是时候写写大作业了 [总不能丢给他们不会写的来做吧 一.三阶魔方的几个基本定义 ↑就像这样,可以定义面的称呼:上U下D左L右R前F后B UD之间的叫E,LR ...

  5. 大作业NABC分析结果

    大作业NABC分析结果 这次的大作业计划制作一款关于七巧板的游戏软件.关于编写的APP的NABC需求分析: N:需求 ,本款软件主要面向一些在校的大学生,他们在校空闲时间比较多,而且热衷于一些益智类游 ...

  6. 【MFC学习笔记-作业9-基于单击响应的计算平均成绩】【】

    要求..单击出现 一个输入成绩的框,点确定后,计算平均成绩 意义很大~ 完成对话框   再写个鼠标点击的响应部分 鼠标点击的响应部分为难点.... void CWj1401_0302140107_9V ...

  7. [留念贴] C#开发技术期末大作业——星月之痕

    明天就要去上海大学参加 2015赛季 ACM/ICPC最后一场比赛 —— EC-Final,在这之前,顺利地把期末大作业赶出来了. 在这种期末大作业10个人里面有9个是从网上下载的国内计算机水平五六流 ...

  8. Hadoop综合大作业

    Hadoop综合大作业 要求: 用Hive对爬虫大作业产生的文本文件(或者英文词频统计下载的英文长篇小说)词频统计. 用Hive对爬虫大作业产生的csv文件进行数据分析 1. 用Hive对爬虫大作业产 ...

  9. 爬虫综合大作业——网易云音乐爬虫 & 数据可视化分析

    作业要求来自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3075 爬虫综合大作业 选择一个热点或者你感兴趣的主题. 选择爬取的对象 ...

随机推荐

  1. Java数据结构(十五)—— 多路查找树

    多路查找树 二叉树和B树 二叉树的问题分析 二叉树操作效率高 二叉树需要加载到内存,若二叉树的节点多存在如下问题: 问题1:构建二叉树时,需多次进行I/O操作,对与速度有影响 问题2:节点海量造成二叉 ...

  2. selenium常用的标签

    1.selenium之 下拉选择框Select.反选框Deselect.options 我们通常会遇到两种下拉框,一种使用的是html的标签select,另一种是使用input标签做的假下拉框.后者我 ...

  3. 安装centos出现的问题

    1.配置好之后,点击完成,如果出现"无法创建新虚拟机,无法打开配置文件,D:/... ,拒绝访问" 的错误时: 关闭虚拟机,重新以管理员身份打开.

  4. git .gitignore 忽略列表

    #: 注释 # no .a files * .a    //忽略以  .a结尾的 文件 #  ... ! lib .a  //  忽略 非 lib.a的文件 /TODO  //忽略当前目录  文件名位 ...

  5. Oracle函数:trunc、round、ceil和floor

    1.trunc函数 1).trunc(date) 格式:trunc(date,fmt) trunc用于截取时间,即便你指定不同的格式类型,返回的类型始终都是时间类型. 示例: with dates a ...

  6. 谈Vite在Electron环境下吃花卷拉馒头的现象

    缘起 在Electron的渲染进程中(也就是页面代码中), 我们常常使用process.env来携带一些环境变量, 比如HTTP服务地址的基质,本地静态资源的路径等 这样做主要有两个目的 一个是方便开 ...

  7. 题解 CF830D Singer House

    \(\texttt{Solution}\) 首先考虑 \(\texttt{dp}\) 维护题目要求的深度为 \(i\), 每个节点最多经过一次的不同有向路径数量 \(f_i\). 明显的,只维护这个东 ...

  8. linux文件实时同步

    参考博客:https://www.cnblogs.com/MacoLee/p/5633650.html 一.文件同步很简单 服务端:被动的接收传输过来的数据 客户端:主动提供数据给服务端 安装思路:服 ...

  9. JUC(一):volatile关键字

    volatile是什么 ​ volatile是java虚拟机提供的轻量级同步机制,它包含三种特性: 保证可见性:只要主内存中变量做出修改,其余线程马上会感知到变量的修改. package com.ch ...

  10. vue第十二单元(vue中过渡效果的实现)

    第十二单元(vue中过渡效果的实现) #课程目标 熟练掌握transition组件的用法 熟练使用transition组件做过渡特效 熟练使用transition组件做动画特效 了解使用transit ...