【C++】MFC 创建对话框,实现对课程信息和学生信息的管理
来源:互联网 发布:java输入输出流缓冲区 编辑:程序博客网 时间:2024/05/16 03:37
使用vc6.0,MFC,创建对话框
创建一个默认的对话框应用程序,并设计“课程信息”对话框和“学生信息管理”对话框。实现如下图所示功能:
默认的对话框应用程序:
点击“学生基本信息”按钮会出现下图所示,点击“添加”按钮就添加成功,显示如下图所示列表框。
点击“课程信息”按钮会出现下图所示,点击“添加”按钮就添加成功,显示如下图所示列表框。
具备知识:
MFC相关知识,对静态控件、按钮、编辑框、旋转按钮控件、列表框、组合框控件、单选框、时间和日历控件有所了了解。
具备步骤如下:(这里详细介绍一下添加“课程信息”的设计,类似的方法设计一个“学生基本信息”)
1、创建一个默认的对话框应用程序Ex_Ctrls
① 选择“文件”→“新建”菜单,在弹出的“新建”对话框中选择“工程”页面,选择MFC AppWizard(exe),在工程框中输入Ex_Ctrls,并将工程文件夹定位到“…\Visual C++程序\实验\实验2”。
② 单击“确定”按钮,在出现的Step 1对话框中选择“基本对话(框)”应用程序类型,单击“完成”按钮。
③ 在对话框编辑器中,将对话框标题改为“使用控件”。
④ 调整对话框的大小,删除对话框中间的“TODO:在这里设置对话控制。”静态文本控件和“确定”按钮控件,将“取消”按钮标题改为“退出”,并移至对话框的下方。
⑤ 向对话框中添加组框(Group)控件,标题设为“添加”,然后调整其大小和位置。
⑥ 添加一个按钮,标题设为“课程信息”,ID设为IDC_BUTTON_COURSE
添加一个列表框,取其默认ID号,去掉Sort风格属性。
2.添加并设计“课程信息”对话框
① 按Ctrl+R快捷键,弹出“插入资源”对话框,在资源类型列表中选择Dialog,单击“新建”按钮。
② 将该对话框资源的ID设为IDD_COURSE,标题设为“课程信息”,字体设为“宋体,10号”。
③ 将OK和Cancel按钮的标题改为“添加”和“取消”。
④ 打开对话框网格,参看图2.2的控件布局,为对话框添加如表2.1所示的一些控件。
2.1 课程信息对话框添加的控件
添加的控件
ID号
标 题
其 他 属 性
编辑框(课程号)
IDC_EDIT_COURSENO
——
默认
编辑框(课程名称)
IDC_EDIT_COURSENAME
——
默认
组合框(所属专业)
IDC_COMBO_SPECIAL
——
默认
组合框(课程类型)
IDC_COMBO_TYPE
——
默认
编辑框(开课学期)
IDC_EDIT_OPEN
——
默认
旋转按钮
IDC_SPIN1
——
Auto buddy、Set buddy integer、Right对齐,其余默认
编辑框(课时数)
IDC_EDIT_COURSEHOURS
——
默认
编辑框(学分)
IDC_EDIT_CREDIT
——
默认
⑤ 右击添加的课程类型的组合框控件,从弹出的快捷菜单中选择“属性”命令,将其属性对话框切换到Data页面,直接输入内容,输入一行后按Ctrl+Return键添加另一行。结果如图2.3所示。
旋转按钮:在“样式”中勾选设置结伴整数,不用勾选自动结伴,排列:靠右
⑥ 按Ctrl+W快捷键或双击对话框资源模板的空白处,为IDD_COURSE创建一个对话框CCourseDlg。
打开ClassWizard的Member Variables页面,看Class name是否是CCourseDlg,选中所需的控件ID号,双击鼠标。依次为表2.2控件增加成员变量。
表2.2 控件变量
控件ID号
变量类别
变量类型
变量名
范围和大小
IDC_EDIT_COURSENO
Value
CString
m_strNO
IDC_EDIT_COURSENAME
Value
CString
m_strName
IDC_COMBO_SPECIAL
Value
CString
m_strSpecial
IDC_COMBO_SPECIAL
Control
CComboBox
m_comboSpecial
——
IDC_COMBO_TYPE
Value
CString
m_strType
IDC_EDIT_OPEN
Value
BYTE
m_nOpen
IDC_SPIN1
Control
CSpinButtonCtrl
m_spinOpen
——
IDC_EDIT_COURSEHOURS
Value
int
m_nHours
IDC_EDIT_CREDIT
Value
float
m_fCredit
3.添加CCourseDlg类代码
① 用MFCClassWizard为CCourseDlg类添加WM_INITDIALOG消息映射,并添加下列初始化代码:
BOOL CCourseDlg::OnInitDialog() {CDialog::OnInitDialog();m_spinOpen.SetRange( 1, 8 ); m_spinOpen.SetBuddy(GetDlgItem(IDC_EDIT_OPEN));m_nHours = 56;m_fCredit = 2.0;m_nOpen = 1;m_strType = "专修";// 这里对专业组合框进行初如化m_comboSpecial.AddString( "信息与计算科学" );m_comboSpecial.AddString( "电气工程及其自动化" );m_strSpecial = "信息与计算科学";UpdateData(FALSE);// TODO: Add extra initialization herereturn TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE}
② 用MFC ClassWizard为按钮IDOK添加BN_CLICKED的消息映射,并增加下列代码:
void CCourseDlg::OnOK() {// TODO: Add extra validation hereUpdateData();m_strNO.TrimLeft();if (m_strNO.IsEmpty()){MessageBox("课程号不能为空!");return;}m_strName.TrimLeft();if (m_strName.IsEmpty()){MessageBox("课程名称不能为空!");return;}CDialog::OnOK();}
4.添加CEx_CtrlsDlg程序代码
① 按Ctrl+W快捷键,打开MFC ClassWizard对话框,为列表框控件IDC_LIST1添加控件变量m_List,类型为CListBox。
② 用MFC ClassWizard为按钮IDC_BUTTON_COURSE添加BN_CLICKED消息映射,并添加下列代码:
void CEx_CtrlsDlg::OnButtonCourse() {// TODO: Add your control notification handler code hereCCourseDlg dlg;if (IDOK != dlg.DoModal())return;// 清除列表框原来的显示内容while(m_List.GetCount()!=0) m_List.DeleteString(0);m_List.AddString( "课 程 号:" + dlg.m_strNO);m_List.AddString( "课程名称:" + dlg.m_strName);m_List.AddString( "所属专业:" + dlg.m_strSpecial);m_List.AddString( "课程类型:" + dlg.m_strType);CString str;str.Format("开课学期:%d", dlg.m_nOpen );m_List.AddString( str );str.Format("课 时 数:%d", dlg.m_nHours );m_List.AddString( str );str.Format("学 分:%4.1f", dlg.m_fCredit);m_List.AddString( str );}
③ 在Ex_CtrlsDlg.cpp文件的前面添加CInputDlg的头文件包含:
#include "stdafx.h"#include "Ex_Ctrls.h"#include "Ex_CtrlsDlg.h"#include "CourseDlg.h"//#include "InputDlg.h"
④ 编译运行并测试
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
“学生基本信息”对话框的部分说明
学生基本信息对话框添加的控件
添加的控件
ID号
标 题
其 他 属 性
编辑框
IDC_EDIT_NAME
——
默认
编辑框
IDC_EDIT_NO
——
默认
日期时间抽取器
IDC_DATE _ BIRTH
——
默认
单选按钮
IDC_SEX
男
Group(组),Tab Stop(制表站)
单选按钮
随机
女
默认
组合框(所属专业)
IDC_COMBO_SPECIAL
——
默认
该对话框模板创建一个对话框类CInputDlg。
在MFCClassWizard的Member Variables页面中,确定Class name中是否已选择了CInputDlg,选中所需的控件ID号,双击鼠标或单击Add Variables按钮。依次为表3.2控件增加成员变量。
控件变量
控件ID号
变 量 类 别
变 量 类 型
变 量 名
范围和大小
IDC_EDIT_NAME
Value
CString
m_strName
20
IDC_EDIT_NO
Value
CString
m_strNO
20
IDC_COMBO_SPECIAL
Value
CString
m_strSpecial
IDC_COMBO_SPECIAL
IDC_DATE_BIRTH
IDC_SEX
Control
Value
Value
CComboBox
CTime
int
m_comboSpecial
m_tBirth
m_nMale
——
类向导中在本类构造函数中修改一些值:
m_nMale=0;//原来是-1;
在MFCClassWizard的Messsage Maps页面中,为CInputDlg添加WM_INITDIALOG消息映射,并添加下列代码:
BOOL CInputDlg::OnInitDialog() {CDialog::OnInitDialog();m_comboSpecial.AddString("信息与计算科学");m_comboSpecial.AddString("电气工程及其自动化");m_strSpecial = "信息与计算科学";UpdateData(FALSE);// TODO: Add extra initialization herereturn TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE}
用MFC ClassWizard为按钮IDOK添加BN_CLICKED的消息映射,并增加下列代码:
void CInputDlg::OnOK() {// TODO: Add extra validation hereUpdateData();m_strNO.TrimLeft();if(m_strNO.IsEmpty()){MessageBox("课程号不能为空!");return;}m_strName.TrimLeft();if(m_strName.IsEmpty()){MessageBox("课程名称不能为空!");return;}CDialog::OnOK();}
打开IDD_EX_CTRLS_DIALOG对话框资源,在 “课程信息”按钮下方添加一个“学生基本信息”按钮,并将ID号设为IDC_BUTTON_STUINFO。
用MFC ClassWizard为按钮IDC_BUTTON_STUINFO添加BN_CLICKED消息映射,并添加下列代码:
void CEx_CtrlsDlg::OnButtonStuinfo() { // TODO: Add your control notification handler code here CInputDlg dlg; if(IDOK != dlg.DoModal()) return; while(m_List.GetCount() != 0) m_List.DeleteString(0);//清空列表 CString strSex("男"); if(dlg.m_nMale) strSex = "女"; m_List.AddString("姓名:" + dlg.m_strName); m_List.AddString("学号:" + dlg.m_strNO); m_List.AddString("性别:" + strSex); m_List.AddString("出生年月:" + dlg.m_tBirth.Format("%Y-%m-%d")); m_List.AddString("所属专业:" + dlg.m_strSpecial);}
在Ex_CtrlsDlg.cpp文件的前面添加CStuInfoDlg类的头文件,然后编译运行即可。
- 【C++】MFC 创建对话框,实现对课程信息和学生信息的管理
- 【C++】MFC 创建对话框,实现对“学生课程成绩”的管理
- 例程 【C++】MFC 创建对话框,实现对“学生课程成绩”的管理
- 通过链表来实现对学生信息的管理
- sql实现查询学习了所有课程的学生信息
- MFC中对信息的添加和修改对话框的重用
- C/C++用动态链表实现对学生信息的存储
- 学生学籍管理系统_管理员登陆对学生的信息进行操作
- 学生信息表管理
- MFC编写个简单学生管理信息程序
- 学生成绩信息的管理(java控制台)
- java的那些事:实现学生信息录入和查看
- 实现学生信息的文件保存和读取
- sql获取每门课程成绩最好的学生信息
- 对对话框之间的信息传递
- 对对话框之间的信息传递
- c语言使用链表编写一个可以实现班级学生管理系统,增加,删除,修改学生信息
- 编写程序,查询所有学生选修课程的期末成绩和对应等级,如学生未选修任何课程 --则输出提示信息。用case选择结果
- leetcode318. Maximum Product of Word Lengths
- The server time zone value '?????' more than one time zone
- Oracle以甲乙丙丁来排列
- web项目网站页面出现乱码的解决方法
- iOS GPUImage之头文件说明
- 【C++】MFC 创建对话框,实现对课程信息和学生信息的管理
- 在线支付平台的设计
- [知其然不知其所以然-30] smp wakeup nonboot CPUs
- Canvas对角线渐变
- 无向图(Undigraph)
- 1011. World Cup Betting (20)
- LeTao的popoverPresentationController
- 4.3.函数指针
- 第三方支付架构设计之—帐户体系