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. 爬虫模块-requests

    title: python爬虫01 date: 2020-03-08 22:56:12 tags: 1.requests模块 requests模块的底层是urllib,但是比urllib更强大也更加简 ...

  2. Xmind Invalid Configuarton Location(the configuarton area is not writable)

    今天在安装Xmind的时候,发现如下错误,原因:配置问题 步骤如下: 1.找到XMind安装目录下的文件XMind.ini2.文件中的内容替换:将:-configuration./configurat ...

  3. 20192313 实验一《Linux基础与Java开发环境》实验报告

    20192313 2020-10-8 <数据结构与面向对象程序设计>实验1报告 课程:<程序设计与数据结构> 班级: 1923 姓名: 陈宇帆 学号:20192313 实验教师 ...

  4. js onreadystatechange 和 onload的区别

    IE的script 元素只支持onreadystatechange事件,不支持onload事件. FF的script 元素不支持onreadystatechange事件,只支持onload事件. 如果 ...

  5. STL—— 容器(vector)数据插入insert()方法 的返回值

    vector 容器下的 insert() 方法拥有返回值,由于insert() 方法拥有4种重载函数,他的返回值不尽相同. 第一种,插入单个元素后的返回值: 1 #include <iostre ...

  6. Python之re正则

    1. 基本规则 # 元字符: # . ^ $ * + ? { } [ ] | ( ) \ # 字符类型匹配: # . 表示匹配任意一个字符(换行符除外) # [asdf] 表示匹配中括号里面的任意一个 ...

  7. Centos7.8安装Redis

    一.安装gcc依赖 由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装  [root@localhost local]# ...

  8. Linux下安装mysql-5.7.24

    Mysql数据库的安装对于开发者来说,是我们必然会面对的问题,它的安装过程其实并不复杂,并且网络上的安装教程也非常多,但是对于新手来说,各种不同形式的安装教程,又给新手们带来了要选择哪种方式进行安装的 ...

  9. js下 Day16、正则案例

    一.封装格式化日期 功能思路分析: \1. 第一个参数format表示指定的时间格式 \2. 第二个参数date为指定的时间(可以不传,默认当前时间) \3. 获取第二个参数中指定时间的年月日时分秒 ...

  10. SpringBoot从入门到精通教程(四)

    前端时间整合SSM ,发现了一个现象,在整合的时候 配置文件过于复杂. 1.建工程,建目录,导入jar包. 2.配置 数据源 映射信息 等等 ... 3. 还有 各种 拦截器,控制器 ,头都大了... ...